[BACK]Return to lpq.c CVS log [TXT][DIR] Up to [cvs.NetBSD.org] / src / usr.sbin / lpr / lpq

Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.

Diff for /src/usr.sbin/lpr/lpq/lpq.c between version 1.5 and 1.6

version 1.5, 1995/11/15 22:48:10 version 1.6, 1997/10/05 11:52:38
Line 40  static char copyright[] =
Line 40  static char copyright[] =
 #endif /* not lint */  #endif /* not lint */
   
 #ifndef lint  #ifndef lint
 static char sccsid[] = "@(#)lpq.c       8.1 (Berkeley) 6/6/93";  static char sccsid[] = "@(#)lpq.c       8.3 (Berkeley) 5/10/95";
 #endif /* not lint */  #endif /* not lint */
   
 /*  /*
  * Spool Queue examination program   * Spool Queue examination program
  *   *
  * lpq [-l] [-Pprinter] [user...] [job...]   * lpq [-a] [-l] [-Pprinter] [user...] [job...]
  *   *
    * -a show all non-null queues on the local machine
  * -l long output   * -l long output
  * -P used to identify printer as per lpr/lprm   * -P used to identify printer as per lpr/lprm
  */   */
Line 62  static char sccsid[] = "@(#)lpq.c 8.1 (B
Line 63  static char sccsid[] = "@(#)lpq.c 8.1 (B
 #include <ctype.h>  #include <ctype.h>
 #include "lp.h"  #include "lp.h"
 #include "lp.local.h"  #include "lp.local.h"
   #include "pathnames.h"
   
 int      requ[MAXREQUESTS];     /* job number of spool entries */  int      requ[MAXREQUESTS];     /* job number of spool entries */
 int      requests;              /* # of spool requests */  int      requests;              /* # of spool requests */
 char    *user[MAXUSERS];        /* users to process */  char    *user[MAXUSERS];        /* users to process */
 int      users;                 /* # of users in user array */  int      users;                 /* # of users in user array */
   
 uid_t   uid, euid;  uid_t   uid, euid;
   
   static int ckqueue __P((char *));
 void usage __P((void));  void usage __P((void));
   
 int  int
Line 79  main(argc, argv)
Line 81  main(argc, argv)
 {  {
         extern char     *optarg;          extern char     *optarg;
         extern int      optind;          extern int      optind;
         int     ch, lflag;              /* long output option */          int     ch, aflag, lflag;
           char    *buf, *cp;
   
         euid = geteuid();          euid = geteuid();
         uid = getuid();          uid = getuid();
Line 91  main(argc, argv)
Line 94  main(argc, argv)
         }          }
         openlog("lpd", 0, LOG_LPR);          openlog("lpd", 0, LOG_LPR);
   
         lflag = 0;          aflag = lflag = 0;
         while ((ch = getopt(argc, argv, "lP:")) != EOF)          while ((ch = getopt(argc, argv, "alP:")) != EOF)
                 switch((char)ch) {                  switch((char)ch) {
                   case 'a':
                           ++aflag;
                           break;
                 case 'l':                       /* long output */                  case 'l':                       /* long output */
                         ++lflag;                          ++lflag;
                         break;                          break;
Line 105  main(argc, argv)
Line 111  main(argc, argv)
                         usage();                          usage();
                 }                  }
   
         if (printer == NULL && (printer = getenv("PRINTER")) == NULL)          if (!aflag && printer == NULL && (printer = getenv("PRINTER")) == NULL)
                 printer = DEFLP;                  printer = DEFLP;
   
         for (argc -= optind, argv += optind; argc; --argc, ++argv)          for (argc -= optind, argv += optind; argc; --argc, ++argv)
Line 120  main(argc, argv)
Line 126  main(argc, argv)
                         user[users++] = *argv;                          user[users++] = *argv;
                 }                  }
   
         displayq(lflag);          if (aflag) {
                   while (cgetnext(&buf, printcapdb) > 0) {
                           if (ckqueue(buf) <= 0) {
                                   free(buf);
                                   continue;       /* no jobs */
                           }
                           for (cp = buf; *cp; cp++)
                                   if (*cp == '|' || *cp == ':') {
                                           *cp = '\0';
                                           break;
                                   }
                           printer = buf;
                           printf("%s:\n", printer);
                           displayq(lflag);
                           free(buf);
                           printf("\n");
                   }
           } else
                   displayq(lflag);
         exit(0);          exit(0);
 }  }
   
   static int
   ckqueue(cap)
           char *cap;
   {
           register struct dirent *d;
           DIR *dirp;
           char *spooldir;
   
           if (cgetstr(cap, "sd", &spooldir) == -1)
                   spooldir = _PATH_DEFSPOOL;
           if ((dirp = opendir(spooldir)) == NULL)
                   return (-1);
           while ((d = readdir(dirp)) != NULL) {
                   if (d->d_name[0] != 'c' || d->d_name[1] != 'f')
                           continue;       /* daemon control files only */
                   closedir(dirp);
                   return (1);             /* found something */
           }
           closedir(dirp);
           return (0);
   }
   
 void  void
 usage()  usage()
 {  {
         puts("usage: lpq [-l] [-Pprinter] [user ...] [job ...]");          puts("usage: lpq [-a] [-l] [-Pprinter] [user ...] [job ...]");
         exit(1);          exit(1);
 }  }

Legend:
Removed from v.1.5  
changed lines
  Added in v.1.6

CVSweb <webmaster@jp.NetBSD.org>