Skip to content

Commit

Permalink
use result of open(2) to check for presence
Browse files Browse the repository at this point in the history
Not that the stat against open race would matter much in this context,
but that simplifies
the code a bit. Also some diagnostics added (why the open failed)

Signed-off-by: Alex Riesen <raa.lkml@gmail.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
  • Loading branch information
Alex Riesen authored and Junio C Hamano committed Jan 6, 2006
1 parent d9e08be commit 88fb958
Showing 1 changed file with 12 additions and 5 deletions.
17 changes: 12 additions & 5 deletions config.c
Original file line number Diff line number Diff line change
Expand Up @@ -409,8 +409,7 @@ int git_config_set_multivar(const char* key, const char* value,
const char* value_regex, int multi_replace)
{
int i;
struct stat st;
int fd;
int fd, in_fd;
char* config_filename = strdup(git_path("config"));
char* lock_file = strdup(git_path("config.lock"));
const char* last_dot = strrchr(key, '.');
Expand Down Expand Up @@ -457,9 +456,17 @@ int git_config_set_multivar(const char* key, const char* value,
/*
* If .git/config does not exist yet, write a minimal version.
*/
if (stat(config_filename, &st)) {
in_fd = open(config_filename, O_RDONLY);
if ( in_fd < 0 ) {
free(store.key);

if ( ENOENT != errno ) {
error("opening %s: %s", config_filename,
strerror(errno));
close(fd);
unlink(lock_file);
return 3; /* same as "invalid config file" */
}
/* if nothing to unset, error out */
if (value == NULL) {
close(fd);
Expand All @@ -471,7 +478,7 @@ int git_config_set_multivar(const char* key, const char* value,
store_write_section(fd, key);
store_write_pair(fd, key, value);
} else{
int in_fd;
struct stat st;
char* contents;
int i, copy_begin, copy_end, new_line = 0;

Expand Down Expand Up @@ -528,7 +535,7 @@ int git_config_set_multivar(const char* key, const char* value,
return 5;
}

in_fd = open(config_filename, O_RDONLY, 0666);
fstat(in_fd, &st);
contents = mmap(NULL, st.st_size, PROT_READ,
MAP_PRIVATE, in_fd, 0);
close(in_fd);
Expand Down

0 comments on commit 88fb958

Please sign in to comment.