diff --git a/CMakeLists.txt b/CMakeLists.txt index 80d66bc28..c8047f82f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -599,7 +599,26 @@ endif( HAVE_LIBMAGIC ) if( WITH_UTEMPTER ) check_include_file( utempter.h HAVE_UTEMPTER_H ) check_library_exists( utempter addToUtmp "" HAVE_ADDTOUTEMP ) - if( HAVE_UTEMPTER_H AND HAVE_ADDTOUTEMP ) + if( NOT DEFINED UTEMPTER_HELPER ) + message( STATUS "Looking for utempter helper" ) + find_program( UTEMPTER_HELPER utempter + PATHS + /usr/lib/${CMAKE_LIBRARY_ARCHITECTURE}/utempter + /usr/lib/utempter + /usr/libexec/utempter + /usr/libexec + /usr/local/lib/${CMAKE_LIBRARY_ARCHITECTURE}/utempter + /usr/local/lib/utempter + /usr/local/libexec/utempter + /usr/local/libexec + ) + if( UTEMPTER_HELPER ) + message( STATUS "Looking for utempter helper - found" ) + else( ) + message( STATUS "Looking for utempter helper - not found" ) + endif( ) + endif( ) + if( HAVE_UTEMPTER_H AND HAVE_ADDTOUTEMP AND UTEMPTER_HELPER ) set( HAVE_UTEMPTER 1 ) set( UTEMPTER_LIBRARY utempter ) else( ) diff --git a/config.h.cmake b/config.h.cmake index 7fb9bfc1b..b65b1253f 100644 --- a/config.h.cmake +++ b/config.h.cmake @@ -717,6 +717,7 @@ /* Define if you have the utempter helper for utmp managment */ #cmakedefine HAVE_UTEMPTER 1 +#cmakedefine UTEMPTER_HELPER "@UTEMPTER_HELPER@" /* Define to 1 if you have the header file. */ #cmakedefine HAVE_UTIL_H 1 diff --git a/tdecore/kpty.cpp b/tdecore/kpty.cpp index 42abd1aed..1e5806133 100644 --- a/tdecore/kpty.cpp +++ b/tdecore/kpty.cpp @@ -453,7 +453,7 @@ void KPty::login(const char *user, const char *remotehost) #ifdef HAVE_UTEMPTER TDEProcess_Utmp utmp; utmp.cmdFd = d->masterFd; - utmp << "/usr/lib/utempter/utempter" << "add"; + utmp << UTEMPTER_HELPER << "add"; if (remotehost) utmp << remotehost; utmp.start(TDEProcess::Block); @@ -498,7 +498,7 @@ void KPty::logout() #ifdef HAVE_UTEMPTER TDEProcess_Utmp utmp; utmp.cmdFd = d->masterFd; - utmp << "/usr/lib/utempter/utempter" << "del"; + utmp << UTEMPTER_HELPER << "del"; utmp.start(TDEProcess::Block); #elif defined(USE_LOGIN) const char *str_ptr = d->ttyName.data();