summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKarel Zak2012-10-23 15:10:26 +0200
committerKarel Zak2012-10-23 15:10:26 +0200
commit8f3b568cd7c7f618ad22ef7a3d07c3db28dfa77e (patch)
tree9c2ff7c7b71125397118cfdb900f8c9245e1c994
parentmisc: make readlink() usage more robust (diff)
downloadkernel-qcow2-util-linux-8f3b568cd7c7f618ad22ef7a3d07c3db28dfa77e.tar.gz
kernel-qcow2-util-linux-8f3b568cd7c7f618ad22ef7a3d07c3db28dfa77e.tar.xz
kernel-qcow2-util-linux-8f3b568cd7c7f618ad22ef7a3d07c3db28dfa77e.zip
fdisk: fix compiler warning [-Wpointer-arith] and floating point exception
Signed-off-by: Karel Zak <kzak@redhat.com>
-rw-r--r--fdisks/fdisksgilabel.c24
-rw-r--r--sys-utils/readprofile.c2
2 files changed, 14 insertions, 12 deletions
diff --git a/fdisks/fdisksgilabel.c b/fdisks/fdisksgilabel.c
index 665d3e75b..79313624e 100644
--- a/fdisks/fdisksgilabel.c
+++ b/fdisks/fdisksgilabel.c
@@ -393,25 +393,26 @@ compare_start(struct fdisk_context *cxt, const void *x, const void *y) {
return (a > b) ? 1 : -1;
}
-static void generic_swap(void *a, void *b, int size)
+static void generic_swap(void *a0, void *b0, int size)
{
- char t;
+ char *a = a0, *b = b0;
- do {
- t = *(char *)a;
- *(char *)a++ = *(char *)b;
- *(char *)b++ = t;
- } while (--size > 0);
+ for (; size > 0; --size, a++, b++) {
+ char t = *a;
+ *a = *b;
+ *b = t;
+ }
}
/* heap sort, based on Matt Mackall's linux kernel version */
-static void sort(void *base, size_t num, size_t size, struct fdisk_context *cxt,
+static void sort(void *base0, size_t num, size_t size, struct fdisk_context *cxt,
int (*cmp_func)(struct fdisk_context *, const void *, const void *))
{
/* pre-scale counters for performance */
int i = (num/2 - 1) * size;
size_t n = num * size, c, r;
+ char *base = base0;
/* heapify */
for ( ; i >= 0; i -= size) {
@@ -493,13 +494,14 @@ static int sgi_verify_disklabel(struct fdisk_context *cxt)
}
for (i=1, start=0; i<sortcount; i++) {
int cylsize = sgi_get_nsect(cxt) * sgi_get_ntrks(cxt);
- if ((sgi_get_start_sector(cxt, Index[i]) % cylsize) != 0) {
+
+ if (cylsize && (sgi_get_start_sector(cxt, Index[i]) % cylsize) != 0) {
if (debug) /* I do not understand how some disks fulfil it */
if (verbose)
printf(_("Partition %d does not start on cylinder boundary.\n"),
Index[i]+1);
}
- if (sgi_get_num_sectors(cxt, Index[i]) % cylsize != 0) {
+ if (cylsize && sgi_get_num_sectors(cxt, Index[i]) % cylsize != 0) {
if (debug) /* I do not understand how some disks fulfil it */
if (verbose)
printf(_("Partition %d does not end on cylinder boundary.\n"),
@@ -526,7 +528,7 @@ static int sgi_verify_disklabel(struct fdisk_context *cxt)
start = sgi_get_start_sector(cxt, Index[i])
+ sgi_get_num_sectors(cxt, Index[i]);
/* Align free space on cylinder boundary */
- if (start % cylsize)
+ if (cylsize && start % cylsize)
start += cylsize - (start % cylsize);
if (debug > 1) {
if (verbose)
diff --git a/sys-utils/readprofile.c b/sys-utils/readprofile.c
index 04d9c7375..5b77c4956 100644
--- a/sys-utils/readprofile.c
+++ b/sys-utils/readprofile.c
@@ -229,7 +229,7 @@ int main(int argc, char **argv)
to_write = 1;
}
/* try to become root, just in case */
- setuid(0);
+ ignore_result( setuid(0) );
fd = open(defaultpro, O_WRONLY);
if (fd < 0)
err(EXIT_FAILURE, "%s", defaultpro);