bug-gnulib
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH] ssize_t: fix definition on mingw


From: Eric Blake
Subject: [PATCH] ssize_t: fix definition on mingw
Date: Thu, 29 Mar 2012 16:47:57 -0600

We were blindly defining ssize_t to int.  On mingw64, this is the
correct size, but the wrong rank, which leads gcc to issue warnings
for %zd printf directives.

* m4/ssize_t.m4 (gt_TYPE_SSIZE_T): Match rank of size_t.

Signed-off-by: Eric Blake <address@hidden>
---

Bruno, is this okay to apply?

 ChangeLog     |    5 +++++
 m4/ssize_t.m4 |   20 +++++++++++++++++---
 2 files changed, 22 insertions(+), 3 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index d74544a..768ab46 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2012-03-29  Eric Blake  <address@hidden>
+
+       ssize_t: fix definition on mingw
+       * m4/ssize_t.m4 (gt_TYPE_SSIZE_T): Match rank of size_t.
+
 2012-03-25  Bruno Haible  <address@hidden>

        Tests for module 'localeconv'.
diff --git a/m4/ssize_t.m4 b/m4/ssize_t.m4
index 209d64c..5ea72a1 100644
--- a/m4/ssize_t.m4
+++ b/m4/ssize_t.m4
@@ -1,4 +1,4 @@
-# ssize_t.m4 serial 5 (gettext-0.18.2)
+# ssize_t.m4 serial 6 (gettext-0.18.2)
 dnl Copyright (C) 2001-2003, 2006, 2010-2012 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
@@ -17,7 +17,21 @@ AC_DEFUN([gt_TYPE_SSIZE_T],
             return !x;]])],
        [gt_cv_ssize_t=yes], [gt_cv_ssize_t=no])])
   if test $gt_cv_ssize_t = no; then
-    AC_DEFINE([ssize_t], [int],
-              [Define as a signed type of the same size as size_t.])
+    AC_CACHE_CHECK([for rank of size_t], [gt_cv_size_t_rank],
+      [AC_COMPILE_IFELSE(
+        [AC_LANG_PROGRAM(
+          [[#include <sys/types.h>
+          #ifdef __cplusplus
+          extern "C" {
+          #endif
+            int foo(unsigned long bar);
+            int foo(size_t bar);
+          #ifdef __cplusplus
+          }
+          #endif
+          ]])],
+       [gt_cv_size_t_rank=long], [gt_cv_size_t_rank=int])])
+    AC_DEFINE_UNQUOTED([ssize_t], [$gt_cv_size_t_rank],
+              [Define as a signed type of the same size and rank as size_t.])
   fi
 ])
-- 
1.7.7.6




reply via email to

[Prev in Thread] Current Thread [Next in Thread]