xnu-1228.12.14.tar.gz
[apple/xnu.git] / osfmk / kern / printf.c
index 6faceb7aaa58dbd44bd96e28c31bedfc399f312b..f8376b4197ff4302da10ee7041a7470a0624af4a 100644 (file)
@@ -435,12 +435,13 @@ __doprnt(
 
                    n = 0;
 
-                   while (*p != '\0') {
-                       if (++n > prec || (length > 0 && n > length))
-                           break;
-
-                       (*putc)(*p++, arg);
-                       nprinted++;
+                   while ((n < prec) && (!(length > 0 && n >= length))) {
+                           if (*p == '\0') {
+                                   break;
+                           }
+                           (*putc)(*p++, arg);
+                           nprinted++;
+                           n++;
                    }
 
                    if (n < length && ladjust) {
@@ -744,7 +745,8 @@ conslog_putc(
                cnputc(c);
 
 #ifdef MACH_BSD
-       log_putc(c);
+       if (debug_mode == 0)
+               log_putc(c);
 #endif
 }
 
@@ -794,6 +796,13 @@ consdebug_putc(char c)
                        PE_kputc(c);
 }
 
+
+void
+consdebug_log(char c)
+{
+       debug_putc(c);
+}
+
 int
 kdb_printf(const char *fmt, ...)
 {
@@ -805,6 +814,17 @@ kdb_printf(const char *fmt, ...)
        return 0;
 }
 
+int
+kdb_log(const char *fmt, ...)
+{
+       va_list listp;
+
+       va_start(listp, fmt);
+       _doprnt(fmt, &listp, consdebug_log, 16);
+       va_end(listp);
+       return 0;
+}
+
 static void
 copybyte(int c, void *arg)
 {