* Moved login-to-screenname code ... no longer part of CtdlTryExistingUser(),
authorArt Cancro <ajc@citadel.org>
Tue, 21 Jan 2003 04:42:12 +0000 (04:42 +0000)
committerArt Cancro <ajc@citadel.org>
Tue, 21 Jan 2003 04:42:12 +0000 (04:42 +0000)
  it's now part of getuser() so it always gets called, even when looking up
  addresses for mail and stuff.

citadel/ChangeLog
citadel/user_ops.c
citadel/user_ops.h

index d95bb6748d062d0df0415761fd2e6b2811e4f0bc..685f3d209c870562576d62e6c99c9a88ebebc5ac 100644 (file)
@@ -1,4 +1,9 @@
  $Log$
+ Revision 601.122  2003/01/21 04:42:12  ajc
+ * Moved login-to-screenname code ... no longer part of CtdlTryExistingUser(),
+   it's now part of getuser() so it always gets called, even when looking up
+   addresses for mail and stuff.
+
  Revision 601.121  2003/01/19 08:59:02  error
  * Remove irrelevant file hpsux.h (was part of dynloader)
 
@@ -4431,4 +4436,3 @@ Sat Jul 11 00:20:48 EDT 1998 Nathan Bryant <bryant@cs.usm.maine.edu>
 
 Fri Jul 10 1998 Art Cancro <ajc@uncensored.citadel.org>
        * Initial CVS import
-
index 5e8acacd082a6f5280318ae75bee55877fe73de1..195573fdb9d27a43211963a9fd82b554a95d5dd9 100644 (file)
@@ -67,9 +67,17 @@ int getuser(struct usersupp *usbuf, char name[])
        struct cdbdata *cdbus;
 
        memset(usbuf, 0, sizeof(struct usersupp));
-       for (a = 0; a <= strlen(name); ++a) {
-               if (a < sizeof(lowercase_name))
-                       lowercase_name[a] = tolower(name[a]);
+
+       if (CtdlAssociateSystemUser(lowercase_name, name) == 0) {
+               for (a = 0; a <= strlen(lowercase_name); ++a) {
+                       lowercase_name[a] = tolower(lowercase_name[a]);
+               }
+       }
+       else {
+               for (a = 0; a <= strlen(name); ++a) {
+                       if (a < sizeof(lowercase_name))
+                               lowercase_name[a] = tolower(name[a]);
+               }
        }
        lowercase_name[sizeof(lowercase_name) - 1] = 0;
 
@@ -305,16 +313,36 @@ int getuserbynumber(struct usersupp *usbuf, long int number)
 }
 
 
+/*
+ * See if we can translate a system login name (i.e. from /etc/passwd)
+ * to a Citadel screen name.  Returns 0 if one is found.
+ */
+int CtdlAssociateSystemUser(char *screenname, char *loginname) {
+       struct passwd *p;
+       int a;
+
+       p = (struct passwd *) getpwnam(loginname);
+       if (p != NULL) {
+               strcpy(screenname, p->pw_gecos);
+               for (a = 0; a < strlen(screenname); ++a) {
+                       if (screenname[a] == ',') {
+                               screenname[a] = 0;
+                       }
+               }
+               return(0);
+       }
+       return(1);
+}
+
+
+
 /*
  * Back end for cmd_user() and its ilk
  */
 int CtdlLoginExistingUser(char *trythisname)
 {
        char username[SIZ];
-       char autoname[SIZ];
-       int found_user = 0;
-       struct passwd *p;
-       int a;
+       int found_user;
 
        if (trythisname == NULL) return login_not_found;
        safestrncpy(username, trythisname, sizeof username);
@@ -323,17 +351,9 @@ int CtdlLoginExistingUser(char *trythisname)
        if ((CC->logged_in)) {
                return login_already_logged_in;
        }
+
        found_user = getuser(&CC->usersupp, username);
-       if (found_user != 0) {
-               p = (struct passwd *) getpwnam(username);
-               if (p != NULL) {
-                       strcpy(autoname, p->pw_gecos);
-                       for (a = 0; a < strlen(autoname); ++a)
-                               if (autoname[a] == ',')
-                                       autoname[a] = 0;
-                       found_user = getuser(&CC->usersupp, autoname);
-               }
-       }
+
        if (found_user == 0) {
                if (((CC->nologin)) && (CC->usersupp.axlevel < 6)) {
                        return login_too_many_users;
index f8622e9a4a7fe35720e90da0a2e954a1f47f38b5..dc58ebdff645e775b889283e87d2ab42411ee8a0 100644 (file)
@@ -48,7 +48,7 @@ int GenerateRelationshipIndex(  char *IndexBuf,
                                 long RoomID,
                                 long RoomGen,
                                 long UserID);
-
+int CtdlAssociateSystemUser(char *screenname, char *loginname);
 int CtdlLoginExistingUser(char *username);
 
 /*