rpms/cups-pk-helper/devel cups-pk-helper.spec, 1.10, 1.11 get_devices.patch, 1.1, 1.2

Marek Kašík mkasik at fedoraproject.org
Thu Aug 13 14:02:25 UTC 2009


Author: mkasik

Update of /cvs/pkgs/rpms/cups-pk-helper/devel
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv7089

Modified Files:
	cups-pk-helper.spec get_devices.patch 
Log Message:
* Thu Aug 13 2009 Marek Kasik <mkasik at redhat.com> - 0.0.4-5
- Add parameters to DevicesGet method.



Index: cups-pk-helper.spec
===================================================================
RCS file: /cvs/pkgs/rpms/cups-pk-helper/devel/cups-pk-helper.spec,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -p -r1.10 -r1.11
--- cups-pk-helper.spec	24 Jul 2009 19:49:26 -0000	1.10
+++ cups-pk-helper.spec	13 Aug 2009 14:02:25 -0000	1.11
@@ -1,6 +1,6 @@
 Name:           cups-pk-helper
 Version:        0.0.4
-Release:        4%{?dist}
+Release:        5%{?dist}
 Summary:        A helper that makes system-config-printer use PolicyKit
 
 Group:          System Environment/Base
@@ -70,6 +70,9 @@ rm -rf $RPM_BUILD_ROOT
 
 
 %changelog
+* Thu Aug 13 2009 Marek Kasik <mkasik at redhat.com> - 0.0.4-5
+- Add parameters to DevicesGet method.
+
 * Fri Jul 24 2009 Fedora Release Engineering <rel-eng at lists.fedoraproject.org> - 0.0.4-4
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild
 

get_devices.patch:
 cups-pk-helper-mechanism.c                    |   24 +++
 cups-pk-helper-mechanism.h                    |    7 
 cups-pk-helper-mechanism.xml                  |    9 +
 cups.c                                        |  188 +++++++++++++++++++++++++-
 cups.h                                        |    5 
 org.opensuse.cupspkhelper.mechanism.policy.in |    9 +
 6 files changed, 241 insertions(+), 1 deletion(-)

Index: get_devices.patch
===================================================================
RCS file: /cvs/pkgs/rpms/cups-pk-helper/devel/get_devices.patch,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -p -r1.1 -r1.2
--- get_devices.patch	16 Jul 2009 12:35:46 -0000	1.1
+++ get_devices.patch	13 Aug 2009 14:02:25 -0000	1.2
@@ -1,5 +1,5 @@
 --- cups-pk-helper-0.0.4/src/cups.c	2009-03-04 13:41:53.000000000 +0100
-+++ cups-pk-helper-0.0.4/src/cups.c	2009-07-16 12:49:46.000000000 +0200
++++ cups-pk-helper-0.0.4/src/cups.c	2009-08-13 12:15:47.000000000 +0200
 @@ -58,7 +58,7 @@
       getPPDs
       getServerPPD
@@ -9,116 +9,225 @@
       getJobs
       getJobAttributes
  ~!+* cancelJob
