file 4.22 build fails on Solaris 9 due to strtof()

Christos Zoulas christos at zoulas.com
Thu Dec 27 22:52:03 EET 2007


On Dec 27,  1:27pm, Zube at CS.ColoState.EDU (Zube) wrote:
-- Subject: file 4.22 build fails on Solaris 9 due to strtof()

| On Solaris 9 sparc fully patched, building with gcc 3.4.6:
| 
| gmake[2]: Entering directory `/stat/src/file/file-4.22/src'
| /bin/bash ../libtool --tag=CC   --mode=link gcc  -O2   -o file file.o libmagic.la -lz 
| gcc -O2 -o .libs/file file.o  ./.libs/libmagic.so -lz -R/usr/local/lib
| Undefined                       first referenced
|  symbol                             in file
| strtof                              ./.libs/libmagic.so
| ld: fatal: Symbol referencing errors. No output written to .libs/file
| collect2: ld returned 1 exit status
| 
| strtof() seems to have crept into apprentice.c (it wasn't in file 4.21),
| but I don't think Solaris 9 has it.

Here's a patch:

Index: config.h.in
===================================================================
RCS file: /p/file/cvsroot/file/config.h.in,v
retrieving revision 1.27
diff -u -u -r1.27 config.h.in
--- config.h.in	2 Dec 2007 00:28:10 -0000	1.27
+++ config.h.in	27 Dec 2007 20:50:57 -0000
@@ -72,6 +72,9 @@
 /* Define to 1 if you have the `strndup' function. */
 #undef HAVE_STRNDUP
 
+/* Define to 1 if you have the `strtof' function. */
+#undef HAVE_STRTOF
+
 /* Define to 1 if you have the `strtoul' function. */
 #undef HAVE_STRTOUL
 
Index: configure
===================================================================
RCS file: /p/file/cvsroot/file/configure,v
retrieving revision 1.71
diff -u -u -r1.71 configure
--- configure	27 Dec 2007 16:41:00 -0000	1.71
+++ configure	27 Dec 2007 20:50:57 -0000
@@ -23398,7 +23398,8 @@
 
 
 
-for ac_func in mmap strerror strndup strtoul mbrtowc mkstemp getopt_long utimes utime wcwidth snprintf vsnprintf
+
+for ac_func in mmap strerror strndup strtoul mbrtowc mkstemp getopt_long utimes utime wcwidth snprintf vsnprintf strtof
 do
 as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
 { echo "$as_me:$LINENO: checking for $ac_func" >&5
Index: configure.in
===================================================================
RCS file: /p/file/cvsroot/file/configure.in,v
retrieving revision 1.67
diff -u -u -r1.67 configure.in
--- configure.in	27 Dec 2007 16:41:00 -0000	1.67
+++ configure.in	27 Dec 2007 20:50:57 -0000
@@ -127,7 +127,7 @@
 AC_CHECK_SIZEOF_STDC_HEADERS(uint64_t, 0)
 
 dnl Checks for functions
-AC_CHECK_FUNCS(mmap strerror strndup strtoul mbrtowc mkstemp getopt_long utimes utime wcwidth snprintf vsnprintf)
+AC_CHECK_FUNCS(mmap strerror strndup strtoul mbrtowc mkstemp getopt_long utimes utime wcwidth snprintf vsnprintf strtof)
 
 dnl Checks for libraries
 AC_CHECK_LIB(z,gzopen)
Index: src/apprentice.c
===================================================================
RCS file: /p/file/cvsroot/file/src/apprentice.c,v
retrieving revision 1.108
diff -u -u -r1.108 apprentice.c
--- src/apprentice.c	27 Dec 2007 16:35:58 -0000	1.108
+++ src/apprentice.c	27 Dec 2007 20:50:58 -0000
@@ -1418,7 +1419,11 @@
 	case FILE_LEFLOAT:
 		if (m->reln != 'x') {
 			char *ep;
+#ifdef HAVE_STRTOF
 			m->value.f = strtof(*p, &ep);
+#else
+			m->value.f = (float)strtod(*p, &ep);
+#endif
 			*p = ep;
 		}
 		return 0;



More information about the File mailing list