1
0
mirror of https://github.com/cc65/cc65.git synced 2024-07-09 01:28:58 +00:00

Use fstat instead of stat and simplify the code

git-svn-id: svn://svn.cc65.org/cc65/trunk@750 b7a2c559-68d2-44c3-8de9-860c34a00d81
This commit is contained in:
cuz 2001-05-23 21:44:14 +00:00
parent 275da22a66
commit f3f42c43e5

View File

@ -45,7 +45,7 @@
#include "xmalloc.h"
/* cc65 */
#include "asmcode.h"
#include "asmcode.h"
#include "codegen.h"
#include "error.h"
#include "incpath.h"
@ -89,53 +89,7 @@ static Collection AFiles = STATIC_COLLECTION_INITIALIZER;
/*****************************************************************************/
/* Helper functions */
/*****************************************************************************/
static long GetFileSize (FILE* F)
/* Calculate the size of the file F, return -1 on error. */
{
long Size;
long CurPos = ftell (F);
if (CurPos < 0) {
/* Error */
return -1;
}
if (fseek (F, 0, SEEK_END) != 0) {
/* Error */
return -1;
}
Size = ftell (F);
if (Size < 0) {
/* Error */
return -1;
}
if (fseek (F, CurPos, SEEK_SET) != 0) {
/* Error */
return -1;
}
return Size;
}
static long GetFileTime (const char* Name)
/* Get the time of last modification for the given file. Return -1 on errors. */
{
struct stat Buf;
if (stat (Name, &Buf) != 0) {
/* Error */
return -1;
}
return (long) Buf.st_mtime;
}
/*****************************************************************************/
/* struct IFile */
/* struct IFile */
/*****************************************************************************/
@ -188,21 +142,14 @@ static AFile* NewAFile (IFile* IF, FILE* F)
*/
if (IF->Usage++ == 0) {
long Val;
/* Get the file size */
Val = GetFileSize (AF->F);
if (Val < 0) {
Fatal ("Cannot seek on `%s': %s", IF->Name, strerror (errno));
}
IF->Size = Val;
/* Get the file modification time */
Val = GetFileTime (IF->Name);
if (Val < 0) {
/* Get file size and modification time */
struct stat Buf;
if (fstat (fileno (F), &Buf) != 0) {
/* Error */
Fatal ("Cannot stat `%s': %s", IF->Name, strerror (errno));
}
IF->MTime = Val;
IF->Size = (unsigned long) Buf.st_size;
IF->MTime = (unsigned long) Buf.st_mtime;
/* Set the debug data */
g_fileinfo (IF->Name, IF->Size, IF->MTime);