Mercurial > hg > octave-kai > gnulib-hg
changeset 14610:b427a1938336
use _GL_ATTRIBUTE_CONST and _GL_ATTRIBUTE_PURE
author | Jim Meyering <meyering@redhat.com> |
---|---|
date | Sun, 24 Apr 2011 19:02:10 +0200 |
parents | 97b99ef6c731 |
children | 268395c9bfdf |
files | lib/argmatch.c lib/argv-iter.c lib/base64.c lib/basename-lgpl.c lib/c-ctype.c lib/c-strncasecmp.c lib/chdir-long.c lib/exclude.c lib/file-type.c lib/filenamecat-lgpl.c lib/filevercmp.c lib/freadahead.c lib/fts.c lib/hash-pjw.c lib/hash-triple.c lib/hash.c lib/i-ring.c lib/isnan.c lib/memcasecmp.c lib/memchr2.c lib/memcmp2.c lib/parse-datetime.y lib/propername.c lib/quotearg.c lib/sockets.c lib/strnlen1.c lib/uniwidth/width.c |
diffstat | 27 files changed, 252 insertions(+), 36 deletions(-) [+] |
line wrap: on
line diff
--- a/lib/argmatch.c +++ b/lib/argmatch.c @@ -57,6 +57,14 @@ ARGMATCH_DIE_DECL; #endif +/* The attribute __pure__ was added in gcc 2.96. */ +#undef _GL_ATTRIBUTE_PURE +#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96) +# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__)) +#else +# define _GL_ATTRIBUTE_PURE /* empty */ +#endif + static void __argmatch_die (void) { @@ -79,7 +87,7 @@ "no", "nope" -> 1 "y" is a valid argument, for `0', and "n" for `1'. */ -ptrdiff_t +ptrdiff_t _GL_ATTRIBUTE_PURE argmatch (const char *arg, const char *const *arglist, const char *vallist, size_t valsize) {
--- a/lib/argv-iter.c +++ b/lib/argv-iter.c @@ -22,6 +22,14 @@ #include <stdlib.h> #include <string.h> +/* The attribute __pure__ was added in gcc 2.96. */ +#undef _GL_ATTRIBUTE_PURE +#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96) +# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__)) +#else +# define _GL_ATTRIBUTE_PURE /* empty */ +#endif + struct argv_iterator { /* Test FP to determine whether in read-mode or argv-mode. */ @@ -96,7 +104,7 @@ } } -size_t +size_t _GL_ATTRIBUTE_PURE argv_iter_n_args (struct argv_iterator const *ai) { return ai->fp ? ai->item_idx : ai->p - ai->arg_list;
--- a/lib/base64.c +++ b/lib/base64.c @@ -53,6 +53,14 @@ #include <string.h> +/* The attribute __const__ was added in gcc 2.95. */ +#undef _GL_ATTRIBUTE_CONST +#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95) +# define _GL_ATTRIBUTE_CONST __attribute__ ((__const__)) +#else +# define _GL_ATTRIBUTE_CONST /* empty */ +#endif + /* C89 compliant way to cast 'char' to 'unsigned char'. */ static inline unsigned char to_uchar (char ch) @@ -295,7 +303,7 @@ /* Return true if CH is a character from the Base64 alphabet, and false otherwise. Note that '=' is padding and not considered to be part of the alphabet. */ -bool +bool _GL_ATTRIBUTE_CONST isbase64 (char ch) { return uchar_in_range (to_uchar (ch)) && 0 <= b64[to_uchar (ch)];
--- a/lib/basename-lgpl.c +++ b/lib/basename-lgpl.c @@ -22,11 +22,19 @@ #include <string.h> +/* The attribute __pure__ was added in gcc 2.96. */ +#undef _GL_ATTRIBUTE_PURE +#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96) +# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__)) +#else +# define _GL_ATTRIBUTE_PURE /* empty */ +#endif + /* Return the address of the last file name component of NAME. If NAME has no relative file name components because it is a file system root, return the empty string. */ -char * +char * _GL_ATTRIBUTE_PURE last_component (char const *name) { char const *base = name + FILE_SYSTEM_PREFIX_LEN (name);
--- a/lib/c-ctype.c +++ b/lib/c-ctype.c @@ -22,9 +22,17 @@ #define NO_C_CTYPE_MACROS #include "c-ctype.h" +/* The attribute __const__ was added in gcc 2.95. */ +#undef _GL_ATTRIBUTE_CONST +#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95) +# define _GL_ATTRIBUTE_CONST __attribute__ ((__const__)) +#else +# define _GL_ATTRIBUTE_CONST /* empty */ +#endif + /* The function isascii is not locale dependent. Its use in EBCDIC is questionable. */ -bool +bool _GL_ATTRIBUTE_CONST c_isascii (int c) { return (c >= 0x00 && c <= 0x7f);
--- a/lib/c-strncasecmp.c +++ b/lib/c-strncasecmp.c @@ -24,7 +24,15 @@ #include "c-ctype.h" -int +/* The attribute __pure__ was added in gcc 2.96. */ +#undef _GL_ATTRIBUTE_PURE +#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96) +# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__)) +#else +# define _GL_ATTRIBUTE_PURE /* empty */ +#endif + +int _GL_ATTRIBUTE_PURE c_strncasecmp (const char *s1, const char *s2, size_t n) { register const unsigned char *p1 = (const unsigned char *) s1;
--- a/lib/chdir-long.c +++ b/lib/chdir-long.c @@ -32,6 +32,14 @@ # error "compile this file only if your system defines PATH_MAX" #endif +/* The attribute __pure__ was added in gcc 2.96. */ +#undef _GL_ATTRIBUTE_PURE +#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96) +# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__)) +#else +# define _GL_ATTRIBUTE_PURE /* empty */ +#endif + /* The results of openat() in this file are not leaked to any single-threaded code that could use stdio. FIXME - if the kernel ever adds support for multi-thread safety for @@ -83,7 +91,7 @@ } /* Return a pointer to the first non-slash in S. */ -static inline char * +static inline char * _GL_ATTRIBUTE_PURE find_non_slash (char const *s) { size_t n_slash = strspn (s, "/");
--- a/lib/exclude.c +++ b/lib/exclude.c @@ -60,6 +60,14 @@ | FNM_CASEFOLD | FNM_EXTMATCH)) == 0); +/* The attribute __pure__ was added in gcc 2.96. */ +#undef _GL_ATTRIBUTE_PURE +#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96) +# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__)) +#else +# define _GL_ATTRIBUTE_PURE /* empty */ +#endif + /* Exclusion patterns are grouped into a singly-linked list of "exclusion segments". Each segment represents a set of patterns @@ -111,7 +119,7 @@ }; /* Return true if str has wildcard characters */ -bool +bool _GL_ATTRIBUTE_PURE fnmatch_pattern_has_wildcards (const char *str, int options) { const char *cset = "\\?*[]";
--- a/lib/file-type.c +++ b/lib/file-type.c @@ -25,7 +25,15 @@ #include <gettext.h> #define _(text) gettext (text) -char const * +/* The attribute __pure__ was added in gcc 2.96. */ +#undef _GL_ATTRIBUTE_PURE +#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96) +# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__)) +#else +# define _GL_ATTRIBUTE_PURE /* empty */ +#endif + +char const * _GL_ATTRIBUTE_PURE file_type (struct stat const *st) { /* See POSIX 1003.1-2001 XCU Table 4-8 lines 17093-17107 for some of
--- a/lib/filenamecat-lgpl.c +++ b/lib/filenamecat-lgpl.c @@ -31,10 +31,18 @@ # define mempcpy(D, S, N) ((void *) ((char *) memcpy (D, S, N) + (N))) #endif +/* The attribute __pure__ was added in gcc 2.96. */ +#undef _GL_ATTRIBUTE_PURE +#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96) +# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__)) +#else +# define _GL_ATTRIBUTE_PURE /* empty */ +#endif + /* Return the longest suffix of F that is a relative file name. If it has no such suffix, return the empty string. */ -static char const * +static char const * _GL_ATTRIBUTE_PURE longest_relative_suffix (char const *f) { for (f += FILE_SYSTEM_PREFIX_LEN (f); ISSLASH (*f); f++)
--- a/lib/filevercmp.c +++ b/lib/filevercmp.c @@ -26,6 +26,14 @@ #include <c-ctype.h> #include <limits.h> +/* The attribute __pure__ was added in gcc 2.96. */ +#undef _GL_ATTRIBUTE_PURE +#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96) +# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__)) +#else +# define _GL_ATTRIBUTE_PURE /* empty */ +#endif + /* Match a file suffix defined by this regular expression: /(\.[A-Za-z~][A-Za-z0-9~]*)*$/ Scan the string *STR and return a pointer to the matching suffix, or @@ -80,7 +88,7 @@ section on the `Version' control field. This version of the code implements that from s5.6.12 of Debian Policy v3.8.0.1 http://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Version */ -static int +static int _GL_ATTRIBUTE_PURE verrevcmp (const char *s1, size_t s1_len, const char *s2, size_t s2_len) { size_t s1_pos = 0;
--- a/lib/freadahead.c +++ b/lib/freadahead.c @@ -22,7 +22,15 @@ #include <stdlib.h> #include "stdio-impl.h" -size_t +/* The attribute __pure__ was added in gcc 2.96. */ +#undef _GL_ATTRIBUTE_PURE +#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96) +# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__)) +#else +# define _GL_ATTRIBUTE_PURE /* empty */ +#endif + +size_t _GL_ATTRIBUTE_PURE freadahead (FILE *fp) { #if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */
--- a/lib/fts.c +++ b/lib/fts.c @@ -261,6 +261,14 @@ } \ while (false) +/* The attribute __pure__ was added in gcc 2.96. */ +#undef _GL_ATTRIBUTE_PURE +#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96) +# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__)) +#else +# define _GL_ATTRIBUTE_PURE /* empty */ +#endif + static void fd_ring_clear (I_ring *fd_ring) { @@ -1906,7 +1914,7 @@ } static size_t -internal_function +internal_function _GL_ATTRIBUTE_PURE fts_maxarglen (char * const *argv) { size_t len, max;
--- a/lib/hash-pjw.c +++ b/lib/hash-pjw.c @@ -23,11 +23,19 @@ #define SIZE_BITS (sizeof (size_t) * CHAR_BIT) +/* The attribute __pure__ was added in gcc 2.96. */ +#undef _GL_ATTRIBUTE_PURE +#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96) +# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__)) +#else +# define _GL_ATTRIBUTE_PURE /* empty */ +#endif + /* A hash function for NUL-terminated char* strings using the method described by Bruno Haible. See http://www.haible.de/bruno/hashfunc.html. */ -size_t +size_t _GL_ATTRIBUTE_PURE hash_pjw (const void *x, size_t tablesize) { const char *s;
--- a/lib/hash-triple.c +++ b/lib/hash-triple.c @@ -29,6 +29,14 @@ #define STREQ(a, b) (strcmp (a, b) == 0) +/* The attribute __pure__ was added in gcc 2.96. */ +#undef _GL_ATTRIBUTE_PURE +#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96) +# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__)) +#else +# define _GL_ATTRIBUTE_PURE /* empty */ +#endif + /* Hash an F_triple, and *do* consider the file name. */ size_t triple_hash (void const *x, size_t table_size) @@ -41,7 +49,7 @@ } /* Hash an F_triple, without considering the file name. */ -size_t +size_t _GL_ATTRIBUTE_PURE triple_hash_no_name (void const *x, size_t table_size) { struct F_triple const *p = x;
--- a/lib/hash.c +++ b/lib/hash.c @@ -43,6 +43,14 @@ # endif #endif +/* The attribute __const__ was added in gcc 2.95. */ +#undef _GL_ATTRIBUTE_CONST +#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95) +# define _GL_ATTRIBUTE_CONST __attribute__ ((__const__)) +#else +# define _GL_ATTRIBUTE_CONST /* empty */ +#endif + struct hash_entry { void *data; @@ -146,7 +154,7 @@ number of buckets (used plus unused), or the maximum number of slots, are the same quantity. */ -size_t +size_t _GL_ATTRIBUTE_PURE hash_get_n_buckets (const Hash_table *table) { return table->n_buckets; @@ -154,7 +162,7 @@ /* Return the number of slots in use (non-empty buckets). */ -size_t +size_t _GL_ATTRIBUTE_PURE hash_get_n_buckets_used (const Hash_table *table) { return table->n_buckets_used; @@ -162,7 +170,7 @@ /* Return the number of active entries. */ -size_t +size_t _GL_ATTRIBUTE_PURE hash_get_n_entries (const Hash_table *table) { return table->n_entries; @@ -170,7 +178,7 @@ /* Return the length of the longest chain (bucket). */ -size_t +size_t _GL_ATTRIBUTE_PURE hash_get_max_bucket_length (const Hash_table *table) { struct hash_entry const *bucket; @@ -197,7 +205,7 @@ /* Do a mild validation of a hash table, by traversing it and checking two statistics. */ -bool +bool _GL_ATTRIBUTE_PURE hash_table_ok (const Hash_table *table) { struct hash_entry const *bucket; @@ -284,7 +292,7 @@ /* Return the first data in the table, or NULL if the table is empty. */ -void * +void * _GL_ATTRIBUTE_PURE hash_get_first (const Hash_table *table) { struct hash_entry const *bucket; @@ -401,7 +409,7 @@ algorithms tend to be domain-specific, so what's good for [diffutils'] io.c may not be good for your application." */ -size_t +size_t _GL_ATTRIBUTE_PURE hash_string (const char *string, size_t n_buckets) { # define HASH_ONE_CHAR(Value, Byte) \ @@ -440,7 +448,7 @@ /* Return true if CANDIDATE is a prime number. CANDIDATE should be an odd number at least equal to 11. */ -static bool +static bool _GL_ATTRIBUTE_CONST is_prime (size_t candidate) { size_t divisor = 3; @@ -459,7 +467,7 @@ /* Round a given CANDIDATE number up to the nearest prime, and return that prime. Primes lower than 10 are merely skipped. */ -static size_t +static size_t _GL_ATTRIBUTE_CONST next_prime (size_t candidate) { /* Skip small primes. */ @@ -540,7 +548,7 @@ TUNING, or return 0 if there is no possible way to allocate that many entries. */ -static size_t +static size_t _GL_ATTRIBUTE_PURE compute_bucket_size (size_t candidate, const Hash_tuning *tuning) { if (!tuning->is_n_buckets)
--- a/lib/i-ring.c +++ b/lib/i-ring.c @@ -21,6 +21,14 @@ #include <stdlib.h> +/* The attribute __pure__ was added in gcc 2.96. */ +#undef _GL_ATTRIBUTE_PURE +#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96) +# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__)) +#else +# define _GL_ATTRIBUTE_PURE /* empty */ +#endif + void i_ring_init (I_ring *ir, int default_val) { @@ -33,7 +41,7 @@ ir->ir_default_val = default_val; } -bool +bool _GL_ATTRIBUTE_PURE i_ring_empty (I_ring const *ir) { return ir->ir_empty;
--- a/lib/isnan.c +++ b/lib/isnan.c @@ -79,7 +79,15 @@ ((sizeof (DOUBLE) + sizeof (unsigned int) - 1) / sizeof (unsigned int)) typedef union { DOUBLE value; unsigned int word[NWORDS]; } memory_double; -int +/* The attribute __const__ was added in gcc 2.95. */ +#undef _GL_ATTRIBUTE_CONST +#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95) +# define _GL_ATTRIBUTE_CONST __attribute__ ((__const__)) +#else +# define _GL_ATTRIBUTE_CONST /* empty */ +#endif + +int _GL_ATTRIBUTE_CONST FUNC (DOUBLE x) { #ifdef KNOWN_EXPBIT0_LOCATION
--- a/lib/memcasecmp.c +++ b/lib/memcasecmp.c @@ -24,11 +24,19 @@ #include <ctype.h> #include <limits.h> +/* The attribute __pure__ was added in gcc 2.96. */ +#undef _GL_ATTRIBUTE_PURE +#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96) +# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__)) +#else +# define _GL_ATTRIBUTE_PURE /* empty */ +#endif + /* Like memcmp, but ignore differences in case. Convert to upper case (not lower) before comparing so that join -i works with sort -f. */ -int +int _GL_ATTRIBUTE_PURE memcasecmp (const void *vs1, const void *vs2, size_t n) { size_t i;
--- a/lib/memchr2.c +++ b/lib/memchr2.c @@ -29,10 +29,18 @@ #include <stdint.h> #include <string.h> +/* The attribute __pure__ was added in gcc 2.96. */ +#undef _GL_ATTRIBUTE_PURE +#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96) +# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__)) +#else +# define _GL_ATTRIBUTE_PURE /* empty */ +#endif + /* Return the first address of either C1 or C2 (treated as unsigned char) that occurs within N bytes of the memory region S. If neither byte appears, return NULL. */ -void * +void * _GL_ATTRIBUTE_PURE memchr2 (void const *s, int c1_in, int c2_in, size_t n) { /* On 32-bit hardware, choosing longword to be a 32-bit unsigned
--- a/lib/memcmp2.c +++ b/lib/memcmp2.c @@ -21,7 +21,15 @@ #include <string.h> -int +/* The attribute __pure__ was added in gcc 2.96. */ +#undef _GL_ATTRIBUTE_PURE +#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96) +# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__)) +#else +# define _GL_ATTRIBUTE_PURE /* empty */ +#endif + +int _GL_ATTRIBUTE_PURE memcmp2 (const char *s1, size_t n1, const char *s2, size_t n2) { int cmp = memcmp (s1, s2, n1 <= n2 ? n1 : n2);
--- a/lib/parse-datetime.y +++ b/lib/parse-datetime.y @@ -113,6 +113,14 @@ typedef time_t long_time_t; #endif +/* The attribute __pure__ was added in gcc 2.96. */ +#undef _GL_ATTRIBUTE_PURE +#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96) +# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__)) +#else +# define _GL_ATTRIBUTE_PURE /* empty */ +#endif + /* Lots of this code assumes time_t and time_t-like values fit into long_time_t. */ verify (TYPE_MINIMUM (long_time_t) <= TYPE_MINIMUM (time_t) @@ -868,7 +876,7 @@ return year; } -static table const * +static table const * _GL_ATTRIBUTE_PURE lookup_zone (parser_control const *pc, char const *name) { table const *tp;
--- a/lib/propername.c +++ b/lib/propername.c @@ -38,6 +38,14 @@ #include "xalloc.h" #include "gettext.h" +/* The attribute __const__ was added in gcc 2.95. */ +#undef _GL_ATTRIBUTE_CONST +#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95) +# define _GL_ATTRIBUTE_CONST __attribute__ ((__const__)) +#else +# define _GL_ATTRIBUTE_CONST /* empty */ +#endif + /* Tests whether STRING contains trim (SUB), starting and ending at word boundaries. @@ -148,7 +156,7 @@ /* Return the localization of NAME. NAME is written in ASCII. */ -const char * +const char * _GL_ATTRIBUTE_CONST proper_name (const char *name) { /* See whether there is a translation. */
--- a/lib/quotearg.c +++ b/lib/quotearg.c @@ -42,6 +42,14 @@ #define INT_BITS (sizeof (int) * CHAR_BIT) +/* The attribute __pure__ was added in gcc 2.96. */ +#undef _GL_ATTRIBUTE_PURE +#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96) +# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__)) +#else +# define _GL_ATTRIBUTE_PURE /* empty */ +#endif + struct quoting_options { /* Basic quoting style. */ @@ -105,7 +113,7 @@ } /* Get the value of O's quoting style. If O is null, use the default. */ -enum quoting_style +enum quoting_style _GL_ATTRIBUTE_PURE get_quoting_style (struct quoting_options *o) { return (o ? o : &default_quoting_options)->style;
--- a/lib/sockets.c +++ b/lib/sockets.c @@ -22,6 +22,14 @@ /* Specification. */ #include "sockets.h" +/* The attribute __const__ was added in gcc 2.95. */ +#undef _GL_ATTRIBUTE_CONST +#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95) +# define _GL_ATTRIBUTE_CONST __attribute__ ((__const__)) +#else +# define _GL_ATTRIBUTE_CONST /* empty */ +#endif + #if WINDOWS_SOCKETS /* This includes winsock2.h on MinGW. */ @@ -103,7 +111,7 @@ #endif /* WINDOWS_SOCKETS */ -int +int _GL_ATTRIBUTE_CONST gl_sockets_startup (int version _GL_UNUSED) { #if WINDOWS_SOCKETS
--- a/lib/strnlen1.c +++ b/lib/strnlen1.c @@ -21,10 +21,18 @@ #include <string.h> +/* The attribute __pure__ was added in gcc 2.96. */ +#undef _GL_ATTRIBUTE_PURE +#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96) +# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__)) +#else +# define _GL_ATTRIBUTE_PURE /* empty */ +#endif + /* Find the length of STRING + 1, but scan at most MAXLEN bytes. If no '\0' terminator is found in that many characters, return MAXLEN. */ /* This is the same as strnlen (string, maxlen - 1) + 1. */ -size_t +size_t _GL_ATTRIBUTE_PURE strnlen1 (const char *string, size_t maxlen) { const char *end = (const char *) memchr (string, '\0', maxlen);
--- a/lib/uniwidth/width.c +++ b/lib/uniwidth/width.c @@ -22,6 +22,14 @@ #include "cjk.h" +/* The attribute __pure__ was added in gcc 2.96. */ +#undef _GL_ATTRIBUTE_PURE +#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96) +# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__)) +#else +# define _GL_ATTRIBUTE_PURE /* empty */ +#endif + /* * Non-spacing attribute table. * Consists of: @@ -311,7 +319,7 @@ }; /* Determine number of column positions required for UC. */ -int +int _GL_ATTRIBUTE_PURE uc_width (ucs4_t uc, const char *encoding) { /* Test for non-spacing or control character. */