--- fsx.c.orig  2010-02-21 22:57:09.000000000 +0100
+++ fsx.c       2010-02-21 22:43:05.000000000 +0100
@@ -190,6 +190,9 @@

       va_start(args, fmt);
       vfprintf(stdout, fmt, args);
+       va_end(args);
+
+       va_start(args, fmt);
       if (fsxlogf)
               vfprintf(fsxlogf, fmt, args);
       va_end(args);
@@ -198,7 +201,7 @@
void
prterr(const char *prefix)
{
-       prt("%s%s%s\n", prefix, prefix ? ": " : "", strerror(errno));
+       prt("%s%s%s\n", prefix ? prefix : "", prefix ? ": " : "", strerror(errno));
}


@@ -701,12 +704,12 @@

       if ((p = (char *)mmap(0, map_size, PROT_READ | PROT_WRITE,
                   MAP_FILE | MAP_SHARED, fd,
-                   (off_t)(offset - pg_offset))) == (char *)-1) {
+                   (off_t)(offset - pg_offset))) == MAP_FAILED) {
               prterr("domapwrite: mmap");
               report_failure(202);
       }
       memcpy(p + pg_offset, good_buf + offset, size);
-       if (msync(p, map_size, 0) != 0) {
+       if (msync(p, map_size, MS_SYNC) != 0) {
               prterr("domapwrite: msync");
               report_failure(203);
       }
@@ -1141,6 +1144,7 @@
       for (i = 0; i < maxfilelen; i++)
               original_buf[i] = random() % 256;
       good_buf = (char *) malloc(maxfilelen);
+       if (good_buf == NULL) errx(1,"malloc(%d)\n",maxfilelen);
       memset(good_buf, '\0', maxfilelen);
       temp_buf = (char *) malloc(maxoplen);
       memset(temp_buf, '\0', maxoplen);