X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=flower%2Finclude%2Flibc-extension.hh;h=3ee0fe426c09e6532dc27aced27900b02399fde9;hb=d3dbe7293fc45f37ca5248639c999032311eb9fa;hp=56a7e7c13e217464c2d0618eedbc92c8b1b85b81;hpb=07d4d05df6479d58c3c5152c07d7c86b94ee98b4;p=lilypond.git diff --git a/flower/include/libc-extension.hh b/flower/include/libc-extension.hh index 56a7e7c13e..3ee0fe426c 100644 --- a/flower/include/libc-extension.hh +++ b/flower/include/libc-extension.hh @@ -3,37 +3,118 @@ source file of the flowerlib - (c) 1997--1999 Han-Wen Nienhuys + (c) 1997--2005 Han-Wen Nienhuys */ - #ifndef LIBC_EXTENSION_HH #define LIBC_EXTENSION_HH -#include "fproto.hh" -#include "config.h" -#include +#include #include -char* strnlwr (char* start_l ,int n); -char* strnupr (char* start_l, int n); +#include "config.hh" + +char *strnlwr (char *start, int n); +char *strnupr (char *start, int n); -#if !HAVE_MEMMEM // GNU extension. -Byte *memmem (Byte const * haystack, int haystack_len, - Byte const *needle, int needle_len); -#endif HAVE_MEMMEM +#if ! HAVE_MEMMEM /* GNU extension. */ +void *memmem (void const *haystack, int haystack_len, + void const *needle, int needle_len); +#endif /* HAVE_MEMMEM */ -#if !HAVE_SNPRINTF // GNU extension. +#if ! HAVE_SNPRINTF /* GNU extension. */ int snprintf (char *str, size_t n, char const *format, ...); #endif -#if !HAVE_VSNPRINTF // GNU extension. +#if ! HAVE_VSNPRINTF /* GNU extension. */ int vsnprintf (char *str, size_t, char const *format, va_list args); #endif +#ifndef isinf +#if ! HAVE_ISINF /* BSD extension. */ +int isinf (double x); +#endif +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#if ! HAVE_FOPENCOOKIE /* GNU extension. */ + +#include +#include + +#if (! defined (__off64_t) && ! defined (__off64_t_defined)) || ! defined (__cplusplus) +#define off64_t unsigned long long +#endif + +#if HAVE_LIBIO_H +#include +#else + +#if 1 //! HAVE_FUNOPEN + +#define cookie_io_functions_t le_cookie_io_functions_t + typedef struct + { + ssize_t (*read) (void *, char *, size_t); + ssize_t (*write) (void *, char const *, size_t); + int (*seek) (void *, off64_t *, int); + int (*close) (void *); + } cookie_io_functions_t; + +#else + + typedef struct + { + int (*read) (void *, char *, int); + int (*write) (void *, char const *, int); + fpos_t (*seek) (void *, fpos_t, int); + int (*close) (void *); + } cookie_io_functions_t; + +#endif /* ! HAVE_FUNOPEN */ +#endif /* ! HAVE_LIBIO_H */ + + FILE *fopencookie (void *cookie, char const *modes, + cookie_io_functions_t io_funcs); + +#if ! HAVE_FUNOPEN + + int handle_cookie_io_fclose (FILE *); + int handle_cookie_io_fprintf (FILE *file, char const *format, ...); + int handle_cookie_io_putc (int c, FILE *file); + + /* FIXME: ttftool uses fclose fopencookie fprintf and putc only. if + ALIAS_FILE_TO_FILECOOKIE, blondly redefine those functions + to wrappers that check for and handle Memory_out_stream. */ +#ifdef ALIAS_FILE_TO_FILECOOKIE + +#define fclose handle_cookie_io_fclose +#define fprintf handle_cookie_io_fprintf +#ifdef putc +#define std_putc putc +#undef putc +#endif +#define putc handle_cookie_io_putc + +#endif /* ALIAS_FILE_TO_FILECOOKIE */ +#endif /* ! HAVE_FUNOPEN */ +#endif /* ! HAVE_FOPENCOOKIE */ + +#ifdef __cplusplus +} /* extern "C" */ +#endif -Byte *memrchr (Byte const * p, int n, char c); -Byte *strrev (Byte* byte_l, int length_i); +#if ! HAVE_MEMRCHR +unsigned char *memrchr (unsigned char const *p, int n, char c); +#endif + +#if ! HAVE_MEMREV +unsigned char *memrev (unsigned char *byte, int length_i); +#endif +double my_round (double); -#endif // LIBC_EXTENSION_HH +#endif /* LIBC_EXTENSION_HH */