void MovieEncoder::DisposeData() { // If the movie is still opened, close it; this also flushes all tracks if (fMediaFile && fIsFileOpen) _CloseFile(); delete fMediaFile; // deletes the track, too fMediaFile = NULL; fMediaTrack = NULL; fFileList = NULL; }
void main(int argc,char **argv) { int fd; char *path; if(argc != 2){ printf("invalid argument!\n"); exit(1); } path = argv[1]; fd = _CreateFile(path,0770,O_RDONLY); printf("Creat file -- %s fd -- %d\n",path,fd); _CloseFile(fd); exit(0); }
void main(int argc,char **argv) { int n = 0; int fd; char *path; char buf[BUFSIZ]; if(argc != 2){ printf("invalid argument!\n"); exit(1); } path = argv[1]; fd = _OpenFile(path,O_RDONLY); printf("readfile fd -- %d\n",fd); if(fd != -1){ bzero(buf,BUFSIZ); n = _ReadFile(fd,buf,BUFSIZ,0); printf("read -- %s\n",buf); _CloseFile(fd); } exit(0); }
bool Config1::_ParseFile(LPWSTR pstrFile, LPDWORD pdwErrorLine, CONFIGFILE *pcf) { Mem::_zero(pcf, sizeof(CONFIGFILE)); if(pdwErrorLine)*pdwErrorLine = 0; //Открываем файл. LPSTR *pstrStrings; DWORD dwStringsCount; { Fs::MEMFILE mf; if(!Fs::_fileToMem(pstrFile, &mf, false))return false; if(mf.dwSize <= UTF8_BOM_SIZE || mf.dwSize > MAX_CONFIG_SIZE){Fs::_CloseMemFile(&mf); return false;} BYTE bDataOffset = 0; if(Str::_UTF8IsBOM(mf.pData))bDataOffset = UTF8_BOM_SIZE; dwStringsCount = Str::_SplitToStringsA((LPSTR)mf.pData + bDataOffset, mf.dwSize - bDataOffset, &pstrStrings, Str::STS_TRIM); Fs::_CloseMemFile(&mf); if(dwStringsCount == (DWORD)(-1))return false; } //Обработка строк. VAR **pvTree = NULL; DWORD dwTree = 0; bool rVal = true; VAR *pvLast = NULL; DWORD iCurLine = 0; for(; iCurLine < dwStringsCount; iCurLine++)if(pstrStrings[iCurLine] != NULL && pstrStrings[iCurLine][0] != 0) { LPSTR pCur = pstrStrings[iCurLine]; //Игнорируем коментарии. if(pCur[0] == '#' || pCur[0] == ';' || (pCur[0] == '/' && pCur[1] == '/'))continue; //Получаем аргументы. LPSTR *pstrArgs; DWORD dwArgsCount = Str::_GetArgumentsA(pCur, Str::_LengthA(pCur), &pstrArgs, Str::STA_FORMAT_C); if(dwArgsCount == (DWORD)(-1)){rVal = false; goto END;} if(dwArgsCount == 0)continue; //Управление потомками. if(dwArgsCount == 1 && pstrArgs[0][1] == 0) { register char c = pstrArgs[0][0]; if(c == '{' || c == '}') { Mem::freeArrayOfPointers(pstrArgs, dwArgsCount); if(c == '{') { if(pvLast == NULL || //Нет родителя. (dwTree > 0 && pvTree[dwTree - 1] == pvLast) || //Поворное указание ковычек. Напимер. ds {{ !Mem::reallocEx(&pvTree, sizeof(VAR *) * (dwTree + 1))) //Нехватае памяти. { rVal = false; goto END; } pvTree[dwTree++] = pvLast; } else if(/*c == '}' && */dwTree-- == 0) { rVal = false; break; } continue; } } //Конвертируем UTF-8 в unicode. for(DWORD a = 0; a < dwArgsCount; a++) { LPWSTR pt = Str::_utf8ToUnicode((LPBYTE)pstrArgs[a], -1); if(pt == NULL) { Mem::freeArrayOfPointers(pstrArgs, dwArgsCount); rVal = false; goto END; } Mem::free(pstrArgs[a]); pstrArgs[a] = (LPSTR)pt; } //Создаем переменную. if((pvLast = _AddVar(dwTree > 0 ? pvTree[dwTree - 1] : NULL, pcf, (LPWSTR *)pstrArgs, dwArgsCount)) == NULL) { rVal = false; Mem::freeArrayOfPointers(pstrArgs, dwArgsCount); goto END; } pvLast->dwSourceLine = iCurLine + 1; } END: Mem::free(pvTree); Mem::freeArrayOfPointers(pstrStrings, dwStringsCount); if(rVal == false) { if(pdwErrorLine)*pdwErrorLine = iCurLine + 1; _CloseFile(pcf); } return rVal; }
void Logger::CloseLogger() { _CloseFile(); }
bool Config1::_ParseFile(LPWSTR pstrFile, LPDWORD pdwErrorLine, CONFIGFILE *pcf) { Mem::_zero(pcf, sizeof(CONFIGFILE)); if(pdwErrorLine)*pdwErrorLine = 0; //Open the file. LPSTR *pstrStrings; DWORD dwStringsCount; { Fs::MEMFILE mf; if(!Fs::_fileToMem(pstrFile, &mf, false))return false; if(mf.dwSize <= UTF8_BOM_SIZE || mf.dwSize > MAX_CONFIG_SIZE){Fs::_CloseMemFile(&mf); return false;} BYTE bDataOffset = 0; if(Str::_UTF8IsBOM(mf.pData))bDataOffset = UTF8_BOM_SIZE; dwStringsCount = Str::_SplitToStringsA((LPSTR)mf.pData + bDataOffset, mf.dwSize - bDataOffset, &pstrStrings, Str::STS_TRIM); Fs::_CloseMemFile(&mf); if(dwStringsCount == (DWORD)(-1))return false; } //Processing lines. VAR **pvTree = NULL; DWORD dwTree = 0; bool rVal = true; VAR *pvLast = NULL; DWORD iCurLine = 0; for(; iCurLine < dwStringsCount; iCurLine++)if(pstrStrings[iCurLine] != NULL && pstrStrings[iCurLine][0] != 0) { LPSTR pCur = pstrStrings[iCurLine]; //Ignore the comments. if(pCur[0] == '#' || pCur[0] == ';' || (pCur[0] == '/' && pCur[1] == '/'))continue; //Obtain the arguments. LPSTR *pstrArgs; DWORD dwArgsCount = Str::_GetArgumentsA(pCur, Str::_LengthA(pCur), &pstrArgs, Str::STA_FORMAT_C); if(dwArgsCount == (DWORD)(-1)){rVal = false; goto END;} if(dwArgsCount == 0)continue; //Office of the descendants. if(dwArgsCount == 1 && pstrArgs[0][1] == 0) { register char c = pstrArgs[0][0]; if(c == '{' || c == '}') { Mem::freeArrayOfPointers(pstrArgs, dwArgsCount); if(c == '{') { if(pvLast == NULL || //No parent. (dwTree > 0 && pvTree[dwTree - 1] == pvLast) || //Povornoe indication of the quotes. Napimer. ds {{ !Mem::reallocEx(&pvTree, sizeof(VAR *) * (dwTree + 1))) //A shortage of memory. { rVal = false; goto END; } pvTree[dwTree++] = pvLast; } else if(/*c == '}' & &*/dwTree-- == 0) { rVal = false; break; } continue; } } //Convert UTF-8 to unicode. for(DWORD a = 0; a < dwArgsCount; a++) { LPWSTR pt = Str::_utf8ToUnicode((LPBYTE)pstrArgs[a], -1); if(pt == NULL) { Mem::freeArrayOfPointers(pstrArgs, dwArgsCount); rVal = false; goto END; } Mem::free(pstrArgs[a]); pstrArgs[a] = (LPSTR)pt; } //Create a variable. if((pvLast = _AddVar(dwTree > 0 ? pvTree[dwTree - 1] : NULL, pcf, (LPWSTR *)pstrArgs, dwArgsCount)) == NULL) { rVal = false; Mem::freeArrayOfPointers(pstrArgs, dwArgsCount); goto END; } pvLast->dwSourceLine = iCurLine + 1; } END: Mem::free(pvTree); Mem::freeArrayOfPointers(pstrStrings, dwStringsCount); if(rVal == false) { if(pdwErrorLine)*pdwErrorLine = iCurLine + 1; _CloseFile(pcf); } return rVal; }