diff options
author | Michael Haggerty <mhagger@alum.mit.edu> | 2015-08-10 11:47:42 +0200 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2015-08-10 12:57:14 -0700 |
commit | 7eba6ce5c79447579689218d8dab59a8434fd7c7 (patch) | |
tree | 8b7bad1293e78afb396cc5289cee20968548d728 /tempfile.c | |
parent | tempfile: a new module for handling temporary files (diff) | |
download | tgif-7eba6ce5c79447579689218d8dab59a8434fd7c7.tar.xz |
prepare_tempfile_object(): new function, extracted from create_tempfile()
This makes the next step easier.
The old code used to use "path" to set the initial length of
tempfile->filename. This was not helpful because path was usually
relative whereas the value stored to filename will be absolute. So
just initialize the length to 0.
Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'tempfile.c')
-rw-r--r-- | tempfile.c | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/tempfile.c b/tempfile.c index d8358187f8..d840f0452a 100644 --- a/tempfile.c +++ b/tempfile.c @@ -85,11 +85,11 @@ static void remove_tempfiles_on_signal(int signo) raise(signo); } -/* Make sure errno contains a meaningful value on error */ -int create_tempfile(struct tempfile *tempfile, const char *path) +/* + * Initialize *tempfile if necessary and add it to tempfile_list. + */ +static void prepare_tempfile_object(struct tempfile *tempfile) { - size_t pathlen = strlen(path); - if (!tempfile_list) { /* One-time initialization */ sigchain_push_common(remove_tempfiles_on_signal); @@ -97,21 +97,27 @@ int create_tempfile(struct tempfile *tempfile, const char *path) } if (tempfile->active) - die("BUG: create_tempfile called for active object"); + die("BUG: prepare_tempfile_object called for active object"); if (!tempfile->on_list) { /* Initialize *tempfile and add it to tempfile_list: */ tempfile->fd = -1; tempfile->fp = NULL; tempfile->active = 0; tempfile->owner = 0; - strbuf_init(&tempfile->filename, pathlen); + strbuf_init(&tempfile->filename, 0); tempfile->next = tempfile_list; tempfile_list = tempfile; tempfile->on_list = 1; } else if (tempfile->filename.len) { /* This shouldn't happen, but better safe than sorry. */ - die("BUG: create_tempfile called for improperly-reset object"); + die("BUG: prepare_tempfile_object called for improperly-reset object"); } +} + +/* Make sure errno contains a meaningful value on error */ +int create_tempfile(struct tempfile *tempfile, const char *path) +{ + prepare_tempfile_object(tempfile); strbuf_add_absolute_path(&tempfile->filename, path); tempfile->fd = open(tempfile->filename.buf, O_RDWR | O_CREAT | O_EXCL, 0666); |