Re: To Mutt Users in <20040415191135.GH2670@xxxxxxxx> > Not exactly, he wants a (global) default directory, which is a little > different from "save all tagged attachments to the same directory". But > a "cd" command in Mutt has also been requested some time ago. Here comes patch-1.5.6.cb.chdir.1... Christoph -- cb@xxxxxxxx | http://www.df7cb.de/
diff -ur ../MUTT/mutt/PATCHES mutt/PATCHES
--- ../MUTT/mutt/PATCHES 2002-12-09 18:44:54.000000000 +0100
+++ mutt/PATCHES 2004-04-15 22:35:57.000000000 +0200
@@ -0,0 +1 @@
+patch-1.5.6.cb.chdir.1
diff -ur ../MUTT/mutt/doc/manual.sgml.head mutt/doc/manual.sgml.head
--- ../MUTT/mutt/doc/manual.sgml.head 2004-04-12 23:51:08.000000000 +0200
+++ mutt/doc/manual.sgml.head 2004-04-15 23:00:37.000000000 +0200
@@ -963,6 +963,17 @@
name="reference">. The special function <tt/noop/ unbinds the specified key
sequence.
+
+<sect1>Changing the current working directory <label id="cd">
+<p>
+Usage: <tt/cd/ [ <em/directory/ ]
+
+The <tt/cd/ command changes Mutt's current working directory.
+This affects commands and functions like <tt/source/,
+<tt/change-folder/, and <tt/save-entry/ that use relative paths.
+Using <tt/cd/ without directory changes to your home directory.
+
+
<sect1>Defining aliases for character sets <label id="charset-hook">
<p>
Usage: <tt/charset-hook/ <em/alias/ <em/charset/<newline>
@@ -2995,6 +3006,8 @@
<item>
<tt><ref id="bind" name="bind"></tt> <em/map/ <em/key/ <em/function/
<item>
+<tt><ref id="cd" name="cd"></tt> <em/cd/ [ <em/directory/ ]
+<item>
<tt><ref id="charset-hook" name="charset-hook"></tt> <em/alias/ <em/charset/
<item>
<tt><ref id="color" name="color"></tt> <em/object/ <em/foreground/
<em/background/ [ <em/regexp/ ]
diff -ur ../MUTT/mutt/init.c mutt/init.c
--- ../MUTT/mutt/init.c 2004-04-12 21:55:24.000000000 +0200
+++ mutt/init.c 2004-04-15 22:27:03.000000000 +0200
@@ -1442,6 +1442,35 @@
return (source_rc (path, err));
}
+static int parse_cd (BUFFER *tmp, BUFFER *s, unsigned long data, BUFFER *err)
+{
+ char path[_POSIX_PATH_MAX];
+
+ if (mutt_extract_token (tmp, s, 0) != 0)
+ {
+ snprintf (err->data, err->dsize, _("cd: error at %s"), s->dptr);
+ return (-1);
+ }
+ if (MoreArgs (s))
+ {
+ strfcpy (err->data, _("cd: too many arguments"), err->dsize);
+ return (-1);
+ }
+ strfcpy (path, tmp->data, sizeof (path));
+ mutt_expand_path (path, sizeof (path));
+ if (!*path) {
+ char *home = getenv("HOME");
+ if (home)
+ strfcpy (path, home, sizeof (path));
+ }
+ if (chdir(path) != 0) {
+ snprintf (err->data, err->dsize, _("cd: %s"), strerror(errno));
+ return (-1);
+ }
+ return (0);
+}
+
+
/* line command to execute
token scratch buffer to be used by parser. caller should free
diff -ur ../MUTT/mutt/init.h mutt/init.h
--- ../MUTT/mutt/init.h 2004-04-15 21:15:15.000000000 +0200
+++ mutt/init.h 2004-04-15 21:41:58.000000000 +0200
@@ -2765,6 +2765,7 @@
static int parse_ignore (BUFFER *, BUFFER *, unsigned long, BUFFER *);
static int parse_unignore (BUFFER *, BUFFER *, unsigned long, BUFFER *);
static int parse_source (BUFFER *, BUFFER *, unsigned long, BUFFER *);
+static int parse_cd (BUFFER *, BUFFER *, unsigned long, BUFFER *);
static int parse_set (BUFFER *, BUFFER *, unsigned long, BUFFER *);
static int parse_my_hdr (BUFFER *, BUFFER *, unsigned long, BUFFER *);
static int parse_unmy_hdr (BUFFER *, BUFFER *, unsigned long, BUFFER *);
@@ -2787,6 +2788,7 @@
{ "auto_view", parse_list, UL &AutoViewList },
{ "alternative_order", parse_list, UL &AlternativeOrderList},
{ "bind", mutt_parse_bind, 0 },
+ { "cd", parse_cd, 0 },
{ "charset-hook", mutt_parse_hook, M_CHARSETHOOK },
#ifdef HAVE_COLOR
{ "color", mutt_parse_color, 0 },
Attachment:
signature.asc
Description: Digital signature