]> granicus.if.org Git - curl/commitdiff
libcurl private function Curl_memrchr() now in curl_memrchr.c and curl_memrchr.h
authorYang Tse <yangsita@gmail.com>
Mon, 28 Sep 2009 16:05:20 +0000 (16:05 +0000)
committerYang Tse <yangsita@gmail.com>
Mon, 28 Sep 2009 16:05:20 +0000 (16:05 +0000)
lib/Makefile.Watcom
lib/Makefile.inc
lib/Makefile.riscos
lib/Makefile.vc6
lib/cookie.c
lib/curl_memrchr.c [new file with mode: 0644]
lib/curl_memrchr.h [new file with mode: 0644]
lib/makefile.amiga
packages/Symbian/group/libcurl.mmp
packages/TPF/curl.mak

index 610ae640b16ae9c91669f0592c96f5068c5a21bb..306d876b59d30ec3d1663f9335e39ba9c0180617 100644 (file)
@@ -70,7 +70,7 @@ OBJS = $(OBJ_DIR)\base64.obj           $(OBJ_DIR)\connect.obj        &
        $(OBJ_DIR)\timeval.obj          $(OBJ_DIR)\transfer.obj       &
        $(OBJ_DIR)\url.obj              $(OBJ_DIR)\version.obj        &
        $(OBJ_DIR)\slist.obj            $(OBJ_DIR)\nonblock.obj       &
-       $(OBJ_DIR)\curl_rand.obj
+       $(OBJ_DIR)\curl_rand.obj        $(OBJ_DIR)\curl_memrchr.obj
 
 #
 # Use $(OBJS) as a template to generate $(OBJS_STAT) and $(OBJS_DYN).
@@ -194,7 +194,7 @@ $(OBJ_DIR)\cookie.obj: cookie.c setup.h config-win32.h ..\include\curl\curlbuild
   ..\include\curl\multi.h urldata.h cookie.h ..\include\curl\curl.h &
   formdata.h timeval.h http_chunks.h hostip.h hash.h llist.h &
   curl_addrinfo.h splay.h strequal.h strtok.h sendf.h curl_memory.h share.h &
-  strtoofft.h rawstr.h memdebug.h
+  strtoofft.h rawstr.h memdebug.h curl_memrchr.h
 $(OBJ_DIR)\http.obj: http.c setup.h config-win32.h ..\include\curl\curlbuild.h &
   ..\include\curl\curlrules.h setup_once.h urldata.h cookie.h &
   ..\include\curl\curl.h ..\include\curl\curlver.h &
@@ -548,3 +548,9 @@ $(OBJ_DIR)\curl_rand.obj: curl_rand.c setup.h config-win32.h &
   ..\include\curl\curlrules.h ..\include\curl\easy.h &
   ..\include\curl\multi.h ..\include\curl\curl.h curl_rand.h &
   ..\include\curl\mprintf.h curl_memory.h memdebug.h
+$(OBJ_DIR)\curl_memrchr.obj: curl_memrchr.c setup.h config-win32.h &
+  ..\include\curl\curlbuild.h ..\include\curl\curlrules.h setup_once.h &
+  ..\include\curl\curl.h ..\include\curl\curlver.h &
+  ..\include\curl\curlrules.h ..\include\curl\easy.h &
+  ..\include\curl\multi.h ..\include\curl\curl.h curl_memrchr.h &
+  ..\include\curl\mprintf.h curl_memory.h memdebug.h
index 34961229c1813379142f0d03c05faab6100b008e..1b619a350e6fbfd1eb9d76f99efae0d535521bc3 100644 (file)
@@ -10,7 +10,8 @@ CSOURCES = file.c timeval.c base64.c hostip.c progress.c formdata.c   \
   hostares.c hostasyn.c hostip4.c hostip6.c hostsyn.c hostthre.c       \
   inet_ntop.c parsedate.c select.c gtls.c sslgen.c tftp.c splay.c      \
   strdup.c socks.c ssh.c nss.c qssl.c rawstr.c curl_addrinfo.c          \
-  socks_gssapi.c socks_sspi.c curl_sspi.c slist.c nonblock.c
+  socks_gssapi.c socks_sspi.c curl_sspi.c slist.c nonblock.c           \
+  curl_memrchr.c
 
 HHEADERS = arpa_telnet.h netrc.h file.h timeval.h qssl.h hostip.h      \
   progress.h formdata.h cookie.h http.h sendf.h ftp.h url.h dict.h     \
@@ -21,4 +22,6 @@ HHEADERS = arpa_telnet.h netrc.h file.h timeval.h qssl.h hostip.h     \
   strtoofft.h strerror.h inet_ntop.h curlx.h curl_memory.h setup.h     \
   transfer.h select.h easyif.h multiif.h parsedate.h sslgen.h gtls.h   \
   tftp.h sockaddr.h splay.h strdup.h setup_once.h socks.h ssh.h nssg.h \
