show_instance action: Add a very simple first scetch of a JavaScript based graphing...
[collection4.git] / src / utils_cgi.c
index f4abec2..7995e3f 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,10 +432,17 @@ 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] == '/')
+        || (src[in] == ' ')
+        /* RFC 3986, gen-delims */
+        || (src[in] == ':') || (src[in] == '/') || (src[in] == '?')
+        || (src[in] == '#') || (src[in] == '[') || (src[in] == ']')
+        || (src[in] == '@')
+        /* RFC 3986, sub-delims */
+        || (src[in] == '!') || (src[in] == '$') || (src[in] == '&')
+        || (src[in] == '(') || (src[in] == ')') || (src[in] == '*')
+        || (src[in] == '+') || (src[in] == ',') || (src[in] == ';')
+        || (src[in] == '=') || (src[in] == '\'')
+        /* 8-bit data */
         || (((unsigned char) src[in]) >= 128))
     {
       char esc[4];
@@ -461,6 +469,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];
@@ -672,6 +690,12 @@ int html_print_page (const char *title, /* {{{ */
       "    <link rel=\"stylesheet\" type=\"text/css\" href=\"../share/style.css\" />\n"
       "    <script type=\"text/javascript\" src=\"../share/jquery-1.4.2.min.js\">\n"
       "    </script>\n"
+      "    <script type=\"text/javascript\" src=\"../share/raphael-min.js\">\n"
+      "    </script>\n"
+      "    <script type=\"text/javascript\" src=\"../share/g.raphael-min.js\">\n"
+      "    </script>\n"
+      "    <script type=\"text/javascript\" src=\"../share/g.line-min.js\">\n"
+      "    </script>\n"
       "    <script type=\"text/javascript\" src=\"../share/collection.js\">\n"
       "    </script>\n"
       "  </head>\n",
@@ -739,7 +763,7 @@ int html_print_logo (__attribute__((unused)) void *user_data) /* {{{ */
   printf ("<a href=\"%s?action=list_graphs\" id=\"logo-canvas\">\n"
       "  <h1>C<sub>4</sub></h1>\n"
       "  <div id=\"logo-subscript\">collection&nbsp;4</div>\n"
-      "</a>\n");
+      "</a>\n", script_name ());
 
   return (0);
 } /* }}} int html_print_search_box */