$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)
Fri Jul 10 1998 Art Cancro <ajc@uncensored.citadel.org>
* Initial CVS import
-
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;
}
+/*
+ * 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);
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;