]> git.lizzy.rs Git - plan9front.git/blobdiff - sys/src/cmd/webcookies.c
libregexp: improve the transition to next available thread, instruction, and generation
[plan9front.git] / sys / src / cmd / webcookies.c
index ac94fe9fbcb7381dcf27a3fbeea2fa4572bfa31d..c338fa11350c79e1c3d844a816a3372ddf7ff4c9 100644 (file)
@@ -448,6 +448,27 @@ syncjar(Jar *jar)
        return 0;
 }
 
+void
+closejar(Jar *jar)
+{
+       int i;
+
+       if(jar == nil)
+               return;
+       expirejar(jar, 0);
+       if(jar->dirty)
+               if(syncjar(jar) < 0)
+                       fprint(2, "warning: cannot rewrite cookie jar: %r\n");
+
+       for(i=0; i<jar->nc; i++)
+               freecookie(&jar->c[i]);
+
+       free(jar->lockfile);
+       free(jar->file);
+       free(jar->c);
+       free(jar);      
+}
+
 Jar*
 readjar(char *file)
 {
@@ -455,6 +476,7 @@ readjar(char *file)
        Jar *jar;
 
        jar = newjar();
+       file = estrdup9p(file);
        lock = emalloc9p(strlen(file)+10);
        strcpy(lock, file);
        if((p = strrchr(lock, '/')) != nil)
@@ -469,33 +491,12 @@ readjar(char *file)
        jar->dirty = 0;
 
        if(syncjar(jar) < 0){
-               free(jar->file);
-               free(jar->lockfile);
-               free(jar);
+               closejar(jar);
                return nil;
        }
        return jar;
 }
 
-void
-closejar(Jar *jar)
-{
-       int i;
-
-       if(jar == nil)
-               return;
-       expirejar(jar, 0);
-       if(jar->dirty)
-               if(syncjar(jar) < 0)
-                       fprint(2, "warning: cannot rewrite cookie jar: %r\n");
-
-       for(i=0; i<jar->nc; i++)
-               freecookie(&jar->c[i]);
-
-       free(jar->file);
-       free(jar->c);
-       free(jar);      
-}
 
 /*
  * Domain name matching is per RFC2109, section 2:
@@ -722,9 +723,9 @@ strtotime(char *s)
                return -1;
        }
 
-       tm.hour = atoi(s);
-       tm.min = atoi(s+3);
-       tm.sec = atoi(s+6);
+       tm.hour = strtol(s, 0, 10);
+       tm.min = strtol(s+3, 0, 10);
+       tm.sec = strtol(s+6, 0, 10);
        if(tm.hour >= 24 || tm.min >= 60 || tm.sec >= 60){
                if(debug)
                        fprint(2, "invalid time (%s)\n", os);
@@ -1152,8 +1153,7 @@ fswrite(Req *r)
                                }
                        }
                        snprint(a->outhttp, AuxBuf, "%J", j);
-                       if(j)
-                               closejar(j);
+                       closejar(j);
                }else{
                        if(strlen(a->inhttp)+r->ifcall.count >= AuxBuf){
                                respond(r, "http headers too large");