X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=flower%2Flibc-extension.cc;h=c10eca00af775afeb1a419cd75a98c61cab8c247;hb=41e85688668202631c6a53876af05385f018e2ac;hp=494850a455d595e9bf863e381a6121679217f7c3;hpb=8aad615ea7bb31f49a0c2afc21eea5ff5de20437;p=lilypond.git diff --git a/flower/libc-extension.cc b/flower/libc-extension.cc index 494850a455..c10eca00af 100644 --- a/flower/libc-extension.cc +++ b/flower/libc-extension.cc @@ -4,40 +4,57 @@ source file of the flowerlib - (c) 1997--1999 Han-Wen Nienhuys + (c) 1997--2003 Han-Wen Nienhuys Jan Nieuwenhuizen */ +#include + #include #include #include #include "libc-extension.hh" -/* - urg: why soo wierd? - */ char* -strnlwr (char* start_l ,int n) +strnlwr (char* start ,int n) { - char * p = start_l + n; - while (--p >= start_l) + char * p = start + n; + while (--p >= start) { *p = tolower (*p); /* a macro on some compilers */ } - return start_l; + return start; } char* -strnupr (char* start_l, int n) +strnupr (char* start, int n) { - char * p = start_l + n; - while (--p >= start_l) + char * p = start + n; + while (--p >= start) { *p = toupper (*p); /* a macro on some compilers */ } - return start_l; + return start; +} + +/* + There are some strange problems with round() on early glibcs. + */ +double +my_round (double x) +{ + return floor (x -0.5)+ 1.0 ; } +#ifndef isinf +#if !HAVE_ISINF +int +isinf (double x) +{ + return x && ( x == x/ 2) ; +} +#endif +#endif #if !HAVE_MEMMEM @@ -48,7 +65,7 @@ strnupr (char* start_l, int n) Manual v1.15, but it is with /usr/include/string.h */ Byte * -memmem (Byte const *haystack, int haystack_len, +_memmem (Byte const *haystack, int haystack_len, Byte const *needle,int needle_len) { Byte const * end_haystack = haystack + haystack_len - needle_len + 1; @@ -58,13 +75,13 @@ memmem (Byte const *haystack, int haystack_len, is the spice of life */ while (haystack < end_haystack) { - Byte const *subneedle_l = needle; - Byte const *subhaystack_l = haystack; - while (subneedle_l < end_needle) - if (*subneedle_l++ != *subhaystack_l++) + Byte const *subneedle = needle; + Byte const *subhaystack = haystack; + while (subneedle < end_needle) + if (*subneedle++ != *subhaystack++) goto next; - // completed the needle. Gotcha. + /* Completed the needle. Gotcha. */ return (Byte *) haystack; next: haystack++; @@ -72,6 +89,15 @@ memmem (Byte const *haystack, int haystack_len, return 0; } +void * +memmem (void const *haystack, int haystack_len, + void const *needle,int needle_len) +{ + Byte const* haystack_byte_c = (Byte const*)haystack; + Byte const* needle_byte_c = (Byte const*)needle; + return _memmem (haystack_byte_c, haystack_len, needle_byte_c, needle_len); +} + #endif Byte * @@ -97,18 +123,18 @@ my_swap (T &t1, T &t2, T &tmp) } Byte* -strrev (Byte* byte_l, int length_i) +strrev (Byte* byte, int length_i) { Byte tmp_byte; - Byte* left_l = byte_l; - Byte* right_l = byte_l + length_i; + Byte* left = byte; + Byte* right = byte + length_i; - while (right_l > left_l) + while (right > left) { - my_swap (*right_l-- , *left_l++ , tmp_byte); + my_swap (*right-- , *left++ , tmp_byte); } - return byte_l; + return byte; } #if ! HAVE_SNPRINTF @@ -131,4 +157,3 @@ vsnprintf (char *str, size_t, char const *format, va_list args) return i; } #endif -