]> git.armaanb.net Git - mmenu.git/commitdiff
Add option to start on a specific day of the week
authorArmaan Bhojwani <me@armaanb.net>
Sun, 9 May 2021 22:26:59 +0000 (18:26 -0400)
committerArmaan Bhojwani <me@armaanb.net>
Sun, 9 May 2021 22:26:59 +0000 (18:26 -0400)
mmenu.1.scd
mmenu.c

index d7abf1b7e58e29e033d2da0e7c876ea9af87979d..1cdbc6d4f886f137c270f402bb99826f46a02853 100644 (file)
@@ -6,9 +6,12 @@ mmenu - view the Castle menu
 # SYNOPSIS
 *mmenu*
 
+*mmenu* [day of the week]
+
 # DESCRIPTION
-The *mmenu* utility uses Nobilis in order to display the castle menu. There is
-no real command line interface, and the GUI is programmed in Motif.
+*mmenu* uses Nobilis in order to display the castle menu. There isn't much of a
+command line interface, however, you can optionally specify the day of the
+week to open on. The GUI is programmed in Motif.
 
 # EXIT CODES
 *0*    all ok,++
diff --git a/mmenu.c b/mmenu.c
index 8691b45feabe662331bcc7de474ac174499f3477..d14f4a318b4608f2c13e28c205833ba130033bfa 100644 (file)
--- a/mmenu.c
+++ b/mmenu.c
@@ -1,6 +1,8 @@
 #include <stdlib.h>
 #include <stdio.h>
 #include <stdbool.h>
+#include <string.h>
+#include <ctype.h>
 
 #include <Xm/Xm.h>
 #include <Xm/Text.h>
@@ -153,11 +155,41 @@ ArgvToXmStringTable (int argc, char **argv)
        return new;
 }
 
+char *
+strLower(char *inp)
+{
+       char *tmp = calloc(strlen(inp), sizeof(char));
+       strcpy(tmp, inp);
+       for (int i = 0; tmp[i]; i++){
+               tmp[i] = tolower(tmp[i]);
+       }
+       return tmp;
+}
+
 int
 main(int argc, char *argv[])
 {
-       if (argc > 1) {
-               printf("Usage: %s\n", argv[0]);
+       // Parse CLI arguments
+       bool showUsage = false;
+       if (argc == 2) {
+               showUsage = true;
+               char *arg = strLower(argv[1]);
+
+               for (int i = 0; i < 5; i++) {
+                       char *day = strLower(days[i]);
+
+                       if (strcmp(day, arg) == 0) {
+                               showUsage = false;
+                               break;
+                       }
+
+                       free(day);
+               }
+               free(arg);
+       }
+
+       if (argc > 2 || showUsage) {
+               printf("Usage: %s [optional: day of the week]\n", argv[0]);
                exit(3);
        }
 
@@ -178,7 +210,7 @@ main(int argc, char *argv[])
 
        // Create text widget to display menu
        n = 0;
-       char *nl = getmenu("");
+       char *nl = getmenu((argv[1]) ? argv[1] : "");
        XtSetArg(args[n], XmNvalue, nl); n++;
        XtSetArg(args[n], XmNeditable, False); n++;
        XtSetArg(args[n], XmNcolumns, 80); n++;