BSD 4_3_Tahoe development
authorCSRG <csrg@ucbvax.Berkeley.EDU>
Mon, 10 Feb 1986 04:19:31 +0000 (20:19 -0800)
committerCSRG <csrg@ucbvax.Berkeley.EDU>
Mon, 10 Feb 1986 04:19:31 +0000 (20:19 -0800)
Work on file usr/src/etc/named/master/atod.y
Work on file usr/src/etc/named/master/:pwedit

Synthesized-from: CSRG/cd2/4.3tahoe

usr/src/etc/named/master/:pwedit [new file with mode: 0644]
usr/src/etc/named/master/atod.y [new file with mode: 0644]

diff --git a/usr/src/etc/named/master/:pwedit b/usr/src/etc/named/master/:pwedit
new file mode 100644 (file)
index 0000000..1ccd95b
--- /dev/null
@@ -0,0 +1,4 @@
+       g/^./s/^\([^:]*\):\([^:]*\):\([^:]*\):\([^:]*\):\([^:]*\).*/\U\1\E      ANY     UID     \3\
+       ANY     GID     \4\
+       ANY     UINFO   "\5"/
+wq pw
diff --git a/usr/src/etc/named/master/atod.y b/usr/src/etc/named/master/atod.y
new file mode 100644 (file)
index 0000000..386d9dd
--- /dev/null
@@ -0,0 +1,118 @@
+/*
+ * Convert mail alias file to nameserver DB format.
+ */
+
+%{
+#include <stdio.h>
+#include <ctype.h>
+
+char   yytext[BUFSIZ];
+int    lineno = 1;
+%}
+
+%token NAME
+
+%start list
+
+%%
+
+list:            /* empty */
+               | list alias ':' a_list
+               ;
+
+alias:           NAME {
+                       printf("%s      IN      MB      UCB-VAX.ARPA\n", yytext);
+               }
+               ;
+
+a_list:                  aname
+               | a_list ',' aname
+               ;
+
+aname:           NAME {
+                       printf("        IN      MG      %s\n", yytext);
+               }
+               ;
+%%
+
+yylex()
+{
+       register char *cp;
+       register int c;
+       char op[32];
+
+       for (;;) {
+               c = getchar();
+       top:
+               switch (c) {
+               case '#':
+                       while ((c = getchar()) != EOF && c != '\n')
+                               ;
+                       goto top;
+
+               case '\\':
+                       if ((c = getchar()) == EOF) {
+                               c = '\\';
+                               break;
+                       }
+                       if (c != '\n') {
+                               ungetc(c, stdin);
+                               c = '\\';
+                               break;
+                       }
+               case '\n':
+                       lineno++;
+               case ' ':
+               case '\t':
+                       continue;
+
+               case EOF:
+               case ':':
+               case ',':
+                       return (c);
+               }
+               cp = yytext;
+               do {
+                       if (c == '"') {
+                               do {
+                                       if (cp >= &yytext[BUFSIZ-1]) {
+                                               yyerror("buffer overflow");
+                                               break;
+                                       }
+                                       *cp++ = c;
+                               } while ((c = getchar()) != EOF && c != '"');
+                       }
+                       if (cp >= &yytext[BUFSIZ-1]) {
+                               yyerror("buffer overflow");
+                               break;
+                       }
+                       if (islower(c))
+                               c = toupper(c);
+                       *cp++ = c;
+               } while ((c = getchar()) != EOF && !any(c, ",: \t\n"));
+               ungetc(c, stdin);
+               *cp = '\0';
+               return (NAME);
+       }
+}
+
+any(c, s)
+       int c;
+       register char *s;
+{
+       while (*s)
+               if (c == *s++)
+                       return (1);
+       return (0);
+}
+
+main()
+{
+       yyparse();
+}
+
+yyerror(s)
+       char *s;
+{
+       fprintf(stderr, "line %d: %s\n", lineno, s);
+}