Prechádzať zdrojové kódy

Updating some functions

Vinicius Teshima 4 mesiacov pred
rodič
commit
f0012b3dfd
1 zmenil súbory, kde vykonal 24 pridanie a 33 odobranie
  1. 24 33
      src/lib.h

+ 24 - 33
src/lib.h

@@ -108,6 +108,7 @@ void *realloc(void *ptr, u64 new_size);
 void free(void *ptr);
 void *memcpy(void *dest, const void *src, u64 n);
 void *memset(void *s, int c, u64 n);
+char *getenv(const char *name);
 
 /* ----------------------------- START LIB DEF ----------------------------- */
 
@@ -437,10 +438,8 @@ dyn_arr_destroy(struct dyn_arr *da, enum err *out_err)
 
 # if defined(WANT_ENV) || defined(WANT_ALL)
 
-# define GETENV_FUNC char *(*getenv)(const char *)
-
-struct str getenv_as_str(GETENV_FUNC, const char *env, enum err *out_err);
-struct path getenv_as_path(GETENV_FUNC, const char *env, enum err *out_err);
+struct str getenv_as_str(const char *env, enum err *out_err);
+struct path getenv_as_path(const char *env, enum err *out_err);
 
 # endif /* defined(WANT_ENV) || defined(WANT_ALL) */
 
@@ -463,8 +462,8 @@ struct path path_from_str(struct str str, enum err *out_err);
 struct path path_from_cstr(const char *cstr, u64 cstr_size, enum err *out_err);
 struct path path_from_cstr_ns(const char *cstr, enum err *out_err);
 
-struct path path_get_xdg_state_home(GETENV_FUNC, enum err *out_err);
-struct path path_get_xdg_data_home(GETENV_FUNC, enum err *out_err);
+struct path path_get_xdg_state_home(enum err *out_err);
+struct path path_get_xdg_data_home(enum err *out_err);
 
 struct path path_dirname(struct path path, enum err *out_err);
 
@@ -1218,20 +1217,19 @@ str_builder_to_str(const struct str_builder *str_bldr)
 #  if defined(WANT_ENV) || defined(WANT_ALL)
 
 struct str
-getenv_as_str(GETENV_FUNC, const char *name, enum err *out_err)
+getenv_as_str(const char *name, enum err *out_err)
 {
     struct str empty = {0};
     struct str str = {0};
     char *res = NULL;
 
-    if ( getenv == NULL || name == NULL ) {
-        _SET_IF_NOT_NULL(out_err, ERR_NULL_ARG);
-        return empty;
-    }
+    LIB_ARG_IF_NOT_NULL_MUST_BE(out_err, ERR_OK, empty);
+
+    LIB_ARG_MUST_NOT_BE_NULL(name, out_err, empty);
 
     res = getenv(name);
     if ( res == NULL ) {
-        _SET_IF_NOT_NULL(out_err, ERR_NOT_FOUND);
+        LIB_SET_IF_NOT_NULL(out_err, ERR_NOT_FOUND);
         return str;
     }
 
@@ -1239,20 +1237,19 @@ getenv_as_str(GETENV_FUNC, const char *name, enum err *out_err)
 }
 
 struct path
-getenv_as_path(GETENV_FUNC, const char *name, enum err *out_err)
+getenv_as_path(const char *name, enum err *out_err)
 {
     struct path empty = {0};
     struct str str = {0};
     enum err err;
 
-    if ( getenv == NULL || name == NULL ) {
-        _SET_IF_NOT_NULL(out_err, ERR_NULL_ARG);
-        return empty;
-    }
+    LIB_ARG_IF_NOT_NULL_MUST_BE(out_err, ERR_OK, empty);
 
-    str = getenv_as_str(getenv, name, &err);
+    LIB_ARG_MUST_NOT_BE_NULL(name, out_err, empty);
+
+    str = getenv_as_str(name, &err);
     if ( err ) {
-        _SET_IF_NOT_NULL(out_err, err);
+        LIB_SET_IF_NOT_NULL(out_err, err);
         return empty;
     }
 
@@ -1320,20 +1317,17 @@ path_from_cstr_ns(const char *cstr, enum err *out_err)
 }
 
 struct path
-path_get_xdg_state_home(GETENV_FUNC, enum err *out_err)
+path_get_xdg_state_home(enum err *out_err)
 {
     struct path empty = {0};
     struct path path = {0};
     enum err err;
 
-    if ( getenv == NULL ) {
-        _SET_IF_NOT_NULL(out_err, ERR_NULL_ARG);
-        return empty;
-    }
+    LIB_ARG_IF_NOT_NULL_MUST_BE(out_err, ERR_OK, empty);
 
-    path = getenv_as_path(getenv, "XDG_STATE_HOME", &err);
+    path = getenv_as_path("XDG_STATE_HOME", &err);
     if ( err == ERR_NOT_FOUND ) {
-        path = getenv_as_path(getenv, "HOME", &err);
+        path = getenv_as_path("HOME", &err);
         if ( err ) {
             _SET_IF_NOT_NULL(out_err, err);
             return empty;
@@ -1349,20 +1343,17 @@ path_get_xdg_state_home(GETENV_FUNC, enum err *out_err)
 }
 
 struct path
-path_get_xdg_data_home(GETENV_FUNC, enum err *out_err)
+path_get_xdg_data_home(enum err *out_err)
 {
     struct path empty = {0};
     struct path path = {0};
     enum err err;
 
-    if ( getenv == NULL ) {
-        _SET_IF_NOT_NULL(out_err, ERR_NULL_ARG);
-        return empty;
-    }
+    LIB_ARG_IF_NOT_NULL_MUST_BE(out_err, ERR_OK, empty);
 
-    path = getenv_as_path(getenv, "XDG_DATA_HOME", &err);
+    path = getenv_as_path("XDG_DATA_HOME", &err);
     if ( err == ERR_NOT_FOUND ) {
-        path = getenv_as_path(getenv, "HOME", &err);
+        path = getenv_as_path("HOME", &err);
         if ( err ) {
             _SET_IF_NOT_NULL(out_err, err);
             return empty;