Improve the OpenSolaris port: support for FILE structures, and a few
additional defines to activate libc features.
This commit is contained in:
parent
3d3b3008e7
commit
55339f7d8a
28
configure.ac
28
configure.ac
@ -92,33 +92,45 @@ AC_DEFINE_UNQUOTED(RECV_T, $ac_v_recv_t, [Define to the recv() return type])
|
||||
AC_MSG_CHECKING([for _IO_read_ptr and _IO_read_end in FILE (glibc-style)])
|
||||
AC_TRY_COMPILE([#include <stdio.h>],
|
||||
[FILE *fp; fp->_IO_read_ptr++; fp->_IO_read_end++],
|
||||
[ac_cv_have_file_io_read_ptr=yes],
|
||||
[ac_cv_have_file_io_read_ptr=no])
|
||||
AC_MSG_RESULT($ac_cv_have_file_io_read_ptr)
|
||||
if test "$ac_cv_have_file_io_read_ptr" != "no"; then
|
||||
[ac_cv_have_glibc_file=yes],
|
||||
[ac_cv_have_glibc_file=no])
|
||||
AC_MSG_RESULT($ac_cv_have_glibc_file)
|
||||
if test "$ac_cv_have_glibc_file" != "no"; then
|
||||
AC_DEFINE(HAVE_GLIBC_FILE, 1, [Define to 1 if FILE has glibc-style members])
|
||||
fi
|
||||
|
||||
AC_MSG_CHECKING([for _bf._base, _r and _p in FILE (FreeBSD-style)])
|
||||
AC_TRY_COMPILE([#include <stdio.h>],
|
||||
[FILE *fp; fp->_bf._base++; fp->_r++; fp->_p++],
|
||||
[ac_cv_have_file_bf_base=yes],
|
||||
[ac_cv_have_file_bf_base=no])
|
||||
AC_MSG_RESULT($ac_cv_have_file_bf_base)
|
||||
if test "$ac_cv_have_file_bf_base" != "no"; then
|
||||
[ac_cv_have_freebsd_file=yes],
|
||||
[ac_cv_have_freebsd_file=no])
|
||||
AC_MSG_RESULT($ac_cv_have_freebsd_file)
|
||||
if test "$ac_cv_have_freebsd_file" != "no"; then
|
||||
AC_DEFINE(HAVE_FREEBSD_FILE, 1, [Define to 1 if FILE has FreeBSD-style members])
|
||||
fi
|
||||
|
||||
AC_MSG_CHECKING([for _base, _cnt and _ptr in FILE (Solaris-style)])
|
||||
AC_TRY_COMPILE([#include <stdio.h>],
|
||||
[FILE *fp; fp->_base++; fp->_cnt++; fp->_ptr++],
|
||||
[ac_cv_have_solaris_file=yes],
|
||||
[ac_cv_have_solaris_file=no])
|
||||
AC_MSG_RESULT($ac_cv_have_solaris_file)
|
||||
if test "$ac_cv_have_solaris_file" != "no"; then
|
||||
AC_DEFINE(HAVE_SOLARIS_FILE, 1, [Define to 1 if FILE has Solaris-style members])
|
||||
fi
|
||||
|
||||
dnl On HP-UX, fpos64_t == int64_t, but on Linux it's a compound object.
|
||||
AC_MSG_CHECKING(how to access fpos64_t x)
|
||||
ac_v_fpos64_t="unknown"
|
||||
AC_TRY_COMPILE(
|
||||
[#define _LARGEFILE64_SOURCE
|
||||
#define _LARGEFILE_SOURCE
|
||||
#include <stdio.h>],
|
||||
[fpos64_t x; long long int y = x.__pos;],
|
||||
[ac_v_fpos64_t="(x).__pos"])
|
||||
AC_TRY_COMPILE(
|
||||
[#define _LARGEFILE64_SOURCE
|
||||
#define _LARGEFILE_SOURCE
|
||||
#include <stdio.h>],
|
||||
[fpos64_t x; long long int y = (long long int)x;],
|
||||
[ac_v_fpos64_t="(x)"])
|
||||
|
||||
@ -82,6 +82,7 @@
|
||||
/* #undef HAVE_SIG_T */
|
||||
#define HAVE_SOCKET 1
|
||||
/* #undef HAVE_SOCKLEN_T */
|
||||
/* #undef HAVE_SOLARIS_FILE */
|
||||
#define HAVE_STDINT_H 1
|
||||
#define HAVE_STDLIB_H 1
|
||||
#define HAVE_STRINGS_H 1
|
||||
|
||||
@ -24,6 +24,8 @@
|
||||
#define _GNU_SOURCE
|
||||
/* Use this to get lseek64() on glibc systems */
|
||||
#define _LARGEFILE64_SOURCE
|
||||
/* Use this to get off64_t() on Solaris systems */
|
||||
#define _LARGEFILE_SOURCE
|
||||
/* Use this to get proper prototypes on HP-UX systems */
|
||||
#define _XOPEN_SOURCE_EXTENDED
|
||||
#define _INCLUDE_POSIX_SOURCE
|
||||
|
||||
@ -20,6 +20,8 @@
|
||||
#define _GNU_SOURCE
|
||||
/* Needed for struct sigaction on HP-UX */
|
||||
#define _INCLUDE_POSIX_SOURCE
|
||||
/* Needed for struct sigaction on OpenSolaris */
|
||||
#define __EXTENSIONS__
|
||||
|
||||
#if defined HAVE_STDINT_H
|
||||
# include <stdint.h>
|
||||
|
||||
@ -170,6 +170,8 @@ static inline uint8_t *get_stream_ptr(FILE *stream)
|
||||
return (uint8_t *)stream->_IO_read_ptr;
|
||||
#elif defined HAVE_FREEBSD_FILE
|
||||
return (uint8_t *)stream->_p;
|
||||
#elif defined HAVE_SOLARIS_FILE
|
||||
return (uint8_t *)stream->_ptr;
|
||||
#else
|
||||
(void)stream;
|
||||
return NULL;
|
||||
@ -183,6 +185,8 @@ static inline int get_stream_off(FILE *stream)
|
||||
- (uint8_t *)stream->_IO_read_base);
|
||||
#elif defined HAVE_FREEBSD_FILE
|
||||
return (int)((uint8_t *)stream->_p - (uint8_t *)stream->_bf._base);
|
||||
#elif defined HAVE_SOLARIS_FILE
|
||||
return (int)((uint8_t *)stream->_ptr - (uint8_t *)stream->_base);
|
||||
#else
|
||||
(void)stream;
|
||||
return 0;
|
||||
@ -196,6 +200,8 @@ static inline int get_stream_cnt(FILE *stream)
|
||||
- (uint8_t *)stream->_IO_read_ptr);
|
||||
#elif defined HAVE_FREEBSD_FILE
|
||||
return stream->_r;
|
||||
#elif defined HAVE_SOLARIS_FILE
|
||||
return stream->_cnt;
|
||||
#else
|
||||
(void)stream;
|
||||
return 0;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user