コード例 #1
0
ファイル: weather_parser.cpp プロジェクト: partition/kadu
/**
	Zwraca wyszukane identyfikatory miast dla szukanego miasta
**/
void WeatherParser::getSearch(const QString &page, const PlainConfigFile *wConfig, const QString &serverConfigFile, CITYSEARCHRESULTS *results) const
{
	kdebugf();

	bool CaseSensitive = wConfig->readBoolEntry("Default","CaseSensitive");

	long int start, separator, end, current;
	long int startData, sepData;
	bool idFirst;
	QString section, starttag, septag, endtag, first, second;

	int countResults = wConfig->readNumEntry("Name Search","SearchResults");

	for (int i = 0; i < countResults; i++)
	{
		section = QString("SearchResult%1").arg(i + 1);
		idFirst = wConfig->readBoolEntry(section,"IDFirst");
		starttag = wConfig->readEntry(section,"Start");
		septag = wConfig->readEntry(section,"Separator");
		endtag = wConfig->readEntry(section,"End");

		current = 0;
		do
		{
			start = page.find(starttag, current, CaseSensitive);
			startData = start + starttag.length();
			separator = page.find(septag, startData, CaseSensitive);
			sepData = separator + septag.length();
			end = page.find(endtag, sepData, CaseSensitive);

			if (end != -1 && start != -1 && separator != -1)
			{
				first = page.mid(startData, separator-startData);
				second = page.mid(sepData, end-sepData);

				if (!first.isEmpty() && !second.isEmpty())
				{
					if (idFirst)
						results->push_back(CitySearchResult(tagClean(second), first, serverConfigFile));
					else
						results->push_back(CitySearchResult(tagClean(first), second, serverConfigFile));
				}
				current = end + endtag.length();
			}
		}
		while (end != -1 && start != -1 && separator != -1);
	}

	kdebugf2();
}
コード例 #2
0
ファイル: weather_parser.cpp プロジェクト: partition/kadu
/**
	Wylawianie fragmentu ze strony
**/
bool WeatherParser::getDataValue(const QString &page, WDataValue &wdata, int &cursor, const PlainConfigFile *wConfig, bool CaseSensitive) const
{
	kdebugf();

	long int start, end;
	long int startData;

	start = page.find(wdata.Start, cursor, CaseSensitive);
	if (start == -1)
		return false;

	startData = start + wdata.Start.length();

	end = page.find(wdata.End, startData, CaseSensitive);
	if (end == -1)
		return false;

	cursor = end;
	wdata.Content = tagClean(page.mid(startData, end-startData));

	kdebugf2();
	return true;
}
コード例 #3
0
ファイル: poptALL.c プロジェクト: hahnakane/junkcode
poptContext
rpmcliFini(poptContext optCon)
	/*@globals keyids @*/
	/*@modifies keyids @*/
{
/*@-nestedextern@*/
    extern rpmioPool _rpmjsPool;
    extern rpmioPool _rpmrubyPool;
    extern rpmioPool _headerPool;
    extern rpmioPool _rpmmiPool;
    extern rpmioPool _dbiPool;
    extern rpmioPool _rpmdbPool;
    extern rpmioPool _rpmrepoPool;
    extern rpmioPool _rpmwfPool;
    extern const char * evr_tuple_order;
    extern const char * evr_tuple_match;
    extern miRE evr_tuple_mire;
/*@=nestedextern@*/

/*@-mods@*/
    evr_tuple_order = _free(evr_tuple_order);
    evr_tuple_match = _free(evr_tuple_match);
    evr_tuple_mire = mireFree(evr_tuple_mire);

/*@-onlyunqglobaltrans@*/
    /* Realease (and dereference) embedded interpreter global objects first. */
    _rpmjsI = rpmjsFree(_rpmjsI);
    _rpmjsPool = rpmioFreePool(_rpmjsPool);
    _rpmrubyI = rpmrubyFree(_rpmrubyI);
    _rpmrubyPool = rpmioFreePool(_rpmrubyPool);

    _rpmgiPool = rpmioFreePool(_rpmgiPool);
    _rpmmiPool = rpmioFreePool(_rpmmiPool);

    _psmPool = rpmioFreePool(_psmPool);
    _rpmtsiPool = rpmioFreePool(_rpmtsiPool);

    _rpmtsPool = rpmioFreePool(_rpmtsPool);
    _rpmtePool = rpmioFreePool(_rpmtePool);
    _rpmpsPool = rpmioFreePool(_rpmpsPool);

    _rpmfcPool = rpmioFreePool(_rpmfcPool);

    rpmnsClean();

    _rpmdsPool = rpmioFreePool(_rpmdsPool);
    _rpmfiPool = rpmioFreePool(_rpmfiPool);

    _rpmwfPool = rpmioFreePool(_rpmwfPool);
    _rpmdbPool = rpmioFreePool(_rpmdbPool);
    _rpmrepoPool = rpmioFreePool(_rpmrepoPool);
    _dbiPool = rpmioFreePool(_dbiPool);
    _headerPool = rpmioFreePool(_headerPool);
/*@=onlyunqglobaltrans@*/
/*@=mods@*/

    /* XXX this should be done in the rpmioClean() wrapper. */
    /* keeps memory leak checkers quiet */
    rpmFreeMacros(NULL);
/*@i@*/	rpmFreeMacros(rpmCLIMacroContext);

    rpmFreeRpmrc();	/* XXX mireFreeAll(platpat) before rpmioFreePool. */

    rpmFreeFilesystems();
/*@i@*/	rpmcliTargets = _free(rpmcliTargets);

    keyids = _free(keyids);

    tagClean(NULL);	/* Free header tag indices. */

    rpmioClean();	/* XXX rpmioFreePool()'s after everything else. */

    optCon = poptFreeContext(optCon);

#if defined(HAVE_MCHECK_H) && defined(HAVE_MTRACE)
    /*@-noeffect@*/
    muntrace();   /* Trace malloc only if MALLOC_TRACE=mtrace-output-file. */
    /*@=noeffect@*/
#endif

/*@-globstate@*/
    return NULL;
/*@=globstate@*/
}