ostroff@Oswego.EDU (Boyd Ostroff) (09/08/90)
In article <1199@glyph.UUCP> ahh@glyph.UUCP (Andy Heffernan) writes: >I'm no expert on this, but I've been doing the multiple console getty >thing for awhile now and find it quite handy. The biggest problem I've >found, however, is that some library code (like getlogin(), cuserid() -- >basically the /etc/utmp grokkers) doesn't understand that this is possible. >Apparently when they scan utmp looking for your login name when you're >logged onto a console window, they stop after seeing the first user name >on any console window, even if it's the wrong window. I'm also a big fan of multiple windows. I wrote a little getty replacement for the console (wlogin) which facilitates this by allowing multiple, overlapping 24x80 windows that utilize a smaller font, and have been using it for a couple years without problems. Send me mail if you'd like a copy. As far as the getlogin() problem, I did a quick hack to fix this awhile ago. Substitute the following get_login() routine for the stock getlogin() and it will fix your problems... ||| Boyd Ostroff - Tech Director - Dept of Theatre - SUNY Oswego ||| Sys Admin - "The CallBoard" - (315) 947-6414 - 1200/2400 baud ||| ostroff@oswego.oswego.edu - cboard!ostroff@oswego.oswego.edu #include <sys/types.h> #include <utmp.h> #include <time.h> #include <stdio.h> #include <pwd.h> #include <string.h> char *get_login() /* this function replaces getlogin() */ { /* which doesn't work properly with multiple */ struct utmp *getutent(); /* windows on the Unix-PC system console */ struct utmp *u; /* Boyd Ostroff (ostroff@oswego.oswego.edu) */ char *ttyname(); char *where; where = 1 + strrchr(ttyname(0), '/'); setutent(); while ((u = getutent()) != NULL) { if (u->ut_type == 7) /* only check user processes */ { if (strcmp(where, u->ut_line) ==0) { return(u->ut_user); } } } endutent(); }