* tools/Makefile.am: Patch by Colin Walters that fixes distcheck
authorJohn (J5) Palmieri <johnp@redhat.com>
Tue, 22 Mar 2005 17:57:27 +0000 (17:57 +0000)
committerJohn (J5) Palmieri <johnp@redhat.com>
Tue, 22 Mar 2005 17:57:27 +0000 (17:57 +0000)
* dbus/dbus-userdb.c, dbus/dbus-userdb-util.c: Add patch we have
  had in Red Hat packages for a while but for some reason never
  got merged upstream
  (_dbus_is_a_number): New checks if a string
  can be converted to a number and does the conversion if it can
  (_dbus_user_database_lookup): Add check to see if the given username
  is a udi.  This allows udi's to be used instead of usernames in the
  config file.
  (_dbus_user_database_lookup_group): Add check to see if the given groupname
  is a gdi.  This allows gdi's to be used instead of groupnames in the
  config file.

ChangeLog
dbus/dbus-userdb-util.c
dbus/dbus-userdb.c
dbus/dbus-userdb.h
tools/Makefile.am

index 5a49f8b..60c1fa0 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,19 @@
+2005-03-22  John (J5) Palmieri  <johnp@redhat.com>
+
+       * tools/Makefile.am: Patch by Colin Walters that fixes distcheck
+
+       * dbus/dbus-userdb.c, dbus/dbus-userdb-util.c: Add patch we have 
+         had in Red Hat packages for a while but for some reason never 
+         got merged upstream
+         (_dbus_is_a_number): New checks if a string
+         can be converted to a number and does the conversion if it can
+         (_dbus_user_database_lookup): Add check to see if the given username
+         is a udi.  This allows udi's to be used instead of usernames in the
+         config file.
+         (_dbus_user_database_lookup_group): Add check to see if the given groupname
+         is a gdi.  This allows gdi's to be used instead of groupnames in the
+         config file.
+
 2005-03-21  John (J5) Palmieri  <johnp@redhat.com>
 
        * python/lvalue_cast_post_process.py - added post processor to fix Pyrex
index bd9c2e3..344bd74 100644 (file)
@@ -195,6 +195,16 @@ _dbus_user_database_lookup_group (DBusUserDatabase *db,
 
   _DBUS_ASSERT_ERROR_IS_CLEAR (error);
 
+   /* See if the group is really a number */
+   if (gid == DBUS_UID_UNSET)
+    {
+      unsigned long n;
+
+      if (_dbus_is_a_number (groupname, &n))
+        gid = n;
+    }
+
+
   if (gid != DBUS_GID_UNSET)
     info = _dbus_hash_table_lookup_ulong (db->groups, gid);
   else
index f1317aa..83a5769 100644 (file)
@@ -66,6 +66,27 @@ _dbus_group_info_free_allocated (DBusGroupInfo *info)
 }
 
 /**
+ * Checks if a given string is actually a number 
+ * and converts it if it is 
+ *
+ * @param str the string to check
+ * @param num the memory location of the unsigned long to fill in
+ * @returns TRUE if str is a number and num is filled in 
+ */
+dbus_bool_t
+_dbus_is_a_number (const DBusString *str,
+             unsigned long    *num)
+{
+  int end;
+
+  if (_dbus_string_parse_int (str, 0, num, &end) &&
+      end == _dbus_string_get_length (str))
+    return TRUE;
+  else
+    return FALSE;
+}
+
+/**
  * Looks up a uid or username in the user database.  Only one of name
  * or UID can be provided. There are wrapper functions for this that
  * are better to use, this one does no locking or anything on the
@@ -87,7 +108,16 @@ _dbus_user_database_lookup (DBusUserDatabase *db,
 
   _DBUS_ASSERT_ERROR_IS_CLEAR (error);
   _dbus_assert (uid != DBUS_UID_UNSET || username != NULL);
-  
+
+  /* See if the username is really a number */
+  if (uid == DBUS_UID_UNSET)
+    {
+      unsigned long n;
+
+      if (_dbus_is_a_number (username, &n))
+        uid = n;
+    }
+
   if (uid != DBUS_UID_UNSET)
     info = _dbus_hash_table_lookup_ulong (db->users, uid);
   else
index 316b99b..7e033b4 100644 (file)
@@ -106,6 +106,9 @@ dbus_bool_t _dbus_credentials_from_uid          (dbus_uid_t         user_id,
 dbus_bool_t _dbus_is_console_user               (dbus_uid_t         uid,
                                                  DBusError         *error);
 
+dbus_bool_t _dbus_is_a_number                   (const DBusString *str, 
+                                                 unsigned long    *num);
+
 
 DBUS_END_DECLS
 
index aeb6d6c..d1b490c 100644 (file)
@@ -3,13 +3,13 @@ INCLUDES=-I$(top_srcdir) $(DBUS_CLIENT_CFLAGS) $(DBUS_GLIB_CFLAGS) $(DBUS_X_CFLA
 if HAVE_GLIB
 GLIB_TOOLS=dbus-monitor
 
-libdbus_glib_HEADERS = dbus-glib-bindings.h
+nodist_libdbus_glib_HEADERS = dbus-glib-bindings.h
 libdbus_glibdir = $(includedir)/dbus-1.0/dbus
 
 dbus-glib-bindings.h: dbus-bus-introspect.xml $(top_builddir)/glib/dbus-binding-tool
        $(top_builddir)/glib/dbus-binding-tool --ignore-unsupported --mode=glib-client --output=dbus-glib-bindings.h dbus-bus-introspect.xml # FIXME - remove --ignore-unsupported when we can do arrays
 
-BUILT_SOURCES = dbus-glib-bindings.h
+BUILT_SOURCES = dbus-glib-bindings.h dbus-bus-introspect.xml
 
 else
 GLIB_TOOLS=
@@ -26,9 +26,7 @@ noinst_PROGRAMS = print-introspect
 print_introspect_SOURCES = print-introspect.c
 print_introspect_LDADD = $(top_builddir)/glib/libdbus-glib-1.la
 
-run-with-tmp-session-bus.sh: $(top_builddir)/bus/dbus-daemon dbus-launch
-
-dbus-bus-introspect.xml: $(srcdir)/run-with-tmp-session-bus.sh print-introspect $(top_builddir)/bus/dbus-daemon
+dbus-bus-introspect.xml: $(top_builddir)/bus/dbus-daemon dbus-launch print-introspect $(top_builddir)/bus/dbus-daemon
        DBUS_TOP_BUILDDIR=$(top_builddir) $(srcdir)/run-with-tmp-session-bus.sh ./print-introspect org.freedesktop.DBus /org/freedesktop/DBus > dbus-bus-introspect.xml.tmp && mv dbus-bus-introspect.xml.tmp dbus-bus-introspect.xml
 
 bin_PROGRAMS=dbus-send $(GLIB_TOOLS) dbus-launch dbus-cleanup-sockets $(GTK_TOOLS)
@@ -63,5 +61,7 @@ dbus_viewer_LDADD= $(DBUS_GLIB_TOOL_LIBS) $(top_builddir)/glib/libdbus-gtool.la
 
 man_MANS = dbus-send.1 dbus-monitor.1 dbus-launch.1 dbus-cleanup-sockets.1
 EXTRA_DIST = $(man_MANS) run-with-tmp-session-bus.sh
-
-
+CLEANFILES =                           \
+       run-with-tmp-session-bus.conf   \
+       dbus-bus-introspect.xml         \
+       dbus-glib-bindings.h