]> git.notmuchmail.org Git - notmuch/blobdiff - notmuch.c
CLI: remove alias machinery, and "part", "search-tags" commands
[notmuch] / notmuch.c
index 9516dfb7b59850a9cdfdb3708c90df7ff3830d5e..f13fd27a1510b41365eea5b3bf1d803f83f2c5cf 100644 (file)
--- a/notmuch.c
+++ b/notmuch.c
@@ -31,18 +31,6 @@ typedef struct command {
     const char *summary;
 } command_t;
 
-#define MAX_ALIAS_SUBSTITUTIONS 3
-
-typedef struct alias {
-    const char *name;
-    const char *substitutions[MAX_ALIAS_SUBSTITUTIONS];
-} alias_t;
-
-alias_t aliases[] = {
-    { "part", { "show", "--format=raw"}},
-    { "search-tags", {"search", "--output=tags", "*"}}
-};
-
 static int
 notmuch_help_command (void *ctx, int argc, char *argv[]);
 
@@ -260,9 +248,7 @@ main (int argc, char *argv[])
 {
     void *local;
     command_t *command;
-    alias_t *alias;
-    unsigned int i, j;
-    const char **argv_local;
+    unsigned int i;
 
     talloc_enable_null_tracking ();
 
@@ -285,45 +271,31 @@ main (int argc, char *argv[])
        return 0;
     }
 
-    for (i = 0; i < ARRAY_SIZE (aliases); i++) {
-       alias = &aliases[i];
+    for (i = 0; i < ARRAY_SIZE (commands); i++) {
+       command = &commands[i];
 
-       if (strcmp (argv[1], alias->name) == 0)
-       {
-           int substitutions;
+       if (strcmp (argv[1], command->name) == 0) {
+           int ret;
+           char *talloc_report;
 
-           argv_local = talloc_size (local, sizeof (char *) *
-                                     (argc + MAX_ALIAS_SUBSTITUTIONS - 1));
-           if (argv_local == NULL) {
-               fprintf (stderr, "Out of memory.\n");
-               return 1;
-           }
+           ret = (command->function)(local, argc - 1, &argv[1]);
 
-           /* Copy all substution arguments from the alias. */
-           argv_local[0] = argv[0];
-           for (j = 0; j < MAX_ALIAS_SUBSTITUTIONS; j++) {
-               if (alias->substitutions[j] == NULL)
-                   break;
-               argv_local[j+1] = alias->substitutions[j];
-           }
-           substitutions = j;
+           /* in the future support for this environment variable may
+            * be supplemented or replaced by command line arguments
+            * --leak-report and/or --leak-report-full */
 
-           /* And copy all original arguments (skipping the argument
-            * that matched the alias of course. */
-           for (j = 2; j < (unsigned) argc; j++) {
-               argv_local[substitutions+j-1] = argv[j];
-           }
+           talloc_report = getenv ("NOTMUCH_TALLOC_REPORT");
 
-           argc += substitutions - 1;
-           argv = (char **) argv_local;
-       }
-    }
+           /* this relies on the previous call to
+            * talloc_enable_null_tracking */
 
-    for (i = 0; i < ARRAY_SIZE (commands); i++) {
-       command = &commands[i];
+           if (talloc_report && strcmp (talloc_report, "") != 0) {
+               FILE *report = fopen (talloc_report, "w");
+               talloc_report_full (NULL, report);
+           }
 
-       if (strcmp (argv[1], command->name) == 0)
-           return (command->function) (local, argc - 1, &argv[1]);
+           return ret;
+       }
     }
 
     fprintf (stderr, "Error: Unknown command '%s' (see \"notmuch help\")\n",