Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014 #include "c.h"
00015
00016 #include <dirent.h>
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 int
00029 pg_check_dir(const char *dir)
00030 {
00031 int result = 1;
00032 DIR *chkdir;
00033 struct dirent *file;
00034 bool dot_found = false;
00035
00036 errno = 0;
00037
00038 chkdir = opendir(dir);
00039
00040 if (chkdir == NULL)
00041 return (errno == ENOENT) ? 0 : -1;
00042
00043 while ((file = readdir(chkdir)) != NULL)
00044 {
00045 if (strcmp(".", file->d_name) == 0 ||
00046 strcmp("..", file->d_name) == 0)
00047 {
00048
00049 continue;
00050 }
00051 #ifndef WIN32
00052
00053 else if (file->d_name[0] == '.')
00054 {
00055 dot_found = true;
00056 }
00057 else if (strcmp("lost+found", file->d_name) == 0)
00058 {
00059 result = 3;
00060 break;
00061 }
00062 #endif
00063 else
00064 {
00065 result = 4;
00066 break;
00067 }
00068 }
00069
00070 #ifdef WIN32
00071
00072
00073
00074
00075 if (GetLastError() == ERROR_NO_MORE_FILES)
00076 errno = 0;
00077 #endif
00078
00079 closedir(chkdir);
00080
00081 if (errno != 0)
00082 result = -1;
00083
00084
00085 if (result == 1 && dot_found)
00086 result = 2;
00087
00088 return result;
00089 }