summaryrefslogtreecommitdiff
path: root/endless/eosutil.c
diff options
context:
space:
mode:
authorPhilip Chimento <philip@endlessm.com>2015-12-15 22:01:07 -0800
committerPhilip Chimento <philip@endlessm.com>2015-12-15 22:01:07 -0800
commitddb27c4c3c65775592ecf7698ea707732a28fff5 (patch)
tree30ca1bcfc0a898ed07c54da399072fa655788634 /endless/eosutil.c
parent34cbe1c10d34ee30e5a4fe60ae85c74f3eb784d3 (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.c68
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;
+}