--- emacs-22.2-orig/configure.in 2008-04-02 18:28:37.000000000 +0200 +++ emacs-22.2/configure.in 2008-04-02 22:18:38.000000000 +0200 @@ -2700,7 +2700,9 @@ fi if test "${with_kerberos5+set}" = set; then - AC_CHECK_HEADERS(krb5.h) + AC_CHECK_HEADERS(krb5.h, + AC_CHECK_MEMBERS([krb5_error.text, krb5_error.e_text],,, + [#include ])) else AC_CHECK_HEADERS(des.h,, [AC_CHECK_HEADERS(kerberosIV/des.h,, --- emacs-22.2-orig/lib-src/pop.c 2008-02-23 14:49:00.000000000 +0100 +++ emacs-22.2/lib-src/pop.c 2008-04-02 22:35:55.000000000 +0200 @@ -1200,11 +1200,12 @@ krb5_free_principal (kcontext, server); if (rem) { + strcpy (pop_error, KRB_ERROR); + strncat (pop_error, error_message (rem), + ERROR_MAX - sizeof (KRB_ERROR)); +#if defined HAVE_KRB5_ERROR_TEXT if (err_ret && err_ret->text.length) { - strcpy (pop_error, KRB_ERROR); - strncat (pop_error, error_message (rem), - ERROR_MAX - sizeof (KRB_ERROR)); strncat (pop_error, " [server says '", ERROR_MAX - strlen (pop_error) - 1); strncat (pop_error, err_ret->text.data, @@ -1213,12 +1214,17 @@ strncat (pop_error, "']", ERROR_MAX - strlen (pop_error) - 1); } - else +#elif defined HAVE_KRB5_ERROR_E_TEXT + if (err_ret && err_ret->e_text && strlen(*err_ret->e_text)) { - strcpy (pop_error, KRB_ERROR); - strncat (pop_error, error_message (rem), - ERROR_MAX - sizeof (KRB_ERROR)); + strncat (pop_error, " [server says '", + ERROR_MAX - strlen (pop_error) - 1); + strncat (pop_error, *err_ret->e_text, + ERROR_MAX - strlen (pop_error) - 1); + strncat (pop_error, "']", + ERROR_MAX - strlen (pop_error) - 1); } +#endif if (err_ret) krb5_free_error (kcontext, err_ret); krb5_auth_con_free (kcontext, auth_context);