#include <kern/types.h>
#include <kern/libc.h>
+#include <kern/console.h>
#include <stdarg.h>
#include <limits.h>
static const int has_precision = 0x8000;
static void printf_string(char *buf, size_t &opos, size_t limit,
- char *src, size_t len)
+ const char *src, size_t len)
{
if (opos < limit) {
size_t olen = opos + len <= limit ? len : limit - opos;
break;
case 's': {
- char *arg = va_arg(args, char *);
+ const char *arg = va_arg(args, const char *);
if (!arg)
arg = "(null)";
}
case 'p': {
- void *arg = va_arg(args, void *);
+ const void *arg = va_arg(args, const void *);
printf_num(buf, opos, size, (ulong)arg, 16,
fieldwidth, precision, flags);
return orig;
}
+char *strcat(char *dest, const char *src)
+{
+ char *orig = dest;
+ dest += strlen(dest);
+
+ do {
+ *dest = *src++;
+ } while (*dest++);
+
+ return orig;
+}
+
+char *strncat(char *dest, const char *src, size_t len)
+{
+ char *orig = dest;
+ int orig_len = strlen(dest);
+
+ len -= orig_len;
+ dest += orig_len;
+
+ while (len--) {
+ *dest = *src++;
+
+ if (!*dest++)
+ break;
+ }
+
+ bzero(dest, len);
+ return orig;
+}
+
void bzero(void *b, size_t len)
{
char *c = static_cast<char *>(b);