| 40 |
WikiData* wikiData; |
WikiData* wikiData; |
| 41 |
WikiList* list = new WikiList(); |
WikiList* list = new WikiList(); |
| 42 |
wxString* fileName = new wxString(); |
wxString* fileName = new wxString(); |
| 43 |
|
wxRegEx* regStr; |
| 44 |
|
iconv_t codeSet; |
| 45 |
|
char outbuf[MAX_BUF_SIZE]; |
| 46 |
|
const char* inbufPtr = searchStr; |
| 47 |
|
char* outbufPtr = outbuf; |
| 48 |
|
int inbufSize = strlen(searchStr); |
| 49 |
|
int outbufSize = sizeof(outbuf); |
| 50 |
const char* decodeFileName; |
const char* decodeFileName; |
|
wxCSConv eucConv(wxT(CODE_SET_EUC_JP)); |
|
|
wxCSConv sysConv(wxT(CODE_SET_SYSTEM)); |
|
| 51 |
|
|
| 52 |
|
memset(outbuf, 0, outbufSize); |
| 53 |
|
codeSet = iconv_open(CODE_SET_EUC_JP, CODE_SET_SYSTEM); |
| 54 |
|
if(codeSet == (iconv_t)-1) { |
| 55 |
|
MN_FATAL_ERROR(wxT("failed iconv_open")); |
| 56 |
|
} |
| 57 |
|
iconv(codeSet, (ICONV_CONST char**)&inbufPtr, (size_t*)&inbufSize, &outbufPtr, (size_t*)&outbufSize); |
| 58 |
|
iconv_close(codeSet); |
| 59 |
|
|
| 60 |
dir = new wxDir(*wikiDataDir); |
dir = new wxDir(*wikiDataDir); |
| 61 |
if ( !dir->IsOpened() ) |
if ( !dir->IsOpened() ) |
| 75 |
fread(buf, MAX_BUF_SIZE-1, 1, fp); |
fread(buf, MAX_BUF_SIZE-1, 1, fp); |
| 76 |
if(buf[0] == 0) break; |
if(buf[0] == 0) break; |
| 77 |
decodeFileName = decode(fileName->mb_str()); |
decodeFileName = decode(fileName->mb_str()); |
| 78 |
wxString strbuf(buf, eucConv); |
if(strstr((const char*)buf, (const char*)outbuf) || |
| 79 |
wxString strSearch(searchStr, sysConv); |
strstr((const char*)decodeFileName, (const char*)outbuf)) { |
|
wxString strDecodeFileName(decodeFileName, eucConv); |
|
|
wxRegEx regStr(strSearch, wxRE_DEFAULT|wxRE_NEWLINE|wxRE_ICASE); |
|
|
if(regStr.Matches(strbuf) || regStr.Matches(strDecodeFileName)){ |
|
| 80 |
wikiData = new WikiData(wikiDataDir, (const char*)fileName->mb_str(), fp); |
wikiData = new WikiData(wikiDataDir, (const char*)fileName->mb_str(), fp); |
| 81 |
list->Append(wikiData); |
list->Append(wikiData); |
| 82 |
break; |
break; |
| 87 |
cont = dir->GetNext(fileName); |
cont = dir->GetNext(fileName); |
| 88 |
} |
} |
| 89 |
delete dir; |
delete dir; |
|
delete fileName; |
|
| 90 |
|
|
| 91 |
list->Sort(compWikiData); |
list->Sort(compWikiData); |
| 92 |
return list; |
return list; |