Esempio n. 1
0
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;    
}
Esempio n. 2
0
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."));
}
Esempio n. 3
0
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;
}
Esempio n. 4
0
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); }
}
Esempio n. 5
0
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;
}