ref: b1dd3535d5ae8c83fc9b0f74638a4a761e6d8f30
parent: e72c9fec173186df4871617a767c0bf8ddfdde84
author: Werner Lemberg <[email protected]>
date: Mon Jul 31 18:51:00 EDT 2000
Added autoconf tests FT_MUNMAP_DECL and FT_MUNMAP_PARAM to fix some devils. Updating unix/ftsystem.c accordingly. More warning fixes.
--- a/builds/unix/aclocal.m4
+++ b/builds/unix/aclocal.m4
@@ -1,3 +1,31 @@
+## FreeType specific autoconf tests
+
+AC_DEFUN(FT_MUNMAP_DECL,
+[AC_MSG_CHECKING([whether munmap must be declared])
+AC_CACHE_VAL(ft_cv_munmap_decl,
+[AC_TRY_COMPILE([
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+#include <sys/mman.h>],
+[char *(*pfn) = (char *(*))munmap],
+ft_cv_munmap_decl=no,
+ft_cv_munmap_decl=yes)])
+AC_MSG_RESULT($ft_cv_munmap_decl)
+if test $ft_cv_munmap_decl = yes; then
+ AC_DEFINE(NEED_MUNMAP_DECL)
+fi])
+
+AC_DEFUN(FT_MUNMAP_PARAM,
+[AC_MSG_CHECKING([for munmap's first parameter type])
+AC_TRY_COMPILE([
+#include <unistd.h>
+#include <sys/mman.h>
+int munmap(void *, size_t);],,
+ AC_MSG_RESULT([void *]);AC_DEFINE(MUNMAP_USES_VOIDP),
+ AC_MSG_RESULT([char *]))
+])
+
## libtool.m4 - Configure libtool for the target system. -*-Shell-script-*-
## Copyright (C) 1996-1999 Free Software Foundation, Inc.
## Originally by Gordon Matzigkeit <[email protected]>, 1996
--- a/builds/unix/configure
+++ b/builds/unix/configure
@@ -1667,18 +1667,82 @@
FTSYS_SRC='$(BASE_)ftsystem.c'
else
FTSYS_SRC='$(BUILD)/ftsystem.c'
+
+ echo $ac_n "checking whether munmap must be declared""... $ac_c" 1>&6
+echo "configure:1673: checking whether munmap must be declared" >&5
+if eval "test \"`echo '$''{'ft_cv_munmap_decl'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat > conftest.$ac_ext <<EOF
+#line 1678 "configure"
+#include "confdefs.h"
+
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+#include <sys/mman.h>
+int main() {
+char *(*pfn) = (char *(*))munmap
+; return 0; }
+EOF
+if { (eval echo configure:1689: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+ rm -rf conftest*
+ ft_cv_munmap_decl=no
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ ft_cv_munmap_decl=yes
fi
+rm -f conftest*
+fi
+echo "$ac_t""$ft_cv_munmap_decl" 1>&6
+if test $ft_cv_munmap_decl = yes; then
+ cat >> confdefs.h <<\EOF
+#define NEED_MUNMAP_DECL 1
+EOF
+fi
+ echo $ac_n "checking for munmap's first parameter type""... $ac_c" 1>&6
+echo "configure:1709: checking for munmap's first parameter type" >&5
+cat > conftest.$ac_ext <<EOF
+#line 1711 "configure"
+#include "confdefs.h"
+
+#include <unistd.h>
+#include <sys/mman.h>
+int munmap(void *, size_t);
+int main() {
+
+; return 0; }
+EOF
+if { (eval echo configure:1721: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+ rm -rf conftest*
+ echo "$ac_t""void *" 1>&6;cat >> confdefs.h <<\EOF
+#define MUNMAP_USES_VOIDP 1
+EOF
+
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ echo "$ac_t""char *" 1>&6
+fi
+rm -f conftest*
+
+fi
+
+
for ac_func in memcpy memmove
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:1677: checking for $ac_func" >&5
+echo "configure:1741: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1682 "configure"
+#line 1746 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -1701,7 +1765,7 @@
; return 0; }
EOF
-if { (eval echo configure:1705: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1769: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -1798,7 +1862,7 @@
# Extract the first word of "ranlib", so it can be a program name with args.
set dummy ranlib; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1802: checking for $ac_word" >&5
+echo "configure:1866: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1837,7 +1901,7 @@
if test "$ac_cv_prog_gcc" = yes; then
# Check if gcc -print-prog-name=ld gives a path.
echo $ac_n "checking for ld used by GCC""... $ac_c" 1>&6
-echo "configure:1841: checking for ld used by GCC" >&5
+echo "configure:1905: checking for ld used by GCC" >&5
ac_prog=`($CC -print-prog-name=ld) 2>&5`
case "$ac_prog" in
# Accept absolute paths.
@@ -1861,10 +1925,10 @@
esac
elif test "$with_gnu_ld" = yes; then
echo $ac_n "checking for GNU ld""... $ac_c" 1>&6
-echo "configure:1865: checking for GNU ld" >&5
+echo "configure:1929: checking for GNU ld" >&5
else
echo $ac_n "checking for non-GNU ld""... $ac_c" 1>&6
-echo "configure:1868: checking for non-GNU ld" >&5
+echo "configure:1932: checking for non-GNU ld" >&5
fi
if eval "test \"`echo '$''{'ac_cv_path_LD'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -1899,7 +1963,7 @@
fi
test -z "$LD" && { echo "configure: error: no acceptable ld found in \$PATH" 1>&2; exit 1; }
echo $ac_n "checking if the linker ($LD) is GNU ld""... $ac_c" 1>&6
-echo "configure:1903: checking if the linker ($LD) is GNU ld" >&5
+echo "configure:1967: checking if the linker ($LD) is GNU ld" >&5
if eval "test \"`echo '$''{'ac_cv_prog_gnu_ld'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1915,7 +1979,7 @@
echo $ac_n "checking for BSD-compatible nm""... $ac_c" 1>&6
-echo "configure:1919: checking for BSD-compatible nm" >&5
+echo "configure:1983: checking for BSD-compatible nm" >&5
if eval "test \"`echo '$''{'ac_cv_path_NM'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1951,7 +2015,7 @@
echo "$ac_t""$NM" 1>&6
echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6
-echo "configure:1955: checking whether ln -s works" >&5
+echo "configure:2019: checking whether ln -s works" >&5
if eval "test \"`echo '$''{'ac_cv_prog_LN_S'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2000,8 +2064,8 @@
case "$lt_target" in
*-*-irix6*)
# Find out which ABI we are using.
- echo '#line 2004 "configure"' > conftest.$ac_ext
- if { (eval echo configure:2005: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+ echo '#line 2068 "configure"' > conftest.$ac_ext
+ if { (eval echo configure:2069: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
case "`/usr/bin/file conftest.o`" in
*32-bit*)
LD="${LD-ld} -32"
@@ -2022,12 +2086,12 @@
SAVE_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS -belf"
echo $ac_n "checking whether the C compiler needs -belf""... $ac_c" 1>&6
-echo "configure:2026: checking whether the C compiler needs -belf" >&5
+echo "configure:2090: checking whether the C compiler needs -belf" >&5
if eval "test \"`echo '$''{'lt_cv_cc_needs_belf'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2031 "configure"
+#line 2095 "configure"
#include "confdefs.h"
int main() {
@@ -2034,7 +2098,7 @@
; return 0; }
EOF
-if { (eval echo configure:2038: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2102: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
lt_cv_cc_needs_belf=yes
else
--- a/builds/unix/configure.in
+++ b/builds/unix/configure.in
@@ -68,6 +68,9 @@
FTSYS_SRC='$(BASE_)ftsystem.c'
else
FTSYS_SRC='$(BUILD)/ftsystem.c'
+
+ FT_MUNMAP_DECL
+ FT_MUNMAP_PARAM
fi
AC_SUBST(FTSYS_SRC)
--- a/builds/unix/ftsystem.c
+++ b/builds/unix/ftsystem.c
@@ -27,7 +27,7 @@
#include <string.h>
- /* memory-mapping includes and definitions */
+ /* memory-mapping includes and definitions */
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#endif
@@ -37,17 +37,27 @@
#define MAP_FILE 0x00
#endif
- /*************************************************************************/
- /* */
- /* The prototype for munmap() is not provided on SunOS. This needs to */
- /* have a check added later to see if the GNU C library is being used. */
- /* If so, then this prototype is not needed. */
- /* */
-#if defined( __sun__ ) && !defined( SVR4 ) && !defined( __SVR4 )
- extern int munmap( caddr_t addr,
- int len );
+#ifdef MUNMAP_USES_VOIDP
+#define MUNMAP_ARG_CAST void *
+#else
+#define MUNMAP_ARG_CAST char *
#endif
+#ifdef NEED_MUNMAP_DECL
+
+#ifdef __cplusplus
+ extern "C"
+#else
+ extern
+#endif
+ int munmap( char* addr,
+ int len );
+
+#define MUNMAP_ARG_CAST char *
+
+#endif /* NEED_DECLARATION_MUNMAP */
+
+
#include <sys/stat.h>
#ifdef HAVE_FCNTL_H
@@ -182,7 +192,7 @@
static
void ft_close_stream( FT_Stream stream )
{
- munmap ( stream->descriptor.pointer, stream->size );
+ munmap( (MUNMAP_ARG_CAST)stream->descriptor.pointer, stream->size );
stream->descriptor.pointer = NULL;
stream->size = 0;
@@ -235,12 +245,12 @@
stream->size = stat_buf.st_size;
stream->pos = 0;
- stream->base = (unsigned char*)mmap( NULL,
- stream->size,
- PROT_READ,
- MAP_FILE | MAP_PRIVATE,
- file,
- 0 );
+ stream->base = (unsigned char *)mmap( NULL,
+ stream->size,
+ PROT_READ,
+ MAP_FILE | MAP_PRIVATE,
+ file,
+ 0 );
if ( (long)stream->base == -1 )
{
--- a/src/cff/t2gload.c
+++ b/src/cff/t2gload.c
@@ -597,7 +597,6 @@
{
T2_Operator op;
FT_Byte v;
- FT_Byte count;
/********************************************************************/
@@ -841,7 +840,7 @@
goto Syntax_Error;
/* check arguments */
- req_args = count = t2_argument_counts[op];
+ req_args = t2_argument_counts[op];
if ( req_args & T2_COUNT_CHECK_WIDTH )
{
args = stack;
@@ -1534,8 +1533,8 @@
case t2_op_roll:
{
- FT_Int count = (FT_Int)( args[0] >> 16 );
- FT_Int index = (FT_Int)( args[1] >> 16 );
+ FT_Int count = (FT_Int)( args[0] >> 16 );
+ FT_Int index = (FT_Int)( args[1] >> 16 );
FT_TRACE4(( " roll" ));
@@ -1551,8 +1550,8 @@
{
while ( index > 0 )
{
- FT_Fixed tmp = args[count - 1];
- FT_Int i;
+ FT_Fixed tmp = args[count - 1];
+ FT_Int i;
for ( i = count - 2; i >= 0; i-- )
--- a/src/cff/t2load.c
+++ b/src/cff/t2load.c
@@ -126,7 +126,8 @@
else
{
/* skip the data */
- (void)FILE_Skip( data_size );
+ if ( FILE_Skip( data_size ) )
+ goto Exit;
}
}
@@ -609,7 +610,8 @@
}
/* skip the rest of the header */
- (void)FILE_Skip( font->header_size - 4 );
+ if ( FILE_Skip( font->header_size - 4 ) )
+ goto Exit;
/* read the name, top dict, string and global subrs index */
error = t2_new_cff_index( &font->name_index, stream, 0 ) ||
--- a/src/cff/t2parse.c
+++ b/src/cff/t2parse.c
@@ -563,7 +563,6 @@
FT_Byte* qcount = (FT_Byte*)parser->object +
field->count_offset;
- FT_Long val;
FT_Byte** data = parser->stack;
--- a/src/sfnt/ttload.c
+++ b/src/sfnt/ttload.c
@@ -434,7 +434,9 @@
size = *length;
stream = face->root.stream;
- (void)FILE_Read_At( offset, buffer, size );
+ /* the `if' is syntactic sugar for picky compilers */
+ if ( FILE_Read_At( offset, buffer, size ) )
+ ;
Exit:
return error;
@@ -941,7 +943,8 @@
FT_ULong upper;
- (void)READ_Fields( name_record_fields, cur );
+ if ( READ_Fields( name_record_fields, cur ) )
+ break;
upper = (FT_ULong)( cur->stringOffset + cur->stringLength );
if ( upper > storageSize )
--- a/src/sfnt/ttsbit.c
+++ b/src/sfnt/ttsbit.c
@@ -503,13 +503,12 @@
while ( count > 0 )
{
- (void)READ_Fields( strike_start_fields, strike );
+ if ( READ_Fields( strike_start_fields, strike ) ||
+ READ_Fields( sbit_line_metrics_fields, &strike->hori ) ||
+ READ_Fields( sbit_line_metrics_fields, &strike->vert ) ||
+ READ_Fields( strike_end_fields, strike ) )
+ break;
- (void)READ_Fields( sbit_line_metrics_fields, &strike->hori );
- (void)READ_Fields( sbit_line_metrics_fields, &strike->vert );
-
- (void)READ_Fields( strike_end_fields, strike );
-
count--;
strike++;
}
@@ -884,7 +883,8 @@
case 7:
case 9:
/* variable big metrics */
- (void)READ_Fields( sbit_metrics_fields, metrics );
+ if ( READ_Fields( sbit_metrics_fields, metrics ) )
+ goto Exit;
break;
case 5:
--- a/src/type1z/z1load.c
+++ b/src/type1z/z1load.c
@@ -576,13 +576,13 @@
/* count the number of map points */
{
- FT_Byte* p = token->start;
+ FT_Byte* ptr = token->start;
FT_Byte* limit = token->limit;
num_points = 0;
- for ( ; p < limit; p++ )
- if ( p[0] == '[' )
+ for ( ; ptr < limit; ptr++ )
+ if ( ptr[0] == '[' )
num_points++;
}
if ( num_points <= 0 || num_points > T1_MAX_MM_MAP_POINTS )
@@ -1692,7 +1692,7 @@
for ( ; charcode < loader.encoding_table.num_elems; charcode++ )
{
type1->encoding.char_index[charcode] = 0;
- type1->encoding.char_name [charcode] = ".notdef";
+ type1->encoding.char_name [charcode] = (char *)".notdef";
char_name = loader.encoding_table.elements[charcode];
if ( char_name )
--- a/src/winfonts/winfnt.c
+++ b/src/winfonts/winfnt.c
@@ -347,7 +347,6 @@
if ( error )
{
/* this didn't work, now try to load a single FNT font */
- FT_Memory memory = FT_FACE_MEMORY( face );
FNT_Font* font;
if ( ALLOC( face->fonts, sizeof ( *face->fonts ) ) )
@@ -423,17 +422,17 @@
root->family_name = (FT_String*)fonts->fnt_frame +
fonts->header.face_name_offset;
- root->style_name = "Regular";
+ root->style_name = (char *)"Regular";
if ( root->style_flags & FT_STYLE_FLAG_BOLD )
{
if ( root->style_flags & FT_STYLE_FLAG_ITALIC )
- root->style_name = "Bold Italic";
+ root->style_name = (char *)"Bold Italic";
else
- root->style_name = "Bold";
+ root->style_name = (char *)"Bold";
}
else if ( root->style_flags & FT_STYLE_FLAG_ITALIC )
- root->style_name = "Italic";
+ root->style_name = (char *)"Italic";
}
Fail: