From: Po Lu Date: Fri, 17 May 2024 11:21:05 +0000 (+0800) Subject: Port to certain Android environments with no GUI X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=c0b4f988edcde90c6d6e69f1477f708d3e39af01;p=emacs.git Port to certain Android environments with no GUI * configure.ac (USER_FULL_NAME): Define to android_user_full_name only when a GUI system is being built. Otherwise, set to pw->pw_gecos or NULL consistently with the presence of pw->pw_gecos. * src/editfns.c (Fuser_full_name): Adjust to match. Accept NULL values from USER_FULL_NAME. (cherry picked from commit 1f08984a67c94e957bec7f8c59818b627a67427b) --- diff --git a/configure.ac b/configure.ac index 8821d3b3330..47a657a6d20 100644 --- a/configure.ac +++ b/configure.ac @@ -2464,11 +2464,6 @@ AC_DEFINE_UNQUOTED([SYSTEM_TYPE], ["$SYSTEM_TYPE"], [The type of system you are compiling for; sets 'system-type'.]) AC_SUBST([SYSTEM_TYPE]) -# Check for pw_gecos in struct passwd; this is known to be missing on -# Android. - -AC_CHECK_MEMBERS([struct passwd.pw_gecos], [], [], [#include ]) - pre_PKG_CONFIG_CFLAGS=$CFLAGS pre_PKG_CONFIG_LIBS=$LIBS @@ -2754,6 +2749,17 @@ AC_SUBST([ANDROID_BUILD_CFLAGS]) AC_SUBST([ANDROID_SHARED_USER_ID]) AC_SUBST([ANDROID_SHARED_USER_NAME]) +# Check for pw_gecos in struct passwd; this is known to be missing on +# Android. + +AH_TEMPLATE([USER_FULL_NAME], [How to get a user's full name.]) +AC_CHECK_MEMBERS([struct passwd.pw_gecos], [], [], [#include ]) +AS_IF([test x"$REALLY_ANDROID" = "xyes"], + [AC_DEFINE([USER_FULL_NAME], [android_user_full_name (pw)])], + [AS_IF([test x"$ac_cv_member_struct_passwd_pw_gecos" = "xyes"], + [AC_DEFINE([USER_FULL_NAME], [pw->pw_gecos])], + [AC_DEFINE([USER_FULL_NAME], [NULL])])]) + if test "${with_pgtk}" = "yes"; then window_system=pgtk fi @@ -6493,9 +6499,6 @@ AC_SUBST([SEPCHAR]) dnl Everybody supports this, except MS-DOS. AC_DEFINE([subprocesses], [1], [Define to enable asynchronous subprocesses.]) -AC_DEFINE([USER_FULL_NAME], [pw->pw_gecos], [How to get a user's full name.]) - - AC_DEFINE([DIRECTORY_SEP], ['/'], [Character that separates directories in a file name.]) diff --git a/src/editfns.c b/src/editfns.c index fbfaaf66644..6b110b3d0e0 100644 --- a/src/editfns.c +++ b/src/editfns.c @@ -1247,11 +1247,10 @@ is in general a comma-separated list. */) if (!pw) return Qnil; -#if defined HAVE_ANDROID && !defined ANDROID_STUBIFY - p = android_user_full_name (pw); -#else p = USER_FULL_NAME; -#endif + if (!p) + return Qnil; + /* Chop off everything after the first comma, since 'pw_gecos' is a comma-separated list. */ q = strchr (p, ',');