From: Karel Zak Date: Fri, 4 Apr 2014 14:02:35 +0000 (+0200) Subject: libfdisk: make qsort_r() optional X-Git-Tag: v2.24.2~44 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=9ae50bae04183ede08e69117b5800b780c031a4c;p=thirdparty%2Futil-linux.git libfdisk: make qsort_r() optional 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 --- diff --git a/configure.ac b/configure.ac index 35a1f260eb..5052605c16 100644 --- a/configure.ac +++ b/configure.ac @@ -303,6 +303,7 @@ AC_CHECK_FUNCS([ \ personality \ posix_fadvise \ prctl \ + qsort_r \ rpmatch \ scandirat \ setresgid \ diff --git a/libfdisk/src/sun.c b/libfdisk/src/sun.c index e73c701fb7..9f1d715244 100644 --- a/libfdisk/src/sun.c +++ b/libfdisk/src/sun.c @@ -361,6 +361,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; @@ -373,20 +374,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++) { @@ -421,12 +422,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); @@ -446,6 +450,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 %d-%d."), start, stop); +#endif return 0; }