On 2022/11/18 20:39, Walter Harms wrote:
again try to safe indent level

  if (stat(dev, &statbuf) == 0 &&  S_ISBLK(statbuf.st_mode))
   return 0;

jm2c
Thanks,  will be modified in v3

________________________________________
Von: busybox <[email protected]> im Auftrag von Xiaoming Ni 
<[email protected]>
Gesendet: Freitag, 18. November 2022 13:14:46
An: [email protected]; [email protected]; [email protected]; 
[email protected]
Cc: [email protected]
Betreff: [PATCH v2 7/9] loop:refactor: Extract subfunction do_stat_and_mknod()

Step 7 of micro-refactoring the set_loop():
         Extract subfunction do_stat_and_mknod()

function                                             old     new   delta
set_loop                                             720     700     -20
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/1 up/down: 0/-20)             Total: -20 bytes

Signed-off-by: Xiaoming Ni <[email protected]>
---
  libbb/loop.c | 39 +++++++++++++++++++++++++--------------
  1 file changed, 25 insertions(+), 14 deletions(-)

diff --git a/libbb/loop.c b/libbb/loop.c
index 2200ccb9a..67e16ddb0 100644
--- a/libbb/loop.c
+++ b/libbb/loop.c
@@ -180,6 +180,28 @@ static void init_bb_loop_info(bb_loop_info *loopinfo, 
const char *file,
         loopinfo->lo_flags = (flags & ~BB_LO_FLAGS_READ_ONLY);
  }

+static int do_stat_and_mknod(const char *dev, const char *device, int i)
+{
+       struct stat statbuf;
+
+       IF_FEATURE_MOUNT_LOOP_CREATE(errno = 0;)
+       if (stat(dev, &statbuf) != 0 || !S_ISBLK(statbuf.st_mode)) {
+               if (ENABLE_FEATURE_MOUNT_LOOP_CREATE
+                               && errno == ENOENT
+                               && (!device)
+                       ) {
+                       /* Node doesn't exist, try to create it */
+                       if (mknod(dev, S_IFBLK|0644, makedev(7, i)) == 0) {
+                               return 0;
+                       }
+               }
+               /* Ran out of block devices, return failure */
+               return -1;
+       }
+       return 0;
+}
+
+
  /* Returns opened fd to the loop device, <0 on error.
   * *device is loop device to use, or if *device==NULL finds a loop device to
   * mount it on and sets *device to a strdup of that loop device name.
@@ -189,7 +211,6 @@ int FAST_FUNC set_loop(char **device, const char *file, 
unsigned long long offse
  {
         char dev[LOOP_NAMESIZE];
         char *try;
-       struct stat statbuf;
         int i, lfd, ffd, mode, rc;
         bb_loop_info loopinfo;

@@ -216,18 +237,8 @@ int FAST_FUNC set_loop(char **device, const char *file, 
unsigned long long offse
                         }
                 }

-               IF_FEATURE_MOUNT_LOOP_CREATE(errno = 0;)
-               if (stat(try, &statbuf) != 0 || !S_ISBLK(statbuf.st_mode)) {
-                       if (ENABLE_FEATURE_MOUNT_LOOP_CREATE
-                        && errno == ENOENT
-                        && (!*device)
-                       ) {
-                               /* Node doesn't exist, try to create it */
-                               if (mknod(dev, S_IFBLK|0644, makedev(7, i)) == 
0)
-                                       goto open_lfd;
-                       }
-                       /* Ran out of block devices, return failure */
-                       rc = -1;
+               rc = do_stat_and_mknod(try, *device, i);
+               if (rc == -1) {
                         break;
                 }
   open_lfd:
@@ -249,7 +260,7 @@ int FAST_FUNC set_loop(char **device, const char *file, 
unsigned long long offse
                 if (rc == lfd) {
                         /* SUCCESS! */
                         if (!*device)
-                               *device = xstrdup(dev);
+                               *device = xstrdup(try);
                         break;
                 }
                 close(lfd);
--
2.27.0

_______________________________________________
busybox mailing list
[email protected]
http://lists.busybox.net/mailman/listinfo/busybox
.


_______________________________________________
busybox mailing list
[email protected]
http://lists.busybox.net/mailman/listinfo/busybox

Reply via email to