commit d0c23a9

chld  ·  2026-07-13 16:54:39 +0000 UTC
parent 923b07f
add getopt
1 files changed,  +32, -2
M xl.c
M xl.c
+32, -2
 1@@ -6,6 +6,8 @@
 2 #include<stdlib.h>
 3 #include<string.h>
 4 
 5+#include<getopt.h>
 6+
 7 #include"rd.h"
 8 
 9 /*
10@@ -19,6 +21,36 @@ int main(int ac, char **av)
11 {
12 	int wi=80, hi=150, x=0, y=0;
13 
14+	char path[128];
15+	snprintf(path, sizeof path, "%s/%s", getenv("HOME"), ".xlrc");
16+
17+	int opt;
18+	while((opt=getopt(ac, av, "c:g:"))!= -1){
19+		switch(opt){
20+			case 'c':
21+				snprintf(path, sizeof path, "%s", optarg);
22+				break;
23+			case 'g': {
24+				const char *p=strchr(optarg, 'x');
25+				if (!p){
26+					fprintf(stderr, "inavlid geom (default: 80x150)\n");
27+					return 1;
28+				}
29+
30+				wi=atoi(optarg);
31+				hi=atoi(p+1);
32+				break;
33+			}
34+			case ':':
35+				fprintf(stderr, "-%c needs a argument!\n", optopt); return 1;
36+				break;
37+			case '?':
38+				fprintf(stderr, "unknown flag: -%c\n", optopt); return 1;
39+				break;
40+		}
41+	}
42+		
43+
44 	Display *d=XOpenDisplay(NULL);
45 	if(!d)
46 	{
47@@ -69,8 +101,6 @@ int main(int ac, char **av)
48 	int32_t lidx=0;
49 
50 	/* file reading */
51-	char path[128];
52-	snprintf(path, sizeof path, "%s/%s", getenv("HOME"), ".xlrc");
53 	char *prg=fbuf(path);
54 	if(!prg)
55 	{