Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
R
riscv-gcc-1
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
lvzhengyang
riscv-gcc-1
Commits
d0708dc1
Commit
d0708dc1
authored
Aug 23, 2001
by
Ulrich Drepper
Committed by
DJ Delorie
Aug 23, 2001
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
merge from glibc
From-SVN: r45134
parent
038c2f50
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
69 additions
and
14 deletions
+69
-14
libiberty/ChangeLog
+11
-0
libiberty/regex.c
+58
-14
No files found.
libiberty/ChangeLog
View file @
d0708dc1
2001-08-23 Ulrich Drepper <drepper@redhat.com>
* regex.c (truncate_wchar): Use wcrtomb not wctomb.
2001-08-23 Ulrich Drepper <drepper@redhat.com>
* posix/regex.c [_LIBC] (convert_mbs_to_wcs): Use __mbrtowc
instead of mbrtowc.
[_LIBC]: Use __iswctype instead of iswctype, __wcslen instead of
wcslen, and __wcscoll instead of wcscoll.
2001-08-22 Matt Kraai <kraai@alumni.carnegiemellon.edu>
* fibheap.c (fibheap_init, fibnode_init): Remove.
...
...
libiberty/regex.c
View file @
d0708dc1
...
...
@@ -1288,7 +1288,11 @@ convert_mbs_to_wcs (dest, src, len, offset_buffer, is_binary)
for
(
;
mb_remain
>
0
;
++
wc_count
,
++
pdest
,
mb_remain
-=
consumed
,
psrc
+=
consumed
)
{
#ifdef _LIBC
consumed
=
__mbrtowc
(
pdest
,
psrc
,
mb_remain
,
&
mbs
);
#else
consumed
=
mbrtowc
(
pdest
,
psrc
,
mb_remain
,
&
mbs
);
#endif
if
(
consumed
<=
0
)
/* failed to convert. maybe src contains binary data.
...
...
@@ -4627,9 +4631,16 @@ static unsigned char
truncate_wchar
(
c
)
CHAR_T
c
;
{
unsigned
char
buf
[
MB_LEN_MAX
];
int
retval
=
wctomb
(
buf
,
c
);
return
retval
>
0
?
buf
[
0
]
:
(
unsigned
char
)
c
;
unsigned
char
buf
[
MB_CUR_MAX
];
mbstate_t
state
;
int
retval
;
memset
(
&
state
,
'\0'
,
sizeof
(
state
));
# ifdef _LIBC
retval
=
__wcrtomb
(
buf
,
c
,
&
state
);
# else
retval
=
wcrtomb
(
buf
,
c
,
&
state
);
# endif
return
retval
>
0
?
buf
[
0
]
:
(
unsigned
char
)
c
;
}
#endif
/* WCHAR */
...
...
@@ -6337,8 +6348,13 @@ byte_re_match_2_internal (bufp, string1, size1,string2, size2, pos,
&
~
(
uintptr_t
)(
__alignof__
(
wctype_t
)
-
1
);
wctype
=
*
((
wctype_t
*
)
alignedp
);
workp
+=
CHAR_CLASS_SIZE
;
# ifdef _LIBC
if
(
__iswctype
((
wint_t
)
c
,
wctype
))
goto
char_set_matched
;
# else
if
(
iswctype
((
wint_t
)
c
,
wctype
))
goto
char_set_matched
;
# endif
}
/* match with collating_symbol? */
...
...
@@ -6374,12 +6390,20 @@ byte_re_match_2_internal (bufp, string1, size1,string2, size2, pos,
for
(
workp2
=
workp
+
coll_symbol_length
;
workp
<
workp2
;)
{
const
CHAR_T
*
backup_d
=
d
,
*
backup_dend
=
dend
;
length
=
wcslen
(
workp
);
# ifdef _LIBC
length
=
__wcslen
(
workp
);
# else
length
=
wcslen
(
workp
);
# endif
/* If wcscoll(the collating symbol, whole string) > 0,
any substring of the string never match with the
collating symbol. */
if
(
wcscoll
(
workp
,
d
)
>
0
)
# ifdef _LIBC
if
(
__wcscoll
(
workp
,
d
)
>
0
)
# else
if
(
wcscoll
(
workp
,
d
)
>
0
)
# endif
{
workp
+=
length
+
1
;
continue
;
...
...
@@ -6404,7 +6428,11 @@ byte_re_match_2_internal (bufp, string1, size1,string2, size2, pos,
str_buf
[
i
]
=
TRANSLATE
(
*
d
);
str_buf
[
i
+
1
]
=
'\0'
;
match
=
wcscoll
(
workp
,
str_buf
);
# ifdef _LIBC
match
=
__wcscoll
(
workp
,
str_buf
);
# else
match
=
wcscoll
(
workp
,
str_buf
);
# endif
if
(
match
==
0
)
goto
char_set_matched
;
...
...
@@ -6515,12 +6543,20 @@ byte_re_match_2_internal (bufp, string1, size1,string2, size2, pos,
for
(
workp2
=
workp
+
equiv_class_length
;
workp
<
workp2
;)
{
const
CHAR_T
*
backup_d
=
d
,
*
backup_dend
=
dend
;
length
=
wcslen
(
workp
);
# ifdef _LIBC
length
=
__wcslen
(
workp
);
# else
length
=
wcslen
(
workp
);
# endif
/* If wcscoll(the collating symbol, whole string) > 0,
any substring of the string never match with the
collating symbol. */
if
(
wcscoll
(
workp
,
d
)
>
0
)
# ifdef _LIBC
if
(
__wcscoll
(
workp
,
d
)
>
0
)
# else
if
(
wcscoll
(
workp
,
d
)
>
0
)
# endif
{
workp
+=
length
+
1
;
break
;
...
...
@@ -6545,7 +6581,11 @@ byte_re_match_2_internal (bufp, string1, size1,string2, size2, pos,
str_buf
[
i
]
=
TRANSLATE
(
*
d
);
str_buf
[
i
+
1
]
=
'\0'
;
match
=
wcscoll
(
workp
,
str_buf
);
# ifdef _LIBC
match
=
__wcscoll
(
workp
,
str_buf
);
# else
match
=
wcscoll
(
workp
,
str_buf
);
# endif
if
(
match
==
0
)
goto
char_set_matched
;
...
...
@@ -6568,7 +6608,7 @@ byte_re_match_2_internal (bufp, string1, size1,string2, size2, pos,
}
/* match with char_range? */
#ifdef _LIBC
#
ifdef _LIBC
if
(
nrules
!=
0
)
{
uint32_t
collseqval
;
...
...
@@ -6591,7 +6631,7 @@ byte_re_match_2_internal (bufp, string1, size1,string2, size2, pos,
}
}
else
#endif
#
endif
{
/* We set range_start_char at str_buf[0], range_end_char
at str_buf[4], and compared char at str_buf[2]. */
...
...
@@ -6627,9 +6667,13 @@ byte_re_match_2_internal (bufp, string1, size1,string2, size2, pos,
range_end_char
=
str_buf
+
4
;
}
if
(
wcscoll
(
range_start_char
,
str_buf
+
2
)
<=
0
&&
wcscoll
(
str_buf
+
2
,
range_end_char
)
<=
0
)
# ifdef _LIBC
if
(
__wcscoll
(
range_start_char
,
str_buf
+
2
)
<=
0
&&
__wcscoll
(
str_buf
+
2
,
range_end_char
)
<=
0
)
# else
if
(
wcscoll
(
range_start_char
,
str_buf
+
2
)
<=
0
&&
wcscoll
(
str_buf
+
2
,
range_end_char
)
<=
0
)
# endif
goto
char_set_matched
;
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment