emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] /srv/bzr/emacs/emacs-24 r107946: Add functions to get syst


From: Glenn Morris
Subject: [Emacs-diffs] /srv/bzr/emacs/emacs-24 r107946: Add functions to get system user names, group names
Date: Fri, 02 Nov 2012 01:47:27 -0000
User-agent: Bazaar (2.5.0)

------------------------------------------------------------
revno: 107946
fixes bug: http://debbugs.gnu.org/7900
author: Dmitry Antipov <address@hidden>
committer: Glenn Morris <address@hidden>
branch nick: trunk
timestamp: Mon 2012-04-16 21:29:58 -0400
message:
  Add functions to get system user names, group names
  
  Note from committer:
  I removed the part that adds grp.h to AC_CHECK_HEADERS and
  
  +#ifdef HAVE_GRP_H
   #include <grp.h>
  +#endif
  
  to src/dired.c, because the latter has unconditionally included grp.h
  since 2003, and uses it eg in stat_gname.
  
  * configure.in (AC_CHECK_FUNCS): Add getpwent, endpwent, getgrent, endgrent.
  
  * src/dired.c (Fsystem_users, Fsystem_groups): New functions.
  (syms_of_dired): Add them.
modified:
  ChangeLog
  configure.in
  src/ChangeLog
  src/dired.c
=== modified file 'ChangeLog'
--- a/ChangeLog 2012-04-16 19:13:44 +0000
+++ b/ChangeLog 2012-04-17 01:29:58 +0000
@@ -1,3 +1,8 @@
+2012-04-17  Dmitry Antipov  <address@hidden>
+
+       * configure.in (AC_CHECK_FUNCS):
+       Add getpwent, endpwent, getgrent, endgrent. (Bug#7900)
+
 2012-04-16  Glenn Morris  <address@hidden>
 
        * configure.in (NS_HAVE_NSINTEGER): Remove unnecessary variable.

=== modified file 'configure.in'
--- a/configure.in      2012-04-16 19:13:44 +0000
+++ b/configure.in      2012-04-17 01:29:58 +0000
@@ -2736,6 +2736,7 @@
 sendto recvfrom getsockopt setsockopt getsockname getpeername \
 gai_strerror mkstemp getline getdelim mremap fsync sync \
 difftime mempcpy mblen mbrlen posix_memalign \
+getpwent endpwent getgrent endgrent \
 cfmakeraw cfsetspeed copysign __executable_start)
 
 dnl Cannot use AC_CHECK_FUNCS

=== modified file 'src/ChangeLog'
--- a/src/ChangeLog     2012-04-16 06:39:21 +0000
+++ b/src/ChangeLog     2012-04-17 01:29:58 +0000
@@ -1,3 +1,8 @@
+2012-04-17  Dmitry Antipov  <address@hidden>
+
+       * dired.c (Fsystem_users, Fsystem_groups): New functions.  (Bug#7900)
+       (syms_of_dired): Add them.
+
 2012-04-16  Paul Eggert  <address@hidden>
 
        Fix minor alloc.c problems found by static checking.

=== modified file 'src/dired.c'
--- a/src/dired.c       2012-01-19 07:21:25 +0000
+++ b/src/dired.c       2012-04-17 01:29:58 +0000
@@ -1015,6 +1015,45 @@
   return Fstring_lessp (Fcar (f1), Fcar (f2));
 }
 
+
+DEFUN ("system-users", Fsystem_users, Ssystem_users, 0, 0, 0,
+       doc: /* Return a list of user names currently registered in the system.
+The value may be nil if not supported on this platform.  */)
+     (void)
+{
+  Lisp_Object users = Qnil;
+#if defined(HAVE_GETPWENT) && defined(HAVE_ENDPWENT)
+  struct passwd *pw;
+
+  while ((pw = getpwent ()))
+    users = Fcons (DECODE_SYSTEM (build_string (pw->pw_name)), users);
+
+  endpwent ();
+#endif
+  if (EQ (users, Qnil))
+    /* At least current user is always known. */
+    users = Fcons (Vuser_real_login_name, Qnil);
+  return users;
+}
+
+DEFUN ("system-groups", Fsystem_groups, Ssystem_groups, 0, 0, 0,
+       doc: /* Return a list of user group names currently registered in the 
system.
+The value may be nil if not supported on this platform.  */)
+     (void)
+{
+  Lisp_Object groups = Qnil;
+#if defined(HAVE_GETGRENT) && defined(HAVE_ENDGRENT)
+  struct group *gr;
+  int length;
+
+  while ((gr = getgrent ()))
+    groups = Fcons (DECODE_SYSTEM (build_string (gr->gr_name)), groups);
+
+  endgrent ();
+#endif
+  return groups;
+}
+
 void
 syms_of_dired (void)
 {
@@ -1032,6 +1071,8 @@
   defsubr (&Sfile_name_all_completions);
   defsubr (&Sfile_attributes);
   defsubr (&Sfile_attributes_lessp);
+  defsubr (&Ssystem_users);
+  defsubr (&Ssystem_groups);
 
   DEFVAR_LISP ("completion-ignored-extensions", Vcompletion_ignored_extensions,
               doc: /* Completion ignores file names ending in any string in 
this list.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]