Commit 831045a7 authored by sof's avatar sof

[project @ 1997-03-14 05:16:26 by sof]

FILE finaliser
parent 4720b45e
%
% (c) The GRASP/AQUA Project, Glasgow University, 1997
%
\subsection[freeFile.lc]{Giving up files}
\begin{code}
#include "rtsdefs.h"
#include "stgio.h"
/* sigh, the standard channels are handled differently,
we don't want them freed via the ForeignObj finaliser,
as we probably want to use these channels before we
*really* shutdown (dumping stats etc.)
*/
void freeStdChannel(fp)
StgForeignObj fp;
{ return; }
void freeFile(fp)
StgForeignObj fp;
{
int rc;
if ( fp == NULL || (rc = unlockFile(fileno((FILE *)fp))) ) {
/* If the file handle has been explicitly closed
* (via closeFile()) or freed, we will have given
* up our process lock, so we silently return here.
*/
return;
}
/*
* The finaliser for the FILEs embedded in Handles. The RTS
* assumes that the finaliser runs without problems, so all
* we can do here is fclose(), and hope nothing went wrong.
*
* Assume fclose() flushes output stream.
*/
rc = fclose((FILE *)fp);
/* Error or no error, we don't care.. */
/*
if ( rc == EOF ) {
fprintf(stderr. "Warning: file close ran into trouble\n");
}
*/
return;
}
\end{code}
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment