summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--udevinfo.85
-rw-r--r--udevinfo.c17
2 files changed, 18 insertions, 4 deletions
diff --git a/udevinfo.8 b/udevinfo.8
index 599a0033f8..bbcc3d8f49 100644
--- a/udevinfo.8
+++ b/udevinfo.8
@@ -19,9 +19,10 @@ Print the version information.
.B \-r
Print the
.B udev_root
-directory. When used in conjunction with a query for the node name, the
+directory. When used in conjunction with a query for the node name or the
+symlink names, the
.B udev_root
-will be prepended.
+will be prepended to query result.
.TP
.BI \-q " query_type"
Query the database for specified value of a created device node or network
diff --git a/udevinfo.c b/udevinfo.c
index 8fab86ca8c..290a09e880 100644
--- a/udevinfo.c
+++ b/udevinfo.c
@@ -266,7 +266,7 @@ static int process_options(void)
int root = 0;
int attributes = 0;
enum query_type query = NONE;
- char result[NAME_SIZE] = "";
+ char result[1024] = "";
char path[NAME_SIZE] = "";
char name[NAME_SIZE] = "";
char temp[NAME_SIZE];
@@ -401,7 +401,20 @@ print:
break;
case SYMLINK:
- strfieldcpy(result, udev.symlink);
+ if (root) {
+ int slen;
+ char *spos;
+ char slink[NAME_SIZE];
+
+ pos = result;
+ foreach_strpart(udev.symlink, " \n\r", spos, slen) {
+ strncpy(slink, spos, slen);
+ slink[slen] = '\0';
+ pos += sprintf(pos, "%s/%s ", udev_root, slink);
+ }
+ } else {
+ strfieldcpy(result, udev.symlink);
+ }
break;
case PATH: