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++) {