- if (command == NULL || command[0] == '\0')
- goto err_unknown;
-
- /* udevadm itself needs to strip its name from the passed options */
- if (strcmp(command, "adm") == 0) {
- command = argv[1];
- argv++;
- argc--;
+ for (i = 0; cmds[i].cmd != NULL; i++) {
+ if (strcmp(cmds[i].name, command) == 0) {
+ char path[128];
+ char prog[512];
+ ssize_t len;
+
+ snprintf(path, sizeof(path), "/proc/%lu/exe", (unsigned long) getppid());
+ len = readlink(path, prog, sizeof(prog));
+ if (len > 0) {
+ prog[len] = '\0';
+ fprintf(stderr, "the program '%s' called '%s', it should use 'udevadm %s <options>', "
+ "this will stop working in a future release\n", prog, argv[0], command);
+ err(udev, "the program '%s' called '%s', it should use 'udevadm %s <options>', "
+ "this will stop working in a future release\n", prog, argv[0], command);
+ }
+ rc = run_command(udev, &cmds[i], argc, argv);
+ goto out;
+ }