7548ea4617534ab017a12e11b9254af57c9879a6
[openafs.git] / src / ptserver / readpwd.c
1 /*
2  * Copyright 2000, International Business Machines Corporation and others.
3  * All Rights Reserved.
4  * 
5  * This software has been released under the terms of the IBM Public
6  * License.  For details, see the LICENSE file in the top-level source
7  * directory or online at http://www.openafs.org/dl/license10.html
8  */
9
10 #include <afsconfig.h>
11 #include <afs/param.h>
12
13 RCSID("$Header$");
14
15 #include <stdio.h>
16 #ifndef AFS_NT40_ENV
17 #include <strings.h>
18 #else
19 #include <WINNT/afsevent.h>
20 #endif
21 #include <rx/rx.h>
22 #include <rx/xdr.h>
23 #include <afs/cellconfig.h>
24 #include <afs/afsutil.h>
25 #include "ptclient.h"
26
27 int osi_audit()
28 {
29 /* OK, this REALLY sucks bigtime, but I can't tell who is calling
30  * afsconf_CheckAuth easily, and only *SERVERS* should be calling osi_audit
31  * anyway.  It's gonna give somebody fits to debug, I know, I know.
32  */
33 return 0;
34 }
35
36 #include "AFS_component_version_number.c"
37
38 main(argc,argv)
39 afs_int32 argc;
40 char **argv;
41 {
42
43     register afs_int32 code;
44     char name[PR_MAXNAMELEN];
45     afs_int32 id;
46     char buf[150];
47     FILE *fp;
48     char *ptr;
49     char *aptr;
50     char *tmp;
51     char uid[8];
52     afs_int32 i;
53     afs_int32 verbose = 0;
54     char *cellname;
55
56     if (argc < 2) {
57         fprintf(stderr,"Usage: readpwd [-v] [-c cellname] passwdfile.\n");
58         exit(1);
59     }
60     cellname = 0;
61     for (i = 1;i<argc;i++) {
62         if (!strcmp(argv[i],"-v"))
63             verbose = 1;
64         else {
65             if (!strcmp(argv[i],"-c")) {
66                 cellname = (char *)malloc(100);
67                 strncpy(cellname,argv[++i],100);
68             }
69             else
70                 strncpy(buf,argv[i],150);
71         }
72     }
73     code = pr_Initialize(2, AFSDIR_CLIENT_ETC_DIRPATH, cellname);
74     if (code) {
75         fprintf(stderr,"pr_Initialize failed, code %d.\n",code);
76         exit(1);
77     }
78
79
80     if ((fp= fopen(buf,"r")) == NULL) {
81         fprintf(stderr,"Couldn't open %s.\n",argv[1]);
82         exit(2);
83     }
84     while ((tmp = fgets(buf,150,fp)) != NULL) {
85         memset(name, 0, PR_MAXNAMELEN);
86         memset(uid, 0, 8);
87         ptr = strchr(buf, ':');
88         strncpy(name,buf,ptr-buf);
89         aptr = strchr(++ptr, ':');
90         ptr = strchr(++aptr, ':');
91         strncpy(uid,aptr,ptr-aptr);
92         id = atoi(uid);
93         if (verbose)
94             printf("Adding %s with id %d.\n",name,id);
95         code = pr_CreateUser(name,&id);
96         if (code) {
97             fprintf(stderr,"Failed to add user %s with id %d!\n",name,id);
98             fprintf(stderr,"%s (%d).\n",pr_ErrorMsg(code),code);
99         }
100     }
101 }