From 4668d54f0b418b204990ab9025e01b4b1fb77950 Mon Sep 17 00:00:00 2001 From: Bruce Momjian Date: Thu, 24 Oct 2002 03:11:05 +0000 Subject: [PATCH] Add fseeko for NetBSD. --- configure | 5 +++-- configure.in | 7 ++++--- src/include/c.h | 4 ++-- src/port/fseeko.c | 20 +++++++++++++++----- 4 files changed, 24 insertions(+), 12 deletions(-) diff --git a/configure b/configure index bc31d4d62e..325303a1ba 100755 --- a/configure +++ b/configure @@ -10543,9 +10543,10 @@ done -# BSD/OS has a custom fseeko/ftello built on fsetpos/fgetpos +# BSD/OS & NetBSD use a custom fseeko/ftello built on fsetpos/fgetpos # We override the previous test that said fseeko/ftello didn't exist -case $host_os in bsdi*) +# OS tests are also done in include/c.h and port/fseeko.c +case $host_os in bsdi*|netbsd*) ac_cv_func_fseeko=yes esac diff --git a/configure.in b/configure.in index 266a290ab1..783320a158 100644 --- a/configure.in +++ b/configure.in @@ -1,5 +1,5 @@ dnl Process this file with autoconf to produce a configure script. -dnl $Header: /cvsroot/pgsql/configure.in,v 1.215 2002/10/24 03:03:37 momjian Exp $ +dnl $Header: /cvsroot/pgsql/configure.in,v 1.216 2002/10/24 03:11:05 momjian Exp $ dnl dnl Developers, please strive to achieve this order: dnl @@ -837,9 +837,10 @@ fi AC_REPLACE_FUNCS([fseeko gethostname getrusage inet_aton random srandom strcasecmp strdup strerror strtol strtoul]) -# BSD/OS has a custom fseeko/ftello built on fsetpos/fgetpos +# BSD/OS & NetBSD use a custom fseeko/ftello built on fsetpos/fgetpos # We override the previous test that said fseeko/ftello didn't exist -case $host_os in bsdi*) +# OS tests are also done in include/c.h and port/fseeko.c +case $host_os in bsdi*|netbsd*) ac_cv_func_fseeko=yes esac diff --git a/src/include/c.h b/src/include/c.h index ba0fb355d2..0bdc2ab32c 100644 --- a/src/include/c.h +++ b/src/include/c.h @@ -12,7 +12,7 @@ * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $Id: c.h,v 1.129 2002/10/23 23:37:47 momjian Exp $ + * $Id: c.h,v 1.130 2002/10/24 03:11:05 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -639,7 +639,7 @@ typedef NameData *Name; #include #endif -#if defined(bsdi) +#if defined(bsdi) || defined(netbsd) int fseeko(FILE *stream, off_t offset, int whence); off_t ftello(FILE *stream); #endif diff --git a/src/port/fseeko.c b/src/port/fseeko.c index dd4ef32471..ca68e1a272 100644 --- a/src/port/fseeko.c +++ b/src/port/fseeko.c @@ -8,12 +8,12 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/port/fseeko.c,v 1.3 2002/10/23 21:39:27 momjian Exp $ + * $Header: /cvsroot/pgsql/src/port/fseeko.c,v 1.4 2002/10/24 03:11:05 momjian Exp $ * *------------------------------------------------------------------------- */ -#ifdef __bsdi__ +#if defined(bsdi) || defined(netbsd) #include #include @@ -22,11 +22,11 @@ #include /* - * On BSD/OS, off_t and fpos_t are the same. Standards say - * off_t is an arithmetic type, but not necessarily integral, + * On BSD/OS and NetBSD, off_t and fpos_t are the same. Standards + * say off_t is an arithmetic type, but not necessarily integral, * while fpos_t might be neither. * - * This is thread-safe using flockfile/funlockfile. + * This is thread-safe on BSD/OS using flockfile/funlockfile. */ int @@ -38,13 +38,17 @@ fseeko(FILE *stream, off_t offset, int whence) switch (whence) { case SEEK_CUR: +#ifdef bsdi flockfile(stream); +#endif if (fgetpos(stream, &floc) != 0) goto failure; floc += offset; if (fsetpos(stream, &floc) != 0) goto failure; +#ifdef bsdi flockfile(stream); +#endif return 0; break; case SEEK_SET: @@ -53,13 +57,17 @@ fseeko(FILE *stream, off_t offset, int whence) return 0; break; case SEEK_END: +#ifdef bsdi flockfile(stream); +#endif if (fstat(fileno(stream), &filestat) != 0) goto failure; floc = filestat.st_size; if (fsetpos(stream, &floc) != 0) goto failure; +#ifdef bsdi funlockfile(stream); +#endif return 0; break; default: @@ -68,7 +76,9 @@ fseeko(FILE *stream, off_t offset, int whence) } failure: +#ifdef bsdi funlockfile(stream); +#endif return -1; } -- 2.11.0