Commit 831045a7 authored by sof's avatar sof
Browse files

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

FILE finaliser
parent 4720b45e
% (c) The GRASP/AQUA Project, Glasgow University, 1997
\subsection[]{Giving up files}
#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.
* 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");
Supports Markdown
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