mirror of
https://github.com/open5gs/open5gs.git
synced 2025-11-09 16:37:12 +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(\
|
AC_CHECK_FUNCS(\
|
||||||
atexit \
|
atexit \
|
||||||
gettimeofday \
|
gettimeofday \
|
||||||
inet_ntop \
|
|
||||||
inet_pton \
|
|
||||||
inet_aton \
|
|
||||||
memmove \
|
memmove \
|
||||||
sigaction \
|
|
||||||
sigwait \
|
|
||||||
sigsuspend \
|
|
||||||
stpcpy \
|
|
||||||
strcasecmp \
|
|
||||||
strtoul \
|
|
||||||
stricmp \
|
|
||||||
strerror \
|
strerror \
|
||||||
|
inet_ntop inet_pton inet_aton \
|
||||||
|
sigaction sigwait sigsuspend \
|
||||||
|
stpcpy strcasecmp strtoul stricmp \
|
||||||
writev \
|
writev \
|
||||||
utime \
|
utime utimes sem_timedwait \
|
||||||
utimes \
|
pthread_yield sched_yield \
|
||||||
sem_timedwait \
|
getenv putenv setenv unsetenv \
|
||||||
pthread_yield \
|
|
||||||
sched_yield \
|
|
||||||
)
|
)
|
||||||
|
|
||||||
AC_SEARCH_LIBS(gethostbyname, nsl)
|
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);
|
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
|
#ifdef __cplusplus
|
||||||
|
|||||||
@@ -143,3 +143,56 @@ char *core_cpystrn(char *dst, const char *src, size_t dst_size)
|
|||||||
|
|
||||||
return (d);
|
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);
|
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)
|
abts_suite *testmisc(abts_suite *suite)
|
||||||
{
|
{
|
||||||
suite = ADD_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_test5, NULL);
|
||||||
abts_run_test(suite, misc_test6, NULL);
|
abts_run_test(suite, misc_test6, NULL);
|
||||||
abts_run_test(suite, misc_test7, NULL);
|
abts_run_test(suite, misc_test7, NULL);
|
||||||
|
abts_run_test(suite, misc_test8, NULL);
|
||||||
|
|
||||||
return suite;
|
return suite;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,6 +3,7 @@
|
|||||||
#include "core_debug.h"
|
#include "core_debug.h"
|
||||||
#include "core_thread.h"
|
#include "core_thread.h"
|
||||||
#include "core_file.h"
|
#include "core_file.h"
|
||||||
|
#include "core_lib.h"
|
||||||
|
|
||||||
#include "context.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)
|
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);
|
rv = context_db_init(context_self()->db_uri);
|
||||||
if (rv != CORE_OK) return rv;
|
if (rv != CORE_OK) return rv;
|
||||||
d_print(" MongoDB URI : '%s'\n", context_self()->db_uri);
|
d_print(" MongoDB URI : '%s'\n", context_self()->db_uri);
|
||||||
|
|||||||
Reference in New Issue
Block a user