func: int file_getc(FILE_T file) unsigned char buf [ 1 ] ; int ret ; if ( file -> err )  if ( file -> have )  file -> have --; file -> pos ++; return ( * ( file -> next ++ ) ) ; ret = file_read ( buf , 1 , file ); int file_read(void *buf,unsigned int len,FILE_T file) unsigned int n ; if ( len == 0 )  if ( file -> seek )  file -> seek = 0; if ( gz_skip ( file , file -> skip ) == - 1 )  if ( file -> have )  n = ( file -> have > len ? len : file -> have ); file -> next += n; file -> have -= n; if ( file -> err )  if ( file -> eof && file -> avail_in == 0 )  if ( fill_out_buffer ( file ) == - 1 )  len -= n; file -> pos += n; while ( len )  static int fill_out_buffer(FILE_T state) if ( state -> compression == 0 )  if ( gz_head ( state ) == - 1 )  static int gz_head(FILE_T state) if ( state -> avail_in == 0 )  if ( fill_in_buffer ( state ) == - 1 )  if ( state -> avail_in == 0 )  if ( state -> next_in [ 0 ] == 31 )  state -> avail_in --; state -> next_in ++; if ( state -> avail_in == 0 && fill_in_buffer ( state ) == - 1 )  if ( state -> avail_in && state -> next_in [ 0 ] == 139 )  state -> out [ 0 ] = 31; state -> have = 1; state -> raw = state -> pos; state -> next = state -> out; if ( state -> avail_in )  memcpy ( ( state -> next + state -> have ) , ( state -> next_in ) , ( state -> avail_in ) ); state -> have += state -> avail_in; state -> avail_in = 0; state -> compression = 1; 