#ifndef lint
#ifdef __GNUC__
static char rcsid[] __attribute__ ((unused)) = "Id: common.c,v 1.14 1999/08/13 12:54:34 werner Exp $";
#else
static char rcsid[] = "Id: common.c,v 1.14 1999/08/13 12:54:34 werner Exp $";
#endif
#endif
#include <stdarg.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "common.h"
#include "freetype.h"
int ft_opterr = 1;
int ft_optind = 1;
char* ft_optarg;
static int cmdac;
#ifdef __STDC__
static const char* cmdname;
static char* const* cmdav;
#else
static char* cmdname;
static char** cmdav;
#endif
int
#ifdef __STDC__
ft_getopt( int ac, char* const* av, const char* pat )
#else
ft_getopt( ac, av, pat )
int ac;
char** av;
char* pat;
#endif
{
int opt;
#ifdef __STDC__
const char* p;
const char* pp;
#else
char* p;
char* pp;
#endif
if ( pat == 0 || *pat == 0 )
return -1;
ft_optarg = 0;
if ( ac != cmdac || av != cmdav )
{
ft_optind = 1;
cmdac = ac;
cmdav = av;
for ( cmdname = 0, p = av[0]; *p; p++ )
{
if ( *p == '/' || *p == '\\' )
cmdname = p;
}
if ( cmdname )
cmdname++;
else
cmdname = av[0];
}
if ( ft_optind >= ac )
return -1;
if ( av[ft_optind][0] != '-' ||
strcmp( av[ft_optind], "-" ) == 0 ||
strcmp( av[ft_optind], "--" ) == 0 )
return -1;
p = av[ft_optind++];
for ( opt = *(p + 1), pp = pat; *pp && *pp != opt; pp++ )
;
if ( *pp == 0 )
{
if ( ft_opterr )
fprintf( stderr, "%s: illegal option -- %c\n", cmdname, opt );
return '?';
}
if ( *(pp + 1) == ':' && (ft_optarg = av[ft_optind]) == 0 )
{
if ( ft_opterr )
fprintf( stderr, "%s: option requires an argument -- %c\n",
cmdname, opt );
opt = '?';
}
else if ( ft_optarg )
ft_optind++;
return opt;
}
char*
#ifdef __STDC__
ft_basename( const char* name )
#else
ft_basename( name )
char* name;
#endif
{
#ifdef __STDC__
const char* base;
const char* current;
#else
char* base;
char* current;
#endif
char c;
base = name;
current = name;
c = *current;
while ( c )
{
if ( c == '/' || c == '\\' )
base = current + 1;
current++;
c = *current;
}
return (char*)base;
}
void
#ifdef __STDC__
Panic( const char* fmt, ... )
#else
Panic( fmt )
const char* fmt;
#endif
{
va_list ap;
va_start( ap, fmt );
vprintf( fmt, ap );
va_end( ap );
exit( EXIT_FAILURE );
}
void
#ifdef __STDC__
Show_Single_Glyph( const TT_Raster_Map* map )
#else
Show_Single_Glyph( map )
const TT_Raster_Map* map;
#endif
{
int y;
unsigned char* line = map->bitmap;
for ( y = 0; y < map->rows; y++, line += map->cols )
{
unsigned char* ptr = line;
int x;
unsigned char mask = 0x80;
for ( x = 0; x < map->width; x++ )
{
printf( "%c", (ptr[0] & mask) ? '*' : '.' );
mask >>= 1;
if ( mask == 0 )
{
mask = 0x80;
ptr++;
}
}
printf( "\n" );
}
}
void
#ifdef __STDC__
separator_line( FILE* out, const int length )
#else
separator_line( out, length )
FILE* out;
int length;
#endif
{
int i;
for ( i = 0; i < length; i++ )
fputc( '-', out );
fprintf( out, "\n\n" );
}