#include <cups/cups-private.h>
int
main(int argc,
char *argv[])
{
int i;
int job_id;
const char *name;
char *instance,
*opt;
cups_dest_t *dest,
*defdest;
int did_cancel;
_cupsSetLocale(argv);
did_cancel = 0;
defdest = cupsGetNamedDest(CUPS_HTTP_DEFAULT, NULL, NULL);
name = defdest ? defdest->name : NULL;
for (i = 1; i < argc; i ++)
{
if (argv[i][0] == '-' && argv[i][1] != '\0')
{
for (opt = argv[i] + 1; *opt; opt ++)
{
switch (*opt)
{
case 'E' :
#ifdef HAVE_SSL
cupsSetEncryption(HTTP_ENCRYPT_REQUIRED);
#else
_cupsLangPrintf(stderr, _("%s: Sorry, no encryption support."), argv[0]);
#endif
break;
case 'P' :
if (opt[1] != '\0')
{
name = opt + 1;
opt += strlen(opt) - 1;
}
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' :
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' :
if (opt[1] != '\0')
{
cupsSetServer(opt + 1);
opt += strlen(opt) - 1;
}
else
{
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);
defdest = cupsGetNamedDest(CUPS_HTTP_DEFAULT, NULL, NULL);
name = defdest ? defdest->name : NULL;
break;
default :
_cupsLangPrintf(stderr, _("%s: Error - unknown option \"%c\"."), argv[0], *opt);
goto error;
}
}
}
else
{
if ((dest = cupsGetNamedDest(CUPS_HTTP_DEFAULT, argv[i], NULL)) != NULL)
cupsFreeDests(1, dest);
if (dest)
{
name = argv[i];
job_id = 0;
}
else if (isdigit(argv[i][0] & 255))
{
name = NULL;
job_id = atoi(argv[i]);
}
else if (!strcmp(argv[i], "-"))
{
job_id = -1;
}
else
{
_cupsLangPrintf(stderr, _("%s: Error - unknown destination \"%s\"."),
argv[0], argv[i]);
goto error;
}
if (cupsCancelJob2(CUPS_HTTP_DEFAULT, name, job_id, 0) != IPP_OK)
{
_cupsLangPrintf(stderr, "%s: %s", argv[0], cupsLastErrorString());
goto error;
}
did_cancel = 1;
}
}
if (!did_cancel && cupsCancelJob2(CUPS_HTTP_DEFAULT, name, 0, 0) != IPP_OK)
{
_cupsLangPrintf(stderr, "%s: %s", argv[0], cupsLastErrorString());
goto error;
}
if (defdest)
cupsFreeDests(1, defdest);
return (0);
error:
if (defdest)
cupsFreeDests(1, defdest);
return (1);
}