blob: 168cc366077859451b4acd230a52e6eb16774a6e (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
|
#ifndef tempfile_h
#define tempfile_h
#include "config.h"
#include <sys/types.h>
#include "exittrap.h"
#if HAVE_FCNTL_H
#include <fcntl.h>
#endif
#if SHARED_TEMPDIR
#include <stdio.h>
#endif
///////////////////////////////////////////////////////////////////////////
//
// We need to keep track of all temporary files we've opened, and close
// them if the process terminates.
//
// A TempFile object represents one temporary file currently in use.
// Open() method, if succesfull, returns a file descriptor, and saves
// the filename internally in the object.
// It is necessary to call Close() to close the descriptor (also saved
// internally) in order to mark the temporary file as no longer being
// in use. Close() will automatically delete the file.
//
///////////////////////////////////////////////////////////////////////////
class TempFile : public ExitTrap {
protected:
void cleanup();
void forked();
#if SHARED_TEMPDIR
FILE *fp; /* tmpfile() output */
#endif
char *filename;
int fd;
int do_remove;
public:
TempFile();
~TempFile();
int Open(const char *, int, mode_t=0666);
#if SHARED_TEMPDIR
int Open();
#endif
protected:
void name(const char *); // Partial initialization
void descriptor(int fd_) { fd=fd_; }
public:
void Close();
} ;
#endif
|