diff options
-rw-r--r-- | include/sysfs.h | 1 | ||||
-rw-r--r-- | lib/sysfs.c | 6 | ||||
-rw-r--r-- | libblkid/src/devname.c | 2 | ||||
-rw-r--r-- | libblkid/src/devno.c | 2 | ||||
-rw-r--r-- | libblkid/src/topology/sysfs.c | 9 |
5 files changed, 11 insertions, 9 deletions
diff --git a/include/sysfs.h b/include/sysfs.h index c1e63527b..affd2bb76 100644 --- a/include/sysfs.h +++ b/include/sysfs.h @@ -23,6 +23,7 @@ struct sysfs_cxt { struct sysfs_cxt *parent; }; +#define UL_SYSFSCXT_EMPTY { 0, -1, NULL, NULL } extern char *sysfs_devno_attribute_path(dev_t devno, char *buf, size_t bufsiz, const char *attr); diff --git a/lib/sysfs.c b/lib/sysfs.c index 89600bfdd..2340d3046 100644 --- a/lib/sysfs.c +++ b/lib/sysfs.c @@ -137,7 +137,7 @@ char *sysfs_devno_to_devpath(dev_t devno, char *buf, size_t bufsiz) int sysfs_init(struct sysfs_cxt *cxt, dev_t devno, struct sysfs_cxt *parent) { char path[PATH_MAX]; - int fd, rc = 0; + int fd, rc; memset(cxt, 0, sizeof(*cxt)); cxt->dir_fd = -1; @@ -157,7 +157,7 @@ int sysfs_init(struct sysfs_cxt *cxt, dev_t devno, struct sysfs_cxt *parent) cxt->parent = parent; return 0; err: - rc = -errno; + rc = errno > 0 ? -errno : -1; sysfs_deinit(cxt); return rc; } @@ -445,7 +445,7 @@ char *sysfs_get_devname(struct sysfs_cxt *cxt, char *buf, size_t bufsiz) int main(int argc, char *argv[]) { - struct sysfs_cxt cxt; + struct sysfs_cxt cxt = UL_SYSFSCXT_EMPTY; char *devname; dev_t devno; char path[PATH_MAX]; diff --git a/libblkid/src/devname.c b/libblkid/src/devname.c index 12cd93ad3..4a08452d8 100644 --- a/libblkid/src/devname.c +++ b/libblkid/src/devname.c @@ -550,7 +550,7 @@ static int probe_all_removable(blkid_cache cache) return -BLKID_ERR_PROC; while((d = readdir(dir))) { - struct sysfs_cxt sysfs; + struct sysfs_cxt sysfs = UL_SYSFSCXT_EMPTY; int removable = 0; dev_t devno; diff --git a/libblkid/src/devno.c b/libblkid/src/devno.c index b2a8be537..59edfd85c 100644 --- a/libblkid/src/devno.c +++ b/libblkid/src/devno.c @@ -346,7 +346,7 @@ static int get_dm_wholedisk(struct sysfs_cxt *cxt, char *diskname, int blkid_devno_to_wholedisk(dev_t dev, char *diskname, size_t len, dev_t *diskdevno) { - struct sysfs_cxt cxt; + struct sysfs_cxt cxt = UL_SYSFSCXT_EMPTY; int is_part = 0; if (!dev || sysfs_init(&cxt, dev, NULL) != 0) diff --git a/libblkid/src/topology/sysfs.c b/libblkid/src/topology/sysfs.c index e62b84c27..a04b20a37 100644 --- a/libblkid/src/topology/sysfs.c +++ b/libblkid/src/topology/sysfs.c @@ -44,7 +44,8 @@ static int probe_sysfs_tp(blkid_probe pr, { dev_t dev, disk = 0; int rc; - struct sysfs_cxt sysfs, parent; + struct sysfs_cxt sysfs = UL_SYSFSCXT_EMPTY, + parent = UL_SYSFSCXT_EMPTY; size_t i, count = 0; dev = blkid_probe_get_devno(pr); @@ -76,7 +77,7 @@ static int probe_sysfs_tp(blkid_probe pr, } } if (!ok) - continue; /* attrinute does not exist */ + continue; /* attribute does not exist */ } if (val->set_ulong) { @@ -102,8 +103,8 @@ static int probe_sysfs_tp(blkid_probe pr, done: sysfs_deinit(&sysfs); - if (disk) - sysfs_deinit(&parent); + sysfs_deinit(&parent); + if (count) return 0; /* success */ return rc; /* error or nothing */ |