Merge branch 'rs/commit-parsing-optim'
[gitweb.git] / builtin / mailinfo.c
index f6df2741112144a38d048ebfd1fe201c8576a040..e3b62f2fc744d340de5e3d9efad12b5de93cd55c 100644 (file)
 static const char mailinfo_usage[] =
        "git mailinfo [-k | -b] [-m | --message-id] [-u | --encoding=<encoding> | -n] [--scissors | --no-scissors] <msg> <patch> < mail >info";
 
+static char *prefix_copy(const char *prefix, const char *filename)
+{
+       if (!prefix || is_absolute_path(filename))
+               return xstrdup(filename);
+       return xstrdup(prefix_filename(prefix, strlen(prefix), filename));
+}
+
 int cmd_mailinfo(int argc, const char **argv, const char *prefix)
 {
        const char *def_charset;
        struct mailinfo mi;
        int status;
+       char *msgfile, *patchfile;
 
-       /* NEEDSWORK: might want to do the optional .git/ directory
-        * discovery
-        */
        setup_mailinfo(&mi);
 
        def_charset = get_commit_output_encoding();
@@ -54,8 +59,14 @@ int cmd_mailinfo(int argc, const char **argv, const char *prefix)
 
        mi.input = stdin;
        mi.output = stdout;
-       status = !!mailinfo(&mi, argv[1], argv[2]);
+
+       msgfile = prefix_copy(prefix, argv[1]);
+       patchfile = prefix_copy(prefix, argv[2]);
+
+       status = !!mailinfo(&mi, msgfile, patchfile);
        clear_mailinfo(&mi);
 
+       free(msgfile);
+       free(patchfile);
        return status;
 }