[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: request tmpfile(3) wrapping in Guile 1.9 libguile
From: |
Thien-Thi Nguyen |
Subject: |
Re: request tmpfile(3) wrapping in Guile 1.9 libguile |
Date: |
Tue, 09 Feb 2010 10:07:14 +0100 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/23.1.91 (gnu/linux) |
() Andy Wingo <address@hidden>
() Mon, 08 Feb 2010 12:11:17 +0100
I think this sounds like a good idea. I have a few concerns, though if
none of them can be nicely addressed I'd still be happy adding tmpfile.
I'm happy to see Ken Raeburn answer these concerns. Personally, i find it
very nice to have an anonymous seekable chunk of filesystem to play with.
BTW (veering off-topic, but you started it!)... i dislike `mkstemp!'.
Its safe use requires `string-copy'. Why not have all that handled
automatically, including the "XXXXXX" suffixing? That's what i do
in Guile 1.4.x `mkstemp' (note, no "!").
thi
__________________________________________________
SCM_DEFINE
(scm_mkstemp, "mkstemp", 1, 0, 0,
(SCM base),
doc: /***********
Return a new port open on a temporary file named using string @var{base}.
The actual assigned filename, available via procedure @code{port-filename},
is @var{base} appended with six random characters. For example:
@lisp
(define p (mkstemp "/tmp/foo-"))
(port-filename p)
@result{} "/tmp/foo-hoQtxh"
@end lisp */)
{
#define FUNC_NAME s_scm_mkstemp
char *s;
size_t len;
int fd;
SCM_VALIDATE_STRING (1, base);
len = SCM_ROLENGTH (base) + 6 + 1;
s = alloca (len);
snprintf (s, len, "%sXXXXXX", SCM_ROCHARS (base));
if (PROB (fd = mkstemp (s)))
SCM_SYSERROR;
return scm_fdes_to_port (fd, "w+", STRFROM (s, len - 1));
#undef FUNC_NAME
}