Develop and Download Open Source Software

Browse CVS Repository

Diff of /malonnote/mnModel.cpp

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph | View Patch Patch

revision 1.2 by maloninc, Sun Jul 31 06:54:12 2005 UTC revision 1.8 by maloninc, Wed Aug 10 06:06:16 2005 UTC
# Line 4  Line 4 
4  #include <wx/regex.h>  #include <wx/regex.h>
5  #include <iconv.h>  #include <iconv.h>
6    
7  /* プロトタイプ */  static void   toLower(char* string);
8  static char*  decode(const char* string);  static char*  decode(const char* string);
9  static char*  encode(const char* string);  static char*  encode(const char* string);
10  static int compWikiData(const void* wiki1, const void* wiki2);  static int    compWikiData(const void* wiki1, const void* wiki2);
11    
12    
13  /******* WikiList ************************/  /******* WikiList ************************/
# Line 48  WikiList* mnModel::search(const char* se Line 48  WikiList* mnModel::search(const char* se
48          int         inbufSize = strlen(searchStr);          int         inbufSize = strlen(searchStr);
49          int         outbufSize = sizeof(outbuf);          int         outbufSize = sizeof(outbuf);
50          const char* decodeFileName;          const char* decodeFileName;
51            char decodeFileNameBuf[MAX_BUF_SIZE];
52    
53          memset(outbuf, 0, outbufSize);          memset(outbuf, 0, outbufSize);
54          codeSet = iconv_open(CODE_SET_EUC_JP, CODE_SET_SYSTEM);          codeSet = iconv_open(CODE_SET_EUC_JP, CODE_SET_SYSTEM);
55          if(codeSet == (iconv_t)-1) {          if(codeSet == (iconv_t)-1) {
56                  MN_FATAL_ERROR(wxT("failed iconv_open"));                  MN_FATAL_ERROR(wxT("failed iconv_open"));
57          }          }
58          iconv(codeSet, (const char**)&inbufPtr, (size_t*)&inbufSize, &outbufPtr, (size_t*)&outbufSize);          iconv(codeSet, (ICONV_CONST char**)&inbufPtr, (size_t*)&inbufSize, &outbufPtr, (size_t*)&outbufSize);
59          iconv_close(codeSet);          iconv_close(codeSet);
60    
61          dir = new wxDir(*wikiDataDir);          dir = new wxDir(*wikiDataDir);
# Line 63  WikiList* mnModel::search(const char* se Line 64  WikiList* mnModel::search(const char* se
64                  MN_FATAL_ERROR(wxT("wxDir has faild\n"));                  MN_FATAL_ERROR(wxT("wxDir has faild\n"));
65          return NULL;          return NULL;
66      }      }
67      bool cont = dir->GetFirst(fileName, wxEmptyString, wxDIR_FILES);      bool cont = dir->GetFirst(fileName, wxT("*.txt"), wxDIR_FILES);
68          while(cont){          while(cont){
69          fullPathName = *wikiDataDir + wxT("/") + *fileName;          fullPathName = *wikiDataDir + wxT("/") + *fileName;
70                  fp = fopen((const char*)fullPathName.mb_str(), "r");                  fp = fopen((const char*)fullPathName.mb_str(), "r");
# Line 75  WikiList* mnModel::search(const char* se Line 76  WikiList* mnModel::search(const char* se
76              fread(buf, MAX_BUF_SIZE-1, 1, fp);              fread(buf, MAX_BUF_SIZE-1, 1, fp);
77              if(buf[0] == 0) break;              if(buf[0] == 0) break;
78                          decodeFileName = decode(fileName->mb_str());                          decodeFileName = decode(fileName->mb_str());
79                            snprintf(decodeFileNameBuf, MAX_BUF_SIZE, "%s", decodeFileName);
80                            toLower(buf);
81                            toLower(outbuf);
82                            toLower(decodeFileNameBuf);
83                  if(strstr((const char*)buf, (const char*)outbuf) ||                  if(strstr((const char*)buf, (const char*)outbuf) ||
84                                  strstr((const char*)decodeFileName, (const char*)outbuf)) {                                  strstr((const char*)decodeFileName, (const char*)outbuf)) {
85                                  wikiData = new WikiData(wikiDataDir, (const char*)fileName->mb_str(), fp);                                  wikiData = new WikiData(wikiDataDir, (const char*)fileName->mb_str(), fp);
# Line 118  void mnModel::modSearchStr(wxString* old Line 123  void mnModel::modSearchStr(wxString* old
123                  itemStr.sprintf(wxT("%s"), newStr->c_str());                  itemStr.sprintf(wxT("%s"), newStr->c_str());
124          }          }
125  }  }
126    const wxString* mnModel::getWikiDataDir()
127    {
128            return wikiDataDir;
129    }
130    
131  const wxArrayString* mnModel::getSearchStrList()  const wxArrayString* mnModel::getSearchStrList()
132  {  {
# Line 155  WikiData::WikiData(wxString* dataDir, co Line 164  WikiData::WikiData(wxString* dataDir, co
164          decodeStr = decode(file);          decodeStr = decode(file);
165          inbufSize = strlen(decodeStr);          inbufSize = strlen(decodeStr);
166          outbufSize = sizeof(outbuf);          outbufSize = sizeof(outbuf);
167          iconv(codeSet, (const char**)&decodeStr, (size_t*)&inbufSize, &outbufPtr, (size_t*)&outbufSize);          iconv(codeSet, (ICONV_CONST char**)&decodeStr, (size_t*)&inbufSize, &outbufPtr, (size_t*)&outbufSize);
168          subject  = new wxString((const char*)outbuf, conv);          subject  = new wxString((const char*)outbuf, conv);
169          iconv_close(codeSet);          iconv_close(codeSet);
170    
# Line 239  void WikiData::modSubject(wxString* newS Line 248  void WikiData::modSubject(wxString* newS
248          if(codeSet == (iconv_t)-1) {          if(codeSet == (iconv_t)-1) {
249                  MN_FATAL_ERROR(wxT("failed iconv_open"));                  MN_FATAL_ERROR(wxT("failed iconv_open"));
250          }          }
251          iconv(codeSet, (const char**)&inbufPtr, (size_t*)&inbufSize, &outbufPtr, (size_t*)&outbufSize);          iconv(codeSet, (ICONV_CONST char**)&inbufPtr, (size_t*)&inbufSize, &outbufPtr, (size_t*)&outbufSize);
252          iconv_close(codeSet);          iconv_close(codeSet);
253          subject  = new wxString(newSubject->c_str());          subject  = new wxString(newSubject->c_str());
254          fileName = new wxString(encode(outbuf), conv);          fileName = new wxString(encode(outbuf), conv);
# Line 303  const wxString* WikiData::getText() Line 312  const wxString* WikiData::getText()
312                  outbufPtr = outbuf;                  outbufPtr = outbuf;
313                  outbufSize = sizeof(outbuf);                  outbufSize = sizeof(outbuf);
314                  memset(outbuf, 0, outbufSize);                  memset(outbuf, 0, outbufSize);
315                  iconv(codeSet, (const char**)&inbufPtr, (size_t*)&inbufSize, &outbufPtr, (size_t*)&outbufSize);                  iconv(codeSet, (ICONV_CONST char**)&inbufPtr, (size_t*)&inbufSize, &outbufPtr, (size_t*)&outbufSize);
316                  tmpStr = new wxString((char*)outbuf, conv);                  tmpStr = new wxString((char*)outbuf, conv);
317                  *text += *tmpStr;                  *text += *tmpStr;
318                  delete tmpStr;                  delete tmpStr;
# Line 316  const wxString* WikiData::getText() Line 325  const wxString* WikiData::getText()
325    
326  void WikiData::modText(wxString* intext)  void WikiData::modText(wxString* intext)
327  {  {
328            wxCSConv conv(wxT(CODE_SET_SYSTEM));
329          delete text;          delete text;
330          text = new wxString(intext->c_str());          //text = new wxString(intext->c_str());
331            text = new wxString(*intext);
332            //text = new wxString(intext->mb_str(), conv);
333  }  }
334    
335  void WikiData::removeDataFile()  void WikiData::removeDataFile()
# Line 360  void WikiData::save() Line 372  void WikiData::save()
372          outbufPtr = outbuf;          outbufPtr = outbuf;
373          outbufSize = sizeof(outbuf);          outbufSize = sizeof(outbuf);
374          memset(outbuf, 0, outbufSize);          memset(outbuf, 0, outbufSize);
375          iconv(codeSet, (const char**)&inbufPtr, (size_t*)&inbufSize, &outbufPtr, (size_t*)&outbufSize);          iconv(codeSet, (ICONV_CONST char**)&inbufPtr, (size_t*)&inbufSize, &outbufPtr, (size_t*)&outbufSize);
376          fwrite(outbuf, sizeof(outbuf)-outbufSize, 1, fp);          fwrite(outbuf, sizeof(outbuf)-outbufSize, 1, fp);
377          fclose(fp);          fclose(fp);
378          iconv_close(codeSet);          iconv_close(codeSet);
# Line 368  void WikiData::save() Line 380  void WikiData::save()
380    
381  /******* Tools ************************/  /******* Tools ************************/
382    
383    static void toLower(char* string)
384    {
385            int i;
386    
387            for(i = 0; string[i] != 0; i++) {
388                    string[i] = tolower(string[i]);
389            }
390    }
391    
392    
393  static char* decode(const char* string)  static char* decode(const char* string)
394  {  {
395          static char buf[MAX_BUF_SIZE];          static char buf[MAX_BUF_SIZE];

Legend:
Removed from v.1.2  
changed lines
  Added in v.1.8

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26