commit a3ebd68

pnthr  ·  2026-07-18 10:06:03 +0000 UTC
parent d07e885
Make args parser more robust and fixed layer-shell interactivity bug
1 files changed,  +22, -20
+22, -20
 1@@ -1447,7 +1447,7 @@ emu_init(void)
 2 		zwlr_layer_surface_v1_set_anchor(emu_layer_surf,
 3 			ZWLR_LAYER_SURFACE_V1_ANCHOR_TOP | ZWLR_LAYER_SURFACE_V1_ANCHOR_LEFT);
 4 		zwlr_layer_surface_v1_set_margin(emu_layer_surf, layer_shell_y, 0, 0, layer_shell_x);
 5-		zwlr_layer_surface_v1_set_keyboard_interactivity(emu_layer_surf, 1); 
 6+		zwlr_layer_surface_v1_set_keyboard_interactivity(emu_layer_surf, 2); 
 7 		wl_surface_commit(emu_surf);
 8 	} else if(emu_wm) {
 9 		xdg_wm_base_add_listener(emu_wm, &wm_listener, NULL);
10@@ -1513,26 +1513,28 @@ int
11 main(int argc, char **argv)
12 {
13 	int i = 1;
14-	if(argc == 2 && argv[1][0] == '-' && argv[1][1] == 'v')
15-		return !fprintf(stdout, "%s - Varvara Emulator(79K), 10 Jul 2026.\n", argv[0]);
16-	else if(argc == 1)
17+	if(argc == 1)
18 		return !fprintf(stdout, "usage: %s [-v] file.rom [args..]\n", argv[0]);
19-	
20-	if(argv[1][0] == '-' && argv[1][1] == 'l') {
21-		if(argc < 5)
22-            		return !fprintf(stdout, "usage: %s [-l x y] file.rom [args..]\n", argv[0]);
23-
24-		use_layer_shell = 1;
25-		layer_shell_x = atoi(argv[2]);
26-        	layer_shell_y = atoi(argv[3]);
27-		i+=3;
28-
29-		if(i >= argc)
30-			return !fprintf(stdout, "usage: %s [-l x y] file.rom [args..]\n", argv[0]);
31-		if(!system_boot(argv[i++], argc > i))
32-			return !fprintf(stdout, "Could not load %s.\n", argv[i - 1]);
33-	} else if(!system_boot(argv[i++], argc > 2))
34-		return !fprintf(stdout, "Could not load %s.\n", argv[i - 1]);
35+	while(i < argc && argv[i][0] == '-') {
36+		if(!strcmp(argv[i], "-v"))
37+			return !fprintf(stdout, "%s - Varvara Emulator(79K), 10 Jul 2026.\n", argv[0]);
38+		if(!strcmp(argv[i], "--")){ i++; break; }
39+		if(!strcmp(argv[i], "-l")) {
40+			if(i + 3 >= argc)
41+				return !fprintf(stdout, "usage: %s [-l x y] file.rom [args..]\n", argv[0]);
42+			use_layer_shell = 1;
43+			layer_shell_x = atoi(argv[++i]);
44+			layer_shell_y = atoi(argv[++i]);
45+			i++;
46+			continue;
47+		}
48+		return !fprintf(stdout, "unknown flag: %s\n", argv[i]);
49+	}
50+	if(i >= argc)
51+		return !fprintf(stdout, "usage: %s [-v] file.rom [args..]\n", argv[0]);
52+	if(!system_boot(argv[i], argc > i + 1))
53+		return !fprintf(stdout, "Could not load %s.\n", argv[i]);
54+	i++;
55 	screen_resize(WIDTH, HEIGHT);
56 	if(uxn_eval(0x100) && console_vector) {
57 		for(; i < argc; i++) {