Beispiel #1
0
//读入文件
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 ;
}
Beispiel #2
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;
}
Beispiel #3
0
//加入一个索引
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 ;
}
Beispiel #4
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);

}
Beispiel #5
0
 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);
}
Beispiel #7
0
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;
}
Beispiel #8
0
/*================================================================ 
* 函数名:    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;	//已经存在
}
Beispiel #9
0
/* 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;
}
Beispiel #10
0
    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));
        }
    }
Beispiel #11
0
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;
}
Beispiel #12
0
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;
}
Beispiel #13
0
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;
}