diff options
author | EuAndreh <eu@euandre.org> | 2021-07-15 14:56:58 -0300 |
---|---|---|
committer | EuAndreh <eu@euandre.org> | 2021-07-15 15:22:12 -0300 |
commit | 42354876de823f52a431eac900d360c074c6198d (patch) | |
tree | 0b640a85a4375d51c01b9f05937eb562e776a5bf /aux/lib.sh | |
parent | TODOs.md: Add #task-f4807694-2187-5cb5-115e-c5970a052f1f (diff) | |
download | git-permalink-42354876de823f52a431eac900d360c074c6198d.tar.gz git-permalink-42354876de823f52a431eac900d360c074c6198d.tar.xz |
aux/lib.sh: Add mkstemp and mkdtemp, and copy uuid over
The tests were relying on the unspecified and non-standartized
behaviour of "mktemp". Now they use "mkstemp()", a shim sh function to
provide the expected behaviour, and an accompanying "mkdtemp()"
function is also defined.
To further decouple from specific implementations and OS-behaviours and
quirks, a aux/lib.sh file containing both those functions was added.
Its purpose is to also allow code under aux/ to not depend on specific
behaviour.
"mkdtemp()" had to be replicated in aux/ci/ci-build.sh, since it runs
outside the repository.
Diffstat (limited to 'aux/lib.sh')
-rwxr-xr-x | aux/lib.sh | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/aux/lib.sh b/aux/lib.sh new file mode 100755 index 0000000..c31c4fb --- /dev/null +++ b/aux/lib.sh @@ -0,0 +1,30 @@ +#!/bin/sh + +# +# Generally, utilities that I expected to exist in POSIX, but don't. +# + +uuid() { + # Taken from: + # https://serverfault.com/a/799198 + od -xN20 /dev/urandom | \ + head -1 | \ + awk '{OFS="-"; print $2$3,$4,$5,$6,$7$8$9}' +} + +tmpname() { + echo 'mkstemp(template)' | m4 -D template="${TMPDIR:-/tmp}/m4-tmpname." +} + +mkstemp() { + name="$(tmpname)" + touch "$name" + echo "$name" +} + +mkdtemp() { + name="$(tmpname)" + rm -f "$name" + mkdir "$name" + echo "$name" +} |