]>
diplodocus.org Git - nmh/blob - docs/historical/mh-nov-1983/cmds/aliascheck.c
7 char *AliasFile
= "/usr/local/lib/MailAliases";
8 char *Password
= "/etc/passwd";
9 char *MailDir
= "/usr/spool/mail";
14 struct mailname
*m_next
;
27 while(isspace(*ptr
) || *ptr
== ',' || *ptr
== ':')
29 while(isalnum(*ptr
) || *ptr
== '/' || *ptr
== '-' || *ptr
== '.')
55 register char *cp
, *pp
, **cpp
;
56 register struct mailname
*lp
;
57 register struct group
*gp
;
60 char line
[256], pbuf
[64];
63 if(argc
== 3 && strcmp(argv
[1], "-mail") == 0)
67 if((a
= fopen(Password
, "r")) == NULL
) {
69 fprintf(out
, "Can't open password file ");
73 while(fgets(line
, sizeof line
, a
)) {
74 if(line
[0] == '\n' || line
[0] == ';')
76 cp
= parse(line
, pbuf
);
80 if((a
= fopen(AliasFile
, "r")) == NULL
) {
82 fprintf(out
, "Can't open alias file: %s\n", AliasFile
);
85 while(fgets(line
, sizeof line
, a
)) {
86 if(line
[0] == '\n' || line
[0] == ';')
88 cp
= parse(line
, pbuf
);
97 fprintf(out
, "No Alias Inconsistencies.\n");
100 fprintf(out
, "%s :: %s Collisions:\n",
101 Password
, AliasFile
);
102 fprintf(out
, "Colliding alias lines:\n");
103 for(lp
= bad
.m_next
; lp
; lp
= lp
->m_next
)
104 fprintf(out
, "%s", lp
->m_name
);
108 while(gp
= getgrent()) {
109 for(cpp
= gp
->gr_mem
; *cpp
; cpp
++)
110 if(!check(*cpp
, 1)) {
112 fprintf(out
, "Group: %s--User: %s not in /etc/passwd\n",
117 if(donecd
< 2 && out
)
118 fprintf(out
, "No extraneous group entries.\n");
120 for(lp
= users
.m_next
; lp
; lp
= lp
->m_next
)
121 if(lp
->m_seen
== 0) {
123 fprintf(out
, "User: %s not in a group.\n", lp
->m_name
);
126 if(donecd
< 3 && out
)
127 fprintf(out
, "No Users not in any group.\n");
129 if ((dirp
= opendir(MailDir
)) == 0) {
131 fprintf(out
, "Can't open mail directory: %s\n", MailDir
);
134 (void) readdir(dirp
); /* skip . */
135 (void) readdir(dirp
); /* skip .. */
136 while (dir
= readdir(dirp
)) {
137 if (!check(dir
->d_name
, 0)) {
139 fprintf(out
, "Mail drop: %s--Nonexistent user.\n",
146 if(donecd
< 4 && out
)
147 fprintf(out
, "No Extra mail drops.\n");
155 struct mailname
*list
;
157 register struct mailname
*mp
;
160 for(mp
= list
; mp
->m_next
; mp
= mp
->m_next
)
162 mp
->m_next
= (struct mailname
*) malloc(sizeof *mp
->m_next
);
165 mp
->m_name
= getcpy(name
);
172 register struct mailname
*mp
;
174 for(mp
= users
.m_next
; mp
; mp
= mp
->m_next
)
175 if(uleq(name
, mp
->m_name
)) {
192 out
= fdopen(pipes
[1], "w");
193 if((child
= fork()) == -1) {
194 fprintf(stderr
, "Aliascheck: no forks!\n");
202 execl("/bin/mail", "mail", mail
, 0);
203 execl("/usr/bin/mail", "mail", mail
, 0);
207 fprintf(out
, "Aliascheck: ");