loop device code: readability improvement
This commit is contained in:
parent
3ace9fa6d8
commit
c34d35557b
18
libbb/loop.c
18
libbb/loop.c
@ -112,19 +112,22 @@ int set_loop(char **device, const char *file, unsigned long long offset)
|
|||||||
mode = O_RDONLY;
|
mode = O_RDONLY;
|
||||||
dfd = open(try, mode);
|
dfd = open(try, mode);
|
||||||
}
|
}
|
||||||
if (dfd < 0) goto try_again;
|
if (dfd < 0)
|
||||||
|
goto try_again;
|
||||||
|
|
||||||
rc = ioctl(dfd, BB_LOOP_GET_STATUS, &loopinfo);
|
rc = ioctl(dfd, BB_LOOP_GET_STATUS, &loopinfo);
|
||||||
|
|
||||||
/* If device free, claim it. */
|
/* If device is free, claim it. */
|
||||||
if (rc && errno == ENXIO) {
|
if (rc && errno == ENXIO) {
|
||||||
memset(&loopinfo, 0, sizeof(loopinfo));
|
memset(&loopinfo, 0, sizeof(loopinfo));
|
||||||
safe_strncpy((char *)loopinfo.lo_file_name, file, LO_NAME_SIZE);
|
safe_strncpy((char *)loopinfo.lo_file_name, file, LO_NAME_SIZE);
|
||||||
loopinfo.lo_offset = offset;
|
loopinfo.lo_offset = offset;
|
||||||
/* Associate free loop device with file. */
|
/* Associate free loop device with file. */
|
||||||
if (!ioctl(dfd, LOOP_SET_FD, ffd)) {
|
if (!ioctl(dfd, LOOP_SET_FD, ffd)) {
|
||||||
if (!ioctl(dfd, BB_LOOP_SET_STATUS, &loopinfo)) rc = 0;
|
if (!ioctl(dfd, BB_LOOP_SET_STATUS, &loopinfo))
|
||||||
else ioctl(dfd, LOOP_CLR_FD, 0);
|
rc = 0;
|
||||||
|
else
|
||||||
|
ioctl(dfd, LOOP_CLR_FD, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* If this block device already set up right, re-use it.
|
/* If this block device already set up right, re-use it.
|
||||||
@ -132,7 +135,7 @@ int set_loop(char **device, const char *file, unsigned long long offset)
|
|||||||
file isn't pretty either. In general, mounting the same file twice
|
file isn't pretty either. In general, mounting the same file twice
|
||||||
without using losetup manually is problematic.)
|
without using losetup manually is problematic.)
|
||||||
*/
|
*/
|
||||||
} else if (strcmp(file,(char *)loopinfo.lo_file_name)
|
} else if (strcmp(file, (char *)loopinfo.lo_file_name) != 0
|
||||||
|| offset != loopinfo.lo_offset) {
|
|| offset != loopinfo.lo_offset) {
|
||||||
rc = -1;
|
rc = -1;
|
||||||
}
|
}
|
||||||
@ -142,8 +145,9 @@ try_again:
|
|||||||
}
|
}
|
||||||
close(ffd);
|
close(ffd);
|
||||||
if (!rc) {
|
if (!rc) {
|
||||||
if (!*device) *device = xstrdup(dev);
|
if (!*device)
|
||||||
return mode==O_RDONLY ? 1 : 0;
|
*device = xstrdup(dev);
|
||||||
|
return (mode == O_RDONLY) ? 1 : 0;
|
||||||
}
|
}
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
@ -45,9 +45,11 @@ int losetup_main(int argc, char **argv)
|
|||||||
bb_perror_nomsg_and_die();
|
bb_perror_nomsg_and_die();
|
||||||
} else if (argc == 1) {
|
} else if (argc == 1) {
|
||||||
char *s = query_loop(argv[0]);
|
char *s = query_loop(argv[0]);
|
||||||
if (!s) bb_perror_nomsg_and_die();
|
if (!s)
|
||||||
|
bb_perror_nomsg_and_die();
|
||||||
printf("%s: %s\n", argv[0], s);
|
printf("%s: %s\n", argv[0], s);
|
||||||
if (ENABLE_FEATURE_CLEAN_UP) free(s);
|
if (ENABLE_FEATURE_CLEAN_UP)
|
||||||
|
free(s);
|
||||||
} else {
|
} else {
|
||||||
char dev[sizeof(LOOP_NAME"0")] = LOOP_NAME"0";
|
char dev[sizeof(LOOP_NAME"0")] = LOOP_NAME"0";
|
||||||
char c;
|
char c;
|
||||||
@ -57,7 +59,8 @@ int losetup_main(int argc, char **argv)
|
|||||||
s = query_loop(dev);
|
s = query_loop(dev);
|
||||||
if (s) {
|
if (s) {
|
||||||
printf("%s: %s\n", dev, s);
|
printf("%s: %s\n", dev, s);
|
||||||
if (ENABLE_FEATURE_CLEAN_UP) free(s);
|
if (ENABLE_FEATURE_CLEAN_UP)
|
||||||
|
free(s);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user