From 2730367844c198e9f9faaf61b31241ffc04d89c9 Mon Sep 17 00:00:00 2001 From: Jon Trulson Date: Sun, 4 Jul 2021 16:24:24 -0600 Subject: [PATCH] utempter: complete the implementation Liang Chang added utempter support to the dtterm widget in pre-autoconf CDE. While the code itself was merged, it was still not "turned on" for autoconf builds. This commit completes the implementation allowing dtterm on Linux and the BSDs to be installed without having to be setuid root -- as long as the libutempter headers and libraries are installed. --- cde/configure.ac | 9 ++++++++- cde/lib/DtTerm/Makefile.am | 4 ++++ cde/lib/DtTerm/TermPrim/Makefile.am | 11 ++++++++--- cde/programs/dtterm/Makefile.am | 6 ++++++ 4 files changed, 26 insertions(+), 4 deletions(-) diff --git a/cde/configure.ac b/cde/configure.ac index 9ad898728..dac5d27dd 100644 --- a/cde/configure.ac +++ b/cde/configure.ac @@ -377,7 +377,7 @@ fi dnl headers AC_HEADER_STDC -AC_CHECK_HEADERS([locale.h security/pam_appl.h]) +AC_CHECK_HEADERS([locale.h security/pam_appl.h utempter.h]) dnl libraries AC_CHECK_LIB(m, cosf) @@ -451,6 +451,13 @@ AC_CHECK_LIB(pam, pam_start, AM_CONDITIONAL([HAS_PAM_LIBRARY], [test "x$ac_cv_lib_pam_pam_start" = "xyes"]) +dnl figure out utempter support + +AC_CHECK_LIB(utempter, utempter_add_record, + [SOURCE_CPP_DEFINES="${SOURCE_CPP_DEFINES} -DHAS_UTEMPTER_LIBRARY"]) + +AM_CONDITIONAL([HAS_UTEMPTER_LIBRARY], [test "x$ac_cv_lib_utempter_utempter_add_record" = "xyes"]) + dnl Figure out TCL SC_PATH_TCLCONFIG diff --git a/cde/lib/DtTerm/Makefile.am b/cde/lib/DtTerm/Makefile.am index 5a5919c39..cc7aa1ca5 100644 --- a/cde/lib/DtTerm/Makefile.am +++ b/cde/lib/DtTerm/Makefile.am @@ -21,4 +21,8 @@ if SOLARIS libDtTerm_la_LIBADD += -ldl -lgen endif +if HAS_UTEMPTER_LIBRARY +libDtTerm_la_LIBADD += -lutempter +endif + libDtTerm_la_LDFLAGS = -version-info 2:1:0 diff --git a/cde/lib/DtTerm/TermPrim/Makefile.am b/cde/lib/DtTerm/TermPrim/Makefile.am index ff78b6c82..75ee28b63 100644 --- a/cde/lib/DtTerm/TermPrim/Makefile.am +++ b/cde/lib/DtTerm/TermPrim/Makefile.am @@ -42,9 +42,14 @@ libTermPrim_la_SOURCES += TermPrimGetPty-svr4.c AM_CPPFLAGS += -DSUN_ARCHITECTURE endif -# uses CSRG_BASED... +# Use the posix pts api, like linux if BSD -libTermPrim_la_SOURCES += TermPrimGetPty-bsd.c +libTermPrim_la_SOURCES += TermPrimGetPty-pts.c +# uses CSRG_BASED global define +endif + +if FREEBSD +AM_CPPFLAGS += -DFREEBSD_ARCHITECTURE endif if OPENBSD @@ -52,6 +57,6 @@ AM_CPPFLAGS += -DOPENBSD_ARCHITECTURE endif if LINUX -libTermPrim_la_SOURCES += TermPrimGetPty-svr4.c +libTermPrim_la_SOURCES += TermPrimGetPty-pts.c AM_CPPFLAGS += -DLINUX_ARCHITECTURE endif diff --git a/cde/programs/dtterm/Makefile.am b/cde/programs/dtterm/Makefile.am index d497adb34..79ce5bf33 100644 --- a/cde/programs/dtterm/Makefile.am +++ b/cde/programs/dtterm/Makefile.am @@ -8,6 +8,10 @@ if BSD dtterm_LDADD += -lutil endif +if HAS_UTEMPTER_LIBRARY +dtterm_LDADD += -lutempter +endif + dtterm_CFLAGS = -I$(top_builddir)/lib/DtTerm/TermPrim \ -I$(top_builddir)/lib/DtTerm/Term \ -I$(top_builddir)/lib/DtTerm/TermView \ @@ -45,5 +49,7 @@ dtterm.ti: terminfoChecklist install-exec-hook: chown root $(DESTDIR)$(bindir)/dtterm +if !HAS_UTEMPTER_LIBRARY chmod 4755 $(DESTDIR)$(bindir)/dtterm +endif