diff options
author | Simon Quigley <tsimonq2@ubuntu.com> | 2017-06-19 14:38:35 -0500 |
---|---|---|
committer | Simon Quigley <tsimonq2@ubuntu.com> | 2017-06-19 14:38:35 -0500 |
commit | 720f5023a8f68aaaa54cb6b7bf46efee23b5b4c3 (patch) | |
tree | 26a8d91183787418455f65c2bb44ed641800dad3 /arch/common/.svn/text-base/users.h.svn-base | |
parent | 854292407779593a401a1d5ce71add51880fa84f (diff) |
Import Upstream version 0.4.1
Diffstat (limited to 'arch/common/.svn/text-base/users.h.svn-base')
-rw-r--r-- | arch/common/.svn/text-base/users.h.svn-base | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/arch/common/.svn/text-base/users.h.svn-base b/arch/common/.svn/text-base/users.h.svn-base new file mode 100644 index 00000000..08acd97a --- /dev/null +++ b/arch/common/.svn/text-base/users.h.svn-base @@ -0,0 +1,63 @@ +static gchar *sys_users = NULL, + *human_users = NULL; + +static gboolean +remove_users(gpointer key, gpointer value, gpointer data) +{ + if (!strncmp((gchar *) key, "USER", 4)) { + /* + * g_free((gchar *) key); + * g_free((GtkTreeIter *) value); + */ + return TRUE; + } + return FALSE; +} + +void scan_users(void) +{ + FILE *passwd; + char buffer[512]; + + passwd = fopen("/etc/passwd", "r"); + if (!passwd) + return; + + if (sys_users) { + g_free(sys_users); + g_free(human_users); + + g_hash_table_foreach_remove(moreinfo, remove_users, NULL); + } + + sys_users = g_strdup(""); + human_users = g_strdup(""); + + while (fgets(buffer, 512, passwd)) { + gchar **tmp; + gint uid; + + tmp = g_strsplit(buffer, ":", 0); + + gchar *key = g_strdup_printf("USER%s", tmp[0]); + gchar *val = g_strdup_printf("[User Information]\n" + "User ID=%s\n" + "Group ID=%s\n" + "Home directory=%s\n" + "Default shell=%s\n", + tmp[2], tmp[3], tmp[5], tmp[6]); + g_hash_table_insert(moreinfo, key, val); + + uid = atoi(tmp[2]); + strend(tmp[4], ','); + if (uid >= 1000 && uid <= 65530) { + human_users = g_strdup_printf("%s$%s$%s=%s\n", human_users, key, tmp[0], tmp[4]); + } else { + sys_users = g_strdup_printf("%s$%s$%s=%s\n", sys_users, key, tmp[0], tmp[4]); + } + + g_strfreev(tmp); + } + + fclose(passwd); +} |