/*
- * $Id: main.c,v 1.14 2002-01-03 17:49:39 sibaz Exp $
+ * $Id: main.c,v 1.18.6.1 2004-05-12 21:21:49 didg Exp $
*
* Copyright (c) 1990,1995 Regents of The University of Michigan.
* All Rights Reserved. See COPYRIGHT.
*/
#ifdef HAVE_CONFIG_H
-#include "config.h"
+#include <config.h>
#endif /* HAVE_CONFIG_H */
+#include <string.h>
+
#include <sys/param.h>
#include <sys/time.h>
#include <sys/uio.h>
#include <sys/file.h>
#endif /* sun && __svr4__ */
#include <sys/socket.h>
-#include <syslog.h>
+#include <atalk/logger.h>
/* POSIX.1 sys/wait.h check */
#include <sys/types.h>
struct printer *printers = NULL;
int debug = 0;
-char *conffile = _PATH_PAPDCONF;
+static char *conffile = _PATH_PAPDCONF;
char *printcap = _PATH_PAPDPRINTCAP;
unsigned char connid, quantum, sock, oquantum = PAP_MAXQUANTUM;
char *cannedstatus = PIPED_STATUS;
struct printer *printer = NULL;
char *version = VERSION;
-static char *pidfile = _PATH_PAPDLOCK;
+static char *pidfile = _PATH_PAPDLOCK;
char *uamlist;
char *uampath = _PATH_PAPDUAMPATH;
/* Prototypes for locally used functions */
int getstatus( struct printer *pr, char *buf );
int rprintcap( struct printer *pr );
-void getprinters( char *cf );
+static void getprinters( char *cf );
/* this only needs to be used by the server process */
for ( pr = printers; pr; pr = pr->p_next ) {
if ( pr->p_flags & P_REGISTERED ) {
if ( nbp_unrgstr( pr->p_name, pr->p_type, pr->p_zone, &addr ) < 0 ) {
- syslog( LOG_ERR, "can't unregister %s:%s@%s\n", pr->p_name,
+ LOG(log_error, logtype_papd, "can't unregister %s:%s@%s", pr->p_name,
pr->p_type, pr->p_zone );
papd_exit( n + 1 );
}
- syslog( LOG_ERR, "unregister %s:%s@%s\n", pr->p_name, pr->p_type,
+ LOG(log_error, logtype_papd, "unregister %s:%s@%s", pr->p_name, pr->p_type,
pr->p_zone );
}
}
while (( pid = wait3( &status, WNOHANG, 0 )) > 0 ) {
if ( WIFEXITED( status )) {
if ( WEXITSTATUS( status )) {
- syslog( LOG_ERR, "child %d exited with %d", pid,
+ LOG(log_error, logtype_papd, "child %d exited with %d", pid,
WEXITSTATUS( status ));
} else {
- syslog( LOG_INFO, "child %d done", pid );
+ LOG(log_info, logtype_papd, "child %d done", pid );
}
} else {
if ( WIFSIGNALED( status )) {
- syslog( LOG_ERR, "child %d killed with %d", pid,
+ LOG(log_error, logtype_papd, "child %d killed with %d", pid,
WTERMSIG( status ));
} else {
- syslog( LOG_ERR, "child %d died", pid );
+ LOG(log_error, logtype_papd, "child %d died", pid );
}
}
}
#ifdef ultrix
openlog( p, LOG_PID );
#else /* ultrix */
- openlog( p, LOG_NDELAY|LOG_PID, LOG_LPR );
+ set_processname(p);
+ syslog_setup(log_debug, logtype_default, logoption_ndelay|logoption_pid, logfacility_lpr );
#endif /* ultrix */
- syslog( LOG_INFO, "restart (%s)", version );
+ LOG(log_info, logtype_papd, "restart (%s)", version );
for ( pr = printers; pr; pr = pr->p_next ) {
if (( pr->p_flags & P_SPOOLED ) && rprintcap( pr ) < 0 ) {
- syslog( LOG_ERR, "printcap problem: %s", pr->p_printer );
+ LOG(log_error, logtype_papd, "printcap problem: %s", pr->p_printer );
}
if (( pr->p_atp = atp_open( ATADDR_ANYPORT, &pr->p_addr )) == NULL ) {
- syslog( LOG_ERR, "atp_open: %m" );
+ LOG(log_error, logtype_papd, "atp_open: %m" );
papd_exit( 1 );
}
if ( nbp_rgstr( atp_sockaddr( pr->p_atp ), pr->p_name, pr->p_type,
pr->p_zone ) < 0 ) {
- syslog( LOG_ERR, "can't register %s:%s@%s", pr->p_name, pr->p_type,
+ LOG(log_error, logtype_papd, "can't register %s:%s@%s", pr->p_name, pr->p_type,
pr->p_zone );
die( 1 );
}
if ( pr->p_flags & P_AUTH ) {
- syslog( LOG_INFO, "Authentication enabled: %s", pr->p_name );
+ LOG(log_info, logtype_papd, "Authentication enabled: %s", pr->p_name );
}
else {
- syslog( LOG_INFO, "Authentication disabled: %s", pr->p_name );
+ LOG(log_info, logtype_papd, "Authentication disabled: %s", pr->p_name );
}
- syslog( LOG_INFO, "register %s:%s@%s", pr->p_name, pr->p_type,
+ LOG(log_info, logtype_papd, "register %s:%s@%s", pr->p_name, pr->p_type,
pr->p_zone );
pr->p_flags |= P_REGISTERED;
}
sigemptyset( &sv.sa_mask );
sv.sa_flags = SA_RESTART;
if ( sigaction( SIGTERM, &sv, 0 ) < 0 ) {
- syslog( LOG_ERR, "sigaction: %m" );
+ LOG(log_error, logtype_papd, "sigaction: %m" );
papd_exit( 1 );
}
sigemptyset( &sv.sa_mask );
sv.sa_flags = SA_RESTART;
if ( sigaction( SIGCHLD, &sv, 0 ) < 0 ) {
- syslog( LOG_ERR, "sigaction: %m" );
+ LOG(log_error, logtype_papd, "sigaction: %m" );
papd_exit( 1 );
}
if ( errno == EINTR ) {
continue;
}
- syslog( LOG_ERR, "select: %m" );
+ LOG(log_error, logtype_papd, "select: %m" );
papd_exit( 1 );
}
atpb.atp_rreqdata = cbuf;
atpb.atp_rreqdlen = sizeof( cbuf );
if ( atp_rreq( pr->p_atp, &atpb ) < 0 ) {
- syslog( LOG_ERR, "atp_rreq: %m" );
+ LOG(log_error, logtype_papd, "atp_rreq: %m" );
continue;
}
rbuf[ 2 ] = rbuf[ 3 ] = 0;
if (( pr->p_flags & P_SPOOLED ) && rprintcap( pr ) != 0 ) {
- syslog( LOG_ERR, "printcap problem: %s",
+ LOG(log_error, logtype_papd, "printcap problem: %s",
pr->p_printer );
rbuf[ 2 ] = rbuf[ 3 ] = 0xff;
err = 1;
*/
if (( atp = atp_open( ATADDR_ANYPORT,
&pr->p_addr)) == NULL ) {
- syslog( LOG_ERR, "atp_open: %m" );
+ LOG(log_error, logtype_papd, "atp_open: %m" );
rbuf[ 2 ] = rbuf[ 3 ] = 0xff;
err = 1;
}
* This may error out if we lose a route, so we won't die().
*/
if ( atp_sresp( pr->p_atp, &atpb ) < 0 ) {
- syslog( LOG_ERR, "atp_sresp: %m" );
+ LOG(log_error, logtype_papd, "atp_sresp: %m" );
continue;
}
switch ( c = fork()) {
case -1 :
- syslog( LOG_ERR, "fork: %m" );
+ LOG(log_error, logtype_papd, "fork: %m" );
continue;
case 0 : /* child */
if (( printer->p_flags & P_SPOOLED ) &&
chdir( printer->p_spool ) < 0 ) {
- syslog( LOG_ERR, "chdir %s: %m", printer->p_spool );
+ LOG(log_error, logtype_papd, "chdir %s: %m", printer->p_spool );
exit( 1 );
}
sigemptyset( &sv.sa_mask );
sv.sa_flags = SA_RESTART;
if ( sigaction( SIGTERM, &sv, 0 ) < 0 ) {
- syslog( LOG_ERR, "sigaction: %m" );
+ LOG(log_error, logtype_papd, "sigaction: %m" );
exit( 1 );
}
}
sat.sat_port = sock;
if ( session( atp, &sat ) < 0 ) {
- syslog( LOG_ERR, "bad session" );
+ LOG(log_error, logtype_papd, "bad session" );
exit( 1 );
}
exit( 0 );
break;
default : /* parent */
- syslog( LOG_INFO, "child %d for \"%s\" from %u.%u",
+ LOG(log_info, logtype_papd, "child %d for \"%s\" from %u.%u",
c, pr->p_name, ntohs( sat.sat_addr.s_net ),
sat.sat_addr.s_node);
atp_close( atp );
* This may error out if we lose a route, so we won't die().
*/
if ( atp_sresp( pr->p_atp, &atpb ) < 0 ) {
- syslog( LOG_ERR, "atp_sresp: %m" );
+ LOG(log_error, logtype_papd, "atp_sresp: %m" );
}
break;
default :
- syslog( LOG_ERR, "Bad request from %u.%u!",
+ LOG(log_error, logtype_papd, "Bad request from %u.%u!",
ntohs( sat.sat_addr.s_net ), sat.sat_addr.s_node );
continue;
break;
* This may error out if we lose a route, so we won't die().
*/
if ( atp_sresp( pr->p_atp, &atpb ) < 0 ) {
- syslog( LOG_ERR, "atp_sresp: %m" );
+ LOG(log_error, logtype_papd, "atp_sresp: %m" );
}
#endif /* notdef */
}
}
char *pgetstr();
-char *getpname();
+char *getpname(char **area, int bufsize);
+
+#define PF_CONFBUFFER 1024
-void getprinters( cf )
+static void getprinters( cf )
char *cf;
{
- char buf[ 1024 ], area[ 1024 ], *a, *p, *name, *type, *zone;
+ char buf[ PF_CONFBUFFER ], area[ PF_CONFBUFFER ], *a, *p, *name, *type, *zone;
struct printer *pr;
int c;
- while (( c = getprent( cf, buf )) > 0 ) {
+ while (( c = getprent( cf, buf, PF_CONFBUFFER )) > 0 ) {
a = area;
/*
* Get the printer's nbp name.
*/
- if (( p = getpname( &a )) == NULL ) {
+ if (( p = getpname( &a, PF_CONFBUFFER )) == NULL ) {
fprintf( stderr, "No printer name\n" );
exit( 1 );
}
*/
if ( pr->p_flags & P_SPOOLED ) {
if ( pgetent( printcap, buf, pr->p_printer ) != 1 ) {
- syslog( LOG_ERR, "No such printer: %s", pr->p_printer );
+ LOG(log_error, logtype_papd, "No such printer: %s", pr->p_printer );
return( -1 );
}
pr->p_spool = defprinter.p_spool;
} else {
if (( pr->p_spool = (char *)malloc( strlen( p ) + 1 )) == NULL ) {
- syslog( LOG_ERR, "malloc: %m" );
+ LOG(log_error, logtype_papd, "malloc: %m" );
exit( 1 );
}
strcpy( pr->p_spool, p );
} else {
if (( pr->p_role =
(char *)malloc( strlen( p ) + 1 )) == NULL ) {
- syslog( LOG_ERR, "malloc: %m" );
+ LOG(log_error, logtype_papd, "malloc: %m" );
exit( 1 );
}
strcpy( pr->p_role, p );
if (( p = pgetstr( "pc", &a )) != NULL ) {
if (( pr->p_pagecost_msg =
(char *)malloc( strlen( p ) + 1 )) == NULL ) {
- syslog( LOG_ERR, "malloc: %m" );
+ LOG(log_error, logtype_papd, "malloc: %m" );
exit( 1 );
}
strcpy( pr->p_pagecost_msg, p );
pr->p_lock = defprinter.p_lock;
} else {
if (( pr->p_lock = (char *)malloc( strlen( p ) + 1 )) == NULL ) {
- syslog( LOG_ERR, "malloc: %m" );
+ LOG(log_error, logtype_papd, "malloc: %m" );
exit( 1 );
}
strcpy( pr->p_lock, p );