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

Diff for /mandoc/cgi.c between version 1.130 and 1.132

version 1.130, 2016/04/28 17:59:14 version 1.132, 2016/05/28 13:40:48
Line 59  struct req {
Line 59  struct req {
         int               isquery; /* QUERY_STRING used, not PATH_INFO */          int               isquery; /* QUERY_STRING used, not PATH_INFO */
 };  };
   
   enum    focus {
           FOCUS_NONE = 0,
           FOCUS_QUERY
   };
   
 static  void             html_print(const char *);  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 *);
Line 79  static void   resp_catman(const struct req *, const ch
Line 84  static void   resp_catman(const struct req *, const ch
 static  void             resp_copy(const char *);  static  void             resp_copy(const char *);
 static  void             resp_end_html(void);  static  void             resp_end_html(void);
 static  void             resp_format(const struct req *, const char *);  static  void             resp_format(const struct req *, const char *);
 static  void             resp_searchform(const struct req *);  static  void             resp_searchform(const struct req *, enum focus);
 static  void             resp_show(const struct req *, const char *);  static  void             resp_show(const struct req *, const char *);
 static  void             set_query_attr(char **, char **);  static  void             set_query_attr(char **, char **);
 static  int              validate_filename(const char *);  static  int              validate_filename(const char *);
Line 367  resp_end_html(void)
Line 372  resp_end_html(void)
 }  }
   
 static void  static void
 resp_searchform(const struct req *req)  resp_searchform(const struct req *req, enum focus focus)
 {  {
         int              i;          int              i;
   
Line 380  resp_searchform(const struct req *req)
Line 385  resp_searchform(const struct req *req)
   
         /* Write query input box. */          /* Write query input box. */
   
         printf( "<table><tr><td>\n"          printf("<input type=\"text\" name=\"query\" value=\"");
                 "<input type=\"text\" name=\"query\" value=\"");          if (req->q.query != NULL)
         if (NULL != req->q.query)  
                 html_print(req->q.query);                  html_print(req->q.query);
         puts("\" size=\"40\" autofocus>");          printf( "\" size=\"40\"");
           if (focus == FOCUS_QUERY)
                   printf(" autofocus");
           puts(">");
   
         /* Write submission and reset buttons. */          /* Write submission buttons. */
   
         printf( "<input type=\"submit\" value=\"Submit\">\n"          printf( "<button type=\"submit\" name=\"apropos\" value=\"0\">"
                 "<input type=\"reset\" value=\"Reset\">\n");                  "man</button>\n"
                   "<button type=\"submit\" name=\"apropos\" value=\"1\">"
                   "apropos</button>\n<br/>\n");
   
         /* Write show radio button */  
   
         printf( "</td><td>\n"  
                 "<input type=\"radio\" ");  
         if (req->q.equal)  
                 printf("checked=\"checked\" ");  
         printf( "name=\"apropos\" id=\"show\" value=\"0\">\n"  
                 "<label for=\"show\">Show named manual page</label>\n");  
   
         /* Write section selector. */          /* Write section selector. */
   
         puts(   "</td></tr><tr><td>\n"          puts("<select name=\"sec\">");
                 "<select name=\"sec\">");  
         for (i = 0; i < sec_MAX; i++) {          for (i = 0; i < sec_MAX; i++) {
                 printf("<option value=\"%s\"", sec_numbers[i]);                  printf("<option value=\"%s\"", sec_numbers[i]);
                 if (NULL != req->q.sec &&                  if (NULL != req->q.sec &&
Line 446  resp_searchform(const struct req *req)
Line 445  resp_searchform(const struct req *req)
                 puts("</select>");                  puts("</select>");
         }          }
   
         /* Write search radio button */          puts("</fieldset>\n"
   
         printf( "</td><td>\n"  
                 "<input type=\"radio\" ");  
         if (0 == req->q.equal)  
                 printf("checked=\"checked\" ");  
         printf( "name=\"apropos\" id=\"search\" value=\"1\">\n"  
                 "<label for=\"search\">Search with apropos query</label>\n");  
   
         puts("</td></tr></table>\n"  
              "</fieldset>\n"  
              "</form>\n"               "</form>\n"
              "</div>");               "</div>");
         puts("<!-- End search form. //-->");          puts("<!-- End search form. //-->");
Line 507  pg_index(const struct req *req)
Line 496  pg_index(const struct req *req)
 {  {
   
         resp_begin_html(200, NULL);          resp_begin_html(200, NULL);
         resp_searchform(req);          resp_searchform(req, FOCUS_QUERY);
         printf("<p>\n"          printf("<p>\n"
                "This web interface is documented in the\n"                 "This web interface is documented in the\n"
                "<a href=\"/%s%smandoc/man8/man.cgi.8\">man.cgi</a>\n"                 "<a href=\"/%s%smandoc/man8/man.cgi.8\">man.cgi</a>\n"
Line 524  static void
Line 513  static void
 pg_noresult(const struct req *req, const char *msg)  pg_noresult(const struct req *req, const char *msg)
 {  {
         resp_begin_html(200, NULL);          resp_begin_html(200, NULL);
         resp_searchform(req);          resp_searchform(req, FOCUS_QUERY);
         puts("<p>");          puts("<p>");
         puts(msg);          puts(msg);
         puts("</p>");          puts("</p>");
Line 588  pg_searchres(const struct req *req, struct manpage *r,
Line 577  pg_searchres(const struct req *req, struct manpage *r,
         }          }
   
         resp_begin_html(200, NULL);          resp_begin_html(200, NULL);
         resp_searchform(req);          resp_searchform(req,
               req->q.equal || sz == 1 ? FOCUS_NONE : FOCUS_QUERY);
   
         if (sz > 1) {          if (sz > 1) {
                 puts("<div class=\"results\">");                  puts("<div class=\"results\">");
Line 908  pg_show(struct req *req, const char *fullpath)
Line 898  pg_show(struct req *req, const char *fullpath)
         }          }
   
         resp_begin_html(200, NULL);          resp_begin_html(200, NULL);
         resp_searchform(req);          resp_searchform(req, FOCUS_NONE);
         resp_show(req, file);          resp_show(req, file);
         resp_end_html();          resp_end_html();
 }  }

Legend:
Removed from v.1.130  
changed lines
  Added in v.1.132

CVSweb