-  curl_base64.h rawstr.h curl_addrinfo.h curl_sspi.h slist.h nonblock.h
+  curl_base64.h rawstr.h curl_addrinfo.h curl_sspi.h slist.h nonblock.h        \
+  curl_memrchr.h
+
index d192f6fa5601e443dedf3064253c7f917b5a2c8f..8eaa8ee47b74e23f339e546422c1e27b99f9787c 100644 (file)
@@ -13,7 +13,9 @@ objs =        o.base64 o.connect o.cookie o.dict \
        o.security o.select o.sendf o.speedcheck o.ssluse \
        o.strequal o.strtok o.telnet o.timeval \
        o.transfer o.url o.version o.strtoofft o.sslgen o.gtls \
-       o.rawstr o.curl_addrinfo o.slist o.nonblock o.curl_rand
+       o.rawstr o.curl_addrinfo o.slist o.nonblock o.curl_rand \
+       o.curl_memrchr
+
 
 # Compile options:
 linkopts       = -o libcurl
@@ -36,6 +38,9 @@ o.cookie:     c.cookie
 o.curl_addrinfo:       c.curl_addrinfo
                gcc $(compileropts) -c -o curl_addrinfo.o c.curl_addrinfo
 
+o.curl_memrchr:        c.curl_memrchr
+               gcc $(compileropts) -c -o curl_memrchr.o c.curl_memrchr
+
 o.curl_rand:   c.curl_rand
                gcc $(compileropts) -c -o curl_rand.o c.curl_rand
 
index 8ad31981d65b010aaca2abcafeb847eafe9fb8b2..8fb394577cbc8c684095e141051584bb133e2b73 100644 (file)
@@ -450,6 +450,7 @@ X_OBJS= \
        $(DIROBJ)\content_encoding.obj \\r
        $(DIROBJ)\cookie.obj \\r
        $(DIROBJ)\curl_addrinfo.obj \\r
+       $(DIROBJ)\curl_memrchr.obj \\r
        $(DIROBJ)\curl_rand.obj \\r
        $(DIROBJ)\curl_sspi.obj \\r
        $(DIROBJ)\dict.obj \\r
index 13941857c9c9c0c2ab1569c3186b0d3e51d8b274..6b19ab1669182856691ed10246ff797f0a9b8512 100644 (file)
@@ -97,6 +97,7 @@ Example set of cookies:
 #include "share.h"
 #include "strtoofft.h"
 #include "rawstr.h"
+#include "curl_memrchr.h"
 
 /* The last #include file should be: */
 #include "memdebug.h"
@@ -168,23 +169,6 @@ static void strstore(char **str, const char *newstr)
 }
 
 
