New defines: LOGDIR/EGWDIR/CGIDIR set in Makefile.
[egate.git] / www / wcgi.c
index a94c5ff..9653642 100644 (file)
  * USE OR PERFORMANCE OF THIS SOFTWARE.
  *
  * $Log: wcgi.c,v $
- * Revision 1.10  1996/01/05 16:21:20  adam
+ * Revision 1.12  1996/01/09 10:46:49  adam
+ * New defines: LOGDIR/EGWDIR/CGIDIR set in Makefile.
+ *
+ * Revision 1.11  1996/01/08  08:42:19  adam
+ * Handles method GET.
+ *
+ * Revision 1.10  1996/01/05  16:21:20  adam
  * Bug fix: shell (wproto) sometimes closed server FIFO before cgi
  * program opened it - solution: cgi sends OK when response has been read.
  *
@@ -97,8 +103,6 @@ the server, please reload the server's 'front page'."
 #include <gw-db.h>
 #include "wproto.h"
 
-#define CGIDIR "/usr/local/etc/httpd/cgi-bin"
-
 static char *prog = "cgi";
 
 static char serverp[256] = {'\0'};
@@ -142,6 +146,17 @@ static int spawn (char *sprog, int id)
     }
 }
 
+#if 0
+static void print_environ (void)
+{
+    extern char **environ;
+    int i;
+
+    for (i = 0; environ[i]; i++)
+        gw_log (GW_LOG_DEBUG, prog, "e: %s", environ[i]);
+}
+#endif
+
 /*
  * NOTE: In the (perhaps odd) terminology used within this software,
  * the 'server' is the present program, which is executed by the httpd
@@ -156,7 +171,7 @@ int main()
 
     chdir ("/usr/local/etc/httpd/cgi-bin");
     gw_log_init ("egw");
-    gw_log_file (GW_LOG_ALL, "/usr/local/etc/httpd/logs/egwcgi_log");
+    gw_log_file (GW_LOG_ALL, LOGDIR "/egwcgi_log");
     gw_log_level (GW_LOG_ALL);
     gw_log (GW_LOG_STAT, prog, "Europagate www cgi server");
 
@@ -193,7 +208,7 @@ int main()
        path_info++;
     if (*path_info)
        *(path_info++) = '\0';
-    if (!(gw_db = gw_db_open ("www.db", 1, 1)))
+    if (!(gw_db = gw_db_open (EGWDIR "/www.db", 1, 1)))
     {
         gw_log (GW_LOG_FATAL, prog, "gw_db_open");
         exit (1);
@@ -271,6 +286,7 @@ int main()
     strcpy(p, serverp);
     p += strlen(p) + 1;
     strcpy(p, path_info);
+    gw_log (GW_LOG_DEBUG, prog, "P:%s", p);
     p += strlen(p) + 1;
     *(p++) = '\0';               /* no envvars tranferred at present */
     if ((t = getenv("CONTENT_LENGTH")) && (data = atoi(t)) > 0)
@@ -293,8 +309,14 @@ int main()
             i += j;
        }
     }
-    p += data;
-    *(p++) = '\0';
+    else if ((t = getenv("QUERY_STRING")))
+    {
+        strcpy (p, t);
+        data = strlen(p);
+    }
+    p[data] = '\0';
+    gw_log (GW_LOG_DEBUG, prog, "C:%s", p);
+    p += data+1;
     data = (p - combuf);
     memcpy(combuf, &data, sizeof(data));
     gw_log (GW_LOG_DEBUG, prog, "Writing data");