Fix gcc c90 compliance warnings
[zfs.git] / lib / libuutil / uu_misc.c
index 74ec177..66a6ca5 100644 (file)
  */
 
 /*
- * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
- * Use is subject to license terms.
+ * Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved.
  */
 
-#pragma ident  "%Z%%M% %I%     %E% SMI"
-
 #include "libuutil_common.h"
 
 #include <assert.h>
@@ -39,6 +36,7 @@
 #include <sys/debug.h>
 #include <thread.h>
 #include <unistd.h>
+#include <ctype.h>
 
 #if !defined(TEXT_DOMAIN)
 #define        TEXT_DOMAIN "SYS_TEST"
@@ -211,7 +209,11 @@ uu_panic(const char *format, ...)
 int
 assfail(const char *astring, const char *file, int line)
 {
+#if defined(__STDC__) && __STDC_VERSION__ - 0 >= 199901L
+       __assert_c99(astring, file, line, "unknown func");
+#else
        __assert(astring, file, line);
+#endif
        /*NOTREACHED*/
        return (0);
 }
@@ -253,3 +255,30 @@ uu_init(void)
 {
        (void) pthread_atfork(uu_lockup, uu_release, uu_release_child);
 }
+
+/*
+ * Dump a block of memory in hex+ascii, for debugging
+ */
+void
+uu_dump(FILE *out, const char *prefix, const void *buf, size_t len)
+{
+       const unsigned char *p = buf;
+       int i;
+
+       for (i = 0; i < len; i += 16) {
+               int j;
+
+               (void) fprintf(out, "%s", prefix);
+               for (j = 0; j < 16 && i + j < len; j++) {
+                       (void) fprintf(out, "%2.2x ", p[i + j]);
+               }
+               for (; j < 16; j++) {
+                       (void) fprintf(out, "   ");
+               }
+               for (j = 0; j < 16 && i + j < len; j++) {
+                       (void) fprintf(out, "%c",
+                           isprint(p[i + j]) ? p[i + j] : '.');
+               }
+               (void) fprintf(out, "\n");
+       }
+}