From 978970473bf5517ef449997c31b13f76fc242c73 Mon Sep 17 00:00:00 2001 From: Toon Moene Date: Mon, 26 Feb 2001 21:23:41 +0100 Subject: [PATCH] configure.in: Test for ftruncate. 2001-02-26 Toon Moene * libI77/configure.in: Test for ftruncate. * libI77/configure: Rebuilt. * libI77/endfile.c: Use fflush/ftruncate when available. From-SVN: r40072 --- libf2c/ChangeLog | 6 ++++ libf2c/libI77/configure | 71 +++++++++++++++++++++++++++++++++----- libf2c/libI77/configure.in | 1 + libf2c/libI77/endfile.c | 17 +++++++-- 4 files changed, 85 insertions(+), 10 deletions(-) diff --git a/libf2c/ChangeLog b/libf2c/ChangeLog index 4e86bfcfb42..5206fa8b7c1 100644 --- a/libf2c/ChangeLog +++ b/libf2c/ChangeLog @@ -1,3 +1,9 @@ +2001-02-26 Toon Moene + + * libI77/configure.in: Test for ftruncate. + * libI77/configure: Rebuilt. + * libI77/endfile.c: Use fflush/ftruncate when available. + 2001-02-19 Joseph S. Myers * libF77/Version.c, libI77/Version.c, libU77/Version.c: Update G77 diff --git a/libf2c/libI77/configure b/libf2c/libI77/configure index 82d0e6c3d1f..231fbb4c04b 100755 --- a/libf2c/libI77/configure +++ b/libf2c/libI77/configure @@ -1132,7 +1132,7 @@ else int main() { /* Ultrix mips cc rejects this. */ -typedef int charset[2]; const charset x; +typedef int charset[2]; const charset x = {0,0}; /* SunOS 4.1.1 cc rejects this. */ char const *const *ccp; char **p; @@ -1295,7 +1295,7 @@ else echo "$ac_t""no" 1>&6 fi -for ac_func in mkstemp +for ac_func in ftruncate do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 echo "configure:1302: checking for $ac_func" >&5 @@ -1350,7 +1350,7 @@ else fi done -for ac_func in tempnam +for ac_func in mkstemp do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 echo "configure:1357: checking for $ac_func" >&5 @@ -1405,25 +1405,80 @@ else fi done +for ac_func in tempnam +do +echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 +echo "configure:1412: 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 < +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func(); + +int main() { + +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +$ac_func(); +#endif + +; return 0; } +EOF +if { (eval echo configure:1440: \"$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 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_func_$ac_func=no" +fi +rm -f conftest* +fi + +if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` + cat >> confdefs.h <&6 +fi +done + # posix will guarantee the right behaviour for sprintf, else we can't be # sure; HEADER_STDC wouldn't be the right check in sunos4, for instance. # However, on my sunos4/gcc setup unistd.h leads us wrongly to believe # we're posix-conformant, so always do the test. echo $ac_n "checking for ansi/posix sprintf result""... $ac_c" 1>&6 -echo "configure:1415: checking for ansi/posix sprintf result" >&5 +echo "configure:1470: checking for ansi/posix sprintf result" >&5 if test "$cross_compiling" = yes; then g77_cv_sys_sprintf_ansi=no else cat > conftest.$ac_ext < /* does sprintf return the number of chars transferred? */ main () {char foo[2]; (sprintf(foo, "1") == 1) ? exit(0) : exit(1);} EOF -if { (eval echo configure:1427: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:1482: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then g77_cv_sys_sprintf_ansi=yes else @@ -1454,9 +1509,9 @@ fi # define NON_ANSI_RW_MODES on unix (can't hurt) echo $ac_n "checking NON_ANSI_RW_MODES""... $ac_c" 1>&6 -echo "configure:1458: checking NON_ANSI_RW_MODES" >&5 +echo "configure:1513: checking NON_ANSI_RW_MODES" >&5 cat > conftest.$ac_ext < + #ifdef KR_headers extern char *strcpy(); extern FILE *tmpfile(); @@ -38,6 +40,7 @@ integer f_end(alist *a) return(b->useek ? t_runc(a) : 0); } +#ifndef HAVE_FTRUNCATE static int #ifdef KR_headers copy(from, len, to) FILE *from, *to; register long len; @@ -56,6 +59,7 @@ copy(FILE *from, register long len, FILE *to) } return 0; } +#endif /* !defined(HAVE_FTRUNCATE) */ int #ifdef KR_headers @@ -66,8 +70,11 @@ t_runc(alist *a) { long loc, len; unit *b; - FILE *bf, *tf; - int rc = 0; + int rc; + FILE *bf; +#ifndef HAVE_FTRUNCATE + FILE *tf; +#endif /* !defined(HAVE_FTRUNCATE) */ b = &f__units[a->aunit]; if(b->url) @@ -77,6 +84,8 @@ t_runc(alist *a) len=ftell(bf); if (loc >= len || b->useek == 0 || b->ufnm == NULL) return(0); +#ifndef HAVE_FTRUNCATE + rc = 0; fclose(b->ufd); if (!loc) { if (!(bf = fopen(b->ufnm, f__w_mode[b->ufmt]))) @@ -118,6 +127,10 @@ done1: fclose(tf); done: f__cf = b->ufd = bf; +#else /* !defined(HAVE_FTRUNCATE) */ + fflush(b->ufd); + rc = ftruncate(fileno(b->ufd),loc); +#endif /* !defined(HAVE_FTRUNCATE) */ if (rc) err(a->aerr,111,"endfile"); return 0;