diff options
author | tradke <tradke@21a6bef8-4479-4f54-8f8d-0db94a2919ef> | 2003-07-16 12:25:20 +0000 |
---|---|---|
committer | tradke <tradke@21a6bef8-4479-4f54-8f8d-0db94a2919ef> | 2003-07-16 12:25:20 +0000 |
commit | 44f6a3df3291a764e4cf781f637bb7f3fbd0d25e (patch) | |
tree | d2d972148845d5b188693e6bdc18f301c080910c /src/IEEEIO.cc | |
parent | 1d84179ab337f680817248a565ecec8c9ea7b0ef (diff) |
Sync with cvs.cactuscode.org:/packages/FlexIO.
Mainly adding debug statements. One important fix for AMRwriter.cc to get the
min_ext[] and grid_placement_refinement[] attributes right again.
git-svn-id: http://svn.cactuscode.org/arrangements/CactusExternal/FlexIO/trunk@46 21a6bef8-4479-4f54-8f8d-0db94a2919ef
Diffstat (limited to 'src/IEEEIO.cc')
-rw-r--r-- | src/IEEEIO.cc | 39 |
1 files changed, 32 insertions, 7 deletions
diff --git a/src/IEEEIO.cc b/src/IEEEIO.cc index a71e381..c36751e 100644 --- a/src/IEEEIO.cc +++ b/src/IEEEIO.cc @@ -5,7 +5,7 @@ #ifdef WIN32 // Are we Microsoft VC++ 5.0 or 6.0? -#if defined(_MSC_VER) && ( (_MSC_VER == 1100) || (_MSC_VER == 1200) ) // yes we are +#if defined(_MSC_VER) && ( (_MSC_VER == 1100) || (_MSC_VER == 1200) || (_MSC_VER == 1300)) // yes we are #include <fcntl.h> #ifdef O_RDONLY #undef O_RDONLY @@ -1374,19 +1374,44 @@ Long8 f_ieee_open (char *file,char *accessname,int flen,int alen){ return 0; } +/* + Fortran passes strings without 0-bytes. + C requires a 0-byte at the end of a string. + We may not modify the passed string, because it + might reside in a read only text segment, thus + we need a local copy to append a 0-byte. + Performance is not an issue here, because file access + is much slower than this little memory shifting anyway. + */ + Long8 f_ieee_openr(char *filename,int namelen){ - filename[namelen]='\0'; - return (Long8)(new IEEEIO(filename,IObase::Read)); + +char*fn = new char[namelen+1]; + strncpy(fn, filename, namelen); + fn[namelen]='\0'; +Long8 ID = (Long8)(new IEEEIO(filename,IObase::Read)); + delete fn; + return ID; } Long8 f_ieee_openw(char *filename,int namelen){ - filename[namelen]='\0'; - return (Long8)(new IEEEIO(filename,IObase::Write)); + +char*fn = new char[namelen+1]; + strncpy(fn, filename, namelen); + fn[namelen]='\0'; +Long8 ID = (Long8)(new IEEEIO(filename,IObase::Write)); + delete fn; + return ID; } Long8 f_ieee_opena(char *filename,int namelen){ - filename[namelen]='\0'; - return (Long8)(new IEEEIO(filename,IObase::Append)); + +char*fn = new char[namelen+1]; + strncpy(fn, filename, namelen); + fn[namelen]='\0'; +Long8 ID = (Long8)(new IEEEIO(filename,IObase::Append)); + delete fn; + return ID; } void ieee_bufon(Long8 *fileID,int bufsize){ |