]> git.ipfire.org Git - thirdparty/cups.git/blobdiff - systemv/cancel.c
Merge changes from CUPS 1.7svn-r10861.
[thirdparty/cups.git] / systemv / cancel.c
index b2881ca1921c2993c051efccf3705ab2cb6ad6cb..9c95d23ab1d11b3b9061a7cb596d79cea5ede783 100644 (file)
@@ -3,7 +3,7 @@
  *
  *   "cancel" command for CUPS.
  *
- *   Copyright 2007-2011 by Apple Inc.
+ *   Copyright 2007-2013 by Apple Inc.
  *   Copyright 1997-2006 by Easy Software Products.
  *
  *   These coded instructions, statements, and computer programs are the
@@ -68,6 +68,7 @@ main(int  argc,                               /* I - Number of command-line arguments */
 
   for (i = 1; i < argc; i ++)
     if (argv[i][0] == '-' && argv[i][1])
+    {
       switch (argv[i][1])
       {
         case 'E' : /* Encrypt */
@@ -101,8 +102,7 @@ main(int  argc,                             /* I - Number of command-line arguments */
            break;
 
         case 'a' : /* Cancel all jobs */
-           purge = 1;
-           op    = IPP_PURGE_JOBS;
+           op = purge ? IPP_PURGE_JOBS : IPP_CANCEL_JOBS;
            break;
 
         case 'h' : /* Connect to host */
@@ -131,7 +131,7 @@ main(int  argc,                             /* I - Number of command-line arguments */
            break;
 
         case 'u' : /* Username */
-           op = IPP_PURGE_JOBS;
+           op = IPP_CANCEL_MY_JOBS;
 
            if (argv[i][2] != '\0')
              user = argv[i] + 2;
@@ -151,12 +151,20 @@ main(int  argc,                           /* I - Number of command-line arguments */
            }
            break;
 
+        case 'x' : /* Purge job(s) */
+           purge = 1;
+
+           if (op == IPP_CANCEL_JOBS)
+             op = IPP_PURGE_JOBS;
+           break;
+
        default :
            _cupsLangPrintf(stderr,
                            _("%s: Error - unknown option \"%c\"."),
                            argv[0], argv[i][1]);
            return (1);
       }
+    }
     else
     {
      /*
@@ -271,19 +279,22 @@ main(int  argc,                           /* I - Number of command-line arguments */
        ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME,
                      "requesting-user-name", NULL, user);
        ippAddBoolean(request, IPP_TAG_OPERATION, "my-jobs", 1);
+
+        if (op == IPP_CANCEL_JOBS)
+          op = IPP_CANCEL_MY_JOBS;
       }
       else
        ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME,
                      "requesting-user-name", NULL, cupsUser());
 
-      if (op == IPP_PURGE_JOBS)
+      if (purge)
        ippAddBoolean(request, IPP_TAG_OPERATION, "purge-jobs", purge);
 
      /*
       * Do the request and get back a response...
       */
 
-      if (op == IPP_PURGE_JOBS && (!user || _cups_strcasecmp(user, cupsUser())))
+      if (op == IPP_CANCEL_JOBS && (!user || _cups_strcasecmp(user, cupsUser())))
         response = cupsDoRequest(http, request, "/admin/");
       else
         response = cupsDoRequest(http, request, "/jobs/");