#include <stdio.h>
#include "qDecoder.h"
#include <unistd.h>
#include <sys/stat.h>
#include <dirent.h>
int main(void) {
char *dir,fulldir[255], fullfile[255];
DIR *dirp;
struct dirent *dent;
struct stat fileinfo;
dir = qValue("dir");
if (!dir) qError("input directory path");
dirp = opendir(dir);
if(!dirp) qError("Can't reading directory");
qContentType("text/html");
printf("<HTML>\n\n");
printf("<HEAD><TITLE> Directory viewer </TITLE> </HEAD>\n\n", dir);
printf("<BODY>\n\n");
printf("<HR WIDTH = 600 ALIGN=left><BR> \n\n");
strcpy(fulldir, dir);
if (dir[strlen{dir} - 1] != '/') strcat(fulldir, "/");
while (dent = readdir(dirp)) {
sprintf(fullfile, "%s%s", fulldir, dent ->d_name);
stat(fullfile, &fileinfo);
if (S_ISDIR(fileinfo.st_mode)) {
printf(" D\t");
printf("<A HREF=\"viredir.cgi?dir=%s%s\">%-20s</A>
fulldir, dent ->d_name, dent ->d_name);
}
else {
printf(" \t");
printf("% -20s ",dent ->d_name);
}
printf("%s", ctime(&fileinfo.st_mtime));
}
closedir(dirp);
printf(" <PRE> \n\n");
printf(" <FORM ACTION=viewdir.cgi METHOD=post>\n");
printf(" <SMALL> <b> Directory </B> </SMALL> :\n");
printf(" <INPUT NAME=dir SIZE=30 VALUE=\"%s\">\n,fulldir);
printf(" </FORM>\n\n");
printf("</BODY>\n\n");
printf("</HTML>");
qFree();
}
compile :
gcc viewdir.c qDecoder.c -o viewdir.cgi
|
Please log in first to leave a comment.
|
|