-@@ -1807,6 +1807,89 @@ cph_cups_job_get_status (CphCups    *cup
+@@ -1807,6 +1807,192 @@ cph_cups_job_get_status (CphCups    *cup
          return status;
  }
  
-+void get_devices_cb (const char *device_class,
-+                     const char *device_id,
-+                     const char *device_info,
-+                     const char *device_make_and_model,
-+                     const char *device_uri,
-+                     const char *device_location,
-+                     void       *user_data)
-+{
-+        GHashTable *hash = (GHashTable*) user_data;
++struct _CphCupsGetDevices {
 +        int         iter;
++        GHashTable *hash;
++};
 +
-+        g_return_if_fail (hash != NULL);
++static void
++_cph_cups_get_devices_cb (const char *device_class,
++                          const char *device_id,
++                          const char *device_info,
++                          const char *device_make_and_model,
++                          const char *device_uri,
++                          const char *device_location,
++                          void       *user_data)
++{
++        struct _CphCupsGetDevices *data = user_data;
 +
-+        iter = atoi (g_hash_table_lookup (hash, "iter"));
-+        iter++;
++        g_return_if_fail (data != NULL);
 +
-+        if (device_class && strlen (device_class) > 0)
-+                g_hash_table_replace (hash,
-+                                      g_strdup_printf ("device-class:%d", iter),
++        if (device_class && device_class[0] != '\0')
++                g_hash_table_replace (data->hash,
++                                      g_strdup_printf ("device-class:%d",
++                                                       data->iter),
 +                                      g_strdup (device_class));
-+        if (device_id && strlen (device_id) > 0)
-+                g_hash_table_replace (hash,
-+                                      g_strdup_printf ("device-id:%d", iter),
++        if (device_id && device_id[0] != '\0')
++                g_hash_table_replace (data->hash,
++                                      g_strdup_printf ("device-id:%d",
++                                                       data->iter),
 +                                      g_strdup (device_id));
-+        if (device_info && strlen (device_info) > 0)
-+                g_hash_table_replace (hash,
-+                                      g_strdup_printf ("device-info:%d", iter),
++        if (device_info && device_info[0] != '\0')
++                g_hash_table_replace (data->hash,
++                                      g_strdup_printf ("device-info:%d",
++                                                       data->iter),
 +                                      g_strdup (device_info));
-+        if (device_make_and_model && strlen (device_make_and_model) > 0)
-+                g_hash_table_replace (hash,
-+                                      g_strdup_printf ("device-make-and-model:%d", iter),
++        if (device_make_and_model && device_make_and_model[0] != '\0')
++                g_hash_table_replace (data->hash,
++                                      g_strdup_printf ("device-make-and-model:%d",
++                                                       data->iter),
 +                                      g_strdup (device_make_and_model));
-+        if (device_uri && strlen (device_uri) > 0)
-+                g_hash_table_replace (hash,
-+                                      g_strdup_printf ("device-uri:%d", iter),
++        if (device_uri && device_uri[0] != '\0')
++                g_hash_table_replace (data->hash,
++                                      g_strdup_printf ("device-uri:%d",
++                                                       data->iter),
 +                                      g_strdup (device_uri));
-+        if (device_location && strlen (device_location) > 0)
-+                g_hash_table_replace (hash,
-+                                      g_strdup_printf ("device-location:%d ", iter),
++        if (device_location && device_location[0] != '\0')
++                g_hash_table_replace (data->hash,
++                                      g_strdup_printf ("device-location:%d ",
++                                                       data->iter),
 +                                      g_strdup (device_location));
-+        g_hash_table_replace (hash,
-+                              g_strdup ("iter"),
-+                              g_strdup_printf ("%d", iter));
++
++        data->iter++;
 +}
 +
-+GHashTable *cph_cups_devices_get (CphCups *cups)
++GHashTable *
++cph_cups_devices_get (CphCups    *cups,
++                      int         timeout,
++                      const char *include_schemes,
++                      const char *exclude_schemes)
 +{
-+        int            retval;
-+        GHashTable    *hash;
-+        cups_option_t *settings;
-+        int            num_settings, i;
++        struct _CphCupsGetDevices  data;
++        char                      *error_str;
 +
 +        g_return_val_if_fail (CPH_IS_CUPS (cups), NULL);
 +
-+        hash = g_hash_table_new_full (g_str_hash, g_str_equal,
-+                                      g_free, g_free);
++        data.iter = 0;
++        data.hash = g_hash_table_new_full (g_str_hash, g_str_equal,
++                                           g_free, g_free);
++
++#if (CUPS_VERSION_MAJOR == 1 && CUPS_VERSION_MINOR >= 4) || CUPS_VERSION_MAJOR > 1
++        ipp_status_t   retval;
++        int            timeout_param = CUPS_TIMEOUT_DEFAULT;
++        char          *include_schemes_param = (char *) CUPS_INCLUDE_ALL;
++        char          *exclude_schemes_param = (char *) CUPS_EXCLUDE_NONE;
++
++        if (timeout > 0)
++                timeout_param = timeout;
 +
-+        g_hash_table_replace (hash,
-+                              g_strdup ("iter"),
-+                              g_strdup ("-1"));
++        if (include_schemes && strlen (include_schemes) > 0)
++                include_schemes_param = g_strdup (include_schemes);
++
++        if (exclude_schemes && strlen (exclude_schemes) > 0)
++                exclude_schemes_param = g_strdup (exclude_schemes);
 +
 +        retval = cupsGetDevices (cups->priv->connection,
-+                                 CUPS_TIMEOUT_DEFAULT,
-+                                 CUPS_INCLUDE_ALL,
-+                                 CUPS_EXCLUDE_NONE,
-+                                 get_devices_cb,
-+                                 hash);
-+
-+        if (retval != IPP_OK) {
-+                char *error;
-+
-+                error = g_strdup_printf ("Can not get devices.");
-+                _cph_cups_set_internal_status (cups, error);
-+                g_free (error);
++                                 timeout_param,
++                                 include_schemes_param,
++                                 exclude_schemes_param,
++                                 _cph_cups_get_devices_cb,
++                                 &data);
++
++        g_free (include_schemes_param);
++        g_free (exclude_schemes_param);
++
++        if (retval != IPP_OK)
++                goto error;
++#else
++        ipp_t              *request;
++        const char         *resource_char;
++        ipp_t              *reply;
++        ipp_attribute_t    *attr;
++        const char         *device_class;
++        const char         *device_id;
++        const char         *device_info;
++        const char         *device_location;
++        const char         *device_make_and_model;
++        const char         *device_uri;
++
++        request = ippNewRequest (CUPS_GET_DEVICES);
++        resource_char = _cph_cups_get_resource (CPH_RESOURCE_ROOT);
++        reply = cupsDoRequest (cups->priv->connection,
++                               request, resource_char);
++
++        if (!reply)
++                goto error;
++
++        for (attr = reply->attrs; attr; attr = attr->next) {
++                while (attr && attr->group_tag != IPP_TAG_PRINTER)
++                        attr = attr->next;
++
++                if (attr == NULL)
++                        break;
++
++                device_class          = NULL;
++                device_id             = NULL;
++                device_info           = NULL;
++                device_location       = "";
++                device_make_and_model = NULL;
++                device_uri            = NULL;
++
++                while (attr && attr->group_tag == IPP_TAG_PRINTER) {
++                        g_message ("name: %s", attr->name);
++                        if (attr->name &&
++                            strcmp (attr->name, "device-class") == 0 &&
++                            attr->value_tag == IPP_TAG_KEYWORD)
++                                device_class = g_strdup (attr->values[0].string.text);
++                        else if (attr->name &&
++                            strcmp (attr->name, "device-id") == 0 &&
++                            attr->value_tag == IPP_TAG_TEXT)
++                                device_id = g_strdup (attr->values[0].string.text);
++                        else if (attr->name &&
++                            strcmp (attr->name, "device-info") == 0 &&
++                            attr->value_tag == IPP_TAG_TEXT)
++                                device_info = g_strdup (attr->values[0].string.text);
++                        else if (attr->name &&
++                            strcmp (attr->name, "device-location") == 0 &&
++                            attr->value_tag == IPP_TAG_TEXT)
++                                device_location = g_strdup (attr->values[0].string.text);
++                        else if (attr->name &&
++                            strcmp (attr->name, "device-make-and-model") == 0 &&
++                            attr->value_tag == IPP_TAG_TEXT)
++                                device_make_and_model = g_strdup (attr->values[0].string.text);
++                        else if (attr->name &&
++                            strcmp (attr->name, "device-uri") == 0 &&
++                            attr->value_tag == IPP_TAG_URI)
++                                device_uri = g_strdup (attr->values[0].string.text);
++
++                        attr = attr->next;
++                }
++
++                if (device_class && device_id && device_info && device_make_and_model &&
++                    device_uri)
++                        _cph_cups_get_devices_cb (device_class,
++                                        device_id,
++                                        device_info,
++                                        device_make_and_model,
++                                        device_uri,
++                                        device_location,
++                                        &data);
 +
-+                return NULL;
++                if (attr == NULL)
++                        break;
 +        }
 +
-+        g_hash_table_remove (hash, "iter");
++        ippDelete (reply);
++#endif
++
++        return data.hash;
++
++error:
++        error_str = g_strdup ("Can not get devices.");
++        _cph_cups_set_internal_status (cups, error_str);
++        g_hash_table_destroy (data.hash);
++        g_free (error_str);
 +
-+        return hash;
++        return NULL;
 +}
 +
  /******************************************************
   * Non-object functions
   ******************************************************/
 --- cups-pk-helper-0.0.4/src/cups.h	2009-02-28 03:38:13.000000000 +0100
-+++ cups-pk-helper-0.0.4/src/cups.h	2009-07-16 12:50:44.000000000 +0200
-@@ -184,6 +184,8 @@ CphJobStatus cph_cups_job_get_status (Cp
++++ cups-pk-helper-0.0.4/src/cups.h	2009-08-13 12:16:08.000000000 +0200
+@@ -184,6 +184,11 @@ CphJobStatus cph_cups_job_get_status (Cp
                                        int         job_id,
                                        const char *user);
  
-+GHashTable *cph_cups_devices_get (CphCups    *cups);
++GHashTable *cph_cups_devices_get (CphCups    *cups,
++                                  int         timeout,
++                                  const char *include_schemes,
++                                  const char *exclude_schemes);
 +
  G_END_DECLS
  
  #endif /* CPH_CUPS_H */
---- cups-pk-helper-0.0.4/src/cups-pk-helper-mechanism.c	2009-07-16 12:46:03.000000000 +0200
-+++ cups-pk-helper-0.0.4/src/cups-pk-helper-mechanism.c	2009-07-16 12:52:02.000000000 +0200
-@@ -1103,3 +1103,21 @@ cph_mechanism_job_set_hold_until (CphMec
+--- cups-pk-helper-0.0.4/src/cups-pk-helper-mechanism.c	2009-08-13 12:14:09.000000000 +0200
++++ cups-pk-helper-0.0.4/src/cups-pk-helper-mechanism.c	2009-08-13 12:16:48.000000000 +0200
+@@ -1103,3 +1103,27 @@ cph_mechanism_job_set_hold_until (CphMec
  
          return TRUE;
  }
 +
 +gboolean
 +cph_mechanism_devices_get (CphMechanism          *mechanism,
++                           int                    timeout,
++                           const char            *include_schemes,
++                           const char            *exclude_schemes,                           
 +                           DBusGMethodInvocation *context)
 +{
 +        GHashTable *devices;
@@ -128,41 +237,50 @@
 +        if (!_check_polkit_for_action (mechanism, context, "devices-get"))
 +                return FALSE;
 +
-+        devices = cph_cups_devices_get (mechanism->priv->cups);
++        devices = cph_cups_devices_get (mechanism->priv->cups,
++                                        timeout,
++                                        include_schemes,
++                                        exclude_schemes);
 +        _cph_mechanism_return_error_and_value (mechanism, context,
 +                                               devices == NULL, devices);
 +
 +        return TRUE;
 +}
 --- cups-pk-helper-0.0.4/src/cups-pk-helper-mechanism.h	2009-02-28 03:38:13.000000000 +0100
-+++ cups-pk-helper-0.0.4/src/cups-pk-helper-mechanism.h	2009-07-16 12:52:37.000000000 +0200
-@@ -236,6 +236,10 @@ cph_mechanism_job_set_hold_until (CphMec
++++ cups-pk-helper-0.0.4/src/cups-pk-helper-mechanism.h	2009-08-13 12:17:10.000000000 +0200
+@@ -236,6 +236,13 @@ cph_mechanism_job_set_hold_until (CphMec
                                    const char            *job_hold_until,
                                    DBusGMethodInvocation *context);
  
 +gboolean
 +cph_mechanism_devices_get (CphMechanism          *mechanism,
++                           int                    timeout,
++                           const char            *include_schemes,
++                           const char            *exclude_schemes,                           
 +                           DBusGMethodInvocation *context);
 +
  G_END_DECLS
  
  #endif /* CPH_MECHANISM_H */
 --- cups-pk-helper-0.0.4/src/cups-pk-helper-mechanism.xml	2009-02-28 03:38:13.000000000 +0100
-+++ cups-pk-helper-0.0.4/src/cups-pk-helper-mechanism.xml	2009-07-16 12:53:27.000000000 +0200
-@@ -192,5 +192,11 @@
++++ cups-pk-helper-0.0.4/src/cups-pk-helper-mechanism.xml	2009-08-13 12:17:36.000000000 +0200
+@@ -192,5 +192,14 @@
        <arg name="job_hold_until" direction="in"  type="s"/>
        <arg name="error"          direction="out" type="s"/>
      </method>
 +
 +    <method name="DevicesGet">
 +      <annotation name="org.freedesktop.DBus.GLib.Async" value=""/>
++      <arg name="timeout"         direction="in"  type="i"/>
++      <arg name="include_schemes" direction="in"  type="s"/>
++      <arg name="exclude_schemes" direction="in"  type="s"/>
 +      <arg name="error"           direction="out" type="s"/>
 +      <arg name="devices"         direction="out" type="a{ss}"/>
 +    </method>
    </interface>
  </node>
---- cups-pk-helper-0.0.4/src/org.opensuse.cupspkhelper.mechanism.policy.in	2009-07-16 12:46:03.000000000 +0200
-+++ cups-pk-helper-0.0.4/src/org.opensuse.cupspkhelper.mechanism.policy.in	2009-07-16 12:53:57.000000000 +0200
+--- cups-pk-helper-0.0.4/src/org.opensuse.cupspkhelper.mechanism.policy.in	2009-08-13 12:14:09.000000000 +0200
++++ cups-pk-helper-0.0.4/src/org.opensuse.cupspkhelper.mechanism.policy.in	2009-08-13 12:18:24.000000000 +0200
 @@ -86,6 +86,15 @@
      </defaults>
    </action>




More information about the fedora-extras-commits mailing list