coar        98/06/19 14:02:44

  Modified:    src      CHANGES
               src/ap   Makefile.tmpl
               src/include ap.h httpd.h
               src/main util.c
  Removed:     src/ap   ap_strings.c
  Log:
        Move ap_escape_quotes(), with its use of pools, out of libap.
  
  Reviewed by:  Dean Gaudet
  
  Revision  Changes    Path
  1.927     +4 -0      apache-1.3/src/CHANGES
  
  Index: CHANGES
  ===================================================================
  RCS file: /export/home/cvs/apache-1.3/src/CHANGES,v
  retrieving revision 1.926
  retrieving revision 1.927
  diff -u -r1.926 -r1.927
  --- CHANGES   1998/06/19 13:31:28     1.926
  +++ CHANGES   1998/06/19 21:02:30     1.927
  @@ -1,5 +1,9 @@
   Changes with Apache 1.3.1
   
  +  *) Move ap_escape_quotes() from src/ap to src/main/util.c; it uses
  +     pools and thus pollutes libap (until the pool stuff is moved there).
  +     [Ken Coar]
  +
     *) IndexIgnore should be case-blind on Win32 (and any other case-aware
        but case-insensitive platforms).  [Ken Coar] PR#2455
   
  
  
  
  1.24      +1 -4      apache-1.3/src/ap/Makefile.tmpl
  
  Index: Makefile.tmpl
  ===================================================================
  RCS file: /export/home/cvs/apache-1.3/src/ap/Makefile.tmpl,v
  retrieving revision 1.23
  retrieving revision 1.24
  diff -u -r1.23 -r1.24
  --- Makefile.tmpl     1998/05/10 13:04:30     1.23
  +++ Makefile.tmpl     1998/06/19 21:02:33     1.24
  @@ -6,7 +6,7 @@
   LIB=libap.a
   
   OBJS=ap_execve.o ap_cpystrn.o ap_signal.o \
  -     ap_slack.o ap_snprintf.o ap_strings.o
  +     ap_slack.o ap_snprintf.o
   
   .c.o:
        $(CC) -c $(INCLUDES) $(CFLAGS) $<
  @@ -52,8 +52,5 @@
    $(OSDIR)/os.h $(INCDIR)/alloc.h $(INCDIR)/buff.h $(INCDIR)/ap.h \
    $(INCDIR)/util_uri.h $(INCDIR)/http_log.h
   ap_snprintf.o: ap_snprintf.c $(INCDIR)/httpd.h $(INCDIR)/conf.h \
  - $(OSDIR)/os.h $(INCDIR)/alloc.h $(INCDIR)/buff.h $(INCDIR)/ap.h \
  - $(INCDIR)/util_uri.h
  -ap_strings.o: ap_strings.c $(INCDIR)/httpd.h $(INCDIR)/conf.h \
    $(OSDIR)/os.h $(INCDIR)/alloc.h $(INCDIR)/buff.h $(INCDIR)/ap.h \
    $(INCDIR)/util_uri.h
  
  
  
  1.17      +0 -1      apache-1.3/src/include/ap.h
  
  Index: ap.h
  ===================================================================
  RCS file: /export/home/cvs/apache-1.3/src/include/ap.h,v
  retrieving revision 1.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- ap.h      1998/05/11 20:42:35     1.16
  +++ ap.h      1998/06/19 21:02:36     1.17
  @@ -67,7 +67,6 @@
   
   API_EXPORT(char *) ap_cpystrn(char *, const char *, size_t);
   int ap_slack(int, int);
  -API_EXPORT(char *) ap_escape_quotes(pool *, const char *);
   API_EXPORT(int) ap_snprintf(char *, size_t, const char *, ...);
   API_EXPORT(int) ap_vsnprintf(char *, size_t, const char *, va_list ap);
   int ap_execle(const char *, const char *, ...);
  
  
  
  1.225     +2 -0      apache-1.3/src/include/httpd.h
  
  Index: httpd.h
  ===================================================================
  RCS file: /export/home/cvs/apache-1.3/src/include/httpd.h,v
  retrieving revision 1.224
  retrieving revision 1.225
  diff -u -r1.224 -r1.225
  --- httpd.h   1998/06/13 15:22:49     1.224
  +++ httpd.h   1998/06/19 21:02:37     1.225
  @@ -992,6 +992,8 @@
   #define AP_SLACK_HIGH        2
   #endif
   
  +API_EXPORT(char *) ap_escape_quotes(pool *p, const char *instr);
  +
   /*
    * Redefine assert() to something more useful for an Apache...
    */
  
  
  
  1.122     +50 -0     apache-1.3/src/main/util.c
  
  Index: util.c
  ===================================================================
  RCS file: /export/home/cvs/apache-1.3/src/main/util.c,v
  retrieving revision 1.121
  retrieving revision 1.122
  diff -u -r1.121 -r1.122
  --- util.c    1998/06/13 15:22:54     1.121
  +++ util.c    1998/06/19 21:02:42     1.122
  @@ -1805,3 +1805,53 @@
        *semi = ';';
       }
   }
  +
  +/*
  + * Given a string, replace any bare " with \" .
  + */
  +API_EXPORT(char *) ap_escape_quotes (pool *p, const char *instring)
  +{
  +    int newlen = 0;
  +    const char *inchr = instring;
  +    char *outchr, *outstring;
  +
  +    /*
  +     * Look through the input string, jogging the length of the output
  +     * string up by an extra byte each time we find an unescaped ".
  +     */
  +    while (*inchr != '\0') {
  +     newlen++;
  +        if (*inchr == '"') {
  +         newlen++;
  +     }
  +     /*
  +      * If we find a slosh, and it's not the last byte in the string,
  +      * it's escaping something - advance past both bytes.
  +      */
  +     if ((*inchr == '\\') && (inchr[1] != '\0')) {
  +         inchr++;
  +     }
  +     inchr++;
  +    }
  +    outstring = ap_palloc(p, newlen + 1);
  +    inchr = instring;
  +    outchr = outstring;
  +    /*
  +     * Now copy the input string to the output string, inserting a slosh
  +     * in front of every " that doesn't already have one.
  +     */
  +    while (*inchr != '\0') {
  +     if ((*inchr == '\\') && (inchr[1] != '\0')) {
  +         *outchr++ = *inchr++;
  +         *outchr++ = *inchr++;
  +     }
  +     if (*inchr == '"') {
  +         *outchr++ = '\\';
  +     }
  +     if (*inchr != '\0') {
  +         *outchr++ = *inchr++;
  +     }
  +    }
  +    *outchr = '\0';
  +    return outstring;
  +}
  
  
  

Reply via email to