use fgets, not gets
[unix-history] / usr / src / usr.sbin / lpr / lpc / lpc.c
index 7101290..0f8a010 100644 (file)
@@ -1,6 +1,29 @@
+/*
+ * Copyright (c) 1983 Regents of the University of California.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms are permitted
+ * provided that the above copyright notice and this paragraph are
+ * duplicated in all such forms and that any documentation,
+ * advertising materials, and other materials related to such
+ * distribution and use acknowledge that the software was developed
+ * by the University of California, Berkeley.  The name of the
+ * University may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
+ * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+ */
+
 #ifndef lint
 #ifndef lint
-static char sccsid[] = "@(#)lpc.c      4.4 (Berkeley) %G%";
-#endif
+char copyright[] =
+"@(#) Copyright (c) 1983 Regents of the University of California.\n\
+ All rights reserved.\n";
+#endif /* not lint */
+
+#ifndef lint
+static char sccsid[] = "@(#)lpc.c      5.7 (Berkeley) %G%";
+#endif /* not lint */
 
 /*
  * lpc -- line printer control program
 
 /*
  * lpc -- line printer control program
@@ -9,6 +32,7 @@ static char sccsid[] = "@(#)lpc.c      4.4 (Berkeley) %G%";
 #include <signal.h>
 #include <ctype.h>
 #include <setjmp.h>
 #include <signal.h>
 #include <ctype.h>
 #include <setjmp.h>
+#include <syslog.h>
 
 #include "lpc.h"
 
 
 #include "lpc.h"
 
@@ -30,6 +54,7 @@ main(argc, argv)
        extern char *name;
 
        name = argv[0];
        extern char *name;
 
        name = argv[0];
+       openlog("lpd", 0, LOG_LPR);
 
        if (--argc > 0) {
                c = getcmd(*++argv);
 
        if (--argc > 0) {
                c = getcmd(*++argv);
@@ -72,8 +97,6 @@ cmdscanner(top)
        int top;
 {
        register struct cmd *c;
        int top;
 {
        register struct cmd *c;
-       extern struct cmd cmdtab[];
-       extern int help();
 
        if (!top)
                putchar('\n');
 
        if (!top)
                putchar('\n');
@@ -82,7 +105,7 @@ cmdscanner(top)
                        printf("lpc> ");
                        fflush(stdout);
                }
                        printf("lpc> ");
                        fflush(stdout);
                }
-               if (gets(cmdline) == 0)
+               if (fgets(cmdline, sizeof(cmdline), stdin) == 0)
                        quit();
                if (cmdline[0] == 0)
                        break;
                        quit();
                if (cmdline[0] == 0)
                        break;
@@ -105,6 +128,8 @@ cmdscanner(top)
        longjmp(toplevel, 0);
 }
 
        longjmp(toplevel, 0);
 }
 
+extern struct cmd cmdtab[];
+
 struct cmd *
 getcmd(name)
        register char *name;
 struct cmd *
 getcmd(name)
        register char *name;
@@ -176,7 +201,7 @@ help(argc, argv)
                extern int NCMDS;
 
                printf("Commands may be abbreviated.  Commands are:\n\n");
                extern int NCMDS;
 
                printf("Commands may be abbreviated.  Commands are:\n\n");
-               for (c = cmdtab; c < &cmdtab[NCMDS]; c++) {
+               for (c = cmdtab; c < &cmdtab[NCMDS - 1]; c++) {
                        int len = strlen(c->c_name);
 
                        if (len > width)
                        int len = strlen(c->c_name);
 
                        if (len > width)