<?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; } ?>