X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=lib%2FChangeLog;h=c490d5bf46749738afe6a21e6aba6ef81e4bd694;hb=dddf08d8738ed46c097c018b89385205066c96bf;hp=9cc09cefa402a229645223a53d237078e38167c8;hpb=9df4453b386268b137f71b0e9548f67e03565dd4;p=gnulib.git diff --git a/lib/ChangeLog b/lib/ChangeLog index 9cc09cefa..c490d5bf4 100644 --- a/lib/ChangeLog +++ b/lib/ChangeLog @@ -1,3 +1,1212 @@ +2005-10-04 Bruno Haible + + * verify.h (verify_true): Provide alternative definition for C++. + +2005-10-04 Simon Josefsson + + * getaddrinfo.h: Move sys/types.h include first, reported by "Mark + D. Baushke" . + +2005-10-03 Paul Eggert + + * getdelim.c: Include getdelim.h first. Include . + (SSIZE_MAX): New macro, if not already defined. + (getdelim): Fix buffer overrun on 64-bit hosts with lines longer + than 2 GiB. + +2005-10-02 Paul Eggert + + * exclude.c: Include verify.h. + (verify): Remove. All callers changed to use verify.h's version. + * strtoimax.c: Likewise. + * utimecmp.c: Likewis.e + + Sync from coreutils. + * .cppi-disable: Add getaddrinfo.h, getdelim.h, getline.h, getpass.c + mbchar.h, mbuiter.h, strcase.h, strnlen.h, strnlen1.h. + * .cvsignore: Add fts.h, search.h, t-fpending. + * settime.c (settime): Fix { typo in previous patch. Also, don't + bother returning ENOSYS if settimeofday or stime fails; just let + them return whatever errno they want to return. + * utimens.c: Include unistd.h, for dup2. + (futimens): Fix typo: HAVE_FUTIMESAT was misspelled in an #if. + (futimens) [! HAVE_FUTIMESAT]: If !file, set errno before returning -1. + +2005-10-02 Jim Meyering + + Sync from coreutils. + * fts-cycle.c [HAVE_CONFIG_H]: Include . + * openat-die.c: Use `#ifdef HAVE_CONFIG_H', not `#if HAVE_CONFIG_H'. + * openat.c (fdopendir): Do not define if HAVE_FDOPENDIR. + Remove AT_FDCWD test. + Do not consume the fd unless successful. + * openat.h (fdopendir): Do not define if HAVE_FDOPENDIR. + * settime.c (settime): Move the HAVE_STIME block `up' into an #elif + block, so that we don't even try to compile it if settimeofday is + available. This works around a compilation failure on OSF1 V5.1, + due to stime requiring a `long int*' while tv_sec is `int'. + +2005-09-30 Eric Blake (tiny change) + + * getdelim.c (getdelim): Remove unused variables. + +2005-10-01 Simon Josefsson + + * getaddrinfo.h: Protect #include's of sys/socket.h and netdb.h. + Only define struct addrinfo if !HAVE_STRUCT_ADDRINFO. Protect + AI_* and EAI_* definitions. Protect function declarations. + +2005-09-29 Paul Eggert + + * xtime.h (XTIME_PRECISION): Now of type int, not long long int, + so that the code works even with ancient cpp. Portability problem + with GCC 2.7.2.1 reported by Thomas M.Ott. + +2005-09-27 Jim Meyering + + * getcwd.c: Change #ifdefHAVE_CONFIG_H to #ifdef HAVE_CONFIG_H. + + * intprops.h (signed_type_or_expr__): Define. + (INT_STRLEN_BOUND) [__GNUC__]: Use a slightly tighter bound + for unsigned types. + +2005-09-26 Paul Eggert + + * verify.h (verify_expr): Remove, replacing with: + (verify_true): New macro that returns true instead of void. + (verify_type__): Remove. + (verify): Use verify_true rather than verify_type__. + +2005-09-24 Paul Eggert + + * utimens.c (ENOSYS): Define if not already defined. + (futimens): Support having a null PATH if the file descriptor + is nonnegative. + + * regex_internal.h (__GNUC_PREREQ, always_inline, inline, pure): + Remove. + (__attribute): Define to empty unless GCC 3.1 or later. + This works around a core dump on OpenBSD 3.4, which has GCC + 2.95.3, which dumps core when given __attribute__(()). It also + simplifies other tests, since we really don't want to bother with + worrying about which ancient version of GCC supported what. + Original problem reported by Yoann Vandoorselaere, with part of + the fix suggested by Derek Price. + +2005-09-24 Jim Meyering + + * verify.h (verify_type__): Use `unsigned int' as the bitfield type + so we can once again use a positive bitfield width of 1 -- now we + don't have to explain why we were using a bitfield width of 2. + +2005-09-23 Paul Eggert + + * getaddrinfo.c [HAVE_NETINET_IN_H]: Include . + Problem reported by Eric Blake. + (getaddrinfo): Initialize se so that it's not garbage. + Redo internal storage allocation so that it doesn't make unportable + assumptions about alignment. + Fix a memory leak. + + * utimens.c (futimens): Use futimesat if available. + Prefer it to futimes since it doesn't have the futimes bug. + + * verify.h (GL_CONCAT0, GL_CONCAT): Remove. + (verify): Don't use the __LINE__ trick, as it doesn't work in general. + Instead, declare a function that returns a pointer to an array, + and use verify_type__ to declare the size of the array. + Problem and germ of a solution reported by Bruno Haible. + (verify_type__): Use 2, not 1, for bitfield size, to avoid + a warning with Irix 6.5 cc. Problem reported by Bruno Haible. + +2005-09-22 Paul Eggert + + Sync from coreutils. + + * .cppi-disable: Add regcomp.c, regex_internal.c, regex_internal.h, + stat-time.h. + * argmatch.h: Include verify.h + (ARGMATCH_VERIFY): Use verify rather than rolling our own. + (ARGMATCH_ASSERT): Remove; unused. + * canonicalize.c: Assume STDC_HEADERS. + * exclude.c: Include "strcase.h". + * regex_internal.h [!defined _LIBC]: Likewise. + * getusershell.c: Include stdio--.h rather than stdio.h + and stdio-safer.h. + (getusershell): Call fopen, not fopen_safer. + * save-cwd.c: Include fcntl--.h rather than fcntl.h. + Do not include unistd-safer.h. + (save_cwd): Don't call fd_safer; no longer needed + now that we include fcntl--.h. + + * getdate.y (relative_time): New type. + (RELATIVE_TIME_0): New constant. + (parser_control): Use relative_time instead of doing it ourselves. + (%union): Add new relative_time rel member. + (tYEAR_UNIT, tMONTH_UNIT, tHOUR_UNIT, tMINUTE_UNIT, tSEC_UNIT): + Now typeless. + (relunit, relunit_snumber): Now of type rel. + (zone, rel, relunit, get_date): Adjust to above changes. + + * getloadavg.c: Include fcntl--.h rather than fcntl.h. + Do not include unistd-safer.h. + (getloadavg): Don't call fd_safer; no longer needed + now that we include fcntl--.h. + + * mkdir-p.c (ENOSYS): Define to EEXIST if not defined. + (make_dir_parents): Treat ENOSYS like EEXIST. + + Improve quality of diagnostics on restore_cwd failure. + * mkdir-p.h (make_dir): Remove. All uses replaced by mkdir. + (make_dir_parents): Last arg is now int * (for errno), not bool *. + * mkdir-p.c (make_dir, make_dir_parents): Likewise. + Rewrite "mkdir -p" algorithm to avoid the need for "stat" + each time through the loop. Do not diagnose restore_cwd failure; + that is the caller's job (and perhaps the caller does not care). + + * mkdir-p.c (CLEANUP_CWD, CLEANUP): Remove. + (make_dir_parents): Revamp to avoid need for CLEANUP_CWD, CLEANUP. + If the file already exists but is not a directory, don't bother + to try to make its parents. + Close potential file descriptor leak if we can't chdir("/") (!). + Don't always return true if chdir($PWD) fails; return true only + if the requested action was done successfully (except for the + chdir($PWD)). + Don't log final directory unless we actually made it. + Refactor to avoid duplicate code to fix up permissions. + Don't attempt to fix up parent permissions if chdir($PWD) fails. + + * strftime.c (my_strftime): Rewrite the previous change slightly, + to make it a bit faster and (I hope) clearer. + * strftime.c (my_strftime): Add support for %:z, %::z, %:::z. + Fix bug in formats like %2N. + + * verify.h: New file. + +2005-09-22 Jim Meyering + + Sync from coreutils. + + * backupfile.c: Use ARGMATCH_VERIFY, just in case. + + * posixtm.c (posixtime) [lint]: Initialize *all* of tm0, not just + the .tm_year member, since otherwise gcc-4.0 would now warn about + tm_zone, tm_gmtoff, tm_isdst, tm_yday, tm_wday. + + * quotearg.c (quotearg_n_options): Change code to be suboptimal, in + order to avoid an unsuppressible warning from gcc on 64-bit systems. + + * getdate.y (get_date): Undo part of the 2005-04-04 change, so that + the command "date -d'2005-03-27 +1 day'" succeeds once again, even + when run in a time zone for which daylight savings time is in effect + for the starting date. + + * mkdir-p.c (make_dir_parents): Don't let a failed chdir($PWD) + stop us from restricting permissions of just-created absolute-named + directories. + * mkdir-p.c (CLEANUP_CWD): Return *true*, not false when failing + to restore initial working directory. + * mkdir-p.c (make_dir_parents): New parameter: different_working_dir, + to tell caller if/when we change the working directory and are + unable to return to the initial one. + * mkdir-p.h (make_dir_parents): Update prototype. + * mkdir-p.c (CLEANUP_CWD): Change one more `return 1' to + `return false'. This fixes a bug introduced on 2004-07-30. + + * openat.c (fdopendir): Be sure to close the supplied + file descriptor before returning. This makes our replacement + implementation a little closer to Solaris's, where fdopendir + ties the file descriptor to the returned DIR* pointer. + * openat.c (unlinkat): New function. + * openat.h (unlinkat): Add prototype. + * openat-die.c (openat_save_fail): Rename from openat_save_die. + (openat_restore_fail): Rename from openat_restore_die. + * openat.c, openat.h: Reflect s/_die/_fail/ renaming. + + Provide an alternative to exiting immediately upon save_cwd or + restore_cwd failure. Now, an application can arrange e.g., + to perform a longjump in that case. + * openat.c: Include dirname.h. + Use IS_ABSOLUTE_FILE_NAME rather than testing for leading slash. + (rpl_openat, fdopendir, fstatat): Call openat_save_die + and openat_restore_die rather than calling error directly. + Don't include "error.h" or "exitfail.h"; they're no longer needed. + + * openat-die.c (openat_save_die, openat_restore_die): New file. + * openat.h (openat_save_die, openat_restore_die): Declare and define. + + * strftime.c [FPRINTFTIME] (fprintftime): Provide a new interface: + size_t fprintftime (FILE *fp, char const *fmt, struct tm const *tm, + int utc, int nanoseconds); + Background: + date should not have to allocate a megabyte of virtual memory to + handle a format argument like +%1048575T. When implemented with + strftime, it must allocate such a buffer, use strftime to fill it + in, print it, then free it. + With fprintftime, it simply prints everything and exits. + With no need for memory allocation, that's one fewer way to fail. + * strftime.c (my_strftime): Parse the colons of %:::z *after* the + optional field width, not before, so we accept %9:z, not %:9z. + (my_strftime): Be sure to use L_('x') for literals. + + * backupfile.c, canon-host.c, canonicalize.c, chown.c, cloexec.c: + * dup-safer.c, dup2.c, euidaccess.c, fd-safer.c, fileblocks.c: + * fopen-safer.c, fsusage.c, ftruncate.c, getcwd.c, getcwd.h: + * getloadavg.c, getopt_.h, getpagesize.h, getugroups.c, group-member.c: + * human.h, idcache.c, mkdir-p.c, mountlist.c, nanosleep.c, pathmax.h: + * physmem.c, posixver.c, putenv.c, raise.c, safe-read.c, same.c: + * save-cwd.c, setenv.c, settime.c, tempname.c, unlinkdir.c: + * unsetenv.c, userspec.c, xgethostname.c, xreadlink.c: + Assume HAVE_UNISTD_H, i.e., include unconditionally. + + * chown.c, cloexec.c, dup-safer.c, dup2.c, fsusage.c, getcwd.c: + * getloadavg.c, mountlist.c, openat.h, save-cwd.c, tempname.c: + Assume HAVE_FCNTL_H (i.e., include unconditionally, + and don't include ). + +2005-09-22 Eric Blake (tiny change) + + Sync from coreutils. + + * getloadavg.c (getloadavg) [__CYGWIN__]: Port to cygwin. + [__linux__]: Allocate a big enough buffer for /proc/loadavg. + [!LDAV_DONE]: Avoid unused variable warning. + +2005-09-21 Bruno Haible + + * unicodeio.h (unicode_to_mb): New declaration. + +2005-09-20 Derek Price + + * getaddrinfo.c: Don't include included from getaddrinfo.h. + +2005-09-19 Ralf Wildenhues + + Use a consistent style for including . + * __fpending.c, acl.c, argmatch.c, + argp-help.c, argp-parse.c, + argp-pvh.c, backupfile.c, basename.c, c-stack.c, + calloc.c, check-version.c, cloexec.c, closeout.c, copy-file.c, + creat-safer.c, cycle-check.c, dirfd.c, dirname.c, dup-safer.c, + dup2.c, euidaccess.c, exclude.c, exitfail.c, fatal-signal.c, + fd-safer.c, file-type.c, fileblocks.c, filemode.c, + filenamecat.c, findprog.c, fnmatch.c, fopen-safer.c, free.c, + fsusage.c, ftruncate.c, full-write.c, fwriteerror.c, + getaddrinfo.c, getcwd.c, getdelim.c, getline.c, getlogin_r.c, + getndelim2.c, getnline.c, getopt1.c, getpass.c, group-member.c, + hard-locale.c, hash-pjw.c, hash.c, human.c, idcache.c, + inet_ntop.c, isdir.c, long-options.c, malloc.c, memcasecmp.c, + memcmp.c, memcoll.c, memcpy.c, memmove.c, mkdir-p.c, + modechange.c, mountlist.c, open-safer.c, physmem.c, + pipe-safer.c, pipe.c, poll.c, posixver.c, progname.c, + progreloc.c, putenv.c, quote.c, quotearg.c, readline.c, + readlink.c, realloc.c, regex.c, rename.c, rmdir.c, rpmatch.c, + safe-read.c, same.c, save-cwd.c, savedir.c, sig2str.c, + strcspn.c, strerror.c, stripslash.c, strncasecmp.c, strndup.c, + strnlen.c, strnlen1.c, strsep.c, strstr.c, strtod.c, + strtoimax.c, strtol.c, strverscmp.c, tempname.c, time_r.c, + userspec.c, utimecmp.c, version-etc-fsf.c, + version-etc.c, wait-process.c, xalloc-die.c, xgetcwd.c, + xmalloc.c, xmemcoll.c, xnanosleep.c, xreadlink.c, xsetenv.c, + xstrndup.c, xstrtoimax.c, xstrtol.c, xstrtoumax.c, yesno.c: + Standardize inclusion of config.h. + * __fpending.h, dirfd.h, getdate.h, human.h, + inttostr.h: Removed inclusion of config.h from header files. + * inttostr.c: Adjusted in-tree users. + * timespec.h: Remove superfluous warning to include config.h. + * atexit.c, chdir-long.c chown.c, fchown-stub.c, getgroups.c, + gettimeofday.c, lchown.c, lstat.c, mkdir.c, mkstemp.c, + nanosleep.c, openat.c, raise.c, readtokens0.c, readutmp.c, + unlinkdir.c: Guard inclusion of config.h with HAVE_CONFIG_H. + +2005-09-16 Paul Eggert + + * stat-time.h: New file. + * timespec.h (ST_TIME_CMP_NS, ST_TIME_CMP, ATIME_CMP, CTIME_CMP): + (MTIME_CMP, TIMESPEC_NS): Remove. Now done by stat-time.h, + in a different way. + (timespec_cmp): New function. + * utimecmp.c: Include stat-time.h. + (SYSCALL_RESOLUTION): Depend on whether various struct stat + members exist, not on the obsolescent ST_MTIM_NSEC. + (utimecmp): Use the new stat-time functions rater than TIMESPEC_NS. + +2005-09-15 Derek Price + Paul Eggert + + * regcomp.c, regexec.c, regex_internal.c: Back out previous + changes, consolidating in... + * regex_internal.h: ...this file. + +2005-09-15 Derek Price + + * regex_internal.h: Blank `pure' for GNUC < 3. + * regex_internal.c: Ditto, using this... + (__GNUC_PREREQ): ...new macro. + * regcomp.c, regexec.c: Blank `always_inline' for GNUC < 3.1 using... + (__GNUC_PREREQ): ...this new macro. + + * strstr.h: Include string.h. Define strstr as a macro here. + +2005-09-13 Derek Price + + * canon-host.c (canon_host_r): Set *cherror on memory allocation + failure. + Reported by Jim Meyering . + +2005-09-13 Jim Meyering + + * canon-host.c: Filter through gnu indent and reword comments slightly. + * canon-host.h (ch_strerror_r): Tweak cpp indentation and spacing. + +2005-09-12 Ralf Wildenhues (tiny change) + + * lib/base64.c: Typo. + (base64_encode): Put b64str in initialized data section. + +2005-09-12 Derek Price + + Return usable errors from canon-host. + * canon-host.h: New file. + * canon-host.c (canon_host): Wrap... + (canon_host_r): ...this new function, which now relies exclusively on + getaddrinfo. + (ch_strerror): New function. + (last_cherror): New global. + * getaddrinfo.c: Move include of getaddrinfo.h first to test interface. + (getaddrinfo): Add AI_CANONNAME functionality. Don't do arithmetic on + void *. + (freeaddrinfo): Free ai->ai_canonname when set. + +2005-09-12 Derek Price + Paul Eggert + + * glob-libc.h: Renamed from glob_.h. The new version is + taken from libc's glob.h, except with '#ifdef __GLOB_GNULIB' + protecting things that should be done only in gnulib contexts. + * glob_.h: New file, containing only the glob things needed for + gnulib. + (GLOB_PREFIX): Remove. All uses changed to look for __GLOB_GNULIB. + (__GLOB_CONCAT, __GLOB_XCONCAT, __GLOB_ID): Remove; no longer needed. + (glob, globfree, glob_pattern_p): Now defined simply in terms of + rpl_glob, rpl_globfree, rpl_glob_pattern_p. + (__GLOB_GNULIB): New macro, to keep the glob.h changes clearer + and to respect the namespace rules better. + +2005-09-12 Paul Eggert + + Merge glibc and coreutils changes into gnulib, plus a few + extra fixes. + * md5.c: Use #error rather than a string. + (CYCLIC): New macro, from glibc source. Use it instead of rol. + * md5.h (__GNUC_PREREQ, __THROW): Define if not defined already. + (__attribute__): Define to empty for non recent-GCC. + (__md5_buffer, __md5_finish_ctx, __md5_init_ctx, __md5_process_block): + (__md5_process_bytes, __md5_read_ctx, __md5_stream): + Renamed from their non-__ counterparts, with new macros replacing + them if not _LIBC. Add __THROW attribute. + (rol): Remove. + (struct md5_ctx): Align buffer if using GCC. + * sha1.h (struct sha1_ctx): Likewise. + * sha1.c (SWAP): Renamed from the NOTSWAP. All uses changed. + The old name was backwards. + (NOTSWAP): Remove; not used. + (rol): New macro, moved here from md5.h. + (sha1_process_block): Remove a FIXME that doesn't make sense. + +2005-09-12 Derek Price + + * gai_strerror.c: Include config.h when available. Include + getaddrinfo.h before other headers to test interface. + Reported by Larry Jones . + +2005-09-08 Paul Eggert + + * glob.c (glob, globfree, __glob_pattern_p): Use old-style function + definitions, since that's the preferred style in glibc. + Fix a minor spacing issue, and update copyright notice to match glibc's. + +2005-09-06 Paul Eggert + + * regex_internal.h (bitset_not): Add parens to avoid gcc -Wall warning. + +2005-09-06 Simon Josefsson + + * getpass.c (getpass): Fix typo, test for HAVE_TCSETATTR and not + TCSETATTR. Reported by Derek Price . + +2005-09-05 Paul Eggert + + Change bitset word type from unsigned int to unsigned long int, + as this has better performance on typical 64-bit hosts. + Port bitset code to hosts with unusual word sizes. + * regcomp.c (build_equiv_class, build_charclass, build_range_exp): + (build_collating_symbol): + Prefer bitset to re_bitset_ptr_t in prototypes, when the actual + argument is a bitset. This is merely a style issue, but it makes + it clearer that an entire array is expected. + (re_compile_fastmap_iter, init_dfa, init_word_char, optimize_subexps): + * regcomp.c (lower_subexp, parse_bracket_exp, built_charclass_op): + Port to the case where bitset_word is not the same as unsigned int. + * regex_internal.h (bitset_set, bitset_clear, bitset_contain): + (bitset_not, bitset_merge, bitset_set_all, bitset_mask): + Likewise. + * regexec.c (check_dst_limits_calc_pos_1, check_subexp_matching_top): + (build_trtable, group_nodes_into_DFAstates): + Likewise. + * regcomp.c (re_compile_fastmap_iter, utf8_sb_map, optimize_utf8): + Don't assume that SBC_MAX is a multiple of BITSET_WORD_BITS. + * regex_internal.h (bitset_set_all, bitset_not): Likewise. + * regexec.c (group_nodes_into_DFAstates): Likewise. + * regcomp.c (utf8_sb_map): Don't assume UINT_MAX == 0xffffffff. + * regcomp.c (optimize_subexps, lower_subexp): + Work even if bitset_word has holes in its bitwise representation. + * regex_internal.h (BITSET_WORD_BITS): Likewise. + * regexec.c (check_dst_limits_calc_pos_1, check_subexp_matching_top): + Likewise. + * regex_internal.c (re_string_reconstruct): + Don't assume UCHAR_MAX == 255. + * regex_internal.h (bitset_set_all): Likewise. + * regex_internal.h (BITSET_WORD_BITS): Renamed from UINT_BITS. + All uses changed. + (BITSET_WORDS): Renamed from BITSET_UINTS. All uses changed. + (bitset_word): New type, replacing 'unsigned int' for bitset uses. + All uses changed. + (BITSET_WORD_MAX): New macro. + (bitset_set, bitset_clear, bitset_contain, bitset_empty): + (bitset_set_all, bitset_copy): Now inline functions, not macros. + (bitset_empty, bitset_copy): + Prefer sizeof (bitset) to multiplying it out ourselves. + (bitset_not_merge): Remove; unused. + (bitset_contain): Return bool, not unsigned int with one bit on. + All callers changed. + * regexec.c (build_trtable): Don't assume bitset has no stricter + alignment than re_node_set; do this by defining a new internal + type struct dests_alloc and using it to allocate memory. + +2005-09-02 Paul Eggert + + Check for arithmetic overflow when calculating sizes, to prevent + some buffer-overflow issues. These patches are conservative, in the + sense that when I couldn't determine whether an overflow was possible, + I inserted a run-time check. + * regex_internal.h (re_xmalloc, re_xrealloc, re_x2realloc): New macros. + (SIZE_MAX) [!defined SIZE_MAX]: New macro. + (re_alloc_oversized, re_x2alloc_oversized, re_xnmalloc): + (re_xnrealloc, re_x2nrealloc): New inline functions. + * lib/regcomp.c (init_dfa, analyze, build_range_exp, parse_bracket_exp): + (build_equiv_class, build_charclass): Check for arithmetic overflow + in size expression calculations. + * lib/regex_internal.c (re_string_realloc_buffers): + (build_wcs_upper_buffer, re_node_set_add_intersect): + (re_node_set_init_union, re_node_set_insert, re_node_set_insert_last): + (re_dfa_add_node, register_state): Likewise. + * lib/regexec.c (re_search_stub, re_copy_regs, re_search_internal): + (prune_impossible_nodes, push_fail_stack, set_regs, check_arrival): + (build_trtable, extend_buffers, match_ctx_init, match_ctx_add_entry): + (match_ctx_add_subtop, match_ctx_add_sublast): Likewise. + +2005-09-01 Paul Eggert + + * glob.c (GET_LOGIN_NAME_MAX): Renamed from LOGIN_NAME_MAX, + to avoid a collision with bits/local_lim.h in glibc. + All uses changed. Problem reported by Dmitry V. Levin in + . + + * regex_internal.c (build_wcs_upper_buffer): Fix portability + bugs in int versus size_t comparisons. + (re_string_context_at): Fix bug where the code assumed that + Idx is signed. + + Use bool where appropriate. + * regcomp.c (re_set_fastmap): ICASE arg is bool, not int. + All callers changed. + (calc_eclosure_iter): Likewise, for ROOT arg. + (parse_bracket_element): Likewise, for ACCEPT_HYPHEN arg. + (build_charclass_op): Likewise, for NON_MATCH arg. + * regex_internal.c (re_string_allocate, re_string_construct): + (re_string_construct_common): Likewise, for ICASE arg. + * regexec.c (re_search_2_stub, re_search_stub): + Likewise, for RET_LEN arg. + (check_matching): Likewise, for FL_LONGEST_MATCH arg. + (set_regs): Likewise, for FL_BACKTRACK arg. + * regcomp.c (re_compile_fastmap_iter, optimize_utf8): + (duplicate_node_closure, calc_inveclosure, calc_eclosure): + (calc_eclosure_iter, parse_bracket_exp): + Use bool for internal variables that are booleans. + * regexec.c (re_search_internal, check_matching, proceed_next_node): + (set_regs, build_sifted_states, sift_states_bkref): + (check_arrival_add_next_nodes, check_arrival_expand_ecl_sub): + (expand_bkref_cache, build_trtable, group_nodes_into_DFAstates): + (find_collation_sequence_value): + Likewise. + * regex_internal.c (re_node_set_insert, re_node_set_insert_last): + (re_node_set_compare): + Return bool, not int. All callers changed. + * regexec.c (check_halt_node_context, check_dst_limits): + (build_trtable, check_node_accept): Likewise. + * regex_internal.h: Include stdbool.h. + + Fix bugs uncovered when converting to bool. + * regcomp.c (calc_eclosure_iter): Check for storage allocation + failure instead of charging ahead blindly. + * regex_internal.c (register_state): Likewise. + * regexec.c (re_search_2_stub): Use simpler method than boolean + for freeing internal storage. + (group_nodes_into_DFA_states): Use unsigned int, not int, for + bitset pieces used as boolean, to avoid undefined behavior + on hosts that do int overflow checking. + +2005-08-31 Derek Price + + * getdelim.c (getdelim): Return EOF on EOF. + Reported by Larry Jones . + +2005-08-31 Paul Eggert + + * regex_internal.c (re_string_reconstruct): Don't assume buffer + lengths fit in regoff_t; this isn't true if regoff_t is the same + width as size_t. + * regex.c (re_search_internal): 5th arg is LAST_START + (= START + RANGE) instead of RANGE. This avoids overflow + problems when regoff_t is the same width as size_t. + All callers changed. + (re_search_2_stub): Check for overflow when adding the + sizes of the two strings. + (re_search_stub): Check for overflow when adding START + to RANGE; if it occurs, substitute the extreme value. + +2005-08-31 Jim Meyering + + * regcomp.c (search_duplicated_node): Make first pointer arg + a pointer-to-const. + * regex_internal.c (create_ci_newstate, create_cd_newstate): + (register_state): Likewise. + * regexec.c (search_cur_bkref_entry, check_dst_limits): + (check_dst_limits_calc_pos_1, check_dst_limits_calc_pos): + (group_nodes_into_DFAstates): Likewise. + +2005-08-31 Paul Eggert + + On 64-bit hosts (where size_t is 64 bits and int is 32 bits), the + old glibc regex code mishandles strings longer than 2**31 bytes. + This patch fixes this when the regex code is used in gnulib + (i.e., outside glibc). + + This patch should not affect the use of the regex code inside + glibc. No doubt this problem also needs to be handled for glibc + as well, but the result will be an incompatible change to the + glibc ABI, and the old ABI will have to be supported too. That + can be the the subject for another patch. + + * regex.h (_REGEX_LARGE_OFFSETS): New feature-test macro, + governing whether the rest of this patch is active. By default, + the macro is disabled and the patch has no effect. + (regoff_t) [defined _REGEX_LARGE_OFFSETS]: Define to off_t, not int. + (__re_idx_t, __re_size_t, __re_long_size_t): New types. + (struct re_pattern_buffer, re_search, re_search_2, re_match): + (re_match_2, re_set_registers): Use the new types. + * regex_internal.h (Idx, re_hashval_t): New types. + (REG_MISSING, REG_ERROR, REG_VALID_INDEX, REG_VALID_NONZERO_INDEX): + New macros. + (re_node_set, re_charset_t, re_token_t, re_string_realloc_buffers): + (re_string_context_at, bin_tree_t, re_dfastate_t): + (struct re_state_table_entry, state_array_t, re_sub_match_last_t): + (re_sub_match_top_t, re_match_context_t, re_sift_context_t): + (struct re_fail_stack_ent_t, struct re_fail_stack_t, struct re_dfa_t): + (re_string_char_size_at, re_string_wchar_at): + (re_string_elem_size_at): + Use the new types and macros to port to 64-bit hosts. + Use unsigned types for internal values, so that the code + mostly works even for arrays larger than SSIZE_MAX. + * regcomp.c (re_compile_internal, init_dfa, duplicate_node): + (search_duplicated_node, calc_eclosure_iter, fetch_number): + (parse_reg_exp, parse_branch, parse_expression, parse_sub_exp): + (build_equiv_class, build_charclass, re_compile_fastmap_iter): + (free_dfa_content, create_initial_state, optimize_utf8, analyze): + (optimize_subexps, calc_first, link_nfa_nodes, duplicate_node_closure): + (calc_inveclosure, parse_dup_op, build_range_exp): + (build_collating_symbol, parse_bracket_exp, build_charclass_op): + (fetch_number, create_token_tree, mark_opt_subexp): + Likewise. + * regex_internal.c (re_string_construct_common, create_ci_newstate): + (create_cd_newstate, re_string_allocate, re_string_construct): + (re_string_realloc_buffers, build_wcs_upper_buffer): + (re_string_skip_chars, build_upper_buffer, re_string_translate_buffer): + (re_string_reconstruct, re_string_peek_byte_case): + (re_string_fetch_byte_case, re_string_context_at): + (re_node_set_alloc, re_node_set_init_1, re_node_set_init_2): + (re_node_set_init_copy, re_node_set_add_intersect): + (re_node_set_init_union, re_node_set_merge, re_node_set_insert): + (re_node_set_insert_last, re_node_set_compare, re_node_set_contains): + (re_node_set_remove_at, re_dfa_add_node, calc_state_hash): + (re_acquire_state, re_acquire_state_context, register_state): + Likewise. + * regex.c (match_ctx_init, match_ctx_add_entry, search_cur_bkref_entry): + (match_ctx_add_subtop, match_ctx_add_sublast, sift_ctx_init): + (re_search_internal, re_search_2_stub, re_search_stub) + (re_copy_regs, check_matching, check_halt_state_context, update_regs): + (push_fail_stack, sift_states_iter_mb, build_sifted_states): + (update_cur_sifted_state, check_dst_limits): + (check_dst_limits_calc_pos_1, check_dst_limits_calc_pos): + (check_subexp_limits, sift_states_bkref, merge_state_array): + (check_subexp_matching_top, get_subexp, get_subexp_sub): + (find_subexp_node, check_arrival, check_arrival_add_next_nodes): + (check_arrival_expand_ecl, check_arrival_expand_ecl_sub): + (expand_bkref_cache, check_node_accept_bytes): + (group_nodes_into_DFAstates, check_node_accept, regexec, re_match): + (re_search, re_match_2, re_search_2, prune_impossible_nodes): + (acquire_init_state_context, check_halt_node_context): + (proceed_next_node, pop_fail_stack, set_regs, free_fail_stack_return): + (sift_states_backward, clean_state_log_if_needed): + (sub_epsilon_src_nodes, add_epsilone_src_nodes, merge_state_with_log): + (find_recover_state, transit_state_sb, transit_state_mb): + (transit_state_bkref, build_trtable, match_ctx_clean): + Likewise. + * regcomp.c (parse_dup_op): Add an extra test if Idx is unsigned, + to work around an assumption that REG_MISSING is negative. + + * regcomp.c (re_comp) [defined _REGEX_RE_COMP || defined _LIBC]: + (seek_collating_symbol_entry) [defined _LIBC]: + (lookup_collation_sequence_value) [defined _LIBC]: + (build_range_exp, build_collating_symbol) [defined _LIBC]: + Use prototypes rather than old-style function definitions. + * regexec.c (re_exec) [defined _REGEX_RE_COMP || defined _LIBC]: + (transit_state_sb) [0]: + (find_collation_sequence_value) [defined _LIBC]: Likewise. + + * regexec.c (re_search_internal): Simplify update of rm_so and + rm_eo. + + * regcomp.c (re_compile_fastmap_iter, init_dfa, init_word_char): + (optimize_subexps, lower_subexp): + Don't assume 1<<31 has defined behavior on hosts with 32-bit int, + since the signed shift might overflow. Use 1u<<31 instead. + * regex_internal.h (bitset_set, bitset_clear, bitset_contain): Likewise. + * regexec.c (check_dst_limits_calc_pos_1, check_subexp_matching_top): + Likewise. + + * regcomp.c (optimize_subexps, lower_subexp): + Use CHAR_BIT rather than 8, for clarity. + * regexec.c (check_dst_limits_calc_pos_1): + (check_subexp_matching_top): Likewise. + * regcomp.c (init_dfa): Make table_size unsigned, so that we don't + have to worry about portability issues when shifting it left. + Remove no-longer-needed test for table_size > 0. + * regcomp.c (parse_sub_exp): Do not shift more bits than there are + in a word, as the resulting behavior is undefined. + * regexec.c (check_dst_limits_calc_pos_1): Likewise; + in one case, a <= should have been an <, and in another case the + whole test was missing. + * regex_internal.h (BYTE_BITS): Remove. All uses changed to + the standard name CHAR_BIT. + * regexec.c (match_ctx_add_entry): Don't assume that ~0 == -1; + this is not true on one's complement and signed-magnitude hosts. + + * regex_internal.h (re_sub_match_top_t): Remove unused member + next_last_offset. + (struct re_dfa_t): Remove unused member states_alloc. + * regcomp.c (init_dfa): Don't initialize unused members. + +2005-08-31 Bruno Haible + + * strstr.c: Include , for NULL. + * strcasestr.c: Likewise. + Reported by Yoann Vandoorselaere . + +2005-08-30 "Oskar Liljeblad" + + * iconvme.h: Add prototype for iconv_alloc. + +2005-08-29 Simon Josefsson + + * iconvme.c: Fix errno. + +2005-08-29 "Oskar Liljeblad" + + * iconvme.c: Split iconv_string into iconv_alloc. + +2005-08-27 Jim Meyering + + * fopen-safer.c: Merge minor changes from coreutils. + * dup-safer.c: Likewise. + * fd-safer.c: Likewise. + + Merge from coreutils. + * stdio--.h: New file. + * stdlib--.h: New file. + * mkstemp-safer.c: New file. + + GNU tar needs these. + * pipe-safer.c: New file. + * creat-safer.c: New file. + * fcntl--.h (creat): Define to creat_safer. + * fcntl-safer.h: Include and declare creat_safer. + * unistd--.h (pipe): Define to pipe_safer. + * unistd-safer.h: Declare pipe_safer. + +2005-08-26 Paul Eggert + + * regex_internal.h: Remove all references to + RE_NO_INTERNAL_PROTOTYPES; no longer neeeded now that we assume C89 + or better. + (bitset_not, bitset_merge, bitset_not_merge): + (bitset_mask, re_string_allocate, re_string_construct): + (re_string_reconstruct, re_string_destruct, re_string_elem_size_at): + (re_string_char_size_at, re_string_wchar_at, re_string_peek_byte_case): + (re_string_fetch_byte_case, re_node_set_alloc, re_node_set_init_1): + (re_node_set_init_2, re_node_set_init_copy, re_node_set_add_intersect): + (re_node_set_init_union, re_node_set_merge, re_node_set_insert): + (re_node_set_insert_last, re_node_set_compare, re_node_set_contains): + (re_node_set_remove_at, re_dfa_add_node, re_acquire_state): + (re_acquire_state_context): + Remove unnecessary forward decls. + (re_string_char_size_at, re_string_wchar_at, re_string_elem_size_at): + Put __attribute at function definition, + now that the function decl has been removed. + * lib/regex_internal.c (re_string_peek_byte_case): + (re_string_fetch_byte_case, re_node_set_compare, re_node_set_contains): + Likewise. + +2005-08-26 Simon Josefsson + + * getpass.c: Use _WIN32 instead of WIN32, suggested by Bruno + Haible . + +2005-08-25 Paul Eggert + + * regexec.c (set_regs): Don't alloca with an unbounded size. + + alloca modernization/simplification for regex. + * regex.c: Remove portability cruft for alloca. This no longer + needs to be at the start of the file, and can be moved into + regex_internal.h and simplified. + * regex_internal.h: Include . + (__libc_use_alloca) [!defined _LIBC]: New macro. + * regexec.c (build_trtable): Remove "#ifdef _LIBC", since the code + now works outside glibc. + +2005-08-24 Simon Josefsson + + * getpass.c: Add WIN32 implementation. Conditionalize use of + termios.h, tcgetattr, tcsetattr and __fsetlocking. Remove some + GLIBC specific code. + +2005-08-25 Paul Eggert + + Make regex safe for g++. This fixes one real bug (an "err" + that should have been "*err"). g++ problem reported by + Sam Steingold. + * regex_internal.h (re_calloc): New macro, consistent with + re_malloc etc. All callers of calloc changed to use re_calloc. + * regex_internal.c (build_wcs_upper_buffer): Return reg_errcode_t, + not int. All callers changed. + * regcomp.c (re_compile_fastmap_iter): Don't use alloca (mb_cur_max); + just use an array of size MB_LEN_MAX. + * regexec.c (push_fail_stack): Use re_realloc, not realloc. + (find_recover_state): Change "err" to "*err"; this fixes what + appears to be a real bug. + (check_arrival_expand_ecl_sub): Be consistent about reg_errcode_t + versus int. + +2005-08-25 Jim Meyering + + * open-safer.c: Include . + Otherwise, we'd lose LARGEFILE support in any file using + e.g. "fcntl--.h" + +2005-08-24 Paul Eggert + + * regcomp.c (regerror): 2nd arg is 'restrict', as per POSIX. + * regex.h (regerror): Likewise. + + * regex.c: Do not include , as POSIX no longer + requires this. (The code never needed it.) + + * regcomp.c, regex_internal.c, regex_internal.h, regexec.c: + All uses of recently-renamed identifiers changed to use the new, + POSIX-compliant names. The code will build and run just fine + without these changes, but it's better to eat our own dog food + and use the standard-conforming names. + + * regex.h: Fix a multitude of POSIX name space violations. + These changes have an effect only for programs that define + _POSIX_C_SOURCE, _POSIX_SOURCE, or _XOPEN_SOURCE; they + do not change anything for programs compiled in the normal way. + Also, there is no effect on the ABI. + + (_REGEX_SOURCE): New macro. + Do not include if _XOPEN_SOURCE and VMS are both + defined and _GNU_SOURCE is not; this fixes a name space violation. + + Rename the following macros to obey POSIX requirements. + The old names are still visible as macros if _REGEX_SOURCE is defined. + (REG_BACKSLASH_ESCAPE_IN_LISTS): renamed from + RE_BACKSLASH_ESCAPE_IN_LISTS. + (REG_BK_PLUS_QM): renamed from RE_BK_PLUS_QM. + (REG_CHAR_CLASSES): renamed from RE_CHAR_CLASSES. + (REG_CONTEXT_INDEP_ANCHORS): renamed from RE_CONTEXT_INDEP_ANCHORS. + (REG_CONTEXT_INDEP_OPS): renamed from RE_CONTEXT_INDEP_OPS. + (REG_CONTEXT_INVALID_OPS): renamed from RE_CONTEXT_INVALID_OPS. + (REG_DOT_NEWLINE): renamed from RE_DOT_NEWLINE. + (REG_DOT_NOT_NULL): renamed from RE_DOT_NOT_NULL. + (REG_HAT_LISTS_NOT_NEWLINE): renamed from RE_HAT_LISTS_NOT_NEWLINE. + (REG_INTERVALS): renamed from RE_INTERVALS. + (REG_LIMITED_OPS): renamed from RE_LIMITED_OPS. + (REG_NEWLINE_ALT): renamed from RE_NEWLINE_ALT. + (REG_NO_BK_BRACES): renamed from RE_NO_BK_BRACES. + (REG_NO_BK_PARENS): renamed from RE_NO_BK_PARENS. + (REG_NO_BK_REFS): renamed from RE_NO_BK_REFS. + (REG_NO_BK_VBAR): renamed from RE_NO_BK_VBAR. + (REG_NO_EMPTY_RANGES): renamed from RE_NO_EMPTY_RANGES. + (REG_UNMATCHED_RIGHT_PAREN_ORD): renamed from + RE_UNMATCHED_RIGHT_PAREN_ORD. + (REG_NO_POSIX_BACKTRACKING): renamed from RE_NO_POSIX_BACKTRACKING. + (REG_NO_GNU_OPS): renamed from RE_NO_GNU_OPS. + (REG_DEBUG): renamed from RE_DEBUG. + (REG_INVALID_INTERVAL_ORD): renamed from RE_INVALID_INTERVAL_ORD. + (REG_IGNORE_CASE): renamed from RE_ICASE. This renaming is a bit + unusual, since we can't clash with the POSIX REG_ICASE. + (REG_CARET_ANCHORS_HERE): renamed from RE_CARET_ANCHORS_HERE. + (REG_CONTEXT_INVALID_DUP): renamed from RE_CONTEXT_INVALID_DUP. + (REG_NO_SUB): renamed from RE_NO_SUB. + (REG_SYNTAX_EMACS): renamed from RE_SYNTAX_EMACS. + (REG_SYNTAX_AWK): renamed from RE_SYNTAX_AWK. + (REG_SYNTAX_GNU_AWK): renamed from RE_SYNTAX_GNU_AWK. + (REG_SYNTAX_POSIX_AWK): renamed from RE_SYNTAX_POSIX_AWK. + (REG_SYNTAX_GREP): renamed from RE_SYNTAX_GREP. + (REG_SYNTAX_EGREP): renamed from RE_SYNTAX_EGREP. + (REG_SYNTAX_POSIX_EGREP): renamed from RE_SYNTAX_POSIX_EGREP. + (REG_SYNTAX_ED): renamed from RE_SYNTAX_ED. + (REG_SYNTAX_SED): renamed from RE_SYNTAX_SED. + (_REG_SYNTAX_POSIX_COMMON): renamed from _RE_SYNTAX_POSIX_COMMON. + (REG_SYNTAX_POSIX_BASIC): renamed from RE_SYNTAX_POSIX_BASIC. + (REG_SYNTAX_POSIX_MINIMAL_BASIC): renamed from + RE_SYNTAX_POSIX_MINIMAL_BASIC. + (REG_SYNTAX_POSIX_EXTENDED): renamed from RE_SYNTAX_POSIX_EXTENDED. + (REG_SYNTAX_POSIX_MINIMAL_EXTENDED): renamed from + RE_SYNTAX_POSIX_MINIMAL_EXTENDED. + (REG_DUP_MAX): renamed from RE_DUP_MAX. No need to undef it. + (REG_UNALLOCATED): Renamed from REGS_UNALLOCATED. + (REG_REALLOCATE): Renamed from REGS_REALLOCATE. + (REG_FIXED): Renamed from REGS_FIXED. + (REG_NREGS): Renamed from RE_NREGS. + + (REG_ICASE, REG_NEWLINE, REG_NOSUB): Do not depend on the values + of other REG_* macros, since POSIX says the user is allowed to + #undef these macros selectively. + + (reg_errcode_t): Update comment stating what other tables need + to be consistent. + + Rename the following enum values to obey POSIX requirements. + The old names are still visible as macros. + (_REG_ENOSYS): Renamed from REG_ENOSYS. Define even if _XOPEN_SOURCE + is not defined, since GNU is supposed to be a superset of POSIX as + much as possible, and since we want reg_errcode_t to be a signed + type for implementation consistency. + (_REG_NOERROR): Renamed from REG_NOERROR. + (_REG_NOMATCH): Renamed from REG_NOMATCH. + (_REG_BADPAT): Renamed from REG_BADPAT. + (_REG_ECOLLATE): Renamed from REG_ECOLLATE. + (_REG_ECTYPE): Renamed from REG_ECTYPE. + (_REG_EESCAPE): Renamed from REG_EESCAPE. + (_REG_ESUBREG): Renamed from REG_ESUBREG. + (_REG_EBRACK): Renamed from REG_EBRACK. + (_REG_EPAREN): Renamed from REG_EPAREN. + (_REG_EBRACE): Renamed from REG_EBRACE. + (_REG_BADBR): Renamed from REG_BADBR. + (_REG_ERANGE): Renamed from REG_ERANGE. + (_REG_ESPACE): Renamed from REG_ESPACE. + (_REG_BADRPT): Renamed from REG_BADRPT. + (_REG_EEND): Renamed from REG_EEND. + (_REG_ESIZE): Renamed from REG_ESIZE. + (_REG_ERPAREN): Renamed from REG_ERPAREN. + (REG_ENOSYS, REG_NOERROR, REG_NOMATCH, REG_BADPAT, REG_ECOLLATE): + (REG_ECTYPE, REG_EESCAPE, REG_ESUBREG, REG_EBRACK, REG_EPAREN): + (REG_EBRACE, REG_BADBR, REG_ERANGE, REG_ESPACE, REG_BADRPT, REG_EEND): + (REG_ESIZE, REG_ERPAREN): Now macros, not enum constants. + + (_REG_RE_NAME, _REG_RM_NAME): New macros. + (REG_TRANSLATE_TYPE): Renamed from RE_TRANSLATE_TYPE. All uses + changed. But support the old name if the new one is not defined + and if _REGEX_SOURCE. + + Change the following member names in struct re_pattern_buffer. + The old names are still supported if !_REGEX_SOURCE. + The new names are always supported, regardless of _REGEX_SOURCE. + (re_buffer): Renamed from buffer. + (re_allocated): Renamed from allocated. + (re_used): Renamed from used. + (re_syntax): Renamed from syntax. + (re_fastmap): Renamed from fastmap. + (re_translate): Renamed from translate. + (re_can_be_null): Renamed from can_be_null. + (re_regs_allocated): Renamed from regs_allocated. + (re_fastmap_accurate): Renamed from fastmap_accurate. + (re_no_sub): Renamed from no_sub. + (re_not_bol): Renamed from not_bol. + (re_not_eol): Renamed from not_eol. + (re_newline_anchor): Renamed from newline_anchor. + + Change the following member names in struct re_registers. + The old names are still supported if !_REGEX_SOURCE. + The new names are always supported, regardless of _REGEX_SOURCE. + (rm_num_regs): Renamed from num_regs. + (rm_start): Renamed from start. + (rm_end): Renamed from end. + + (re_set_syntax, re_compile_pattern, re_compile_fastmap): + (re_search, re_search_2, re_match, re_match_2, re_set_registers): + Prepend __ to parameter names. + + Undo yesterday's changes. + +2005-08-24 Jim Meyering + + Sync from coreutils. + * fcntl--.h, fcntl-safer.h, open-safer.c: New files. + +2005-08-21 Bruno Haible + + * lock.h: Add multiple inclusion guard. + * tls.h: Add multiple inclusion guard. + +2005-08-23 Paul Eggert + + * regex.h (REG_NOSYS) + [!defined _XOPEN_SOURCE && 200112L <= _POSIX_C_SOURCE]: + Define, since POSIX requires it as of 2001. + (_REG_ENOSYS) [! (defined _XOPEN_SOURCE || 200112L <= _POSIX_C_SOURCE)]: + New private symbol, used to keep the enum signed in all cases. + * regex.h (RE_NO_EMPTY_RANGES): Fix doc bug reported by James Youngman + in . + + * regex_internal.c (re_string_skip_chars, register_state): + (calc_state_hash): + Remove forward decls; no longer needed now that we use prototypes. + * regexec.c (acquire_init_state_context, check_halt_node_context): + (proceed_next_node, pop_fail_stack, sub_epsilon_src_nodes): + (clean_state_log_if_needed): Likewise. + +2005-08-20 Paul Eggert + + Fix problems reported by Sam Steingold in + . + * regexec.c (sift_states_bkref): Fix portability bug: the code + assumed that reg_errcode_t is a signed type, which is not + necessarily true if _XOPEN_SOURCE is not defined. + * regex_internal.c (calc_state_hash): Put 'inline' before type, since + some compilers warn about it otherwise. + +2005-08-20 Jim Meyering + + * regexec.c (regexec, re_search_stub) [!_LIBC]: Omit declaration + of unused local, dfa. + +2005-08-20 Paul Eggert + + * regcomp.c (create_initial_state): Remove duplicate decl. + (init_word_char, create_initial_state, duplicate_node_closure): + (fetch_token, peek_token_bracket, build_range_exp): + (build_collating_symbol): Remove forward decls; no longer needed + now that we use prototypes. + + * regcomp.c: + (re_compile_pattern, re_set_syntax, re_compile_fastmap): + (re_compile_fastmap_iter, regcomp, regerror, regfree): + (re_compile_internal, init_dfa, init_word_char, free_workarea_compile): + (create_initial_state, optimize_utf8, analyze, postorder, preorder): + (optimize_subexps, lower_subexps, lower_subexp, calc_first, calc_next): + (link_nfa_nodes, duplicate_node_closure, search_duplicated_node): + (duplicate_node, calc_inveclosure, calc_eclosure, calc_eclosure_iter): + (fetch_token, peek_token, peek_token_bracket, parse, parse_reg_exp): + (parse_branch, parse_expression, parse_sub_exp, parse_dup_op): + (build_range_exp, build_collating_symbol, parse_bracket_exp): + (parse_bracket_element, parse_bracket_symbol, build_equiv_class): + (build_charclass, build_charclass_op, fetch_number, create_tree): + (create_token_tree, mark_opt_subexp, duplicate_tree): + Use prototypes rather than old-style definitions. + + * regex_internal.c: + (re_string_allocate, re_string_construct, re_string_realloc_buffers): + (re_string_construct_common, build_wcs_buffer, build_wcs_upper_buffer): + (re_string_skip_chars, build_upper_buffer, re_string_translate_buffer): + (re_string_reconstruct, re_string_peek_byte_case): + (re_string_fetch_byte_case, re_string_destruct, re_string_context_at): + (re_node_set_alloc, re_node_set_init_1, re_node_set_init_2): + (re_node_set_init_copy, re_node_set_add_intersect): + (re_node_set_init_union, re_node_set_merge, re_node_set_insert): + (re_node_set_insert_last, re_node_set_compare, re_node_set_contains): + (re_node_set_remove_at, re_dfa_add_node, calc_state_hash): + (re_acquire_state, re_acquire_state_context, register_state): + (create_ci_newstate, create_cd_newstate, free_state): + Likewise. + * regexec.c (regexec, re_match, re_search, re_match_2, re_search_2): + (re_search_2_stub, re_search_stub, re_copy_regs, re_set_registers): + (re_search_internal, prune_impossible_nodes): + (acquire_init_state_context, check_matching, static): + (check_halt_node_context, check_halt_state_context, proceed_next_node): + (push_fail_stack, pop_fail_stack, set_regs, free_fail_stack_return): + (update_regs, sift_states_backward, build_sifted_states): + (clean_state_log_if_needed, merge_state_array): + (update_cur_sifted_state, add_epsilon_src_nodes): + (sub_epsilon_src_nodes, check_dst_limits, check_dst_limits_calc_pos_1): + (check_dst_limits_calc_pos, check_subexp_limits, sift_states_bkref): + (sift_states_iter_mb, transit_state, merge_state_with_log, static): + (find_recover_state, check_subexp_matching_top, transit_state_mb): + (transit_state_bkref, get_subexp, get_subexp_sub, find_subexp_node): + (check_arrival, check_arrival_add_next_nodes): + (check_arrival_expand_ecl, check_arrival_expand_ecl_sub): + (expand_bkref_cache, build_trtable, group_nodes_into_DFAstates): + (check_node_accept_bytes, check_node_accept, extend_buffers): + (match_ctx_init, match_ctx_clean, match_ctx_free, match_ctx_add_entry): + (search_cur_bkref_entry, match_ctx_add_subtop, match_ctx_add_sublast): + (sift_ctx_init): + Likewise. + + * regex_internal.h: + (re_string_allocate, re_string_construct, re_string_reconstruct): + (re_string_realloc_buffers, build_wcs_buffer, build_wcs_upper_buffer): + (build_upper_buffer, re_string_translate_buffer, re_string_destruct): + (re_string_elem_size_at, re_string_char_size_at, re_string_wchar_at): + (re_string_context_at, re_string_peek_byte_case): + (re_string_fetch_byte_case): Declare even if RE_NO_INTERNAL_PROTOTYPES + is defined, since we now use prototypes always. + + * regex.h (_RE_ARGS): Remove. No longer needed, since we assume + C89 or better. All uses removed. + +2005-08-19 Paul Eggert + + * regex_internal.c (re_acquire_state, re_acquire_state_context) + [defined lint]: Suppress bogus uninitialized-variable warnings. + + * regcomp.c (duplicate_node): Return new index, not an error code, + and let the caller return REG_ESPACE if out of space. This + removes an uninitialied-variable warning with GCC 4.0.1, and also + avoids taking the address of a local variable. All callers + changed. + +2005-08-19 Jim Meyering + + * regexec.c (proceed_next_node): Redo local variables to + avoid GCC shadowing warnings. + +2005-08-19 Paul Eggert + + * regex_internal.c (re_string_realloc_buffers, re_node_set_insert): + (re_node_set_insert_last, re_dfa_add_node): + Rename local variables to avoid GCC shadowing warnings. + +2005-08-18 Bruno Haible + + * strstr.c (strstr): Fix return value in multibyte case. + * strcasestr.c (strcasestr): Likewise. + +2005-08-17 Jim Meyering + + Make the %s format (seconds since the epoch) work for a negative + number and when used with a zero-padded field width, e.g. %015s. + + * strftime.c (my_strftime): Move the `do_number_sign_and_padding' + label so that it precedes the code to set `digits'. Otherwise, + %0Ns wouldn't work. Before this change, `date -d @-22 +%05s' would + print `00-22'. Now, it prints `-0022', as it should. + +2005-08-17 Paul Eggert + + * regex.h: Remove useless space-before-tab. From coreutils. + +2005-08-17 Bruno Haible + + * strcasestr.h: New file. + * strcasestr.c: New file. + +2005-08-17 Bruno Haible + + * strstr.h: Ignore HAVE_STRSTR, always declare the gnulib function. + * strstr.c: Completely rewritten, with multibyte locale support. + +2005-08-17 Bruno Haible + + * strcasecmp.c: Use mbuiter.h. + +2005-08-17 Bruno Haible + + * mbuiter.h: New file. + +2005-08-16 Bruno Haible + + * strcasecmp.c (struct mbiter_multi): Remove at_end field. + (mbi_init): Update. + (mbi_avail, mbi_advance): Let the iteration end before the terminating + NUL byte, not after it. + +2005-08-16 Bruno Haible + + * mbchar.h (mb_cmp, mb_casecmp): Order the invalid characters after + the valid ones. Makes the comparison operations transitive: + cmp (a, b) < 0 && cmp (b, c) < 0 ==> cmp (a, c) < 0. + * strcasecmp.c (strcasecmp): Use mb_casecmp. + +2005-08-16 Bruno Haible + + * strcase.h (strcasecmp): Add note in comments. + * strncasecmp.c: Use code from strcasecmp.c. + * strcasecmp.c: Use mbchar module. Define private mbiter variant. + (strcasecmp): Work correctly in multibyte locales. + +2005-08-16 Bruno Haible + + * strnlen1.h: New file. + * strnlen1.c: New file. + +2005-08-16 Bruno Haible + + * mbfile.h: New file. + +2005-08-16 Bruno Haible + + * mbiter.h: New file. + +2005-08-16 Bruno Haible + + * mbchar.h: New file. + * mbchar.c: New file. + +2005-08-16 Bruno Haible + + * tls.h: New file, from GNU gettext. + * tls.c: New file, from GNU gettext. + +2005-08-15 Bruno Haible + + * regex.h (__restrict_arr): Don't define to __restrict if __cplusplus + is defined. + +2005-08-14 Jim Meyering + + Sync from coreutils. + + * fts-cycle.c (setup_dir, enter_dir, leave_dir, free_dir): + Use the hash-table-based cycle-detection code not just when + FTS_TIGHT_CYCLE_CHECK if specified, but also with FTS_LOGICAL. + Reported by James Youngman in + . + * fts_.h: Mention that with FTS_LOGICAL, we use FTS_TIGHT_CYCLE_CHECK. + * fts.c (fts_cross_check) [FTS_DEBUG]: s/active_dir_ht/fts_cycle.ht/. + This lets us compile with -DFTS_DEBUG, once again. + * fts.c [! _LIBC]: Include "lstat.h" rather than rolling our own. + * fts.c (fd_safer): Remove decl. + Include fcntl--.h rather than unistd-safer.h + (fts_safe_changedir): Don't call fd_safer; no longer needed + now that we include fcntl--.h. + +2005-08-11 Simon Josefsson + + * readline.h, readline.c: New file. + 2005-08-11 Bruno Haible * strnlen.h (strnlen): Change parameter name to match comment. @@ -267,7 +1476,7 @@ * getlogin_r.c (getlogin_r): Don't set errno to 0 on return. - * fts.c: Don't worry about debugging on pre-C99-comopatible hosts; + * fts.c: Don't worry about debugging on pre-C99-compatible hosts; the configuration hassle isn't worth it. Include inttypes.h and stdint.h unconditionally if FTS_DEBUG. (LONGEST_MODIFIER, PRIuMAX): Remove.