chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
use proper directory lib/lib64 for libvolume_id
[elogind.git]
/
udevinfo.c
diff --git
a/udevinfo.c
b/udevinfo.c
index 85899cfd9d9d9d303b9ff033fd36a1278cc8a843..b9ee17c4f1012651fae6ba36bf1e9e3c8eddce37 100644
(file)
--- a/
udevinfo.c
+++ b/
udevinfo.c
@@
-54,6
+54,8
@@
static void print_all_attributes(const char *devpath, const char *key)
if (strcmp(dent->d_name, "uevent") == 0)
continue;
if (strcmp(dent->d_name, "uevent") == 0)
continue;
+ if (strcmp(dent->d_name, "dev") == 0)
+ continue;
strlcpy(filename, path, sizeof(filename));
strlcat(filename, "/", sizeof(filename));
strlcpy(filename, path, sizeof(filename));
strlcat(filename, "/", sizeof(filename));
@@
-69,7
+71,7
@@
static void print_all_attributes(const char *devpath, const char *key)
len = strlcpy(value, attr_value, sizeof(value));
if(len >= sizeof(value))
len = sizeof(value) - 1;
len = strlcpy(value, attr_value, sizeof(value));
if(len >= sizeof(value))
len = sizeof(value) - 1;
- dbg("attr '%s'='%s'(%zi)", dent->d_name, value, len);
+ dbg("attr '%s'='%s'(%zi)
\n
", dent->d_name, value, len);
/* remove trailing newlines */
while (len && value[len-1] == '\n')
/* remove trailing newlines */
while (len && value[len-1] == '\n')
@@
-79,11
+81,10
@@
static void print_all_attributes(const char *devpath, const char *key)
while (len && isprint(value[len-1]))
len--;
if (len) {
while (len && isprint(value[len-1]))
len--;
if (len) {
- dbg("attribute value of '%s' non-printable, skip", dent->d_name);
+ dbg("attribute value of '%s' non-printable, skip
\n
", dent->d_name);
continue;
}
continue;
}
- replace_chars(value, ALLOWED_CHARS_INPUT);
printf(" %s{%s}==\"%s\"\n", key, dent->d_name, value);
}
}
printf(" %s{%s}==\"%s\"\n", key, dent->d_name, value);
}
}
@@
-176,7
+177,7
@@
static int lookup_device_by_name(struct udevice *udev, const char *name)
if (count <= 0)
goto out;
if (count <= 0)
goto out;
- info("found %i devices for '%s'", count, name);
+ info("found %i devices for '%s'
\n
", count, name);
/* select the device that seems to match */
list_for_each_entry(device, &name_list, node) {
/* select the device that seems to match */
list_for_each_entry(device, &name_list, node) {
@@
-186,7
+187,7
@@
static int lookup_device_by_name(struct udevice *udev, const char *name)
udev_device_init(udev);
if (udev_db_get_device(udev, device->name) != 0)
continue;
udev_device_init(udev);
if (udev_db_get_device(udev, device->name) != 0)
continue;
- info("found db entry '%s'", device->name);
+ info("found db entry '%s'
\n
", device->name);
/* make sure, we don't get a link of a differnt device */
strlcpy(filename, udev_root, sizeof(filename));
/* make sure, we don't get a link of a differnt device */
strlcpy(filename, udev_root, sizeof(filename));
@@
-195,7
+196,7
@@
static int lookup_device_by_name(struct udevice *udev, const char *name)
if (stat(filename, &statbuf) != 0)
continue;
if (major(udev->devt) > 0 && udev->devt != statbuf.st_rdev) {
if (stat(filename, &statbuf) != 0)
continue;
if (major(udev->devt) > 0 && udev->devt != statbuf.st_rdev) {
- info("skip '%s', dev_t doesn't match", udev->name);
+ info("skip '%s', dev_t doesn't match
\n
", udev->name);
continue;
}
rc = 0;
continue;
}
rc = 0;
@@
-206,14
+207,22
@@
out:
return rc;
}
return rc;
}
-static int stat_device(const char *name)
+static int stat_device(const char *name
, int export, const char *prefix
)
{
struct stat statbuf;
if (stat(name, &statbuf) != 0)
return -1;
{
struct stat statbuf;
if (stat(name, &statbuf) != 0)
return -1;
- printf("%d %d\n", major(statbuf.st_dev), minor(statbuf.st_dev));
+ if (export) {
+ if (prefix == NULL)
+ prefix = "INFO_";
+ printf("%sMAJOR=%d\n"
+ "%sMINOR=%d\n",
+ prefix, major(statbuf.st_dev),
+ prefix, minor(statbuf.st_dev));
+ } else
+ printf("%d %d\n", major(statbuf.st_dev), minor(statbuf.st_dev));
return 0;
}
return 0;
}
@@
-222,6
+231,8
@@
int udevinfo(int argc, char *argv[], char *envp[])
int option;
struct udevice *udev;
int root = 0;
int option;
struct udevice *udev;
int root = 0;
+ int export = 0;
+ const char *export_prefix = NULL;
static const struct option options[] = {
{ "name", 1, NULL, 'n' },
static const struct option options[] = {
{ "name", 1, NULL, 'n' },
@@
-231,6
+242,8
@@
int udevinfo(int argc, char *argv[], char *envp[])
{ "export-db", 0, NULL, 'e' },
{ "root", 0, NULL, 'r' },
{ "device-id-of-file", 1, NULL, 'd' },
{ "export-db", 0, NULL, 'e' },
{ "root", 0, NULL, 'r' },
{ "device-id-of-file", 1, NULL, 'd' },
+ { "export", 0, NULL, 'x' },
+ { "export-prefix", 1, NULL, 'P' },
{ "version", 0, NULL, 1 }, /* -V outputs braindead format */
{ "help", 0, NULL, 'h' },
{}
{ "version", 0, NULL, 1 }, /* -V outputs braindead format */
{ "help", 0, NULL, 'h' },
{}
@@
-269,11
+282,11
@@
int udevinfo(int argc, char *argv[], char *envp[])
}
while (1) {
}
while (1) {
- option = getopt_long(argc, argv, "aed:n:p:q:rVh", options, NULL);
+ option = getopt_long(argc, argv, "aed:n:p:q:r
xP
Vh", options, NULL);
if (option == -1)
break;
if (option == -1)
break;
- dbg("option '%c'", option);
+ dbg("option '%c'
\n
", option);
switch (option) {
case 'n':
/* remove /dev if given */
switch (option) {
case 'n':
/* remove /dev if given */
@@
-282,7
+295,7
@@
int udevinfo(int argc, char *argv[], char *envp[])
else
strlcpy(name, optarg, sizeof(name));
remove_trailing_chars(name, '/');
else
strlcpy(name, optarg, sizeof(name));
remove_trailing_chars(name, '/');
- dbg("name: %s", name);
+ dbg("name: %s
\n
", name);
break;
case 'p':
/* remove /sys if given */
break;
case 'p':
/* remove /sys if given */
@@
-311,7
+324,7
@@
int udevinfo(int argc, char *argv[], char *envp[])
}
}
}
}
}
}
- dbg("path: %s", path);
+ dbg("path: %s
\n
", path);
break;
case 'q':
action = ACTION_QUERY;
break;
case 'q':
action = ACTION_QUERY;
@@
-353,6
+366,12
@@
int udevinfo(int argc, char *argv[], char *envp[])
case 'e':
export_db();
goto exit;
case 'e':
export_db();
goto exit;
+ case 'x':
+ export = 1;
+ break;
+ case 'P':
+ export_prefix = optarg;
+ break;
case 1:
printf("%s\n", UDEV_VERSION);
goto exit;
case 1:
printf("%s\n", UDEV_VERSION);
goto exit;
@@
-461,7
+480,7
@@
int udevinfo(int argc, char *argv[], char *envp[])
}
break;
case ACTION_DEVICE_ID_FILE:
}
break;
case ACTION_DEVICE_ID_FILE:
- if (stat_device(name) != 0)
+ if (stat_device(name
, export, export_prefix
) != 0)
rc = 6;
break;
case ACTION_ROOT:
rc = 6;
break;
case ACTION_ROOT: