#include "object.h"
#include "commit.h"
#include "tag.h"
+#include "packfile.h"
/*
* Create the file "path" by writing to a temporary file and renaming
char *tmp = mkpathdup("%s_XXXXXX", path);
int ret = -1;
int fd = -1;
- FILE *fp = NULL;
+ FILE *fp = NULL, *to_close;
safe_create_leading_directories(path);
fd = git_mkstemp_mode(tmp, 0666);
if (fd < 0)
goto out;
- fp = fdopen(fd, "w");
+ to_close = fp = fdopen(fd, "w");
if (!fp)
goto out;
+ fd = -1;
ret = generate(fp);
if (ret)
goto out;
- if (fclose(fp))
+ fp = NULL;
+ if (fclose(to_close))
goto out;
if (adjust_shared_perm(tmp) < 0)
goto out;
int flag, void *cb_data)
{
FILE *fp = cb_data;
- struct object *o = parse_object(oid->hash);
+ struct object *o = parse_object(oid);
if (!o)
return -1;
char line[1000];
int old_cnt = 0;
- fp = fopen(infofile, "r");
+ fp = fopen_or_warn(infofile, "r");
if (!fp)
return 1; /* nonexistent is not an error. */