mirror of
https://github.com/morgan9e/systemd
synced 2026-04-15 17:06:39 +09:00
udevinfo, udevtest: simplify '/sys' stripping from devpath argument
This commit is contained in:
@@ -49,7 +49,7 @@ int create_path(const char *path)
|
||||
pos[0] = '\0';
|
||||
|
||||
dbg("stat '%s'\n", p);
|
||||
if (stat (p, &stats) == 0 && (stats.st_mode & S_IFMT) == S_IFDIR)
|
||||
if (stat(p, &stats) == 0 && (stats.st_mode & S_IFMT) == S_IFDIR)
|
||||
return 0;
|
||||
|
||||
if (create_path (p) != 0)
|
||||
|
||||
47
udevinfo.c
47
udevinfo.c
@@ -209,9 +209,7 @@ int main(int argc, char *argv[], char *envp[])
|
||||
|
||||
char path[PATH_SIZE] = "";
|
||||
char name[PATH_SIZE] = "";
|
||||
char temp[PATH_SIZE];
|
||||
struct name_entry *name_loop;
|
||||
char *pos;
|
||||
int rc = 0;
|
||||
|
||||
logging_init("udevinfo");
|
||||
@@ -234,16 +232,20 @@ int main(int argc, char *argv[], char *envp[])
|
||||
dbg("option '%c'", option);
|
||||
switch (option) {
|
||||
case 'n':
|
||||
dbg("udev name: %s\n", optarg);
|
||||
strlcpy(name, optarg, sizeof(name));
|
||||
/* remove /dev if given */
|
||||
if (strncmp(optarg, udev_root, strlen(udev_root)) == 0)
|
||||
strlcpy(name, &optarg[strlen(udev_root)+1], sizeof(name));
|
||||
else
|
||||
strlcpy(name, optarg, sizeof(name));
|
||||
dbg("name: %s\n", name);
|
||||
break;
|
||||
case 'p':
|
||||
dbg("udev path: %s\n", optarg);
|
||||
/* remove sysfs mountpoint if not given */
|
||||
/* remove /sys if given */
|
||||
if (strncmp(optarg, sysfs_path, strlen(sysfs_path)) == 0)
|
||||
strlcpy(path, &optarg[strlen(sysfs_path)], sizeof(path));
|
||||
else
|
||||
strlcpy(path, optarg, sizeof(path));
|
||||
dbg("path: %s\n", path);
|
||||
break;
|
||||
case 'q':
|
||||
dbg("udev query: %s\n", optarg);
|
||||
@@ -299,40 +301,19 @@ int main(int argc, char *argv[], char *envp[])
|
||||
/* run action */
|
||||
switch (action) {
|
||||
case ACTION_QUERY:
|
||||
/* need devpath or node/symlink name for query */
|
||||
/* needs devpath or node/symlink name for query */
|
||||
if (path[0] != '\0') {
|
||||
/* remove sysfs_path if given */
|
||||
if (strncmp(path, sysfs_path, strlen(sysfs_path)) == 0) {
|
||||
pos = path + strlen(sysfs_path);
|
||||
} else {
|
||||
if (path[0] != '/') {
|
||||
/* prepend '/' if missing */
|
||||
strcpy(temp, "/");
|
||||
strlcpy(temp, path, sizeof(temp));
|
||||
pos = temp;
|
||||
} else {
|
||||
pos = path;
|
||||
}
|
||||
}
|
||||
if (udev_db_get_device(udev, pos) != 0) {
|
||||
fprintf(stderr, "no record for '%s' in database\n", pos);
|
||||
if (udev_db_get_device(udev, path) != 0) {
|
||||
fprintf(stderr, "no record for '%s' in database\n", path);
|
||||
rc = 3;
|
||||
goto exit;
|
||||
}
|
||||
} else if (name[0] != '\0') {
|
||||
char devpath[PATH_SIZE];
|
||||
int len;
|
||||
|
||||
/* remove udev_root if given */
|
||||
len = strlen(udev_root);
|
||||
if (strncmp(name, udev_root, len) == 0) {
|
||||
pos = &name[len+1];
|
||||
} else
|
||||
pos = name;
|
||||
|
||||
if (udev_db_lookup_name(pos, devpath, sizeof(devpath)) != 0) {
|
||||
fprintf(stderr, "no record for '%s' in database\n", pos);
|
||||
rc = 3;
|
||||
if (udev_db_lookup_name(name, devpath, sizeof(devpath)) != 0) {
|
||||
fprintf(stderr, "node name not found\n");
|
||||
rc = 4;
|
||||
goto exit;
|
||||
}
|
||||
udev_db_get_device(udev, devpath);
|
||||
|
||||
14
udevtest.c
14
udevtest.c
@@ -52,7 +52,6 @@ int main(int argc, char *argv[], char *envp[])
|
||||
{
|
||||
struct udev_rules rules;
|
||||
char *devpath;
|
||||
char temp[PATH_SIZE];
|
||||
struct udevice *udev;
|
||||
struct sysfs_device *dev;
|
||||
int retval;
|
||||
@@ -64,24 +63,19 @@ int main(int argc, char *argv[], char *envp[])
|
||||
udev_config_init();
|
||||
if (udev_log_priority < LOG_INFO)
|
||||
udev_log_priority = LOG_INFO;
|
||||
sysfs_init();
|
||||
|
||||
if (argc != 2) {
|
||||
info("Usage: udevtest <devpath>");
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* remove sysfs_path if given */
|
||||
sysfs_init();
|
||||
|
||||
/* remove /sys if given */
|
||||
if (strncmp(argv[1], sysfs_path, strlen(sysfs_path)) == 0)
|
||||
devpath = &argv[1][strlen(sysfs_path)];
|
||||
else
|
||||
if (argv[1][0] != '/') {
|
||||
/* prepend '/' if missing */
|
||||
snprintf(temp, sizeof(temp), "/%s", argv[1]);
|
||||
temp[sizeof(temp)-1] = '\0';
|
||||
devpath = temp;
|
||||
} else
|
||||
devpath = argv[1];
|
||||
devpath = argv[1];
|
||||
|
||||
udev_rules_init(&rules, 0);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user