From: Zdenek Dohnal Date: Thu, 23 Nov 2023 12:02:54 +0000 (+0100) Subject: lpstat.c: Implement successful filter for jobs X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ed973538a4e32909f4f3f38284f9dc089507a8cf;p=thirdparty%2Fcups.git lpstat.c: Implement successful filter for jobs --- diff --git a/doc/help/man-lpstat.html b/doc/help/man-lpstat.html index b694d5b9c6..cc06104f9f 100644 --- a/doc/help/man-lpstat.html +++ b/doc/help/man-lpstat.html @@ -83,7 +83,7 @@ Shows the ranking of print jobs. Specifies an alternate username.

-W which-jobs
-Specifies which jobs to show, "completed" or "not-completed" (the default). +Specifies which jobs to show, "all", "successful", "completed" or "not-completed" (the default). This option must appear before the -o option and/or any printer names, otherwise the default ("not-completed") value will be used in the request to the scheduler.

-a [printer(s)]
diff --git a/man/lpstat.1 b/man/lpstat.1 index dec52e2bd2..9197ed2820 100644 --- a/man/lpstat.1 +++ b/man/lpstat.1 @@ -82,7 +82,7 @@ Shows the ranking of print jobs. Specifies an alternate username. .TP 5 \fB\-W \fIwhich-jobs\fR -Specifies which jobs to show, "completed" or "not-completed" (the default). +Specifies which jobs to show, "all, "successful", "completed" or "not-completed" (the default). This option \fImust\fR appear before the \fI-o\fR option and/or any printer names, otherwise the default ("not-completed") value will be used in the request to the scheduler. .TP 5 \fB\-a \fR[\fIprinter(s)\fR] diff --git a/systemv/lpstat.c b/systemv/lpstat.c index f4a35e4e5a..4dae7358bc 100644 --- a/systemv/lpstat.c +++ b/systemv/lpstat.c @@ -141,16 +141,16 @@ main(int argc, /* I - Number of command-line arguments */ if (i >= argc) { - _cupsLangPrintf(stderr, _("%s: Error - need \"completed\", \"not-completed\", or \"all\" after \"-W\" option."), argv[0]); + _cupsLangPrintf(stderr, _("%s: Error - need \"completed\", \"not-completed\", \"successful\", or \"all\" after \"-W\" option."), argv[0]); usage(); } which = argv[i]; } - if (strcmp(which, "completed") && strcmp(which, "not-completed") && strcmp(which, "all")) + if (strcmp(which, "completed") && strcmp(which, "not-completed") && strcmp(which, "all") && strcmp(which, "successful")) { - _cupsLangPrintf(stderr, _("%s: Error - need \"completed\", \"not-completed\", or \"all\" after \"-W\" option."), argv[0]); + _cupsLangPrintf(stderr, _("%s: Error - need \"completed\", \"not-completed\", \"successful\", or \"all\" after \"-W\" option."), argv[0]); usage(); } break; @@ -1358,7 +1358,7 @@ show_jobs(const char *dests, /* I - Destinations */ NULL, cupsGetUser()); ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_KEYWORD, "which-jobs", - NULL, which); + NULL, !strcmp(which, "successful") ? "completed" : which); /* * Do the request and get back a response... @@ -1396,6 +1396,7 @@ show_jobs(const char *dests, /* I - Destinations */ if (!strcmp(which, "aborted") || !strcmp(which, "canceled") || + !strcmp(which, "successful") || !strcmp(which, "completed")) time_at = "time-at-completed"; else @@ -1476,7 +1477,11 @@ show_jobs(const char *dests, /* I - Destinations */ if (match_list(dests, dest) && match_list(users, username)) { - snprintf(temp, sizeof(temp), "%s-%d", dest, jobid); + if (!strcmp(which, "successful") && (!reasons || (reasons && + strcmp(reasons->name, "job-completed-successfully")))) + continue; + + snprintf(temp, sizeof(temp), "%s-%d", dest, jobid); _cupsStrDate(date, sizeof(date), jobtime); @@ -1557,7 +1562,7 @@ show_printers(const char *printers, /* I - Destinations */ int jobid; /* Job ID of current job */ char printer_uri[HTTP_MAX_URI], /* Printer URI */ - printer_state_time[255];/* Printer state time */ + printer_state_time[255];/* Printer state time */ _cups_globals_t *cg = _cupsGlobals(); /* Global data */ static const char *pattrs[] = /* Attributes we need for printers... */ {