bool CIndex::IsReservedKeyword(const CString& Word) { static const CString __SORT("SORT:"); static const CString __HOST("HOST:"); static const CString __PATH("PATH:"); static const CString __URL("URL:"); static const CString __EXT("EXT:"); static const CString __OPT("OPT:"); static const CString __BEFORE("BEFORE:"); static const CString __AFTER("AFTER:"); static const CString __QUANT("QUANT:"); static const CString __META("META:"); return Word.StartsWithSame(__BEFORE) || Word.StartsWithSame(__AFTER) || Word.StartsWithSame(__QUANT) || Word.StartsWithSame(__EXT) || Word.StartsWithSame(__OPT) || Word.StartsWithSame(__URL) || Word.StartsWithSame(__PATH) || Word.StartsWithSame(__HOST) || Word.StartsWithSame(__SORT) || Word.StartsWithSame(__META); }
bool CDate::EncodeDate( const CString& DateString, const CString& DateFormat, struct tm& Result) { CString Date(DateString); static const char * Months[] = {"Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"}; static const char * WeekDays[] = {"Sun", "Mon","Tue","Wed","Thu","Fri","Sat"}; static const char * Zones[] = {"UTC", "GMT", "EDT", "EST", "CDT", "CST", "MDT", "MST", "PDT", "PST"}; static const int ZonesHoursSkew[] = {0, 0, 4, 5, 5, 6, 6, 7, 7, 8}; CString WeekDay; CString Month; CString Zone; Date.Replace('-', ' '); memset(&Result, 0, sizeof(Result)); bool fScan = SSScan( Date, &DateFormat, &WeekDay, NULL, &Result.tm_mday, &Month, &Result.tm_year, &Result.tm_hour, NULL, &Result.tm_min, NULL, &Result.tm_sec, &Zone); Trace(tagDateTime, levVerbose, ("CDate:: EncodeDate - scanned %s with " \ "WeekDay: %s " \ "Day: %d " \ "Month: %s " \ "Year: %d " \ "Hour: %d " \ "Minute: %d " \ "Second: %d " \ "Zone: %s", Date.GetBuffer(), WeekDay.GetBuffer(), Result.tm_mday, Month.GetBuffer(), Result.tm_year, Result.tm_hour, Result.tm_min, Result.tm_sec, Zone.GetBuffer())); if (fScan) { int i; if (Result.tm_year > 1900) Result.tm_year-=1900; for (i = 0; i < BASE_DIM(Months); i++) { if (Month.Same(Months[i])) { Result.tm_mon = i; break; } } for (i = 0; i < BASE_DIM(WeekDays); i++) { // support full weekdays as well if (WeekDay.StartsWithSame(WeekDays[i])) { Result.tm_wday = i; break; } } // time zone adjustments int ZoneAdjustment = 0; if (Zone.IsInt( & ZoneAdjustment)) { ZoneAdjustment *= 3600; } else { for (i = 0; i < BASE_DIM(Zones); i++) { if (Zone.Same(Zones[i])) { ZoneAdjustment = ZonesHoursSkew[i] * 3600; break; } } } Trace(tagDateTime, levVerbose, ("CDate:: EncodeSimpleDate - ZoneAdjustment %d second(s)", ZoneAdjustment)); Result.tm_isdst = 0; if (ZoneAdjustment) { time_t AdjustedTime; #ifdef _UNIX base_gmtime(AdjustedTime, Result); #endif #ifdef _WIN32 _tzset(); AdjustedTime = mktime(&Result); AdjustedTime -= _timezone; #endif AdjustedTime -= ZoneAdjustment; base_localtime(AdjustedTime, Result); } // Result.tm_gmtoff = ZoneAdjustment; return true; } return false; }