Re: [PATCH 07/14] register_tempfile(): new function to handle an existing temporary file
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Jun 10, 2015, 17:55 UTC
- Message-ID
- <xmqqioavla74.fsf@gitster.dls.corp.google.com>
- In-Reply-To
- <d0507ec9bdc63b9532bbb348e4505d311ef3c5dc.1433751986.git.mhagger@alum.mit.edu>
Michael Haggerty <mhagger@alum.mit.edu> writes:
Show 6 quoted lines
> Allow an existing file to be registered with the tempfile-handling > infrastructure; in particular, arrange for it to be deleted on program > exit. > > Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu> > ---
Hmph. Where does such a tempfile that is not on list come from?
Puzzled, but let's read on---this could for example become an internal implementation detail for create_tempfile(). Also I cannot tell which one of register_tempfile() and register_tempfile_object() I should be calling when updating the implementation of this API from their names.
Show 39 quoted lines
> diff --git a/tempfile.c b/tempfile.c
> index 890075f..235fc85 100644
> --- a/tempfile.c
> +++ b/tempfile.c
> @@ -82,6 +82,15 @@ int create_tempfile(struct tempfile *tempfile, const char *path)
> return tempfile->fd;
> }
>
> +void register_tempfile(struct tempfile *tempfile, const char *path)
> +{
> + register_tempfile_object(tempfile, path);
> +
> + strbuf_add_absolute_path(&tempfile->filename, path);
> + tempfile->owner = getpid();
> + tempfile->active = 1;
> +}
> +
> int mks_tempfile_sm(struct tempfile *tempfile,
> const char *template, int suffixlen, int mode)
> {
> diff --git a/tempfile.h b/tempfile.h
> index 6276156..18ff963 100644
> --- a/tempfile.h
> +++ b/tempfile.h
> @@ -145,6 +145,14 @@ struct tempfile {
> */
> extern int create_tempfile(struct tempfile *tempfile, const char *path);
>
> +/*
> + * Register an existing file as a tempfile, meaning that it will be
> + * deleted when the program exits. The tempfile is considered closed,
> + * but it can be worked with like any other closed tempfile (for
> + * example, it can be opened using reopen_tempfile()).
> + */
> +extern void register_tempfile(struct tempfile *tempfile, const char *path);
> +
>
> /*
> * mks_tempfile functions