From: kay.sievers@vrfy.org Date: Wed, 10 Nov 2004 09:19:39 +0000 (+0100) Subject: [PATCH] make udevinfo's -r option also workimg for symlink queries X-Git-Tag: 046~18 X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=31fd340352236c06c30a85fa9fbdbfbbd10bd439;p=systemd [PATCH] make udevinfo's -r option also workimg for symlink queries [kay@pim udev.kay]$ ./udevinfo -r -q symlink -p /class/video4linux/video0 /dev/camera0 /dev/kamera0 /dev/videocam0 /dev/webcam0 [kay@pim udev.kay]$ ./udevinfo -q symlink -p /class/video4linux/video0 camera0 kamera0 videocam0 webcam0 --- diff --git a/udevinfo.8 b/udevinfo.8 index 599a0033..bbcc3d8f 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 8fab86ca..290a09e8 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: