commit - 816dc65482b52c96c56a51b75215584b84eda1ee
commit + af54ae4ac103d1529bb5e06bfd22ed88d78fed29
blob - 28e60df1feddc66aaa4be09871a80d53f3834ae8
blob + 1e6da727f7787dd70ee6ecadf0cc83c45400d0fe
--- lib/worktree.c
+++ lib/worktree.c
struct got_blob_object *blob2 = NULL;
FILE *f1 = NULL, *f2 = NULL;
char *blob1_path = NULL, *blob2_path = NULL;
- char *merged_path = NULL;
+ char *merged_path = NULL, *base_path = NULL;
struct got_object_id id2;
char *id_str = NULL;
char *label1 = NULL;
int overlapcnt = 0;
+ char *parent;
- err = got_opentemp_named_fd(&merged_path, &merged_fd, "/tmp/got-merged");
+ parent = dirname(ondisk_path);
+ if (parent == NULL)
+ return got_error_from_errno();
+
+ if (asprintf(&base_path, "%s/got-merged", parent) == -1)
+ return got_error_from_errno();
+
+ err = got_opentemp_named_fd(&merged_path, &merged_fd, base_path);
if (err)
- return err;
- err = got_opentemp_named(&blob1_path, &f1, "/tmp/got-merge-blob1");
+ goto done;
+
+ free(base_path);
+ if (asprintf(&base_path, "%s/got-merge-blob1", parent) == -1) {
+ err = got_error_from_errno();
+ base_path = NULL;
+ goto done;
+ }
+
+ err = got_opentemp_named(&blob1_path, &f1, base_path);
if (err)
goto done;
err = got_object_blob_dump_to_file(NULL, NULL, f1, blob1);
if (err)
goto done;
- err = got_opentemp_named(&blob2_path, &f2, "/tmp/got-merge-blob2");
+ free(base_path);
+ if (asprintf(&base_path, "%s/got-merge-blob2", parent) == -1) {
+ err = got_error_from_errno();
+ base_path = NULL;
+ goto done;
+ }
+
+ err = got_opentemp_named(&blob2_path, &f2, base_path);
if (err)
goto done;
if (blob2)
got_object_blob_close(blob2);
free(merged_path);
+ free(base_path);
if (blob1_path) {
unlink(blob1_path);
free(blob1_path);