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.25 by maloninc, Tue Sep 20 06:29:53 2005 UTC revision 1.30 by maloninc, Fri Dec 30 05:51:43 2005 UTC
# Line 461  WikiData::WikiData(wxString* dataDir, wx Line 461  WikiData::WikiData(wxString* dataDir, wx
461                  }                  }
462          }          }
463          fclose(fp);          fclose(fp);
464    
465            isWriteToFile = true;
466  }  }
467    
468  WikiData::WikiData(wxString* dataDir) {  WikiData::WikiData(wxString* dataDir) {
469            FILE*      fp;
470          time_t     now;          time_t     now;
471          char       buf[MAX_BUF_SIZE];          char       buf[MAX_BUF_SIZE];
472          wxCSConv    conv(wxT(CODE_SET_SYSTEM));          char       fname[MAX_BUF_SIZE];
473            char       templateBuf[MAX_BUF_SIZE];
474            char*      inbufPtr;
475            int        inbufSize;
476            char       outbuf[MAX_BUF_SIZE];
477            char*      outbufPtr;
478            int        outbufSize;
479            wxCSConv   conv(wxT(CODE_SET_SYSTEM));
480    
481          dataDirName = new wxString(dataDir->mb_str(), conv);          dataDirName = new wxString(dataDir->mb_str(), conv);
482    
# Line 482  WikiData::WikiData(wxString* dataDir) { Line 492  WikiData::WikiData(wxString* dataDir) {
492          memset(buf, 0, sizeof(buf));          memset(buf, 0, sizeof(buf));
493          strftime(buf, sizeof(buf), DATE_TAG "%Y/%m/%d %H:%M:%S",localtime(&now));          strftime(buf, sizeof(buf), DATE_TAG "%Y/%m/%d %H:%M:%S",localtime(&now));
494          date    = new wxString(buf, conv);          date    = new wxString(buf, conv);
495    
496            /* try to open template file */
497            snprintf(fname, sizeof(fname), "%s/%s", (const char*)(dataDir->mb_str()), NEW_DATA_TEMPLATE);
498            fp = fopen(fname, "r");
499            if(fp == NULL){
500                    memset(buf, 0, sizeof(buf));
501                    strftime(buf, sizeof(buf), NEW_DATA,localtime(&now));
502            }
503            else {
504                    memset(buf, 0, sizeof(buf));
505                    memset(templateBuf, 0, sizeof(templateBuf));
506                    memset(outbuf, 0, sizeof(outbuf));
507                    fread(templateBuf, sizeof(templateBuf), 1, fp);
508                    
509          memset(buf, 0, sizeof(buf));                  iconv_t codeSet = iconv_open(CODE_SET_SYSTEM, CODE_SET_EUC_JP);
510          strftime(buf, sizeof(buf), NEW_DATA,localtime(&now));                  if(codeSet == (iconv_t)-1) {
511                            MN_FATAL_ERROR(wxT("failed iconv_open"));
512                    }
513                    inbufPtr = templateBuf;
514                outbufPtr = outbuf;
515                    inbufSize = strlen(templateBuf);
516                    outbufSize = sizeof(outbuf);
517                    iconv(codeSet, (ICONV_CONST char**)&inbufPtr, (size_t*)&inbufSize, &outbufPtr, (size_t*)&outbufSize);
518                    
519                    strftime(buf, sizeof(buf), outbuf,localtime(&now));
520    
521            }
522          text    = new wxString(buf, conv);          text    = new wxString(buf, conv);
523    
524            if(fp) fclose(fp);
525    
526            isWriteToFile = false;
527  }  }
528    
529  WikiData::~WikiData()  WikiData::~WikiData()
# Line 592  const wxString* WikiData::getText() Line 629  const wxString* WikiData::getText()
629                  MN_FATAL_ERROR(wxT("failed iconv_open"));                  MN_FATAL_ERROR(wxT("failed iconv_open"));
630          }          }
631    
632          if(text) {          if(text && isWriteToFile == true) {
633                  iconv_close(codeSet);                  delete text;
634                    text = NULL;
635            }
636            else if(text && isWriteToFile == false) {
637                  return text;                  return text;
638          }          }
639    
# Line 605  const wxString* WikiData::getText() Line 645  const wxString* WikiData::getText()
645          }          }
646    
647          while(fgets(buf, MAX_BUF_SIZE, fp)) {          while(fgets(buf, MAX_BUF_SIZE, fp)) {
 #ifdef __WXMAC__  
                 for(int i = 0; buf[i] != 0; i++) if(buf[i] == (char)MAC_BACKSLASH) buf[i] = '\\';  
 #endif  
648                  inbufPtr = buf;                  inbufPtr = buf;
649                  inbufSize = sizeof(buf);                  inbufSize = sizeof(buf);
650                  outbufPtr = outbuf;                  outbufPtr = outbuf;
# Line 648  void WikiData::save() Line 685  void WikiData::save()
685          char fullPath[MAX_BUF_SIZE];          char fullPath[MAX_BUF_SIZE];
686          FILE* fp;          FILE* fp;
687          iconv_t     codeSet;          iconv_t     codeSet;
688          char        inbuf[MAX_WIKI_TEXT_SIZE];          char*        inbuf;
689          char        outbuf[MAX_WIKI_TEXT_SIZE];          char*        outbuf;
690          const char*       inbufPtr;          const char*  inbufPtr;
691          char*       outbufPtr;          char*       outbufPtr;
692          int         inbufSize;          int         inbufSize;
693          int         outbufSize;          int         outbufSize;
694    
695            inbuf  = (char*)malloc(MAX_WIKI_TEXT_SIZE);
696            outbuf = (char*)malloc(MAX_WIKI_TEXT_SIZE);
697            if(inbuf == NULL || outbuf == NULL) {
698                    MN_FATAL_ERROR(wxT("It's too big data. Max size is 5MB."));
699            }
700    
701          codeSet = iconv_open(CODE_SET_EUC_JP, CODE_SET_SYSTEM);          codeSet = iconv_open(CODE_SET_EUC_JP, CODE_SET_SYSTEM);
702          if(codeSet == (iconv_t)-1) {          if(codeSet == (iconv_t)-1) {
703                  MN_FATAL_ERROR(wxT("failed iconv_open"));                  MN_FATAL_ERROR(wxT("failed iconv_open"));
# Line 666  void WikiData::save() Line 709  void WikiData::save()
709                  MN_FATAL_ERROR(wxT("File open error."));                  MN_FATAL_ERROR(wxT("File open error."));
710          }          }
711    
712          memset(inbuf, 0, sizeof(inbuf));          memset(inbuf, 0, MAX_WIKI_TEXT_SIZE);
713          strcpy(inbuf,(const char*)text->mb_str());          strcpy(inbuf,(const char*)text->mb_str());
714    
715  #ifdef __WXMAC__  //#ifdef __WXMAC__
716          for(int i = 0; inbuf[i] != 0; i++) if(inbuf[i] == (char)MAC_BACKSLASH) inbuf[i] = '\\';  //      for(int i = 0; inbuf[i] != 0; i++) if(inbuf[i] == (char)MAC_BACKSLASH) inbuf[i] = '\\';
717  #endif  //#endif
718    
719          inbufPtr = inbuf;          inbufPtr = inbuf;
720          inbufSize = strlen(inbufPtr);          inbufSize = strlen(inbufPtr);
721          outbufPtr = outbuf;          outbufPtr = outbuf;
722          outbufSize = sizeof(outbuf);          outbufSize = MAX_WIKI_TEXT_SIZE;
723          memset(outbuf, 0, outbufSize);          memset(outbuf, 0, outbufSize);
724          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);
725          fwrite(outbuf, sizeof(outbuf)-outbufSize, 1, fp);          if(inbufSize != 0) { // iconv error
726                    wxMessageBox(wxT("Fail to save, because this memo include KISHU-IZON-MOJI.\nPlease remove KISHU-IZON-MOJI, and try again"), wxT("Fail to save"), wxOK|wxICON_WARNING);
727            }
728            fwrite(outbuf, MAX_WIKI_TEXT_SIZE-outbufSize, 1, fp);
729          fclose(fp);          fclose(fp);
730          iconv_close(codeSet);          iconv_close(codeSet);
731            
732            free(inbuf);
733            free(outbuf);
734            
735            isWriteToFile = true;
736  }  }
737    
738  /******* Tools ************************/  /******* Tools ************************/

Legend:
Removed from v.1.25  
changed lines
  Added in v.1.30

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