From: <mie...@us...> - 2010-08-12 19:22:39
|
Revision: 6101 http://oorexx.svn.sourceforge.net/oorexx/?rev=6101&view=rev Author: miesfeld Date: 2010-08-12 19:22:33 +0000 (Thu, 12 Aug 2010) Log Message: ----------- Fix bug in .File::length where big files (> 4 GB) returned 0 for length Modified Paths: -------------- main/trunk/interpreter/platform/unix/SysFileSystem.cpp main/trunk/interpreter/platform/unix/SysFileSystem.hpp Modified: main/trunk/interpreter/platform/unix/SysFileSystem.cpp =================================================================== --- main/trunk/interpreter/platform/unix/SysFileSystem.cpp 2010-08-12 16:07:09 UTC (rev 6100) +++ main/trunk/interpreter/platform/unix/SysFileSystem.cpp 2010-08-12 19:22:33 UTC (rev 6101) @@ -209,10 +209,10 @@ */ bool SysFileSystem::fileExists(const char * fname) { - struct stat filestat; // file attributes + struct stat64 filestat; // file attributes int rc; // stat function return code - rc = stat(fname, &filestat); + rc = stat64(fname, &filestat); if (rc == 0) { if (S_ISREG(filestat.st_mode)) @@ -478,10 +478,10 @@ return false; } - struct stat dummy; /* structure for stat system calls */ + struct stat64 dummy; /* structure for stat system calls */ // ok, if this exists, life is good. Return it. - if (stat(resolvedName, &dummy) == 0) /* look for file */ + if (stat64(resolvedName, &dummy) == 0) /* look for file */ { // this needs to be a regular file if (S_ISREG(dummy.st_mode)) @@ -533,8 +533,8 @@ // a failure here means an invalid name of some sort if (canonicalizeName(resolvedName)) { - struct stat dummy; - if (stat(resolvedName, &dummy) == 0) /* If file is found, */ + struct stat64 dummy; + if (stat64(resolvedName, &dummy) == 0) /* If file is found, */ { // this needs to be a regular file if (S_ISREG(dummy.st_mode)) @@ -778,9 +778,9 @@ */ bool SysFileSystem::isDirectory(const char *name) { - struct stat finfo; /* return buf for the finfo */ + struct stat64 finfo; /* return buf for the finfo */ - int rc = stat(name, &finfo); /* read the info about it */ + int rc = stat64(name, &finfo); /* read the info about it */ return rc == 0 && S_ISDIR(finfo.st_mode); } @@ -823,9 +823,9 @@ */ bool SysFileSystem::isFile(const char *name) { - struct stat finfo; /* return buf for the finfo */ + struct stat64 finfo; /* return buf for the finfo */ - int rc = stat(name, &finfo); /* read the info about it */ + int rc = stat64(name, &finfo); /* read the info about it */ return rc == 0 && (S_ISREG(finfo.st_mode) || S_ISBLK(finfo.st_mode)); } @@ -839,9 +839,9 @@ */ bool SysFileSystem::exists(const char *name) { - struct stat finfo; /* return buf for the finfo */ + struct stat64 finfo; /* return buf for the finfo */ - int rc = stat(name, &finfo); /* read the info about it */ + int rc = stat64(name, &finfo); /* read the info about it */ return rc == 0; } @@ -856,10 +856,10 @@ */ int64_t SysFileSystem::getLastModifiedDate(const char *name) { - struct stat st; + struct stat64 st; tzset (); - if (stat (name, &st)) + if (stat64(name, &st)) { return -1; } @@ -874,14 +874,14 @@ * * @return the 64-bit file size. */ -int64_t SysFileSystem::getFileLength(const char *name) +uint64_t SysFileSystem::getFileLength(const char *name) { - struct stat st; - if (stat(name, &st) != 0) + struct stat64 st; + if (stat64(name, &st) != 0) { return 0; } - return (int64_t)st.st_size; + return st.st_size; } @@ -950,9 +950,9 @@ */ bool SysFileSystem::setLastModifiedDate(const char *name, int64_t time) { - struct stat statbuf; + struct stat64 statbuf; struct utimbuf timebuf; - if (stat(name, &statbuf) != 0) + if (stat64(name, &statbuf) != 0) { return false; } @@ -973,8 +973,8 @@ */ bool SysFileSystem::setFileReadOnly(const char *name) { - struct stat buffer; - if (stat(name, &buffer) != 0) + struct stat64 buffer; + if (stat64(name, &buffer) != 0) { return false; } Modified: main/trunk/interpreter/platform/unix/SysFileSystem.hpp =================================================================== --- main/trunk/interpreter/platform/unix/SysFileSystem.hpp 2010-08-12 16:07:09 UTC (rev 6100) +++ main/trunk/interpreter/platform/unix/SysFileSystem.hpp 2010-08-12 19:22:33 UTC (rev 6101) @@ -110,7 +110,7 @@ static bool isFile(const char *name); static bool exists(const char *name); static int64_t getLastModifiedDate(const char *name); - static int64_t getFileLength(const char *name); + static uint64_t getFileLength(const char *name); static bool makeDirectory(const char *name); static bool moveFile(const char *oldName, const char *newName); static bool isHidden(const char *name); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |