+ 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;