]> git.pld-linux.org Git - packages/mutt.git/blobdiff - mutt-cd.signatures_menu.patch
This commit was manufactured by cvs2git to create branch 'RAW'.
[packages/mutt.git] / mutt-cd.signatures_menu.patch
diff --git a/mutt-cd.signatures_menu.patch b/mutt-cd.signatures_menu.patch
deleted file mode 100644 (file)
index 880004e..0000000
+++ /dev/null
@@ -1,713 +0,0 @@
-diff -pruN2 mutt-1.3.27.orig/Makefile.am mutt-1.3.27/Makefile.am
---- mutt-1.3.27.orig/Makefile.am       Fri Nov  9 01:18:28 2001
-+++ mutt-1.3.27/Makefile.am    Wed Jan 23 22:35:32 2002
-@@ -25,5 +25,5 @@ mutt_SOURCES = $(BUILT_SOURCES) \
-       postpone.c query.c recvattach.c recvcmd.c \
-       rfc822.c rfc1524.c rfc2047.c rfc2231.c \
--      score.c send.c sendlib.c signal.c sort.c \
-+      score.c send.c sendlib.c signal.c signature.c sort.c \
-       status.c system.c thread.c charset.c history.c lib.c \
-       muttlib.c editmsg.c utf8.c mbyte.c wcwidth.c \
-diff -pruN2 mutt-1.3.27.orig/OPS mutt-1.3.27/OPS
---- mutt-1.3.27.orig/OPS       Tue Sep 11 12:50:50 2001
-+++ mutt-1.3.27/OPS    Wed Jan 23 22:35:32 2002
-@@ -37,4 +37,5 @@ OP_COMPOSE_POSTPONE_MESSAGE "save this m
- OP_COMPOSE_RENAME_FILE "rename/move an attached file"
- OP_COMPOSE_SEND_MESSAGE "send the message"
-+OP_COMPOSE_SIG "choose a signature"
- OP_COMPOSE_TOGGLE_DISPOSITION "toggle disposition between inline/attachment"
- OP_COMPOSE_TOGGLE_UNLINK "toggle whether to delete file after sending it"
-@@ -126,4 +127,5 @@ OP_NEXT_ENTRY "move to the next entry"
- OP_NEXT_LINE "scroll down one line"
- OP_NEXT_PAGE "move to the next page"
-+OP_NEXT_SIG "move to the next signature"
- OP_PAGER_BOTTOM "jump to the bottom of the message"
- OP_PAGER_HIDE_QUOTED "toggle display of quoted text"
-@@ -134,9 +136,11 @@ OP_PREV_ENTRY "move to the previous entr
- OP_PREV_LINE "scroll up one line"
- OP_PREV_PAGE "move to the previous page"
-+OP_PREV_SIG "move to the previous signature"
- OP_PRINT "print the current entry"
- OP_PURGE_MESSAGE "really delete the current entry, bypassing the trash folder"
- OP_QUERY "query external program for addresses"
- OP_QUERY_APPEND "append new query results to current results"
- OP_QUIT "save changes to mailbox and quit"
-+OP_RANDOM_SIG "pick a signature at random"
- OP_RECALL_MESSAGE "recall a postponed message"
- OP_REDRAW "clear and redraw the screen"
-@@ -150,4 +154,5 @@ OP_SEARCH_OPPOSITE "search for next matc
- OP_SEARCH_TOGGLE "toggle search pattern coloring"
- OP_SHELL_ESCAPE "invoke a command in a subshell"
-+OP_SIG_SEARCH "search signatures matching a pattern"
- OP_SORT "sort messages"
- OP_SORT_REVERSE "sort messages in reverse order"
-diff -pruN2 mutt-1.3.27.orig/compose.c mutt-1.3.27/compose.c
---- mutt-1.3.27.orig/compose.c Mon Dec  3 11:17:57 2001
-+++ mutt-1.3.27/compose.c      Wed Jan 23 22:35:32 2002
-@@ -1103,4 +1103,10 @@ int mutt_compose_menu (HEADER *msg,   /*
-       break;
-+      case OP_COMPOSE_SIG:
-+      mutt_signature(msg->content->filename);
-+      MAYBE_REDRAW (menu->redraw);
-+      mutt_update_encoding (msg->content);
-+      break;
-+
-       case OP_PIPE:
-       case OP_FILTER:
-diff -pruN2 mutt-1.3.27.orig/doc/manual.sgml.head mutt-1.3.27/doc/manual.sgml.head
---- mutt-1.3.27.orig/doc/manual.xml.head       Sat Jan 12 12:35:43 2002
-+++ mutt-1.3.27/doc/manual.xml.head    Wed Jan 23 22:35:32 2002
-@@ -526,4 +526,5 @@ c       edit-cc                 edit the
- b       edit-bcc                edit the Bcc field
- y       send-message            send the message
-+ESC s signature-menu          select a signature and append it to your mail
- s       edit-subject            edit the Subject
- f       edit-fcc                specify an ``Fcc'' mailbox
-diff -pruN2 mutt-1.3.27.orig/functions.h mutt-1.3.27/functions.h
---- mutt-1.3.27.orig/functions.h       Tue Sep 11 12:51:39 2001
-+++ mutt-1.3.27/functions.h    Wed Jan 23 22:35:32 2002
-@@ -309,4 +309,5 @@ struct binding_t OpCompose[] = {
-   { "send-message",   OP_COMPOSE_SEND_MESSAGE,        "y" },
-   { "pipe-entry",     OP_PIPE,                        "|" },
-+  { "signature-menu", OP_COMPOSE_SIG,                 "\033s" },
- #ifdef HAVE_PGP
-@@ -363,4 +364,17 @@ struct binding_t OpQuery[] = {
-   { "query",          OP_QUERY,               "Q" },
-   { "query-append",   OP_QUERY_APPEND,        "A" },
-+  { NULL,             0,                      NULL }
-+};
-+
-+/* Signature Menu */
-+struct binding_t OpSig[] = {
-+  { "next-sig",               OP_NEXT_SIG,            "j" },
-+  { "previous-sig",   OP_PREV_SIG,            "k" },
-+  { "random-sig",     OP_RANDOM_SIG,          "r" },
-+  { NULL,             0,                      NULL }
-+};
-+
-+struct binding_t OpSigDir[] = {
-+  { "search-sig",     OP_SIG_SEARCH,          "/" },
-   { NULL,             0,                      NULL }
- };
-diff -pruN2 mutt-1.3.27.orig/globals.h mutt-1.3.27/globals.h
---- mutt-1.3.27.orig/globals.h Thu Jan  3 21:56:46 2002
-+++ mutt-1.3.27/globals.h      Wed Jan 23 22:35:32 2002
-@@ -100,4 +100,5 @@ WHERE char *Sendmail;
- WHERE char *Shell;
- WHERE char *Signature;
-+WHERE char *SigDirectory;
- WHERE char *SimpleSearch;
- WHERE char *Spoolfile;
-diff -pruN2 mutt-1.3.27.orig/init.h mutt-1.3.27/init.h
---- mutt-1.3.27.orig/init.h    Mon Dec 10 11:09:03 2001
-+++ mutt-1.3.27/init.h Wed Jan 23 22:35:32 2002
-@@ -1954,4 +1954,12 @@ struct option_t MuttVars[] = {
-   ** its stdout.
-   */
-+  { "signatures_directory",   DT_PATH, R_NONE, UL &SigDirectory, UL "" },
-+  /*
-+  ** .pp
-+  ** Specifies the path where your signatures are located. In the files of
-+  ** this directory, the signatures are separated by blank lines and/or
-+  ** sig_dashes (``-- '').
-+  ** You can choose between these signatures from the compose menu.
-+  */
-   { "simple_search",  DT_STR,  R_NONE, UL &SimpleSearch, UL "~f %s | ~s %s" },
-   /*
-diff -pruN2 mutt-1.3.27.orig/keymap.c mutt-1.3.27/keymap.c
---- mutt-1.3.27.orig/keymap.c  Tue Oct 16 16:29:02 2001
-+++ mutt-1.3.27/keymap.c       Wed Jan 23 22:35:32 2002
-@@ -50,4 +50,6 @@ struct mapping_t Menus[] = {
-  { "query",   MENU_QUERY },
-+ { "signature",       MENU_SIG },
-+ { "sig_directory",   MENU_SIG_DIR },
-  { "generic", MENU_GENERIC },
-  { NULL,      0 }
-@@ -528,4 +530,6 @@ void km_init (void)
-   create_bindings (OpQuery, MENU_QUERY);
-   create_bindings (OpAlias, MENU_ALIAS);
-+  create_bindings (OpSig, MENU_SIG);
-+  create_bindings (OpSigDir, MENU_SIG_DIR);
-@@ -619,4 +623,7 @@ void km_init (void)
-   km_bindkey ("<enter>", MENU_COMPOSE, OP_VIEW_ATTACH);
-+  km_bindkey ("<up>", MENU_SIG, OP_PREV_SIG);
-+  km_bindkey ("<down>", MENU_SIG, OP_NEXT_SIG);
-+
-   /* edit-to (default "t") hides generic tag-entry in Compose menu
-      This will bind tag-entry to  "T" in the Compose menu */
-@@ -739,4 +746,8 @@ struct binding_t *km_get_table (int menu
-     case MENU_QUERY:
-       return OpQuery;
-+    case MENU_SIG:
-+      return OpSig;
-+    case MENU_SIG_DIR:
-+      return OpSigDir;
-diff -pruN2 mutt-1.3.27.orig/keymap.h mutt-1.3.27/keymap.h
---- mutt-1.3.27.orig/keymap.h  Tue Sep 11 12:50:12 2001
-+++ mutt-1.3.27/keymap.h       Wed Jan 23 22:35:32 2002
-@@ -60,4 +60,6 @@ enum
-   MENU_POST,
-   MENU_QUERY,
-+  MENU_SIG,
-+  MENU_SIG_DIR,
-   
-@@ -102,4 +104,6 @@ extern struct binding_t OpEditor[];
- extern struct binding_t OpQuery[];
- extern struct binding_t OpAlias[];
-+extern struct binding_t OpSig[];
-+extern struct binding_t OpSigDir[];
- #ifdef HAVE_PGP
-diff -pruN2 mutt-1.3.27.orig/protos.h mutt-1.3.27/protos.h
---- mutt-1.3.27.orig/protos.h  Wed Jan 16 21:43:58 2002
-+++ mutt-1.3.27/protos.h       Wed Jan 23 22:35:32 2002
-@@ -225,4 +225,5 @@ void mutt_shell_escape (void);
- void mutt_show_error (void);
- void mutt_signal_init (void);
-+void mutt_signature (char *);
- void mutt_stamp_attachment (BODY *a);
- void mutt_tabs_to_spaces (char *);
-diff -pruN2 mutt-1.3.27.orig/signature.c mutt-1.3.27/signature.c
---- mutt-1.3.27.orig/signature.c       Thu Jan  1 01:00:00 1970
-+++ mutt-1.3.27/signature.c    Wed Jan 23 22:35:32 2002
-@@ -0,0 +1,505 @@
-+/*
-+ * Copyright (C) 2001 Cedric Duval <cedricduval@free.fr>
-+ * 
-+ *     This program is free software; you can redistribute it and/or modify
-+ *     it under the terms of the GNU General Public License as published by
-+ *     the Free Software Foundation; either version 2 of the License, or
-+ *     (at your option) any later version.
-+ * 
-+ *     This program is distributed in the hope that it will be useful,
-+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+ *     GNU General Public License for more details.
-+ * 
-+ *     You should have received a copy of the GNU General Public License
-+ *     along with this program; if not, write to the Free Software
-+ *     Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111, USA.
-+ */
-+
-+#if HAVE_CONFIG_H
-+# include "config.h"
-+#endif
-+
-+#include "mutt.h"
-+#include "mutt_menu.h"
-+#include "mapping.h"
-+#include "mutt_curses.h"
-+
-+#include <stdio.h>
-+#include <string.h>
-+#include <stdlib.h>
-+#include <dirent.h>
-+#include <sys/stat.h>
-+
-+#define SIG_DISPLAY_LINES 4
-+#define SEPARATOR(x) ((*x == '\n') || (mutt_strcmp (x, "-- \n") == 0))
-+#define SIG_ADD_LINE(x,y) mutt_add_list (x, strtok (y, "\n"))
-+
-+typedef struct sig_list
-+{
-+  struct sig_list *next;
-+  LIST *sig;
-+} SIG_LIST;
-+
-+typedef struct sig_dir
-+{
-+  struct sig_dir *next;
-+  char *name;
-+} SIG_DIR;
-+
-+typedef LIST * ENTRY;
-+
-+typedef struct entry_dir
-+{
-+  int tagged;
-+  SIG_DIR *data;
-+} ENTRY_DIR;
-+
-+static struct mapping_t SigHelp[] = {
-+  { N_("Exit"),   OP_EXIT },
-+  { N_("Search"), OP_SEARCH },
-+  { N_("Random"), OP_RANDOM_SIG },
-+  { N_("Help"),   OP_HELP },
-+  { NULL }
-+};
-+
-+static struct mapping_t SigDirHelp[] = {
-+  { N_("Exit"),   OP_EXIT },
-+  { N_("Search signature"), OP_SIG_SEARCH },
-+  { N_("Help"),   OP_HELP },
-+  { NULL }
-+};
-+
-+void menu_next_entry (MUTTMENU *menu);
-+void menu_prev_entry (MUTTMENU *menu);
-+
-+
-+static int sig_match (LIST *s, regex_t *re)
-+{
-+  while (s)
-+  {
-+    if (regexec (re, s->data, (size_t)0, NULL, (int)0) == 0)
-+      return 1;
-+    s = s->next;
-+  }
-+  return 0;
-+}
-+
-+static void read_sig_file (char *name, SIG_LIST **begin, regex_t *re)
-+{
-+  FILE *fp;
-+  char buf[STRING];
-+  LIST *sig = NULL;
-+  SIG_LIST *first, *cur;
-+  int append = 0;
-+
-+  if (!(fp = safe_fopen (name, "r")))
-+  {
-+    mutt_error (_("Can't open signature file %s"), name);
-+    return;
-+  }
-+
-+  for (first = *begin; first && first->next; first = first->next, append++)
-+    ; /* append results to an existing list */
-+  cur = first;
-+
-+  while (fgets (buf, sizeof (buf), fp))
-+  {
-+    if (buf[0] && !SEPARATOR (buf))
-+    {
-+      sig = SIG_ADD_LINE (NULL, buf);
-+
-+      while (fgets (buf, sizeof (buf), fp) && buf[0] && !SEPARATOR (buf))
-+      SIG_ADD_LINE (sig, buf);
-+
-+      if (re && !sig_match (sig, re))
-+      mutt_free_list (&sig); /* previous sig didn't match the regexp */
-+      else
-+      {
-+      /* add signature */
-+      if (first == NULL)
-+        first = cur = (SIG_LIST *) safe_calloc (1, sizeof (SIG_LIST));
-+      else
-+      {
-+        cur->next = (SIG_LIST *) safe_calloc (1, sizeof (SIG_LIST));
-+        cur = cur->next;
-+      }
-+
-+      cur->sig = sig;
-+      cur->next = NULL;
-+      }
-+    }
-+  }
-+
-+  if (!append)
-+    *begin = first;
-+
-+  safe_fclose (&fp);
-+}
-+
-+static void sig_make_entry (char *s, size_t slen, MUTTMENU *menu, int num)
-+{
-+  ENTRY *table = (ENTRY *) menu->data;
-+
-+  snprintf (s, slen, "%3d %s",
-+          num + 1,
-+          table[num]->data);
-+}
-+
-+static int sig_menu_search (MUTTMENU *menu, regex_t *re, int num)
-+{
-+  return (sig_match (((ENTRY *)menu->data)[num], re) ? 0 : REG_NOMATCH);
-+}
-+
-+static void draw_sig_frame (LIST *s)
-+{
-+  int i;
-+
-+  for (i = 1; i <= SIG_DISPLAY_LINES; i++)
-+  {
-+    if (s)
-+    {
-+      mvaddstr (i, 0, s->data);
-+      s = s->next;
-+    }
-+    else
-+      move (i, 0);
-+
-+    clrtoeol ();
-+  }
-+
-+  SETCOLOR (MT_COLOR_STATUS);
-+  mvaddstr (SIG_DISPLAY_LINES + 1, 0, _("-- Signature"));
-+  BKGDSET (MT_COLOR_STATUS);
-+  clrtoeol ();
-+
-+  BKGDSET (MT_COLOR_NORMAL);
-+  SETCOLOR (MT_COLOR_NORMAL);
-+}
-+
-+static void free_sig_list (SIG_LIST **sigs)
-+{
-+  SIG_LIST *cur;
-+
-+  while (*sigs)
-+  {
-+    cur = *sigs;
-+    *sigs = (*sigs)->next;
-+    mutt_free_list (&cur->sig);
-+    safe_free ((void **)&cur);
-+  }
-+}
-+
-+static void append_signature (char *msg_file, LIST *s)
-+{
-+  FILE *fp;
-+
-+  if ((fp = safe_fopen (msg_file, "a")) == 0)
-+    mutt_perror (msg_file);
-+  else
-+  {
-+    if (option (OPTSIGDASHES))
-+      fputs ("\n-- \n", fp);
-+
-+    for (; s; s = s->next)
-+      fprintf (fp, "%s\n", s->data);
-+
-+    mutt_message (_("Signature appended to your mail"));
-+    safe_fclose (&fp);
-+  }
-+}
-+
-+static LIST *sig_list_menu (char *file, SIG_LIST *list)
-+{
-+  LIST *result = NULL;
-+  SIG_LIST *sigl;
-+  MUTTMENU *menu;
-+  ENTRY *SigTable;
-+  char helpstr[SHORT_STRING], title[SHORT_STRING];
-+  int i, done = 0;
-+
-+  snprintf (title, sizeof (title), _("Signature : %s"), file);
-+
-+  menu = mutt_new_menu (MENU_SIG);
-+  menu->make_entry = sig_make_entry;
-+  menu->tag = NULL;
-+  menu->search = sig_menu_search;
-+  menu->title = title;
-+  menu->help = mutt_compile_help (helpstr, sizeof (helpstr),
-+                                MENU_SIG, SigHelp);
-+  menu->offset = SIG_DISPLAY_LINES + 2;
-+  menu->pagelen = LINES - SIG_DISPLAY_LINES - 4;
-+  
-+  for (sigl = list; sigl; sigl = sigl->next)
-+    menu->max++;
-+
-+  menu->data = SigTable = (ENTRY *) safe_calloc (menu->max, sizeof (ENTRY));
-+
-+  for (i = 0, sigl = list; sigl; i++, sigl = sigl->next)
-+    SigTable[i] = sigl->sig;
-+
-+  while (!done)
-+  {
-+    switch (mutt_menuLoop (menu))
-+    {
-+      case OP_GENERIC_SELECT_ENTRY:
-+        result = SigTable[menu->current];
-+      done = 1;
-+      break;
-+
-+      case OP_PREV_SIG:
-+      menu_prev_entry (menu);
-+      draw_sig_frame (SigTable[menu->current]);
-+      break;
-+
-+      case OP_NEXT_SIG:
-+      menu_next_entry (menu);
-+      draw_sig_frame (SigTable[menu->current]);
-+      break;
-+
-+      case OP_REDRAW:
-+      menu->offset = SIG_DISPLAY_LINES + 2;
-+      menu->pagelen = LINES - SIG_DISPLAY_LINES - 4;
-+      draw_sig_frame (SigTable[menu->current]);
-+      break;
-+
-+      case OP_RANDOM_SIG:
-+      menu->current = LRAND () % menu->max;
-+      draw_sig_frame (SigTable[menu->current]);
-+      menu->redraw |= REDRAW_MOTION;
-+      break;
-+
-+      case OP_EXIT:
-+      set_option (OPTNEEDREDRAW);
-+        done = 1;
-+        break;
-+    }
-+  }
-+  
-+  mutt_menuDestroy (&menu);
-+  safe_free ((void **)&SigTable);
-+  return result;
-+}
-+
-+extern char* SearchBuffers[MENU_MAX];
-+
-+static SIG_LIST *sig_search_filter (MUTTMENU *menu, char *path)
-+{
-+  regex_t re;
-+  char buf[STRING];
-+  SIG_LIST *result = NULL;
-+  int i;
-+  char* searchBuf = menu->menu >= 0 && menu->menu < MENU_MAX ?
-+                    SearchBuffers[menu->menu] : NULL;
-+
-+  snprintf (buf, sizeof(buf), searchBuf ? searchBuf : "");
-+  if (mutt_get_field (_("Search for: "), buf,
-+                    sizeof (buf), M_CLEAR) != 0 || !buf[0])
-+    return (NULL);
-+  if (menu->menu >= 0 && menu->menu < MENU_MAX)
-+  {
-+    mutt_str_replace (&SearchBuffers[menu->menu], buf);
-+    searchBuf = SearchBuffers[menu->menu];
-+  }
-+
-+  if ((i = regcomp (&re, searchBuf, REG_NOSUB | REG_EXTENDED | REG_WORDS
-+                  | mutt_which_case (searchBuf))) != 0)
-+  {
-+    regerror (i, &re, buf, sizeof (buf));
-+    regfree (&re);
-+    mutt_error ("%s", buf);
-+    return (NULL);
-+  }
-+
-+  /* building list of sigs matching the regexp */
-+  for (i = 0; i < menu->max; i++)
-+  {
-+    /* search in every file if none is tagged */
-+    if (((ENTRY_DIR *) menu->data)[i].tagged || (menu->tagged == 0))
-+    {
-+      snprintf (buf, sizeof (buf), "%s/%s", path,
-+              ((ENTRY_DIR *) menu->data)[i].data->name);
-+      read_sig_file (buf, &result, &re);
-+    }
-+  }
-+
-+  regfree (&re);
-+  if (!result)
-+    mutt_error (_("Not found."));
-+
-+  return (result);
-+}
-+
-+/* returns the list of files in this directory */
-+static SIG_DIR *sig_directory (char *path)
-+{
-+  DIR *dp;
-+  struct dirent *de;
-+  struct stat s;
-+  SIG_DIR *first = NULL, *cur = NULL;
-+  char file[_POSIX_PATH_MAX + SHORT_STRING];
-+
-+  if ((dp = opendir (path)) == NULL)
-+  {
-+    mutt_perror (path);
-+    return (NULL);
-+  }
-+  
-+  while ((de = readdir (dp)))
-+  {
-+    if ((de->d_name)[0] == '.') /* no hidden files */
-+      continue;
-+
-+    snprintf (file, sizeof (file), "%s/%s", path, de->d_name);
-+    if (lstat (file, &s) == -1)
-+      continue;
-+
-+    if ((!S_ISREG (s.st_mode)) && (!S_ISLNK (s.st_mode)))
-+      continue;
-+
-+    if (first == NULL)
-+      cur = first = safe_calloc (1, sizeof (SIG_DIR));
-+    else
-+    {
-+      cur->next = safe_calloc (1, sizeof (SIG_DIR));
-+      cur = cur->next;
-+    }
-+    cur->name = safe_strdup (de->d_name);
-+    cur->next = NULL;
-+  }
-+  closedir (dp);
-+  return first;
-+}
-+
-+static void sig_dir_make_entry (char *s, size_t slen, MUTTMENU *menu, int num)
-+{
-+  ENTRY_DIR *table = (ENTRY_DIR *) menu->data;
-+
-+  snprintf (s, slen, "%c %3d - %s",
-+          table[num].tagged ? '*' : ' ',
-+          num + 1,
-+          table[num].data->name);
-+}
-+
-+static int sig_dir_tag (MUTTMENU *menu, int n, int m)
-+{
-+  ENTRY_DIR *cur = &((ENTRY_DIR *) menu->data)[n];
-+  int ot = cur->tagged;
-+  
-+  cur->tagged = m >= 0 ? m : !cur->tagged;
-+  return cur->tagged - ot;
-+
-+}
-+
-+static int sig_dir_sort (const void *a, const void *b)
-+{
-+  ENTRY_DIR *pa = (ENTRY_DIR *) a;
-+  ENTRY_DIR *pb = (ENTRY_DIR *) b;
-+
-+  return (mutt_strcmp (pa->data->name, pb->data->name));
-+}
-+
-+static int sig_dir_menu (char *path, char *msg_file)
-+{
-+  MUTTMENU *menu;
-+  SIG_LIST *sigl;
-+  LIST *result = NULL;
-+  ENTRY_DIR *FileTable;
-+  SIG_DIR *list, *files;
-+  char buf[STRING], helpstr[SHORT_STRING], title[SHORT_STRING];
-+  int i, done = 0;
-+
-+  if ((list = sig_directory (path)) == NULL)
-+    return -1;
-+
-+  snprintf (title, sizeof (title), "Signature directory : %s", path);
-+
-+  menu = mutt_new_menu (MENU_SIG_DIR);
-+  menu->make_entry = sig_dir_make_entry;
-+  menu->search = NULL; /* search within files with sig_search_filter() */
-+  menu->tag = sig_dir_tag;
-+  menu->title = title;
-+  menu->help = mutt_compile_help (helpstr, sizeof (helpstr),
-+                                MENU_SIG_DIR, SigDirHelp);
-+
-+  for (files = list; files; files = files->next)
-+    menu->max++;
-+
-+  menu->data = FileTable = (ENTRY_DIR *) safe_calloc (menu->max,
-+                                                    sizeof (ENTRY_DIR));
-+
-+  for (i = 0, files = list; files; i++, files = files->next)
-+    FileTable[i].data = files;
-+
-+  qsort (FileTable, menu->max, sizeof (ENTRY_DIR), sig_dir_sort);
-+
-+  while (!done)
-+  {
-+    switch (mutt_menuLoop (menu))
-+    {
-+      case OP_SIG_SEARCH:
-+      sigl = sig_search_filter (menu, path);
-+
-+      if (sigl)
-+      {
-+        if ((result = sig_list_menu (_("query results"), sigl)) != NULL)
-+        {
-+          append_signature (msg_file, result);
-+          done = 1;
-+        }
-+
-+        MAYBE_REDRAW (menu->redraw);
-+        free_sig_list (&sigl);
-+      }
-+      break;
-+
-+      case OP_GENERIC_SELECT_ENTRY:
-+      snprintf (buf, sizeof (buf), "%s/%s", path,
-+                FileTable[menu->current].data->name);
-+      sigl = NULL;
-+      read_sig_file (buf, &sigl, NULL);
-+
-+      if (sigl)
-+      {
-+        if ((result = sig_list_menu (buf, sigl)) != NULL)
-+        {
-+          append_signature (msg_file, result);
-+          done = 1;
-+        }
-+
-+        MAYBE_REDRAW (menu->redraw);
-+        free_sig_list (&sigl);
-+              }
-+      break;
-+
-+      case OP_EXIT:
-+        done = 1;
-+        break;
-+    }
-+  }
-+
-+  while (list)
-+  {
-+    safe_free ((void **)&list->name);
-+    files = list;
-+    list = list->next;
-+    safe_free ((void **)&files);
-+  }
-+  safe_free ((void **)&FileTable);
-+  mutt_menuDestroy (&menu);
-+  return 0;
-+}
-+
-+void mutt_signature (char *msg_file)
-+{
-+  if (!SigDirectory)
-+  {
-+    mutt_error (_("variable 'signatures_directory' is unset"));
-+    return;
-+  }
-+
-+  if (sig_dir_menu (SigDirectory, msg_file) == -1)
-+    mutt_error (_("%s: no files in this directory"), SigDirectory);
-+  else
-+    set_option (OPTNEEDREDRAW);
-+}
-diff -pruN mutt-1.3.27.orig/PATCHES mutt-1.3.27/PATCHES
---- mutt-1.3.27.orig/PATCHES    Mon Nov 26 20:16:52 2001
-+++ mutt-1.3.27/PATCHES Thu Dec  6 16:27:55 2001
-@@ -1,0 +1 @@
-+patch-1.3.27.cd.signatures_menu.2.1
-diff --git a/menu.c b/menu.c
---- a/menu.c
-+++ b/menu.c
-@@ -642,7 +640,7 @@
-     mutt_error _("No entries.");
- }
--static void menu_next_entry (MUTTMENU *menu)
-+void menu_next_entry (MUTTMENU *menu)
- {
-   if (menu->current < menu->max - 1)
-   {
-@@ -653,7 +651,7 @@
-     mutt_error _("You are on the last entry.");
- }
--static void menu_prev_entry (MUTTMENU *menu)
-+void menu_prev_entry (MUTTMENU *menu)
- {
-   if (menu->current)
-   {
This page took 0.060418 seconds and 4 git commands to generate.