bool CSite::GetParseContent(const CString& ContentType) const { if (!ContentType.GetLength()) return true; if (m_CurrentConfiguration->GetParseContent().GetSize() == 0) return true; bool bParseContent = false; for (register int i = 0; i < (int) m_CurrentConfiguration->GetParseContent().GetSize(); i++) { CString CompContentType = m_CurrentConfiguration->GetParseContent()[i]; if (!CompContentType.GetLength()) continue; if (CompContentType == g_strStar) { bParseContent = true; } else if (CompContentType[0] == '-') { CompContentType.Delete(0, 1); if (CompContentType.Same(ContentType)) return false; } else { if (CompContentType[0] == '+') CompContentType.Delete(0, 1); if (CompContentType.Same(ContentType)) return true; } } return bParseContent; }
void CIndex::SortResults(CSearchObject& SearchObject, const CString& SortType) { Trace(tagSearch, levVerbose, ("CIndex::SortResults - entering.")); if (SearchObject.m_SearchData.m_Results.GetSize() == 0) return; if (SortType.Same("DATE")) { m_INFManager.StartReading(); SortResults(SearchObject, CSTDate, 0, SearchObject.m_SearchData.m_Results.GetSize()-1); m_INFManager.StopReading(); } else if (SortType.Same("IDATE")) { m_INFManager.StartReading(); SortResults(SearchObject, CSTDateInverse, 0, SearchObject.m_SearchData.m_Results.GetSize()-1); m_INFManager.StopReading(); } else if (SortType.Same("SIZE")) { m_INFManager.StartReading(); SortResults(SearchObject, CSTSize, 0, SearchObject.m_SearchData.m_Results.GetSize()-1); m_INFManager.StopReading(); } else if (SortType.Same("ISIZE")) { m_INFManager.StartReading(); SortResults(SearchObject, CSTSizeInverse, 0, SearchObject.m_SearchData.m_Results.GetSize()-1); m_INFManager.StopReading(); } else if (SortType.Same("TITLE")) { m_INFManager.StartReading(); SortResults(SearchObject, CSTTitle, 0, SearchObject.m_SearchData.m_Results.GetSize()-1); m_INFManager.StopReading(); } else if (SortType.Same("URL")) { m_URLManager.StartReading(); SortResults(SearchObject, CSTUrl, 0, SearchObject.m_SearchData.m_Results.GetSize()-1); m_URLManager.StopReading(); } else if (SortType.Same("DOMAIN")) { SortResultsByDomain(SearchObject); } Trace(tagSearch, levVerbose, ("CIndex::SortResults - leaving.")); }
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; }
void CDate::GetVariable(CString& Term, int /* Dummy */ ) const { if (Term.Same(g_strDateDayEnglish)) Term = Day(LocEnglish); else if (Term.Same(g_strDateDayEng)) Term = DayShort(LocEnglish); else if (Term.Same(g_strDateDayFrench)) Term = Day(LocFrench); else if (Term.Same(g_strDateDayFre)) Term = DayShort(LocFrench); else if (Term.Same(g_strDateMonthFrench)) Term = Month(LocFrench); else if (Term.Same(g_strDateMonthEnglish)) Term = Month(LocEnglish); else if (Term.Same(g_strDateMonthEng)) Term = MonthShort(LocEnglish); else if (Term.Same(g_strDateMonthFre)) Term = MonthShort(LocFrench); else if (Term.Same(g_strDateYear)) MapYear(Term); else if (Term.Same(g_strDateDay)) MapDay(Term); else if (Term.Same(g_strDateMonth)) MapMonth(Term); else if (Term.Same(g_strDateHour)) { Term.Empty(); if (m_TmTime.tm_hour < 10) Term = g_strZero; Term += CString::IntToStr(m_TmTime.tm_hour); } else if (Term.Same(g_strDateMin)) { Term.Empty(); if (m_TmTime.tm_min < 10) Term = g_strZero; Term += CString::IntToStr(m_TmTime.tm_min); } else if (Term.Same(g_strDateSec)) { Term.Empty(); if (m_TmTime.tm_sec < 10) Term = g_strZero; Term += CString::IntToStr(m_TmTime.tm_sec); } }
bool CMimeParser::ParseLine(const CString& CommandLine, CString& Name, CString& Value, CStringTable& Result) { int sPos = CommandLine.Pos(':'); if (sPos > 0) { CommandLine.Mid(0, sPos, &Name); Name.Trim(); CommandLine.Mid(sPos+1, CommandLine.GetLength(), &Value); Value.Trim(); if (Name.Same("Authorization") || Name.Same("Location")) { Result.Add(Name, Value); return true; } int CurPos = 0; int PrevPos = 0; CString ParameterName = Name; CString ParameterValue; bool Comment = false; while (CurPos < (int) Value.GetLength()) { switch(Value[CurPos]) { case '(': if (!Comment) Comment = true; break; case ')': Comment = false; break; case '=': // double ==, Base64 encoded for example if ((CurPos + 1) < (int) Value.GetLength()) { if (Value[CurPos + 1] == '=') { CurPos++; break; } } if (!Comment) { Value.Mid(PrevPos, CurPos - PrevPos, &ParameterName); ParameterName.Trim(); PrevPos = CurPos+1; } break; case ';': if (!Comment) { Value.Mid(PrevPos, CurPos - PrevPos, &ParameterValue); ParameterValue.Trim(); PrevPos = CurPos+1; ParameterName.Dequote(); ParameterValue.Dequote(); Result.Add(ParameterName, ParameterValue); /* CVector<CString> ParameterValueVector = CString::StrToVector(ParameterValue, ','); for (register int i=0;i<(int)ParameterValueVector.GetSize();i++) { _L_DEBUG(3, cout << "adding [" << ParameterName << "][" << ParameterValueVector[i].Trim() << "]" << endl); Result.Add(ParameterName, ParameterValueVector[i].Trim().Dequote()); } */ } break; default: break; }; CurPos++; } if (PrevPos != (int) Value.GetLength()) { Value.Mid(PrevPos, Value.GetLength(), &ParameterValue); ParameterValue.Trim(); /* CVector<CString> ParameterValueVector = CString::StrToVector(ParameterValue, ','); for (register int i=0;i<(int)ParameterValueVector.GetSize();i++) { _L_DEBUG(3, cout << "adding [" << ParameterName << "][" << ParameterValueVector[i].Trim() << "]" << endl); Result.Add(ParameterName, ParameterValueVector[i].Trim().Dequote()); } */ ParameterName.Dequote(); ParameterValue.Dequote(); Result.Add(ParameterName, ParameterValue); } return true; } else return false; }