- if (buf[0] == '1') {
- Files = NewHash(1, NULL);
- while (serv_getln(buf, sizeof buf), strcmp(buf, "000"))
- {
- Entry = (FileListStruct*) malloc(sizeof (FileListStruct));
-
- Entry->FilenameLen = extract_token(
- Entry->Filename, buf, 0, '|',
- sizeof(Entry->Filename));
- Entry->FileSize = extract_long(buf, 1);
- Entry->MimeTypeLen = extract_token(
- Entry->MimeType, buf, 2, '|',
- sizeof(Entry->MimeType));
- Entry->CommentLen = extract_token(
- Entry->Comment, buf, 3, '|',
- sizeof(Entry->Comment));
-
- Entry->Sequence = sequence++;
- Entry->IsPic = (strstr(Entry->MimeType, "image") != NULL);
- if (!HavePics && Entry->IsPic) {
- HavePics = 1;
- *HavePic = 1;
- }
- Put(Files, Entry->Filename,
- Entry->FilenameLen,
- Entry, NULL);
- }
- Order = ibstr("SortOrder");
- switch (ibstr("SortBy")){
- case 1: /*NAME*/
- SortByHashKey(Files,Order);
- break;
- case 2: /* SIZE*/
- SortByPayload(Files, (Order)?
- CompareFilelistBySize:
- CompareFilelistBySizeRev);
- break;
- case 3: /*MIME*/
- SortByPayload(Files, (Order)?
- CompareFilelistByMime:
- CompareFilelistByMimeRev);
- break;
- case 4: /*COMM*/
- SortByPayload(Files, (Order)?
- CompareFilelistByComment:
- CompareFilelistByCommentRev);
- break;
- default:
- SortByPayload(Files, CompareFilelistBySequence);
- }
- return Files;
- }
- else
- return NULL;
-}
-
-void FilePrintEntry(const char *FileName, void *vFile, int odd)
-{
- FileListStruct *File = (FileListStruct*) vFile;
-
- wprintf("<tr bgcolor=\"#%s\">", (odd ? "DDDDDD" : "FFFFFF"));
- wprintf("<td>"
- "<a href=\"download_file/");
- urlescputs(File->Filename);
- wprintf("\"><img src=\"display_mime_icon?type=%s\" border=0 align=middle>\n",
- File->MimeType);
- escputs(File->Filename); wprintf("</a></td>");
- wprintf("<td>%ld</td>", File->FileSize);
- wprintf("<td>"); escputs(File->MimeType); wprintf("</td>");
- wprintf("<td>"); escputs(File->Comment); wprintf("</td>");
- wprintf("</tr>\n");
-}