Author: avg
Date: Mon Dec 19 14:55:14 2011
New Revision: 228710
URL: http://svn.freebsd.org/changeset/base/228710

Log:
  opensolaris compat: fix vcmn_err so that panic(9) produces a proper message
  
  ... instead of just a verbatim format string.
  
  Reviewed by:  pjd
  MFC after:    1 week

Modified:
  head/sys/cddl/compat/opensolaris/kern/opensolaris_cmn_err.c

Modified: head/sys/cddl/compat/opensolaris/kern/opensolaris_cmn_err.c
==============================================================================
--- head/sys/cddl/compat/opensolaris/kern/opensolaris_cmn_err.c Mon Dec 19 
14:53:42 2011        (r228709)
+++ head/sys/cddl/compat/opensolaris/kern/opensolaris_cmn_err.c Mon Dec 19 
14:55:14 2011        (r228710)
@@ -28,29 +28,35 @@ void
 vcmn_err(int ce, const char *fmt, va_list adx)
 {
        char buf[256];
+       const char *prefix;
 
+       prefix = NULL; /* silence unwitty compilers */
        switch (ce) {
        case CE_CONT:
-               snprintf(buf, sizeof(buf), "Solaris(cont): %s\n", fmt);
+               prefix = "Solaris(cont): ";
                break;
        case CE_NOTE:
-               snprintf(buf, sizeof(buf), "Solaris: NOTICE: %s\n", fmt);
+               prefix = "Solaris: NOTICE: ";
                break;
        case CE_WARN:
-               snprintf(buf, sizeof(buf), "Solaris: WARNING: %s\n", fmt);
+               prefix = "Solaris: WARNING: ";
                break;
        case CE_PANIC:
-               snprintf(buf, sizeof(buf), "Solaris(panic): %s\n", fmt);
+               prefix = "Solaris(panic): ";
                break;
        case CE_IGNORE:
                break;
        default:
                panic("Solaris: unknown severity level");
        }
-       if (ce == CE_PANIC)
-               panic("%s", buf);
-       if (ce != CE_IGNORE)
-               vprintf(buf, adx);
+       if (ce == CE_PANIC) {
+               vsnprintf(buf, sizeof(buf), fmt, adx);
+               panic("%s%s", prefix, buf);
+       }
+       if (ce != CE_IGNORE) {
+               printf("%s", prefix);
+               vprintf(fmt, adx);
+       }
 }
 
 void
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to