#include <pthread.h>
#include "readir.h"
#include <stdio.h>
#include <unistd.h>
#include "filelist.h"
#include "pio.h"
#define SHOW_NOTE \
{ \
perror("Format: exfind <path> [-name <file_name>] \
[-sort name|type|size|time [-desc]] [-nostat]"); \
return(0); \
}
int main(int argc, char *argv[])
{
int i;
FindData findData;
pthread_t tid;
if (argc == 1)
SHOW_NOTE;
findData.path = (char*)malloc(strlen(argv[1]) + 1);
strcpy(findData.path, argv[1]);
findData.fileName = 0;
for (i = 2; i <= argc - 1; i++)
{
if (!strcmp(argv[i], "-name"))
{
i++;
if (i > argc - 1)
SHOW_NOTE;
findData.fileName = (char*)malloc(strlen(argv[i]) + 1);
strcpy(findData.fileName, argv[i]);
}
else
if (!strcmp(argv[i], "-sort"))
{
i++;
if (i > argc - 1)
SHOW_NOTE;
if (!strcmp(argv[i], "name"))
sortField = SortByName;
else
if (!strcmp(argv[i], "type"))
sortField = SortByType;
else
if (!strcmp(argv[i], "size"))
sortField = SortBySize;
else
if (!strcmp(argv[i], "time"))
sortField = SortByTime;
else
SHOW_NOTE;
}
else
if (!strcmp(argv[i], "-desc"))
{
ascSort = 0;
}
else
if (!strcmp(argv[i], "-nostat"))
{
showStat = 0;
}
else
SHOW_NOTE;
}
if (sortField == NoSort)
showStat = 0;
if (pthread_create(&tid, NULL, showDir, (void*)&findData) == -1)
perror("Create thread");
else
pthread_join(tid, NULL);
free(findData.path);
free(findData.fileName);
return 0;
}