Roxen.git / server / font_handlers / compactimgfile.pike

version» Context lines:

Roxen.git/server/font_handlers/compactimgfile.pike:52:    {    data = d;    }   }      class CIF   {    Stdio.File fd;    array filelist ;    mapping offsets; +  string prefix="";    array get_dir( string f )    { - // #ifdef THREADS - // object lock = lock->trylock(); - // #endif +     if(!filelist)    {    offsets = ([]);    filelist = ({ "/fontname" });       fd->seek( 64 + 4 ); // header.    int c;    while( c = getint() )    {    offsets[c] = fd->tell();    if( c < 48 || c > 127 )    if( c == 0xffffffff )    filelist += ({ "/fontinfo" });    else    filelist += ({ sprintf( "/0x%x", c ) });    else    filelist += ({ sprintf( "/%c", c ) }); -  fd->read( getint() ); // skip data. +  if( c == 0xfffffffe ) +  prefix = fd->read( getint() ); +  else +  fd->read( getint() );    }    }    return filelist;    }       int getint( )    {    int c;    sscanf( fd->read( 4 ), "%4c", c );    return c;
Roxen.git/server/font_handlers/compactimgfile.pike:105:    {    fd->seek( 4 );    return StringFile( fd->read( 64 )-"\0" );    }   // werror("open "+fname+"\n");    int wc;    sscanf( fname, "%s.", fname );    if( strlen(fname) > 2 ) sscanf( fname, "0x%x", wc ); else wc=fname[0];    int c;    -  if( fname == "fontinfo" ) wc = 0xffffffff; +  if( fname == "fontinfo" ) +  wc = 0xffffffff;       if( offsets[ wc ] )    {    fd->seek( offsets[ wc ] ); -  +  if( wc <= 0x7fffffff ) // Normal character +  return StringFile( prefix+fd->read( getint() ) );    return StringFile( fd->read( getint() ) );    }    return 0;    }       void create( string fname )    {    fd = Stdio.File( );    if( !fd->open( fname, "r" ) ) error( "Illegal CIF\n");    if( fd->read( 4 ) != "CIF1" ) error( "Illegal CIF\n");