Jim Meyering [Tue, 1 Jul 1997 11:50:39 +0000 (11:50 +0000)]
(make_path): Reorder stat-then-mkdir-if-missing
calls so that mkdir is called first. Before make_path would first
`stat' a directory, then call mkdir if it didn't exist. But if
some other process created the directory between the stat & mkdir,
the mkdir would fail with EEXIST. Diagnosis and suggestion from
Greg McGary.
Jim Meyering [Tue, 1 Jul 1997 11:30:08 +0000 (11:30 +0000)]
[putenv]: Undefine before including system headers.
Otherwise, the declaration of *rpl_putenv* conflicts with the system
prototype on at least Irix5.3. From Marcus Daniels.
Richard Stallman [Sun, 15 Jun 1997 19:00:12 +0000 (19:00 +0000)]
(PTR_TO_OFFSET): New macro.
(POS_AS_IN_BUFFER): New macro.
(SYNTAX_ENTRY_VIA_PROPERTY): Set to take `syntax-table' text
property into account when doing SYNTAX (c).
(re_compile_fastmap): disable fastmap if any of wordbound
notwordbound wordbeg wordend notsyntaxspec syntaxspec are seen.
(re_search_2): SETUP_SYNTAX_TABLE_FOR_OBJECT at the start.
(re_match_object): New variable.
(re_match_2): SETUP_SYNTAX_TABLE_FOR_OBJECT at the start.
(re_match_2_internal): For any of wordbound notwordbound wordbeg
wordend notsyntaxspec syntaxspec call UPDATE_SYNTAX_TABLE before
doing SYNTAX (c).
(regex_compile): Declare `c' and `c1' as int to store multibyte characters.
Declare range_table_work and initialize it.
Initialize bufp->multibyte to 0 if not emacs.
For case '[' and `default', code re-written to handle multibyte characters.
Add code for case 'c' and 'C' to handle category spec.
(re_compile_fastmap): New local variables k, simple_char_max,
and match_any_multibyte_characters.
Use macro CHARSET_BITMAP_SIZE.
Handle multibyte characters in cases charset, charset_not,
wordchar, notwordchar, anychar, syntaxspec, notsyntaxspec,
categoryspec, notcategoryspec.
(STOP_ADDR_VSTRING, POS_ADDR_VSTRING): New macros.
(re_search_2): Code re-written to handle multibyte characters.
(AT_WORD_BOUNDARY): Macro disabled.
(re_match_2_internal): New local variable multibyte. `d' is
incremented while paying attention to multibyte characters if necessary.
For case charset, charsetnot, wordbound, notwordbound,
wordbeg, wordend, matchsyntax, and matchnotsyntax, code
re-written to handle multibyte characters.
Add code for case categoryspec and notcategoryspec.
Declare c, c1 as unsigned int, not unsigned char.
Jim Meyering [Sun, 15 Jun 1997 13:34:47 +0000 (13:34 +0000)]
Rewrite using save-cwd.c and chdir to remove quadratic component of complexity.
Before, it processed O(n^2) directory name components via stat and mkdir.
Now it's O(n). This makes mkdir -p a lot more efficient when creating
directories with very many components. On a Linux 2.0.30 ext2fs filesystem
this command: mkdir -p `perl -e 'print "a/" x 500'` now runs in 0.77 seconds
(user+sys). Contrast that with the 9.5(!) seconds it took before.
Jim Meyering [Wed, 28 May 1997 11:42:29 +0000 (11:42 +0000)]
(read_filesystem_list): Add `|| defined (__OpenBSD__)'
to the NetBSD #if so OpenBSD also uses the f_fstypename member.
(fstype_to_string): Add `&& !defined (__OpenBSD__)' to the NetBSD #if
expression to exclude this function definition. OpenBSD 2.1 beta
doesn't need it. Patch from Hugh Daniel <hugh@ecotone.xanadu.com>