hammer - Take in account edition preferences.
authorAntonio Huete Jimenez <tuxillo@quantumachine.net>
Fri, 12 Feb 2010 19:15:04 +0000 (20:15 +0100)
committerAntonio Huete Jimenez <tuxillo@quantumachine.net>
Fri, 12 Feb 2010 19:16:07 +0000 (20:16 +0100)
For viconfig directive, $EDITOR and/or $VISUAL were not
taken in account, forcing the editor to vi.

sbin/hammer/cmd_config.c
sbin/hammer/hammer.8

index 780e646..9a60146 100644 (file)
@@ -108,7 +108,7 @@ hammer_cmd_viconfig(char **av, int ac)
        struct timeval times[2];
        const char *dirpath;
        struct stat st;
-       char *runcmd;
+       char *runcmd, *editor, *tmp;
        char path[32];
        ssize_t n;
        int fd;
@@ -163,7 +163,13 @@ hammer_cmd_viconfig(char **av, int ac)
        close(fd);
        utimes(path, times);
 
-       asprintf(&runcmd, "vi %s", path);
+       if ((tmp = getenv("EDITOR")) != NULL ||
+           (tmp = getenv("VISUAL")) != NULL)
+               editor = strdup(tmp);
+       else
+               editor = strdup("vi");
+
+       asprintf(&runcmd, "%s %s", editor, path);
        system(runcmd);
 
        if (stat(path, &st) < 0)
@@ -187,6 +193,8 @@ hammer_cmd_viconfig(char **av, int ac)
        }
        bzero(config.config.text + n, sizeof(config.config.text) - n);
        config_set(dirpath, &config);
+       free(editor);
+       free(runcmd);
 }
 
 static void
@@ -218,7 +226,7 @@ config_set(const char *dirpath, struct hammer_ioc_config *config)
        if (ioctl(fd, HAMMERIOC_GET_VERSION, &version) < 0)
                errx(2, "hammer config: not a HAMMER filesystem!");
        if (ioctl(fd, HAMMERIOC_SET_CONFIG, config) < 0)
-               errx(2, "hammer config: config_set");
+               err(2, "hammer config");
        close(fd);
 }
 
index c944296..1e8a544 100644 (file)
@@ -32,7 +32,7 @@
 .\"
 .\" $DragonFly: src/sbin/hammer/hammer.8,v 1.58 2008/11/13 02:04:27 dillon Exp $
 .\"
-.Dd January 15, 2010
+.Dd February 12, 2010
 .Dt HAMMER 8
 .Os
 .Sh NAME
@@ -1177,6 +1177,20 @@ New undo/flush, giving faster sync.
 .El
 .El
 .\".Sh EXAMPLES
+.Sh ENVIRONMENT
+If the following environment variables exist, they will be used by
+.Nm :
+.Bl
+.It Ev EDITOR
+The editor program specified in the variable
+.Ev EDITOR
+will be invoked instead of the default editor, which is
+.Xr vi 1
+.It Ev VISUAL
+Same effect as
+.Ev EDITOR
+variable.
+.El
 .Sh PSEUDO-FILESYSTEM (PFS) NOTES
 The root of a PFS is not hooked into the primary
 .Nm HAMMER