Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
G
git2
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
git2
Commits
ab96ca55
Commit
ab96ca55
authored
Oct 06, 2016
by
Arthur Schreiber
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Make sure we use the `C` locale for `regcomp` on macOS.
parent
e8ab13b3
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
54 additions
and
12 deletions
+54
-12
CMakeLists.txt
+6
-0
src/config.c
+3
-3
src/config_file.c
+2
-3
src/diff_driver.c
+3
-4
src/revparse.c
+1
-1
src/unix/posix.h
+10
-0
src/win32/posix.h
+3
-0
tests/core/posix.c
+26
-1
No files found.
CMakeLists.txt
View file @
ab96ca55
...
...
@@ -20,6 +20,7 @@ SET(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/cmake/Mo
INCLUDE
(
CheckLibraryExists
)
INCLUDE
(
CheckFunctionExists
)
INCLUDE
(
CheckSymbolExists
)
INCLUDE
(
CheckStructHasMember
)
INCLUDE
(
AddCFlagIfSupported
)
INCLUDE
(
FindPkgConfig
)
...
...
@@ -507,6 +508,11 @@ ELSE ()
ENDIF
()
ENDIF
()
CHECK_SYMBOL_EXISTS
(
regcomp_l
"xlocale.h"
HAVE_REGCOMP_L
)
IF
(
HAVE_REGCOMP_L
)
ADD_DEFINITIONS
(
-DHAVE_REGCOMP_L
)
ENDIF
()
CHECK_FUNCTION_EXISTS
(
futimens HAVE_FUTIMENS
)
IF
(
HAVE_FUTIMENS
)
ADD_DEFINITIONS
(
-DHAVE_FUTIMENS
)
...
...
src/config.c
View file @
ab96ca55
...
...
@@ -478,7 +478,7 @@ int git_config_iterator_glob_new(git_config_iterator **out, const git_config *cf
iter
=
git__calloc
(
1
,
sizeof
(
all_iter
));
GITERR_CHECK_ALLOC
(
iter
);
if
((
result
=
regcomp
(
&
iter
->
regex
,
regexp
,
REG_EXTENDED
))
!=
0
)
{
if
((
result
=
p_
regcomp
(
&
iter
->
regex
,
regexp
,
REG_EXTENDED
))
!=
0
)
{
giterr_set_regex
(
&
iter
->
regex
,
result
);
git__free
(
iter
);
return
-
1
;
...
...
@@ -512,7 +512,7 @@ int git_config_backend_foreach_match(
int
error
=
0
;
if
(
regexp
!=
NULL
)
{
if
((
error
=
regcomp
(
&
regex
,
regexp
,
REG_EXTENDED
))
!=
0
)
{
if
((
error
=
p_
regcomp
(
&
regex
,
regexp
,
REG_EXTENDED
))
!=
0
)
{
giterr_set_regex
(
&
regex
,
error
);
regfree
(
&
regex
);
return
-
1
;
...
...
@@ -1003,7 +1003,7 @@ int git_config_multivar_iterator_new(git_config_iterator **out, const git_config
goto
on_error
;
if
(
regexp
!=
NULL
)
{
error
=
regcomp
(
&
iter
->
regex
,
regexp
,
REG_EXTENDED
);
error
=
p_
regcomp
(
&
iter
->
regex
,
regexp
,
REG_EXTENDED
);
if
(
error
!=
0
)
{
giterr_set_regex
(
&
iter
->
regex
,
error
);
error
=
-
1
;
...
...
src/config_file.c
View file @
ab96ca55
...
...
@@ -570,7 +570,7 @@ static int config_set_multivar(
if
((
result
=
git_config__normalize_name
(
name
,
&
key
))
<
0
)
return
result
;
result
=
regcomp
(
&
preg
,
regexp
,
REG_EXTENDED
);
result
=
p_
regcomp
(
&
preg
,
regexp
,
REG_EXTENDED
);
if
(
result
!=
0
)
{
giterr_set_regex
(
&
preg
,
result
);
result
=
-
1
;
...
...
@@ -657,7 +657,7 @@ static int config_delete_multivar(git_config_backend *cfg, const char *name, con
refcounted_strmap_free
(
map
);
result
=
regcomp
(
&
preg
,
regexp
,
REG_EXTENDED
);
result
=
p_
regcomp
(
&
preg
,
regexp
,
REG_EXTENDED
);
if
(
result
!=
0
)
{
giterr_set_regex
(
&
preg
,
result
);
result
=
-
1
;
...
...
@@ -1957,4 +1957,3 @@ done:
git_buf_free
(
&
reader
->
buffer
);
return
result
;
}
src/diff_driver.c
View file @
ab96ca55
...
...
@@ -114,7 +114,7 @@ static int diff_driver_add_patterns(
if
(
error
<
0
)
break
;
if
((
error
=
regcomp
(
&
pat
->
re
,
buf
.
ptr
,
regex_flags
))
!=
0
)
{
if
((
error
=
p_
regcomp
(
&
pat
->
re
,
buf
.
ptr
,
regex_flags
))
!=
0
)
{
/*
* TODO: issue a warning
*/
...
...
@@ -210,7 +210,7 @@ static int git_diff_driver_builtin(
goto
done
;
if
(
ddef
->
words
&&
(
error
=
regcomp
(
(
error
=
p_
regcomp
(
&
drv
->
word_pattern
,
ddef
->
words
,
ddef
->
flags
|
REG_EXTENDED
)))
{
error
=
giterr_set_regex
(
&
drv
->
word_pattern
,
error
);
...
...
@@ -314,7 +314,7 @@ static int git_diff_driver_load(
goto
done
;
if
(
!
ce
||
!
ce
->
value
)
/* no diff.<driver>.wordregex, so just continue */
;
else
if
(
!
(
error
=
regcomp
(
&
drv
->
word_pattern
,
ce
->
value
,
REG_EXTENDED
)))
else
if
(
!
(
error
=
p_
regcomp
(
&
drv
->
word_pattern
,
ce
->
value
,
REG_EXTENDED
)))
found_driver
=
true
;
else
{
/* TODO: warn about bad regex instead of failure */
...
...
@@ -519,4 +519,3 @@ void git_diff_find_context_clear(git_diff_find_context_payload *payload)
payload
->
driver
=
NULL
;
}
}
src/revparse.c
View file @
ab96ca55
...
...
@@ -50,7 +50,7 @@ static int build_regex(regex_t *regex, const char *pattern)
return
GIT_EINVALIDSPEC
;
}
error
=
regcomp
(
regex
,
pattern
,
REG_EXTENDED
);
error
=
p_
regcomp
(
regex
,
pattern
,
REG_EXTENDED
);
if
(
!
error
)
return
0
;
...
...
src/unix/posix.h
View file @
ab96ca55
...
...
@@ -80,4 +80,14 @@ GIT_INLINE(int) p_futimes(int f, const struct p_timeval t[2])
# define p_futimes futimes
#endif
#ifdef HAVE_REGCOMP_L
#include <xlocale.h>
GIT_INLINE
(
int
)
p_regcomp
(
regex_t
*
preg
,
const
char
*
pattern
,
int
cflags
)
{
return
regcomp_l
(
preg
,
pattern
,
cflags
,
(
locale_t
)
0
);
}
#else
# define p_regcomp regcomp
#endif
#endif
src/win32/posix.h
View file @
ab96ca55
...
...
@@ -57,4 +57,7 @@ extern int p_lstat_posixly(const char *filename, struct stat *buf);
extern
struct
tm
*
p_localtime_r
(
const
time_t
*
timer
,
struct
tm
*
result
);
extern
struct
tm
*
p_gmtime_r
(
const
time_t
*
timer
,
struct
tm
*
result
);
/* Use the bundled regcomp */
#define p_regcomp regcomp
#endif
tests/core/posix.c
View file @
ab96ca55
...
...
@@ -11,6 +11,7 @@
#include "clar_libgit2.h"
#include "posix.h"
#include "userdiff.h"
void
test_core_posix__initialize
(
void
)
{
...
...
@@ -39,7 +40,7 @@ void test_core_posix__inet_pton(void)
struct
in_addr
addr
;
struct
in6_addr
addr6
;
size_t
i
;
struct
in_addr_data
{
const
char
*
p
;
const
uint8_t
n
[
4
];
...
...
@@ -146,3 +147,27 @@ void test_core_posix__utimes(void)
p_unlink
(
"foo"
);
}
void
test_core_posix__p_regcomp_compile_single_byte_regexps
(
void
)
{
regex_t
preg
;
cl_must_pass
(
p_regcomp
(
&
preg
,
"[
\xc0
-
\xff
][
\x80
-
\xbf
]"
,
REG_EXTENDED
));
regfree
(
&
preg
);
}
void
test_core_posix__p_regcomp_compile_userdiff_regexps
(
void
)
{
regex_t
preg
;
size_t
idx
;
for
(
idx
=
0
;
idx
<
ARRAY_SIZE
(
builtin_defs
);
++
idx
)
{
git_diff_driver_definition
ddef
=
builtin_defs
[
idx
];
cl_must_pass
(
p_regcomp
(
&
preg
,
ddef
.
fns
,
REG_EXTENDED
|
ddef
.
flags
));
cl_must_pass
(
p_regcomp
(
&
preg
,
ddef
.
words
,
REG_EXTENDED
));
}
regfree
(
&
preg
);
}
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