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.8 by maloninc, Wed Aug 10 06:06:16 2005 UTC revision 1.9 by maloninc, Wed Aug 10 06:32:31 2005 UTC
# Line 33  mnModel::~mnModel() Line 33  mnModel::~mnModel()
33    
34  WikiList* mnModel::search(const char* searchStr)  WikiList* mnModel::search(const char* searchStr)
35  {  {
36            int         i;
37          wxDir*      dir;          wxDir*      dir;
38          FILE*       fp;          FILE*       fp;
39      wxString    fullPathName;      wxString    fullPathName;
# Line 40  WikiList* mnModel::search(const char* se Line 41  WikiList* mnModel::search(const char* se
41          WikiData*   wikiData;          WikiData*   wikiData;
42      WikiList*   list = new WikiList();      WikiList*   list = new WikiList();
43      wxString*   fileName = new wxString();      wxString*   fileName = new wxString();
         wxRegEx*        regStr;  
44          iconv_t     codeSet;          iconv_t     codeSet;
45          char        outbuf[MAX_BUF_SIZE];          char        outbuf[MAX_BUF_SIZE];
46          const char*       inbufPtr  = searchStr;          const char*       inbufPtr  = searchStr;
# Line 49  WikiList* mnModel::search(const char* se Line 49  WikiList* mnModel::search(const char* se
49          int         outbufSize = sizeof(outbuf);          int         outbufSize = sizeof(outbuf);
50          const char* decodeFileName;          const char* decodeFileName;
51          char decodeFileNameBuf[MAX_BUF_SIZE];          char decodeFileNameBuf[MAX_BUF_SIZE];
52            char*       token;
53            char*       tokenList[32];
54            bool        found;
55    
56            memset(tokenList, 0, sizeof(char*)*32);
57          memset(outbuf, 0, outbufSize);          memset(outbuf, 0, outbufSize);
58          codeSet = iconv_open(CODE_SET_EUC_JP, CODE_SET_SYSTEM);          codeSet = iconv_open(CODE_SET_EUC_JP, CODE_SET_SYSTEM);
59          if(codeSet == (iconv_t)-1) {          if(codeSet == (iconv_t)-1) {
# Line 58  WikiList* mnModel::search(const char* se Line 62  WikiList* mnModel::search(const char* se
62          iconv(codeSet, (ICONV_CONST char**)&inbufPtr, (size_t*)&inbufSize, &outbufPtr, (size_t*)&outbufSize);          iconv(codeSet, (ICONV_CONST char**)&inbufPtr, (size_t*)&inbufSize, &outbufPtr, (size_t*)&outbufSize);
63          iconv_close(codeSet);          iconv_close(codeSet);
64    
65            /* searchStr to Tokens */
66            token = strtok(outbuf, " ");
67            tokenList[0] = (char*)malloc(strlen(token)+1);
68            snprintf(tokenList[0], strlen(token)+1, "%s", token);
69            i = 1;
70            while((token = strtok(NULL, " ")) != NULL) {
71                    tokenList[i] = (char*)malloc(strlen(token)+1);
72                    snprintf(tokenList[i], strlen(token)+1, "%s", token);
73                    i++;
74            }
75    
76          dir = new wxDir(*wikiDataDir);          dir = new wxDir(*wikiDataDir);
77      if ( !dir->IsOpened() )      if ( !dir->IsOpened() )
78      {      {
# Line 71  WikiList* mnModel::search(const char* se Line 86  WikiList* mnModel::search(const char* se
86                  if(fp == NULL) {                  if(fp == NULL) {
87                          MN_FATAL_ERROR(wxT("fopen faild"));                          MN_FATAL_ERROR(wxT("fopen faild"));
88                  }                  }
89    
90          while(1){          while(1){
91                  memset(buf, 0, MAX_BUF_SIZE);                  memset(buf, 0, MAX_BUF_SIZE);
92              fread(buf, MAX_BUF_SIZE-1, 1, fp);              fread(buf, MAX_BUF_SIZE-1, 1, fp);
# Line 80  WikiList* mnModel::search(const char* se Line 96  WikiList* mnModel::search(const char* se
96                          toLower(buf);                          toLower(buf);
97                          toLower(outbuf);                          toLower(outbuf);
98                          toLower(decodeFileNameBuf);                          toLower(decodeFileNameBuf);
99                  if(strstr((const char*)buf, (const char*)outbuf) ||                          found = TRUE;
100                                  strstr((const char*)decodeFileName, (const char*)outbuf)) {                          for(i = 0; tokenList[i] != NULL; i++){
101                                    if(strstr((const char*)buf, (const char*)tokenList[i]) ||
102                                            strstr((const char*)decodeFileName, (const char*)tokenList[i])) {
103                                            found = TRUE;
104                                    }
105                                    else {
106                                            found = FALSE;
107                                            break;
108                                    }
109                            }
110    
111                            if(found){
112                                  wikiData = new WikiData(wikiDataDir, (const char*)fileName->mb_str(), fp);                                  wikiData = new WikiData(wikiDataDir, (const char*)fileName->mb_str(), fp);
113                                  list->Append(wikiData);                                  list->Append(wikiData);
114                                  break;                                  break;
# Line 92  WikiList* mnModel::search(const char* se Line 119  WikiList* mnModel::search(const char* se
119          cont = dir->GetNext(fileName);          cont = dir->GetNext(fileName);
120          }          }
121          delete dir;          delete dir;
122            delete fileName;
123            for(i = 0; tokenList[i] != NULL; i++) free(tokenList[i]);
124    
125          list->Sort(compWikiData);          list->Sort(compWikiData);
126          return list;          return list;

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

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