static void device_cb()

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);
}