]> code.citadel.org Git - citadel.git/blobdiff - webcit/tools.c
* strlen(); strcpy -> single strlen + memmove
[citadel.git] / webcit / tools.c
index 0a0718381d7ae3d388ea1c6fdb7ac45b8d2d0669..98c3bb584a8405d8fe61024223d03bfa6926326b 100644 (file)
@@ -106,7 +106,7 @@ void extract_token(char *dest, const char *source, int parmnum, char separator,
 void remove_token(char *source, int parmnum, char separator)
 {
        int i;
-       int len;
+       int len, slen;
        int curr_parm;
        int start, end;
 
@@ -115,11 +115,14 @@ void remove_token(char *source, int parmnum, char separator)
        start = (-1);
        end = (-1);
 
-       if (strlen(source) == 0) {
+       slen = strlen(source);
+       if (slen == 0) {
                return;
        }
 
-       for (i = 0; i < strlen(source); ++i) {
+       for (i = 0; 
+            ( (i < slen)  && (end == -1) ); 
+            ++i) {
                if ((start < 0) && (curr_parm == parmnum)) {
                        start = i;
                }
@@ -134,9 +137,9 @@ void remove_token(char *source, int parmnum, char separator)
        }
 
        if (end < 0)
-               end = strlen(source);
+               end = slen;
 
-       strcpy(&source[start], &source[end]);
+       memmove(&source[start], &source[end], slen - end + 1);
 }
 
 
@@ -246,12 +249,19 @@ int pattern2(char *search, char *patn)
  */
 void striplt(char *buf)
 {
-       if (strlen(buf) == 0) return;
-       while ((strlen(buf) > 0) && (isspace(buf[0])))
-               strcpy(buf, &buf[1]);
-       if (strlen(buf) == 0) return;
-       while (isspace(buf[strlen(buf) - 1]))
-               buf[strlen(buf) - 1] = 0;
+       long len;
+
+       len = strlen(buf);
+       if (len == 0) return;
+       while ((len > 0) && (isspace(buf[0]))){
+               memmove (buf, &buf[1], len);
+               len --;
+       }
+       if (len == 0) return;
+       while (isspace(buf[len - 1])){
+               buf[len - 1] = 0;
+               len --;
+       }
 }
 
 
@@ -359,7 +369,7 @@ void sleeeeeeeeeep(int seconds)
  * \param sourcelen the length of the source data (may contain string terminators)
  */
 
-void CtdlEncodeBase64(char *dest, const char *source, size_t sourcelen)
+void CtdlEncodeBase64(char *dest, const char *source, size_t sourcelen, int linebreaks)
 {
        int i, hiteof = FALSE;
        int spos = 0;
@@ -418,7 +428,7 @@ void CtdlEncodeBase64(char *dest, const char *source, size_t sourcelen)
                                dest[dpos] = 0;
                        }
                        thisline += 4;
-                       if (thisline > 70) {
+                       if ( (linebreaks) && (thisline > 70) ) {
                                dest[dpos++] = '\r';
                                dest[dpos++] = '\n';
                                dest[dpos] = 0;
@@ -426,7 +436,7 @@ void CtdlEncodeBase64(char *dest, const char *source, size_t sourcelen)
                        }
                }
        }
-       if (thisline > 70) {
+       if ( (linebreaks) && (thisline > 70) ) {
                dest[dpos++] = '\r';
                dest[dpos++] = '\n';
                dest[dpos] = 0;
@@ -516,10 +526,10 @@ int CtdlDecodeBase64(char *dest, const char *source, size_t length)
 void generate_uuid(char *buf) {
        static int seq = 0;
 
-       sprintf(buf, "%s-%lx-%x-%x",
+       sprintf(buf, "%s-%lx-%lx-%x",
                serv_info.serv_nodename,
                (long)time(NULL),
-               getpid(),
+               (long)getpid(),
                (seq++)
        );
 }