#ifndef HV_DIR_H_ #define HV_DIR_H_ /* *@code int main(int argc, char* argv[]) { const char* dir = "."; if (argc > 1) { dir = argv[1]; } std::list dirs; listdir(dir, dirs); for (auto& item : dirs) { printf("%c%c%c%c%c%c%c%c%c%c\t", item.type, item.mode & 0400 ? 'r' : '-', item.mode & 0200 ? 'w' : '-', item.mode & 0100 ? 'x' : '-', item.mode & 0040 ? 'r' : '-', item.mode & 0020 ? 'w' : '-', item.mode & 0010 ? 'x' : '-', item.mode & 0004 ? 'r' : '-', item.mode & 0002 ? 'w' : '-', item.mode & 0001 ? 'x' : '-'); float hsize; if (item.size < 1024) { printf("%lu\t", item.size); } else if ((hsize = item.size/1024.0f) < 1024.0f) { printf("%.1fK\t", hsize); } else if ((hsize /= 1024.0f) < 1024.0f) { printf("%.1fM\t", hsize); } else { hsize /= 1024.0f; printf("%.1fG\t", hsize); } struct tm* tm = localtime(&item.mtime); printf("%04d-%02d-%02d %02d:%02d:%02d\t", tm->tm_year+1900, tm->tm_mon+1, tm->tm_mday, tm->tm_hour, tm->tm_min, tm->tm_sec); printf("%s%s\n", item.name, item.type == 'd' ? "/" : ""); } return 0; } */ #include #include #include #include "hexport.h" typedef struct hdir_s { char name[256]; char type; // f:file d:dir l:link b:block c:char s:socket p:pipe char reserverd; unsigned short mode; size_t size; time_t atime; time_t mtime; time_t ctime; } hdir_t; // listdir: same as ls on unix, dir on win HV_EXPORT int listdir(const char* dir, std::list& dirs); #endif // HV_DIR_H_