* USE OR PERFORMANCE OF THIS SOFTWARE.
*
* $Log: wcgi.c,v $
- * Revision 1.7 1995/11/08 12:42:18 adam
+ * Revision 1.9 1995/12/20 16:31:33 adam
+ * Bug fix: shell might terminate even though new request was initiated
+ * by the cgi interface program.
+ * Work on more simple user interface and Europagate buttons.
+ *
+ * Revision 1.8 1995/11/08 16:14:35 adam
+ * Many improvements and bug fixes.
+ * First version that ran on dtbsun.
+ *
+ * Revision 1.7 1995/11/08 12:42:18 adam
* Added descriptive text field in target info.
* Added authentication field in target info.
*
case 0:
close (0);
close (1);
+ close (2);
gw_log (GW_LOG_DEBUG, prog, "execl %s", path);
execl (path, sprog, 0);
gw_log (GW_LOG_FATAL|GW_LOG_ERRNO, prog, "execl %s", path);
char combuf[COMBUF];
int linein = -1, lineout, data, gw_id;
+ 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_level (GW_LOG_ALL);
path_info++;
if (*path_info)
*(path_info++) = '\0';
- if (!(gw_db = gw_db_open ("user.db", 1)))
+ if (!(gw_db = gw_db_open ("www.db", 1, 1)))
{
gw_log (GW_LOG_FATAL, prog, "gw_db_open");
exit (1);
*(p++) = '\0'; /* no envvars tranferred at present */
if ((t = getenv("CONTENT_LENGTH")) && (data = atoi(t)) > 0)
{
- if (read(0, p, data) < data)
- {
- gw_log (GW_LOG_FATAL, prog, "Failed to read input");
- fatal("Internal error in server");
+ int j, i = 0;
+ while (i < data)
+ {
+ j = read(0, p + i, data - i);
+ if (j == -1)
+ {
+ gw_log (GW_LOG_ERRNO|GW_LOG_FATAL, prog,
+ "Failed to read input");
+ fatal("Internal error in server");
+ }
+ else if (j == 0)
+ {
+ gw_log (GW_LOG_ERRNO, prog, "Failed to read input");
+ fatal("Internal error in server");
+ }
+ i += j;
}
}
p += data;
}
gw_log (GW_LOG_DEBUG, prog, "Reading response");
-#if 0
+#if 1
while ((data = read(linein, combuf, COMBUF)) > 0)
{
gw_log (GW_LOG_DEBUG, prog, "Got %d bytes", data);