commit be7ce7ce020aa928cb681a0c23ac4ae7a350a42b from: Stefan Sperling via: Thomas Adam date: Sat Jul 26 10:36:08 2025 UTC replace ftruncate+lseek with equivalents from opentemp.c, where available commit - 14551591612b0ec1b9956851d2e3bb672761636b commit + be7ce7ce020aa928cb681a0c23ac4ae7a350a42b blob - 9a191a4cb86e69de67b69d6be99e91a1d7e5b3a7 blob + cdb690ec9b82d32922882b16c1619ac604e5b8d5 --- gotd/session_write.c +++ gotd/session_write.c @@ -223,6 +223,7 @@ recv_packfile_received(int *pack_empty, struct imsg *i static const struct got_error * request_gotsys_conf(struct gotd_imsgev *iev) { + const struct got_error *err = NULL; struct gotd_imsg_packfile_get_content content_req; const char *refname = "refs/heads/main"; const char *path = "gotsys.conf"; @@ -230,10 +231,9 @@ request_gotsys_conf(struct gotd_imsgev *iev) size_t len; int fd = -1; - if (ftruncate(gotd_session.content_fd, 0L) == -1) - return got_error_from_errno("ftruncate"); - if (lseek(gotd_session.content_fd, 0L, SEEK_SET) == -1) - return got_error_from_errno("lseek"); + err = got_opentemp_truncatefd(gotd_session.content_fd); + if (err) + return err; len = sizeof(content_req) + strlen(refname) + strlen(path); wbuf = imsg_create(&iev->ibuf, GOTD_IMSG_PACKFILE_GET_CONTENT, blob - 67115ca0e835945a579386472c68a9561804ee5c blob + de3b5c530209dfd7fd4ee70ed891e96ad029fc17 --- gotsysd/libexec/gotsys-write-conf/gotsys-write-conf.c +++ gotsysd/libexec/gotsys-write-conf/gotsys-write-conf.c @@ -331,10 +331,9 @@ write_gotd_conf(void) char repo_path[_POSIX_PATH_MAX]; struct timespec now; - if (ftruncate(gotd_conf_tmpfd, 0) == -1) - return got_error_from_errno("ftruncate"); - if (lseek(gotd_conf_tmpfd, 0L, SEEK_SET) == -1) - return got_error_from_errno("lseek"); + err = got_opentemp_truncatefd(gotd_conf_tmpfd); + if (err) + return err; if (clock_gettime(CLOCK_MONOTONIC, &now) == -1) return got_error_from_errno("clock_gettime"); blob - 350b071b5f1207561991a4b1816c64f39e1bb1cf blob + d4028086ccc9c000cb8dd99582b7dbd43e4bd3b0 --- gotwebd/got_operations.c +++ gotwebd/got_operations.c @@ -38,6 +38,7 @@ #include "got_commit_graph.h" #include "got_blame.h" #include "got_privsep.h" +#include "got_opentemp.h" #include "gotwebd.h" #include "log.h" @@ -56,13 +57,8 @@ const struct got_error * got_gotweb_closefile(FILE *f) { const struct got_error *err = NULL; - - if (fseek(f, 0, SEEK_SET) == -1) - err = got_error_from_errno("fseek"); - if (ftruncate(fileno(f), 0) == -1 && err == NULL) - err = got_error_from_errno("ftruncate"); - + err = got_opentemp_truncate(f); if (fclose(f) == EOF && err == NULL) err = got_error_from_errno("fclose"); blob - c443107e5db49c2345a36a6bc569434aa7c0fb83 blob + e93015e7ed128c87069556155e432be030c04dc3 --- lib/object_open_io.c +++ lib/object_open_io.c @@ -31,6 +31,7 @@ #include "got_object.h" #include "got_repository.h" #include "got_path.h" +#include "got_opentemp.h" #include "got_lib_delta.h" #include "got_lib_hash.h" @@ -171,11 +172,9 @@ wrap_fd(FILE **f, int wrapped_fd) const struct got_error *err = NULL; int fd; - if (ftruncate(wrapped_fd, 0L) == -1) - return got_error_from_errno("ftruncate"); - - if (lseek(wrapped_fd, 0L, SEEK_SET) == -1) - return got_error_from_errno("lseek"); + err = got_opentemp_truncatefd(wrapped_fd); + if (err) + return err; fd = dup(wrapped_fd); if (fd == -1) @@ -757,14 +756,9 @@ open_blob(struct got_blob_object **blob, struct got_re goto done; } - if (ftruncate(outfd, 0L) == -1) { - err = got_error_from_errno("ftruncate"); + err = got_opentemp_truncatefd(outfd); + if (err) goto done; - } - if (lseek(outfd, 0L, SEEK_SET) == -1) { - err = got_error_from_errno("lseek"); - goto done; - } err = got_repo_search_packidx(&packidx, &idx, repo, id); if (err == NULL) { blob - 353d91c5566e2cf939a1d1b2aea2461aec1de39c blob + 010744e377a9c375f87ed601fac9a674f7a112f3 --- lib/object_open_privsep.c +++ lib/object_open_privsep.c @@ -942,14 +942,9 @@ open_blob(struct got_blob_object **blob, struct got_re goto done; } - if (ftruncate(outfd, 0L) == -1) { - err = got_error_from_errno("ftruncate"); - goto done; - } - if (lseek(outfd, 0L, SEEK_SET) == -1) { - err = got_error_from_errno("lseek"); + err = got_opentemp_truncatefd(outfd); + if (err) goto done; - } err = got_repo_search_packidx(&packidx, &idx, repo, id); if (err == NULL) { blob - 6ba6d58350e8b94da24107ad45bdfcec87ba08bc blob + 8903a6bf506a3f10ca50910b71b1b63a46822906 --- lib/repository.c +++ lib/repository.c @@ -384,6 +384,7 @@ got_repo_temp_fds_set(struct got_repository *repo, int const struct got_error * got_repo_temp_fds_get(int *fd, int *idx, struct got_repository *repo) { + const struct got_error *err = NULL; int i; *fd = -1; @@ -393,10 +394,9 @@ got_repo_temp_fds_get(int *fd, int *idx, struct got_re if (repo->tempfile_use_mask & (1 << i)) continue; if (repo->tempfiles[i] != -1) { - if (ftruncate(repo->tempfiles[i], 0L) == -1) - return got_error_from_errno("ftruncate"); - if (lseek(repo->tempfiles[i], 0L, SEEK_SET) == -1) - return got_error_from_errno("lseek"); + err = got_opentemp_truncatefd(repo->tempfiles[i]); + if (err) + return err; *fd = repo->tempfiles[i]; *idx = i; repo->tempfile_use_mask |= (1 << i); @@ -1601,14 +1601,12 @@ got_repo_cache_pack(struct got_pack **packp, struct go err = got_pack_close(&repo->packs[i]); if (err) return err; - if (ftruncate(repo->packs[i].basefd, 0L) == -1) - return got_error_from_errno("ftruncate"); - if (lseek(repo->packs[i].basefd, 0L, SEEK_SET) == -1) - return got_error_from_errno("lseek"); - if (ftruncate(repo->packs[i].accumfd, 0L) == -1) - return got_error_from_errno("ftruncate"); - if (lseek(repo->packs[i].accumfd, 0L, SEEK_SET) == -1) - return got_error_from_errno("lseek"); + err = got_opentemp_truncatefd(repo->packs[i].basefd); + if (err) + return err; + err = got_opentemp_truncatefd(repo->packs[i].accumfd); + if (err) + return err; } if (i != 0) {