ref: 9bd2c2d1765c8a63cdaddfa1590e03a1572659f1
parent: 0db68816a181050ffee307935f9a95884d0d2f8a
author: mkf <mkf@cloud9p.org>
date: Wed Dec 6 00:54:17 IST 2023
scanf: tabs, use cons, make internal functions static
--- a/libc/scanf.c
+++ b/libc/scanf.c
@@ -1,69 +1,66 @@
#include <u.h>
#include <libc.h>
-
-#include <vga.h>
-#include <ps2.h>
+#include <cons.h>
#include <mem.h>
-char*
+static char*
get_char()
{- int i = 0;
- char *buff = malloc(10), c;
- while (1 == 1)
- {- c = ps2_getc();
- vga_putc(c);
- if (c != '\r')
- {- buff[i] = c;
- i++;
- }
- else break;
- }
- return buff;
+ int i = 0;
+ char *buff = malloc(10), c;
+ while (1 == 1)
+ {+ c = cons_read(defcons);
+ cons_putc(defcons, c);
+ if (c != '\r')
+ {+ buff[i] = c;
+ i++;
+ }
+ else break;
+ }
+ return buff;
}
int
scanf(char *str, ...)
{- va_list ap;
- va_start(ap, str);
+ va_list ap;
+ va_start(ap, str);
- int count = 0;
- char *buffer, *temp;
+ int count = 0;
+ char *buffer, *temp;
- while (*str != '\0')
- {- if (*str == '%')
- {- buffer = get_char();
- str++;
- switch(*str)
- {- case 'c':
- *va_arg(ap, char*) = buffer[0];
- count++;
- break;
- case 's':
- *va_arg(ap, char**) = buffer;
- count++;
- break;
- case 'd':
- *va_arg(ap, int*) = strtol(buffer, &temp, 10);
- count++;
- break;
- case 'x':
- *va_arg(ap, int*) = strtol(buffer, &temp, 16);
- count++;
- break;
- default:
- break;
- }
- }
- str++;
- }
- va_end(ap);
- return count;
+ while (*str != '\0')
+ {+ if (*str == '%')
+ {+ buffer = get_char();
+ str++;
+ switch(*str)
+ {+ case 'c':
+ *va_arg(ap, char*) = buffer[0];
+ count++;
+ break;
+ case 's':
+ *va_arg(ap, char**) = buffer;
+ count++;
+ break;
+ case 'd':
+ *va_arg(ap, int*) = strtol(buffer, &temp, 10);
+ count++;
+ break;
+ case 'x':
+ *va_arg(ap, int*) = strtol(buffer, &temp, 16);
+ count++;
+ break;
+ default:
+ break;
+ }
+ }
+ str++;
+ }
+ va_end(ap);
+ return count;
}
-
--
⑨