#define VERSION "1.4.0"
#define COPYRIGHT "\n" \
"\n"
#define FONT_SIZE "13px"
#define CSS_STYLE \
" \n"
#define HTML_HEADER \
"\n" \
"\n" \
COPYRIGHT \
"
\n" \
" \n" \
" \n" \
" \n" \
" \n" \
CSS_STYLE
#define _FILE_OFFSET_BITS 64
#ifdef __sun__
#define _POSIX_PTHREAD_SEMANTICS
#endif
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include "md5.h"
#include "cgic.h"
#include "wfmiconres.h"
#define VALIDCHRS "an ()[]{}-_.,!@#$%^&=+;"
#define VALIDCHRS_DIR VALIDCHRS "/"
#define SHM_SIZE 16
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;
struct config_struct {
int users_defined;
int edit_by_default;
int edit_any_file;
int recursive_du;
int largeset;
char homedir[1024];
char homeurl[1024];
char tagline[1024];
char favicon[1024];
} cfg;
struct runtime_struct {
char token[256];
char iconsurl[1024];
char loggedinuser[64];
int access_level;
int access_as_user;
int js;
} rt;
double t1, t2;
struct timeval mt;
enum { FALSE, TRUE };
enum { PERM_NO, PERM_RO, PERM_RW };
enum { CHANGE, DELETE, MOVE };
typedef struct asdir_ {
char name[NAME_MAX];
mode_t type;
off_t size;
time_t atime, mtime, rtime;
} ASDIR;
int namesort(const void *, const void *);
int rnamesort(const void *, const void *);
int sizesort(const void *, const void *);
int rsizesort(const void *, const void *);
int timesort(const void *, const void *);
int rtimesort(const void *, const void *);
int asscandir(const char *, ASDIR **, int (*compar)(const void *, const void *));
void dbgprintf(char *, ...);
void error(char *, ...);
void redirect(char *, ...);
char *buprintf(float, int);
int strip(char *, int, char *);
int strsplit(char *, char ***, char *);
void checkfilename(char *);
void checkdestination(void);
void mkfile(void);
void newdir(void);
void edit_save(void);
void delete(void);
void move(void);
void dirlist(void);
void edit_ui(void);
void rename_ui(void);
void mkdir_ui(void);
void mkfile_ui(void);
void multiprompt_ui(char *);
void about(void);
void sendfile(void);
void receivefile(void);
off_t du(char *);
void re_dir_ui(char *, int);
int re_dir_up(char *);
void login_ui(void);
void tstop(void);
void html_title(char *);
void singleprompt_ui(char *);
char *url_encode(char *);
char *url_decode(char *);
int wfm_commit(int, char *);
int repo_check(void);