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
e54d8d89
Commit
e54d8d89
authored
Mar 07, 2012
by
Vicent Martí
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
error-handling: Config
parent
cb8a7961
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
110 additions
and
96 deletions
+110
-96
include/git2/errors.h
+1
-0
src/config.c
+101
-89
src/fileops.c
+8
-7
No files found.
include/git2/errors.h
View file @
e54d8d89
...
@@ -126,6 +126,7 @@ typedef enum {
...
@@ -126,6 +126,7 @@ typedef enum {
GITERR_REFERENCE
,
GITERR_REFERENCE
,
GITERR_ZLIB
,
GITERR_ZLIB
,
GITERR_REPOSITORY
,
GITERR_REPOSITORY
,
GITERR_CONFIG
,
}
git_error_class
;
}
git_error_class
;
#define GITERR_CHECK_ALLOC(ptr) if (ptr == NULL) { return -1; }
#define GITERR_CHECK_ALLOC(ptr) if (ptr == NULL) { return -1; }
...
...
src/config.c
View file @
e54d8d89
...
@@ -67,77 +67,71 @@ int git_config_new(git_config **out)
...
@@ -67,77 +67,71 @@ int git_config_new(git_config **out)
if
(
git_vector_init
(
&
cfg
->
files
,
3
,
config_backend_cmp
)
<
0
)
{
if
(
git_vector_init
(
&
cfg
->
files
,
3
,
config_backend_cmp
)
<
0
)
{
git__free
(
cfg
);
git__free
(
cfg
);
return
GIT_ENOMEM
;
return
-
1
;
}
}
*
out
=
cfg
;
*
out
=
cfg
;
GIT_REFCOUNT_INC
(
cfg
);
GIT_REFCOUNT_INC
(
cfg
);
return
GIT_SUCCESS
;
return
0
;
}
}
int
git_config_add_file_ondisk
(
git_config
*
cfg
,
const
char
*
path
,
int
priority
)
int
git_config_add_file_ondisk
(
git_config
*
cfg
,
const
char
*
path
,
int
priority
)
{
{
git_config_file
*
file
=
NULL
;
git_config_file
*
file
=
NULL
;
int
error
;
error
=
git_config_file__ondisk
(
&
file
,
path
);
if
(
git_config_file__ondisk
(
&
file
,
path
)
<
0
)
if
(
error
<
GIT_SUCCESS
)
return
-
1
;
return
error
;
error
=
git_config_add_file
(
cfg
,
file
,
priority
);
if
(
git_config_add_file
(
cfg
,
file
,
priority
)
<
0
)
{
if
(
error
<
GIT_SUCCESS
)
{
/*
/*
* free manually; the file is not owned by the config
* free manually; the file is not owned by the config
* instance yet and will not be freed on cleanup
* instance yet and will not be freed on cleanup
*/
*/
file
->
free
(
file
);
file
->
free
(
file
);
return
error
;
return
-
1
;
}
}
return
GIT_SUCCESS
;
return
0
;
}
}
int
git_config_open_ondisk
(
git_config
**
cfg
,
const
char
*
path
)
int
git_config_open_ondisk
(
git_config
**
cfg
,
const
char
*
path
)
{
{
int
error
;
if
(
git_config_new
(
cfg
)
<
0
)
return
-
1
;
error
=
git_config_new
(
cfg
);
if
(
git_config_add_file_ondisk
(
*
cfg
,
path
,
1
)
<
0
)
{
if
(
error
<
GIT_SUCCESS
)
return
error
;
error
=
git_config_add_file_ondisk
(
*
cfg
,
path
,
1
);
if
(
error
<
GIT_SUCCESS
)
git_config_free
(
*
cfg
);
git_config_free
(
*
cfg
);
return
-
1
;
}
return
error
;
return
0
;
}
}
int
git_config_add_file
(
git_config
*
cfg
,
git_config_file
*
file
,
int
priority
)
int
git_config_add_file
(
git_config
*
cfg
,
git_config_file
*
file
,
int
priority
)
{
{
file_internal
*
internal
;
file_internal
*
internal
;
int
error
;
int
result
;
assert
(
cfg
&&
file
);
assert
(
cfg
&&
file
);
if
((
error
=
file
->
open
(
file
))
<
GIT_SUCCESS
)
if
((
result
=
file
->
open
(
file
))
<
0
)
return
git__throw
(
error
,
"Failed to open config file"
)
;
return
result
;
internal
=
git__malloc
(
sizeof
(
file_internal
));
internal
=
git__malloc
(
sizeof
(
file_internal
));
if
(
internal
==
NULL
)
GITERR_CHECK_ALLOC
(
internal
);
return
GIT_ENOMEM
;
internal
->
file
=
file
;
internal
->
file
=
file
;
internal
->
priority
=
priority
;
internal
->
priority
=
priority
;
if
(
git_vector_insert
(
&
cfg
->
files
,
internal
)
<
0
)
{
if
(
git_vector_insert
(
&
cfg
->
files
,
internal
)
<
0
)
{
git__free
(
internal
);
git__free
(
internal
);
return
GIT_ENOMEM
;
return
-
1
;
}
}
git_vector_sort
(
&
cfg
->
files
);
git_vector_sort
(
&
cfg
->
files
);
internal
->
file
->
cfg
=
cfg
;
internal
->
file
->
cfg
=
cfg
;
return
GIT_SUCCESS
;
return
0
;
}
}
/*
/*
...
@@ -165,8 +159,7 @@ int git_config_delete(git_config *cfg, const char *name)
...
@@ -165,8 +159,7 @@ int git_config_delete(git_config *cfg, const char *name)
file_internal
*
internal
;
file_internal
*
internal
;
git_config_file
*
file
;
git_config_file
*
file
;
if
(
cfg
->
files
.
length
==
0
)
assert
(
cfg
->
files
.
length
);
return
git__throw
(
GIT_EINVALIDARGS
,
"Cannot delete variable; no files open in the `git_config` instance"
);
internal
=
git_vector_get
(
&
cfg
->
files
,
0
);
internal
=
git_vector_get
(
&
cfg
->
files
,
0
);
file
=
internal
->
file
;
file
=
internal
->
file
;
...
@@ -200,8 +193,7 @@ int git_config_set_string(git_config *cfg, const char *name, const char *value)
...
@@ -200,8 +193,7 @@ int git_config_set_string(git_config *cfg, const char *name, const char *value)
file_internal
*
internal
;
file_internal
*
internal
;
git_config_file
*
file
;
git_config_file
*
file
;
if
(
cfg
->
files
.
length
==
0
)
assert
(
cfg
->
files
.
length
);
return
git__throw
(
GIT_EINVALIDARGS
,
"Cannot set variable value; no files open in the `git_config` instance"
);
internal
=
git_vector_get
(
&
cfg
->
files
,
0
);
internal
=
git_vector_get
(
&
cfg
->
files
,
0
);
file
=
internal
->
file
;
file
=
internal
->
file
;
...
@@ -239,7 +231,7 @@ static int parse_int64(int64_t *out, const char *value)
...
@@ -239,7 +231,7 @@ static int parse_int64(int64_t *out, const char *value)
int64_t
num
;
int64_t
num
;
if
(
git__strtol64
(
&
num
,
value
,
&
num_end
,
0
)
<
0
)
if
(
git__strtol64
(
&
num
,
value
,
&
num_end
,
0
)
<
0
)
return
GIT_EINVALIDTYPE
;
return
-
1
;
switch
(
*
num_end
)
{
switch
(
*
num_end
)
{
case
'g'
:
case
'g'
:
...
@@ -259,7 +251,7 @@ static int parse_int64(int64_t *out, const char *value)
...
@@ -259,7 +251,7 @@ static int parse_int64(int64_t *out, const char *value)
/* check that that there are no more characters after the
/* check that that there are no more characters after the
* given modifier suffix */
* given modifier suffix */
if
(
num_end
[
1
]
!=
'\0'
)
if
(
num_end
[
1
]
!=
'\0'
)
return
GIT_EINVALIDTYPE
;
return
-
1
;
/* fallthrough */
/* fallthrough */
...
@@ -268,7 +260,7 @@ static int parse_int64(int64_t *out, const char *value)
...
@@ -268,7 +260,7 @@ static int parse_int64(int64_t *out, const char *value)
return
0
;
return
0
;
default:
default:
return
GIT_EINVALIDTYPE
;
return
-
1
;
}
}
}
}
...
@@ -278,11 +270,11 @@ static int parse_int32(int32_t *out, const char *value)
...
@@ -278,11 +270,11 @@ static int parse_int32(int32_t *out, const char *value)
int32_t
truncate
;
int32_t
truncate
;
if
(
parse_int64
(
&
tmp
,
value
)
<
0
)
if
(
parse_int64
(
&
tmp
,
value
)
<
0
)
return
GIT_EINVALIDTYPE
;
return
-
1
;
truncate
=
tmp
&
0xFFFFFFFF
;
truncate
=
tmp
&
0xFFFFFFFF
;
if
(
truncate
!=
tmp
)
if
(
truncate
!=
tmp
)
return
GIT_EOVERFLOW
;
return
-
1
;
*
out
=
truncate
;
*
out
=
truncate
;
return
0
;
return
0
;
...
@@ -332,8 +324,9 @@ int git_config_get_mapped(git_config *cfg, const char *name, git_cvar_map *maps,
...
@@ -332,8 +324,9 @@ int git_config_get_mapped(git_config *cfg, const char *name, git_cvar_map *maps,
}
}
}
}
return
git__throw
(
GIT_ENOTFOUND
,
giterr_set
(
GITERR_CONFIG
,
"Failed to map the '%s' config variable with a valid value"
,
name
);
"Failed to map the '%s' config variable with a valid value"
,
name
);
return
-
1
;
}
}
int
git_config_get_int64
(
git_config
*
cfg
,
const
char
*
name
,
int64_t
*
out
)
int
git_config_get_int64
(
git_config
*
cfg
,
const
char
*
name
,
int64_t
*
out
)
...
@@ -342,69 +335,80 @@ int git_config_get_int64(git_config *cfg, const char *name, int64_t *out)
...
@@ -342,69 +335,80 @@ int git_config_get_int64(git_config *cfg, const char *name, int64_t *out)
int
ret
;
int
ret
;
ret
=
git_config_get_string
(
cfg
,
name
,
&
value
);
ret
=
git_config_get_string
(
cfg
,
name
,
&
value
);
if
(
ret
<
GIT_SUCCESS
)
if
(
ret
<
0
)
return
git__rethrow
(
ret
,
"Failed to retrieve value for '%s'"
,
name
)
;
return
ret
;
if
(
parse_int64
(
out
,
value
)
<
0
)
if
(
parse_int64
(
out
,
value
)
<
0
)
{
return
git__throw
(
GIT_EINVALIDTYPE
,
"Failed to parse '%s' as an integer"
,
value
);
giterr_set
(
GITERR_CONFIG
,
"Failed to parse '%s' as an integer"
,
value
);
return
-
1
;
}
return
GIT_SUCCESS
;
return
0
;
}
}
int
git_config_get_int32
(
git_config
*
cfg
,
const
char
*
name
,
int32_t
*
out
)
int
git_config_get_int32
(
git_config
*
cfg
,
const
char
*
name
,
int32_t
*
out
)
{
{
const
char
*
value
;
const
char
*
value
;
int
error
;
int
ret
;
error
=
git_config_get_string
(
cfg
,
name
,
&
value
);
ret
=
git_config_get_string
(
cfg
,
name
,
&
value
);
if
(
error
<
GIT_SUCCESS
)
if
(
ret
<
0
)
return
git__rethrow
(
error
,
"Failed to get value for %s"
,
name
)
;
return
ret
;
error
=
parse_int32
(
out
,
value
);
if
(
parse_int32
(
out
,
value
)
<
0
)
{
if
(
error
<
GIT_SUCCESS
)
giterr_set
(
GITERR_CONFIG
,
"Failed to parse '%s' as a 32-bit integer"
,
value
);
return
git__throw
(
GIT_EINVALIDTYPE
,
"Failed to parse '%s' as a 32-bit integer"
,
value
);
return
-
1
;
}
return
GIT_SUCCESS
;
return
0
;
}
}
int
git_config_get_bool
(
git_config
*
cfg
,
const
char
*
name
,
int
*
out
)
int
git_config_get_bool
(
git_config
*
cfg
,
const
char
*
name
,
int
*
out
)
{
{
const
char
*
value
;
const
char
*
value
;
int
error
=
GIT_SUCCESS
;
int
ret
;
error
=
git_config_get_string
(
cfg
,
name
,
&
value
);
ret
=
git_config_get_string
(
cfg
,
name
,
&
value
);
if
(
error
<
GIT_SUCCESS
)
if
(
ret
<
0
)
return
git__rethrow
(
error
,
"Failed to get value for %s"
,
name
)
;
return
ret
;
if
(
parse_bool
(
out
,
value
)
==
0
)
if
(
parse_bool
(
out
,
value
)
==
0
)
return
GIT_SUCCESS
;
return
0
;
if
(
parse_int32
(
out
,
value
)
==
0
)
{
if
(
parse_int32
(
out
,
value
)
==
0
)
{
*
out
=
!!
(
*
out
);
*
out
=
!!
(
*
out
);
return
GIT_SUCCESS
;
return
0
;
}
}
return
git__throw
(
GIT_EINVALIDTYPE
,
"Failed to parse '%s' as a boolean value"
,
value
);
giterr_set
(
GITERR_CONFIG
,
"Failed to parse '%s' as a boolean value"
,
value
);
return
-
1
;
}
}
int
git_config_get_string
(
git_config
*
cfg
,
const
char
*
name
,
const
char
**
out
)
int
git_config_get_string
(
git_config
*
cfg
,
const
char
*
name
,
const
char
**
out
)
{
{
file_internal
*
internal
;
file_internal
*
internal
;
git_config_file
*
file
;
git_config_file
*
file
;
int
error
=
GIT_ENOTFOUND
;
int
ret
=
GIT_ENOTFOUND
;
unsigned
int
i
;
unsigned
int
i
;
if
(
cfg
->
files
.
length
==
0
)
assert
(
cfg
->
files
.
length
);
return
git__throw
(
GIT_EINVALIDARGS
,
"Cannot get variable value; no files open in the `git_config` instance"
);
for
(
i
=
0
;
i
<
cfg
->
files
.
length
;
++
i
)
{
for
(
i
=
0
;
i
<
cfg
->
files
.
length
;
++
i
)
{
internal
=
git_vector_get
(
&
cfg
->
files
,
i
);
internal
=
git_vector_get
(
&
cfg
->
files
,
i
);
file
=
internal
->
file
;
file
=
internal
->
file
;
if
((
error
=
file
->
get
(
file
,
name
,
out
))
==
GIT_SUCCESS
)
return
GIT_SUCCESS
;
ret
=
file
->
get
(
file
,
name
,
out
);
if
(
ret
==
0
)
return
0
;
if
(
ret
==
GIT_ENOTFOUND
)
continue
;
return
ret
;
}
}
return
git__throw
(
error
,
"Config value '%s' not found"
,
name
);
giterr_set
(
GITERR_CONFIG
,
"Config value '%s' not found"
,
name
);
return
GIT_ENOTFOUND
;
}
}
int
git_config_get_multivar
(
git_config
*
cfg
,
const
char
*
name
,
const
char
*
regexp
,
int
git_config_get_multivar
(
git_config
*
cfg
,
const
char
*
name
,
const
char
*
regexp
,
...
@@ -412,12 +416,10 @@ int git_config_get_multivar(git_config *cfg, const char *name, const char *regex
...
@@ -412,12 +416,10 @@ int git_config_get_multivar(git_config *cfg, const char *name, const char *regex
{
{
file_internal
*
internal
;
file_internal
*
internal
;
git_config_file
*
file
;
git_config_file
*
file
;
int
error
=
GIT_ENOTFOUND
;
int
ret
=
GIT_ENOTFOUND
;
unsigned
int
i
;
unsigned
int
i
;
assert
(
cfg
->
files
.
length
);
if
(
cfg
->
files
.
length
==
0
)
return
git__throw
(
GIT_EINVALIDARGS
,
"Cannot get variable value; no files open in the `git_config` instance"
);
/*
/*
* This loop runs the "wrong" way 'round because we need to
* This loop runs the "wrong" way 'round because we need to
...
@@ -426,30 +428,30 @@ int git_config_get_multivar(git_config *cfg, const char *name, const char *regex
...
@@ -426,30 +428,30 @@ int git_config_get_multivar(git_config *cfg, const char *name, const char *regex
for
(
i
=
cfg
->
files
.
length
;
i
>
0
;
--
i
)
{
for
(
i
=
cfg
->
files
.
length
;
i
>
0
;
--
i
)
{
internal
=
git_vector_get
(
&
cfg
->
files
,
i
-
1
);
internal
=
git_vector_get
(
&
cfg
->
files
,
i
-
1
);
file
=
internal
->
file
;
file
=
internal
->
file
;
error
=
file
->
get_multivar
(
file
,
name
,
regexp
,
fn
,
data
);
ret
=
file
->
get_multivar
(
file
,
name
,
regexp
,
fn
,
data
);
if
(
error
<
GIT_SUCCESS
&&
error
!=
GIT_ENOTFOUND
)
if
(
ret
<
0
&&
ret
!=
GIT_ENOTFOUND
)
git__rethrow
(
error
,
"Failed to get multivar"
)
;
return
ret
;
}
}
return
GIT_SUCCESS
;
return
0
;
}
}
int
git_config_set_multivar
(
git_config
*
cfg
,
const
char
*
name
,
const
char
*
regexp
,
const
char
*
value
)
int
git_config_set_multivar
(
git_config
*
cfg
,
const
char
*
name
,
const
char
*
regexp
,
const
char
*
value
)
{
{
file_internal
*
internal
;
file_internal
*
internal
;
git_config_file
*
file
;
git_config_file
*
file
;
int
error
=
GIT_ENOTFOUND
;
int
ret
=
GIT_ENOTFOUND
;
unsigned
int
i
;
unsigned
int
i
;
for
(
i
=
cfg
->
files
.
length
;
i
>
0
;
--
i
)
{
for
(
i
=
cfg
->
files
.
length
;
i
>
0
;
--
i
)
{
internal
=
git_vector_get
(
&
cfg
->
files
,
i
-
1
);
internal
=
git_vector_get
(
&
cfg
->
files
,
i
-
1
);
file
=
internal
->
file
;
file
=
internal
->
file
;
error
=
file
->
set_multivar
(
file
,
name
,
regexp
,
value
);
ret
=
file
->
set_multivar
(
file
,
name
,
regexp
,
value
);
if
(
error
<
GIT_SUCCESS
&&
error
!=
GIT_ENOTFOUND
)
if
(
ret
<
GIT_SUCCESS
&&
ret
!=
GIT_ENOTFOUND
)
git__rethrow
(
error
,
"Failed to replace multivar"
)
;
return
ret
;
}
}
return
GIT_SUCCESS
;
return
0
;
}
}
int
git_config_find_global_r
(
git_buf
*
path
)
int
git_config_find_global_r
(
git_buf
*
path
)
...
@@ -460,18 +462,23 @@ int git_config_find_global_r(git_buf *path)
...
@@ -460,18 +462,23 @@ int git_config_find_global_r(git_buf *path)
int
git_config_find_global
(
char
*
global_config_path
)
int
git_config_find_global
(
char
*
global_config_path
)
{
{
git_buf
path
=
GIT_BUF_INIT
;
git_buf
path
=
GIT_BUF_INIT
;
int
error
=
git_config_find_global_r
(
&
path
);
int
ret
=
git_config_find_global_r
(
&
path
);
if
(
error
==
GIT_SUCCESS
)
{
if
(
ret
<
0
)
{
if
(
path
.
size
>
GIT_PATH_MAX
)
git_buf_free
(
&
path
);
error
=
git__throw
(
GIT_ESHORTBUFFER
,
"Path is too long"
);
return
ret
;
else
git_buf_copy_cstr
(
global_config_path
,
GIT_PATH_MAX
,
&
path
);
}
}
if
(
path
.
size
>
GIT_PATH_MAX
)
{
git_buf_free
(
&
path
);
git_buf_free
(
&
path
);
giterr_set
(
GITERR_NOMEMORY
,
"Path is to long to fit on the given buffer"
);
return
-
1
;
}
return
error
;
git_buf_copy_cstr
(
global_config_path
,
GIT_PATH_MAX
,
&
path
);
git_buf_free
(
&
path
);
return
0
;
}
}
int
git_config_find_system_r
(
git_buf
*
path
)
int
git_config_find_system_r
(
git_buf
*
path
)
...
@@ -482,18 +489,23 @@ int git_config_find_system_r(git_buf *path)
...
@@ -482,18 +489,23 @@ int git_config_find_system_r(git_buf *path)
int
git_config_find_system
(
char
*
system_config_path
)
int
git_config_find_system
(
char
*
system_config_path
)
{
{
git_buf
path
=
GIT_BUF_INIT
;
git_buf
path
=
GIT_BUF_INIT
;
int
error
=
git_config_find_system_r
(
&
path
);
int
ret
=
git_config_find_system_r
(
&
path
);
if
(
error
==
GIT_SUCCESS
)
{
if
(
ret
<
0
)
{
if
(
path
.
size
>
GIT_PATH_MAX
)
git_buf_free
(
&
path
);
error
=
git__throw
(
GIT_ESHORTBUFFER
,
"Path is too long"
);
return
ret
;
else
git_buf_copy_cstr
(
system_config_path
,
GIT_PATH_MAX
,
&
path
);
}
}
if
(
path
.
size
>
GIT_PATH_MAX
)
{
git_buf_free
(
&
path
);
git_buf_free
(
&
path
);
giterr_set
(
GITERR_NOMEMORY
,
"Path is to long to fit on the given buffer"
);
return
-
1
;
}
return
error
;
git_buf_copy_cstr
(
system_config_path
,
GIT_PATH_MAX
,
&
path
);
git_buf_free
(
&
path
);
return
0
;
}
}
int
git_config_open_global
(
git_config
**
out
)
int
git_config_open_global
(
git_config
**
out
)
...
@@ -501,7 +513,7 @@ int git_config_open_global(git_config **out)
...
@@ -501,7 +513,7 @@ int git_config_open_global(git_config **out)
int
error
;
int
error
;
char
global_path
[
GIT_PATH_MAX
];
char
global_path
[
GIT_PATH_MAX
];
if
((
error
=
git_config_find_global
(
global_path
))
<
GIT_SUCCESS
)
if
((
error
=
git_config_find_global
(
global_path
))
<
0
)
return
error
;
return
error
;
return
git_config_open_ondisk
(
out
,
global_path
);
return
git_config_open_ondisk
(
out
,
global_path
);
...
...
src/fileops.c
View file @
e54d8d89
...
@@ -295,7 +295,6 @@ int git_futils_rmdir_r(const char *path, int force)
...
@@ -295,7 +295,6 @@ int git_futils_rmdir_r(const char *path, int force)
int
git_futils_find_global_file
(
git_buf
*
path
,
const
char
*
filename
)
int
git_futils_find_global_file
(
git_buf
*
path
,
const
char
*
filename
)
{
{
int
error
;
const
char
*
home
=
getenv
(
"HOME"
);
const
char
*
home
=
getenv
(
"HOME"
);
#ifdef GIT_WIN32
#ifdef GIT_WIN32
...
@@ -303,19 +302,21 @@ int git_futils_find_global_file(git_buf *path, const char *filename)
...
@@ -303,19 +302,21 @@ int git_futils_find_global_file(git_buf *path, const char *filename)
home
=
getenv
(
"USERPROFILE"
);
home
=
getenv
(
"USERPROFILE"
);
#endif
#endif
if
(
home
==
NULL
)
if
(
home
==
NULL
)
{
return
git__throw
(
GIT_EOSERR
,
"Failed to open global %s file. "
giterr_set
(
GITERR_OS
,
"Global file lookup failed. "
"Cannot locate the user's home directory."
,
filename
);
"Cannot locate the user's home directory"
);
return
-
1
;
}
if
(
(
error
=
git_buf_joinpath
(
path
,
home
,
filename
))
<
GIT_SUCCESS
)
if
(
git_buf_joinpath
(
path
,
home
,
filename
)
<
0
)
return
error
;
return
-
1
;
if
(
git_path_exists
(
path
->
ptr
)
==
false
)
{
if
(
git_path_exists
(
path
->
ptr
)
==
false
)
{
git_buf_clear
(
path
);
git_buf_clear
(
path
);
return
GIT_ENOTFOUND
;
return
GIT_ENOTFOUND
;
}
}
return
GIT_SUCCESS
;
return
0
;
}
}
#ifdef GIT_WIN32
#ifdef GIT_WIN32
...
...
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