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);
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;
cxt->parent = parent;
return 0;
err:
- rc = -errno;
+ rc = errno > 0 ? -errno : -1;
sysfs_deinit(cxt);
return rc;
}
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];
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;
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)
{
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);
}
}
if (!ok)
- continue; /* attrinute does not exist */
+ continue; /* attribute does not exist */
}
if (val->set_ulong) {
done:
sysfs_deinit(&sysfs);
- if (disk)
- sysfs_deinit(&parent);
+ sysfs_deinit(&parent);
+
if (count)
return 0; /* success */
return rc; /* error or nothing */