in systemv/lpinfo.c [23:244]
static void device_cb(const char *device_class, const char *device_id,
const char *device_info,
const char *device_make_and_model,
const char *device_uri, const char *device_location,
void *user_data);
static int show_devices(int long_status, int timeout,
const char *include_schemes,
const char *exclude_schemes);
static int show_models(int long_status,
const char *device_id, const char *language,
const char *make_model, const char *product,
const char *include_schemes,
const char *exclude_schemes);
static void usage(void) _CUPS_NORETURN;
/*
* 'main()' - Parse options and show status information.
*/
int
main(int argc, /* I - Number of command-line arguments */
char *argv[]) /* I - Command-line arguments */
{
int i; /* Looping var */
int long_status; /* Long listing? */
const char *opt, /* Option pointer */
*device_id, /* 1284 device ID */
*language, /* Language */
*make_model, /* Make and model */
*product, /* Product */
*include_schemes, /* Schemes to include */
*exclude_schemes; /* Schemes to exclude */
int timeout; /* Device timeout */
_cupsSetLocale(argv);
long_status = 0;
device_id = NULL;
language = NULL;
make_model = NULL;
product = NULL;
include_schemes = CUPS_INCLUDE_ALL;
exclude_schemes = CUPS_EXCLUDE_NONE;
timeout = CUPS_TIMEOUT_DEFAULT;
for (i = 1; i < argc; i ++)
{
if (!strcmp(argv[i], "--device-id"))
{
i ++;
if (i < argc)
device_id = argv[i];
else
{
_cupsLangPuts(stderr, _("lpinfo: Expected 1284 device ID string after \"--device-id\"."));
usage();
}
}
else if (!strncmp(argv[i], "--device-id=", 12) && argv[i][12])
{
device_id = argv[i] + 12;
}
else if (!strcmp(argv[i], "--exclude-schemes"))
{
i ++;
if (i < argc)
exclude_schemes = argv[i];
else
{
_cupsLangPuts(stderr, _("lpinfo: Expected scheme list after \"--exclude-schemes\"."));
usage();
}
}
else if (!strncmp(argv[i], "--exclude-schemes=", 18) && argv[i][18])
{
exclude_schemes = argv[i] + 18;
}
else if (!strcmp(argv[i], "--help"))
usage();
else if (!strcmp(argv[i], "--include-schemes"))
{
i ++;
if (i < argc)
include_schemes = argv[i];
else
{
_cupsLangPuts(stderr, _("lpinfo: Expected scheme list after \"--include-schemes\"."));
usage();
}
}
else if (!strncmp(argv[i], "--include-schemes=", 18) && argv[i][18])
{
include_schemes = argv[i] + 18;
}
else if (!strcmp(argv[i], "--language"))
{
i ++;
if (i < argc)
language = argv[i];
else
{
_cupsLangPuts(stderr, _("lpinfo: Expected language after \"--language\"."));
usage();
}
}
else if (!strncmp(argv[i], "--language=", 11) && argv[i][11])
{
language = argv[i] + 11;
}
else if (!strcmp(argv[i], "--make-and-model"))
{
i ++;
if (i < argc)
make_model= argv[i];
else
{
_cupsLangPuts(stderr, _("lpinfo: Expected make and model after \"--make-and-model\"."));
usage();
}
}
else if (!strncmp(argv[i], "--make-and-model=", 17) && argv[i][17])
{
make_model = argv[i] + 17;
}
else if (!strcmp(argv[i], "--product"))
{
i ++;
if (i < argc)
product = argv[i];
else
{
_cupsLangPuts(stderr, _("lpinfo: Expected product string after \"--product\"."));
usage();
}
}
else if (!strncmp(argv[i], "--product=", 10) && argv[i][10])
{
product = argv[i] + 10;
}
else if (!strcmp(argv[i], "--timeout"))
{
i ++;
if (i < argc)
timeout = atoi(argv[i]);
else
{
_cupsLangPuts(stderr, _("lpinfo: Expected timeout after \"--timeout\"."));
usage();
}
}
else if (!strncmp(argv[i], "--timeout=", 10) && argv[i][10])
{
timeout = atoi(argv[i] + 10);
}
else if (argv[i][0] == '-')
{
for (opt = argv[i] + 1; *opt; opt ++)
{
switch (*opt)
{
case 'E' : /* Encrypt */
#ifdef HAVE_SSL
cupsSetEncryption(HTTP_ENCRYPT_REQUIRED);
#else
_cupsLangPrintf(stderr, _("%s: Sorry, no encryption support."), argv[0]);
#endif /* HAVE_SSL */
break;
case 'h' : /* Connect to host */
if (opt[1] != '\0')
{
cupsSetServer(opt + 1);
opt += strlen(opt) - 1;
}
else
{
i ++;
if (i >= argc)
{
_cupsLangPuts(stderr, _("Error: need hostname after \"-h\" option."));
usage();
}
cupsSetServer(argv[i]);
}
break;
case 'l' : /* Show long listing */
long_status = 1;
break;
case 'm' : /* Show models */
if (show_models(long_status, device_id, language, make_model, product, include_schemes, exclude_schemes))
return (1);
break;
case 'v' : /* Show available devices */
if (show_devices(long_status, timeout, include_schemes, exclude_schemes))
return (1);
break;
default :
_cupsLangPrintf(stderr, _("%s: Unknown option \"%c\"."), argv[0], *opt);
usage();
}
}
}
else
{
_cupsLangPrintf(stderr, _("%s: Unknown argument \"%s\"."), argv[0], argv[i]);
usage();
}
}
return (0);
}