guile-user
[Top][All Lists]
Advanced

[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
}





reply via email to

[Prev in Thread] Current Thread [Next in Thread]