|
|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T r
Length: 1644 (0x66c)
Types: TextFile
Names: »regtty.c«
└─⟦a0efdde77⟧ Bits:30001252 EUUGD11 Tape, 1987 Spring Conference Helsinki
└─⟦526ad3590⟧ »EUUGD11/gnu-31mar87/X.V10.R4.tar.Z«
└─⟦2109abc41⟧
└─⟦this⟧ »./X.V10R4/obsolete/xterm/regtty.c«
/*
* regtty
* regtty ttyname1 ttyname2 ttyname3 ...
*/
#include <sys/time.h>
#include <utmp.h>
#include <pwd.h>
#define SCPYN(a, b) strncpy(a, b, sizeof(a))
#define SCMPN(a, b) strncmp(a, b, sizeof(a))
struct passwd *pw;
struct utmp utmp;
#define ROOT 0
char *ttyname();
char utmpf[] = "/etc/utmp";
main(argc, argv)
char *argv[];
{
struct passwd *getpwuid();
char *ttyn;
register f, t;
int i;
int debug;
pw = getpwuid(getuid());
if (pw == 0) exit(1);
if (argc > 1) {
for (i = 1; i < argc; i++) {
rmut(argv[i]);
}
exit(0);
}
ttyn = ttyname(0);
if (ttyn==(char *)0)
ttyn = "/dev/tty??";
SCPYN(utmp.ut_name, "");
SCPYN(utmp.ut_line, rindex(ttyn, '/')+1);
SCPYN(utmp.ut_host, getenv("VS100"));
SCPYN(utmp.ut_name, pw->pw_name);
time(&utmp.ut_time);
t = ttyslot();
if (t > 0 && (f = open(utmpf, 1)) >= 0) {
lseek(f, (long)(t*sizeof(utmp)), 0);
debug = write(f, (char *)&utmp, sizeof(utmp));
close(f);
}
chown(ttyn, pw->pw_uid, -1);
/* chmod(ttyn, 0622); always is 622 */
exit(0);
}
rmut(line)
char *line;
{
register f;
char device[15];
f = open(utmpf, 2);
if (f >= 0) {
while(read(f, (char *)&utmp, sizeof(utmp)) == sizeof(utmp)) {
if ((SCMPN(utmp.ut_line, line) != 0) ||
(SCMPN(utmp.ut_name, pw->pw_name) != 0))
continue;
lseek(f, -(long)sizeof(utmp), 1);
SCPYN(utmp.ut_name, "");
SCPYN(utmp.ut_host, "");
time(&utmp.ut_time);
write(f, (char *)&utmp, sizeof(utmp));
SCPYN(device, "/dev/");
strncpy(device+5, line, sizeof(device)-5);
chown(device, ROOT, -1);
/* chmod(device, 0666); always is 622 */
}
close(f);
}
}
/* end of regtty.c */