- base = radix;
- goto print_unsigned;
-
- print_signed:
- n = va_arg(*argp, long);
- if (n >= 0) {
- u = n;
- sign_char = plus_sign;
- }
- else {
- u = -n;
- sign_char = '-';
- }
- goto print_num;
-
- print_unsigned:
- u = va_arg(*argp, unsigned long);
- goto print_num;
-
- print_num:
- {
- char buf[MAXBUF]; /* build number here */
- register char * p = &buf[MAXBUF-1];
- static char digits[] = "0123456789abcdef0123456789ABCDEF";
- char *prefix = 0;
-
- if (truncate) u = (long)((int)(u));
-
- if (u != 0 && altfmt) {
- if (base == 8)
- prefix = "0";
- else if (base == 16)
- prefix = "0x";
- }
-
- do {
- /* Print in the correct case */
- *p-- = digits[(u % base)+capitals];
- u /= base;
- } while (u != 0);
-
- length -= (&buf[MAXBUF-1] - p);
- if (sign_char)
- length--;
- if (prefix)
- length -= strlen((const char *) prefix);
-
- if (padc == ' ' && !ladjust) {
- /* blank padding goes before prefix */
- while (--length >= 0)
- (*putc)(' ');
- }
- if (sign_char)
- (*putc)(sign_char);
- if (prefix)
- while (*prefix)
- (*putc)(*prefix++);
- if (padc == '0') {
- /* zero padding goes after sign and prefix */
- while (--length >= 0)
- (*putc)('0');
- }
- while (++p != &buf[MAXBUF])
- (*putc)(*p);
-
- if (ladjust) {
- while (--length >= 0)
- (*putc)(' ');
- }
- break;
- }
+ base = radix;
+ goto print_unsigned;
+
+print_signed:
+ if (long_long) {
+ n = va_arg(argp, long long);
+ } else {
+ n = va_arg(argp, int);
+ }
+ switch (numeric_type) {
+ case SHORT:
+ n = (short)n;
+ break;
+ case CHAR:
+ n = (char)n;
+ break;
+ default:
+ break;
+ }
+ if (n >= 0) {
+ u = n;
+ sign_char = plus_sign;
+ } else {
+ u = -n;
+ sign_char = '-';
+ }
+ goto print_num;
+
+print_unsigned:
+ if (long_long) {
+ u = va_arg(argp, unsigned long long);
+ } else {
+ u = va_arg(argp, unsigned int);
+ }
+ switch (numeric_type) {
+ case SHORT:
+ u = (unsigned short)u;
+ break;
+ case CHAR:
+ u = (unsigned char)u;
+ break;
+ default:
+ break;
+ }
+ goto print_num;
+
+print_num:
+ {
+ char buf[MAXBUF];/* build number here */
+ char * p = &buf[MAXBUF - 1];
+ static char digits[] = "0123456789abcdef0123456789ABCDEF";
+ const char *prefix = NULL;
+
+ if (truncate) {
+ u = (long long)((int)(u));
+ }
+
+ if (doprnt_hide_pointers && is_log) {
+ const char str[] = "<ptr>";
+ const char* strp = str;
+ int strl = sizeof(str) - 1;
+
+#ifdef HAS_APPLE_PAC
+ /**
+ * Strip out the pointer authentication code before
+ * checking whether the pointer is a kernel address.
+ */
+ u = (unsigned long long)VM_KERNEL_STRIP_PTR(u);
+#endif /* HAS_APPLE_PAC */
+
+ if (u >= VM_MIN_KERNEL_AND_KEXT_ADDRESS && u <= VM_MAX_KERNEL_ADDRESS) {
+ while (*strp != '\0') {
+ (*putc)(*strp, arg);
+ strp++;
+ }
+ nprinted += strl;
+ break;
+ }
+ }
+
+ if (u != 0 && altfmt) {
+ if (base == 8) {
+ prefix = "0";
+ } else if (base == 16) {
+ prefix = "0x";
+ }
+ }
+
+ do {
+ /* Print in the correct case */
+ *p-- = digits[(u % base) + capitals];
+ u /= base;
+ } while (u != 0);
+
+ length -= (int)(&buf[MAXBUF - 1] - p);
+ if (sign_char) {
+ length--;
+ }
+ if (prefix) {
+ length -= (int)strlen(prefix);
+ }
+
+ if (padc == ' ' && !ladjust) {
+ /* blank padding goes before prefix */
+ while (--length >= 0) {
+ (*putc)(' ', arg);
+ nprinted++;
+ }
+ }
+ if (sign_char) {
+ (*putc)(sign_char, arg);
+ nprinted++;
+ }
+ if (prefix) {
+ while (*prefix) {
+ (*putc)(*prefix++, arg);
+ nprinted++;
+ }
+ }
+ if (padc == '0') {
+ /* zero padding goes after sign and prefix */
+ while (--length >= 0) {
+ (*putc)('0', arg);
+ nprinted++;
+ }
+ }
+ while (++p != &buf[MAXBUF]) {
+ (*putc)(*p, arg);
+ nprinted++;
+ }
+
+ if (ladjust) {
+ while (--length >= 0) {
+ (*putc)(' ', arg);
+ nprinted++;
+ }
+ }
+ break;
+ }