use getopt for option parsing
This commit is contained in:
parent
9b89836e73
commit
57ba1d5ffe
164
dunst.c
164
dunst.c
@ -5,6 +5,7 @@
|
|||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
#include <getopt.h>
|
||||||
#include <X11/Xlib.h>
|
#include <X11/Xlib.h>
|
||||||
#include <X11/Xatom.h>
|
#include <X11/Xatom.h>
|
||||||
#include <X11/Xutil.h>
|
#include <X11/Xutil.h>
|
||||||
@ -516,94 +517,121 @@ show_win(void) {
|
|||||||
int
|
int
|
||||||
main(int argc, char *argv[]) {
|
main(int argc, char *argv[]) {
|
||||||
|
|
||||||
int i;
|
int c;
|
||||||
|
|
||||||
now = time(&now);
|
now = time(&now);
|
||||||
dc = initdc();
|
dc = initdc();
|
||||||
|
|
||||||
for(i = 1; i < argc; i++) {
|
while(1) {
|
||||||
/* switches */
|
static struct option long_options[] = {
|
||||||
if(!strcmp(argv[i], "-b")) {
|
{"help", no_argument, NULL, 'h'},
|
||||||
geometry.mask |= YNegative;
|
{"fn", required_argument, NULL, 'F'},
|
||||||
}
|
{"nb", required_argument, NULL, 'n'},
|
||||||
if(!strcmp(argv[i], "-v")) {
|
{"nf", required_argument, NULL, 'N'},
|
||||||
verbose = True;
|
{"lb", required_argument, NULL, 'l'},
|
||||||
}
|
{"lf", required_argument, NULL, 'L'},
|
||||||
else if(!strcmp(argv[i], "-h") || !strcmp(argv[i], "--help"))
|
{"cb", required_argument, NULL, 'c'},
|
||||||
usage(EXIT_SUCCESS);
|
{"cf", required_argument, NULL, 'C'},
|
||||||
|
{"to", required_argument, NULL, 't'},
|
||||||
|
{"lto", required_argument, NULL, '0'},
|
||||||
|
{"nto", required_argument, NULL, '1'},
|
||||||
|
{"cto", required_argument, NULL, '2'},
|
||||||
|
{"mon", required_argument, NULL, 'm'},
|
||||||
|
{"format", required_argument, NULL, 'f'},
|
||||||
|
{"key", required_argument, NULL, 'k'},
|
||||||
|
{"geometry", required_argument, NULL, 'g'},
|
||||||
|
{"mod", required_argument, NULL, 'M'},
|
||||||
|
{0,0,0,0}
|
||||||
|
};
|
||||||
|
|
||||||
/* options */
|
|
||||||
else if(i == argc-1) {
|
int option_index = 0;
|
||||||
fprintf(stderr, "Option needs an argument\n");
|
|
||||||
usage(1);
|
c = getopt_long_only(argc, argv, "bh", long_options, &option_index);
|
||||||
|
|
||||||
|
if(c == -1) {
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
else if(!strcmp(argv[i], "-fn"))
|
|
||||||
font = argv[++i];
|
switch(c)
|
||||||
else if(!strcmp(argv[i], "-nb"))
|
{
|
||||||
normbgcolor = argv[++i];
|
case 0:
|
||||||
else if(!strcmp(argv[i], "-nf"))
|
break;
|
||||||
normfgcolor = argv[++i];
|
case 'h':
|
||||||
else if(!strcmp(argv[i], "-lb"))
|
usage(EXIT_SUCCESS);
|
||||||
lowbgcolor = argv[++i];
|
break;
|
||||||
else if(!strcmp(argv[i], "-lf"))
|
case 'F':
|
||||||
lowfgcolor = argv[++i];
|
font = optarg;
|
||||||
else if(!strcmp(argv[i], "-cb"))
|
break;
|
||||||
critbgcolor = argv[++i];
|
case 'n':
|
||||||
else if(!strcmp(argv[i], "-cf"))
|
normbgcolor = optarg;
|
||||||
critfgcolor = argv[++i];
|
break;
|
||||||
else if(!strcmp(argv[i], "-to")) {
|
case 'N':
|
||||||
timeouts[0] = atoi(argv[++i]);
|
normfgcolor = optarg;
|
||||||
|
break;
|
||||||
|
case 'l':
|
||||||
|
lowbgcolor = optarg;
|
||||||
|
break;
|
||||||
|
case 'L':
|
||||||
|
lowfgcolor = optarg;
|
||||||
|
break;
|
||||||
|
case 'c':
|
||||||
|
critbgcolor = optarg;
|
||||||
|
break;
|
||||||
|
case 'C':
|
||||||
|
critfgcolor = optarg;
|
||||||
|
break;
|
||||||
|
case 't':
|
||||||
|
timeouts[0] = atoi(optarg);
|
||||||
timeouts[1] = timeouts[0];
|
timeouts[1] = timeouts[0];
|
||||||
}
|
break;
|
||||||
else if(!strcmp(argv[i], "-lto"))
|
case '0':
|
||||||
timeouts[0] = atoi(argv[++i]);
|
timeouts[0] = atoi(optarg);
|
||||||
else if(!strcmp(argv[i], "-nto"))
|
break;
|
||||||
timeouts[1] = atoi(argv[++i]);
|
case '1':
|
||||||
else if(!strcmp(argv[i], "-cto"))
|
timeouts[1] = atoi(optarg);
|
||||||
timeouts[2] = atoi(argv[++i]);
|
break;
|
||||||
else if(!strcmp(argv[i], "-mon")) {
|
case '2':
|
||||||
scr.scr = atoi(argv[++i]);
|
timeouts[2] = atoi(optarg);
|
||||||
}
|
break;
|
||||||
else if(!strcmp(argv[i], "-format")) {
|
case 'm':
|
||||||
format = argv[++i];
|
scr.scr = atoi(optarg);
|
||||||
}
|
break;
|
||||||
else if(!strcmp(argv[i], "-key")) {
|
case 'f':
|
||||||
key = XStringToKeysym(argv[i+1]);
|
format = optarg;
|
||||||
if(key == NoSymbol) {
|
break;
|
||||||
fprintf(stderr, "Unable to grab key: %s.\n", argv[i+1]);
|
case 'k':
|
||||||
exit(EXIT_FAILURE);
|
key = XStringToKeysym(optarg);
|
||||||
}
|
break;
|
||||||
i++;
|
case 'g':
|
||||||
}
|
geometry.mask = XParseGeometry(optarg,
|
||||||
else if(!strcmp(argv[i], "-geometry")) {
|
&geometry.x, &geometry.y,
|
||||||
geometry.mask = XParseGeometry(argv[++i], &geometry.x, &geometry.y, &geometry.w, &geometry.h);
|
&geometry.w, &geometry.h);
|
||||||
}
|
break;
|
||||||
else if(!strcmp(argv[i], "-mod")) {
|
case 'M':
|
||||||
if(!strcmp(argv[i+1], "ctrl")) {
|
if(!strcmp(optarg, "ctrl")) {
|
||||||
mask |= ControlMask;
|
mask |= ControlMask;
|
||||||
}
|
}
|
||||||
else if(!strcmp(argv[i+1], "shift")) {
|
else if(!strcmp(optarg, "mod1")) {
|
||||||
mask |= ShiftMask;
|
|
||||||
}
|
|
||||||
else if(!strcmp(argv[i+1], "mod1")) {
|
|
||||||
mask |= Mod1Mask;
|
mask |= Mod1Mask;
|
||||||
}
|
}
|
||||||
else if(!strcmp(argv[i+1], "mod2")) {
|
else if(!strcmp(optarg, "mod2")) {
|
||||||
mask |= Mod2Mask;
|
mask |= Mod2Mask;
|
||||||
}
|
}
|
||||||
else if(!strcmp(argv[i+1], "mod3")) {
|
else if(!strcmp(optarg, "mod3")) {
|
||||||
mask |= Mod3Mask;
|
mask |= Mod3Mask;
|
||||||
}
|
}
|
||||||
else if(!strcmp(argv[i+1], "mod4")) {
|
else if(!strcmp(optarg, "mod4")) {
|
||||||
mask |= Mod4Mask;
|
mask |= Mod4Mask;
|
||||||
} else {
|
} else {
|
||||||
fprintf(stderr, "Unable to find mask: %s\n", argv[i+1]);
|
fprintf(stderr, "Unable to find mask: %s\n", optarg);
|
||||||
fprintf(stderr, "See manpage for list of available masks\n");
|
fprintf(stderr, "See manpage for list of available masks\n");
|
||||||
}
|
}
|
||||||
i++;
|
break;
|
||||||
}
|
default:
|
||||||
else
|
|
||||||
usage(EXIT_FAILURE);
|
usage(EXIT_FAILURE);
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
initdbus();
|
initdbus();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user