Merge branch 'mh/lockfile'
The lockfile API and its users have been cleaned up. * mh/lockfile: (38 commits) lockfile.h: extract new header file for the functions in lockfile.c hold_locked_index(): move from lockfile.c to read-cache.c hold_lock_file_for_append(): restore errno before returning get_locked_file_path(): new function lockfile.c: rename static functions lockfile: rename LOCK_NODEREF to LOCK_NO_DEREF commit_lock_file_to(): refactor a helper out of commit_lock_file() trim_last_path_component(): replace last_path_elm() resolve_symlink(): take a strbuf parameter resolve_symlink(): use a strbuf for internal scratch space lockfile: change lock_file::filename into a strbuf commit_lock_file(): use a strbuf to manage temporary space try_merge_strategy(): use a statically-allocated lock_file object try_merge_strategy(): remove redundant lock_file allocation struct lock_file: declare some fields volatile lockfile: avoid transitory invalid states git_config_set_multivar_in_file(): avoid call to rollback_lock_file() dump_marks(): remove a redundant call to rollback_lock_file() api-lockfile: document edge cases commit_lock_file(): rollback lock file on failure to rename ...
This commit is contained in:
16
config.c
16
config.c
@ -6,6 +6,7 @@
|
||||
*
|
||||
*/
|
||||
#include "cache.h"
|
||||
#include "lockfile.h"
|
||||
#include "exec_cmd.h"
|
||||
#include "strbuf.h"
|
||||
#include "quote.h"
|
||||
@ -2040,9 +2041,9 @@ int git_config_set_multivar_in_file(const char *config_filename,
|
||||
MAP_PRIVATE, in_fd, 0);
|
||||
close(in_fd);
|
||||
|
||||
if (chmod(lock->filename, st.st_mode & 07777) < 0) {
|
||||
if (chmod(lock->filename.buf, st.st_mode & 07777) < 0) {
|
||||
error("chmod on %s failed: %s",
|
||||
lock->filename, strerror(errno));
|
||||
lock->filename.buf, strerror(errno));
|
||||
ret = CONFIG_NO_WRITE;
|
||||
goto out_free;
|
||||
}
|
||||
@ -2099,6 +2100,7 @@ int git_config_set_multivar_in_file(const char *config_filename,
|
||||
if (commit_lock_file(lock) < 0) {
|
||||
error("could not commit config file %s", config_filename);
|
||||
ret = CONFIG_NO_WRITE;
|
||||
lock = NULL;
|
||||
goto out_free;
|
||||
}
|
||||
|
||||
@ -2121,7 +2123,7 @@ out_free:
|
||||
return ret;
|
||||
|
||||
write_err_out:
|
||||
ret = write_error(lock->filename);
|
||||
ret = write_error(lock->filename.buf);
|
||||
goto out_free;
|
||||
|
||||
}
|
||||
@ -2222,9 +2224,9 @@ int git_config_rename_section_in_file(const char *config_filename,
|
||||
|
||||
fstat(fileno(config_file), &st);
|
||||
|
||||
if (chmod(lock->filename, st.st_mode & 07777) < 0) {
|
||||
if (chmod(lock->filename.buf, st.st_mode & 07777) < 0) {
|
||||
ret = error("chmod on %s failed: %s",
|
||||
lock->filename, strerror(errno));
|
||||
lock->filename.buf, strerror(errno));
|
||||
goto out;
|
||||
}
|
||||
|
||||
@ -2245,7 +2247,7 @@ int git_config_rename_section_in_file(const char *config_filename,
|
||||
}
|
||||
store.baselen = strlen(new_name);
|
||||
if (!store_write_section(out_fd, new_name)) {
|
||||
ret = write_error(lock->filename);
|
||||
ret = write_error(lock->filename.buf);
|
||||
goto out;
|
||||
}
|
||||
/*
|
||||
@ -2271,7 +2273,7 @@ int git_config_rename_section_in_file(const char *config_filename,
|
||||
continue;
|
||||
length = strlen(output);
|
||||
if (write_in_full(out_fd, output, length) != length) {
|
||||
ret = write_error(lock->filename);
|
||||
ret = write_error(lock->filename.buf);
|
||||
goto out;
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user