Example #1
0
int kprintf(const char* fmt, ...)
{
  va_list ap;
  kprintf_res = 0;
  unsigned long n = 0;

  va_start(ap, fmt);

  while(*fmt)
  {
    if(*fmt == '%')
    {
      switch(*++fmt)
      {
        case 's':
          kputs(va_arg(ap, char*));
          break;

        case 'd':
          n = va_arg(ap, unsigned long int);
          kputn(n, 10);
          break;

        case 'o':
          n = va_arg(ap, unsigned long int);
          kputn(n, 8);
          break;

        case 'x':
          n = va_arg(ap, unsigned long int);
          kputn(n, 16);
          break;

        case '%':
          kputc('%');
          break;

        case '\0':
          goto out;
          break;
        default:
          kputc('%');
          kputc(*fmt);
          break;
      }
    }
    else
      kputc(*fmt);

    fmt++;
  }
Example #2
0
u32
kprintf(const char *fmt, ...)
{
    const char *s;
    int n;
    va_list ap;

    va_start(ap, fmt);
    ret = 0;

    while (*fmt) {
        if (*fmt == '%') {
            fmt++;

            switch (*fmt) {
                case 's':
                    s = va_arg(ap, char *);
                    kputs(s);
                    break;
                case 'd':
                case 'u':
                    n = va_arg(ap, int);
                    kputn(n, 10);
                    break;
                case 'x':
                case 'p':
                    n = va_arg(ap, int);
                    kputn(n, 16);
                    break;
                case '%':
                    kputc('%');
                    break;
                case '\0':
                    goto out;
                default:
                    kputc('%');
                    kputc(*fmt);
                    break;
            }
        }
        else
Example #3
0
int kprintf(const char* fmt, ...) {
    va_list ap;
    const char* s;
    unsigned long n;
    char c;

    va_start(ap, fmt);
    kprintf_res = 0;
    while (*fmt) {
        if (*fmt == '%') {
            fmt++;
            switch (*fmt) {
            case 's':
                s = va_arg(ap, char*);
                kputs(s);
                break;
            case 'd':
            case 'u':
                n = va_arg(ap, unsigned long int);
                kputn(n, 10);
                break;
            case 'x':
            case 'p':
                n = va_arg(ap, unsigned long int);
                kputn(n, 16);
                break;
            case 'c':
                c = va_arg(ap, int);
                kputc(c);
                break;
            case '%':
                kputc('%');
                break;
            case '\0':
                goto out;
            default:
                kputc('%');
                kputc(*fmt);
                break;
            }
        } else {
Example #4
0
void kaprintf(const char* format, int ** args) {
	int pad;
	char padfill;
	signed long long value = 0;

	while (*format) {
		if (*format == '%') {
			format++;

			pad = 0;
			if (*format == '0') {
				padfill = '0';
				format++;
			} else {
				padfill = ' ';
			}

			while (*format >= '0' && *format <= '9') {
				pad = pad * 10 + *format++ - '0';
			}

			if (format[0] == 'l' && format[1] == 'l' && (format[2] == 'd' || format[2] == 'i' || format[2] == 'o' || format[2] == 'u' || format[2] == 'x')) {
				value = *(unsigned long long*)(*args);
				*args += 2;

				format += 2;
			} else if (format[0] == 'd' || format[0] == 'u') {
				value = *(*args)++;
				if (value < 0) {
					console_putchar_ansi('-');
					pad--;
					value = -value;
				}
			} else if (format[0] == 'i' || format[0] == 'o' || format[0] == 'p' || format[0] == 'x') {
				value = *(*args)++;
				value = value & 0xffffffff;
			}

			switch (*format) {
				case 0:
					return;
				case '%':
					console_putchar_ansi('%');
					break;
				case 'c':
					console_putchar_ansi(*(*args)++);
					break;
				case 'd':
				case 'i':
				case 'u':
					kputn(value, 10, pad, padfill);
					break;
				case 'o':
					kputn(value, 8, pad, padfill);
					break;
				case 'p':
				case 'x':
					kputn(value, 16, pad, padfill);
					break;
				case 's':
					console_writestring((char*)*(*args)++);
					break;
				default:
					console_putchar_ansi('%');
					console_putchar_ansi(*format);
					break;
			}
			format++;
		} else {
			console_putchar_ansi(*format++);
		}
	}
//	terminal_flush_ansi_escape_sequence();
}