<?php
function fread_string( $fp )
{
$buf = "";
$c = '';
do
{
if (feof($fp))
die( "fread_string: EOF encountered on read." );
$c = fgetc($fp);
}
while ( ctype_space($c) );
if ( $c == '~' )
return "";
while( !feof($fp) )
{
switch( $c )
{
case '~':
return $buf;
break;
default:
$buf .= $c;
break;
}
$c = fgetc($fp);
}
return $buf;
}
function fread_word($fp)
{
$buf = "";
$c = '';
$cEnd = ' ';
do
{
if (feof($fp))
die( "fread_word: EOF encountered on read." );
$c = fgetc($fp);
}
while ( ctype_space($c) );
if ( $c == ' ' || $c == '\'' || $c == '"' )
$cEnd = $c;
while( !feof($fp) )
{
if ( ctype_cntrl($c) )
break;
if ( $c == $cEnd )
break;
$buf .= $c;
$c = fgetc( $fp );
}
if ( !strcmp($buf,"") )
return NULL;
return $buf;
}
function fread_number( $fp )
{
$number = 0;
$c = '';
$sign = false;
$pos = 0;
do
{
if ( feof($fp) )
die( "fread_number: EOF encoutered on read." );
$c = fgetc($fp);
} while ( ctype_space($c) );
if ( $c == '-' )
{
$sign = TRUE;
$c = fgetc($fp);
}
else if ( $c == '+' )
$c = fgetc($fp);
if ( !ctype_digit($c) )
die( "fread_number: bad format '$c'" );
$pos = ftell($fp);
while ( ctype_digit($c) )
{
if ( feof($fp) )
die( "fread_number: eof encoutered on read." );
$number = $number * 10 + $c - '0';
$c = fgetc( $fp );
$pos = ftell($fp);
}
if ( $sign )
$number = 0 - $number;
if ( $c == '|' )
$number += fread_number($fp);
else if ( $c != ' ' )
fseek( $fp, $pos );
return $number;
}
function fread_letter( $fp )
{
$c = ' ';
while( ctype_space($c) )
if ( feof($fp) )
die( "Fread_letter: EOF encountered on read." );
else
$c = fgetc( $fp );
return $c;
}
?>