Andrew's git
/
gitweb.git
/ diff
summary
|
log
|
commit
| diff |
tree
commit
grep
author
committer
pickaxe
?
re
Fix repo-config set-multivar error return path.
author
Junio C Hamano
<junkio@cox.net>
Mon, 8 May 2006 04:27:30 +0000
(21:27 -0700)
committer
Junio C Hamano
<junkio@cox.net>
Mon, 8 May 2006 04:27:30 +0000
(21:27 -0700)
This hopefully fixes the problem an earlier commit
5d8ee9ceb
attemted
to fix.
Signed-off-by: Junio C Hamano <junkio@cox.net>
config.c
patch
|
blob
|
history
raw
|
patch
|
inline
| side by side (parent:
178613c
)
diff --git
a/config.c
b/config.c
index 11d65f8c70b692327de5bfaa8afe1e7979aafea6..adb5ce476a242d8ab92f3b15018a6c2c32370990 100644
(file)
--- a/
config.c
+++ b/
config.c
@@
-420,7
+420,7
@@
int git_config_set_multivar(const char* key, const char* value,
const char* value_regex, int multi_replace)
{
int i;
const char* value_regex, int multi_replace)
{
int i;
- int fd, in_fd;
+ int fd
= -1
, in_fd;
int ret;
char* config_filename = strdup(git_path("config"));
char* lock_file = strdup(git_path("config.lock"));
int ret;
char* config_filename = strdup(git_path("config"));
char* lock_file = strdup(git_path("config.lock"));
@@
-478,15
+478,11
@@
int git_config_set_multivar(const char* key, const char* value,
if ( ENOENT != errno ) {
error("opening %s: %s", config_filename,
strerror(errno));
if ( ENOENT != errno ) {
error("opening %s: %s", config_filename,
strerror(errno));
- close(fd);
- unlink(lock_file);
ret = 3; /* same as "invalid config file" */
goto out_free;
}
/* if nothing to unset, error out */
if (value == NULL) {
ret = 3; /* same as "invalid config file" */
goto out_free;
}
/* if nothing to unset, error out */
if (value == NULL) {
- close(fd);
- unlink(lock_file);
ret = 5;
goto out_free;
}
ret = 5;
goto out_free;
}
@@
-514,8
+510,6
@@
int git_config_set_multivar(const char* key, const char* value,
fprintf(stderr, "Invalid pattern: %s\n",
value_regex);
free(store.value_regex);
fprintf(stderr, "Invalid pattern: %s\n",
value_regex);
free(store.value_regex);
- close(fd);
- unlink(lock_file);
ret = 6;
goto out_free;
}
ret = 6;
goto out_free;
}
@@
-551,8
+545,6
@@
int git_config_set_multivar(const char* key, const char* value,
/* if nothing to unset, or too many matches, error out */
if ((store.seen == 0 && value == NULL) ||
(store.seen > 1 && multi_replace == 0)) {
/* if nothing to unset, or too many matches, error out */
if ((store.seen == 0 && value == NULL) ||
(store.seen > 1 && multi_replace == 0)) {
- close(fd);
- unlink(lock_file);
ret = 5;
goto out_free;
}
ret = 5;
goto out_free;
}
@@
-601,8
+593,6
@@
int git_config_set_multivar(const char* key, const char* value,
unlink(config_filename);
}
unlink(config_filename);
}
- close(fd);
-
if (rename(lock_file, config_filename) < 0) {
fprintf(stderr, "Could not rename the lock file?\n");
ret = 4;
if (rename(lock_file, config_filename) < 0) {
fprintf(stderr, "Could not rename the lock file?\n");
ret = 4;
@@
-612,10
+602,14
@@
int git_config_set_multivar(const char* key, const char* value,
ret = 0;
out_free:
ret = 0;
out_free:
+ if (0 <= fd)
+ close(fd);
if (config_filename)
free(config_filename);
if (config_filename)
free(config_filename);
- if (lock_file)
+ if (lock_file) {
+ unlink(lock_file);
free(lock_file);
free(lock_file);
+ }
return ret;
}
return ret;
}