|
|
@@ -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;
|