+static char *(*fstrstr)(const char *, const char *) = strstr;
+
+int
+main(int argc, char *argv[]) {
+ Bool fast = False;
+ int i;
+
+ for(i = 1; i < argc; i++)
+ /* single flags */
+ if(!strcmp(argv[i], "-v")) {
+ puts("dmenu-"VERSION", © 2006-2011 dmenu engineers, see LICENSE for details");
+ exit(EXIT_SUCCESS);
+ }
+ else if(!strcmp(argv[i], "-b"))
+ topbar = False;
+ else if(!strcmp(argv[i], "-f"))
+ fast = True;
+ else if(!strcmp(argv[i], "-i")) {
+ fstrncmp = strncasecmp;
+ fstrstr = cistrstr;
+ }
+ else if(i+1 == argc)
+ usage();
+ /* double flags */
+ else if(!strcmp(argv[i], "-l"))
+ lines = atoi(argv[++i]);
+ else if(!strcmp(argv[i], "-p"))
+ prompt = argv[++i];
+ else if(!strcmp(argv[i], "-fn"))
+ font = argv[++i];
+ else if(!strcmp(argv[i], "-nb"))
+ normbgcolor = argv[++i];
+ else if(!strcmp(argv[i], "-nf"))
+ normfgcolor = argv[++i];
+ else if(!strcmp(argv[i], "-sb"))
+ selbgcolor = argv[++i];
+ else if(!strcmp(argv[i], "-sf"))
+ selfgcolor = argv[++i];
+ else
+ usage();
+
+ dc = initdc();
+ initfont(dc, font);
+
+ if(fast) {
+ grabkeyboard();
+ readstdin();
+ }
+ else {
+ readstdin();
+ grabkeyboard();
+ }
+ setup();
+ run();
+
+ return EXIT_FAILURE; /* unreachable */
+}