-const char cgiedit_rcs[] = "$Id: cgiedit.c,v 1.11 2002/01/23 01:03:31 jongfoster Exp $";
+const char cgiedit_rcs[] = "$Id: cgiedit.c,v 1.14 2002/03/05 00:24:51 jongfoster Exp $";
/*********************************************************************
*
* File : $Source: /cvsroot/ijbswa/current/cgiedit.c,v $
*
* Revisions :
* $Log: cgiedit.c,v $
+ * Revision 1.14 2002/03/05 00:24:51 jongfoster
+ * Patch to always edit the current actions file.
+ *
+ * Revision 1.13 2002/03/04 02:07:59 david__schmidt
+ * Enable web editing of actions file on OS/2 (it had been broken all this time!)
+ *
+ * Revision 1.12 2002/03/03 09:18:03 joergs
+ * Made jumbjuster work on AmigaOS again.
+ *
* Revision 1.11 2002/01/23 01:03:31 jongfoster
* Fixing gcc [CygWin] compiler warnings
*
* encoding it.
*
* Parameters :
- * 1 : out = target map
- * 2 : in = source map
- * 3 : name = name of cgi parameter to copy
+ * 1 : out = target map
+ * 2 : in = source map
+ * 3 : name = name of cgi parameter to copy
*
* Returns : JB_ERR_OK on success
* JB_ERR_MEMORY on out-of-memory
* encoding it.
*
* Parameters :
- * 1 : out = target map
- * 2 : in = source map
- * 3 : name = name of cgi parameter to copy
+ * 1 : out = target map
+ * 2 : in = source map
+ * 3 : name = name of cgi parameter to copy
*
* Returns : JB_ERR_OK on success
* JB_ERR_MEMORY on out-of-memory
* edit-actions-url
*
* Parameters :
- * 1 : csp = Current client state (buffers, headers, etc...)
- * 2 : rsp = http_response data structure for output
- * 3 : parameters = map of cgi parameters
+ * 1 : csp = Current client state (buffers, headers, etc...)
+ * 2 : rsp = http_response data structure for output
+ * 3 : parameters = map of cgi parameters
*
* CGI Parameters
* f : (filename) Identifies the file to edit
* edit-actions-url
*
* Parameters :
- * 1 : csp = Current client state (buffers, headers, etc...)
- * 2 : rsp = http_response data structure for output
- * 3 : parameters = map of cgi parameters
+ * 1 : csp = Current client state (buffers, headers, etc...)
+ * 2 : rsp = http_response data structure for output
+ * 3 : parameters = map of cgi parameters
*
* CGI Parameters :
* f : (filename) Identifies the file to edit
* edit-actions-url
*
* Parameters :
- * 1 : csp = Current client state (buffers, headers, etc...)
- * 2 : rsp = http_response data structure for output
- * 3 : parameters = map of cgi parameters
+ * 1 : csp = Current client state (buffers, headers, etc...)
+ * 2 : rsp = http_response data structure for output
+ * 3 : parameters = map of cgi parameters
*
* CGI Parameters :
* f : (filename) Identifies the file to edit
assert(file);
assert(file->filename);
-#ifdef AMIGA
+#if defined(AMIGA) || defined(__OS2__)
if (NULL == (fp = fopen(file->filename, "w")))
#else
if (NULL == (fp = fopen(file->filename, "wt")))
* Description : Match an actions file {{header}} line
*
* Parameters :
- * 1 : line - String from file
- * 2 : name - Header to match against
+ * 1 : line = String from file
+ * 2 : name = Header to match against
*
* Returns : 0 iff they match.
*
* Description : Match an actions file {{header}} line
*
* Parameters :
- * 1 : line - String from file. Must not start with
+ * 1 : line = String from file. Must not start with
* whitespace (else infinite loop!)
- * 2 : name - Destination for name
- * 2 : name - Destination for value
+ * 2 : name = Destination for name
+ * 2 : name = Destination for value
*
* Returns : JB_ERR_OK on success
* JB_ERR_MEMORY on out-of-memory
}
}
-#ifdef AMIGA
+#if defined(AMIGA) || defined(__OS2__)
if (NULL == (fp = fopen(filename,"r")))
#else
if (NULL == (fp = fopen(filename,"rt")))
* secure.
*
* Parameters :
- * 1 : csp = Current client state (buffers, headers, etc...)
- * 2 : parameters = map of cgi parameters
- * 3 : param_name = The name of the parameter to read
- * 4 : suffix = File extension, e.g. ".actions"
- * 5 : pfilename = destination for full filename. Caller
+ * 1 : csp = Current client state (buffers, headers, etc...)
+ * 2 : parameters = map of cgi parameters
+ * 3 : param_name = The name of the parameter to read
+ * 4 : suffix = File extension, e.g. ".actions"
+ * 5 : pfilename = destination for full filename. Caller
* free()s. Set to NULL on error.
- * 6 : pparam = destination for partial filename,
+ * 6 : pparam = destination for partial filename,
* suitable for use in another URL. Allocated as part
* of the map "parameters", so don't free it.
* Set to NULL if not specified.
{
const char *param;
const char *s;
+#if 0 /* Patch to make 3.0.0 work properly. */
char *name;
+#endif /* 0 - Patch to make 3.0.0 work properly. */
char *fullpath;
char ch;
int len;
}
}
+ /*
+ * FIXME Following is a hack to make 3.0.0 work properly.
+ * Change "#if 0" --> "#if 1" below when we have modular action
+ * files.
+ * -- Jon
+ */
+#if 0 /* Patch to make 3.0.0 work properly. */
/* Append extension */
name = malloc(len + strlen(suffix) + 1);
if (name == NULL)
/* Prepend path */
fullpath = make_path(csp->config->confdir, name);
free(name);
+#else /* 1 - Patch to make 3.0.0 work properly. */
+ if ((csp->actions_list == NULL)
+ || (csp->actions_list->filename == NULL))
+ {
+ return JB_ERR_CGI_PARAMS;
+ }
+
+ fullpath = ( (csp->actions_list && csp->actions_list->filename)
+ ? strdup(csp->actions_list->filename) : NULL);
+#endif /* 1 - Patch to make 3.0.0 work properly. */
if (fullpath == NULL)
{
return JB_ERR_MEMORY;
* passed to a CGI function.
*
* Parameters :
- * 1 : csp = Current client state (buffers, headers, etc...)
- * 2 : parameters = map of cgi parameters
- * 3 : name = Name of CGI parameter to read
- * 4 : pvalue = destination for value.
+ * 1 : csp = Current client state (buffers, headers, etc...)
+ * 2 : parameters = map of cgi parameters
+ * 3 : name = Name of CGI parameter to read
+ * 4 : pvalue = destination for value.
* Set to -1 on error.
*
* Returns : JB_ERR_OK on success
* spaces and validates it.
*
* Parameters :
- * 1 : csp = Current client state (buffers, headers, etc...)
- * 2 : parameters = map of cgi parameters
- * 3 : name = Name of CGI parameter to read
- * 4 : pvalue = destination for value. Will be malloc()'d.
+ * 1 : csp = Current client state (buffers, headers, etc...)
+ * 2 : parameters = map of cgi parameters
+ * 3 : name = Name of CGI parameter to read
+ * 4 : pvalue = destination for value. Will be malloc()'d.
* Set to NULL on error.
*
* Returns : JB_ERR_OK on success
* Where 'sel' is 'a', 'b', or 'c'.
*
* Parameters :
- * 1 : exports = Exports map to modify.
- * 2 : optionname = name for map
- * 3 : values = null-terminated list of values;
- * 4 : value = Selected value.
+ * 1 : exports = Exports map to modify.
+ * 2 : optionname = name for map
+ * 3 : values = null-terminated list of values;
+ * 4 : value = Selected value.
*
* CGI Parameters : None
*
* outside the CGI editor.
*
* Parameters :
- * 1 : csp = Current client state (buffers, headers, etc...)
- * 2 : rsp = http_response data structure for output
- * 3 : filename = The file that was modified.
+ * 1 : csp = Current client state (buffers, headers, etc...)
+ * 2 : rsp = http_response data structure for output
+ * 3 : filename = The file that was modified.
*
* CGI Parameters : none
*
* be parsed by the CGI editor.
*
* Parameters :
- * 1 : csp = Current client state (buffers, headers, etc...)
- * 2 : rsp = http_response data structure for output
- * 3 : file = The file that was modified.
+ * 1 : csp = Current client state (buffers, headers, etc...)
+ * 2 : rsp = http_response data structure for output
+ * 3 : file = The file that was modified.
*
* CGI Parameters : none
*
* opened by the CGI editor.
*
* Parameters :
- * 1 : csp = Current client state (buffers, headers, etc...)
- * 2 : rsp = http_response data structure for output
- * 3 : filename = The file that was modified.
+ * 1 : csp = Current client state (buffers, headers, etc...)
+ * 2 : rsp = http_response data structure for output
+ * 3 : filename = The file that was modified.
*
* CGI Parameters : none
*
* (query string) for a CGI were wrong.
*
* Parameters :
- * 1 : csp = Current client state (buffers, headers, etc...)
- * 2 : rsp = http_response data structure for output
+ * 1 : csp = Current client state (buffers, headers, etc...)
+ * 2 : rsp = http_response data structure for output
*
* CGI Parameters : none
*
* actions file to edit.
*
* Parameters :
- * 1 : csp = Current client state (buffers, headers, etc...)
- * 2 : rsp = http_response data structure for output
- * 3 : parameters = map of cgi parameters
+ * 1 : csp = Current client state (buffers, headers, etc...)
+ * 2 : rsp = http_response data structure for output
+ * 3 : parameters = map of cgi parameters
*
* CGI Parameters : None
*
* FIXME: This function shouldn't FATAL ever.
* FIXME: This function doesn't check the retval of map()
* Parameters :
- * 1 : csp = Current client state (buffers, headers, etc...)
- * 2 : rsp = http_response data structure for output
- * 3 : parameters = map of cgi parameters
+ * 1 : csp = Current client state (buffers, headers, etc...)
+ * 2 : rsp = http_response data structure for output
+ * 3 : parameters = map of cgi parameters
*
* CGI Parameters : filename
*
* Description : CGI function that edits the Actions list.
*
* Parameters :
- * 1 : csp = Current client state (buffers, headers, etc...)
- * 2 : rsp = http_response data structure for output
- * 3 : parameters = map of cgi parameters
+ * 1 : csp = Current client state (buffers, headers, etc...)
+ * 2 : rsp = http_response data structure for output
+ * 3 : parameters = map of cgi parameters
*
* CGI Parameters : None
*
* Description : CGI function that actually edits the Actions list.
*
* Parameters :
- * 1 : csp = Current client state (buffers, headers, etc...)
- * 2 : rsp = http_response data structure for output
- * 3 : parameters = map of cgi parameters
+ * 1 : csp = Current client state (buffers, headers, etc...)
+ * 2 : rsp = http_response data structure for output
+ * 3 : parameters = map of cgi parameters
*
* CGI Parameters : None
*
* an actions file.
*
* Parameters :
- * 1 : csp = Current client state (buffers, headers, etc...)
- * 2 : rsp = http_response data structure for output
- * 3 : parameters = map of cgi parameters
+ * 1 : csp = Current client state (buffers, headers, etc...)
+ * 2 : rsp = http_response data structure for output
+ * 3 : parameters = map of cgi parameters
*
* CGI Parameters :
* filename : Identifies the file to edit
* an actions file.
*
* Parameters :
- * 1 : csp = Current client state (buffers, headers, etc...)
- * 2 : rsp = http_response data structure for output
- * 3 : parameters = map of cgi parameters
+ * 1 : csp = Current client state (buffers, headers, etc...)
+ * 2 : rsp = http_response data structure for output
+ * 3 : parameters = map of cgi parameters
*
* CGI Parameters :
* filename : Identifies the file to edit
* the actions file.
*
* Parameters :
- * 1 : csp = Current client state (buffers, headers, etc...)
- * 2 : rsp = http_response data structure for output
- * 3 : parameters = map of cgi parameters
+ * 1 : csp = Current client state (buffers, headers, etc...)
+ * 2 : rsp = http_response data structure for output
+ * 3 : parameters = map of cgi parameters
*
* CGI Parameters :
* f : (filename) Identifies the file to edit
* (else JB_ERR_CGI_PARAMS).
*
* Parameters :
- * 1 : csp = Current client state (buffers, headers, etc...)
- * 2 : rsp = http_response data structure for output
- * 3 : parameters = map of cgi parameters
+ * 1 : csp = Current client state (buffers, headers, etc...)
+ * 2 : rsp = http_response data structure for output
+ * 3 : parameters = map of cgi parameters
*
* CGI Parameters :
* f : (filename) Identifies the file to edit
* an actions file.
*
* Parameters :
- * 1 : csp = Current client state (buffers, headers, etc...)
- * 2 : rsp = http_response data structure for output
- * 3 : parameters = map of cgi parameters
+ * 1 : csp = Current client state (buffers, headers, etc...)
+ * 2 : rsp = http_response data structure for output
+ * 3 : parameters = map of cgi parameters
*
* CGI Parameters :
* f : (filename) Identifies the file to edit
* specified.
*
* Parameters :
- * 1 : csp = Current client state (buffers, headers, etc...)
- * 2 : rsp = http_response data structure for output
- * 3 : parameters = map of cgi parameters
+ * 1 : csp = Current client state (buffers, headers, etc...)
+ * 2 : rsp = http_response data structure for output
+ * 3 : parameters = map of cgi parameters
*
* CGI Parameters :
* f : (filename) Identifies the file to edit
* an actions file.
*
* Parameters :
- * 1 : csp = Current client state (buffers, headers, etc...)
- * 2 : rsp = http_response data structure for output
- * 3 : parameters = map of cgi parameters
+ * 1 : csp = Current client state (buffers, headers, etc...)
+ * 2 : rsp = http_response data structure for output
+ * 3 : parameters = map of cgi parameters
*
* CGI Parameters :
* set : If present, how to change toggle setting: