Re: multiple printer in papd.conf?


Subject: Re: multiple printer in papd.conf?
From: wesley.craig@umich.edu
Date: Mon Oct 02 1995 - 16:23:27 EDT


> From: "Douglas Harvey" <doug@mcs.com>
> To: netatalk-admins@umich.edu

> Is it possible to have more than one printer defined in papd.conf?

This is a (known) bug in the 1.3.3b2 version of papd. Please find a
fix attached.

:wes

*** etc/papd/main.c- 1995/06/05 19:28:22
--- etc/papd/main.c 1995/08/23 21:14:33
***************
*** 49,59 ****
  
      for ( pr = printers; pr; pr = pr->p_next ) {
          if ( pr->p_flags & P_REGISTERED ) {
! if ( nbp_unrgstr( pr->p_name, "LaserWriter", "*" ) < 0 ) {
! syslog( LOG_ERR, "can't unregister %s\n", pr->p_name );
                  exit( n + 1 );
              }
! syslog( LOG_ERR, "unregister %s:LaserWriter\n", pr->p_name );
          }
      }
      exit( n );
--- 49,61 ----
  
      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 ) < 0 ) {
! syslog( LOG_ERR, "can't unregister %s:%s@%s\n", pr->p_name,
! pr->p_type, pr->p_zone );
                  exit( n + 1 );
              }
! syslog( LOG_ERR, "unregister %s:%s@%s\n", pr->p_name, pr->p_type,
! pr->p_zone );
          }
      }
      exit( n );
***************
*** 119,124 ****
--- 121,128 ----
          exit( 1 );
      }
      strcpy( defprinter.p_name, hostname );
+ defprinter.p_type = "LaserWriter";
+ defprinter.p_zone = "*";
      defprinter.p_ppdfile = _PATH_PAPDPPDFILE;
      defprinter.p_flags = P_SPOOLED;
      defprinter.p_printer = "lp";
***************
*** 209,220 ****
              syslog( LOG_ERR, "atp_open: %m" );
              exit( 1 );
          }
! if ( nbp_rgstr( atp_sockaddr( pr->p_atp ),
! pr->p_name, "LaserWriter", "*" ) < 0 ) {
! syslog( LOG_ERR, "can't register %s", pr->p_name );
              die( 1 );
          }
! syslog( LOG_INFO, "register %s:LaserWriter", pr->p_name );
          pr->p_flags |= P_REGISTERED;
      }
  
--- 213,226 ----
              syslog( LOG_ERR, "atp_open: %m" );
              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,
! pr->p_zone );
              die( 1 );
          }
! syslog( LOG_INFO, "register %s:%s@%s", pr->p_name, pr->p_type,
! pr->p_zone );
          pr->p_flags |= P_REGISTERED;
      }
  
***************
*** 434,440 ****
  getprinters( cf )
      char *cf;
  {
! char buf[ 1024 ], area[ 1024 ], *a, *p;
      struct printer *pr;
      int c;
  
--- 440,446 ----
  getprinters( cf )
      char *cf;
  {
! char buf[ 1024 ], area[ 1024 ], *a, *p, *name, *type, *zone;
      struct printer *pr;
      int c;
  
***************
*** 454,464 ****
              exit( 1 );
          }
          bzero( pr, sizeof( struct printer ));
! if (( pr->p_name = (char *)malloc( strlen( p ) + 1 )) == NULL ) {
! perror( "malloc" );
              exit( 1 );
          }
! strcpy( pr->p_name, p );
  
          if ( pnchktc( cf ) != 1 ) {
              fprintf( stderr, "Bad papcap entry\n" );
--- 460,500 ----
              exit( 1 );
          }
          bzero( pr, sizeof( struct printer ));
!
! name = defprinter.p_name;
! type = defprinter.p_type;
! zone = defprinter.p_zone;
! if ( nbp_name( p, &name, &type, &zone )) {
! fprintf( stderr, "Can't parse \"%s\"\n", name );
              exit( 1 );
          }
! if ( name != defprinter.p_name ) {
! if (( pr->p_name = (char *)malloc( strlen( name ) + 1 )) == NULL ) {
! perror( "malloc" );
! exit( 1 );
! }
! strcpy( pr->p_name, name );
! } else {
! pr->p_name = name;
! }
! if ( type != defprinter.p_type ) {
! if (( pr->p_type = (char *)malloc( strlen( type ) + 1 )) == NULL ) {
! perror( "malloc" );
! exit( 1 );
! }
! strcpy( pr->p_type, type );
! } else {
! pr->p_type = type;
! }
! if ( zone != defprinter.p_zone ) {
! if (( pr->p_zone = (char *)malloc( strlen( zone ) + 1 )) == NULL ) {
! perror( "malloc" );
! exit( 1 );
! }
! strcpy( pr->p_zone, zone );
! } else {
! pr->p_zone = zone;
! }
  
          if ( pnchktc( cf ) != 1 ) {
              fprintf( stderr, "Bad papcap entry\n" );



This archive was generated by hypermail 2b28 : Sat Dec 18 1999 - 16:23:11 EST