Mailing-List: contact cygwin-help AT sourceware DOT cygnus DOT com; run by ezmlm List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT sources DOT redhat DOT com Delivered-To: mailing list cygwin AT sources DOT redhat DOT com Message-Id: <5.0.0.25.0.20001205233111.027a5eb0@pop.bresnanlink.net> X-Sender: cabbey AT pop DOT bresnanlink DOT net X-Mailer: QUALCOMM Windows Eudora Version 5.0 Date: Tue, 05 Dec 2000 23:40:06 -0600 To: cygwin AT cygwin DOT com From: Chris Abbey Subject: [patch] default homedir (was: Re: Problem with ssh-keygen.exe. In-Reply-To: <3A2D8DF2.26FE2994@redhat.com> References: Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii"; format=flowed I made a change that impacts 9x/Me which I can't test, can someone confirm that please? It's not a major functional change, just an implementation detail (chunk eight). It also looks like the diff tool undid my formatting adjustment in the usage text when I used the -b switch, unfortunately without that the crazy mixed indenting drove it nuts and it looked like I had changed about 1/3 of the file. I can try to provide a separate patch for that if you want. Tue Dec 5 23:32:06 2000 Chris Abbey * mkpasswd.c: make default home directory /home/$user if one can't be found in user registry. Allow user to override that with command line arg. ~/cygwin/src/winsup/utils $ cvs diff -ub mkpasswd.c Index: mkpasswd.c =================================================================== RCS file: /cvs/src/src/winsup/utils/mkpasswd.c,v retrieving revision 1.5 diff -u -b -r1.5 mkpasswd.c --- mkpasswd.c 2000/11/08 15:00:02 1.5 +++ mkpasswd.c 2000/12/06 05:32:22 @@ -102,7 +102,7 @@ } int -enum_users (LPWSTR servername, int print_sids, int print_cygpath) +enum_users (LPWSTR servername, int print_sids, int print_cygpath, const char * passed_home_path) { USER_INFO_3 *buffer; DWORD entriesread = 0; @@ -160,6 +160,11 @@ else psx_dir (homedir_w32, homedir_psx); + if (0 == strlen(homedir_psx)) { + strcat(homedir_psx, passed_home_path); + strcat(homedir_psx, username); + } + if (print_sids) { if (!LookupAccountName (servername ? ansi_srvname : NULL, @@ -317,6 +322,8 @@ fprintf (stderr, " -m,--no-mount don't use mount points for home dir\n"); fprintf (stderr, " -s,--no-sids don't print SIDs in GCOS field\n"); fprintf (stderr, " (this affects ntsec)\n"); + fprintf (stderr, " -p,--path-to-home path if user account has no home dir, use\n"); + fprintf (stderr, " path instead of /home/\n"); fprintf (stderr, " -?,--help displays this message\n\n"); fprintf (stderr, "One of `-l', `-d' or `-g' must be given on NT/W2K.\n"); return 1; @@ -328,11 +335,12 @@ {"loca-groups", no_argument, NULL, 'g'}, {"no-mount", no_argument, NULL, 'm'}, {"no-sids", no_argument, NULL, 's'}, + {"path-to-home",required_argument, NULL, 'p'}, {"help", no_argument, NULL, 'h'}, {0, no_argument, NULL, 0} }; -char opts[] = "ldgsmh"; +char opts[] = "ldgsmhp:"; int main (int argc, char **argv) @@ -348,7 +356,7 @@ int print_cygpath = 1; int i; - char name[256], dom[256]; + char name[256], dom[256], passed_home_path[MAX_PATH]; DWORD len, len2; PSID sid; SID_NAME_USE use; @@ -376,6 +384,17 @@ case 'm': print_cygpath = 0; break; + case 'p': + if (optarg[0] != '/') { + fprintf(stderr, "%s: `%s' is not a fully qulaified path.\n", + argv[0], optarg); + return 1; + } + strcpy(passed_home_path, optarg); + if (optarg[strlen(optarg)-1] != '/') { + strcat(passed_home_path, "/"); + } + break; case 'h': return usage (); default: @@ -400,6 +419,10 @@ } } + if (0 == strlen(passed_home_path)) { + strcpy(passed_home_path, "/home/"); + } + /* This takes Windows 9x/ME into account. */ if (GetVersion () >= 0x80000000) { @@ -407,10 +430,10 @@ if (!GetUserName (name, (len = 256, &len))) strcpy (name, "unknown"); - printf ("%s::%ld:%ld::/home/%s:/bin/sh\n", name, + printf ("%s::%ld:%ld::%s%s:/bin/sh\n", name, DOMAIN_USER_RID_ADMIN, DOMAIN_ALIAS_RID_ADMINS, - name); + passed_home_path, name); return 0; } @@ -496,11 +519,11 @@ exit (1); } - enum_users (servername, print_sids, print_cygpath); + enum_users (servername, print_sids, print_cygpath, passed_home_path); } if (print_local) - enum_users (NULL, print_sids, print_cygpath); + enum_users (NULL, print_sids, print_cygpath, passed_home_path); if (servername) netapibufferfree (servername); -- Want to unsubscribe from this list? Send a message to cygwin-unsubscribe AT sourceware DOT cygnus DOT com