Fork me on GitHub

plash mkdtemp


Usage

plash mkdtemp

Description

Create a temporary directory in the plash data.

Tested Behaviour

#!/bin/bash

set -eux

• `plash clean` cleans tmpdir only if calling proccess died

tmpd=$(plash mkdtemp)
plash clean
file $tmpd

• created tmpdir is in PLASH_DATA

tmpdir="$(plash mkdtemp)"
[[ "$tmpdir" = "$PLASH_DATA"* ]]

• created tmpdir is writable

tmpdir="$(plash mkdtemp)"
touch "$tmpdir/file"
mkdir "$tmpdir/dir"

Source Code


#define USAGE "usage: plash mkdtemp\n"

#define _GNU_SOURCE
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

#include <plash.h>

int mkdtemp_main(int argc, char *argv[]) {
  char *tmpdir, *tmpdir_templ;
  if (asprintf(&tmpdir_templ, "%s/tmp/plashtmp_%d_%d_XXXXXX", pl_call("data"),
               getsid(0), getppid()) == -1)
    pl_fatal("asprintf");
  tmpdir = mkdtemp(tmpdir_templ);
  if (tmpdir == NULL)
    pl_fatal("mkdtemp: %s", tmpdir_templ);
  puts(tmpdir);
  return EXIT_SUCCESS;
}