static void do_range(xcb_connection_t *c, const char *format, char *range) { int mask; long low, high; mask = parse_range (range, &low, &high); list_atoms (c, format, mask, low, high); }
int main(int argc, char *argv[]) { char *displayname = NULL; const char *format = "%lu\t%s"; int i, doit; int didit = 0; xcb_connection_t *c = NULL; ProgramName = argv[0]; for (doit = 0; doit < 2; doit++) { /* pre-parse to get display */ for (i = 1; i < argc; i++) { char *arg = argv[i]; if (arg[0] == '-') { switch (arg[1]) { case 'd': /* -display dpy */ if (++i >= argc) usage (); if (!doit) displayname = argv[i]; continue; case 'f': /* -format string */ if (++i >= argc) usage (); if (doit) format = argv[i]; continue; case 'r': /* -range num-[num] */ if (++i >= argc) usage (); if (doit) { do_range (c, format, argv[i]); didit = 1; } continue; case 'n': /* -name string */ if (++i >= argc) usage (); if (doit) { do_name (c, format, argv[i]); didit = 1; } continue; } } usage (); } if (!doit) { DisplayString = displayname; if (!DisplayString) DisplayString = getenv("DISPLAY"); if (!DisplayString) DisplayString = ""; c = xcb_connect(displayname, NULL); if (!c || xcb_connection_has_error(c)) { fprintf (stderr, "%s: unable to open display \"%s\"\n", ProgramName, DisplayString); exit (1); } } else if (!didit) /* no options, default is list all */ list_atoms(c, format, 0, 0, 0); } xcb_disconnect(c); exit (0); }
int main(int argc, char *argv[]) { char *displayname = NULL; const char *format = "%lu\t%s"; int i, doit; int didit = 0; xcb_connection_t *c = NULL; ProgramName = argv[0]; for (doit = 0; doit < 2; doit++) { /* pre-parse to get display */ for (i = 1; i < argc; i++) { char *arg = argv[i]; if (arg[0] == '-') { switch (arg[1]) { case 'd': /* -display dpy */ if (++i >= argc) usage ("-display requires an argument"); if (!doit) displayname = argv[i]; continue; case 'f': /* -format string */ if (++i >= argc) usage ("-format requires an argument"); if (doit) format = argv[i]; continue; case 'r': /* -range num-[num] */ if (++i >= argc) usage ("-range requires an argument"); if (doit) { do_range (c, format, argv[i]); didit = 1; } continue; case 'n': /* -name string */ if (++i >= argc) usage ("-name requires an argument"); if (doit) { do_name (c, format, argv[i]); didit = 1; } continue; case 'v': if (strcmp(arg, "-version") == 0) { puts(PACKAGE_STRING); exit(0); } /* else FALLTHROUGH to unrecognized arg case below */ } } fprintf (stderr, "%s: unrecognized argument %s\n\n", ProgramName, arg); usage (NULL); } if (!doit) { DisplayString = displayname; if (!DisplayString) DisplayString = getenv("DISPLAY"); if (!DisplayString) DisplayString = ""; c = xcb_connect(displayname, NULL); if (!c || xcb_connection_has_error(c)) { fprintf (stderr, "%s: unable to open display \"%s\"\n", ProgramName, DisplayString); exit (1); } } else if (!didit) /* no options, default is list all */ list_atoms(c, format, 0, 0, 0); } xcb_disconnect(c); exit (0); }