From: Zbigniew Jędrzejewski-Szmek Date: Thu, 15 Apr 2021 05:51:58 +0000 (+0200) Subject: udev/cdrom_id: drop unnecessary cleanup and simplify loop X-Git-Tag: v249-rc1~407^2~3 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=3d346b8106a0dad2bdc7f008bea80e65b05c1600;p=thirdparty%2Fsystemd.git udev/cdrom_id: drop unnecessary cleanup and simplify loop --- diff --git a/src/udev/cdrom_id/cdrom_id.c b/src/udev/cdrom_id/cdrom_id.c index f1715a93bc1..2523752043b 100644 --- a/src/udev/cdrom_id/cdrom_id.c +++ b/src/udev/cdrom_id/cdrom_id.c @@ -743,25 +743,23 @@ static int cd_media_toc(Context *c) { } static int open_drive(Context *c) { - _cleanup_close_ int fd = -1; + int fd; assert(c); assert(c->fd < 0); - for (int cnt = 0; cnt < 20; cnt++) { - if (cnt != 0) - (void) usleep(100 * USEC_PER_MSEC + random_u64() % (100 * USEC_PER_MSEC)); - + for (int cnt = 0;; cnt++) { fd = open(arg_node, O_RDONLY|O_NONBLOCK|O_CLOEXEC); - if (fd >= 0 || errno != EBUSY) + if (fd >= 0) break; + if (++cnt >= 20 || errno != EBUSY) + return log_debug_errno(errno, "Unable to open '%s': %m", arg_node); + + (void) usleep(100 * USEC_PER_MSEC + random_u64() % (100 * USEC_PER_MSEC)); } - if (fd < 0) - return log_debug_errno(errno, "Unable to open '%s'", arg_node); log_debug("probing: '%s'", arg_node); - - c->fd = TAKE_FD(fd); + c->fd = fd; return 0; } @@ -952,7 +950,7 @@ static int parse_argv(int argc, char *argv[]) { arg_node = argv[optind]; if (!arg_node) - return log_error_errno(SYNTHETIC_ERRNO(EINVAL), "No device is specified."); + return log_error_errno(SYNTHETIC_ERRNO(EINVAL), "No device specified."); return 1; }