See patch.
>From 6081cf4c4ad8370c69bf0571a61d8adccc007712 Mon Sep 17 00:00:00 2001
From: Pascal Stumpf <pascal.stu...@cubes.de>
Date: Sat, 11 Aug 2012 13:49:07 +0200
Subject: [PATCH] Make dtlogin compile on OpenBSD.
Most importantly, we *cannot* do the utmp stuff this code is attempting.
It is SysV-specific.
---
cde/programs/dtlogin/account.c | 4 ++++
cde/programs/dtlogin/dm.c | 16 +++++++++++++++-
cde/programs/dtlogin/session.c | 2 +-
cde/programs/dtlogin/util.c | 3 ++-
4 files changed, 22 insertions(+), 3 deletions(-)
diff --git a/cde/programs/dtlogin/account.c b/cde/programs/dtlogin/account.c
index d5047a3..e14389d 100644
--- a/cde/programs/dtlogin/account.c
+++ b/cde/programs/dtlogin/account.c
@@ -138,6 +138,7 @@ Account( struct display *d, char *user, char *line, pid_t
pid,
#endif /* NeedWidePrototypes */
waitType exitcode )
{
+#if !defined(CSRG_BASED) /* we cannot do this on BSD ... */
struct utmp utmp; /* local struct for new entry */
struct utmp *u; /* pointer to entry in utmp file */
int fd;
@@ -348,6 +349,7 @@ Account( struct display *d, char *user, char *line, pid_t
pid,
#endif
#endif /* !sun */
+#endif /* !CSRG_BASED */
}
@@ -369,6 +371,7 @@ UtmpIdOpen( char *utmpId )
struct utmp *u; /* pointer to entry in utmp file */
int status = 1; /* return code */
+#if !defined(CSRG_BASED)
while ( (u = getutent()) != NULL ) {
if ( (strncmp(u->ut_id, utmpId, 4) == 0 ) &&
@@ -380,6 +383,7 @@ UtmpIdOpen( char *utmpId )
}
endutent();
+#endif
return (status);
}
diff --git a/cde/programs/dtlogin/dm.c b/cde/programs/dtlogin/dm.c
index 717b043..136d0bd 100644
--- a/cde/programs/dtlogin/dm.c
+++ b/cde/programs/dtlogin/dm.c
@@ -515,7 +515,7 @@ StopAll( int arg )
int ChildReady = 0;
-#if !defined(SYSV) || defined(hpux) || defined(_AIX) || defined(__uxp__) ||
defined (__osf__) || defined(linux)
+#if !defined(SYSV) || defined(hpux) || defined(_AIX) || defined(__uxp__) ||
defined (__osf__) || defined(linux) || defined(CSRG_BASED)
static SIGVAL
ChildNotify( int arg )
{
@@ -599,7 +599,9 @@ ProcessChildDeath( int pid, waitType status )
* do process accounting...
*/
+#if !defined(CSRG_BASED)
Account(d, NULL, NULL, pid, DEAD_PROCESS, status);
+#endif
/*
@@ -732,7 +734,9 @@ ProcessChildDeath( int pid, waitType status )
* do process accounting...
*/
+#if !defined(CSRG_BASED)
Account(d, NULL, NULL, pid, DEAD_PROCESS, status);
+#endif
switch (d->status)
{
@@ -1030,6 +1034,7 @@ StartDisplay(
* are already in use...
*/
+#if !defined(CSRG_BASED)
if (d->utmpId == NULL) {
int i;
char *p, *q;
@@ -1061,6 +1066,7 @@ StartDisplay(
}
#endif
}
+#endif
}
if (NULL == d->authFile)
@@ -1150,7 +1156,9 @@ StartDisplay(
}
}
#endif
+#if !defined(CSRG_BASED)
Account(d, "LOGIN", line, getpid(), LOGIN_PROCESS, status);
+#endif
}
if (!WaitForServer (d))
@@ -1244,7 +1252,9 @@ StopDisplay( struct display *d )
else
if ((d->displayType.location == Local) || !dt_shutdown ) {
/* don't remove the console */
+#if !defined(CSRG_BASED)
Account(d, NULL, NULL, 0, DEAD_PROCESS, status);
+#endif
RemoveDisplay (d);
}
}
@@ -1546,7 +1556,9 @@ StartGetty( struct display *d )
/*
* do process accounting...
*/
+#if !defined(CSRG_BASED)
Account(d, "LOGIN", NULL, getpid(), LOGIN_PROCESS, status);
+#endif
#ifdef _AIX
@@ -1723,6 +1735,7 @@ GettyRunning( struct display *d )
Debug("Checking for a getty on line %s.\n", utmp.ut_line);
+#if !defined(CSRG_BASED)
setutent();
rvalue = FALSE;
@@ -1760,6 +1773,7 @@ GettyRunning( struct display *d )
}
endutent();
+#endif /* !CSRG_BASED */
return rvalue;
}
diff --git a/cde/programs/dtlogin/session.c b/cde/programs/dtlogin/session.c
index 92fa5d8..a1fbaa6 100644
--- a/cde/programs/dtlogin/session.c
+++ b/cde/programs/dtlogin/session.c
@@ -1290,7 +1290,7 @@ StartClient( struct verify_info *verify, struct display
*d, int *pidp )
}
#endif
-#ifndef sun
+#if !defined(sun) && !defined(CSRG_BASED)
Account(d, user, NULL, getpid(), USER_PROCESS, status);
#endif
diff --git a/cde/programs/dtlogin/util.c b/cde/programs/dtlogin/util.c
index c93d29b..accb0ff 100644
--- a/cde/programs/dtlogin/util.c
+++ b/cde/programs/dtlogin/util.c
@@ -679,7 +679,8 @@ static int
MatchesFileSuffix(char *filename, char *suffix)
{
int retval = 0;
-#if defined(_AIX) || defined(SVR4) || defined (__osf__) || defined(linux)
+#if defined(_AIX) || defined(SVR4) || defined (__osf__) || defined(linux) || \
+ defined(CSRG_BASED)
char *pch;
/*
--
1.7.6
------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and
threat landscape has changed and how IT managers can respond. Discussions
will include endpoint security, mobile security and the latest in malware
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
cdesktopenv-devel mailing list
cdesktopenv-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/cdesktopenv-devel