diff options
-rw-r--r-- | ChangeLog | 15 | ||||
-rw-r--r-- | posix/regex.c | 39 | ||||
-rw-r--r-- | sysdeps/alpha/fpu/bits/mathinline.h | 8 | ||||
-rw-r--r-- | sysdeps/gnu/netinet/tcp.h | 22 |
4 files changed, 58 insertions, 26 deletions
diff --git a/ChangeLog b/ChangeLog index 0d9b836378..efcb817c8a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,18 @@ +2001-02-07 Ulrich Drepper <drepper@redhat.com> + + * sysdeps/gnu/netinet/tcp.h: Correct values of TCP_ macros. + Patch by Pekka.Pietikainen@cern.ch. + + * posix/regex.c: Correct several problems with 64-bit architectures + introduced in the MBS changes. + Patch by Isamu Hasegawa <isamu@yamato.ibm.com>. + +2001-02-07 Jakub Jelinek <jakub@redhat.com> + + * math/tgmath.h: Only add l suffixes if __NO_LONG_DOUBLE_MATH is + not defined. + * sysdeps/alpha/fpu/bits/mathinline.h: Honour __NO_MATH_INLINES. + 2001-02-07 Andreas Jaeger <aj@suse.de> * manual/install.texi (Tools for Compilation): Fix typo. diff --git a/posix/regex.c b/posix/regex.c index a6e6507542..ec25642e31 100644 --- a/posix/regex.c +++ b/posix/regex.c @@ -62,6 +62,7 @@ # define US_CHAR_TYPE wchar_t/* unsigned character type */ # define COMPILED_BUFFER_VAR wc_buffer # define OFFSET_ADDRESS_SIZE 1 /* the size which STORE_NUMBER macro use */ +# define CHAR_CLASS_SIZE (sizeof(wctype_t)/sizeof(CHAR_TYPE)+1) # define PUT_CHAR(c) \ do { \ if (MC_CUR_MAX == 1) \ @@ -2643,6 +2644,7 @@ regex_compile (pattern, size, syntax, bufp) charset[5] = p (= length of chars) charset[6] = char_class (wctype_t) + charset[6+CHAR_CLASS_SIZE] = char_class (wctype_t) ... charset[l+5] = char_class (wctype_t) @@ -2817,15 +2819,16 @@ regex_compile (pattern, size, syntax, bufp) if (p == pend) FREE_STACK_RETURN (REG_EBRACK); /* Allocate the space for character class. */ - GET_BUFFER_SPACE(1); + GET_BUFFER_SPACE(CHAR_CLASS_SIZE); /* Update the pointer to indicate end of buffer. */ - b++; + b += CHAR_CLASS_SIZE; /* Move data which follow character classes not to violate the data. */ - insert_space(1, laststart+6, b-1); + insert_space(CHAR_CLASS_SIZE, laststart + 6, b - 1); /* Store the character class. */ - laststart[6] = (CHAR_TYPE) wt; - laststart[1]++; /* Update length of char_classes */ + *((wctype_t*)(laststart + 6)) = wt; + /* Update length of char_classes */ + laststart[1] += CHAR_CLASS_SIZE; had_char_class = true; } @@ -2991,7 +2994,7 @@ regex_compile (pattern, size, syntax, bufp) /* Adjust for the alignment. */ idx = (idx + 3) & ~4; - str[0] = (wchar_t) &extra[idx + 4]; + str[0] = (wchar_t) idx + 4; } else if (symb_table[2 * elem] == 0 && c1 == 1) { @@ -4356,7 +4359,8 @@ group_in_compile_stack (compile_stack, regnum) } #ifdef MBS_SUPPORT -/* This insert space into the pattern. */ +/* This insert space, which size is "num", into the pattern at "loc". + "end" must point the end of the allocated buffer. */ static void insert_space (num, loc, end) int num; @@ -4397,13 +4401,15 @@ compile_range (range_start_char, p_ptr, pend, translate, syntax, b, { const char *collseq = (const char *) _NL_CURRENT(LC_COLLATE, _NL_COLLATE_COLLSEQWC); + const unsigned char *extra = (const unsigned char *) + _NL_CURRENT (LC_COLLATE, _NL_COLLATE_SYMB_EXTRAMB); if (range_start_char < -1) { /* range_start is a collating symbol. */ int32_t *wextra; /* Retreive the index and get collation sequence value. */ - wextra = (int32_t*)char_set[-range_start_char]; + wextra = (int32_t*)(extra + char_set[-range_start_char]); start_val = wextra[1 + *wextra]; } else @@ -5993,19 +5999,26 @@ re_match_2_internal (bufp, string1, size1, string2, size2, pos, regs, stop) 2*ranges_length + chars_length; /* match with char_class? */ - for (i = 0; i < char_class_length ; i++) - if (iswctype((wint_t)c, (wctype_t)(*workp++))) - goto char_set_matched; + for (i = 0; i < char_class_length ; i += CHAR_CLASS_SIZE) + { + wctype_t wctype = *((wctype_t*)workp); + workp += CHAR_CLASS_SIZE; + if (iswctype((wint_t)c, wctype)) + goto char_set_matched; + } /* match with collating_symbol? */ # ifdef _LIBC if (nrules != 0) { + const unsigned char *extra = (const unsigned char *) + _NL_CURRENT (LC_COLLATE, _NL_COLLATE_SYMB_EXTRAMB); + for (workp2 = workp + coll_symbol_length ; workp < workp2 ; workp++) { int32_t *wextra; - wextra = (int32_t*) *workp++; + wextra = (int32_t*)(extra + *workp++); for (i = 0; i < *wextra; ++i) if (TRANSLATE(d[i]) != wextra[1 + i]) break; @@ -6125,7 +6138,7 @@ re_match_2_internal (bufp, string1, size1, string2, size2, pos, regs, stop) /* Update d, however d will be incremented at char_set_matched:, we decrement d here. */ - d = backup_d + (wint_t)cp - (wint_t)str_buf - 1; + d = backup_d + ((wchar_t*)cp - (wchar_t*)str_buf - 1); if (d >= dend) { if (dend == end_match_2) diff --git a/sysdeps/alpha/fpu/bits/mathinline.h b/sysdeps/alpha/fpu/bits/mathinline.h index 065009c626..b7d5c3c95e 100644 --- a/sysdeps/alpha/fpu/bits/mathinline.h +++ b/sysdeps/alpha/fpu/bits/mathinline.h @@ -1,5 +1,5 @@ /* Inline math functions for Alpha. - Copyright (C) 1996, 1997, 1999, 2000 Free Software Foundation, Inc. + Copyright (C) 1996, 1997, 1999, 2000, 2001 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by David Mosberger-Tang. @@ -58,6 +58,8 @@ !isunordered(__x, __y) && __x != __y; })) #endif /* ISO C99 */ +#if !defined __NO_MATH_INLINES && defined __OPTIMIZE__ + #define __inline_copysign(NAME, TYPE) \ __MATH_INLINE TYPE \ NAME (TYPE __x, TYPE __y) __THROW \ @@ -174,4 +176,6 @@ __MATH_INLINE double fdim (double __x, double __y) __THROW return __x < __y ? 0.0 : __x - __y; } -#endif +#endif /* C99 */ + +#endif /* __NO_MATH_INLINES */ diff --git a/sysdeps/gnu/netinet/tcp.h b/sysdeps/gnu/netinet/tcp.h index cafb6b1880..076e332c18 100644 --- a/sysdeps/gnu/netinet/tcp.h +++ b/sysdeps/gnu/netinet/tcp.h @@ -37,17 +37,17 @@ /* * User-settable options (used with setsockopt). */ -#define TCP_NODELAY 0x01 /* Don't delay send to coalesce packets */ -#define TCP_MAXSEG 0x02 /* Set maximum segment size */ -#define TCP_CORK 0x03 /* Control sending of partial frames */ -#define TCP_KEEPIDLE 0x04 /* Start keeplives after this period */ -#define TCP_KEEPINTVL 0x05 /* Interval between keepalives */ -#define TCP_KEEPCNT 0x06 /* Number of keepalives before death */ -#define TCP_SYNCNT 0x07 /* Number of SYN retransmits */ -#define TCP_LINGER2 0x08 /* Life time of orphaned FIN-WAIT-2 state */ -#define TCP_DEFER_ACCEPT 0x09 /* Wake up listener only when data arrive */ -#define TCP_WINDOW_CLAMP 0x10 /* Bound advertised window */ -#define TCP_INFO 0x11 /* Information about this connection. */ +#define TCP_NODELAY 1 /* Don't delay send to coalesce packets */ +#define TCP_MAXSEG 2 /* Set maximum segment size */ +#define TCP_CORK 3 /* Control sending of partial frames */ +#define TCP_KEEPIDLE 4 /* Start keeplives after this period */ +#define TCP_KEEPINTVL 5 /* Interval between keepalives */ +#define TCP_KEEPCNT 6 /* Number of keepalives before death */ +#define TCP_SYNCNT 7 /* Number of SYN retransmits */ +#define TCP_LINGER2 8 /* Life time of orphaned FIN-WAIT-2 state */ +#define TCP_DEFER_ACCEPT 9 /* Wake up listener only when data arrive */ +#define TCP_WINDOW_CLAMP 10 /* Bound advertised window */ +#define TCP_INFO 11 /* Information about this connection. */ #ifdef __USE_MISC # include <sys/types.h> |