X-Git-Url: https://arthur.barton.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=etc%2Fpapd%2Fppd.c;h=f16469289f9a4af9af93cba62fad839025affefe;hb=cb8de5b604041071f3454dd8df97295544caba59;hp=bde0ec0f566d98fa8492f705c665cbe9670f57e1;hpb=305c46c79b79ed0280e0421317bb042387f569ec;p=netatalk.git diff --git a/etc/papd/ppd.c b/etc/papd/ppd.c index bde0ec0f..f1646928 100644 --- a/etc/papd/ppd.c +++ b/etc/papd/ppd.c @@ -1,5 +1,5 @@ /* - * $Id: ppd.c,v 1.13 2009-01-21 02:42:56 didg Exp $ + * $Id: ppd.c,v 1.17 2009-10-14 02:24:05 didg Exp $ * * Copyright (c) 1995 Regents of The University of Michigan. * All Rights Reserved. See COPYRIGHT. @@ -26,21 +26,21 @@ struct ppd_font *ppd_fonts = NULL; struct ppd_feature ppd_features[] = { - { "*LanguageLevel", 0 }, - { "*PSVersion", 0 }, + { "*LanguageLevel", NULL }, + { "*PSVersion", NULL }, #ifdef HAVE_CUPS { "*FreeVM", "33554432" }, #else - { "*FreeVM", 0 }, + { "*FreeVM", NULL }, #endif - { "*Product", 0 }, - { "*PCFileName", 0 }, - { "*ModelName", 0 }, - { "*NickName", 0 }, - { "*ColorDevice", 0 }, - { "*FaxSupport", 0 }, - { "*TTRasterizer", 0 }, - { 0, 0 }, + { "*Product", NULL }, + { "*PCFileName", NULL }, + { "*ModelName", NULL }, + { "*NickName", NULL }, + { "*ColorDevice", NULL }, + { "*FaxSupport", NULL }, + { "*TTRasterizer", NULL }, + { NULL, NULL }, }; struct ppdent { @@ -51,26 +51,24 @@ struct ppdent { }; #ifndef SHOWPPD -int ppd_inited = 0; +static int ppd_inited; -int ppd_init() +static void ppd_init(void) { - if ( ppd_inited ) { - return( -1 ); - } + if (ppd_inited) + return; + ppd_inited++; - return read_ppd( printer->p_ppdfile, 0 ); + if (printer->p_ppdfile) + read_ppd( printer->p_ppdfile, 0 ); } #endif /* SHOWPPD */ /* quick and ugly hack to be able to read ppd files with Mac line ending */ -static char* my_fgets(buf, bufsize, stream) - char *buf; - size_t bufsize; - FILE *stream; +static char* my_fgets(char *buf, size_t bufsize, FILE *stream) { int p; /* uninitialized, OK 310105 */ size_t count = 0; @@ -93,8 +91,7 @@ static char* my_fgets(buf, bufsize, stream) return buf; } -static struct ppdent *getppdent( stream ) - FILE *stream; +static struct ppdent *getppdent( FILE *stream) { static char buf[ 1024 ]; static struct ppdent ppdent; @@ -178,9 +175,7 @@ static struct ppdent *getppdent( stream ) return( NULL ); } -int read_ppd( file, fcnt ) - char *file; - int fcnt; +int read_ppd(char *file, int fcnt) { FILE *ppdfile; struct ppdent *pe; @@ -254,8 +249,7 @@ int read_ppd( file, fcnt ) return( 0 ); } -struct ppd_font *ppd_font( font ) - char *font; +struct ppd_font *ppd_font( char *font) { struct ppd_font *pfo; @@ -273,9 +267,7 @@ struct ppd_font *ppd_font( font ) return( NULL ); } -struct ppd_feature *ppd_feature( feature, len ) - const char *feature; - int len; +struct ppd_feature *ppd_feature( const char *feature, int len) { struct ppd_feature *pfe; char ppd_feature_main[ 256 ]; @@ -288,6 +280,9 @@ struct ppd_feature *ppd_feature( feature, len ) } #endif /* SHOWPPD */ + if (len > sizeof(ppd_feature_main) -1) + return( NULL ); + for ( end = feature + len, p = feature, q = ppd_feature_main; (p <= end) && (*p != '\n') && (*p != '\r'); p++, q++ ) { *q = *p;