summaryrefslogtreecommitdiffstats
path: root/src/temp.sh
diff options
context:
space:
mode:
authorP. J. McDermott <pj@pehjota.net>2015-10-28 10:08:31 (EDT)
committer P. J. McDermott <pj@pehjota.net>2015-10-28 10:08:31 (EDT)
commit4fd47d8a304e722261d153d9db11e354fb167e42 (patch)
treea8b0ba02a8d3aae28a9f8816a0ee284df2754764 /src/temp.sh
parentf284655ac148624c98253dcbe1c22590ca0b070b (diff)
downloadfirman.sh-4fd47d8a304e722261d153d9db11e354fb167e42.zip
firman.sh-4fd47d8a304e722261d153d9db11e354fb167e42.tar.gz
firman.sh-4fd47d8a304e722261d153d9db11e354fb167e42.tar.bz2
src/temp.sh: New file
Diffstat (limited to 'src/temp.sh')
-rw-r--r--src/temp.sh54
1 files changed, 54 insertions, 0 deletions
diff --git a/src/temp.sh b/src/temp.sh
new file mode 100644
index 0000000..2e6885d
--- /dev/null
+++ b/src/temp.sh
@@ -0,0 +1,54 @@
+# Temporary file management
+#
+# Copyright (C) 2015 Patrick "P. J." McDermott
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+temp_dir=''
+
+temp_init()
+{
+ local tmpdir=''
+
+ if [ "x${TMPDIR:+set}" = 'xset' ]; then
+ tmpdir="${TMPDIR}"
+ else
+ tmpdir='/tmp'
+ fi
+
+ rand
+ temp_dir="${tmpdir}/firman-$(printf '%010d' ${rand_x})"
+ if ! mkdir "${temp_dir}"; then
+ err 'Failed to create temporary directory'
+ return 1
+ fi
+
+ return 0
+}
+
+temp_fini()
+{
+ if ! rmdir "${temp_dir}"; then
+ err 'Failed to remove temporary directory'
+ return 1
+ fi
+
+ return 0
+}
+
+get_temp_dir()
+{
+ printf '%s' "${temp_dir}"
+ return 0
+}