--- a/env.c Wed Nov 11 15:25:41 2009 +0200
+++ b/env.c Fri Nov 13 17:48:13 2009 +0200
@@ -23,6 +23,8 @@
#include <gmodule.h>
#include <string.h>
#include <stdlib.h>
+#include <unistd.h>
+#include <errno.h>
#include "utils.h"
#include "compl.h"
@@ -96,10 +98,24 @@
free_arg_lst (args);
}
+// /cd [path]
+static void do_cd (char *arg)
+{
+ if (!*arg) { // get
+ char cwd[256];
+ if (getcwd (cwd, 256) == NULL)
+ scr_LogPrint (LPRINT_NORMAL, "Cannot obtain current working directory: %s.", strerror (errno));
+ else
+ scr_LogPrint (LPRINT_NORMAL, "%s", cwd);
+ } else if (chdir (arg) == -1) // set
+ scr_LogPrint (LPRINT_NORMAL, "Cannot change current working directory: %s.", strerror (errno));
+}
+
const gchar *g_module_check_init(GModule *module)
{
// command
cmd_add ("env", "", 0, 0, do_env, NULL);
+ cmd_add ("cd", "", COMPL_FILENAME, 0, do_cd, NULL);
return NULL;
}
@@ -107,7 +123,8 @@
void g_module_unload(GModule *module)
{
// command
+ cmd_del ("cd");
cmd_del ("env");
}
-/* vim: se ts=4: */
+/* vim: se ts=4 sw=4: */