chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
5433b73
)
path_id: add missing '-' to tape suffix
author
Kay Sievers
<kay.sievers@vrfy.org>
Wed, 6 Jul 2011 18:36:47 +0000
(20:36 +0200)
committer
Kay Sievers
<kay.sievers@vrfy.org>
Wed, 6 Jul 2011 18:36:47 +0000
(20:36 +0200)
extras/path_id/path_id.c
patch
|
blob
|
history
diff --git
a/extras/path_id/path_id.c
b/extras/path_id/path_id.c
index 683f78d26e2d1374f5c95fde3afc1e19ca493240..9e77b8a7cc2a4e10ecef0c234abe5ce585ac30b8 100644
(file)
--- a/
extras/path_id/path_id.c
+++ b/
extras/path_id/path_id.c
@@
-50,29
+50,29
@@
static void log_fn(struct udev *udev, int priority,
static int path_prepend(char **path, const char *fmt, ...)
{
va_list va;
static int path_prepend(char **path, const char *fmt, ...)
{
va_list va;
- char *old;
char *pre;
char *pre;
- int err;
-
- old = *path;
+ int err = 0;
va_start(va, fmt);
err = vasprintf(&pre, fmt, va);
va_end(va);
if (err < 0)
va_start(va, fmt);
err = vasprintf(&pre, fmt, va);
va_end(va);
if (err < 0)
-
return err
;
+
goto out
;
- if (
old
!= NULL) {
-
err = asprintf(path, "%s-%s", pre, old)
;
- if (err < 0)
-
return err
;
+ if (
*path
!= NULL) {
+
char *new
;
+
+
err = asprintf(&new, "%s-%s", pre, *path)
;
free(pre);
free(pre);
+ if (err < 0)
+ goto out;
+ free(*path);
+ *path = new;
} else {
*path = pre;
}
} else {
*path = pre;
}
-
- free(old);
- return 0;
+out:
+ return err;
}
/*
}
/*
@@
-337,15
+337,19
@@
out:
return parent;
}
return parent;
}
-static void handle_scsi_tape(struct udev_device *dev, char **
suffix
)
+static void handle_scsi_tape(struct udev_device *dev, char **
path
)
{
const char *name;
{
const char *name;
+ /* must be the last device in the syspath */
+ if (*path != NULL)
+ return;
+
name = udev_device_get_sysname(dev);
if (strncmp(name, "nst", 3) == 0 && strchr("lma", name[3]) != NULL)
name = udev_device_get_sysname(dev);
if (strncmp(name, "nst", 3) == 0 && strchr("lma", name[3]) != NULL)
-
asprintf(suffix
, "nst%c", name[3]);
+
path_prepend(path
, "nst%c", name[3]);
else if (strncmp(name, "st", 2) == 0 && strchr("lma", name[2]) != NULL)
else if (strncmp(name, "st", 2) == 0 && strchr("lma", name[2]) != NULL)
-
asprintf(suffix
, "st%c", name[2]);
+
path_prepend(path
, "st%c", name[2]);
}
static struct udev_device *handle_usb(struct udev_device *parent, char **path)
}
static struct udev_device *handle_usb(struct udev_device *parent, char **path)
@@
-413,9
+417,8
@@
int main(int argc, char **argv)
struct udev_device *parent;
char syspath[UTIL_PATH_SIZE];
const char *devpath;
struct udev_device *parent;
char syspath[UTIL_PATH_SIZE];
const char *devpath;
- char *path;
- char *path_suffix;
- int rc = 1;
+ char *path = NULL;
+ int rc = EXIT_FAILURE;
udev = udev_new();
if (udev == NULL)
udev = udev_new();
if (udev == NULL)
@@
-460,9
+463,6
@@
int main(int argc, char **argv)
goto exit;
}
goto exit;
}
- path = NULL;
- path_suffix = NULL;
-
/* S390 ccw bus */
parent = udev_device_get_parent_with_subsystem_devtype(dev, "ccw", NULL);
if (parent != NULL) {
/* S390 ccw bus */
parent = udev_device_get_parent_with_subsystem_devtype(dev, "ccw", NULL);
if (parent != NULL) {
@@
-480,7
+480,7
@@
int main(int argc, char **argv)
if (subsys == NULL) {
;
} else if (strcmp(subsys, "scsi_tape") == 0) {
if (subsys == NULL) {
;
} else if (strcmp(subsys, "scsi_tape") == 0) {
- handle_scsi_tape(parent, &path
_suffix
);
+ handle_scsi_tape(parent, &path);
} else if (strcmp(subsys, "scsi") == 0) {
parent = handle_scsi(parent, &path);
} else if (strcmp(subsys, "cciss") == 0) {
} else if (strcmp(subsys, "scsi") == 0) {
parent = handle_scsi(parent, &path);
} else if (strcmp(subsys, "cciss") == 0) {
@@
-508,14
+508,9
@@
int main(int argc, char **argv)
}
out:
if (path != NULL) {
}
out:
if (path != NULL) {
- if (path_suffix != NULL) {
- printf("ID_PATH=%s%s\n", path, path_suffix);
- free(path_suffix);
- } else {
- printf("ID_PATH=%s\n", path);
- }
+ printf("ID_PATH=%s\n", path);
free(path);
free(path);
- rc =
0
;
+ rc =
EXIT_SUCCESS
;
}
udev_device_unref(dev);
}
udev_device_unref(dev);