Fix compiler warning when cuserid is absent and sizeof(int) != sizeof(pointer)
Tim Jenness [Tue, 7 Jul 2009 21:49:11 +0000 (11:49 -1000)]
The attached patch fixes a compilation warning from POSIX.xs when cuserid
is missing and ints and pointers have different size. eg on Mac OSX when
using 64-bit mode.

gcc-4.2 -c   -fno-common -DPERL_DARWIN -no-cpp-precomp -arch x86_64 -DDEBUGGING -fno-strict-aliasing -pipe -fstack-protector
-I/usr/local/include -I/opt/local/include -O3 -g   -DVERSION=\"1.17\"
-DXS_VERSION=\"1.17\"  "-I../.."   POSIX.c
POSIX.c: In function 'XS_POSIX_cuserid':
POSIX.c:4096: warning: cast to pointer from integer of different size
Running Mkbootstrap for POSIX ()
chmod 644 POSIX.bs
rm -f ../../lib/auto/POSIX/POSIX.bundle

Also relevant for 5.10.1.

Signed-off-by: H.Merijn Brand <h.m.brand@xs4all.nl>

ext/POSIX/POSIX.xs

index b500158..6de3588 100644 (file)
@@ -241,16 +241,12 @@ typedef struct termios* POSIX__Termios;
 #endif
 
 /* Possibly needed prototypes */
-char *cuserid (char *);
 #ifndef WIN32
 double strtod (const char *, char **);
 long strtol (const char *, char **, int);
 unsigned long strtoul (const char *, char **, int);
 #endif
 
-#ifndef HAS_CUSERID
-#define cuserid(a) (char *) not_here("cuserid")
-#endif
 #ifndef HAS_DIFFTIME
 #ifndef difftime
 #define difftime(a,b) not_here("difftime")
@@ -1839,6 +1835,15 @@ ctermid(s = 0)
 char *
 cuserid(s = 0)
        char *          s = 0;
+    CODE:
+#ifdef HAS_CUSERID
+  RETVAL = cuserid(s);
+#else
+  RETVAL = 0;
+  not_here("cuserid");
+#endif
+    OUTPUT:
+  RETVAL
 
 SysRetLong
 fpathconf(fd, name)