-/*
- * The memrchr() function is like the memchr() function, except that it
- * searches backwards from the end of the n bytes pointed to by s instead of
- * forwards from the front.
- *
- * Exists in glibc but is not widely available on other systems.
- */
-static void *memrchr(const char *s, int c, size_t n)
-{
-  while(n--) {
-    if(s[n] == c)
-      return &s[n];
-  }
-  return NULL;
-}
-
-
 /****************************************************************************
  *
  * Curl_cookie_add()
diff --git a/lib/curl_memrchr.c b/lib/curl_memrchr.c
new file mode 100644 (file)
index 0000000..7ba16f3
--- /dev/null
@@ -0,0 +1,63 @@
+/***************************************************************************\r
+ *                                  _   _ ____  _\r
+ *  Project                     ___| | | |  _ \| |\r
+ *                             / __| | | | |_) | |\r
+ *                            | (__| |_| |  _ <| |___\r
+ *                             \___|\___/|_| \_\_____|\r
+ *\r
+ * Copyright (C) 1998 - 2009, Daniel Stenberg, <daniel@haxx.se>, et al.\r
+ *\r
+ * This software is licensed as described in the file COPYING, which\r
+ * you should have received as part of this distribution. The terms\r
+ * are also available at http://curl.haxx.se/docs/copyright.html.\r
+ *\r
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell\r
+ * copies of the Software, and permit persons to whom the Software is\r
+ * furnished to do so, under the terms of the COPYING file.\r
+ *\r
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY\r
+ * KIND, either express or implied.\r
+ *\r
+ * $Id$\r
+ ***************************************************************************/\r
+\r
+#include "setup.h"\r
+\r
+#include "curl_memrchr.h"\r
+\r
+#define _MPRINTF_REPLACE /* use our functions only */\r
+#include <curl/mprintf.h>\r
+\r
+#include "curl_memory.h"\r
+/* The last #include file should be: */\r
+#include "memdebug.h"\r
+\r
+#ifndef HAVE_MEMRCHR\r
+\r
+/*\r
+ * Curl_memrchr()\r
+ *\r
+ * Our memrchr() function clone for systems which lack this function. The\r
+ * memrchr() function is like the memchr() function, except that it searches\r
+ * backwards from the end of the n bytes pointed to by s instead of forward\r
+ * from the beginning.\r
+ */\r
+\r
+void *\r
+Curl_memrchr(const void *s, int c, size_t n)\r
+{\r
+  const unsigned char *p = s;\r
+  const unsigned char *q = s;\r
+\r
+  p += n - 1;\r
+\r
+  while (p >= q) {\r
+    if (*p == (unsigned char)c)\r
+      return (void *)p;\r
+    p--;\r
+  }\r
+\r
+  return NULL;\r
+}\r
+\r
+#endif /* HAVE_MEMRCHR */\r
diff --git a/lib/curl_memrchr.h b/lib/curl_memrchr.h
new file mode 100644 (file)
index 0000000..2096b6e
--- /dev/null
@@ -0,0 +1,45 @@
+#ifndef HEADER_CURL_MEMRCHR_H\r
+#define HEADER_CURL_MEMRCHR_H\r
+/***************************************************************************\r
+ *                                  _   _ ____  _\r
+ *  Project                     ___| | | |  _ \| |\r
+ *                             / __| | | | |_) | |\r
+ *                            | (__| |_| |  _ <| |___\r
+ *                             \___|\___/|_| \_\_____|\r
+ *\r
+ * Copyright (C) 1998 - 2009, Daniel Stenberg, <daniel@haxx.se>, et al.\r
+ *\r
+ * This software is licensed as described in the file COPYING, which\r
+ * you should have received as part of this distribution. The terms\r
+ * are also available at http://curl.haxx.se/docs/copyright.html.\r
+ *\r
+ * You may opt to use, copy, modify, merge, publish, distribute and/or sell\r
+ * copies of the Software, and permit persons to whom the Software is\r
+ * furnished to do so, under the terms of the COPYING file.\r
+ *\r
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY\r
+ * KIND, either express or implied.\r
+ *\r
+ * $Id$\r
+ ***************************************************************************/\r
+\r
+#include "setup.h"\r
+\r
+#ifdef HAVE_MEMRCHR\r
+\r
+#ifdef HAVE_STRING_H\r
+#  include <string.h>\r
+#endif\r
+#ifdef HAVE_STRINGS_H\r
+#  include <strings.h>\r
+#endif\r
+\r
+#else /* HAVE_MEMRCHR */\r
+\r
+void *Curl_memrchr(const void *s, int c, size_t n);\r
+\r
+#define memrchr(x,y,z) Curl_memrchr((x),(y),(z))\r
+\r
+#endif /* HAVE_MEMRCHR */\r
+\r
+#endif /* HEADER_CURL_MEMRCHR_H */\r
index a867368465c076a8be5fa26ee53390dbbb70813a..2dd423e60a25228f9838760436f5374e00ab4768 100644 (file)
@@ -18,7 +18,9 @@ OBJS = amigaos.c base64.c connect.c content_encoding.c cookie.c dict.c easy.c \
        progress.c security.c select.c sendf.c share.c speedcheck.c ssluse.c  \
        strequal.c strtok.c telnet.c timeval.c transfer.c url.c version.c     \
        sslgen.c gtls.c strerror.c rawstr.c curl_addrinfo.c curl_rand.c       \
-       socks_gssapi.c socks_sspi.c curl_sspi.c slist.c nonblock.c
+       socks_gssapi.c socks_sspi.c curl_sspi.c slist.c nonblock.c            \
+       curl_memrchr.c
+
 
 all:   $(OBJS:.c=.o)
        ar cru libcurl.a $(OBJS:.c=.o)
index a01c01a8202afeb093d97ff8e6cde14b226d971f..8c6c926f266d6c3f6d9fea6c50bea298aa3ec319 100644 (file)
@@ -32,7 +32,7 @@ SOURCE \
   inet_ntop.c parsedate.c select.c gtls.c sslgen.c tftp.c splay.c   \
   strdup.c socks.c ssh.c nss.c qssl.c rawstr.c curl_addrinfo.c      \
   socks_gssapi.c socks_sspi.c curl_sspi.c slist.c nonblock.c        \
-  curl_rand.c
+  curl_rand.c curl_memrchr.c
 
 USERINCLUDE   ../../../lib ../../../include/curl
 #ifdef ENABLE_SSL
index cd2d25666e46501e8ae7c24f859dd3d2a869c793..7223b9476a818c036b35dbcdbff18aa5c13a3b65 100644 (file)
@@ -35,6 +35,7 @@ C_SRC += connect.c
 C_SRC += content_encoding.c
 C_SRC += cookie.c
 C_SRC += curl_addrinfo.c
+C_SRC += curl_memrchr.c
 C_SRC += curl_rand.c
 C_SRC += curl_sspi.c
 C_SRC += dict.c