* libc/include/string.h (strcpy): Declare.
* libc/mlibc.c (strcpy): New function.
* module/mes/libc.mes (strcpy): New function.
(libc): Add it.
* scaffold/t.c (string_test): Test it.
size_t strlen (char const*);
int strcmp (char const*, char const*);
int strncmp (char const*, char const*, size_t);
+char *strcpy (char *dest, char const *src);
#endif // ! (__GNUC__ && POSIX)
#endif // __STRING_H
return *a - *b;
}
+char *
+strcpy (char *dest, char const *src)
+{
+ char *p = dest;
+ while (*src) *p++ = *src++;
+ *p = 0;
+ return dest;
+}
+
int
eputs (char const* s)
{
((decl (decl-spec-list (type-spec (fixed-type ,type)) (type-qual ,qual)) (init-declr-list (init-declr (ptr-declr (pointer) (ftn-declr (ident ,name) (param-list . ,param-list))))))
info)
+ ;; char *strcpy ();
+ ((decl (decl-spec-list (type-spec (fixed-type ,type))) (init-declr-list (init-declr (ptr-declr (pointer) (ftn-declr (ident ,name) (param-list . ,param-list))))))
+ info)
+
;; printf (char const* format, ...)
((decl (decl-spec-list (type-spec (fixed-type ,type))) (init-declr-list (init-declr (ftn-declr (ident ,name) (param-list ,param-list . (ellipsis))))))
info)
}
" parse-c99))
+(define (strcpy)
+ (format (current-error-port) "parsing: strcpy\n")
+ (with-input-from-string
+ "
+char *
+strcpy (char *dest, char const *src)
+{
+ char *p = dest;
+ while (*src) *p++ = *src++;
+ *p = 0;
+ return dest;
+}
+" parse-c99))
+
(define (itoa)
(format (current-error-port) "parsing: itoa\n")
(with-input-from-string
fputs
puts
strcmp
+ strcpy
itoa
isdigit
atoi
return make_tmps_test (g_cells);
}
+int
+string_test ()
+{
+ puts ("t: strcpy (buf, \"hallo\")\n");
+ char buf[10];
+ strcpy (buf, "hallo");
+ if (strcmp (buf, "hallo")) return 1;
+
+ return struct_test ();
+}
+
void
void_func ()
{
puts ("void_func ()\n");
void_func ();
- return struct_test ();
+ return string_test ();
}
#endif