BSD 4_1_snap release
[unix-history] / usr / src / cmd / berknet / netlpr.c
index 858019f..99089dd 100644 (file)
@@ -1,3 +1,5 @@
+/* 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]
 /*
 
 netlpr [-m mach] [-l login] [-p password] [-f] [-n] [-q] [-c ?pr] [file1 ... filen]
@@ -28,7 +30,7 @@ struct userinfo status;
 main(argc,argv)
   char **argv; {
        /* parms are flags to the lpr command on the rem mach */
 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];
        char parms[BUFSIZ], fnoacct, *sn, suid[20], sLprCommand[20];
        static char tomachstr[BUFSIZ], realcmd[BUFSIZ], tempbuf[BUFSIZ],
                sCmdAct[BUFSIZ];
@@ -39,13 +41,19 @@ main(argc,argv)
        strcpy(sLprCommand,"lpr");
 
        argv++; argc--;
        strcpy(sLprCommand,"lpr");
 
        argv++; argc--;
+       Iflag = 0;
        while(argc > 0 && argv[0][0] == '-'){
        while(argc > 0 && argv[0][0] == '-'){
+               if( Iflag ) {
+                       strcat( parms, argv[0] );
+                       strcat( parms, " " );
+                       argc--; argv++;
+                       continue;
+               }
                switch(argv[0][1]){
                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 '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);
                          remote = lookup(tempbuf);
                          if(remote == 0){
                                fprintf(stderr,"Unknown machine %s\n",tempbuf);
@@ -53,8 +61,9 @@ main(argc,argv)
                          } 
                          break;
                case 'n': status.nowrite++; break;
                          } 
                          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 'q': status.quiet++; break;
+               case 'I': Iflag++; break;
                default:  strcat(parms,argv[0]); strcat(parms," "); break;
                }
                argc--, argv++;
                default:  strcat(parms,argv[0]); strcat(parms," "); break;
                }
                argc--, argv++;
@@ -63,7 +72,8 @@ main(argc,argv)
        commandfile();
        if(remote == 0)remote = getremote(local);
        /* fnoacct is true if no password is needed to netlpr */
        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 */
 
        if(fnoacct){ /* no acct needed. */
                /* look in passwd file for jobno */
@@ -96,7 +106,7 @@ main(argc,argv)
 
        do {
                if(fnoacct)
 
        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);
 
                        sLprCommand,status.jobno,status.localname,parms);
                else    sprintf(sCmdAct,"%s %s",sLprCommand,parms);
 
@@ -130,8 +140,8 @@ main(argc,argv)
 # ifdef NOREMACCT
                                if(fnoacct){
                                        setuid(0);
 # 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);
                                        }
                                        "-c",realcmd,sCmdAct,0);
                                        perror(netcmd);
                                        }