Return to BSD News archive
Newsgroups: comp.os.386bsd.bugs
Path: sserve!newshost.anu.edu.au!munnari.oz.au!news.Hawaii.Edu!ames!elroy.jpl.nasa.gov!sdd.hp.com!spool.mu.edu!howland.reston.ans.net!ee.und.ac.za!hippo.ru.ac.za!kudu!g89r4222
From: g89r4222@kudu.ru.ac.za (Geoff Rehmet)
Subject: rxvt 1.45 - fix for utmp support
Message-ID: <g89r4222.751752070@kudu>
Sender: news@hippo.ru.ac.za (Usenet News Admin)
Organization: Rhodes University, Grahamstown, South Africa
Date: Wed, 27 Oct 1993 20:01:10 GMT
Lines: 135
Hi,
The diff which follows fixes the utmp support for Robert Nation's
rxvt version 1.45. Without the diff rxvt will hang if it is not
setuid root (and thus unable to write to /var/run/utmp).
rxvt-1.45 can be obtained from
spcot.sanders.com:/pub/rxvt/rxvt-1.45.tar.gz
Geoff.
-------------------------------------------------------------
diff -c rxvt/Makefile rxvt.freebsd/Makefile
*** rxvt/Makefile Wed Oct 27 15:45:13 1993
--- rxvt.freebsd/Makefile Wed Oct 27 21:28:25 1993
***************
*** 6,12 ****
MANDIR=$(DESTDIR)/usr/man/man1
BINDIR=$(DESTDIR)/usr/bin/X11
USRLIBDIR=$(DESTDIR)/usr/lib/X11
! INCROOT=$(DESTDIR)/usr/include/X11
# Rxvt now include optional utmp support.
# including utmp support allows rxvt to update /etc/utmp so
--- 6,12 ----
MANDIR=$(DESTDIR)/usr/man/man1
BINDIR=$(DESTDIR)/usr/bin/X11
USRLIBDIR=$(DESTDIR)/usr/lib/X11
! INCROOT=$(DESTDIR)/usr/X386/include/X11
# Rxvt now include optional utmp support.
# including utmp support allows rxvt to update /etc/utmp so
***************
*** 30,36 ****
DEFS = -DUTMP_SUPPORT -DUTMP=\"/etc/utmp\" -DBSD
# for FreeBSD
! #DEFS = -DUTMP_SUPPORT -DUTMP=\"/etc/utmp\" -DBSD -DFREEBSD
# for most systems:
LIBS = -L$(USRLIBDIR) -lX11
--- 30,36 ----
DEFS = -DUTMP_SUPPORT -DUTMP=\"/etc/utmp\" -DBSD
# for FreeBSD
! DEFS = -DUTMP_SUPPORT -DUTMP=\"/var/run/utmp\" -DBSD -DFREEBSD
# for most systems:
LIBS = -L$(USRLIBDIR) -lX11
***************
*** 38,44 ****
# for solaris2 & some others
#LIBS = -L$(USRLIBDIR) -lX11 -lsocket
! CFLAGS= -O2 -s -I$(INCROOT) $(DEFS) -fomit-frame-pointer
OBJ=rxvt.o xsetup.o command.o screen.o sbar.o utmp.o
SRC=rxvt.c xsetup.c command.c screen.c sbar.c utmp.c
--- 38,44 ----
# for solaris2 & some others
#LIBS = -L$(USRLIBDIR) -lX11 -lsocket
! CFLAGS= -O2 -s -I$(INCROOT) $(DEFS) -fomit-frame-pointer -I/usr/X386/include
OBJ=rxvt.o xsetup.o command.o screen.o sbar.o utmp.o
SRC=rxvt.c xsetup.c command.c screen.c sbar.c utmp.c
diff -c rxvt/utmp.c rxvt.freebsd/utmp.c
*** rxvt/utmp.c Wed Oct 27 15:43:58 1993
--- rxvt.freebsd/utmp.c Wed Oct 27 21:38:49 1993
***************
*** 128,134 ****
int found;
struct utmp u;
FILE *f;
! f = fopen(UTMP,"r+");
fseek(f, 900, 0);
while(fread((char *)&u, sizeof(u), 1, f)) {
for(found=-1, p = (char *)&u; p < (char *) &u+sizeof(u); p++)
--- 128,135 ----
int found;
struct utmp u;
FILE *f;
! if((f = fopen(UTMP,"r+"))== NULL)
! return(-1);
fseek(f, 900, 0);
while(fread((char *)&u, sizeof(u), 1, f)) {
for(found=-1, p = (char *)&u; p < (char *) &u+sizeof(u); p++)
***************
*** 146,153 ****
int pos;
FILE *utmp;
! utmp = fopen(UTMP,"r+");
! pos = utmp_end();
utmp_pos = pos;
fseek(utmp,pos,0);
fwrite((char *)u, sizeof(struct utmp),1,utmp);
--- 147,156 ----
int pos;
FILE *utmp;
! if((utmp = fopen(UTMP,"r+")) == NULL)
! return(-1);
! if((pos = utmp_end()) == -1)
! return(-1);
utmp_pos = pos;
fseek(utmp,pos,0);
fwrite((char *)u, sizeof(struct utmp),1,utmp);
***************
*** 211,217 ****
{
FILE *ut;
struct utmp u;
!
ut = fopen(UTMP,"r+");
fseek(ut,utmp_pos,0);
memset(&u,0,sizeof(u));
--- 214,222 ----
{
FILE *ut;
struct utmp u;
!
! if(!madeutent)
! return;
ut = fopen(UTMP,"r+");
fseek(ut,utmp_pos,0);
memset(&u,0,sizeof(u));
-------------------------------------------------------------
--
===========================csgr@alpha.ru.ac.za================================
Geoff Rehmet, Parallel Processing Group, | ____ _ o /\
Computer Science Department, | ___ _-\_<, /\/\/\
Rhodes University, RSA. | (*)/'(*) /\/\/\/\/\