src/server/util/util.c

changeset 104
a8acbb12f27c
parent 103
d3b514e2ddbd
child 106
b122f34ddc80
--- a/src/server/util/util.c	Sat Oct 17 23:05:23 2015 +0200
+++ b/src/server/util/util.c	Fri Oct 23 17:28:09 2015 +0200
@@ -906,3 +906,70 @@
     return gmtime_r(clock, res);
 }
 
+int util_isdate(char *str) {
+    sstr_t datestr = sstr(str);  
+    sstr_t example = S("Sun, 06 Nov 1994 08:49:37 GMT");
+    
+    if(datestr.length != example.length) {
+        return 0;
+    }
+    
+    for(int i=0;i<datestr.length;i++) {
+        char e = example.ptr[i];
+        if(isdigit(e)) {
+            if(!isdigit(datestr.ptr[i])) {
+                return 0;
+            }
+        } else if(e == ' ') {
+            if(datestr.ptr[i] != ' ') {
+                return 0;
+            }
+        } else if(e == ',') {
+            if(datestr.ptr[i] != ',') {
+                return 0;
+            }
+        } else if(e == ':') {
+            if(datestr.ptr[i] != ':') {
+                return 0;
+            }
+        }
+    }
+    
+    if(!sstrsuffix(datestr, S("GMT"))) {
+        return 0;
+    }
+    
+    return 1;
+}
+
+
+/* ------------------------- util_mime_separator -------------------------- */
+
+
+NSAPI_PUBLIC int util_mime_separator(char *sep)
+{
+    int size = 35; // documented in nsapi.h
+    int pos = 0;
+
+    sep[pos++] = CR;
+    sep[pos++] = LF;
+    sep[pos++] = '-';
+    sep[pos++] = '-';
+    
+    int r[6];
+    for(int i=0;i<6;i++) {
+        r[i] = rand() % 10000;
+    }
+    pos += snprintf(
+            sep+4,
+            size-4,
+            "X%04x%04x%04x%04x%04x%04xE",
+            r[0],
+            r[1],
+            r[2],
+            r[3],
+            r[4],
+            r[5]);
+
+    return pos;
+}

mercurial