src/utils_cgi.c: Implement "uri_escape_buffer".
[collection4.git] / src / utils_cgi.c
index 0b63daf..7851914 100644 (file)
@@ -104,6 +104,7 @@ static char *uri_unescape_copy (char *dest, const char *src, size_t n) /* {{{ */
       *dest_ptr = *src_ptr;
     }
 
+    n--;
     src_ptr++;
     dest_ptr++;
     *dest_ptr = 0;
@@ -111,7 +112,7 @@ static char *uri_unescape_copy (char *dest, const char *src, size_t n) /* {{{ */
 
   assert (*dest_ptr == 0);
   return (dest);
-} /* }}} char *uri_unescape */
+} /* }}} char *uri_unescape_copy */
 
 static char *uri_unescape (const char *string) /* {{{ */
 {
@@ -431,6 +432,7 @@ char *uri_escape_copy (char *dest, const char *src, size_t n) /* {{{ */
       return (dest);
     }
     else if ((((unsigned char) src[in]) < 32)
+        || (src[in] == ' ')
         || (src[in] == '&')
         || (src[in] == ';')
         || (src[in] == '?')
@@ -461,6 +463,16 @@ char *uri_escape_copy (char *dest, const char *src, size_t n) /* {{{ */
   return (dest);
 } /* }}} char *uri_escape_copy */
 
+char *uri_escape_buffer (char *buffer, size_t buffer_size) /* {{{ */
+{
+  char temp[buffer_size];
+
+  uri_escape_copy (temp, buffer, buffer_size);
+  memcpy (buffer, temp, buffer_size);
+
+  return (&buffer[0]);
+} /* }}} char *uri_escape_buffer */
+
 char *uri_escape (const char *string) /* {{{ */
 {
   char buffer[4096];
@@ -751,7 +763,7 @@ int html_print_search_box (__attribute__((unused)) void *user_data) /* {{{ */
   term_html = html_escape (param ("q"));
 
   printf ("<form action=\"%s\" method=\"get\" id=\"search-form\">\n"
-      "  <input type=\"hidden\" name=\"action\" value=\"list_graphs\" />\n"
+      "  <input type=\"hidden\" name=\"action\" value=\"search\" />\n"
       "  <input type=\"text\" name=\"q\" value=\"%s\" id=\"search-input\" />\n"
       "  <input type=\"submit\" name=\"button\" value=\"Search\" />\n"
       "</form>\n",