/*
* "lprm" command for CUPS.
*
- * Copyright 2007-2010 by Apple Inc.
+ * Copyright 2007-2016 by Apple Inc.
* Copyright 1997-2006 by Easy Software Products.
*
* These coded instructions, statements, and computer programs are the
int i; /* Looping var */
int job_id; /* Job ID */
const char *name; /* Destination printer */
- char *instance; /* Pointer to instance name */
+ char *instance, /* Pointer to instance name */
+ *opt; /* Option pointer */
cups_dest_t *dest, /* Destination */
*defdest; /* Default destination */
int did_cancel; /* Did we cancel something? */
*/
for (i = 1; i < argc; i ++)
+ {
if (argv[i][0] == '-' && argv[i][1] != '\0')
- switch (argv[i][1])
+ {
+ for (opt = argv[i] + 1; *opt; opt ++)
{
- case 'E' : /* Encrypt */
+ switch (*opt)
+ {
+ case 'E' : /* Encrypt */
#ifdef HAVE_SSL
- cupsSetEncryption(HTTP_ENCRYPT_REQUIRED);
+ cupsSetEncryption(HTTP_ENCRYPT_REQUIRED);
#else
- _cupsLangPrintf(stderr,
- _("%s: Sorry, no encryption support."), argv[0]);
+ _cupsLangPrintf(stderr, _("%s: Sorry, no encryption support."), argv[0]);
#endif /* HAVE_SSL */
- break;
-
- case 'P' : /* Cancel jobs on a printer */
- if (argv[i][2])
- name = argv[i] + 2;
- else
- {
- i ++;
- name = argv[i];
- }
-
- if ((instance = strchr(name, '/')) != NULL)
- *instance = '\0';
-
- if ((dest = cupsGetNamedDest(CUPS_HTTP_DEFAULT, name,
- NULL)) == NULL)
- {
- _cupsLangPrintf(stderr,
- _("%s: Error - unknown destination \"%s\"."),
- argv[0], name);
- goto error;
- }
-
- cupsFreeDests(1, dest);
- break;
-
- case 'U' : /* Username */
- if (argv[i][2] != '\0')
- cupsSetUser(argv[i] + 2);
- else
- {
- i ++;
- if (i >= argc)
+ break;
+
+ case 'P' : /* Cancel jobs on a printer */
+ if (opt[1] != '\0')
{
- _cupsLangPrintf(stderr,
- _("%s: Error - expected username after "
- "\"-U\" option."), argv[0]);
- goto error;
+ name = opt + 1;
+ opt += strlen(opt) - 1;
+ }
+ else
+ {
+ i ++;
+ name = argv[i];
}
- cupsSetUser(argv[i]);
- }
- break;
-
- case 'h' : /* Connect to host */
- if (argv[i][2] != '\0')
- cupsSetServer(argv[i] + 2);
- else
- {
- i ++;
+ if ((instance = strchr(name, '/')) != NULL)
+ *instance = '\0';
- if (i >= argc)
+ if ((dest = cupsGetNamedDest(CUPS_HTTP_DEFAULT, name, NULL)) == NULL)
{
- _cupsLangPrintf(stderr,
- _("%s: Error - expected hostname after "
- "\"-h\" option."), argv[0]);
+ _cupsLangPrintf(stderr, _("%s: Error - unknown destination \"%s\"."), argv[0], name);
goto error;
- }
+ }
+
+ cupsFreeDests(1, dest);
+ break;
+
+ case 'U' : /* Username */
+ if (opt[1] != '\0')
+ {
+ cupsSetUser(opt + 1);
+ opt += strlen(opt) - 1;
+ }
+ else
+ {
+ i ++;
+ if (i >= argc)
+ {
+ _cupsLangPrintf(stderr, _("%s: Error - expected username after \"-U\" option."), argv[0]);
+ goto error;
+ }
+
+ cupsSetUser(argv[i]);
+ }
+ break;
+
+ case 'h' : /* Connect to host */
+ if (opt[1] != '\0')
+ {
+ cupsSetServer(opt + 1);
+ opt += strlen(opt) - 1;
+ }
else
- cupsSetServer(argv[i]);
- }
+ {
+ i ++;
+
+ if (i >= argc)
+ {
+ _cupsLangPrintf(stderr, _("%s: Error - expected hostname after \"-h\" option."), argv[0]);
+ goto error;
+ }
+ else
+ cupsSetServer(argv[i]);
+ }
- if (defdest)
- cupsFreeDests(1, defdest);
+ if (defdest)
+ cupsFreeDests(1, defdest);
- defdest = cupsGetNamedDest(CUPS_HTTP_DEFAULT, NULL, NULL);
- name = defdest ? defdest->name : NULL;
- break;
+ defdest = cupsGetNamedDest(CUPS_HTTP_DEFAULT, NULL, NULL);
+ name = defdest ? defdest->name : NULL;
+ break;
- default :
- _cupsLangPrintf(stderr, _("%s: Error - unknown option \"%c\"."),
- argv[0], argv[i][1]);
- goto error;
+ default :
+ _cupsLangPrintf(stderr, _("%s: Error - unknown option \"%c\"."), argv[0], *opt);
+ goto error;
+ }
}
+ }
else
{
/*
did_cancel = 1;
}
+ }
/*
* If nothing has been canceled yet, cancel the current job on the specified