diff options
-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 5ffb25f1a..70df7ff6a 100644 --- a/configure.ac +++ b/configure.ac @@ -311,6 +311,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 6d68c7aa9..734f5cd7d 100644 --- a/libfdisk/src/sun.c +++ b/libfdisk/src/sun.c @@ -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; } |