Skip to content

Commit 9f47c81

Browse files
committed
use keymap rom and keymap default
Signed-off-by: Michel-FK <[email protected]>
1 parent 3dd25b6 commit 9f47c81

File tree

1 file changed

+16
-68
lines changed

1 file changed

+16
-68
lines changed

opkrun.c

Lines changed: 16 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -348,16 +348,19 @@ int main(int argc, char **argv)
348348
* with the filenames passed as parameter of opkrun */
349349
char **ptr;
350350
unsigned int arg;
351-
for (arg = 0, ptr = params.exec; *ptr && arg < NB_PARAMS_MAX; ptr++, arg++) {
351+
int rom_arg;
352+
for (arg = 0, rom_arg = -1, ptr = params.exec; *ptr && arg < NB_PARAMS_MAX; ptr++, arg++) {
352353
if (!strcmp("%f", *ptr)) {
353354
if (!opk_argc) {
354355
fprintf(stderr, "WARNING: OPK requires a file as parameter, but none was given\n");
355356
} else {
357+
rom_arg = arg;
356358
args[arg] = realpath(*opk_argv++, NULL);
357359
if (--opk_argc)
358360
fprintf(stderr, "WARNING: OPK requires only one file as parameter\n");
359361
}
360362
} else if (!strcmp("%F", *ptr)) {
363+
rom_arg = arg;
361364
while (opk_argc && arg < NB_PARAMS_MAX) {
362365
args[arg++] = realpath(*opk_argv++, NULL);
363366
opk_argc--;
@@ -367,11 +370,13 @@ int main(int argc, char **argv)
367370
if (!opk_argc) {
368371
fprintf(stderr, "WARNING: OPK requires an URL as parameter, but none was given\n");
369372
} else {
373+
rom_arg = arg;
370374
args[arg] = get_url(*opk_argv++);
371375
if (--opk_argc)
372376
fprintf(stderr, "WARNING: OPK requires only one URL as parameter\n");
373377
}
374378
} else if (!strcmp("%U", *ptr)) {
379+
rom_arg = arg;
375380
while (opk_argc && arg < NB_PARAMS_MAX) {
376381
args[arg++] = get_url(*opk_argv++);
377382
opk_argc--;
@@ -422,69 +427,15 @@ int main(int argc, char **argv)
422427
if (params.needs_downscaling)
423428
enable_downscaling();
424429

425-
/* Apply keymaps if found */
426-
char *dirc = strdup(args[arg - 1]);
427-
char *dname = dirname(dirc);
428-
char *basec = strdup(args[arg - 1]);
429-
char *bname = basename(basec);
430-
char *p, command[PATH_MAX];
431-
FILE *fp;
432-
433-
/* Initialize keymap command */
434-
strcpy(command, "keymap ");
435-
436-
/* Compute basename without suffix */
437-
p = strrchr(bname, '.');
438-
if (p) {
439-
*p = '\0';
430+
/* Initialize keymap rom command */
431+
char command[PATH_MAX];
432+
strcpy(command, "keymap rom");
433+
if (rom_arg >= 0) {
434+
strcat(command, " ");
435+
strncat(command, args[rom_arg], PATH_MAX - 1);
440436
}
441-
442-
/* Apply console (directory) keymap first, if any */
443-
sprintf(&command[7], "%s/default_config.key", dname);
444-
if (!access(&command[7], R_OK)) {
445-
fp = popen(command, "r");
446-
if (fp != NULL) {
447-
printf("Applied console keymap command: \"%s\"\n", command);
448-
pclose(fp);
449-
} else {
450-
fprintf(stderr, "WARNING: Cannot apply console keymap command: \"%s\"\n",
451-
command);
452-
}
453-
}
454-
455-
/* Then apply OPk keymap, if any */
456-
if (params.keymap != NULL) {
457-
if (params.keymap[0] == '/') {
458-
sprintf(&command[7], params.keymap);
459-
} else {
460-
sprintf(&command[7], "%s/%s", OPK_MOUNTPOINT, params.keymap);
461-
}
462-
if (!access(&command[7], R_OK)) {
463-
fp = popen(command, "r");
464-
if (fp != NULL) {
465-
printf("Applied FK-Keymap command: \"%s\"\n", command);
466-
pclose(fp);
467-
} else {
468-
fprintf(stderr, "WARNING: Cannot apply FK-Keymap command: \"%s\"\n",
469-
command);
470-
}
471-
}
472-
}
473-
474-
/* Eventually apply game keymap, if any */
475-
sprintf(&command[7], "%s/%s.key", dname, bname);
476-
if (!access(&command[7], R_OK)) {
477-
fp = popen(command, "r");
478-
if (fp != NULL) {
479-
printf("Applied game keymap command: \"%s\"\n", command);
480-
pclose(fp);
481-
} else {
482-
fprintf(stderr, "WARNING: Cannot apply game keymap command: \"%s\"\n",
483-
command);
484-
}
485-
}
486-
free(dirc);
487-
free(basec);
437+
printf("Applied keymap rom command: \"%s\"\n", command);
438+
system(command);
488439

489440
/* Launch executable here */
490441
pid_t son = fork();
@@ -497,7 +448,7 @@ int main(int argc, char **argv)
497448
execvp(args[0], args);
498449
}
499450

500-
fp = fopen("/var/run/funkey.pid", "w");
451+
FILE *fp = fopen("/var/run/funkey.pid", "w");
501452
if (fp != NULL) {
502453
fprintf(fp, "%d\n", son);
503454
fclose(fp);
@@ -511,10 +462,7 @@ int main(int argc, char **argv)
511462
chdir("/");
512463

513464
/* Restore default keymap */
514-
fp = popen("keymap reset", "r");
515-
if (fp != NULL) {
516-
pclose(fp);
517-
}
465+
system("keymap default");
518466

519467
/** Multiple trials to unmount OPK_MOUNTPOINT */
520468
#define MAX_UMOUNT_TRIALS 100

0 commit comments

Comments
 (0)