]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
libfdisk: make qsort_r() optional
authorKarel Zak <kzak@redhat.com>
Fri, 4 Apr 2014 14:02:35 +0000 (16:02 +0200)
committerKarel Zak <kzak@redhat.com>
Fri, 4 Apr 2014 14:02:35 +0000 (16:02 +0200)
The function is no critical for fdisk functionality. The SUN label
verification will check for less issues. All the verification code is
optional ('v' fdisk command).

Signed-off-by: Karel Zak <kzak@redhat.com>
configure.ac
libfdisk/src/sun.c

index 5ffb25f1ab89a01d4ef0176f08a262e95722ae6d..70df7ff6a915d84fb0637ce4285dbf1b01e5992e 100644 (file)
@@ -311,6 +311,7 @@ AC_CHECK_FUNCS([ \
        personality \
        posix_fadvise \
        prctl \
+       qsort_r \
        rpmatch \
        scandirat \
        setresgid \
index 6d68c7aa9980e867b72089f4f60eed1d125b6105..734f5cd7d7679485ca3fa9c5b6525cd29f215f31 100644 (file)
@@ -363,6 +363,7 @@ static void fetch_sun(struct fdisk_context *cxt,
        }
 }
 
+#ifdef HAVE_QSORT_R
 static int verify_sun_cmp(int *a, int *b, void *data)
 {
     unsigned int *verify_sun_starts = (unsigned int *) data;
@@ -375,20 +376,20 @@ static int verify_sun_cmp(int *a, int *b, void *data)
            return 1;
     return -1;
 }
+#endif
 
 static int sun_verify_disklabel(struct fdisk_context *cxt)
 {
     uint32_t starts[SUN_MAXPARTITIONS], lens[SUN_MAXPARTITIONS], start, stop;
     uint32_t i,j,k,starto,endo;
+#ifdef HAVE_QSORT_R
     int array[SUN_MAXPARTITIONS];
     unsigned int *verify_sun_starts;
-
+#endif
     assert(cxt);
     assert(cxt->label);
     assert(fdisk_is_disklabel(cxt, SUN));
 
-    verify_sun_starts = starts;
-
     fetch_sun(cxt, starts, lens, &start, &stop);
 
     for (k = 0; k < 7; k++) {
@@ -422,12 +423,15 @@ static int sun_verify_disklabel(struct fdisk_context *cxt)
        }
     }
 
+#ifdef HAVE_QSORT_R
     for (i = 0; i < SUN_MAXPARTITIONS; i++) {
         if (lens[i])
             array[i] = i;
         else
             array[i] = -1;
     }
+    verify_sun_starts = starts;
+
     qsort_r(array,ARRAY_SIZE(array),sizeof(array[0]),
          (int (*)(const void *,const void *,void *)) verify_sun_cmp,
          verify_sun_starts);
@@ -447,6 +451,7 @@ static int sun_verify_disklabel(struct fdisk_context *cxt)
     start = (starts[array[i]] + lens[array[i]]);
     if (start < stop)
         fdisk_warnx(cxt, _("Unused gap - sectors %u-%u."), start, stop);
+#endif
     return 0;
 }