]> git.donarmstrong.com Git - lilypond.git/blob - flower/include/libc-extension.hh
* flower/libc-extension.cc:
[lilypond.git] / flower / include / libc-extension.hh
1 /*
2   libc-extension.hh -- declare some string.h extensions
3
4   source file of the flowerlib
5
6   (c) 1997--2005 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7 */
8
9 #ifndef LIBC_EXTENSION_HH
10 #define LIBC_EXTENSION_HH
11
12 #include <stddef.h>
13 #include <stdarg.h>
14
15 #include "config.hh"
16
17 char *strnlwr (char *start, int n);
18 char *strnupr (char *start, int n);
19
20 #if ! HAVE_MEMMEM               /* GNU extension. */
21 void *memmem (void const* haystack, int haystack_len,
22               void const *needle, int needle_len);
23 #endif /* HAVE_MEMMEM */
24
25 #if ! HAVE_SNPRINTF             /* GNU extension. */
26 int snprintf (char *str, size_t n, char const *format, ...);
27 #endif
28
29 #if ! HAVE_VSNPRINTF            /* GNU extension. */
30 int vsnprintf (char *str, size_t, char const *format, va_list args);
31 #endif
32
33 #ifndef isinf
34 #if ! HAVE_ISINF                /* BSD extension. */
35 int isinf (double x);
36 #endif
37 #endif
38
39 #ifdef __cplusplus
40 extern "C" {
41 #endif
42
43 #if ! HAVE_FOPENCOOKIE          /* GNU extension. */
44
45 #include <stdio.h>
46 #include <unistd.h>
47
48 #if (! defined (__off64_t) && ! defined (__off64_t_defined)) || ! defined (__cplusplus)
49 #define off64_t unsigned long long
50 #endif
51
52 #if HAVE_LIBIO_H
53 #include <libio.h>
54 #else
55
56 #if ! HAVE_FUNOPEN
57
58 #define cookie_io_functions_t le_cookie_io_functions_t 
59   typedef struct
60   {
61     ssize_t (*read) (void *, char *, size_t);
62     ssize_t (*write) (void *, char const *, size_t);
63     int (*seek) (void *, off64_t *, int);
64     int (*close) (void *);
65   } cookie_io_functions_t;
66
67 #else
68
69   typedef struct
70   {
71     int (*read) (void *, char *, int);
72     int (*write) (void *, char const *, int);
73     fpos_t (*seek) (void *, fpos_t, int);
74     int (*close) (void *);
75   } cookie_io_functions_t;
76
77 #endif /* ! HAVE_FUNOPEN */
78 #endif /* ! HAVE_LIBIO_H */
79
80   FILE *fopencookie (void *cookie, char const *modes,
81                      cookie_io_functions_t io_funcs);
82
83 #if ! HAVE_FUNOPEN
84
85   int handle_cookie_io_fclose (FILE *);
86   int handle_cookie_io_fprintf (FILE *file, char const *format, ...);
87   int handle_cookie_io_putc (int c, FILE *file);
88
89 /* FIXME: ttftool uses fclose fopencookie fprintf and putc only.  if
90           ALIAS_FILE_TO_FILECOOKIE, blondly redefine those functions
91           to wrappers that check for and handle Memory_out_stream.  */
92 #ifdef ALIAS_FILE_TO_FILECOOKIE
93
94 #define fclose handle_cookie_io_fclose
95 #define fprintf handle_cookie_io_fprintf
96 #ifdef putc
97 #define std_putc putc
98 #undef putc
99 #endif
100 #define putc handle_cookie_io_putc
101
102 #endif /* ALIAS_FILE_TO_FILECOOKIE */
103 #endif /* ! HAVE_FUNOPEN */
104 #endif /* ! HAVE_FOPENCOOKIE */
105
106 #ifdef __cplusplus
107 } /* extern "C" */
108 #endif
109
110 unsigned char *memrchr (unsigned char const *p, int n, char c);
111 unsigned char *strrev (unsigned char *byte, int length_i);
112
113 double my_round (double);
114
115 #endif /* LIBC_EXTENSION_HH */