Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
View | Details | Raw Unified | Return to bug 288183
Collapse All | Expand All

(-)a/lib/tempname.c (-15 / +8 lines)
Lines 41-48 Link Here
41
# define TMP_MAX 238328
41
# define TMP_MAX 238328
42
#endif
42
#endif
43
#ifndef __GT_FILE
43
#ifndef __GT_FILE
44
# define __GT_FILE	0
44
# define __GT_FILE	1
45
# define __GT_BIGFILE	1
46
# define __GT_DIR	2
45
# define __GT_DIR	2
47
# define __GT_NOCREATE	3
46
# define __GT_NOCREATE	3
48
#endif
47
#endif
Lines 61-72 Link Here
61
60
62
#if _LIBC
61
#if _LIBC
63
# define struct_stat64 struct stat64
62
# define struct_stat64 struct stat64
64
# define small_open __open
65
# define large_open __open64
66
#else
63
#else
67
# define struct_stat64 struct stat
64
# define struct_stat64 struct stat
68
# define small_open open
65
# define __open open
69
# define large_open open
70
# define __gen_tempname gen_tempname
66
# define __gen_tempname gen_tempname
71
# define __getpid getpid
67
# define __getpid getpid
72
# define __gettimeofday gettimeofday
68
# define __gettimeofday gettimeofday
Lines 172-183 static const char letters[] = Link Here
172
                        at the time of the call.
168
                        at the time of the call.
173
   __GT_FILE:		create the file using open(O_CREAT|O_EXCL)
169
   __GT_FILE:		create the file using open(O_CREAT|O_EXCL)
174
                        and return a read-write fd.  The file is mode 0600.
170
                        and return a read-write fd.  The file is mode 0600.
175
   __GT_BIGFILE:	same as __GT_FILE but use open64().
176
   __GT_DIR:		create a directory, which will be mode 0700.
171
   __GT_DIR:		create a directory, which will be mode 0700.
177
172
178
   We use a clever algorithm to get hard-to-predict names. */
173
   We use a clever algorithm to get hard-to-predict names. */
179
int
174
int
180
gen_tempname_len (char *tmpl, int kind, size_t x_suffix_len)
175
gen_tempname_len (char *tmpl, int flags, int kind, size_t x_suffix_len)
181
{
176
{
182
  size_t len;
177
  size_t len;
183
  char *XXXXXX;
178
  char *XXXXXX;
Lines 230-240 gen_tempname_len (char *tmpl, int kind, size_t x_suffix_len) Link Here
230
      switch (kind)
225
      switch (kind)
231
        {
226
        {
232
        case __GT_FILE:
227
        case __GT_FILE:
233
          fd = small_open (tmpl, O_RDWR | O_CREAT | O_EXCL, S_IRUSR | S_IWUSR);
228
          fd = __open (tmpl,
234
          break;
229
                       (flags & ~0777) | O_RDWR | O_CREAT | O_EXCL,
235
230
                       S_IRUSR | S_IWUSR);
236
        case __GT_BIGFILE:
237
          fd = large_open (tmpl, O_RDWR | O_CREAT | O_EXCL, S_IRUSR | S_IWUSR);
238
          break;
231
          break;
239
232
240
        case __GT_DIR:
233
        case __GT_DIR:
Lines 295-301 gen_tempname_len (char *tmpl, int kind, size_t x_suffix_len) Link Here
295
}
288
}
296
289
297
int
290
int
298
__gen_tempname (char *tmpl, int kind)
291
__gen_tempname (char *tmpl, int flags, int kind)
299
{
292
{
300
  return gen_tempname_len (tmpl, kind, 6);
293
  return gen_tempname_len (tmpl, flags, kind, 6);
301
}
294
}
(-)a/lib/tempname.h (-2 / +3 lines)
Lines 37-41 Link Here
37
37
38
   We use a clever algorithm to get hard-to-predict names. */
38
   We use a clever algorithm to get hard-to-predict names. */
39
#include <stddef.h>
39
#include <stddef.h>
40
extern int gen_tempname (char *tmpl, int kind);
40
extern int gen_tempname (char *tmpl, int flags, int kind);
41
extern int gen_tempname_len (char *tmpl, int kind, size_t x_suffix_len);
41
extern int gen_tempname_len (char *tmpl, int flags, int kind,
42
                             size_t x_suffix_len);
(-)a/src/mktemp.c (-3 / +2 lines)
Lines 114-126 count_trailing_X_s (const char *s) Link Here
114
static int
114
static int
115
mkstemp_len (char *tmpl, size_t suff_len, bool dry_run)
115
mkstemp_len (char *tmpl, size_t suff_len, bool dry_run)
116
{
116
{
117
  return gen_tempname_len (tmpl, dry_run ? GT_NOCREATE : GT_FILE, suff_len);
117
  return gen_tempname_len (tmpl, 0, dry_run ? GT_NOCREATE : GT_FILE, suff_len);
118
}
118
}
119
119
120
static int
120
static int
121
mkdtemp_len (char *tmpl, size_t suff_len, bool dry_run)
121
mkdtemp_len (char *tmpl, size_t suff_len, bool dry_run)
122
{
122
{
123
  return gen_tempname_len (tmpl, dry_run ? GT_NOCREATE : GT_DIR, suff_len);
123
  return gen_tempname_len (tmpl, 0, dry_run ? GT_NOCREATE : GT_DIR, suff_len);
124
}
124
}
125
125
126
int
126
int
127
- 

Return to bug 288183