aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortenox7 <as@tenoware.com>2018-07-08 02:46:53 -0700
committertenox7 <as@tenoware.com>2018-07-08 02:46:53 -0700
commitfd19e39d3a8a0a1ae9a8f1fda8ea8691c8fb98b3 (patch)
tree823bcdbafbaa0ec9d79d316664ee4ede03dbbf6c
parent8151cf64d84122f8148598f7f64b458b69656fd2 (diff)
downloadwfm-fd19e39d3a8a0a1ae9a8f1fda8ea8691c8fb98b3.tar.gz
paths in to a struct
-rw-r--r--dialogs.c45
-rw-r--r--dir.c102
-rw-r--r--fileio.c112
-rw-r--r--wfm.c82
-rw-r--r--wfm.h34
5 files changed, 181 insertions, 194 deletions
diff --git a/dialogs.c b/dialogs.c
index 763e707..7c26cbd 100644
--- a/dialogs.c
+++ b/dialogs.c
@@ -45,22 +45,22 @@ void multiprompt_ui(char *m_action) {
if(res == cgiFormNotFound) {
checkfilename(NULL);
- if(stat(phys_filename, &fileinfo)==0) {
- fprintf(cgiOut, "<INPUT TYPE=\"HIDDEN\" NAME=\"filename\" VALUE=\"%s\">\n", virt_filename);
- fprintf(cgiOut, "<LI TYPE=\"square\"><B>%s</B>", virt_filename);
+ if(stat(wp.phys_filename, &fileinfo)==0) {
+ fprintf(cgiOut, "<INPUT TYPE=\"HIDDEN\" NAME=\"filename\" VALUE=\"%s\">\n", wp.virt_filename);
+ fprintf(cgiOut, "<LI TYPE=\"square\"><B>%s</B>", wp.virt_filename);
if(S_ISDIR(fileinfo.st_mode))
- fprintf(cgiOut, " [directory %s]\n", buprintf(du(phys_filename), FALSE));
+ fprintf(cgiOut, " [directory %s]\n", buprintf(du(wp.phys_filename), FALSE));
else
fprintf(cgiOut, " [file %s]\n", buprintf(fileinfo.st_size, FALSE));
}
} else {
for(i=0; responses[i]; i++) {
checkfilename(responses[i]);
- if(stat(phys_filename, &fileinfo)==0) {
- fprintf(cgiOut, "<INPUT TYPE=\"HIDDEN\" NAME=\"multiselect_filename\" VALUE=\"%s\">\n", virt_filename);
- fprintf(cgiOut, "<LI TYPE=\"square\"><B>%s</B>", virt_filename);
+ if(stat(wp.phys_filename, &fileinfo)==0) {
+ fprintf(cgiOut, "<INPUT TYPE=\"HIDDEN\" NAME=\"multiselect_filename\" VALUE=\"%s\">\n", wp.virt_filename);
+ fprintf(cgiOut, "<LI TYPE=\"square\"><B>%s</B>", wp.virt_filename);
if(S_ISDIR(fileinfo.st_mode))
- fprintf(cgiOut, "/ [directory %s]\n", buprintf(du(phys_filename), FALSE));
+ fprintf(cgiOut, "/ [directory %s]\n", buprintf(du(wp.phys_filename), FALSE));
else
fprintf(cgiOut, " [file %s]\n", buprintf(fileinfo.st_size, FALSE));
}
@@ -71,11 +71,11 @@ void multiprompt_ui(char *m_action) {
// move needs a destination...
if(strcmp(m_action, "move")==0) {
- fprintf(cgiOut, "<P>Source: %s<P>Destination: <SELECT NAME=\"destination\">\n", virt_dirname);
+ fprintf(cgiOut, "<P>Source: %s<P>Destination: <SELECT NAME=\"destination\">\n", wp.virt_dirname);
fprintf(cgiOut, "<OPTION VALUE=\"/\">/ - Root Directory</OPTION>\n");
if(cfg.largeset) {
- level=re_dir_up(virt_dirname);
- re_dir_ui(virt_dirname, level);
+ level=re_dir_up(wp.virt_dirname);
+ re_dir_ui(wp.virt_dirname, level);
}
else {
re_dir_ui("/", 1);
@@ -96,7 +96,7 @@ void multiprompt_ui(char *m_action) {
" </TD></TR>\n"
"</TABLE></FORM>\n\n"
"</TD></TR></TABLE>\n"
- "</BODY>\n</HTML>\n", m_action, virt_dirname, rt.token);
+ "</BODY>\n</HTML>\n", m_action, wp.virt_dirname, rt.token);
cgiStringArrayFree(responses);
@@ -138,7 +138,7 @@ void singleprompt_ui(char *m_action) {
" Enter new name:<P>\n"
" <INPUT TYPE=\"TEXT\" ID=\"inp1\" NAME=\"destination\" SIZE=\"40\" VALUE=\"%s\">\n"
" <INPUT TYPE=\"HIDDEN\" NAME=\"filename\" VALUE=\"%s\">\n",
- virt_filename, virt_filename, virt_filename);
+ wp.virt_filename, wp.virt_filename, wp.virt_filename);
else if(strcmp(m_action, "mkfile")==0)
fprintf(cgiOut,
@@ -163,7 +163,7 @@ void singleprompt_ui(char *m_action) {
" </TD></TR>\n"
"</TABLE></FORM>\n\n"
"</TD></TR></TABLE>\n"
- "</BODY>\n</HTML>\n", m_action, virt_dirname, rt.token);
+ "</BODY>\n</HTML>\n", m_action, wp.virt_dirname, rt.token);
}
@@ -215,7 +215,7 @@ void error(char *msg, ...) {
"<TR><TD COLSPAN=3 BGCOLOR=\"#EEEEEE\">&nbsp;</TD></TR>\n"
"</TABLE>\n"
"</TD></TR></TABLE>\n</BODY></HTML>\n",
- buff, cgiScriptName, virt_dirname, rt.token);
+ buff, cgiScriptName, wp.virt_dirname, rt.token);
}
else {
cgiHeaderContentType("text/plain");
@@ -269,6 +269,7 @@ void about(void) {
"Server: %s<BR>\n"
"User Agent: %s<BR>\n"
"NAME_MAX: %d<BR>\n"
+ "PATH_MAX: %d<BR>\n"
"JavaScript Level: %d<BR>\n"
"Change Control: %s (%s)<BR>\n"
"&nbsp;<P>\n"
@@ -287,14 +288,14 @@ void about(void) {
"<TR><TD COLSPAN=3 BGCOLOR=\"#EEEEEE\">&nbsp;</TD></TR>\n"
"</TABLE>\n"
"</TD></TR></TABLE>\n</BODY></HTML>\n",
- rt.iconsurl, cfg.tagline, VERSION, __DATE__, __TIME__, __VERSION__, cgiServerSoftware, cgiUserAgent, NAME_MAX, rt.js,
+ rt.iconsurl, cfg.tagline, VERSION, __DATE__, __TIME__, __VERSION__, cgiServerSoftware, cgiUserAgent, NAME_MAX, PATH_MAX, rt.js,
#ifdef WFMGIT
"Git"
#else
"None"
#endif
, (repo_check()) ? "No Repo Present" : "Repo OK",
- cgiScriptName, virt_dirname, rt.token);
+ cgiScriptName, wp.virt_dirname, rt.token);
}
@@ -335,11 +336,11 @@ void login_ui(void) {
" <INPUT TYPE=\"HIDDEN\" VALUE=\"login\" NAME=\"action\">\n"
" <INPUT TYPE=\"HIDDEN\" VALUE=\"%s\" NAME=\"directory\">\n"
" <INPUT TYPE=\"SUBMIT\" VALUE=\" %s Login \" NAME=\"login\" ",
- cgiScriptName, virt_dirname, (getenv("HTTPS")) ? "SSL" : "Plaintext");
+ cgiScriptName, wp.virt_dirname, (getenv("HTTPS")) ? "SSL" : "Plaintext");
if(rt.js>=2) fprintf(cgiOut,
"onClick=\"self.location='%s?directory=%s&amp;login=client&amp;rt.token=' + hex_md5('%s:' + hex_md5(document.wfm.username.value + ':' + document.wfm.password.value)); return false;\"",
- cgiScriptName, virt_dirname_urlencoded, cgiRemoteAddr);
+ cgiScriptName, wp.virt_dirname_urlencoded, cgiRemoteAddr);
fputs(
">\n"
@@ -375,7 +376,7 @@ void edit_ui(void) {
bkcolor="background-color:#EEEEEE; color:#000000;";
#endif
- input=fopen(phys_filename, "r");
+ input=fopen(wp.phys_filename, "r");
if(input==NULL)
error("Unable to open file.<BR>%s", strerror(errno));
@@ -442,7 +443,7 @@ void edit_ui(void) {
"File Editor: %s\n"
"</TD>\n"
"<TD BGCOLOR=\"#CCCCCC\" ALIGN=\"RIGHT\">",
- cgiScriptName, (strncmp(cgiUserAgent, "Mozilla/4.0 (compatible; MSIE 6", 31)==0) ? "80" : "100", rt.iconsurl, virt_filename);
+ cgiScriptName, (strncmp(cgiUserAgent, "Mozilla/4.0 (compatible; MSIE 6", 31)==0) ? "80" : "100", rt.iconsurl, wp.virt_filename);
#ifndef WFMGIT
if(rt.js) fprintf(cgiOut, "<INPUT TYPE=\"button\" ID=\"bakbtn\" onClick=\"chbak()\" VALUE=\"Backup\" STYLE=\"border:none; %s \"> \n", bkcolor);
@@ -478,7 +479,7 @@ void edit_ui(void) {
"<INPUT TYPE=\"hidden\" NAME=\"rt.token\" VALUE=\"%s\">\n"
"<INPUT TYPE=\"hidden\" NAME=\"backup\" VALUE=\"%s\">\n"
"</FORM></BODY></HTML>\n",
- virt_filename, virt_dirname, rt.token, backup);
+ wp.virt_filename, wp.virt_dirname, rt.token, backup);
free(buff);
diff --git a/dir.c b/dir.c
index 323fb66..039630a 100644
--- a/dir.c
+++ b/dir.c
@@ -58,7 +58,7 @@ void dir_icoinita(void) {
void dirlist(void) {
ASDIR *direntry;
off_t size, totalsize=0;
- char highlight[VIRT_FILENAME_SIZE]={0};
+ char highlight[sizeof(wp.virt_filename)]={0};
char namepfx[1024], sizepfx[1024], datepfx[1024];
char rtime[64], mtime[64], atime[64];
char *stime;
@@ -74,7 +74,7 @@ void dirlist(void) {
if(upload_id<1)
upload_id=now; // holy shit
- cgiFormStringNoNewlines("highlight", highlight, VIRT_FILENAME_SIZE-1); //TODO: urlencode ?
+ cgiFormStringNoNewlines("highlight", highlight, sizeof(wp.virt_filename)-1); //TODO: urlencode ?
cgiFormStringNoNewlines("sortby", sortby, 63);
if(strlen(sortby)<4)
snprintf(sortby, 63, "name");
@@ -82,13 +82,13 @@ void dirlist(void) {
//
// Get and Print Directory Entries
//
- if(strcmp(sortby, "name")==0) nentr=asscandir(phys_dirname, &direntry, namesort);
- else if(strcmp(sortby, "rname")==0) nentr=asscandir(phys_dirname, &direntry, rnamesort);
- else if(strcmp(sortby, "size")==0) nentr=asscandir(phys_dirname, &direntry, sizesort);
- else if(strcmp(sortby, "rsize")==0) nentr=asscandir(phys_dirname, &direntry, rsizesort);
- else if(strcmp(sortby, "date")==0) nentr=asscandir(phys_dirname, &direntry, timesort);
- else if(strcmp(sortby, "rdate")==0) nentr=asscandir(phys_dirname, &direntry, rtimesort);
- else nentr=asscandir(phys_dirname, &direntry, namesort);
+ if(strcmp(sortby, "name")==0) nentr=asscandir(wp.phys_dirname, &direntry, namesort);
+ else if(strcmp(sortby, "rname")==0) nentr=asscandir(wp.phys_dirname, &direntry, rnamesort);
+ else if(strcmp(sortby, "size")==0) nentr=asscandir(wp.phys_dirname, &direntry, sizesort);
+ else if(strcmp(sortby, "rsize")==0) nentr=asscandir(wp.phys_dirname, &direntry, rsizesort);
+ else if(strcmp(sortby, "date")==0) nentr=asscandir(wp.phys_dirname, &direntry, timesort);
+ else if(strcmp(sortby, "rdate")==0) nentr=asscandir(wp.phys_dirname, &direntry, rtimesort);
+ else nentr=asscandir(wp.phys_dirname, &direntry, namesort);
dir_icoinita();
@@ -103,7 +103,7 @@ void dirlist(void) {
"<HTML LANG=\"en\">\n"
"<HEAD>\n"
"<TITLE>%s : %c%s</TITLE>\n",
- COPYRIGHT, cfg.tagline, (strlen(virt_dirname)>0) ? ' ' : '/', virt_dirname);
+ COPYRIGHT, cfg.tagline, (strlen(wp.virt_dirname)>0) ? ' ' : '/', wp.virt_dirname);
if(rt.js) fprintf(cgiOut,
"<SCRIPT LANGUAGE=\"JavaScript\" TYPE=\"text/javascript\">\n"
@@ -193,7 +193,7 @@ void dirlist(void) {
"&nbsp;<IMG SRC=\"%s%s\" ALIGN=\"MIDDLE\" ALT=\"WFM\">\n"
"%s : %c%s \n"
"<TD NOWRAP BGCOLOR=\"#F1F1F1\" VALIGN=\"MIDDLE\" ALIGN=\"RIGHT\" STYLE=\"color:#000000; font-weight:bold; white-space:nowrap\">\n",
- rt.iconsurl, cfg.favicon, cfg.tagline, (strlen(virt_dirname)>0) ? ' ' : '/', virt_dirname
+ rt.iconsurl, cfg.favicon, cfg.tagline, (strlen(wp.virt_dirname)>0) ? ' ' : '/', wp.virt_dirname
);
@@ -202,12 +202,12 @@ void dirlist(void) {
fprintf(cgiOut,
"<A HREF=\"%s?action=login&amp;directory=%s\">"
"&nbsp;<IMG SRC=\"%s%s.gif\" ALIGN=\"MIDDLE\" BORDER=\"0\" ALT=\"Access\"></A>&nbsp;%s\n",
- cgiScriptName, virt_dirname_urlencoded, rt.iconsurl, access_string[rt.access_level], access_string[rt.access_level]);
+ cgiScriptName, wp.virt_dirname_urlencoded, rt.iconsurl, access_string[rt.access_level], access_string[rt.access_level]);
else
fprintf(cgiOut,
"<A HREF=\"%s?directory=%s\"><IMG SRC=\"%s%s.gif\" BORDER=\"0\" ALIGN=\"MIDDLE\" ALT=\"Access\">"
"</A>&nbsp;%s&nbsp;<IMG SRC=\"%suser.gif\" ALIGN=\"MIDDLE\" ALT=\"User\">&nbsp;%s&nbsp;\n",
- cgiScriptName, virt_dirname_urlencoded, rt.iconsurl, access_string[rt.access_level], access_string[rt.access_level], rt.iconsurl, rt.loggedinuser);
+ cgiScriptName, wp.virt_dirname_urlencoded, rt.iconsurl, access_string[rt.access_level], access_string[rt.access_level], rt.iconsurl, rt.loggedinuser);
// about / version
fprintf(cgiOut,
@@ -216,7 +216,7 @@ void dirlist(void) {
"</TD>\n"\
"</TR>\n"\
"</TABLE>\n",
- rt.iconsurl, cgiRemoteAddr, cgiScriptName, virt_dirname_urlencoded, rt.token, rt.iconsurl, VERSION);
+ rt.iconsurl, cgiRemoteAddr, cgiScriptName, wp.virt_dirname_urlencoded, rt.token, rt.iconsurl, VERSION);
@@ -233,7 +233,7 @@ void dirlist(void) {
"<IMG SRC=\"%sdir_up.gif\" BORDER=0 ALIGN=\"MIDDLE\" WIDTH=\"16\" HEIGHT=\"16\" ALT=\"Dir Up\">&nbsp;Up"
"</A>\n"
"</TD>\n",
- cgiScriptName, sortby, virt_parent_urlencoded, rt.token, rt.iconsurl);
+ cgiScriptName, sortby, wp.virt_parent_urlencoded, rt.token, rt.iconsurl);
fprintf(cgiOut,
"<!-- HOME -->\n"
@@ -251,7 +251,7 @@ void dirlist(void) {
"<IMG SRC=\"%sreload.gif\" BORDER=0 ALIGN=\"MIDDLE\" ALT=\"Reload\">&nbsp;Refresh"
"</A>\n"
"</TD>\n",
- cgiScriptName, sortby, virt_dirname_urlencoded, rt.token, rt.iconsurl);
+ cgiScriptName, sortby, wp.virt_dirname_urlencoded, rt.token, rt.iconsurl);
fprintf(cgiOut,
"<!-- MULTI DELETE -->\n"\
@@ -276,7 +276,7 @@ void dirlist(void) {
"<IMG SRC=\"%smkdir.gif\" BORDER=0 ALIGN=\"MIDDLE\" ALT=\"New Folder\">&nbsp;New Folder\n"
"</A>\n"
"</TD>\n",
- cgiScriptName, virt_dirname_urlencoded, rt.token, rt.iconsurl);
+ cgiScriptName, wp.virt_dirname_urlencoded, rt.token, rt.iconsurl);
fprintf(cgiOut,
@@ -286,7 +286,7 @@ void dirlist(void) {
"<IMG SRC=\"%smkfile.gif\" BORDER=0 ALIGN=\"MIDDLE\" ALT=\"New File\">&nbsp;New File"
"</A>\n"
"</TD>\n",
- cgiScriptName, virt_dirname_urlencoded, rt.token, rt.iconsurl);
+ cgiScriptName, wp.virt_dirname_urlencoded, rt.token, rt.iconsurl);
@@ -301,39 +301,39 @@ void dirlist(void) {
"</TD>\n"
"</TR>\n"
"</TABLE>\n",
- virt_dirname, rt.token, upload_id, (rt.access_level==PERM_RW) ? " " : "DISABLED");
+ wp.virt_dirname, rt.token, upload_id, (rt.access_level==PERM_RW) ? " " : "DISABLED");
//
// SORT BY
//
if(strcmp(sortby, "size")==0) {
- snprintf(namepfx, 1024, "&nbsp;<A HREF=\"%s?directory=%s&amp;token=%s&amp;sortby=name\" STYLE=\"text-decoration: none; color:#FFFFFF;\">Filename</A>", cgiScriptName, virt_dirname_urlencoded, rt.token);
- snprintf(sizepfx, 1024, "&nbsp;<A HREF=\"%s?directory=%s&amp;token=%s&amp;sortby=rsize\" STYLE=\"text-decoration: none; color:#FFFFFF;\">Size</A>&nbsp;%s", cgiScriptName, virt_dirname_urlencoded, rt.token, ADNIMG);
- snprintf(datepfx, 1024, "&nbsp;<A HREF=\"%s?directory=%s&amp;token=%s&amp;sortby=date\" STYLE=\"text-decoration: none; color:#FFFFFF;\">Modified</A>", cgiScriptName, virt_dirname_urlencoded, rt.token);
+ snprintf(namepfx, 1024, "&nbsp;<A HREF=\"%s?directory=%s&amp;token=%s&amp;sortby=name\" STYLE=\"text-decoration: none; color:#FFFFFF;\">Filename</A>", cgiScriptName, wp.virt_dirname_urlencoded, rt.token);
+ snprintf(sizepfx, 1024, "&nbsp;<A HREF=\"%s?directory=%s&amp;token=%s&amp;sortby=rsize\" STYLE=\"text-decoration: none; color:#FFFFFF;\">Size</A>&nbsp;%s", cgiScriptName, wp.virt_dirname_urlencoded, rt.token, ADNIMG);
+ snprintf(datepfx, 1024, "&nbsp;<A HREF=\"%s?directory=%s&amp;token=%s&amp;sortby=date\" STYLE=\"text-decoration: none; color:#FFFFFF;\">Modified</A>", cgiScriptName, wp.virt_dirname_urlencoded, rt.token);
} else if(strcmp(sortby, "rsize")==0) {
- snprintf(namepfx, 1024, "&nbsp;<A HREF=\"%s?directory=%s&amp;token=%s&amp;sortby=name\" STYLE=\"text-decoration: none; color:#FFFFFF;\">Filename</A>", cgiScriptName, virt_dirname_urlencoded, rt.token);
- snprintf(sizepfx, 1024, "&nbsp;<A HREF=\"%s?directory=%s&amp;token=%s&amp;sortby=size\" STYLE=\"text-decoration: none; color:#FFFFFF;\">Size</A>&nbsp;%s", cgiScriptName, virt_dirname_urlencoded, rt.token, AUPIMG);
- snprintf(datepfx, 1024, "&nbsp;<A HREF=\"%s?directory=%s&amp;token=%s&amp;sortby=date\" STYLE=\"text-decoration: none; color:#FFFFFF;\">Modified</A>", cgiScriptName, virt_dirname_urlencoded, rt.token);
+ snprintf(namepfx, 1024, "&nbsp;<A HREF=\"%s?directory=%s&amp;token=%s&amp;sortby=name\" STYLE=\"text-decoration: none; color:#FFFFFF;\">Filename</A>", cgiScriptName, wp.virt_dirname_urlencoded, rt.token);
+ snprintf(sizepfx, 1024, "&nbsp;<A HREF=\"%s?directory=%s&amp;token=%s&amp;sortby=size\" STYLE=\"text-decoration: none; color:#FFFFFF;\">Size</A>&nbsp;%s", cgiScriptName, wp.virt_dirname_urlencoded, rt.token, AUPIMG);
+ snprintf(datepfx, 1024, "&nbsp;<A HREF=\"%s?directory=%s&amp;token=%s&amp;sortby=date\" STYLE=\"text-decoration: none; color:#FFFFFF;\">Modified</A>", cgiScriptName, wp.virt_dirname_urlencoded, rt.token);
} else if(strcmp(sortby, "date")==0) {
- snprintf(namepfx, 1024, "&nbsp;<A HREF=\"%s?directory=%s&amp;token=%s&amp;sortby=name\" STYLE=\"text-decoration: none; color:#FFFFFF;\">Filename</A>", cgiScriptName, virt_dirname_urlencoded, rt.token);
- snprintf(sizepfx, 1024, "&nbsp;<A HREF=\"%s?directory=%s&amp;token=%s&amp;sortby=size\" STYLE=\"text-decoration: none; color:#FFFFFF;\">Size</A>", cgiScriptName, virt_dirname_urlencoded, rt.token);
- snprintf(datepfx, 1024, "&nbsp;<A HREF=\"%s?directory=%s&amp;token=%s&amp;sortby=rdate\" STYLE=\"text-decoration: none; color:#FFFFFF;\">Modified</A>&nbsp;%s", cgiScriptName, virt_dirname_urlencoded, rt.token, ADNIMG);
+ snprintf(namepfx, 1024, "&nbsp;<A HREF=\"%s?directory=%s&amp;token=%s&amp;sortby=name\" STYLE=\"text-decoration: none; color:#FFFFFF;\">Filename</A>", cgiScriptName, wp.virt_dirname_urlencoded, rt.token);
+ snprintf(sizepfx, 1024, "&nbsp;<A HREF=\"%s?directory=%s&amp;token=%s&amp;sortby=size\" STYLE=\"text-decoration: none; color:#FFFFFF;\">Size</A>", cgiScriptName, wp.virt_dirname_urlencoded, rt.token);
+ snprintf(datepfx, 1024, "&nbsp;<A HREF=\"%s?directory=%s&amp;token=%s&amp;sortby=rdate\" STYLE=\"text-decoration: none; color:#FFFFFF;\">Modified</A>&nbsp;%s", cgiScriptName, wp.virt_dirname_urlencoded, rt.token, ADNIMG);
} else if(strcmp(sortby, "rdate")==0) {
- snprintf(namepfx, 1024, "&nbsp;<A HREF=\"%s?directory=%s&amp;token=%s&amp;sortby=name\" STYLE=\"text-decoration: none; color:#FFFFFF;\">Filename</A>", cgiScriptName, virt_dirname_urlencoded, rt.token);
- snprintf(sizepfx, 1024, "&nbsp;<A HREF=\"%s?directory=%s&amp;token=%s&amp;sortby=size\" STYLE=\"text-decoration: none; color:#FFFFFF;\">Size</A>", cgiScriptName, virt_dirname_urlencoded, rt.token);
- snprintf(datepfx, 1024, "&nbsp;<A HREF=\"%s?directory=%s&amp;token=%s&amp;sortby=date\" STYLE=\"text-decoration: none; color:#FFFFFF;\">Modified</A>&nbsp;%s", cgiScriptName, virt_dirname_urlencoded, rt.token, AUPIMG);
+ snprintf(namepfx, 1024, "&nbsp;<A HREF=\"%s?directory=%s&amp;token=%s&amp;sortby=name\" STYLE=\"text-decoration: none; color:#FFFFFF;\">Filename</A>", cgiScriptName, wp.virt_dirname_urlencoded, rt.token);
+ snprintf(sizepfx, 1024, "&nbsp;<A HREF=\"%s?directory=%s&amp;token=%s&amp;sortby=size\" STYLE=\"text-decoration: none; color:#FFFFFF;\">Size</A>", cgiScriptName, wp.virt_dirname_urlencoded, rt.token);
+ snprintf(datepfx, 1024, "&nbsp;<A HREF=\"%s?directory=%s&amp;token=%s&amp;sortby=date\" STYLE=\"text-decoration: none; color:#FFFFFF;\">Modified</A>&nbsp;%s", cgiScriptName, wp.virt_dirname_urlencoded, rt.token, AUPIMG);
} else if(strcmp(sortby, "name")==0) {
- snprintf(namepfx, 1024, "&nbsp;<A HREF=\"%s?directory=%s&amp;token=%s&amp;sortby=rname\" STYLE=\"text-decoration: none; color:#FFFFFF;\">Filename</A>&nbsp;%s", cgiScriptName, virt_dirname_urlencoded, rt.token, ADNIMG);
- snprintf(sizepfx, 1024, "&nbsp;<A HREF=\"%s?directory=%s&amp;token=%s&amp;sortby=size\" STYLE=\"text-decoration: none; color:#FFFFFF;\">Size</A>", cgiScriptName, virt_dirname_urlencoded, rt.token);
- snprintf(datepfx, 1024, "&nbsp;<A HREF=\"%s?directory=%s&amp;token=%s&amp;sortby=date\" STYLE=\"text-decoration: none; color:#FFFFFF;\">Modified</A>", cgiScriptName, virt_dirname_urlencoded, rt.token);
+ snprintf(namepfx, 1024, "&nbsp;<A HREF=\"%s?directory=%s&amp;token=%s&amp;sortby=rname\" STYLE=\"text-decoration: none; color:#FFFFFF;\">Filename</A>&nbsp;%s", cgiScriptName, wp.virt_dirname_urlencoded, rt.token, ADNIMG);
+ snprintf(sizepfx, 1024, "&nbsp;<A HREF=\"%s?directory=%s&amp;token=%s&amp;sortby=size\" STYLE=\"text-decoration: none; color:#FFFFFF;\">Size</A>", cgiScriptName, wp.virt_dirname_urlencoded, rt.token);
+ snprintf(datepfx, 1024, "&nbsp;<A HREF=\"%s?directory=%s&amp;token=%s&amp;sortby=date\" STYLE=\"text-decoration: none; color:#FFFFFF;\">Modified</A>", cgiScriptName, wp.virt_dirname_urlencoded, rt.token);
} else if(strcmp(sortby, "rname")==0) {
- snprintf(namepfx, 1024, "&nbsp;<A HREF=\"%s?directory=%s&amp;token=%s&amp;sortby=name\" STYLE=\"text-decoration: none; color:#FFFFFF;\">Filename</A>&nbsp;%s", cgiScriptName, virt_dirname_urlencoded, rt.token, AUPIMG);
- snprintf(sizepfx, 1024, "&nbsp;<A HREF=\"%s?directory=%s&amp;token=%s&amp;sortby=size\" STYLE=\"text-decoration: none; color:#FFFFFF;\">Size</A>", cgiScriptName, virt_dirname_urlencoded, rt.token);
- snprintf(datepfx, 1024, "&nbsp;<A HREF=\"%s?directory=%s&amp;token=%s&amp;sortby=date\" STYLE=\"text-decoration: none; color:#FFFFFF;\">Modified</A>", cgiScriptName, virt_dirname_urlencoded, rt.token);
+ snprintf(namepfx, 1024, "&nbsp;<A HREF=\"%s?directory=%s&amp;token=%s&amp;sortby=name\" STYLE=\"text-decoration: none; color:#FFFFFF;\">Filename</A>&nbsp;%s", cgiScriptName, wp.virt_dirname_urlencoded, rt.token, AUPIMG);
+ snprintf(sizepfx, 1024, "&nbsp;<A HREF=\"%s?directory=%s&amp;token=%s&amp;sortby=size\" STYLE=\"text-decoration: none; color:#FFFFFF;\">Size</A>", cgiScriptName, wp.virt_dirname_urlencoded, rt.token);
+ snprintf(datepfx, 1024, "&nbsp;<A HREF=\"%s?directory=%s&amp;token=%s&amp;sortby=date\" STYLE=\"text-decoration: none; color:#FFFFFF;\">Modified</A>", cgiScriptName, wp.virt_dirname_urlencoded, rt.token);
} else {
- snprintf(namepfx, 1024, "&nbsp;<A HREF=\"%s?directory=%s&amp;token=%s&amp;sortby=name\" STYLE=\"text-decoration: none; color:#FFFFFF;\">Filename</A>", cgiScriptName, virt_dirname_urlencoded, rt.token);
- snprintf(sizepfx, 1024, "&nbsp;<A HREF=\"%s?directory=%s&amp;token=%s&amp;sortby=size\" STYLE=\"text-decoration: none; color:#FFFFFF;\">Size</A>", cgiScriptName, virt_dirname_urlencoded, rt.token);
- snprintf(datepfx, 1024, "&nbsp;<A HREF=\"%s?directory=%s&amp;token=%s&amp;sortby=date\" STYLE=\"text-decoration: none; color:#FFFFFF;\">Modified</A>", cgiScriptName, virt_dirname_urlencoded, rt.token);
+ snprintf(namepfx, 1024, "&nbsp;<A HREF=\"%s?directory=%s&amp;token=%s&amp;sortby=name\" STYLE=\"text-decoration: none; color:#FFFFFF;\">Filename</A>", cgiScriptName, wp.virt_dirname_urlencoded, rt.token);
+ snprintf(sizepfx, 1024, "&nbsp;<A HREF=\"%s?directory=%s&amp;token=%s&amp;sortby=size\" STYLE=\"text-decoration: none; color:#FFFFFF;\">Size</A>", cgiScriptName, wp.virt_dirname_urlencoded, rt.token);
+ snprintf(datepfx, 1024, "&nbsp;<A HREF=\"%s?directory=%s&amp;token=%s&amp;sortby=date\" STYLE=\"text-decoration: none; color:#FFFFFF;\">Modified</A>", cgiScriptName, wp.virt_dirname_urlencoded, rt.token);
}
@@ -444,7 +444,7 @@ void dirlist(void) {
"<TD NOWRAP ALIGN=\"RIGHT\"><SPAN TITLE=\"Created:%s\n Modified:%s\n Accessed:%s\n\">%s&nbsp;%s</FONT></SPAN></TD>\n"\
"<TD NOWRAP >&nbsp;</TD>"\
"<TD NOWRAP ALIGN=\"LEFT\">",
- cgiScriptName, sortby, (strcmp(virt_dirname, "/")==0) ? "" : virt_dirname_urlencoded, name_urlencoded, rt.token, icon, name,
+ cgiScriptName, sortby, (strcmp(wp.virt_dirname, "/")==0) ? "" : wp.virt_dirname_urlencoded, name_urlencoded, rt.token, icon, name,
buprintf(size, TRUE), rtime, mtime, atime, stime, mtime);
// rename
@@ -452,14 +452,14 @@ void dirlist(void) {
"<A HREF=\"%s?action=rename_prompt&amp;directory=%s&amp;filename=%s&amp;token=%s\" TITLE=\"Rename '%s'\">\n"\
"<IMG SRC=\"%srename.gif\" BORDER=0 WIDTH=16 HEIGHT=16 ALT=\"Rename File\">\n"\
"</A>\n",
- cgiScriptName, virt_dirname_urlencoded, name_urlencoded, rt.token, name, rt.iconsurl);
+ cgiScriptName, wp.virt_dirname_urlencoded, name_urlencoded, rt.token, name, rt.iconsurl);
// move
fprintf(cgiOut, "\n"\
"<A HREF=\"%s?action=move_prompt&amp;directory=%s&amp;filename=%s&amp;token=%s\" TITLE=\"Move '%s'\">\n"\
"<IMG SRC=\"%smove.gif\" BORDER=0 WIDTH=16 HEIGHT=16 ALT=\"Move File\">\n"\
"</A>\n",
- cgiScriptName, virt_dirname_urlencoded, name_urlencoded, rt.token, name, rt.iconsurl);
+ cgiScriptName, wp.virt_dirname_urlencoded, name_urlencoded, rt.token, name, rt.iconsurl);
// delete
fprintf(cgiOut, "\n"\
@@ -468,7 +468,7 @@ void dirlist(void) {
"</A>\n"\
"</TD>\n"\
"</TR>\n\n\n",
- cgiScriptName, virt_dirname_urlencoded, name_urlencoded, rt.token, name, rt.iconsurl);
+ cgiScriptName, wp.virt_dirname_urlencoded, name_urlencoded, rt.token, name, rt.iconsurl);
totalsize+=size;
n++;
@@ -542,7 +542,7 @@ void dirlist(void) {
fprintf(cgiOut,
">\n<TD NOWRAP ALIGN=\"LEFT\"><INPUT TYPE=\"CHECKBOX\" NAME=\"multiselect_filename\" STYLE=\"border: none;\" VALUE=\"%s\">"
"<A HREF=\"%s?action=%s&amp;directory=%s&amp;filename=%s&amp;token=%s\" TITLE=\"Open '%s'\">%s %s</A></TD>\n",
- name, cgiScriptName, (cfg.edit_by_default && editable) ? "edit" : "sendfile", virt_dirname_urlencoded, name_urlencoded, rt.token, name, icon, name);
+ name, cgiScriptName, (cfg.edit_by_default && editable) ? "edit" : "sendfile", wp.virt_dirname_urlencoded, name_urlencoded, rt.token, name, icon, name);
// size / date
@@ -562,7 +562,7 @@ void dirlist(void) {
"<A HREF=\"%s?action=rename_prompt&amp;directory=%s&amp;filename=%s&amp;token=%s\" TITLE=\"Rename '%s'\">\n"
"<IMG SRC=\"%srename.gif\" BORDER=0 WIDTH=16 HEIGHT=16 ALT=\"Rename File\">\n"
"</A>\n",
- cgiScriptName, virt_dirname_urlencoded, name_urlencoded, rt.token, name, rt.iconsurl);
+ cgiScriptName, wp.virt_dirname_urlencoded, name_urlencoded, rt.token, name, rt.iconsurl);
// move
fprintf(cgiOut,
@@ -570,7 +570,7 @@ void dirlist(void) {
"<A HREF=\"%s?action=move_prompt&amp;directory=%s&amp;filename=%s&amp;token=%s\" TITLE=\"Move '%s'\">"
"<IMG SRC=\"%smove.gif\" BORDER=0 WIDTH=16 HEIGHT=16 ALT=\"Move '%s'\">\n"
"</A>\n",
- cgiScriptName, virt_dirname_urlencoded, name_urlencoded, rt.token, name, rt.iconsurl, name);
+ cgiScriptName, wp.virt_dirname_urlencoded, name_urlencoded, rt.token, name, rt.iconsurl, name);
// delete
fprintf(cgiOut,
@@ -579,7 +579,7 @@ void dirlist(void) {
"TITLE=\"Remove '%s'\"> \n"
"<IMG SRC=\"%sdelete.gif\" BORDER=0 WIDTH=16 HEIGHT=16 ALT=\"Delete File\">\n"
"</A>\n",
- cgiScriptName, virt_dirname_urlencoded, name_urlencoded, rt.token, name, rt.iconsurl);
+ cgiScriptName, wp.virt_dirname_urlencoded, name_urlencoded, rt.token, name, rt.iconsurl);
// view
@@ -589,7 +589,7 @@ void dirlist(void) {
"<A HREF=\"%s%s%s/%s\" TITLE=\"Preview '%s' In Browser\">\n"
"<IMG SRC=\"%sext.gif\" BORDER=0 WIDTH=16 HEIGHT=16 ALT=\"Preview '%s' In Browser\" >\n"
"</A>\n",
- cfg.homeurl, (virt_dirname[0]!='/') ? "/" : "", (strcmp(virt_dirname, "/")==0) ? "" : virt_dirname, name, name, rt.iconsurl, name);
+ cfg.homeurl, (wp.virt_dirname[0]!='/') ? "/" : "", (strcmp(wp.virt_dirname, "/")==0) ? "" : wp.virt_dirname, name, name, rt.iconsurl, name);
// edit for text files..
@@ -602,7 +602,7 @@ void dirlist(void) {
"</A>\n"
"</TD>\n"
"</TR>\n\n",
- cgiScriptName, virt_dirname_urlencoded, name_urlencoded, rt.token, name, rt.iconsurl);
+ cgiScriptName, wp.virt_dirname_urlencoded, name_urlencoded, rt.token, name, rt.iconsurl);
else
fprintf(cgiOut,
"\n"
@@ -611,7 +611,7 @@ void dirlist(void) {
"</A>\n"
"</TD>\n"
"</TR>\n\n",
- cgiScriptName, virt_dirname_urlencoded, name_urlencoded, rt.token, name, rt.iconsurl);
+ cgiScriptName, wp.virt_dirname_urlencoded, name_urlencoded, rt.token, name, rt.iconsurl);
}
else {
fprintf(cgiOut,
diff --git a/fileio.c b/fileio.c
index 260d6c2..1f66aac 100644
--- a/fileio.c
+++ b/fileio.c
@@ -10,20 +10,20 @@
printf(
"virt_dirname=%s\n"
- "phys_dirname=%s\n"
- "virt_filename=%s\n"
- "phys_filename=%s\n"
- "virt_destination=%s\n"
- "phys_destination=%s\n"
- // "final_destination=%s\n"
+ "wp.phys_dirname=%s\n"
+ "wp.virt_filename=%s\n"
+ "wp.phys_filename=%s\n"
+ "wp.virt_destination=%s\n"
+ "wp.phys_destination=%s\n"
+ // "wp.final_destination=%s\n"
"virt_parent=%s\n",
virt_dirname,
- phys_dirname,
- virt_filename,
- phys_filename,
- virt_destination,
- phys_destination,
- // final_destination,
+ wp.phys_dirname,
+ wp.virt_filename,
+ wp.phys_filename,
+ wp.virt_destination,
+ wp.phys_destination,
+ // wp.final_destination,
virt_parent
);
@@ -43,7 +43,7 @@ void sendfile(void) {
checkfilename(NULL);
// TODO: 2gb file limit?
- in=fopen(phys_filename, "rb");
+ in=fopen(wp.phys_filename, "rb");
if(!in)
error("Unable to open file.<BR>%s", strerror(errno));
@@ -55,7 +55,7 @@ void sendfile(void) {
"Content-Type: application/octet-stream\r\n"
"Content-Disposition: attachment; filename=\"%s\"; size=%d\r\n"
"Content-Length: %d\r\n\r\n",
- virt_filename, size, size
+ wp.virt_filename, size, size
);
blk=sizeof(buff);
@@ -99,12 +99,12 @@ void receivefile(void) {
if(cgiFormFileOpen("filename", &input) != cgiFormSuccess)
error("Unable to access uploaded file.");
- output=fopen(phys_filename, "wb");
+ output=fopen(wp.phys_filename, "wb");
if(!output)
- error("Unable to open file %s for writing.<BR>%s", virt_filename, strerror(errno));
+ error("Unable to open file %s for writing.<BR>%s", wp.virt_filename, strerror(errno));
if(flock(fileno(output), LOCK_EX) == -1)
- error("Unable to lock file %s.<BR>%s", virt_filename, strerror(errno));
+ error("Unable to lock file %s.<BR>%s", wp.virt_filename, strerror(errno));
while(cgiFormFileRead(input, buff, sizeof(buff), &got) == cgiFormSuccess)
if(got)
@@ -116,7 +116,7 @@ void receivefile(void) {
wfm_commit(CHANGE, NULL);
- redirect("%s?highlight=%s&directory=%s&rt.token=%s", cgiScriptName, virt_filename_urlencoded, virt_dirname_urlencoded, rt.token);
+ redirect("%s?highlight=%s&directory=%s&rt.token=%s", cgiScriptName, wp.virt_filename_urlencoded, wp.virt_dirname_urlencoded, rt.token);
}
@@ -129,7 +129,7 @@ void mkfile(void) {
checkfilename(NULL);
- output=fopen(phys_filename, "a"); //TODO: should probably give error if file already exists...
+ output=fopen(wp.phys_filename, "a"); //TODO: should probably give error if file already exists...
if(!output)
error("Unable to create file.<BR>%s", strerror(errno));
@@ -138,7 +138,7 @@ void mkfile(void) {
wfm_commit(CHANGE, NULL);
- redirect("%s?highlight=%s&directory=%s&rt.token=%s", cgiScriptName, virt_filename_urlencoded, virt_dirname_urlencoded, rt.token);
+ redirect("%s?highlight=%s&directory=%s&rt.token=%s", cgiScriptName, wp.virt_filename_urlencoded, wp.virt_dirname_urlencoded, rt.token);
}
@@ -150,10 +150,10 @@ void newdir(void) {
checkfilename(NULL);
- if(mkdir(phys_filename, S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH )!=0)
+ if(mkdir(wp.phys_filename, S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH )!=0)
error("Unable to create directory.<BR>%s", strerror(errno));
- redirect("%s?highlight=%s&directory=%s&rt.token=%s", cgiScriptName, virt_filename_urlencoded, virt_dirname_urlencoded, rt.token);
+ redirect("%s?highlight=%s&directory=%s&rt.token=%s", cgiScriptName, wp.virt_filename_urlencoded, wp.virt_dirname_urlencoded, rt.token);
}
@@ -170,7 +170,7 @@ void edit_save(void) {
FILE *tempf;
#ifndef WFMGIT
char backup[4]={0};
- char backup_filename[PHYS_DESTINATION_SIZE]={0};
+ char backup_filename[sizeof(wp.phys_dirname)]={0};
regex_t re;
regmatch_t pmatch;
#endif
@@ -197,18 +197,18 @@ void edit_save(void) {
if(strcmp(backup, "yes")==0) {
regcomp(&re, "\\.(.+)$", REG_EXTENDED|REG_ICASE);
- if(regexec(&re, phys_filename, 1, &pmatch, 0)==0) {
- if(pmatch.rm_so+4 < PHYS_DESTINATION_SIZE) {
- strcpy(backup_filename, phys_filename);
+ if(regexec(&re, wp.phys_filename, 1, &pmatch, 0)==0) {
+ if(pmatch.rm_so+4 < sizeof(wp.phys_dirname)) {
+ strcpy(backup_filename, wp.phys_filename);
strcpy(backup_filename+pmatch.rm_so+1, "bak\0");
- if(rename(phys_filename, backup_filename)!=0)
- error("Unable to create .bak file.<BR>%s was not modified.<BR>%s", virt_filename, strerror(errno));
+ if(rename(wp.phys_filename, backup_filename)!=0)
+ error("Unable to create .bak file.<BR>%s was not modified.<BR>%s", wp.virt_filename, strerror(errno));
}
}
}
#endif
// write to temporary file
- snprintf(tempname, sizeof(tempname), "%s/.wfmXXXXXX", phys_dirname);
+ snprintf(tempname, sizeof(tempname), "%s/.wfmXXXXXX", wp.phys_dirname);
tmpfd=mkstemp(tempname);
@@ -235,17 +235,17 @@ void edit_save(void) {
error("Unable to check temporary file size.<BR>%s<BR>%s", basename(tempname), strerror(errno));
if(tmpstat.st_size != strlen(buff))
- error("Temprary file has a wrong length. Giving up.<BR>%s size=%d, buff len=%d", virt_filename, tmpstat.st_size);
+ error("Temprary file has a wrong length. Giving up.<BR>%s size=%d, buff len=%d", wp.virt_filename, tmpstat.st_size);
// finally rename to desination file
- if(rename(tempname, phys_filename)!=0)
- error("Unable to rename temp file.<BR>%s - %s<BR>%s<BR>", basename(tempname), virt_filename, strerror(errno));
+ if(rename(tempname, wp.phys_filename)!=0)
+ error("Unable to rename temp file.<BR>%s - %s<BR>%s<BR>", basename(tempname), wp.virt_filename, strerror(errno));
free(buff);
wfm_commit(CHANGE, NULL);
- redirect("%s?highlight=%s&directory=%s&rt.token=%s", cgiScriptName, virt_filename_urlencoded, virt_dirname_urlencoded, rt.token);
+ redirect("%s?highlight=%s&directory=%s&rt.token=%s", cgiScriptName, wp.virt_filename_urlencoded, wp.virt_dirname_urlencoded, rt.token);
}
//
@@ -256,7 +256,7 @@ void fileio_re_rmdir(char *dirname) {
DIR *dir;
struct dirent *direntry;
struct stat fileinfo;
- char tempfullpath[PHYS_FILENAME_SIZE]={0};
+ char tempfullpath[sizeof(wp.phys_filename)]={0};
dir=opendir(dirname);
if(!dir)
@@ -266,7 +266,7 @@ void fileio_re_rmdir(char *dirname) {
direntry=readdir(dir);
while(direntry!=0) {
if(strncmp(direntry->d_name, ".", 1) && strncmp(direntry->d_name, "..", 2)) {
- snprintf(tempfullpath, PHYS_FILENAME_SIZE, "%s/%s", dirname, direntry->d_name);
+ snprintf(tempfullpath, sizeof(wp.phys_filename), "%s/%s", dirname, direntry->d_name);
if(lstat(tempfullpath, &fileinfo)!=0)
error("Unable to get file status.<BR>%s", strerror(errno));
@@ -296,14 +296,14 @@ void fileio_re_rmdir(char *dirname) {
void fileio_delete(void) {
struct stat fileinfo;
- if(lstat(phys_filename, &fileinfo)==0) {
+ if(lstat(wp.phys_filename, &fileinfo)==0) {
if(S_ISDIR(fileinfo.st_mode)) {
- fileio_re_rmdir(phys_filename);
- if(rmdir(phys_filename)!=0)
+ fileio_re_rmdir(wp.phys_filename);
+ if(rmdir(wp.phys_filename)!=0)
error("Unable to remove directory.<BR>%s", strerror(errno));
}
else {
- if(unlink(phys_filename)!=0)
+ if(unlink(wp.phys_filename)!=0)
error("Unable to remove file.<BR>%s", strerror(errno));
wfm_commit(DELETE, NULL);
@@ -333,7 +333,7 @@ void delete(void) {
}
}
- redirect("%s?directory=%s&rt.token=%s", cgiScriptName, virt_dirname_urlencoded, rt.token);
+ redirect("%s?directory=%s&rt.token=%s", cgiScriptName, wp.virt_dirname_urlencoded, rt.token);
}
//
@@ -344,13 +344,13 @@ void fileio_move(void) {
struct stat fileinfo;
// If moving file to a different directory we need to append the original file name to destination
- if( stat(phys_destination, &fileinfo)==0 && S_ISDIR(fileinfo.st_mode) )
- snprintf(final_destination, sizeof(final_destination), "%s/%s", phys_destination, virt_filename);
+ if( stat(wp.phys_destination, &fileinfo)==0 && S_ISDIR(fileinfo.st_mode) )
+ snprintf(wp.final_destination, sizeof(wp.final_destination), "%s/%s", wp.phys_destination, wp.virt_filename);
else
- strncpy(final_destination, phys_destination, sizeof(final_destination));
+ strncpy(wp.final_destination, wp.phys_destination, sizeof(wp.final_destination));
- if(rename(phys_filename, final_destination)!=0)
- error("Unable to move file. <BR>[%d: %s]<BR>[SRC=%s] [DST=%s]", errno, strerror(errno), phys_filename, final_destination);
+ if(rename(wp.phys_filename, wp.final_destination)!=0)
+ error("Unable to move file. <BR>[%d: %s]<BR>[SRC=%s] [DST=%s]", errno, strerror(errno), wp.phys_filename, wp.final_destination);
wfm_commit(MOVE, NULL);
@@ -379,7 +379,7 @@ void move(void) {
}
}
- redirect("%s?highlight=%s&directory=%s&rt.token=%s", cgiScriptName, url_encode(virt_destination), virt_dirname_urlencoded, rt.token);
+ redirect("%s?highlight=%s&directory=%s&rt.token=%s", cgiScriptName, url_encode(wp.virt_destination), wp.virt_dirname_urlencoded, rt.token);
}
@@ -390,7 +390,7 @@ off_t du(char *pdir) {
DIR *dir;
struct dirent *direntry;
struct stat fileinfo;
- char child[PHYS_DIRNAME_SIZE]={0};
+ char child[sizeof(wp.phys_dirname)]={0};
off_t tot=0;
if(lstat(pdir, &fileinfo)==0)
@@ -401,7 +401,7 @@ off_t du(char *pdir) {
if(dir) {
direntry=readdir(dir);
while(direntry) {
- snprintf(child, PHYS_DIRNAME_SIZE, "%s/%s", pdir, direntry->d_name);
+ snprintf(child, sizeof(wp.phys_dirname), "%s/%s", pdir, direntry->d_name);
if(lstat(child, &fileinfo)==0) {
if(S_ISDIR(fileinfo.st_mode)) {
if(direntry->d_name[0]=='.' && direntry->d_name[1]=='\0')
@@ -430,15 +430,15 @@ off_t du(char *pdir) {
void re_dir_ui(char *vdir, int level) {
struct dirent **direntry;
struct stat fileinfo;
- char child[VIRT_DIRNAME_SIZE]={0};
- char phy_child[PHYS_DIRNAME_SIZE]={0};
- char re_phys_dirname[PHYS_DIRNAME_SIZE]={0};
+ char child[sizeof(wp.virt_dirname)]={0};
+ char phy_child[sizeof(wp.phys_dirname)]={0};
+ char re_phys_dirname[sizeof(wp.phys_dirname)]={0};
int n;
int nentr, e;
- snprintf(re_phys_dirname, PHYS_DIRNAME_SIZE, "%s/%s", cfg.homedir, vdir);
+ snprintf(re_phys_dirname, sizeof(re_phys_dirname), "%s/%s", cfg.homedir, vdir);
- if(strlen(re_phys_dirname)<2 || strlen(re_phys_dirname)>(PHYS_DIRNAME_SIZE-2))
+ if(strlen(re_phys_dirname)<2 || strlen(re_phys_dirname)>(sizeof(wp.phys_dirname)-2))
error("Invalid directory name.");
if(regexec(&dotdot, re_phys_dirname, 0, 0, 0)==0) error("Invalid directory name.");
@@ -447,11 +447,11 @@ void re_dir_ui(char *vdir, int level) {
nentr=scandir(re_phys_dirname, &direntry, 0, alphasort);
for(e=0; e<nentr; e++) {
- snprintf(phy_child, PHYS_DIRNAME_SIZE, "%s/%s/%s", cfg.homedir, vdir, direntry[e]->d_name);
+ snprintf(phy_child, sizeof(phy_child), "%s/%s/%s", cfg.homedir, vdir, direntry[e]->d_name);
if((direntry[e]->d_name[0]!='.') && (lstat(phy_child, &fileinfo)==0) && S_ISDIR(fileinfo.st_mode)) {
- snprintf(child, VIRT_DIRNAME_SIZE, "%s/%s", vdir, direntry[e]->d_name);
+ snprintf(child, sizeof(wp.virt_dirname), "%s/%s", vdir, direntry[e]->d_name);
fprintf(cgiOut, "<OPTION VALUE=\"%s\">", child);
@@ -475,7 +475,7 @@ void re_dir_ui(char *vdir, int level) {
int re_dir_up(char *vdir) {
int n,nn,m,len;
char **dirs;
- char tmp[sizeof(virt_dirname)]={0};
+ char tmp[sizeof(wp.virt_dirname)]={0};
strcpy(tmp, vdir);
len=strsplit(tmp, &dirs, "/.");
diff --git a/wfm.c b/wfm.c
index f0faad6..1539eec 100644
--- a/wfm.c
+++ b/wfm.c
@@ -9,7 +9,7 @@ void html_title(char *msg) {
HTML_HEADER
"<LINK REL=\"icon\" TYPE=\"image/gif\" HREF=\"%s%s\">\n"
"<TITLE>%s : %s</TITLE>\n",
- rt.iconsurl, cfg.favicon, cfg.tagline, msg); // (strlen(virt_dirname)>0) ? ' ' : '/', TAGLINE, virt_dirname
+ rt.iconsurl, cfg.favicon, cfg.tagline, msg); // (strlen(wp.virt_dirname)>0) ? ' ' : '/', TAGLINE, wp.virt_dirname
}
@@ -115,7 +115,7 @@ void login(void) {
cgiFormStringNoNewlines("password", password, sizeof(password));
if(strlen(username) && strlen(password))
- redirect("%s?directory=%s&login=server&token=%s", cgiScriptName, virt_dirname_urlencoded, md5hash("%s:%s", cgiRemoteAddr, md5hash("%s:%s", username, password))); // generate MD5 as if it was the client
+ redirect("%s?directory=%s&login=server&token=%s", cgiScriptName, wp.virt_dirname_urlencoded, md5hash("%s:%s", cgiRemoteAddr, md5hash("%s:%s", username, password))); // generate MD5 as if it was the client
else
login_ui(); // display actual login page, which normally generates token in JavaScript
@@ -177,17 +177,17 @@ void access_check(char *access_string) {
// Function can be passed implicit filename or use the global variable
//
void checkfilename(char *inp_filename) {
- char temp_dirname[PHYS_FILENAME_SIZE]={0};
- char temp_filename[VIRT_FILENAME_SIZE]={0};
+ char temp_dirname[sizeof(wp.phys_filename)]={0};
+ char temp_filename[sizeof(wp.virt_filename)]={0};
char *bname;
if(inp_filename && strlen(inp_filename)) {
- strncpy(temp_filename, inp_filename, VIRT_FILENAME_SIZE);
+ strncpy(temp_filename, inp_filename, sizeof(wp.virt_filename));
}
- else if(cgiFormFileName("filename", temp_filename, VIRT_FILENAME_SIZE) == cgiFormSuccess) {
+ else if(cgiFormFileName("filename", temp_filename, sizeof(wp.virt_filename)) == cgiFormSuccess) {
}
- else if(cgiFormStringNoNewlines("filename", temp_filename, VIRT_FILENAME_SIZE) == cgiFormSuccess) {
+ else if(cgiFormStringNoNewlines("filename", temp_filename, sizeof(wp.virt_filename)) == cgiFormSuccess) {
}
else
@@ -203,20 +203,20 @@ void checkfilename(char *inp_filename) {
else
(void) *bname++;
- strip(bname, VIRT_FILENAME_SIZE, VALIDCHRS);
- strncpy(virt_filename, bname, VIRT_FILENAME_SIZE);
- snprintf(phys_filename, PHYS_FILENAME_SIZE, "%s/%s", phys_dirname, virt_filename);
+ strip(bname, sizeof(wp.virt_filename), VALIDCHRS);
+ strncpy(wp.virt_filename, bname, sizeof(wp.virt_filename));
+ snprintf(wp.phys_filename, sizeof(wp.phys_filename), "%s/%s", wp.phys_dirname, wp.virt_filename);
// Do checks
- if(!strlen(phys_filename) || strlen(phys_filename)>(PHYS_FILENAME_SIZE-2)) error("Invalid phys_filename lenght [%d]", strlen(phys_filename));
- if(!strlen(virt_filename) || strlen(virt_filename)>(VIRT_FILENAME_SIZE-2)) error("Invalid virt_filename lenght [%d]", strlen(virt_filename));
- if(regexec(&dotdot, phys_filename, 0, 0, 0)==0) error("Double dots in pfilename");
- if(regexec(&dotdot, virt_filename, 0, 0, 0)==0) error("Double dots in vfilename");
+ if(!strlen(wp.phys_filename) || strlen(wp.phys_filename)>(sizeof(wp.phys_filename)-2)) error("Invalid wp.phys_filename lenght [%d]", strlen(wp.phys_filename));
+ if(!strlen(wp.virt_filename) || strlen(wp.virt_filename)>(sizeof(wp.virt_filename)-2)) error("Invalid wp.virt_filename lenght [%d]", strlen(wp.virt_filename));
+ if(regexec(&dotdot, wp.phys_filename, 0, 0, 0)==0) error("Double dots in pfilename");
+ if(regexec(&dotdot, wp.virt_filename, 0, 0, 0)==0) error("Double dots in vfilename");
- strncpy(temp_dirname, phys_filename, PHYS_FILENAME_SIZE);
+ strncpy(temp_dirname, wp.phys_filename, sizeof(wp.phys_filename));
if(strlen(dirname(temp_dirname)) < strlen(cfg.homedir)) error("Invalid directory name.");
- virt_filename_urlencoded=url_encode(virt_filename);
+ wp.virt_filename_urlencoded=url_encode(wp.virt_filename);
}
//
@@ -226,18 +226,18 @@ void checkfilename(char *inp_filename) {
void checkdestination(void) {
int absolute_destination;
- cgiFormStringNoNewlines("destination", virt_destination, VIRT_DESTINATION_SIZE);
- strip(virt_destination, VIRT_DESTINATION_SIZE, VALIDCHRS_DIR);
+ cgiFormStringNoNewlines("destination", wp.virt_destination, sizeof(wp.virt_filename));
+ strip(wp.virt_destination, sizeof(wp.virt_filename), VALIDCHRS_DIR);
cgiFormInteger("absdst", &absolute_destination, 0); // move operation relies on absolute paths
if(absolute_destination)
- snprintf(phys_destination, PHYS_DESTINATION_SIZE, "%s/%s", cfg.homedir, virt_destination);
+ snprintf(wp.phys_destination, sizeof(wp.phys_filename), "%s/%s", cfg.homedir, wp.virt_destination);
else
- snprintf(phys_destination, PHYS_DESTINATION_SIZE, "%s/%s", phys_dirname, virt_destination);
+ snprintf(wp.phys_destination, sizeof(wp.phys_filename), "%s/%s", wp.phys_dirname, wp.virt_destination);
- if(strlen(phys_destination)<1 || strlen(phys_destination)>(PHYS_DESTINATION_SIZE-2)) error("Invalid phys_destination lenght [%d]", strlen(phys_destination));
- if(strlen(virt_destination)<1 || strlen(virt_destination)>(VIRT_DESTINATION_SIZE-2)) error("Invalid virt_destination lenght [%d]", strlen(virt_destination));
- if(regexec(&dotdot, phys_destination, 0, 0, 0)==0) error("Double dots in pfilename");
- if(regexec(&dotdot, virt_destination, 0, 0, 0)==0) error("Double dots in vfilename");
+ if(strlen(wp.phys_destination)<1 || strlen(wp.phys_destination)>(sizeof(wp.phys_filename)-2)) error("Invalid wp.phys_destination lenght [%d]", strlen(wp.phys_destination));
+ if(strlen(wp.virt_destination)<1 || strlen(wp.virt_destination)>(sizeof(wp.virt_filename)-2)) error("Invalid wp.virt_destination lenght [%d]", strlen(wp.virt_destination));
+ if(regexec(&dotdot, wp.phys_destination, 0, 0, 0)==0) error("Double dots in pfilename");
+ if(regexec(&dotdot, wp.virt_destination, 0, 0, 0)==0) error("Double dots in vfilename");
}
//
@@ -245,26 +245,26 @@ void checkdestination(void) {
// Only called by cgiMain during initialization
//
void checkdirectory(void) {
- char temp[VIRT_DIRNAME_SIZE]={0};
+ char temp[sizeof(wp.virt_dirname)]={0};
- cgiFormStringNoNewlines("directory", virt_dirname, VIRT_DIRNAME_SIZE);
- strip(virt_dirname, VIRT_DIRNAME_SIZE, VALIDCHRS_DIR);
- snprintf(phys_dirname, PHYS_DIRNAME_SIZE, "%s/%s", cfg.homedir, virt_dirname);
+ cgiFormStringNoNewlines("directory", wp.virt_dirname, sizeof(wp.virt_dirname));
+ strip(wp.virt_dirname, sizeof(wp.virt_dirname), VALIDCHRS_DIR);
+ snprintf(wp.phys_dirname, sizeof(wp.phys_dirname), "%s/%s", cfg.homedir, wp.virt_dirname);
- if(strlen(phys_dirname)<2 || strlen(phys_dirname)>(PHYS_DIRNAME_SIZE-2))
+ if(strlen(wp.phys_dirname)<2 || strlen(wp.phys_dirname)>(sizeof(wp.phys_dirname)-2))
error("Invalid directory name.");
- if(regexec(&dotdot, phys_dirname, 0, 0, 0)==0) error("Invalid directory name.");
- if(strlen(phys_dirname) < strlen(cfg.homedir)) error("Invalid directory name.");
+ if(regexec(&dotdot, wp.phys_dirname, 0, 0, 0)==0) error("Invalid directory name.");
+ if(strlen(wp.phys_dirname) < strlen(cfg.homedir)) error("Invalid directory name.");
- if(!strlen(virt_dirname)) strcpy(virt_dirname, "/");
+ if(!strlen(wp.virt_dirname)) strcpy(wp.virt_dirname, "/");
- virt_dirname_urlencoded=url_encode(virt_dirname);
+ wp.virt_dirname_urlencoded=url_encode(wp.virt_dirname);
// parent
- strncpy(temp, virt_dirname, VIRT_DIRNAME_SIZE);
- strncpy(virt_parent, dirname(temp), VIRT_DIRNAME_SIZE);
- virt_parent_urlencoded=url_encode(virt_parent);
+ strncpy(temp, wp.virt_dirname, sizeof(wp.virt_dirname));
+ strncpy(wp.virt_parent, dirname(temp), sizeof(wp.virt_dirname));
+ wp.virt_parent_urlencoded=url_encode(wp.virt_parent);
}
@@ -480,6 +480,7 @@ void cfgload(void) {
memset(&cfg, 0, sizeof(cfg));
memset(&rt, 0, sizeof(rt));
+ memset(&wp, 0, sizeof(wp));
cgiFormStringNoNewlines("token", rt.token, sizeof(rt.token));
snprintf(rt.iconsurl, sizeof(rt.iconsurl), "%s?ea=icon&amp;name=", cgiScriptName);
@@ -552,15 +553,6 @@ int cgiMain(void) {
fprintf(cgiOut, "Cache-Control: max-age=0, private\r\nExpires: -1\r\n");
- memset(virt_dirname, 0, VIRT_DIRNAME_SIZE);
- memset(phys_dirname, 0, PHYS_DIRNAME_SIZE);
- memset(virt_filename, 0, VIRT_FILENAME_SIZE);
- memset(phys_filename, 0, PHYS_FILENAME_SIZE);
- memset(virt_destination, 0, VIRT_DESTINATION_SIZE);
- memset(phys_destination, 0, PHYS_DESTINATION_SIZE);
- memset(final_destination, 0, PHYS_DESTINATION_SIZE);
- memset(virt_parent, 0, VIRT_DIRNAME_SIZE);
-
cfgload();
diff --git a/wfm.h b/wfm.h
index b57abba..4c1080e 100644
--- a/wfm.h
+++ b/wfm.h
@@ -61,7 +61,7 @@
#include "wfmiconres.h"
#define VALIDCHRS "an ()[]{}-_.,!@#$%^&=+;"
-#define VALIDCHRS_DIR "an ()[]{}-_.,!@#$%^&=+;/"
+#define VALIDCHRS_DIR VALIDCHRS "/"
#define P1024_1 1024.0f
@@ -71,25 +71,19 @@
#define SHM_SIZE 16
-#define VIRT_DIRNAME_SIZE NAME_MAX // around 255
-#define PHYS_DIRNAME_SIZE 1024
-#define VIRT_FILENAME_SIZE NAME_MAX
-#define PHYS_FILENAME_SIZE 1280
-#define VIRT_DESTINATION_SIZE NAME_MAX
-#define PHYS_DESTINATION_SIZE 1280
-
-char virt_dirname[VIRT_DIRNAME_SIZE];
-char *virt_dirname_urlencoded;
-char phys_dirname[PHYS_DIRNAME_SIZE];
-char virt_filename[VIRT_FILENAME_SIZE];
-char *virt_filename_urlencoded;
-char phys_filename[PHYS_FILENAME_SIZE];
-char virt_destination[VIRT_DESTINATION_SIZE];
-char phys_destination[PHYS_DESTINATION_SIZE];
-char final_destination[PHYS_DESTINATION_SIZE];
-char virt_parent[VIRT_DIRNAME_SIZE];
-char *virt_parent_urlencoded;
-
+struct wfm_paths {
+ char virt_dirname[NAME_MAX];
+ char *virt_dirname_urlencoded;
+ char virt_filename[NAME_MAX];
+ char *virt_filename_urlencoded;
+ char virt_destination[NAME_MAX];
+ char virt_parent[NAME_MAX];
+ char *virt_parent_urlencoded;
+ char phys_dirname[PATH_MAX];
+ char phys_filename[PATH_MAX];
+ char phys_destination[PATH_MAX];
+ char final_destination[PATH_MAX];
+} wp;
regex_t dotdot;