Portability fixes in emacs-module-tests

* test/Makefile.in (abs_top_srcdir): Add variable, needed by
CPPFLAGS.
* test/data/emacs-module/mod-test.c: Include <limits.h>.
(pT, pZ, T_TYPE, Z_TYPE): Compatibility macros, for systems that
don't support %td and %zu format specs.
(emacs_module_init): Use compatibility macros to make the error
messages print meaningful values (and avoid compiler warnings).
This commit is contained in:
Eli Zaretskii 2018-01-19 11:20:12 +02:00
parent 1d50c185f0
commit c28d4b6d8e
2 changed files with 32 additions and 6 deletions

View file

@ -31,6 +31,7 @@
SHELL = @SHELL@ SHELL = @SHELL@
srcdir = @srcdir@ srcdir = @srcdir@
abs_top_srcdir=@abs_top_srcdir@
VPATH = $(srcdir) VPATH = $(srcdir)
FIND_DELETE = @FIND_DELETE@ FIND_DELETE = @FIND_DELETE@

View file

@ -20,10 +20,35 @@ along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. */
#include <assert.h> #include <assert.h>
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#include <limits.h>
#include <emacs-module.h> #include <emacs-module.h>
int plugin_is_GPL_compatible; int plugin_is_GPL_compatible;
#if INTPTR_MAX <= 0
# error "INTPTR_MAX misconfigured"
#elif INTPTR_MAX <= INT_MAX || INTPTR_MAX <= LONG_MAX
# define pT "ld"
# define pZ "lu"
# define T_TYPE long
# define Z_TYPE unsigned long
#elif INTPTR_MAX <= INT64_MAX
# ifdef __MINGW32__
# define pT "lld"
# define pZ "llu"
# define T_TYPE long long
# define Z_TYPE unsigned long long
# else
# define pT "ld"
# define pZ "lu"
# define T_TYPE long
# define Z_TYPE unsigned long
# endif
#else
# error "INTPTR_MAX too large"
#endif
/* Always return symbol 't'. */ /* Always return symbol 't'. */
static emacs_value static emacs_value
Fmod_test_return_t (emacs_env *env, ptrdiff_t nargs, emacs_value args[], Fmod_test_return_t (emacs_env *env, ptrdiff_t nargs, emacs_value args[],
@ -287,9 +312,9 @@ emacs_module_init (struct emacs_runtime *ert)
{ {
if (ert->size < sizeof *ert) if (ert->size < sizeof *ert)
{ {
fprintf (stderr, "Runtime size of runtime structure (%td bytes) " fprintf (stderr, "Runtime size of runtime structure (%"pT" bytes) "
"smaller than compile-time size (%zu bytes)", "smaller than compile-time size (%"pZ" bytes)",
ert->size, sizeof *ert); (T_TYPE) ert->size, (Z_TYPE) sizeof (*ert));
return 1; return 1;
} }
@ -297,9 +322,9 @@ emacs_module_init (struct emacs_runtime *ert)
if (env->size < sizeof *env) if (env->size < sizeof *env)
{ {
fprintf (stderr, "Runtime size of environment structure (%td bytes) " fprintf (stderr, "Runtime size of environment structure (%"pT" bytes) "
"smaller than compile-time size (%zu bytes)", "smaller than compile-time size (%"pZ" bytes)",
env->size, sizeof *env); (T_TYPE) env->size, (Z_TYPE) sizeof (*env));
return 2; return 2;
} }