diff options
Diffstat (limited to 'node/Utils.cpp')
-rw-r--r-- | node/Utils.cpp | 94 |
1 files changed, 2 insertions, 92 deletions
diff --git a/node/Utils.cpp b/node/Utils.cpp index 661dbb8c..31cb40dd 100644 --- a/node/Utils.cpp +++ b/node/Utils.cpp @@ -50,9 +50,6 @@ namespace ZeroTier { const char Utils::HEXCHARS[16] = { '0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f' }; -static const char *DAY_NAMES[7] = { "Sun","Mon","Tue","Wed","Thu","Fri","Sat" }; -static const char *MONTH_NAMES[12] = { "Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec" }; - std::map<std::string,bool> Utils::listDirectory(const char *path) { std::map<std::string,bool> r; @@ -62,7 +59,8 @@ std::map<std::string,bool> Utils::listDirectory(const char *path) WIN32_FIND_DATAA ffd; if ((hFind = FindFirstFileA((std::string(path) + "\\*").c_str(),&ffd)) != INVALID_HANDLE_VALUE) { do { - r[std::string(ffd.cFileName)] = ((ffd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) != 0); + if ((strcmp(ffd.cFileName,"."))&&(strcmp(ffd.cFileName,".."))) + r[std::string(ffd.cFileName)] = ((ffd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) != 0); } while (FindNextFileA(hFind,&ffd)); FindClose(hFind); } @@ -275,94 +273,6 @@ int64_t Utils::getFileSize(const char *path) return -1; } -std::string Utils::toRfc1123(uint64_t t64) -{ - struct tm t; - char buf[128]; - time_t utc = (time_t)(t64 / 1000ULL); -#ifdef __WINDOWS__ - gmtime_s(&t,&utc); -#else - gmtime_r(&utc,&t); -#endif - Utils::snprintf(buf,sizeof(buf),"%3s, %02d %3s %4d %02d:%02d:%02d GMT",DAY_NAMES[t.tm_wday],t.tm_mday,MONTH_NAMES[t.tm_mon],t.tm_year + 1900,t.tm_hour,t.tm_min,t.tm_sec); - return std::string(buf); -} - -#ifdef __WINDOWS__ -static int is_leap(unsigned y) { - y += 1900; - return (y % 4) == 0 && ((y % 100) != 0 || (y % 400) == 0); -} -static time_t timegm(struct tm *tm) { - static const unsigned ndays[2][12] = { - {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}, - {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31} - }; - time_t res = 0; - int i; - for (i = 70; i < tm->tm_year; ++i) - res += is_leap(i) ? 366 : 365; - - for (i = 0; i < tm->tm_mon; ++i) - res += ndays[is_leap(tm->tm_year)][i]; - res += tm->tm_mday - 1; - res *= 24; - res += tm->tm_hour; - res *= 60; - res += tm->tm_min; - res *= 60; - res += tm->tm_sec; - return res; -} -#endif - -uint64_t Utils::fromRfc1123(const char *tstr) -{ - struct tm t; - char wdays[128],mons[128]; - - int l = (int)strlen(tstr); - if ((l < 29)||(l > 64)) - return 0; - int assigned = sscanf(tstr,"%3s, %02d %3s %4d %02d:%02d:%02d GMT",wdays,&t.tm_mday,mons,&t.tm_year,&t.tm_hour,&t.tm_min,&t.tm_sec); - if (assigned != 7) - return 0; - - wdays[3] = '\0'; - for(t.tm_wday=0;t.tm_wday<7;++t.tm_wday) { -#ifdef __WINDOWS__ - if (!_stricmp(DAY_NAMES[t.tm_wday],wdays)) - break; -#else - if (!strcasecmp(DAY_NAMES[t.tm_wday],wdays)) - break; -#endif - } - if (t.tm_wday == 7) - return 0; - mons[3] = '\0'; - for(t.tm_mon=0;t.tm_mon<12;++t.tm_mon) { -#ifdef __WINDOWS__ - if (!_stricmp(MONTH_NAMES[t.tm_mday],mons)) - break; -#else - if (!strcasecmp(MONTH_NAMES[t.tm_mday],mons)) - break; -#endif - } - if (t.tm_mon == 12) - return 0; - - t.tm_wday = 0; // ignored by timegm - t.tm_yday = 0; // ignored by timegm - t.tm_isdst = 0; // ignored by timegm - - time_t utc = timegm(&t); - - return ((utc > 0) ? (1000ULL * (uint64_t)utc) : 0ULL); -} - bool Utils::readFile(const char *path,std::string &buf) { char tmp[4096]; |