void TestStrIStr(void)
{
    char    szFooBar[] = "FooBar";
    char*   sz;

    sz = StrIStr(szFooBar, "bar");
    AssertString("Bar", sz);

	sz = StrIStr(szFooBar, "FOO");
	AssertString("FooBar", sz);
}
BOOL CChars::ContainsIgnoreCase(const char* szString)
{
	char*	pc;

	pc = StrIStr(Text(), szString);
	if (pc)
	{
		return TRUE;
	}
	return FALSE;
}
Example #3
0
TRISTATE CFileFinder::FindFiles(char* szInDirectory, BOOL bDirs, char* szInName, char* szExtension)
{
	DIR*                pDIR;
	struct dirent*      pDirEnt;
	char				szFindName[MAX_PATH];
	char				szTemp[MAX_PATH];
	BOOL				bValid;
	char				szDirectory[MAX_PATH];
	char				szFile[MAX_PATH];
	char*				szFileExtension;
	int                 iStatus;
	struct stat         sBuffer;
	BOOL                bDir;
	CFileUtil           cFileUtil;

	if (!cFileUtil.FullPath(szDirectory, szInDirectory, MAX_PATH))
	{
		return TRIERROR;
	}

	pDIR = opendir(szDirectory);

	if (pDIR == NULL)
	{
		return TRITRUE;
	}

	pDirEnt = readdir(pDIR);
	while (pDirEnt != NULL)
	{
		bValid = TRUE;

		sprintf(szTemp, "%s%s%s", szDirectory, FILE_SEPARATOR, pDirEnt->d_name);
		iStatus = stat(szTemp, &sBuffer);
		if (iStatus == -1)
		{
			printf("%s: %s\n", strerror(errno), szTemp);
			return TRIERROR;
		}
		bDir = S_ISDIR(sBuffer.st_mode);
		if (bDir) //Directory
		{
			if (bDirs)
			{
				if (szInName != NULL)
				{
					strcpy(szFile, pDirEnt->d_name);
					RemoveExtension(szFile);
					if (StrIStr(szFile, szInName) == NULL)
					{
						bValid = FALSE;
					}
				}
				else
				{
					bValid = FALSE;
				}
			}
		}
		else
		{
			if (!bDirs)
			{
				if (szExtension != NULL)
				{
					szFileExtension = FindExtension(pDirEnt->d_name);
					szFileExtension++;
					if (StrICmp(szFileExtension, szExtension) != 0)
					{
						bValid = FALSE;
					}
				}
				if (szInName != NULL)
				{
					strcpy(szFile, pDirEnt->d_name);
					RemoveExtension(szFile);
					if (StrIStr(szFile, szInName) == NULL)
					{
						bValid = FALSE;
					}
				}
			}
			else
			{
				bValid = FALSE;
			}
		}

		if (bValid)
		{
			mcFiles.Add(szTemp, 0);
		}

		pDirEnt = readdir(pDIR);
	}

	closedir(pDIR);
	return TRITRUE;
}
CSubtitle* CSubtitleRealTextReader::ReadSubTitle(CSubtitleText *reader)
{
	wchar_t Buffer[MAX_SUBTITLE_LINE_SIZE];
	CSubtitle *subtitle = new CSubtitle();
	
	for(;;)
	{
		wchar_t *line = reader->ReadLine();
		if (line == NULL) break;
		
		line = StrIStr(line, L"<time ");
		if (line == NULL) continue;
		line += 6;

		wchar_t *begin = StrIStr(line, L"Begin=\"");
		if (begin == NULL) continue;
		int64_t start = read_ts(begin);

		wchar_t *end = StrIStr(line, L"end=\"");
		int64_t stop = end ? read_ts(end) : 0;

		line = StrIStr(line, L">");

		int32_t skip = 0;
		int32_t i = 0;
		
		for(wchar_t *p = line; *p; p++)
		{
			if(*p == '>') 
			{
				skip = 0; 
				continue;
			}
			if(*p == '<') 
			{
				skip = 1; 
				continue;
			}
			if(skip) 
			{
				continue;
			}

			if (i < MAX_SUBTITLE_LINE_SIZE - 1)
			{
				Buffer[i] = *p;
				i++;
			}
		}
		
		if (i)
		{
			Buffer[i] = 0;
			CSubtitleItem *item = subtitle->NewItem();
			item->AddLine(Buffer);
			item->m_StartTime = start;
			item->m_Duration = stop;
		}
	}

	if (subtitle->m_Count) return subtitle;
	delete subtitle;
	return NULL;
}