diff options
author | Vincent Untz <vuntz@novell.com> | 2012-03-02 14:18:01 +0100 |
---|---|---|
committer | Vincent Untz <vuntz@novell.com> | 2012-03-02 14:25:18 +0100 |
commit | c9eb877f54c633ca8ca559b2346324743d56d198 (patch) | |
tree | d1d2ae756fe81f292ea1ea712799acab5e87f2d6 | |
parent | c2d079439c501bcbf1c7c7022687ce286ba35943 (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.c | 37 |
1 files changed, 8 insertions, 29 deletions
@@ -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; |