summaryrefslogtreecommitdiffstats
path: root/usr.sbin/pkg_install/lib/pen.c
diff options
context:
space:
mode:
authorjkh <jkh@FreeBSD.org>1993-08-26 01:19:55 +0000
committerjkh <jkh@FreeBSD.org>1993-08-26 01:19:55 +0000
commite83dde8008ab2f058dd1aa3ff1d31f1eeeaac82e (patch)
tree271e80eb2d3e22321d9c07c63334f17c43aee9a8 /usr.sbin/pkg_install/lib/pen.c
parentbed7953d0efa52e8dd7e4fbdddd298b715fbf72d (diff)
downloadFreeBSD-src-e83dde8008ab2f058dd1aa3ff1d31f1eeeaac82e.zip
FreeBSD-src-e83dde8008ab2f058dd1aa3ff1d31f1eeeaac82e.tar.gz
The release version of my package install suite. Please see man pages
for info.
Diffstat (limited to 'usr.sbin/pkg_install/lib/pen.c')
-rw-r--r--usr.sbin/pkg_install/lib/pen.c63
1 files changed, 63 insertions, 0 deletions
diff --git a/usr.sbin/pkg_install/lib/pen.c b/usr.sbin/pkg_install/lib/pen.c
new file mode 100644
index 0000000..8a3416f
--- /dev/null
+++ b/usr.sbin/pkg_install/lib/pen.c
@@ -0,0 +1,63 @@
+#ifndef lint
+static const char *rcsid = "$Id: pen.c,v 1.1 1993/08/24 09:24:08 jkh Exp $";
+#endif
+
+/*
+ * FreeBSD install - a package for the installation and maintainance
+ * of non-core utilities.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * Jordan K. Hubbard
+ * 18 July 1993
+ *
+ * Routines for managing the "play pen".
+ *
+ */
+
+#include "lib.h"
+
+/* For keeping track of where we are */
+static char Cwd[FILENAME_MAX];
+static char Pen[FILENAME_MAX];
+
+
+/*
+ * Make a temporary directory to play in and chdir() to it, returning
+ * pathname of previous working directory.
+ */
+char *
+make_playpen(void)
+{
+ if (!getcwd(Cwd, FILENAME_MAX))
+ upchuck("getcwd");
+ strcpy(Pen, "/tmp/instmp.XXXXXX");
+ if (!mktemp(Pen))
+ barf("Can't mktemp '%s'.", Pen);
+ if (mkdir(Pen, 0755) == FAIL)
+ barf("Can't mkdir '%s'.", Pen);
+ if (chdir(Pen) == FAIL)
+ barf("Can't chdir to '%s'.", Pen);
+ return Cwd;
+}
+
+/* Convenience routine for getting out of playpen */
+void
+leave_playpen(void)
+{
+ if (Cwd[0]) {
+ if (chdir(Cwd) == FAIL)
+ barf("Can't chdir back to '%s'.", Cwd);
+ if (vsystem("rm -rf %s", Pen))
+ fprintf(stderr, "Couldn't remove temporary dir '%s'\n", Pen);
+ Cwd[0] = '\0';
+ }
+}
+
OpenPOWER on IntegriCloud