diff options
author | Philip Chimento <philip@endlessm.com> | 2015-12-15 22:01:07 -0800 |
---|---|---|
committer | Philip Chimento <philip@endlessm.com> | 2015-12-15 22:01:07 -0800 |
commit | ddb27c4c3c65775592ecf7698ea707732a28fff5 (patch) | |
tree | 30ca1bcfc0a898ed07c54da399072fa655788634 /endless/eosutil.c | |
parent | 34cbe1c10d34ee30e5a4fe60ae85c74f3eb784d3 (diff) |
Move utility functions to new eosutil.c
We have one utility function currently living in eosinit.c. Since we are
about to have another one, we should put them in a file for utility
functions.
[endlessm/eos-sdk#3930]
Diffstat (limited to 'endless/eosutil.c')
-rw-r--r-- | endless/eosutil.c | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/endless/eosutil.c b/endless/eosutil.c new file mode 100644 index 0000000..6ef12bf --- /dev/null +++ b/endless/eosutil.c @@ -0,0 +1,68 @@ +#include <glib.h> + +#include "endless.h" + +/** + * eos_get_system_personality: + * + * Retrieves the "personality" of the system. + * + * The personality is a unique string that identifies the installation + * of EndlessOS for a specific country or audience. The availability of + * certain applications, or their content, is determined by this value. + * + * Return value: (transfer none): a string, owned by the Endless SDK, + * with the name of the personality. You should never free or modify + * the returned string. + */ +const gchar * +eos_get_system_personality (void) +{ + static gchar *personality; + + if (g_once_init_enter (&personality)) + { + gchar *tmp; + + tmp = g_strdup (g_getenv ("ENDLESS_OS_PERSONALITY")); + if (tmp != NULL && tmp[0] == '\0') + { + g_free (tmp); + tmp = NULL; + } + + if (tmp == NULL) + { + GKeyFile *personality_file = g_key_file_new (); + char *path = g_build_filename (SYSCONFDIR, + "EndlessOS", + "personality.conf", + NULL); + + GError *error = NULL; + g_key_file_load_from_file (personality_file, path, + G_KEY_FILE_NONE, &error); + + if (error == NULL) + tmp = g_key_file_get_string (personality_file, "Personality", + "PersonalityName", &error); + + if (error != NULL) + { + g_critical ("No personality defined: %s", error->message); + g_error_free (error); + tmp = NULL; + } + + g_key_file_free (personality_file); + g_free (path); + } + + if (tmp == NULL) + tmp = g_strdup ("default"); + + g_once_init_leave (&personality, tmp); + } + + return personality; +} |