generator.ml: constify do_mkdtemp

* daemon/dir.c (do_mkdtemp): Rewrite for a "const" parameter.
* src/generator.ml (mkdtemp): Declare parameter to be of type Pathname.
This commit is contained in:
Jim Meyering
2009-08-11 17:17:08 +02:00
parent d70eb3c45b
commit 1f0810eb3a
2 changed files with 10 additions and 21 deletions

View File

@@ -185,31 +185,22 @@ do_is_dir (const char *path)
}
char *
do_mkdtemp (char *template)
do_mkdtemp (const char *template)
{
char *r;
NEED_ROOT (return NULL);
ABS_PATH (template, return NULL);
char *writable = strdup (template);
if (writable == NULL) {
reply_with_perror ("strdup");
return NULL;
}
CHROOT_IN;
r = mkdtemp (template);
char *r = mkdtemp (writable);
CHROOT_OUT;
if (r == NULL) {
reply_with_perror ("mkdtemp: %s", template);
return NULL;
free (writable);
}
/* The caller will free template AND try to free the return value,
* so we must make a copy here.
*/
if (r == template) {
r = strdup (template);
if (r == NULL) {
reply_with_perror ("strdup");
return NULL;
}
}
return r;
}

View File

@@ -2621,8 +2621,7 @@ containing C<dir>.
It is an interface to the L<scrub(1)> program. See that
manual page for more details.");
(* FIXME: make this a WritableString? *)
("mkdtemp", (RString "dir", [String "template"]), 117, [],
("mkdtemp", (RString "dir", [Pathname "template"]), 117, [],
[InitBasicFS, Always, TestRun (
[["mkdir"; "/tmp"];
["mkdtemp"; "/tmp/tmpXXXXXX"]])],
@@ -4762,7 +4761,7 @@ and generate_daemon_actions () =
| Pathname n ->
pr " char *%s = args.%s;\n" n n;
pr " ABS_PATH (%s, goto done);\n" n;
| Device n ->
| Device n ->
pr " char *%s = args.%s;\n" n n;
pr " RESOLVE_DEVICE (%s, goto done);" n;
| String n -> pr " char *%s = args.%s;\n" n n
@@ -6843,7 +6842,6 @@ DESTROY (g)
iteri (
fun i ->
function
(* FIXME: ? *)
| Pathname n | Device n | String n | FileIn n | FileOut n ->
pr " char *%s;\n" n
| OptString n ->