diff options
Diffstat (limited to 'x11/gdm/files/patch-gui_simple-greeter_gdm-user-manager.c')
-rw-r--r-- | x11/gdm/files/patch-gui_simple-greeter_gdm-user-manager.c | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/x11/gdm/files/patch-gui_simple-greeter_gdm-user-manager.c b/x11/gdm/files/patch-gui_simple-greeter_gdm-user-manager.c new file mode 100644 index 000000000..b0b8ed37d --- /dev/null +++ b/x11/gdm/files/patch-gui_simple-greeter_gdm-user-manager.c @@ -0,0 +1,64 @@ +--- gui/simple-greeter/gdm-user-manager.c.orig 2009-12-21 17:36:30.000000000 +0100 ++++ gui/simple-greeter/gdm-user-manager.c 2009-12-27 22:34:26.000000000 +0100 +@@ -66,6 +66,8 @@ + + #ifdef __sun + #define DEFAULT_MINIMAL_UID 100 ++#elif defined(__FreeBSD__) ++#define DEFAULT_MINIMAL_UID 1000 + #else + #define DEFAULT_MINIMAL_UID 500 + #endif +@@ -1414,17 +1416,24 @@ reload_passwd (GdmUserManager *manager) + GSList *new_users; + GSList *list; + GSList *dup; ++#ifndef __FreeBSD__ + FILE *fp; ++#endif + + old_users = NULL; + new_users = NULL; + ++#ifdef __FreeBSD__ ++ setpwent (); ++#else ++ + errno = 0; + fp = fopen (PATH_PASSWD, "r"); + if (fp == NULL) { + g_warning ("Unable to open %s: %s", PATH_PASSWD, g_strerror (errno)); + goto out; + } ++#endif + + g_hash_table_foreach (manager->priv->users, listify_hash_values_hfunc, &old_users); + g_slist_foreach (old_users, (GFunc) g_object_ref, NULL); +@@ -1443,9 +1452,15 @@ reload_passwd (GdmUserManager *manager) + } else { + g_debug ("GdmUserManager: include_all is TRUE"); + ++#ifdef __FreeBSD__ ++ for (pwent = getpwent (); ++ pwent != NULL; ++ pwent = getpwent()) { ++#else + for (pwent = fgetpwent (fp); + pwent != NULL; + pwent = fgetpwent (fp)) { ++#endif + GdmUser *user; + + user = NULL; +@@ -1521,7 +1536,11 @@ reload_passwd (GdmUserManager *manager) + out: + /* Cleanup */ + ++#ifdef __FreeBSD__ ++ endpwent (); ++#else + fclose (fp); ++#endif + + g_slist_foreach (new_users, (GFunc) g_object_thaw_notify, NULL); + g_slist_foreach (new_users, (GFunc) g_object_unref, NULL); |