+/* sccs id variable */
+static char *netlpr_sid = "@(#)netlpr.c 1.4";
/*
netlpr [-m mach] [-l login] [-p password] [-f] [-n] [-q] [-c ?pr] [file1 ... filen]
main(argc,argv)
char **argv; {
/* parms are flags to the lpr command on the rem mach */
- int rcode,uid,pid;
+ int rcode,uid,pid, Iflag;
char parms[BUFSIZ], fnoacct, *sn, suid[20], sLprCommand[20];
static char tomachstr[BUFSIZ], realcmd[BUFSIZ], tempbuf[BUFSIZ],
sCmdAct[BUFSIZ];
strcpy(sLprCommand,"lpr");
argv++; argc--;
+ Iflag = 0;
while(argc > 0 && argv[0][0] == '-'){
+ if( Iflag ) {
+ strcat( parms, argv[0] );
+ strcat( parms, " " );
+ argc--; argv++;
+ continue;
+ }
switch(argv[0][1]){
- case 'b': status.nonotify++; break;
- case 'c': harg(sLprCommand,&argc,&argv); break;
+ case 'c': harg(sLprCommand); break;
case 'f': status.force++; break;
- case 'l': harg(status.login,&argc,&argv); break;
- case 'm': harg(tempbuf,&argc,&argv);
+ case 'l': harg(status.login); break;
+ case 'm': harg(tempbuf);
remote = lookup(tempbuf);
if(remote == 0){
fprintf(stderr,"Unknown machine %s\n",tempbuf);
}
break;
case 'n': status.nowrite++; break;
- case 'p': harg(status.mpasswd,&argc,&argv); break;
+ case 'p': harg(status.mpasswd); break;
case 'q': status.quiet++; break;
+ case 'I': Iflag++; break;
default: strcat(parms,argv[0]); strcat(parms," "); break;
}
argc--, argv++;
commandfile();
if(remote == 0)remote = getremote(local);
/* fnoacct is true if no password is needed to netlpr */
- fnoacct = machtype[remote-'a']==M_CC&&machtype[local-'a']==M_CC;
+ fnoacct = machtype[chtoinx(remote)]==M_CC
+ && machtype[chtoinx(local)]==M_CC;
if(fnoacct){ /* no acct needed. */
/* look in passwd file for jobno */
do {
if(fnoacct)
- sprintf(sCmdAct,"%s -c%04d,%s %s",
+ sprintf(sCmdAct,"%s -c%s,%s %s",
sLprCommand,status.jobno,status.localname,parms);
else sprintf(sCmdAct,"%s %s",sLprCommand,parms);
# ifdef NOREMACCT
if(fnoacct){
setuid(0);
- mexecl(netcmd,"net",tomachstr,"-y","-",
- "-l",status.localname,"-u",suid,
+ mexecl(netcmd,"net",tomachstr,"-y","-b","-",
+ "-l","root","-u",suid,
"-c",realcmd,sCmdAct,0);
perror(netcmd);
}