aboutsummaryrefslogtreecommitdiffstats
path: root/menu/string.c
diff options
context:
space:
mode:
Diffstat (limited to 'menu/string.c')
-rw-r--r--menu/string.c73
1 files changed, 73 insertions, 0 deletions
diff --git a/menu/string.c b/menu/string.c
new file mode 100644
index 00000000..9d90b5b9
--- /dev/null
+++ b/menu/string.c
@@ -0,0 +1,73 @@
+/* -*- c -*- ------------------------------------------------------------- *
+ *
+ * Copyright 2004 Murali Krishnan Ganapathy - All Rights Reserved
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, Inc., 53 Temple Place Ste 330,
+ * Bostom MA 02111-1307, USA; either version 2 of the License, or
+ * (at your option) any later version; incorporated herein by reference.
+ *
+ * ----------------------------------------------------------------------- */
+
+#include "string.h"
+
+/* String routines */
+void *memset(void *buf, int chr, unsigned int len)
+{
+ asm("cld ; rep ; stosb" : "+D" (buf), "+c" (len) : "a" (chr));
+ return buf;
+}
+
+char *strcpy(char *dst, const char *src)
+{
+ char *r = dst;
+ char c;
+
+ do {
+ c = *src++;
+ *dst++ = c;
+ } while ( c );
+
+ return r;
+}
+
+char *strcat(char *dst, const char * src)
+{
+ char *r = dst;
+
+ while (*dst++); // Find end of string
+ dst--;
+ while (*src) *dst++ = *src++; // Append
+ *dst = '\0'; // Terminate string
+
+ return r;
+}
+
+void dstrcpy(char *dst, const char *src) // DOS strcpy: Make it $ terminated and null terminated
+{
+ while ( *src )
+ *dst++ = *src++;
+
+ *dst++ = '$';
+ *dst = '\0';
+}
+
+int strcmp(const char *a, const char*b)
+{
+ while (*a)
+ {
+ if (*a < *b) return -1;
+ if (*a++ > *b++) return 1;
+ }
+ if (*b) return 1; else return 0;
+}
+
+int strlen(const char *a)
+{
+ int ans = 0;
+
+ while (*a++) ans++;
+ return ans;
+}
+