Plan 9 from Bell Labs’s /usr/web/sources/contrib/fernan/nhc98/src/prelude/Binary/SizeBin.gc

Copyright © 2021 Plan 9 Foundation.
Distributed under the MIT License.
Download the Plan 9 distribution.


module NHC.Binary
  ( sizeBin
  ) where

import NHC.GreenCard
import BinHandle ({-type-}BinHandle(..))

%-#include "cLowBinary.h"

%fun sizeBin :: BinHandle -> IO Int
%call (binHandle bh)
%code
%  unsigned curpos;
%  closecache(bh);
%  if (bh->file) {
%    curpos = vtell(bh);		/* store current position */
%    n = lseek(bh->loc.fd,0,SEEK_END);	/* jump to end of file */
%  } else {
%    curpos = mtell(bh);		/* store current position */
%    n = bh->attrib.size;
%  }
%  opencache(bh);			/* then skip back again */
%  bh->cptr = curpos - forceCacheTo(bh,curpos);
%result (int n)


Bell Labs OSI certified Powered by Plan 9

(Return to Plan 9 Home Page)

Copyright © 2021 Plan 9 Foundation. All Rights Reserved.
Comments to [email protected].