Changeset 523


Ignore:
Timestamp:
07/03/16 17:36:35 (8 years ago)
Author:
Maciej Komosinski
Message:

No more overloading of fopen/fclose/... functions for the VirtFILE class. #define VIRTFILE_OVERLOADING to enable overloading only when necessary.

Location:
cpp
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • cpp/common/stl-util.cpp

    r460 r523  
    7777        bool ok = false;
    7878#ifdef USE_VIRTFILE
    79         if (!isAbsolutePath(filename))
     79//      if (!isAbsolutePath(filename))
    8080        {
    8181                VirtFILE *f=Vfopen(filename,FOPEN_READ_BINARY);
     
    8989                }
    9090        }
    91         else
     91//      else
    9292#endif
    9393        {
     
    120120bool writeCompleteFile(const char* filename, const string& text, bool warn_on_fail)
    121121{
     122#ifdef USE_VIRTFILE
     123        VirtFILE *f = Vfopen(filename, FOPEN_WRITE_BINARY);
     124        bool ok = f != NULL;
     125        if (f)
     126        {
     127                int zapisane = f->Vwrite(text.c_str(), text.length(), 1);
     128                delete f;
     129                ok &= zapisane == 1;
     130        }
     131#else
    122132        MFILE *f = mfopen(filename, FOPEN_WRITE_BINARY);
    123133        bool ok = f != NULL;
     
    128138                ok &= zapisane == 1;
    129139        }
     140#endif
    130141        if (warn_on_fail && !ok)
    131                 logPrintf("stl-util", "writeCompleteFile", LOG_WARN, "couldn't write file '%s'", filename);
     142                logPrintf("stl-util", "writeCompleteFile", LOG_WARN, "Couldn't write file '%s'", filename);
    132143        return ok;
    133144}
  • cpp/common/virtfile/virtfile.h

    r427 r523  
    136136DLLEXP bool Vdirexists(const char* path, bool is_writable);
    137137
     138#ifdef VIRTFILE_OVERLOADING
     139//may be needed for redefine... or if someone simply prefers overloading ;-)
     140
    138141DLLEXP int fread(void *ptr, size_t size, size_t nmemb, VirtFILE* f);
    139142DLLEXP int fwrite(const void *ptr, size_t size, size_t nmemb, VirtFILE* f);
    140 
    141143
    142144//since we want our own feof(VirtFILE*) function and some systems unfortunately define feof as a macro, we need to #undef it. Same as in virtfile.cpp
     
    174176DLLEXP int closedir(VirtDIR* d);
    175177
     178#endif //VIRTFILE_OVERLOADING
     179
    176180#endif
    177 
  • cpp/frams/param/multiparamload.cpp

    r413 r523  
    6666if (file && ownfile)
    6767        {
    68         fclose(file);
     68        delete file;
    6969        file=0;
    7070        }
     
    258258{
    259259VirtFILE *f;
    260 while(f=popstack()) fclose(f);
     260while(f=popstack()) delete f;
    261261}
    262262
     
    264264{
    265265if (!filestack.size()) return false;
    266 if (file) fclose(file);
     266if (file) delete file;
    267267file=popstack();
    268268return true;
  • cpp/frams/param/param.cpp

    r483 r523  
    2525        int z;
    2626        char last_char = 0;
    27         while ((z = fgetc(f)) != EOF)
     27        while ((z = f->Vgetc()) != EOF)
    2828        {
    2929                if (z == '~')
     
    267267        if ((altname == NULL) || (altname[0] != 0))
    268268        {
    269                 err |= (fputs(altname ? altname : getName(), f) == EOF);
    270                 err |= (fputs(":\n", f) == EOF);
     269                err |= (f->Vputs(altname ? altname : getName()) == EOF);
     270                err |= (f->Vputs(":\n") == EOF);
    271271                withname = true;
    272272        }
     
    274274                err |= saveprop(f, i, p, force);
    275275        if (withname)
    276                 err |= (fputs("\n", f) == EOF);
     276                err |= (f->Vputs("\n") == EOF);
    277277        return err;
    278278}
     
    290290        int err = 0, cr;
    291291
    292         err |= (fputs(p, f) == EOF); fputc(':', f);
     292        err |= (f->Vputs(p) == EOF); f->Vputc(':');
    293293        cr = 0;
    294294        if ((*typ == 'x') || (*typ == 'o'))
     
    304304        if (ws.len() > 50) cr = 1;
    305305        else for (t = w; *t; t++) if ((*t == 10) || (*t == 13)) { cr = 1; break; }
    306         if (cr) fputs("~\n", f);
    307         err |= (fputs(w, f) == EOF);
    308         err |= (fputs(cr ? "~\n" : "\n", f) == EOF);
     306        if (cr) f->Vputs("~\n");
     307        err |= (f->Vputs(w) == EOF);
     308        err |= (f->Vputs(cr ? "~\n" : "\n") == EOF);
    309309        return err;
    310310}
     
    464464                                                }
    465465                                        removeCR(s);
    466                                         int ch; while ((ch = fgetc(f)) != EOF) if (ch == '\n') break;
     466                                        int ch; while ((ch = f->Vgetc()) != EOF) if (ch == '\n') break;
    467467                                        unquoteTilde(s);
    468468                                        if (linenum && (flags(i)&PARAM_LINECOMMENT))
     
    501501                                (*linenum) += lfcount;
    502502                        }
    503                         int ch; while ((ch = fgetc(f)) != EOF) if (ch == '\n') break;
     503                        int ch; while ((ch = f->Vgetc()) != EOF) if (ch == '\n') break;
    504504                }
    505505        }
  • cpp/frams/util/sstringutils.cpp

    r512 r523  
    1616                loadSString(f, s);
    1717                ret = 1;
    18                 fclose(f);
     18                delete f;
    1919        }
    2020        else if (framsgmodule)
     
    2929        while (!f->Veof())
    3030        {
    31                 len = fread(buf, 1, sizeof(buf), f);
     31                len = f->Vread(buf, 1, sizeof(buf));
    3232                s.append(buf, len);
    3333        }
     
    4444        while (!eolfound)
    4545        {
    46                 char *r = fgets(buf, sizeof(buf), f);
     46                char *r = f->Vgets(buf, sizeof(buf));
    4747                if (r == NULL) break;
    4848                ret = true;
  • cpp/frams/vm/framscript.y

    r489 r523  
    149149
    150150asmlines: /* empty */
    151         | ASMLINE            {fputs(str($1),trctx.out);fputc('\n',trctx.out);}
    152         | asmlines ASMLINE   {fputs(str($2),trctx.out);fputc('\n',trctx.out);}
     151        | ASMLINE            {trctx.out->Vputs(str($1));trctx.out->Vputc('\n');}
     152        | asmlines ASMLINE   {trctx.out->Vputs(str($2));trctx.out->Vputc('\n');}
    153153;
    154154
Note: See TracChangeset for help on using the changeset viewer.