diff options
author | Kay Sievers <kay.sievers@suse.de> | 2005-06-26 18:55:24 +0200 |
---|---|---|
committer | Kay Sievers <kay.sievers@suse.de> | 2005-06-26 18:55:24 +0200 |
commit | b8476286d62c82a1a0bd8de318aa3f7d835222a0 (patch) | |
tree | 37d3071c2767f819440083e34c5e68efde584b60 /udevinfo.c | |
parent | 208f6aba21199ff4f93002eeb948d564f76843e6 (diff) |
store the imported device information in the udevdb
Any program can query with udevinfo for persistent device
attributes evaluated on device discovery now.
Signed-off-by: Kay Sievers <kay.sievers@suse.de>
Diffstat (limited to 'udevinfo.c')
-rw-r--r-- | udevinfo.c | 45 |
1 files changed, 27 insertions, 18 deletions
diff --git a/udevinfo.c b/udevinfo.c index 69e5335b7c..db562eee49 100644 --- a/udevinfo.c +++ b/udevinfo.c @@ -92,14 +92,6 @@ static int print_record(struct udevice *udev) return 0; } -enum query_type { - NONE, - NAME, - PATH, - SYMLINK, - ALL, -}; - static int print_device_chain(const char *path) { struct sysfs_class_device *class_dev; @@ -185,7 +177,14 @@ int main(int argc, char *argv[], char *envp[]) struct udevice udev; int root = 0; int attributes = 0; - enum query_type query = NONE; + enum query_type { + QUERY_NONE, + QUERY_NAME, + QUERY_PATH, + QUERY_SYMLINK, + QUERY_ENV, + QUERY_ALL, + } query = QUERY_NONE; char path[PATH_SIZE] = ""; char name[PATH_SIZE] = ""; char temp[PATH_SIZE]; @@ -220,22 +219,27 @@ int main(int argc, char *argv[], char *envp[]) dbg("udev query: %s\n", optarg); if (strcmp(optarg, "name") == 0) { - query = NAME; + query = QUERY_NAME; break; } if (strcmp(optarg, "symlink") == 0) { - query = SYMLINK; + query = QUERY_SYMLINK; break; } if (strcmp(optarg, "path") == 0) { - query = PATH; + query = QUERY_PATH; + break; + } + + if (strcmp(optarg, "env") == 0) { + query = QUERY_ENV; break; } if (strcmp(optarg, "all") == 0) { - query = ALL; + query = QUERY_ALL; break; } @@ -268,7 +272,7 @@ int main(int argc, char *argv[], char *envp[]) } /* process options */ - if (query != NONE) { + if (query != QUERY_NONE) { if (path[0] != '\0') { /* remove sysfs_path if given */ if (strncmp(path, sysfs_path, strlen(sysfs_path)) == 0) { @@ -317,13 +321,13 @@ int main(int argc, char *argv[], char *envp[]) print: switch(query) { - case NAME: + case QUERY_NAME: if (root) printf("%s/%s\n", udev_root, udev.name); else printf("%s\n", udev.name); goto exit; - case SYMLINK: + case QUERY_SYMLINK: if (list_empty(&udev.symlink_list)) break; if (root) @@ -334,10 +338,14 @@ print: printf("%s ", name_loop->name); printf("\n"); goto exit; - case PATH: + case QUERY_PATH: printf("%s\n", udev.devpath); goto exit; - case ALL: + case QUERY_ENV: + list_for_each_entry(name_loop, &udev.env_list, node) + printf("%s\n", name_loop->name); + goto exit; + case QUERY_ALL: print_record(&udev); goto exit; default: @@ -373,6 +381,7 @@ help: " 'name' name of device node\n" " 'symlink' pointing to node\n" " 'path' sysfs device path\n" + " 'env' the device related imported environment\n" " 'all' all values\n" "\n" " -p PATH sysfs device path used for query or chain\n" |