[BACK]Return to cgi.c CVS log [TXT][DIR] Up to [cvsweb.bsd.lv] / mandoc

Diff for /mandoc/cgi.c between version 1.115 and 1.116

version 1.115, 2015/11/07 17:58:55 version 1.116, 2016/01/04 12:36:26
Line 63  static void   html_print(const char *);
Line 63  static void   html_print(const char *);
 static  void             html_putchar(char);  static  void             html_putchar(char);
 static  int              http_decode(char *);  static  int              http_decode(char *);
 static  void             http_parse(struct req *, const char *);  static  void             http_parse(struct req *, const char *);
 static  void             http_print(const char *);  
 static  void             http_putchar(char);  
 static  void             http_printquery(const struct req *, const char *);  
 static  void             pathgen(struct req *);  static  void             pathgen(struct req *);
 static  void             pg_error_badrequest(const char *);  static  void             pg_error_badrequest(const char *);
 static  void             pg_error_internal(void);  static  void             pg_error_internal(void);
Line 149  html_putchar(char c)
Line 146  html_putchar(char c)
         }          }
 }  }
   
 static void  
 http_printquery(const struct req *req, const char *sep)  
 {  
   
         if (NULL != req->q.query) {  
                 printf("query=");  
                 http_print(req->q.query);  
         }  
         if (0 == req->q.equal)  
                 printf("%sapropos=1", sep);  
         if (NULL != req->q.sec) {  
                 printf("%ssec=", sep);  
                 http_print(req->q.sec);  
         }  
         if (NULL != req->q.arch) {  
                 printf("%sarch=", sep);  
                 http_print(req->q.arch);  
         }  
         if (strcmp(req->q.manpath, req->p[0])) {  
                 printf("%smanpath=", sep);  
                 http_print(req->q.manpath);  
         }  
 }  
   
 static void  
 http_print(const char *p)  
 {  
   
         if (NULL == p)  
                 return;  
         while ('\0' != *p)  
                 http_putchar(*p++);  
 }  
   
 /*  /*
  * Call through to html_putchar().   * Call through to html_putchar().
  * Accepts NULL strings.   * Accepts NULL strings.
Line 303  next:
Line 266  next:
         }          }
 }  }
   
 static void  
 http_putchar(char c)  
 {  
   
         if (isalnum((unsigned char)c)) {  
                 putchar((unsigned char)c);  
                 return;  
         } else if (' ' == c) {  
                 putchar('+');  
                 return;  
         }  
         printf("%%%.2x", c);  
 }  
   
 /*  /*
  * HTTP-decode a string.  The standard explanation is that this turns   * HTTP-decode a string.  The standard explanation is that this turns
  * "%4e+foo" into "n foo" in the regular way.  This is done in-place   * "%4e+foo" into "n foo" in the regular way.  This is done in-place
Line 623  pg_searchres(const struct req *req, struct manpage *r,
Line 572  pg_searchres(const struct req *req, struct manpage *r,
                  * without any delay.                   * without any delay.
                  */                   */
                 printf("Status: 303 See Other\r\n");                  printf("Status: 303 See Other\r\n");
                 printf("Location: http://%s%s/%s/%s?",                  printf("Location: http://%s%s/%s/%s",
                     HTTP_HOST, scriptname, req->q.manpath, r[0].file);                      HTTP_HOST, scriptname, req->q.manpath, r[0].file);
                 http_printquery(req, "&");  
                 printf("\r\n"                  printf("\r\n"
                      "Content-Type: text/html; charset=utf-8\r\n"                       "Content-Type: text/html; charset=utf-8\r\n"
                      "\r\n");                       "\r\n");
Line 640  pg_searchres(const struct req *req, struct manpage *r,
Line 588  pg_searchres(const struct req *req, struct manpage *r,
         for (i = 0; i < sz; i++) {          for (i = 0; i < sz; i++) {
                 printf("<TR>\n"                  printf("<TR>\n"
                        "<TD CLASS=\"title\">\n"                         "<TD CLASS=\"title\">\n"
                        "<A HREF=\"%s/%s/%s?",                         "<A HREF=\"%s/%s/%s",
                     scriptname, req->q.manpath, r[i].file);                      scriptname, req->q.manpath, r[i].file);
                 http_printquery(req, "&amp;");  
                 printf("\">");                  printf("\">");
                 html_print(r[i].names);                  html_print(r[i].names);
                 printf("</A>\n"                  printf("</A>\n"

Legend:
Removed from v.1.115  
changed lines
  Added in v.1.116

CVSweb