From f3f42c43e56ad1e1b19016f1f8bc03b8dcec0cd2 Mon Sep 17 00:00:00 2001 From: cuz Date: Wed, 23 May 2001 21:44:14 +0000 Subject: [PATCH] Use fstat instead of stat and simplify the code git-svn-id: svn://svn.cc65.org/cc65/trunk@750 b7a2c559-68d2-44c3-8de9-860c34a00d81 --- src/cc65/input.c | 69 ++++++------------------------------------------ 1 file changed, 8 insertions(+), 61 deletions(-) diff --git a/src/cc65/input.c b/src/cc65/input.c index f650dac5e..6db7df5f8 100644 --- a/src/cc65/input.c +++ b/src/cc65/input.c @@ -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);