Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
register_tempfile(): new function to handle an existing temporary file
Allow an existing file to be registered with the tempfile-handling
infrastructure; in particular, arrange for it to be deleted on program
exit. This can be used if the temporary file has to be created in a
more complicated way than just open(). For example:

* If the file itself needs to be created via the lockfile API
* If it is not a regular file (e.g., a socket)

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
mhagger authored and gitster committed Aug 10, 2015
1 parent 354ab11 commit 9939715
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 0 deletions.
8 changes: 8 additions & 0 deletions tempfile.c
Expand Up @@ -137,6 +137,14 @@ int create_tempfile(struct tempfile *tempfile, const char *path)
return tempfile->fd;
}

void register_tempfile(struct tempfile *tempfile, const char *path)
{
prepare_tempfile_object(tempfile);
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)
{
Expand Down
8 changes: 8 additions & 0 deletions tempfile.h
Expand Up @@ -92,6 +92,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
Expand Down

0 comments on commit 9939715

Please sign in to comment.