mirror of
https://github.com/open5gs/open5gs.git
synced 2025-11-03 13:33:26 +00:00
Merge branch 'master' of https://github.com/acetcom/nextepc
This commit is contained in:
21
configure.ac
21
configure.ac
@@ -379,24 +379,15 @@ AC_FUNC_VPRINTF
|
||||
AC_CHECK_FUNCS(\
|
||||
atexit \
|
||||
gettimeofday \
|
||||
inet_ntop \
|
||||
inet_pton \
|
||||
inet_aton \
|
||||
memmove \
|
||||
sigaction \
|
||||
sigwait \
|
||||
sigsuspend \
|
||||
stpcpy \
|
||||
strcasecmp \
|
||||
strtoul \
|
||||
stricmp \
|
||||
strerror \
|
||||
inet_ntop inet_pton inet_aton \
|
||||
sigaction sigwait sigsuspend \
|
||||
stpcpy strcasecmp strtoul stricmp \
|
||||
writev \
|
||||
utime \
|
||||
utimes \
|
||||
sem_timedwait \
|
||||
pthread_yield \
|
||||
sched_yield \
|
||||
utime utimes sem_timedwait \
|
||||
pthread_yield sched_yield \
|
||||
getenv putenv setenv unsetenv \
|
||||
)
|
||||
|
||||
AC_SEARCH_LIBS(gethostbyname, nsl)
|
||||
|
||||
@@ -114,6 +114,26 @@ CORE_DECLARE(void *) core_buffer_to_bcd(c_uint8_t *in, int in_len, void *out);
|
||||
*/
|
||||
CORE_DECLARE(char *)core_cpystrn(char *dst, const char *src, size_t dst_size);
|
||||
|
||||
/**
|
||||
* Get the value of an environment variable
|
||||
* @param value the returned value, allocated from @a pool
|
||||
* @param envvar the name of the environment variable
|
||||
*/
|
||||
CORE_DECLARE(char *) core_env_get(const char *envvar);
|
||||
|
||||
/**
|
||||
* Set the value of an environment variable
|
||||
* @param envvar the name of the environment variable
|
||||
* @param value the value to set
|
||||
*/
|
||||
CORE_DECLARE(status_t) core_env_set(const char *envvar, const char *value);
|
||||
|
||||
/**
|
||||
* Delete a variable from the environment
|
||||
* @param envvar the name of the environment variable
|
||||
*/
|
||||
CORE_DECLARE(status_t) core_env_delete(const char *envvar);
|
||||
|
||||
/** @} */
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
||||
@@ -143,3 +143,56 @@ char *core_cpystrn(char *dst, const char *src, size_t dst_size)
|
||||
|
||||
return (d);
|
||||
}
|
||||
|
||||
char *core_env_get(const char *envvar)
|
||||
{
|
||||
#ifdef HAVE_GETENV
|
||||
return getenv(envvar);
|
||||
#else
|
||||
return NULL;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
status_t core_env_set(const char *envvar, const char *value)
|
||||
{
|
||||
#if defined(HAVE_SETENV)
|
||||
|
||||
if (0 > setenv(envvar, value, 1))
|
||||
return CORE_ENOMEM;
|
||||
return CORE_OK;
|
||||
|
||||
#elif defined(HAVE_PUTENV)
|
||||
|
||||
char buf[HUGE_STRING_LEN];
|
||||
|
||||
if (snprintf(buf, HUGE_STRING_LEN, "%s=%s", envvar, value) < 0)
|
||||
return CORE_ENOMEM;
|
||||
if (0 > putenv(buf))
|
||||
return CORE_ENOMEM;
|
||||
return CORE_OK;
|
||||
|
||||
#else
|
||||
return CORE_ENOTIMPL;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
status_t core_env_delete(const char *envvar)
|
||||
{
|
||||
#ifdef HAVE_UNSETENV
|
||||
|
||||
unsetenv(envvar);
|
||||
return CORE_OK;
|
||||
|
||||
#else
|
||||
/* hint: some platforms allow envvars to be unset via
|
||||
* putenv("varname")... that isn't Single Unix spec,
|
||||
* but if your platform doesn't have unsetenv() it is
|
||||
* worth investigating and potentially adding a
|
||||
* configure check to decide when to use that form of
|
||||
* putenv() here
|
||||
*/
|
||||
return CORE_ENOTIMPL;
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -137,6 +137,54 @@ static void misc_test7(abts_case *tc, void *data)
|
||||
ABTS_TRUE(tc, strcmp("001010123456819", out) == 0);
|
||||
}
|
||||
|
||||
#define TEST_ENVVAR_NAME "core_test_envvar"
|
||||
#define TEST_ENVVAR2_NAME "core_test_envvar2"
|
||||
#define TEST_ENVVAR_VALUE "Just a value that we'll check"
|
||||
|
||||
static void misc_test8(abts_case *tc, void *data)
|
||||
{
|
||||
char *value;
|
||||
status_t rv;
|
||||
|
||||
rv = core_env_set(TEST_ENVVAR_NAME, TEST_ENVVAR_VALUE);
|
||||
ABTS_INT_EQUAL(tc, CORE_OK, rv);
|
||||
value = core_env_get(TEST_ENVVAR_NAME);
|
||||
ABTS_PTR_NOTNULL(tc, value);
|
||||
ABTS_STR_EQUAL(tc, TEST_ENVVAR_VALUE, value);
|
||||
|
||||
rv = core_env_delete(TEST_ENVVAR_NAME);
|
||||
ABTS_INT_EQUAL(tc, CORE_OK, rv);
|
||||
value = core_env_get(TEST_ENVVAR_NAME);
|
||||
ABTS_PTR_NULL(tc, value);
|
||||
|
||||
rv = core_env_set(TEST_ENVVAR_NAME, "");
|
||||
ABTS_INT_EQUAL(tc, CORE_OK, rv);
|
||||
value = core_env_get(TEST_ENVVAR_NAME);
|
||||
ABTS_PTR_NOTNULL(tc, value);
|
||||
ABTS_STR_EQUAL(tc, "", value);
|
||||
|
||||
rv = core_env_delete(TEST_ENVVAR_NAME);
|
||||
ABTS_INT_EQUAL(tc, CORE_OK, rv);
|
||||
value = core_env_get(TEST_ENVVAR_NAME);
|
||||
ABTS_PTR_NULL(tc, value);
|
||||
|
||||
rv = core_env_set(TEST_ENVVAR2_NAME, TEST_ENVVAR_VALUE);
|
||||
ABTS_INT_EQUAL(tc, CORE_OK, rv);
|
||||
value = core_env_get(TEST_ENVVAR2_NAME);
|
||||
ABTS_PTR_NOTNULL(tc, value);
|
||||
ABTS_STR_EQUAL(tc, TEST_ENVVAR_VALUE, value);
|
||||
value = core_env_get(TEST_ENVVAR_NAME);
|
||||
ABTS_PTR_NULL(tc, value);
|
||||
value = core_env_get(TEST_ENVVAR2_NAME);
|
||||
ABTS_PTR_NOTNULL(tc, value);
|
||||
ABTS_STR_EQUAL(tc, TEST_ENVVAR_VALUE, value);
|
||||
|
||||
rv = core_env_delete(TEST_ENVVAR2_NAME);
|
||||
ABTS_INT_EQUAL(tc, CORE_OK, rv);
|
||||
value = core_env_get(TEST_ENVVAR2_NAME);
|
||||
ABTS_PTR_NULL(tc, value);
|
||||
}
|
||||
|
||||
abts_suite *testmisc(abts_suite *suite)
|
||||
{
|
||||
suite = ADD_SUITE(suite)
|
||||
@@ -148,6 +196,7 @@ abts_suite *testmisc(abts_suite *suite)
|
||||
abts_run_test(suite, misc_test5, NULL);
|
||||
abts_run_test(suite, misc_test6, NULL);
|
||||
abts_run_test(suite, misc_test7, NULL);
|
||||
abts_run_test(suite, misc_test8, NULL);
|
||||
|
||||
return suite;
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
#include "core_debug.h"
|
||||
#include "core_thread.h"
|
||||
#include "core_file.h"
|
||||
#include "core_lib.h"
|
||||
|
||||
#include "context.h"
|
||||
|
||||
@@ -48,6 +49,10 @@ status_t app_will_initialize(const char *config_path, const char *log_path)
|
||||
|
||||
if (context_self()->db_uri)
|
||||
{
|
||||
/* Override configuration if DB_URI environment variable is existed */
|
||||
if (core_env_get("DB_URI"))
|
||||
context_self()->db_uri = core_env_get("DB_URI");
|
||||
|
||||
rv = context_db_init(context_self()->db_uri);
|
||||
if (rv != CORE_OK) return rv;
|
||||
d_print(" MongoDB URI : '%s'\n", context_self()->db_uri);
|
||||
|
||||
Reference in New Issue
Block a user