Move strlower() from find to lib.
authorRob Landley <rob@landley.net>
Sat, 1 Aug 2015 16:48:59 +0000 (11:48 -0500)
committerRob Landley <rob@landley.net>
Sat, 1 Aug 2015 16:48:59 +0000 (11:48 -0500)
lib/lib.c
lib/lib.h
toys/posix/find.c

index 05e377f..81c989a 100644 (file)
--- a/lib/lib.c
+++ b/lib/lib.c
@@ -291,6 +291,41 @@ int stridx(char *haystack, char needle)
   return off-haystack;
 }
 
+char *strlower(char *s)
+{
+  char *try, *new;
+
+  if (!CFG_TOYBOX_I18N) {
+    try = new = xstrdup(s);
+    for (; *s; s++) *(new++) = tolower(*s);
+  } else {
+    // I can't guarantee the string _won't_ expand during reencoding, so...?
+    try = new = xmalloc(strlen(s)*2+1);
+
+    while (*s) {
+      wchar_t c;
+      int len = mbrtowc(&c, s, MB_CUR_MAX, 0);
+
+      if (len < 1) *(new++) = *(s++);
+      else {
+        s += len;
+        // squash title case too
+        c = towlower(c);
+
+        // if we had a valid utf8 sequence, convert it to lower case, and can't
+        // encode back to utf8, something is wrong with your libc. But just
+        // in case somebody finds an exploit...
+        len = wcrtomb(new, c, 0);
+        if (len < 1) error_exit("bad utf8 %x", (int)c);
+        new += len;
+      }
+    }
+    *new = 0;
+  }
+
+  return try;
+}
+
 int unescape(char c)
 {
   char *from = "\\abefnrtv", *to = "\\\a\b\033\f\n\r\t\v";
index 3183f32..39212df 100644 (file)
--- a/lib/lib.h
+++ b/lib/lib.h
@@ -160,6 +160,7 @@ long xstrtol(char *str, char **end, int base);
 long atolx(char *c);
 long atolx_range(char *numstr, long low, long high);
 int stridx(char *haystack, char needle);
+char *strlower(char *s);
 int unescape(char c);
 int strstart(char **a, char *b);
 off_t fdlength(int fd);
index a11a910..99cf5e2 100644 (file)
@@ -141,41 +141,6 @@ static void do_print(struct dirtree *new, char c)
   free(s);
 }
 
-char *strlower(char *s)
-{
-  char *try, *new;
-
-  if (!CFG_TOYBOX_I18N) {
-    try = new = xstrdup(s);
-    for (; *s; s++) *(new++) = tolower(*s);
-  } else {
-    // I can't guarantee the string _won't_ expand during reencoding, so...?
-    try = new = xmalloc(strlen(s)*2+1);
-
-    while (*s) {
-      wchar_t c;
-      int len = mbrtowc(&c, s, MB_CUR_MAX, 0);
-
-      if (len < 1) *(new++) = *(s++);
-      else {
-        s += len;
-        // squash title case too
-        c = towlower(c);
-
-        // if we had a valid utf8 sequence, convert it to lower case, and can't
-        // encode back to utf8, something is wrong with your libc. But just
-        // in case somebody finds an exploit...
-        len = wcrtomb(new, c, 0);
-        if (len < 1) error_exit("bad utf8 %x", (int)c);
-        new += len;
-      }
-    }
-    *new = 0;
-  }
-
-  return try;
-}
-
 // Call this with 0 for first pass argument parsing and syntax checking (which
 // populates argdata). Later commands traverse argdata (in order) when they
 // need "do once" results.