#define VERSION "1.2.0"
#define copyright "\n\n"
#define CSS_STYLE \
" \n"
#define HTML_HEADER \
"\n" \
"\n" \
copyright \
"
\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 "md5.h"
#include "cgic.h"
#include "wfmiconres.h"
#define VALIDCHRS "an ()[]{}-_.,!@#$%^&=+;"
char VALIDCHRS_DIR[256]; // above + /
#define P1024_1 1024.0f
#define P1024_2 1048576.0f
#define P1024_3 1073741824.0f
#define P1024_4 1099511627776.0f
#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;
char ICONSURL[1024];
char HOMEDIR[1024];
char HOMEURL[1024];
char TAGLINE[1024];
char FAVICON[1024];
char token[256];
char loggedinuser[64];
regex_t dotdot;
int access_level;
int access_as_user;
int users_defined;
int edit_by_default;
int edit_any_file;
int recursive_du;
int js;
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 error(char *, ...);
void redirect(char *, ...);
char *buprintf(float, int);
int strip(char *, int, 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);
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);