/* Make sure errno contains a meaningful value on error */
static int lock_file(struct lock_file *lk, const char *path, int flags)
{
- int fd;
struct strbuf filename = STRBUF_INIT;
strbuf_addstr(&filename, path);
resolve_symlink(&filename);
strbuf_addstr(&filename, LOCK_SUFFIX);
- fd = create_tempfile(&lk->tempfile, filename.buf);
+ lk->tempfile = create_tempfile(filename.buf);
strbuf_release(&filename);
- return fd;
+ return lk->tempfile ? lk->tempfile->fd : -1;
}
/*
{
struct strbuf ret = STRBUF_INIT;
- strbuf_addstr(&ret, get_tempfile_path(&lk->tempfile));
+ strbuf_addstr(&ret, get_tempfile_path(lk->tempfile));
if (ret.len <= LOCK_SUFFIX_LEN ||
strcmp(ret.buf + ret.len - LOCK_SUFFIX_LEN, LOCK_SUFFIX))
- die("BUG: get_locked_file_path() called for malformed lock object");
+ BUG("get_locked_file_path() called for malformed lock object");
/* remove ".lock": */
strbuf_setlen(&ret, ret.len - LOCK_SUFFIX_LEN);
return strbuf_detach(&ret, NULL);