summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/lib.h12
-rw-r--r--src/lib.c11
2 files changed, 23 insertions, 0 deletions
diff --git a/include/lib.h b/include/lib.h
index b368636..43b95a6 100644
--- a/include/lib.h
+++ b/include/lib.h
@@ -32,6 +32,18 @@ extern void *memset(void *restrict dest, int c, unsigned long n);
extern int strncmp(const char *restrict s1, const char *restrict s2, unsigned long n);
/**
+ * Copys the string pointed to by src , into a string at the buffer pointer to by dest.
+ * The dest buffer must be long enough to hold src.
+ */
+extern char *strcpy(char *restrict dest, const char *restrict src);
+
+/**
+ * Copys the string pointed to by src , into a string at the buffer pointer to by dest.
+ * The dest buffer must be long enough to hold src or size n.
+ */
+extern char *strncpy(char *restrict dest, const char *restrict src, unsigned long n);
+
+/**
* @returns 1 if c is a space
*/
extern int isspace(int c);
diff --git a/src/lib.c b/src/lib.c
index 66bd0c2..1f57f83 100644
--- a/src/lib.c
+++ b/src/lib.c
@@ -43,6 +43,17 @@ int strncmp(const char *restrict lhs, const char *restrict rhs, unsigned long n)
return *l - *r;
}
+char *strcpy(char *restrict dest, const char *restrict src) {
+ for(; (*dest = *src); dest++, src++);
+ return dest;
+}
+
+char *strncpy(char *restrict dest, const char *restrict src, unsigned long n) {
+ for(; (*dest = *src) && n; dest++, src++, n--);
+ memset(dest, 0, n);
+ return dest;
+}
+
int isspace(int c) {
switch (c) {
case ' ':