/*
- * "$Id: lpq.c 5926 2006-09-05 20:45:47Z mike $"
+ * "$Id: lpq.c 7460 2008-04-16 02:19:54Z mike $"
*
- * "lpq" command for the Common UNIX Printing System (CUPS).
+ * "lpq" command for CUPS.
*
+ * Copyright 2007-2011 by Apple Inc.
* Copyright 1997-2006 by Easy Software Products.
*
* These coded instructions, statements, and computer programs are the
- * property of Easy Software Products and are protected by Federal
- * copyright law. Distribution and use rights are outlined in the file
- * "LICENSE.txt" which should have been included with this file. If this
- * file is missing or damaged please contact Easy Software Products
- * at:
- *
- * Attn: CUPS Licensing Information
- * Easy Software Products
- * 44141 Airport View Drive, Suite 204
- * Hollywood, Maryland 20636 USA
- *
- * Voice: (301) 373-9600
- * EMail: cups-info@cups.org
- * WWW: http://www.cups.org
+ * property of Apple Inc. and are protected by Federal copyright
+ * law. Distribution and use rights are outlined in the file "LICENSE.txt"
+ * which should have been included with this file. If this file is
+ * file is missing or damaged, see the license at "http://www.cups.org/".
*
* Contents:
*
* Include necessary headers...
*/
-#include <stdio.h>
-#include <stdlib.h>
-#include <cups/string.h>
-#include <cups/cups.h>
-#include <cups/i18n.h>
-#include <cups/debug.h>
+#include <cups/cups-private.h>
/*
if (http)
httpEncryption(http, HTTP_ENCRYPT_REQUIRED);
#else
- _cupsLangPrintf(stderr,
- _("%s: Sorry, no encryption support compiled in!\n"),
+ _cupsLangPrintf(stderr, _("%s: Sorry, no encryption support."),
argv[0]);
#endif /* HAVE_SSL */
break;
{
_cupsLangPrintf(stderr,
_("%s: Error - expected username after "
- "\'-U\' option!\n"),
- argv[0]);
+ "\"-U\" option."), argv[0]);
return (1);
}
cupsSetUser(argv[i]);
}
break;
-
+
case 'P' : /* Printer */
if (argv[i][2])
dest = argv[i] + 2;
{
httpClose(http);
cupsFreeDests(num_dests, dests);
-
+
usage();
}
{
if (instance)
_cupsLangPrintf(stderr,
- _("%s: Error - unknown destination \"%s/%s\"!\n"),
+ _("%s: Error - unknown destination \"%s/%s\"."),
argv[0], dest, instance);
else
- _cupsLangPrintf(stderr,
- _("%s: Unknown destination \"%s\"!\n"),
+ _cupsLangPrintf(stderr, _("%s: Unknown destination \"%s\"."),
argv[0], dest);
return (1);
{
_cupsLangPrintf(stderr,
_("%s: Error - expected hostname after "
- "\'-h\' option!\n"),
- argv[0]);
+ "\"-h\" option."), argv[0]);
return (1);
}
else
if (dest && !cupsGetDest(dest, NULL, num_dests, dests))
_cupsLangPrintf(stderr,
- _("%s: error - %s environment variable names "
- "non-existent destination \"%s\"!\n"),
- argv[0], val, dest);
+ _("%s: Error - %s environment variable names "
+ "non-existent destination \"%s\"."), argv[0], val,
+ dest);
else
_cupsLangPrintf(stderr,
- _("%s: error - no default destination available.\n"),
+ _("%s: Error - no default destination available."),
argv[0]);
httpClose(http);
cupsFreeDests(num_dests, dests);
if (http == NULL)
{
- _cupsLangPrintf(stderr, _("%s: Unable to connect to server\n"), command);
+ _cupsLangPrintf(stderr, _("%s: Unable to connect to server."), command);
exit(1);
}
}
char resource[1024]; /* Resource string */
char rankstr[255]; /* Rank string */
char namestr[1024]; /* Job name string */
- static const char *ranks[10] = /* Ranking strings */
+ static const char * const jobattrs[] =/* Job attributes we want to see */
+ {
+ "copies",
+ "job-id",
+ "job-k-octets",
+ "job-name",
+ "job-originating-user-name",
+ "job-printer-uri",
+ "job-priority",
+ "job-state"
+ };
+ static const char * const ranks[10] = /* Ranking strings */
{
"th",
"st",
};
- DEBUG_printf(("show_jobs(%08x, %08x, %08x, %d, %d)\n", http, dest, user, id,
- longstatus));
+ DEBUG_printf(("show_jobs(http=%p, dest=%p, user=%p, id=%d, longstatus%d)\n",
+ http, dest, user, id, longstatus));
if (http == NULL)
return (0);
* attributes-charset
* attributes-natural-language
* job-uri or printer-uri
+ * requested-attributes
*/
request = ippNewRequest(id ? IPP_GET_JOB_ATTRIBUTES : IPP_GET_JOBS);
- if (dest == NULL)
+ if (id)
{
- if (id)
- sprintf(resource, "ipp://localhost/jobs/%d", id);
- else
- strcpy(resource, "ipp://localhost/jobs");
-
+ snprintf(resource, sizeof(resource), "ipp://localhost/jobs/%d", id);
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "job-uri",
NULL, resource);
}
- else
+ else if (dest)
{
httpAssembleURIf(HTTP_URI_CODING_ALL, resource, sizeof(resource), "ipp",
NULL, "localhost", 0, "/printers/%s", dest);
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "printer-uri",
NULL, resource);
}
+ else
+ ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "printer-uri",
+ NULL, "ipp://localhost/");
if (user)
{
ippAddBoolean(request, IPP_TAG_OPERATION, "my-jobs", 1);
}
+ ippAddStrings(request, IPP_TAG_OPERATION, IPP_TAG_KEYWORD,
+ "requested-attributes",
+ (int)(sizeof(jobattrs) / sizeof(jobattrs[0])), NULL, jobattrs);
+
/*
* Do the request and get back a response...
*/
{
if (response->request.status.status_code > IPP_OK_CONFLICT)
{
- _cupsLangPrintf(stderr, "%s: %s\n", command, cupsLastErrorString());
+ _cupsLangPrintf(stderr, "%s: %s", command, cupsLastErrorString());
ippDelete(response);
return (0);
}
if (!longstatus && jobcount == 0)
#ifdef __osf__
_cupsLangPuts(stdout,
+ /* TRANSLATORS: Pri is job priority. */
_("Rank Owner Pri Job Files"
- " Total Size\n"));
+ " Total Size"));
#else
_cupsLangPuts(stdout,
_("Rank Owner Job File(s)"
- " Total Size\n"));
+ " Total Size"));
#endif /* __osf__ */
jobcount ++;
else
strlcpy(namestr, jobname, sizeof(namestr));
- _cupsLangPrintf(stdout, _("%s: %-33.33s [job %d localhost]\n"),
+ _cupsLangPrintf(stdout, _("%s: %-33.33s [job %d localhost]"),
jobuser, rankstr, jobid);
- _cupsLangPrintf(stdout, _(" %-39.39s %.0f bytes\n"),
+ _cupsLangPrintf(stdout, _(" %-39.39s %.0f bytes"),
namestr, 1024.0 * jobsize);
}
else
#ifdef __osf__
_cupsLangPrintf(stdout,
- _("%-6s %-10.10s %-4d %-10d %-27.27s %.0f bytes\n"),
+ _("%-6s %-10.10s %-4d %-10d %-27.27s %.0f bytes"),
rankstr, jobuser, jobpriority, jobid, jobname,
1024.0 * jobsize);
#else
_cupsLangPrintf(stdout,
- _("%-7s %-7.7s %-7d %-31.31s %.0f bytes\n"),
+ _("%-7s %-7.7s %-7d %-31.31s %.0f bytes"),
rankstr, jobuser, jobid, jobname, 1024.0 * jobsize);
#endif /* __osf */
}
else
{
- _cupsLangPrintf(stderr, "%s: %s\n", command, cupsLastErrorString());
+ _cupsLangPrintf(stderr, "%s: %s", command, cupsLastErrorString());
return (0);
}
if (jobcount == 0)
- _cupsLangPuts(stdout, _("no entries\n"));
+ _cupsLangPuts(stdout, _("no entries"));
return (jobcount);
}
{
if (response->request.status.status_code > IPP_OK_CONFLICT)
{
- _cupsLangPrintf(stderr, "%s: %s\n", command, cupsLastErrorString());
+ _cupsLangPrintf(stderr, "%s: %s", command, cupsLastErrorString());
ippDelete(response);
return;
}
switch (state)
{
case IPP_PRINTER_IDLE :
- _cupsLangPrintf(stdout, _("%s is ready\n"), dest);
+ _cupsLangPrintf(stdout, _("%s is ready"), dest);
break;
case IPP_PRINTER_PROCESSING :
- _cupsLangPrintf(stdout, _("%s is ready and printing\n"),
+ _cupsLangPrintf(stdout, _("%s is ready and printing"),
dest);
break;
case IPP_PRINTER_STOPPED :
- _cupsLangPrintf(stdout, _("%s is not ready\n"), dest);
+ _cupsLangPrintf(stdout, _("%s is not ready"), dest);
break;
}
ippDelete(response);
}
else
- _cupsLangPrintf(stderr, "%s: %s\n", command, cupsLastErrorString());
+ _cupsLangPrintf(stderr, "%s: %s", command, cupsLastErrorString());
}
{
_cupsLangPuts(stderr,
_("Usage: lpq [-P dest] [-U username] [-h hostname[:port]] "
- "[-l] [+interval]\n"));
+ "[-l] [+interval]"));
exit(1);
}
/*
- * End of "$Id: lpq.c 5926 2006-09-05 20:45:47Z mike $".
+ * End of "$Id: lpq.c 7460 2008-04-16 02:19:54Z mike $".
*/