summaryrefslogtreecommitdiff
path: root/src/udev/udev-builtin-blkid.c
diff options
context:
space:
mode:
authorYu Watanabe <watanabe.yu+github@gmail.com>2018-10-23 18:26:06 +0900
committerYu Watanabe <watanabe.yu+github@gmail.com>2018-10-23 18:29:25 +0900
commitd354690e7d0429338cdd1c2cfe1fdd08fc53da9e (patch)
treed973cacc0865e3ddcb222692459bc8d887ebfa09 /src/udev/udev-builtin-blkid.c
parent45a73f4be32481eacdb652c0869d69025fab354c (diff)
downloadsystemd-d354690e7d0429338cdd1c2cfe1fdd08fc53da9e.tar.gz
udev-builtin: propagate negative errno
Diffstat (limited to 'src/udev/udev-builtin-blkid.c')
-rw-r--r--src/udev/udev-builtin-blkid.c29
1 files changed, 14 insertions, 15 deletions
diff --git a/src/udev/udev-builtin-blkid.c b/src/udev/udev-builtin-blkid.c
index f521357aba..7ed4fbad78 100644
--- a/src/udev/udev-builtin-blkid.c
+++ b/src/udev/udev-builtin-blkid.c
@@ -182,6 +182,8 @@ static int probe_superblocks(blkid_probe pr) {
struct stat st;
int rc;
+ /* TODO: Return negative errno. */
+
if (fstat(blkid_probe_get_fd(pr), &st))
return -errno;
@@ -235,11 +237,9 @@ static int builtin_blkid(sd_device *dev, int argc, char *argv[], bool test) {
case 'o':
r = safe_atoi64(optarg, &offset);
if (r < 0)
- goto out;
- if (offset < 0) {
- r = -ERANGE;
- goto out;
- }
+ return r;
+ if (offset < 0)
+ return -ERANGE;
break;
case 'R':
noraid = true;
@@ -247,9 +247,10 @@ static int builtin_blkid(sd_device *dev, int argc, char *argv[], bool test) {
}
}
+ errno = 0;
pr = blkid_new_probe();
if (!pr)
- return EXIT_FAILURE;
+ return errno > 0 ? -errno : -ENOMEM;
blkid_probe_set_superblocks_flags(pr,
BLKID_SUBLKS_LABEL | BLKID_SUBLKS_UUID |
@@ -261,17 +262,16 @@ static int builtin_blkid(sd_device *dev, int argc, char *argv[], bool test) {
r = sd_device_get_devname(dev, &devnode);
if (r < 0)
- goto out;
+ return r;
fd = open(devnode, O_RDONLY|O_CLOEXEC);
- if (fd < 0) {
- r = log_debug_errno(errno, "Failure opening block device %s: %m", devnode);
- goto out;
- }
+ if (fd < 0)
+ return log_debug_errno(errno, "Failure opening block device %s: %m", devnode);
+ errno = 0;
r = blkid_probe_set_device(pr, fd, offset, 0);
if (r < 0)
- goto out;
+ return errno > 0 ? -errno : -ENOMEM;
log_debug("probe %s %sraid offset=%"PRIi64,
devnode,
@@ -279,7 +279,7 @@ static int builtin_blkid(sd_device *dev, int argc, char *argv[], bool test) {
r = probe_superblocks(pr);
if (r < 0)
- goto out;
+ return r;
/* If we are a partition then our parent passed on the root
* partition UUID to us */
@@ -305,8 +305,7 @@ static int builtin_blkid(sd_device *dev, int argc, char *argv[], bool test) {
if (is_gpt)
find_gpt_root(dev, pr, test);
-out:
- return r < 0 ? EXIT_FAILURE : EXIT_SUCCESS;
+ return 0;
}
const struct udev_builtin udev_builtin_blkid = {