fish: Add setenv and unsetenv commands.
authorRichard W.M. Jones <rjones@redhat.com>
Sun, 7 Aug 2011 20:05:13 +0000 (21:05 +0100)
committerRichard W.M. Jones <rjones@redhat.com>
Sun, 7 Aug 2011 20:05:13 +0000 (21:05 +0100)
These commands allow you to manipulate the environment within
guestfish.

fish/Makefile.am
fish/setenv.c [new file with mode: 0644]
generator/generator_actions.ml
po/POTFILES.in

index 9e05170..22aaf4c 100644 (file)
@@ -96,6 +96,7 @@ guestfish_SOURCES = \
        rc.c \
        reopen.c \
        rmsd.h \
+       setenv.c \
        supported.c \
        tilde.c \
        time.c
diff --git a/fish/setenv.c b/fish/setenv.c
new file mode 100644 (file)
index 0000000..c9a0013
--- /dev/null
@@ -0,0 +1,69 @@
+/* guestfish - the filesystem interactive shell
+ * Copyright (C) 2011 Red Hat Inc.
+ *
+ * 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 2 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, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <config.h>
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "fish.h"
+
+int
+run_setenv (const char *cmd, size_t argc, char *argv[])
+{
+  const char *var;
+  const char *value;
+
+  if (argc != 2) {
+    fprintf (stderr, _("use '%s VAR value' to set an environment variable\n"),
+             cmd);
+    return -1;
+  }
+
+  var = argv[0];
+  value = argv[1];
+
+  if (setenv (var, value, 1) == -1) {
+    perror ("setenv");
+    return -1;
+  }
+
+  return 0;
+}
+
+int
+run_unsetenv (const char *cmd, size_t argc, char *argv[])
+{
+  const char *var;
+
+  if (argc != 1) {
+    fprintf (stderr, _("use '%s VAR' to unset an environment variable\n"),
+             cmd);
+    return -1;
+  }
+
+  var = argv[0];
+
+  if (unsetenv (var) == -1) {
+    perror ("unsetenv");
+    return -1;
+  }
+
+  return 0;
+}
index 56976dd..d2c26b6 100644 (file)
@@ -6295,6 +6295,17 @@ Close and reopen the libguestfs handle.  It is not necessary to use
 this normally, because the handle is closed properly when guestfish
 exits.  However this is occasionally useful for testing.");
 
+  ("setenv", (RErr,[], []), -1, [], [],
+   "set an environment variable",
+   "  setenv VAR value
+
+Set the environment variable C<VAR> to the string C<value>.
+
+To print the value of an environment variable use a shell command
+such as:
+
+ !echo $VAR");
+
   ("sparse", (RErr,[], []), -1, [], [],
    "create a sparse disk image and add",
    " sparse filename size
@@ -6329,4 +6340,10 @@ See also L<guestfs(3)/AVAILABILITY>.");
 Run the command as usual, but print the elapsed time afterwards.  This
 can be useful for benchmarking operations.");
 
+  ("unsetenv", (RErr,[], []), -1, [], [],
+   "unset an environment variable",
+   "  unsetenv VAR
+
+Remove C<VAR> from the environment.");
+
 ]
index 77dda98..01f7a0d 100644 (file)
@@ -111,6 +111,7 @@ fish/prepopts.c
 fish/progress.c
 fish/rc.c
 fish/reopen.c
+fish/setenv.c
 fish/supported.c
 fish/tilde.c
 fish/time.c