//读入文件 bool Ini::Open( const char *filename ) { //__ENTER_FUNCTION strncpy(m_strFileName, filename, MAX_PATH1-1); SAFE_FREE( m_strData ); //获取文件长度 FILE* fp; fp = fopen(filename,"rb"); if(fp == 0) { m_lDataLen = -1; } else { fseek( fp, 0L, SEEK_END ); m_lDataLen = ftell( fp ); fclose(fp); } //文件存在 if( m_lDataLen > 0 ) { m_strData = (char*)malloc( (size_t)m_lDataLen ) ; //m_strData = new char[m_lDataLen]; memset( m_strData, 0, m_lDataLen ) ; FILE *fp; fp=fopen(filename, "rb"); //AssertEx( fp!=NULL, filename ); fread(m_strData, m_lDataLen, 1, fp); //读数据 fclose(fp); //初始化索引 InitIndex(); return true; } else // 文件不存在 { // 找不到文件 m_lDataLen=1; m_strData = (char*)malloc( (size_t)m_lDataLen ) ; //m_strData = new char[m_lDataLen]; memset(m_strData, 0, 1); InitIndex(); } return false; //__LEAVE_FUNCTION // return 0 ; }
/*================================================================ * 函数名: Open * 参数: [in] (char *filename)文件名称 * 功能描述: 打开指定的INI文件 * 返回值: bool, 成功为true, 错误为false ================================================================*/ bool CIni::Open(char *filename) { strcpy(m_str_file_name, filename); SAFE_FREE( m_str_data ); //获取文件长度 int fh; fh = _open( filename, _O_RDONLY ); if (fh == ERROR_FILE_LENGTH) { m_data_length = -1; } m_data_length = _filelength(fh); _close(fh); //文件存在 if( m_data_length > 0 ) { m_str_data = new char[m_data_length]; FILE *fp; fp = fopen(filename, "rb"); if (NULL == fp) { SAFE_DELETE(m_str_data); return false; } fread(m_str_data, m_data_length, 1, fp); //读数据 fclose(fp); //初始化索引 InitIndex(); return true; } else // 文件不存在 { // 找不到文件 m_data_length=1; m_str_data = new char[m_data_length]; memset(m_str_data, 0, 1); InitIndex(); } return false; }
//加入一个索引 bool Ini::AddIndex(char *index) { //__ENTER_FUNCTION char str[256]; memset(str, 0, 256); int n=FindIndex(index); if( n == -1 ) //新建索引 { sprintf(str,"\r\n[%s]\r\n",index); m_strData = (char *)realloc(m_strData, m_lDataLen+strlen(str)); //重新分配内存 sprintf(&m_strData[m_lDataLen], "%s", str); m_lDataLen+=(long)(strlen(str)); InitIndex(); return true; } return false; //已经存在 //__LEAVE_FUNCTION // return 0 ; }
LocSelDlg::LocSelDlg( wxWindow* parent, iONode props, bool mic, const char* locid, bool cars ) { m_Props = props; m_MICmode = mic; m_MICini = NULL; m_LocID = locid; m_AddCars = cars; if( m_MICmode ) { m_MICini = wGui.getmic( wxGetApp().getIni() ); if( m_MICini == NULL ) { m_MICini = NodeOp.inst( wMIC.name(), wxGetApp().getIni(), ELEMENT_NODE ); NodeOp.addChild( wxGetApp().getIni(), m_MICini ); } } else { } Create( parent, -1, wxGetApp().getMsg("locseldlg") ); m_LocImageIndex->SetMaxSize( wxSize( -1,70 ) ); InitIndex(); GetSizer()->Layout(); GetSizer()->Fit(this); GetSizer()->SetSizeHints(this); }
void SListViewItemLocatorFlex::OnDataSetChanged() { Clear(); if(m_adapter) { int nTreeSize = m_adapter->getCount(); int nBranchSize = SEGMENT_SIZE; int nTreeDeep = GetIndexDeep(); for(int i=0;i<nTreeDeep;i++) nBranchSize *= INDEX_WIDTH; InitIndex(STVI_ROOT,nTreeSize,nBranchSize); } }
// function to reload an index from a file, re-create the index structure for it, and output it to a new file INVERTED_INDEX* reloadIndex(char* dirname, char* filename, INVERTED_INDEX* index) { index = InitIndex(); // strings to build up the full path char* path; path = (char*)malloc(sizeof(char)*1000); BZERO(path, 1000); strcpy(path, dirname); strcat(path, "/"); strcat(path, filename); FILE* indexFile; indexFile = fopen(path, "r"); if (indexFile == NULL) { printf("Error opening [%s] to RELOAD.\n", path); } char* buffer; buffer = (char*)malloc(sizeof(char)*20000); BZERO(buffer, 20000); // get each line from the index file and process it while(1) { if(fgets(buffer, 20000, indexFile) == NULL) { break; } else { removeNewLines(buffer); // variables to store parsed elements: word, # of docs, pairs of docID's and frequency char temp[20000]; strcpy(temp, buffer); // free(buffer); char* word; word = strtok(temp, " "); char* docs; docs = strtok(NULL, " "); char* doc; // while the end of the line hasn't been reached, keep str'toking while((doc = strtok(NULL, " ")) != NULL) { char* freq; // parse the frequency freq = strtok(NULL, " "); // insert word, along with docID and frequency into the index insertElementIntoIndex(word, atoi(doc), atoi(freq), index); } } } fclose(indexFile); free(path); free(buffer); return(index); }
UPK_STATUS NitroPlus::Open( PCWSTR FileName ) { PVOID EntryBuffer; LARGE_INTEGER BytesRead; NTSTATUS Status; NITRO_PLUS_NPA_HEADER Header; Status = m_File.Open(FileName); FAIL_RETURN(Status); Status = m_File.Read(&Header, sizeof(Header), &BytesRead); FAIL_RETURN(Status); if ( BytesRead.LowPart != sizeof(Header) || (*(PULONG)Header.Signature & 0x00FFFFFF) != NPA_HEADER_MAGIC ) { return STATUS_UNSUCCESSFUL; } switch (Header.Version) { case NPA_GCLX_VERSION: break; default: return STATUS_UNSUCCESSFUL; } EntryBuffer = AllocateMemory(Header.EntrySize); if (EntryBuffer == NULL) return STATUS_INSUFFICIENT_RESOURCES; Status = m_File.Read(EntryBuffer, Header.EntrySize, &BytesRead); FAIL_RETURN(Status); if (BytesRead.LowPart != Header.EntrySize) return STATUS_UNSUCCESSFUL; Status = InitIndex(EntryBuffer, &Header); FreeMemory(EntryBuffer); return Status; }
/*================================================================ * 函数名: AddIndex * 参数: [in] (char *index_name)索引名称 * 功能描述: 加入一个索引 * 返回值: 成功则返回true, 否则返false ================================================================*/ bool CIni::AddIndex(char *index_name) { char str[256] = ""; int n = FindIndex(index_name); if (n == ERROR_DATA_POS) //新建索引 { sprintf(str,"[%s]", index_name); m_str_data = (char *)realloc(m_str_data, m_data_length + strlen(str)); //重新分配内存 sprintf(&m_str_data[m_data_length], "%s", str); m_data_length += strlen(str); InitIndex(); return true; } return false; //已经存在 }
/* Creates the whole package */ static BOOL CreateViewer(HHInfo *pHHInfo) { HH_CreateFont(pHHInfo); if (!HH_CreateHelpWindow(pHHInfo)) return FALSE; HH_InitRequiredControls(ICC_BAR_CLASSES); if (!HH_AddToolbar(pHHInfo)) return FALSE; HH_RegisterChildWndClass(pHHInfo); if (!HH_AddNavigationPane(pHHInfo)) return FALSE; HH_RegisterSizeBarClass(pHHInfo); if (!HH_AddSizeBar(pHHInfo)) return FALSE; if (!HH_AddHTMLPane(pHHInfo)) return FALSE; if (!AddContentTab(pHHInfo)) return FALSE; if (!AddIndexTab(pHHInfo)) return FALSE; if (!AddIndexPopup(pHHInfo)) return FALSE; if (!AddSearchTab(pHHInfo)) return FALSE; InitContent(pHHInfo); InitIndex(pHHInfo); return TRUE; }
void SListViewItemLocatorFlex::InitIndex(HSTREEITEM hParent,int nItems,int nBranchSize) { BranchInfo bi; bi.nBranchHei = nItems*GetFixItemHeight(); bi.nBranchSize = nItems; HSTREEITEM hBranch = m_itemPosIndex.InsertItem(bi,hParent); if(nItems > SEGMENT_SIZE) {//插入子节点 int nRemain = nItems; int nSubBranchSize = nBranchSize/INDEX_WIDTH; while(nRemain>0) { int nItems2 = nSubBranchSize; if(nItems2>nRemain) nItems2 = nRemain; InitIndex(hBranch,nItems2,nSubBranchSize); nRemain -= nItems2; } }else { m_segments.Add(new SegmentInfo(nItems,hBranch)); } }
BOOL CFrfr2::Open(PCWSTR FileName) { BOOL Success; BYTE Buffer[0x10], *SizeBuffer; PBYTE EntryBuffer, FileNameBuffer; ULONG Length, EntrySize, FileNameSize; NTSTATUS Status; FRFR2_IGA_HEADER Header; Status = file.Open(FileName); if (!NT_SUCCESS(Status)) return FALSE; Status = file.Read(&Header, sizeof(Header)); if (!NT_SUCCESS(Status)) return FALSE; if (Header.Magic != FRFR2_IGA_MAGIC) return FALSE; switch (Header.Version) { case 1: case 2: break; default: // not implemented return FALSE; } Status = file.Read(Buffer, 5); if (!NT_SUCCESS(Status)) return FALSE; SizeBuffer = Buffer; EntrySize = GetCompactInteger(SizeBuffer, &Length); if (Length < 1) return FALSE; Success = FALSE; EntryBuffer = NULL; FileNameBuffer = NULL; LOOP_ONCE { EntryBuffer = (PBYTE)Alloc(EntrySize); if (EntryBuffer == NULL) break; Length = 5 - Length; Status = file.Read(EntryBuffer + Length, EntrySize - Length); if (!NT_SUCCESS(Status)) break; CopyMemory(EntryBuffer, SizeBuffer, Length); Status = file.Read(Buffer, 5); if (!NT_SUCCESS(Status)) break; SizeBuffer = Buffer; FileNameSize = GetCompactInteger(SizeBuffer, &Length); if (Length < 1) return FALSE; FileNameBuffer = (PBYTE)Alloc(FileNameSize); if (FileNameBuffer == NULL) break; Length = 5 - Length; Status = file.Read(FileNameBuffer + Length, FileNameSize - Length); if (!NT_SUCCESS(Status)) break; CopyMemory(FileNameBuffer, SizeBuffer, Length); Success = InitIndex(&Header, EntryBuffer, EntrySize, FileNameBuffer, FileNameSize); } Free(EntryBuffer); Free(FileNameBuffer); return Success; }
BOOL CReturnParameter::LoadFromXMLFile(CXXMLFile* pFile, CXXMLFile::CElement* pParameterElement) { CStdString typeStr; CStdString valueStr; CStdString indexStr; //CStdString editableStr; CStdString visibleStr; CStdString name; if(pFile && pParameterElement) { if(pParameterElement->m_Text.CompareNoCase(_T("ReturnParameter")) == 0) { //Parameter Element tMmcStringToStringMap::iterator it; if((it=pParameterElement->AttributeToValue.find("Id")) == pParameterElement->AttributeToValue.end() ) return FALSE; indexStr = (*it).second; if(!InitIndex(indexStr)) return FALSE; if((it=pParameterElement->AttributeToValue.find("Name")) == pParameterElement->AttributeToValue.end() ) return FALSE; name = (*it).second; if(!InitName(name)) return FALSE; if((it=pParameterElement->AttributeToValue.find("Type")) == pParameterElement->AttributeToValue.end() ) return FALSE; typeStr = (*it).second; if(!InitType(typeStr)) return FALSE; if((it=pParameterElement->AttributeToValue.find("Value")) == pParameterElement->AttributeToValue.end() ) return FALSE; valueStr = (*it).second; if(!SetValue(valueStr)) return FALSE; m_oVisible = TRUE; if((it=pParameterElement->AttributeToValue.find("Visible")) != pParameterElement->AttributeToValue.end() ) { visibleStr = (*it).second; if( !InitVisible(visibleStr) ) m_oVisible = FALSE; } return TRUE; } } return FALSE; }
Bool CSharu::Open(PCWChar pszFileName) { ReleaseAll(); if (file.Open(pszFileName) == False) return False; Bool ret; UInt32 Version, Key; SPackHeader header; SPackHashTableHeader *pHashTable; static Char Seed[] = "8hr48uky,8ugi8ewra4g8d5vbf5hb5s6"; UNREFERENCED_PARAMETER(pHashTable); if (file.Seek(file.FILE_SEEK_END, -(Long)sizeof(header)) == False) return False; if (file.Read(&header, sizeof(header)) == False) return False; Version = *(PUInt32)&header.tag[11]; if (Version > TAG3('3.0') || Version < TAG3('1.0')) return False; header.tag[11] = 0; if (StrICompareA(header.tag, "FilePackVer")) return False; Key = Hash(header.Data, sizeof(header.Data)) & 0x0FFFFFFF; Decrypt(header.Seed, sizeof(header.Seed), Key); if (Version == TAG3('3.0') && memcmp(header.Seed, Seed, sizeof(header.Seed))) return False; // what the f**k is it #if 0 pHashTable = (SPackHashTableHeader *)Alloc(header.HashTableSize); if (pHashTable == NULL) return False; if (file.Seek(file.FILE_SEEK_END, -(Long)(sizeof(header) + header.HashTableSize)) == False) return False; if (file.Read(pHashTable, header.HashTableSize) == False) return False; Version = *(PUInt32)&pHashTable->HashVer[7]; do { ret = False; if (Version < TAG3('1.2') || Version > TAG3('1.3')) break; pHashTable->HashVer[7] = 0; if (lstrcmpiA(pHashTable->HashVer, "HashVer") || pHashTable->SubTableNum != 0x100) break; Decrypt(&pHashTable->Data, pHashTable->CompressedSize, 0x428); UInt32 DecompressSize; LPVoid lpDecrypted = Alloc(pHashTable->Data.DecompressSize); if (lpDecrypted == NULL) break; DecompressSize = Uncompress(&pHashTable->Data, pHashTable->CompressedSize, lpDecrypted); CFileDisk f; if (f.Open(L"K:\\galgame\\¥×¥ê¥ó¥»¥¹¥é¥Ð©`!\\GameData\\test.bin", f.W, f.N)) { f.Write(pHashTable, sizeof(*pHashTable) - sizeof(pHashTable->Data)); f.Write(lpDecrypted, DecompressSize); } Free(lpDecrypted); } while (0); Free(pHashTable); return False; #endif if (Version == TAG3('1.0')) Key = 0xC4; ret = InitIndex(&header, Key); return ret; }