summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVincent Untz <vuntz@novell.com>2012-03-02 14:18:01 +0100
committerVincent Untz <vuntz@novell.com>2012-03-02 14:25:18 +0100
commitc9eb877f54c633ca8ca559b2346324743d56d198 (patch)
treed1d2ae756fe81f292ea1ea712799acab5e87f2d6
parentc2d079439c501bcbf1c7c7022687ce286ba35943 (diff)
Cleanup cph_cups_printer_class_set_option_default()
Check if the name we have is a printer or a class, and create the right request, instead of first assuming it's a printer, and trying for a class in case of failure.
-rw-r--r--src/cups.c37
1 files changed, 8 insertions, 29 deletions
diff --git a/src/cups.c b/src/cups.c
index 7c5a277..b10fad3 100644
--- a/src/cups.c
+++ b/src/cups.c
@@ -2050,6 +2050,7 @@ cph_cups_printer_class_set_option_default (CphCups *cups,
const char *option,
const char *const *values)
{
+ gboolean is_class;
char *option_name;
int len;
ipp_t *request;
@@ -2091,37 +2092,16 @@ cph_cups_printer_class_set_option_default (CphCups *cups,
}
/* set default value for option */
+ is_class = cph_cups_is_class (cups, printer_name);
- request = ippNewRequest (CUPS_ADD_MODIFY_PRINTER);
- _cph_cups_add_printer_uri (request, printer_name);
-
- if (len == 1)
- ippAddString (request, IPP_TAG_PRINTER, IPP_TAG_NAME,
- option_name, NULL, values[0]);
- else {
- int i;
-
- attr = ippAddStrings (request, IPP_TAG_PRINTER, IPP_TAG_NAME,
- option_name, len, NULL, NULL);
-
- for (i = 0; i < len; i++)
- attr->values[i].string.text = g_strdup (values[i]);
- }
-
- if (_cph_cups_send_request (cups, request, CPH_RESOURCE_ADMIN)) {
- retval = TRUE;
- goto out;
- }
-
- /* it failed, maybe it was a class? */
- if (cups->priv->last_status != IPP_NOT_POSSIBLE) {
- retval = FALSE;
- goto out;
+ if (is_class) {
+ request = ippNewRequest (CUPS_ADD_MODIFY_CLASS);
+ _cph_cups_add_class_uri (request, printer_name);
+ } else {
+ request = ippNewRequest (CUPS_ADD_MODIFY_PRINTER);
+ _cph_cups_add_printer_uri (request, printer_name);
}
- request = ippNewRequest (CUPS_ADD_MODIFY_CLASS);
- _cph_cups_add_class_uri (request, printer_name);
-
if (len == 1)
ippAddString (request, IPP_TAG_PRINTER, IPP_TAG_NAME,
option_name, NULL, values[0]);
@@ -2137,7 +2117,6 @@ cph_cups_printer_class_set_option_default (CphCups *cups,
retval = _cph_cups_send_request (cups, request, CPH_RESOURCE_ADMIN);
-out:
g_free (option_name);
return retval;