]> git.saurik.com Git - apple/system_cmds.git/blobdiff - chkpasswd.tproj/passwd.c
system_cmds-336.1.2.tar.gz
[apple/system_cmds.git] / chkpasswd.tproj / passwd.c
index ae9c0d9b8fb2d44689552dc550775fb6b197df46..21155737326e7b4348f8b54462b2e4e36c0cfa66 100644 (file)
@@ -24,6 +24,7 @@
 #define INFO_NETINFO 0
 #define INFO_FILE 1
 #define INFO_NIS 2
+#define INFO_DIRECTORYSERVICES 3
 
 #ifndef __SLICK__
 #define _PASSWD_FILE "/etc/master.passwd"
@@ -50,6 +51,7 @@ static int literal = 0;
 extern int file_check_passwd(char *, char *);
 extern int netinfo_check_passwd(char *, char *);
 extern int nis_check_passwd(char *, char *);
+extern int ds_check_passwd(char *, char *);
 
 void
 checkpasswd(char *name, char *old_pw)
@@ -85,10 +87,12 @@ usage()
        fprintf(stderr, "    netinfo\n");
        fprintf(stderr, "    file\n");
        fprintf(stderr, "    nis\n");
+       fprintf(stderr, "    opendirectory\n");
        fprintf(stderr, "for netinfo, location may be a domain name or server/tag\n");
        fprintf(stderr, "for file, location may be a file name (%s is the default)\n",
                _PASSWD_FILE);
        fprintf(stderr, "for nis, location may be a NIS domainname\n");
+       fprintf(stderr, "for opendirectory, location may be a directory node name\n");
        fprintf(stderr, "if -c is specified, the password you supply is compared\n");
        fprintf(stderr, "verbatim without first being crypted\n");
        exit(1);
@@ -101,7 +105,7 @@ main(int argc, char *argv[])
        int i, infosystem;
        struct passwd *pw;
 
-       infosystem = INFO_NETINFO;
+       infosystem = INFO_DIRECTORYSERVICES;
        user = NULL;
        locn = NULL;
 
@@ -123,6 +127,7 @@ main(int argc, char *argv[])
                        else if (!strcmp(argv[i], "nis")) infosystem = INFO_NIS;
                        else if (!strcmp(argv[i], "YP")) infosystem = INFO_NIS;
                        else if (!strcmp(argv[i], "yp")) infosystem = INFO_NIS;
+                       else if (!strcasecmp(argv[i], "opendirectory")) infosystem = INFO_DIRECTORYSERVICES;
                        else
                        {
                                fprintf(stderr, "unknown info system \"%s\"\n", argv[i]);
@@ -165,6 +170,9 @@ main(int argc, char *argv[])
                case INFO_NIS:
                        nis_check_passwd(user, locn);
                        break;
+               case INFO_DIRECTORYSERVICES:
+                       ds_check_passwd(user, locn);
+                       break;
        }
 
        exit(0);