diff options
author | Karel Zak <kzak@redhat.com> | 2014-04-04 16:02:35 +0200 |
---|---|---|
committer | Karel Zak <kzak@redhat.com> | 2014-04-23 11:55:08 +0200 |
commit | 9ae50bae04183ede08e69117b5800b780c031a4c (patch) | |
tree | 4815588d1c50ef7f52ddebcae82f057dd5b5d8f5 | |
parent | e0a487090cc5ffb2e3931433db585c9dd3b795b5 (diff) | |
download | util-linux-9ae50bae04183ede08e69117b5800b780c031a4c.tar.gz |
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 <kzak@redhat.com>
-rw-r--r-- | configure.ac | 1 | ||||
-rw-r--r-- | libfdisk/src/sun.c | 11 |
2 files changed, 9 insertions, 3 deletions
diff --git a/configure.ac b/configure.ac index 35a1f260e..5052605c1 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 e73c701fb..9f1d71524 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; } |