Pliki binarne elmo-0.8.1/po/de.gmo i elmo-0.8.1-/po/de.gmo siê ró¿ni±
diff -Nru elmo-0.8.1/po/de.po elmo-0.8.1-/po/de.po
--- elmo-0.8.1/po/de.po 2003-07-22 08:59:05.000000000 +0200
+++ elmo-0.8.1-/po/de.po 2003-07-28 10:35:50.000000000 +0200
@@ -7,7 +7,7 @@
msgid ""
msgstr ""
"Project-Id-Version: elmo 0.8.x\n"
-"POT-Creation-Date: 2003-06-13 14:07+0200\n"
+"POT-Creation-Date: 2003-07-28 10:35+0200\n"
"PO-Revision-Date: 2003-06-18 11:21+0200\n"
"Last-Translator: Martin Sieper
\n"
"Language-Team: German \n"
@@ -16,135 +16,135 @@
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: src/abook.c:119
-msgid "congratulations! you have just found a bug"
-msgstr "Herzlichen Glückwunsch! Sie haben einen Bug gefunden"
-
-#: src/abook.c:207 src/abook.c:211
-#, c-format
-msgid "opening addressbook: %s"
-msgstr "öffne Adressbuch: %s"
-
-#: src/abook.c:301
+#: src/abook.c:485
msgid "addressbook"
msgstr "Adressbuch"
-#: src/abook.c:521
+#: src/abook.c:840
msgid "select address"
msgstr "Adresse wählen"
-#: src/attach.c:173
+#: src/attach.c:174
msgid "attachments"
msgstr "Anhänge"
-#: src/attach.c:260
+#: src/attach.c:284
msgid "file: "
msgstr "Datei: "
-#: src/cmd.c:287
+#: src/cmd.c:306
msgid "state stack overflow, please send bug report"
msgstr "Status Stack Überlauf, bitte Fehlerbericht senden"
-#: src/cmd.c:299
+#: src/cmd.c:318
msgid "state stack underflow, please send bug report"
msgstr "Status Stack Unterlauf, bitte Fehlerbericht senden"
-#: confread.l:383
+#: confread.l:366
+msgid "includes nested to deep"
+msgstr ""
+
+#: confread.l:469
msgid "identifier"
msgstr "Identifizierer"
-#: confread.l:388
+#: confread.l:474
msgid "end of line"
msgstr "Zeilenende"
-#: confread.l:391
+#: confread.l:478
msgid "quoted text"
msgstr "zitierter Text"
-#: confread.l:397
+#: confread.l:484
msgid "key specifier"
msgstr "Tastenbeschreibung"
-#: confread.l:407
+#: confread.l:487
+#, fuzzy
+msgid "end of file"
+msgstr "Zeilenende"
+
+#: confread.l:497
#, c-format
msgid "%s:%d: parse error near %s"
msgstr "%s:%d: Fehler bei grammatikalischer Analyse neben %s"
-#: src/elmo.c:175
+#: src/elmo.c:172
#, c-format
msgid "%s - ELectronic Mail Operator\n"
msgstr "%s - ELectronic Mail Operator\n"
-#: src/elmo.c:176
+#: src/elmo.c:173
#, c-format
msgid "Usage: %s [OPTION]... \n"
msgstr "Benutzung: %s [Option]... \n"
-#: src/elmo.c:177
+#: src/elmo.c:174
msgid "Options:\n"
msgstr "Optionen:\n"
-#: src/elmo.c:178
+#: src/elmo.c:175
msgid " -F use alternate rc file\n"
msgstr " -F benutze alternative rc Datei\n"
-#: src/elmo.c:179
+#: src/elmo.c:176
msgid " -h, --help display this help and exit\n"
msgstr " -h, --help diese Hilfe ausgeben und beenden\n"
-#: src/elmo.c:180
+#: src/elmo.c:177
msgid " -V, --version output version information and exit\n"
msgstr " -V, --version Versionsinformation anzeigen und beenden\n"
-#: src/elmo.c:258
+#: src/elmo.c:249
msgid " initializing..."
msgstr " initialisierung..."
-#: src/elmo.c:326
+#: src/elmo.c:321
msgid "ncurses: initialization failure\n"
msgstr "ncurses: Initialisierungsversagen\n"
-#: src/exec.c:189
+#: src/exec.c:192
#, c-format
msgid "undefined function %s"
msgstr "Undefinierte Funktion %s"
-#: src/fetch.c:209
+#: src/fetch.c:199
msgid "server field in pop_acc not defined"
msgstr "Undefiniertes Feld (server: foo.bar) in pop_acc"
-#: src/fetch.c:216
+#: src/fetch.c:206
msgid "username field in pop_acc not defined"
msgstr "Undefiniertes Feld (username: address@hidden) in pop_acc"
-#: src/fetch.c:223
+#: src/fetch.c:213
msgid "password field in pop_acc not defined"
msgstr "Undefiniertes Feld (password: TopSecret) in pop_acc"
-#: src/fetch.c:261
+#: src/fetch.c:260
#, c-format
msgid "couldn't write to %s"
msgstr "Kann nicht nach %s schreiben"
-#: src/fetch.c:272
+#: src/fetch.c:271
#, c-format
msgid "couldn't fetch mail %d"
msgstr "Kann keine Post holen %d"
-#: src/fetch.c:298
+#: src/fetch.c:297
msgid "no new mail"
msgstr "Keine neue Post"
-#: src/fetch.c:320
+#: src/fetch.c:323
msgid "fetch"
msgstr "holen"
-#: src/maildir.c:282
+#: src/maildir.c:285
#, c-format
msgid "%s has bad format"
msgstr "%s hat falsches Format"
-#: src/maildir.c:489
+#: src/maildir.c:506
msgid "reading directory"
msgstr "lese Verzeichnis"
@@ -190,22 +190,22 @@
msgid "send"
msgstr "senden"
-#: src/pop.c:345
+#: src/pop.c:347
#, c-format
msgid "logging as %s..."
msgstr "Anmelden als %s..."
-#: src/pop.c:348
+#: src/pop.c:350
#, c-format
msgid "invalid user name %s"
msgstr "Ungültiger Benutzername %s"
-#: src/pop.c:353
+#: src/pop.c:355
#, c-format
msgid "password %s rejected"
msgstr "Passwort %s zurückgewiesen"
-#: src/pop.c:401
+#: src/pop.c:403
msgid "retrieving list"
msgstr "Liste zurückholen"
@@ -289,3 +289,9 @@
#: src/status.c:140
msgid " new:"
msgstr " neu:"
+
+#~ msgid "congratulations! you have just found a bug"
+#~ msgstr "Herzlichen Glückwunsch! Sie haben einen Bug gefunden"
+
+#~ msgid "opening addressbook: %s"
+#~ msgstr "öffne Adressbuch: %s"
diff -Nru elmo-0.8.1/po/elmo.pot elmo-0.8.1-/po/elmo.pot
--- elmo-0.8.1/po/elmo.pot 2003-07-21 22:08:01.000000000 +0200
+++ elmo-0.8.1-/po/elmo.pot 2003-07-28 10:35:49.000000000 +0200
@@ -1,12 +1,13 @@
# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR Free Software Foundation, Inc.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR , YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
-"POT-Creation-Date: 2003-06-13 14:07+0200\n"
+"POT-Creation-Date: 2003-07-28 10:35+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
@@ -14,135 +15,134 @@
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
-#: src/abook.c:119
-msgid "congratulations! you have just found a bug"
-msgstr ""
-
-#: src/abook.c:207 src/abook.c:211
-#, c-format
-msgid "opening addressbook: %s"
-msgstr ""
-
-#: src/abook.c:301
+#: src/abook.c:485
msgid "addressbook"
msgstr ""
-#: src/abook.c:521
+#: src/abook.c:840
msgid "select address"
msgstr ""
-#: src/attach.c:173
+#: src/attach.c:174
msgid "attachments"
msgstr ""
-#: src/attach.c:260
+#: src/attach.c:284
msgid "file: "
msgstr ""
-#: src/cmd.c:287
+#: src/cmd.c:306
msgid "state stack overflow, please send bug report"
msgstr ""
-#: src/cmd.c:299
+#: src/cmd.c:318
msgid "state stack underflow, please send bug report"
msgstr ""
-#: confread.l:383
+#: confread.l:366
+msgid "includes nested to deep"
+msgstr ""
+
+#: confread.l:469
msgid "identifier"
msgstr ""
-#: confread.l:388
+#: confread.l:474
msgid "end of line"
msgstr ""
-#: confread.l:391
+#: confread.l:478
msgid "quoted text"
msgstr ""
-#: confread.l:397
+#: confread.l:484
msgid "key specifier"
msgstr ""
-#: confread.l:407
+#: confread.l:487
+msgid "end of file"
+msgstr ""
+
+#: confread.l:497
#, c-format
msgid "%s:%d: parse error near %s"
msgstr ""
-#: src/elmo.c:175
+#: src/elmo.c:172
#, c-format
msgid "%s - ELectronic Mail Operator\n"
msgstr ""
-#: src/elmo.c:176
+#: src/elmo.c:173
#, c-format
msgid "Usage: %s [OPTION]... \n"
msgstr ""
-#: src/elmo.c:177
+#: src/elmo.c:174
msgid "Options:\n"
msgstr ""
-#: src/elmo.c:178
+#: src/elmo.c:175
msgid " -F use alternate rc file\n"
msgstr ""
-#: src/elmo.c:179
+#: src/elmo.c:176
msgid " -h, --help display this help and exit\n"
msgstr ""
-#: src/elmo.c:180
+#: src/elmo.c:177
msgid " -V, --version output version information and exit\n"
msgstr ""
-#: src/elmo.c:258
+#: src/elmo.c:249
msgid " initializing..."
msgstr ""
-#: src/elmo.c:326
+#: src/elmo.c:321
msgid "ncurses: initialization failure\n"
msgstr ""
-#: src/exec.c:189
+#: src/exec.c:192
#, c-format
msgid "undefined function %s"
msgstr ""
-#: src/fetch.c:209
+#: src/fetch.c:199
msgid "server field in pop_acc not defined"
msgstr ""
-#: src/fetch.c:216
+#: src/fetch.c:206
msgid "username field in pop_acc not defined"
msgstr ""
-#: src/fetch.c:223
+#: src/fetch.c:213
msgid "password field in pop_acc not defined"
msgstr ""
-#: src/fetch.c:261
+#: src/fetch.c:260
#, c-format
msgid "couldn't write to %s"
msgstr ""
-#: src/fetch.c:272
+#: src/fetch.c:271
#, c-format
msgid "couldn't fetch mail %d"
msgstr ""
-#: src/fetch.c:298
+#: src/fetch.c:297
msgid "no new mail"
msgstr ""
-#: src/fetch.c:320
+#: src/fetch.c:323
msgid "fetch"
msgstr ""
-#: src/maildir.c:282
+#: src/maildir.c:285
#, c-format
msgid "%s has bad format"
msgstr ""
-#: src/maildir.c:489
+#: src/maildir.c:506
msgid "reading directory"
msgstr ""
@@ -188,22 +188,22 @@
msgid "send"
msgstr ""
-#: src/pop.c:345
+#: src/pop.c:347
#, c-format
msgid "logging as %s..."
msgstr ""
-#: src/pop.c:348
+#: src/pop.c:350
#, c-format
msgid "invalid user name %s"
msgstr ""
-#: src/pop.c:353
+#: src/pop.c:355
#, c-format
msgid "password %s rejected"
msgstr ""
-#: src/pop.c:401
+#: src/pop.c:403
msgid "retrieving list"
msgstr ""
Pliki binarne elmo-0.8.1/po/pl.gmo i elmo-0.8.1-/po/pl.gmo siê ró¿ni±
diff -Nru elmo-0.8.1/po/pl.po elmo-0.8.1-/po/pl.po
--- elmo-0.8.1/po/pl.po 2003-07-22 08:59:05.000000000 +0200
+++ elmo-0.8.1-/po/pl.po 2003-07-28 10:35:50.000000000 +0200
@@ -6,7 +6,7 @@
msgid ""
msgstr ""
"Project-Id-Version: elmo 0.6\n"
-"POT-Creation-Date: 2003-06-13 14:07+0200\n"
+"POT-Creation-Date: 2003-07-28 10:35+0200\n"
"PO-Revision-Date: 2003-04-16 01:41+0200\n"
"Last-Translator: Artur Skura \n"
"Language-Team: Polish \n"
@@ -16,135 +16,135 @@
"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
"|| n%100>=20) ? 1 : 2);\n"
-#: src/abook.c:119
-msgid "congratulations! you have just found a bug"
-msgstr "gratulacje! w³a¶nie znalaz³a¶/e¶ b³±d w programie"
-
-#: src/abook.c:207 src/abook.c:211
-#, c-format
-msgid "opening addressbook: %s"
-msgstr "otwieranie ksi±¿ki adresowej: %s"
-
-#: src/abook.c:301
+#: src/abook.c:485
msgid "addressbook"
msgstr "ksi±¿ka adresowa"
-#: src/abook.c:521
+#: src/abook.c:840
msgid "select address"
msgstr "wybierz adres"
-#: src/attach.c:173
+#: src/attach.c:174
msgid "attachments"
msgstr "za³±czniki"
-#: src/attach.c:260
+#: src/attach.c:284
msgid "file: "
msgstr "plik: "
-#: src/cmd.c:287
+#: src/cmd.c:306
msgid "state stack overflow, please send bug report"
msgstr "przepe³nienie bufora stanu, prosimy o przes³anie raportu o b³êdzie"
-#: src/cmd.c:299
+#: src/cmd.c:318
msgid "state stack underflow, please send bug report"
msgstr "niedope³nienie bufora stanu, prosimy o przes³anie raportu o b³êdzie"
-#: confread.l:383
+#: confread.l:366
+msgid "includes nested to deep"
+msgstr ""
+
+#: confread.l:469
msgid "identifier"
msgstr ""
-#: confread.l:388
+#: confread.l:474
msgid "end of line"
msgstr ""
-#: confread.l:391
+#: confread.l:478
msgid "quoted text"
msgstr ""
-#: confread.l:397
+#: confread.l:484
msgid "key specifier"
msgstr ""
-#: confread.l:407
+#: confread.l:487
+#, fuzzy
+msgid "end of file"
+msgstr "odczytywanie pliku"
+
+#: confread.l:497
#, c-format
msgid "%s:%d: parse error near %s"
msgstr "%s:%d: b³±d parsowania przy %s"
-#: src/elmo.c:175
+#: src/elmo.c:172
#, c-format
msgid "%s - ELectronic Mail Operator\n"
msgstr "%s - ELektroniczny prograM pOcztowy\n"
-#: src/elmo.c:176
+#: src/elmo.c:173
#, c-format
msgid "Usage: %s [OPTION]... \n"
msgstr "Wywo³anie: %s [OPCJE]... \n"
-#: src/elmo.c:177
+#: src/elmo.c:174
msgid "Options:\n"
msgstr "Opcje:\n"
-#: src/elmo.c:178
+#: src/elmo.c:175
msgid " -F use alternate rc file\n"
msgstr " -F u¿yj innego pliku rc\n"
-#: src/elmo.c:179
+#: src/elmo.c:176
msgid " -h, --help display this help and exit\n"
msgstr " -h, --help wy¶wietl ten komunikat i zakoñcz pracê\n"
-#: src/elmo.c:180
+#: src/elmo.c:177
msgid " -V, --version output version information and exit\n"
msgstr " -V, --version wy¶wietl numer wersji i zakoñcz pracê\n"
-#: src/elmo.c:258
+#: src/elmo.c:249
msgid " initializing..."
msgstr " inicjalizacja..."
-#: src/elmo.c:326
+#: src/elmo.c:321
msgid "ncurses: initialization failure\n"
msgstr "b³ad inicjalizacji ncurses\n"
-#: src/exec.c:189
+#: src/exec.c:192
#, c-format
msgid "undefined function %s"
msgstr "niezdefiniowana funkcja %s"
-#: src/fetch.c:209
+#: src/fetch.c:199
msgid "server field in pop_acc not defined"
msgstr ""
-#: src/fetch.c:216
+#: src/fetch.c:206
msgid "username field in pop_acc not defined"
msgstr ""
-#: src/fetch.c:223
+#: src/fetch.c:213
msgid "password field in pop_acc not defined"
msgstr ""
-#: src/fetch.c:261
+#: src/fetch.c:260
#, fuzzy, c-format
msgid "couldn't write to %s"
msgstr "zapis w katalogu %s nie jest mo¿liwy"
-#: src/fetch.c:272
+#: src/fetch.c:271
#, c-format
msgid "couldn't fetch mail %d"
msgstr "nie mo¿na pobraæ listu nr %d"
-#: src/fetch.c:298
+#: src/fetch.c:297
msgid "no new mail"
msgstr "brak nowej poczty"
-#: src/fetch.c:320
+#: src/fetch.c:323
msgid "fetch"
msgstr "pobieranie"
-#: src/maildir.c:282
+#: src/maildir.c:285
#, c-format
msgid "%s has bad format"
msgstr "%s ma z³y format"
-#: src/maildir.c:489
+#: src/maildir.c:506
msgid "reading directory"
msgstr "odczytywanie katalogu"
@@ -192,22 +192,22 @@
msgid "send"
msgstr "wysy³anie"
-#: src/pop.c:345
+#: src/pop.c:347
#, c-format
msgid "logging as %s..."
msgstr "logowanie jako %s..."
-#: src/pop.c:348
+#: src/pop.c:350
#, c-format
msgid "invalid user name %s"
msgstr "%s: b³êdna nazwa u¿ytkownika"
-#: src/pop.c:353
+#: src/pop.c:355
#, c-format
msgid "password %s rejected"
msgstr "odrzucono has³o %s"
-#: src/pop.c:401
+#: src/pop.c:403
msgid "retrieving list"
msgstr "pobieranie listy"
@@ -292,6 +292,12 @@
msgid " new:"
msgstr " nowych:"
+#~ msgid "congratulations! you have just found a bug"
+#~ msgstr "gratulacje! w³a¶nie znalaz³a¶/e¶ b³±d w programie"
+
+#~ msgid "opening addressbook: %s"
+#~ msgstr "otwieranie ksi±¿ki adresowej: %s"
+
#~ msgid "invalid state in key definition '%s'"
#~ msgstr "nieprawid³owa nazwa stanu w definicji klawisza '%s'"
diff -Nru elmo-0.8.1/src/abook.c elmo-0.8.1-/src/abook.c
--- elmo-0.8.1/src/abook.c 2003-07-21 22:08:01.000000000 +0200
+++ elmo-0.8.1-/src/abook.c 2003-07-28 10:34:02.000000000 +0200
@@ -69,6 +69,10 @@
* IMPLEMENTATION PRIVATE CLASS PROTOTYPES / EXTERNAL CLASS REFERENCES
****************************************************************************/
+/**
+ * There is only one structure of this type. It is used to collect data
+ * about the address being read from the addressbook file.
+ */
typedef struct new_item {
addr_t *addr;
char **s_field;
@@ -121,7 +125,7 @@
static new_item_t new_item = {NULL, NULL, 0, 0};
/**
- * All addressbook addresses are stored in this memblock.
+ * All addressbook addresses (with their data) are stored in this memblock.
*/
static memblock_t *addr_block = NULL;
@@ -142,7 +146,6 @@
addr_t **addr;
char *fmt = ask_for_default ("abook_format", NULL);
rstring_t *result = rstring_create_size (abook->count + 1);
- line_t *line = line_create (ABOOK_WIDTH - 2 + 1);
if (fmt == NULL)
fmt = DEFAULT_FORMAT;
@@ -151,7 +154,6 @@
for (addr = abook->array; *addr; addr++){
rstring_add (result, eprintf_addr (fmt, *addr));
}
- line_destroy (line);
return result;
}
@@ -200,12 +202,21 @@
{
fprintf (fp, "addr {\n");
- if (addr->name)
- fprintf (fp, " name:\t\t\"%s\"\n", addr->name);
+ /**
+ * it won't work if name has both kinds of quotes (single and double)
+ */
+ if (addr->name){
+ if (addr->flags.atomic_name)
+ fprintf (fp, " name:\t\t%s\n", addr->name);
+ else if (! addr->flags.quotes_in_name)
+ fprintf (fp, " name:\t\t\"%s\"\n", addr->name);
+ else
+ fprintf (fp, " name:\t\t'%s'\n", addr->name);
+ }
if (addr->email)
- fprintf (fp, " email:\t\t\"%s\"\n", addr->email);
+ fprintf (fp, " email:\t\t%s\n", addr->email);
if (addr->initials)
- fprintf (fp, " initials:\t\"%s\"\n", addr->initials);
+ fprintf (fp, " initials:\t%s\n", addr->initials);
if (addr->flags.sex == SEX_MALE)
fprintf (fp, " sex:\t\tM\n");
else if (addr->flags.sex == SEX_FEMALE)
@@ -395,6 +406,32 @@
}
+
+static void
+action_change_sex (int index)
+{
+ addr_t *addr = abook->array[index];
+
+ if (addr->flags.sex == SEX_MALE)
+ addr->flags.sex = SEX_FEMALE;
+ else if (addr->flags.sex == SEX_FEMALE)
+ addr->flags.sex = SEX_MALE;
+
+ if (addr->flags.sex != SEX_UNKNOWN)
+ abook_changed = 1;
+}
+
+
+static void
+action_change_official (int index)
+{
+ addr_t *addr = abook->array[index];
+
+ addr->flags.official = ! addr->flags.official;
+ abook_changed = 1;
+}
+
+
static void
action_add_to_str (int index)
{
@@ -415,6 +452,9 @@
PREAMBLE;
+ /**
+ * The reversed order is essential for action_remove.
+ */
for (i = abook->count - 1; i >= 0; i--){
if (bitarray_is_set (abook_select->selected, i)){
fun (i);
@@ -422,7 +462,7 @@
}
}
- if (! took){
+ if (! took && abook->count > 0){
fun (abook_select->bar_pos);
}
}
@@ -464,6 +504,15 @@
}
+void
+abook_refresh (void)
+{
+ PREAMBLE;
+
+ select_show (abook_select);
+}
+
+
void
abook_next (void)
@@ -525,7 +574,7 @@
void
-abook_change (void)
+abook_hit (void)
{
PREAMBLE;
@@ -535,7 +584,7 @@
void
-abook_change_all (void)
+abook_hit_all (void)
{
PREAMBLE;
@@ -595,6 +644,33 @@
void
+abook_change_official (void)
+{
+ rstring_t *items;
+
+ PREAMBLE;
+
+ take_action (action_change_official);
+ items = make_items ();
+ select_install_new_items (abook_select, items);
+}
+
+
+
+void
+abook_change_sex (void)
+{
+ rstring_t *items;
+
+ PREAMBLE;
+
+ take_action (action_change_sex);
+ items = make_items ();
+ select_install_new_items (abook_select, items);
+}
+
+
+void
abook_compose (void)
{
PREAMBLE;
@@ -613,121 +689,128 @@
{
char *name;
char *email;
- char *flags;
- addr_t *addr = NULL;
- char *item = NULL;
- line_t *line = line_create (ABOOK_WIDTH + 2 - 1);
-
- name = xstrdup (read_argument ("name: ", NULL, COMPLETE_NONE));
- if (name == NULL || *name == '\0'){
- if (name)
- xfree (name);
- line_destroy (line);
- return;
- }
- email = xstrdup (read_argument ("email: ", NULL, COMPLETE_NONE));
- if (email == NULL || *email == '\0'){
- xfree (name);
- if (email)
- xfree (email);
- line_destroy (line);
- return;
- }
- flags = xstrdup (read_argument ("flag: ", NULL, COMPLETE_NONE));
- if (flags == NULL || flags == '\0'){
- xfree (name);
- xfree (email);
- if (flags)
- xfree (flags);
- line_destroy (line);
- return;
- }
-/*
- addr = address_construct (email, name, *flags);
-*/
- raddress_add (abook, addr);
- select_add_item (abook_select, item);
+ char *fmt;
+ char *item;
+ addr_t *addr;
- line_destroy (line);
- xfree (name);
- xfree (email);
- xfree (flags);
-}
+ PREAMBLE;
+
+ name = read_argument ("name: ", NULL, COMPLETE_NONE);
+ if (name == NULL)
+ return;
+ else if (*name == '\0')
+ name = NULL;
+ else
+ name = memblock_strdup (&addr_block, name);
+ email = read_argument ("email: ", NULL, COMPLETE_NONE);
+ if (email == NULL || (*email == '\0' && name == NULL))
+ return;
+ else if (*email == '\0')
+ email = NULL;
+ else
+ email = memblock_strdup (&addr_block, email);
+ addr = address_empty ();
+ addr->name = name;
+ addr->email = email;
+ addr->flags.abook = YES;
-void
-abook_change_name (void)
-{
- addr_t *addr = abook->array[abook_select->bar_pos];
- char *name = read_argument ("name: ", addr->name, COMPLETE_NONE);
- char **item = abook_select->items->array + abook_select->bar_pos;
- line_t *line = line_create (ABOOK_WIDTH + 2 - 1);
+ address_complete_mem (addr, &addr_block);
+
+ raddress_add (abook, addr);
- if (name == NULL || *name == '\0'){
- line_destroy (line);
- return;
- }
+ abook_changed = 1;
+ abook_sorted = 0;
+
+ fmt = ask_for_default ("abook_format", NULL);
+ if (fmt == NULL)
+ fmt = DEFAULT_FORMAT;
-/*
- addr = address_construct (addr->email, name, addr->flags);
-*/
- xfree (*item);
- abook->array[abook_select->bar_pos] = addr;
- select_redraw (abook_select);
+ item = eprintf_addr (fmt, addr);
- line_destroy (line);
+ select_add_item (abook_select, item);
}
void
-abook_change_email (void)
+abook_change_name (void)
{
- addr_t *addr = abook->array[abook_select->bar_pos];
- char *email = read_argument ("email: ", addr->email, COMPLETE_NONE);
- char **item = abook_select->items->array + abook_select->bar_pos;
- line_t *line = line_create (ABOOK_WIDTH + 2 - 1);
+ addr_t *addr;
+ char *fmt;
+ char *name;
+ char **item;
- if (email == NULL || *email == '\0'){
- line_destroy (line);
+ PREAMBLE;
+
+ addr = abook->array[abook_select->bar_pos];
+ name = read_argument ("name: ", addr->name, COMPLETE_NONE);
+ if (name == NULL)
return;
- }
+ else if (*name == '\0')
+ name = NULL;
+ else
+ name = memblock_strdup (&addr_block, name);
+
+ addr->name = name;
+ addr->full = NULL;
+
+ address_complete_mem (addr, &addr_block);
-/*
- addr = address_construct (email, addr->name, addr->flags);
-*/
+ fmt = ask_for_default ("abook_format", NULL);
+ if (fmt == NULL)
+ fmt = DEFAULT_FORMAT;
+
+ item = abook_select->items->array + abook_select->bar_pos;
xfree (*item);
- abook->array[abook_select->bar_pos] = addr;
- select_redraw (abook_select);
+ *item = eprintf_addr (fmt, addr);
- line_destroy (line);
-}
+ abook_changed = 1;
+ select_redraw (abook_select);
+}
void
-abook_change_flag (void)
+abook_change_email (void)
{
- char *flags = read_argument ("flag: ", NULL, COMPLETE_NONE);
- char **item = abook_select->items->array + abook_select->bar_pos;
- line_t *line = line_create (ABOOK_WIDTH + 2 - 1);
+ addr_t *addr;
+ char *fmt;
+ char *email;
+ char **item;
+
+ PREAMBLE;
- if (flags == NULL || *flags == '\0'){
- line_destroy (line);
+ addr = abook->array[abook_select->bar_pos];
+ email = read_argument ("email: ", addr->email, COMPLETE_NONE);
+
+ if (email == NULL)
return;
- }
+ else if (*email == '\0')
+ email = NULL;
+ else
+ email = memblock_strdup (&addr_block, email);
+
+ addr->email = email;
+ addr->full = NULL;
+
+ address_complete_mem (addr, &addr_block);
+
+ fmt = ask_for_default ("abook_format", NULL);
+ if (fmt == NULL)
+ fmt = DEFAULT_FORMAT;
-/*
- addr->flags = *flags;
-*/
+ item = abook_select->items->array + abook_select->bar_pos;
xfree (*item);
+ *item = eprintf_addr (fmt, addr);
+
+ abook_changed = 1;
select_redraw (abook_select);
- line_destroy (line);
}
-
+
/****************************************************************************
* ADDRESSBOOK ADDING WINDOW FUNCTIONS
@@ -785,6 +868,16 @@
void
+abook_add_refresh (void)
+{
+ PREAMBLE_ADD;
+
+ select_show (add_select);
+}
+
+
+
+void
abook_add_next (void)
{
PREAMBLE_ADD;
@@ -851,6 +944,9 @@
PREAMBLE_ADD;
+ if (add_raddress->count == 0)
+ return;
+
addr = add_raddress->array[add_select->bar_pos];
if (addr->flags.abook)
return;
diff -Nru elmo-0.8.1/src/abook.h elmo-0.8.1-/src/abook.h
--- elmo-0.8.1/src/abook.h 2003-07-21 22:08:01.000000000 +0200
+++ elmo-0.8.1-/src/abook.h 2003-07-27 16:31:56.000000000 +0200
@@ -56,27 +56,30 @@
extern void abook_open (void);
extern void abook_close (void);
+extern void abook_refresh (void);
extern void abook_next (void);
extern void abook_prev (void);
extern void abook_next_page (void);
extern void abook_prev_page (void);
extern void abook_first (void);
extern void abook_last (void);
-extern void abook_change (void);
-extern void abook_change_all (void);
+extern void abook_hit (void);
+extern void abook_hit_all (void);
extern void abook_set (void);
extern void abook_unset (void);
extern void abook_set_all (void);
extern void abook_unset_all (void);
extern void abook_change_name (void);
extern void abook_change_email (void);
-extern void abook_change_flag (void);
+extern void abook_change_sex (void);
+extern void abook_change_official (void);
extern void abook_remove (void);
extern void abook_insert (void);
extern void abook_compose (void);
extern void abook_add_open (void);
extern void abook_add_close (void);
+extern void abook_add_refresh (void);
extern void abook_add_next (void);
extern void abook_add_prev (void);
extern void abook_add_next_page (void);
diff -Nru elmo-0.8.1/src/address.c elmo-0.8.1-/src/address.c
--- elmo-0.8.1/src/address.c 2003-07-21 22:08:01.000000000 +0200
+++ elmo-0.8.1-/src/address.c 2003-07-27 17:45:19.000000000 +0200
@@ -64,6 +64,7 @@
#define PHRASE "(" WORD "+)"
+#define ATOM_RE "^" ATOM "$"
#define EMAIL_RE "(" DOT_ATOM "@" DOT_ATOM ")"
#define COMMENT_RE "[(][^()]*[)]"
@@ -107,6 +108,32 @@
****************************************************************************/
+static char *
+clean_copy (memblock_t **block, const char *str)
+{
+ char *last_space;
+ char *end;
+ char *result;
+
+ while (isspace (*str))
+ str++;
+
+ result = memblock_strdup (block, str);
+
+ for (end = result; *end; end++){
+ if (isspace (*end) && last_space == NULL)
+ last_space = end;
+ else
+ last_space = NULL;
+ }
+
+ if (last_space)
+ *last_space = '\0';
+
+ return result;
+}
+
+
/**
* ALGORITHM:
* 1. find email (according to RFC2822 syntax) in the addr->full string
@@ -207,18 +234,19 @@
-static void
+static int
strip_quotes (char *str)
{
char *src = str;
char *dest = str;
int off = 0;
int len = 0;
+ int ret = 0;
int slen;
regmatch_t matches[1];
if (str == NULL)
- return;
+ return 1;
while (misc_regex (QUOTED_STRING, src, matches)){
off = matches[0].rm_so;
@@ -228,6 +256,7 @@
memmove (dest + off, src + off + 1, len - 2);
dest += off + len - 2;
src = src + matches[0].rm_eo;
+ ret = 1;
}
if (len){
@@ -236,6 +265,7 @@
memmove (dest, src + 1, slen - 1);
dest[slen] = '\0';
}
+ return ret;
}
@@ -283,7 +313,8 @@
addr->name = NULL;
strip_name (addr);
- strip_quotes (addr->name);
+ if (strip_quotes (addr->name))
+ addr->flags.atomic_name = YES;
strip_escapes (addr->name);
}
@@ -345,6 +376,9 @@
if (addr->name == NULL)
return;
+
+ if (*addr->name == '\0')
+ return;
iseek = initials = xmalloc (strlen (addr->name));
@@ -364,12 +398,64 @@
}
+static int
+is_atom (const char *str)
+{
+ regmatch_t matches[1];
+
+ return misc_regex (ATOM_RE, str, matches);
+}
+
+
static void
make_full (addr_t *addr, memblock_t **data_block)
{
+ int ret;
+ int len;
+ int n_len;
+ int e_len;
+ int f_len;
+ char *f_ptr;
+ char *seek;
+
if (addr->name && addr->email){
- addr->full = memblock_sprintf (data_block, "\"%s\" <%s>", addr->name,
- addr->email);
+ ret = is_atom (addr->name);
+ if (ret){
+ addr->flags.atomic_name = YES;
+ addr->full = memblock_sprintf (data_block, "%s <%s>", addr->name,
+ addr->email);
+ return;
+ }
+
+ addr->flags.atomic_name = NO;
+
+ n_len = strlen (addr->name);
+ e_len = strlen (addr->email);
+ /* " name " < email > \0 */
+ f_len = 1 + 2 * n_len + 1 + 1 + e_len + 1 + 1;
+
+ f_ptr = addr->full = memblock_malloc (data_block, f_len);
+ *f_ptr = '"';
+ f_ptr++;
+ for (seek = addr->name; *seek; seek++){
+ if (*seek == '"'){
+ *f_ptr = '\\';
+ f_ptr++;
+ addr->flags.quotes_in_name = YES;
+ }
+ else if (*seek == '\\'){
+ *f_ptr = '\\';
+ f_ptr++;
+ }
+ *f_ptr = *seek;
+ f_ptr++;
+ }
+
+ len = f_ptr - addr->full;
+ len += sprintf (f_ptr, "\" <%s>", addr->email);
+ len += 1;
+
+ memblock_shrink_last (*data_block, len);
}
else if (addr->name){
addr->full = addr->name;
@@ -510,7 +596,7 @@
return NULL;
addr = address_empty_mem (data_block);
- addr->full = memblock_strdup (data_block, str);
+ addr->full = clean_copy (data_block, str);
inserted = insert (addr);
if (inserted){
diff -Nru elmo-0.8.1/src/address.h elmo-0.8.1-/src/address.h
--- elmo-0.8.1/src/address.h 2003-07-21 22:08:01.000000000 +0200
+++ elmo-0.8.1-/src/address.h 2003-07-27 17:37:00.000000000 +0200
@@ -102,12 +102,14 @@
char *initials;
union {
struct {
- enum email_kind kind : 3;
- enum email_sex sex : 2;
- enum yes_no official : 1;
- enum yes_no foreign : 1;
- enum yes_no abook : 1;
- enum yes_no own : 1;
+ enum email_kind kind : 3;
+ enum email_sex sex : 2;
+ enum yes_no official : 1;
+ enum yes_no foreign : 1;
+ enum yes_no abook : 1;
+ enum yes_no own : 1;
+ enum yes_no atomic_name : 1;
+ enum yes_no quotes_in_name : 1;
};
unsigned value;
} flags;
diff -Nru elmo-0.8.1/src/cmd.c elmo-0.8.1-/src/cmd.c
--- elmo-0.8.1/src/cmd.c 2003-07-21 22:08:01.000000000 +0200
+++ elmo-0.8.1-/src/cmd.c 2003-07-27 16:33:56.000000000 +0200
@@ -136,8 +136,11 @@
keymap_add (keymaps + CMD_LIST, 'r', sender_open_reply);
keymap_add (keymaps + CMD_LIST, 'f', sender_open_fwd);
keymap_add (keymaps + CMD_LIST, 'c', box_selection_open);
- keymap_add (keymaps + CMD_LIST, ' ', folder_toggle_flag);
keymap_add (keymaps + CMD_LIST, '$', folder_flush);
+ keymap_add (keymaps + CMD_LIST, ' ', folder_toggle_flag);
+ keymap_add (keymaps + CMD_LIST, '*', folder_flag_invert);
+ keymap_add (keymaps + CMD_LIST, '+', folder_flag_all);
+ keymap_add (keymaps + CMD_LIST, '-', folder_unflag_all);
keymap_add (keymaps + CMD_SELECT_BOX, KEY_PPAGE, box_selection_prev_page);
keymap_add (keymaps + CMD_SELECT_BOX, KEY_NPAGE, box_selection_next_page);
@@ -157,10 +160,14 @@
keymap_add (keymaps + CMD_ABOOK, KEY_DC, abook_remove);
keymap_add (keymaps + CMD_ABOOK, 'n', abook_change_name);
keymap_add (keymaps + CMD_ABOOK, 'e', abook_change_email);
- keymap_add (keymaps + CMD_ABOOK, 'f', abook_change_flag);
+ keymap_add (keymaps + CMD_ABOOK, 's', abook_change_sex);
+ keymap_add (keymaps + CMD_ABOOK, 'o', abook_change_official);
keymap_add (keymaps + CMD_ABOOK, 'a', abook_insert);
keymap_add (keymaps + CMD_ABOOK, 'q', abook_close);
- keymap_add (keymaps + CMD_ABOOK, ' ', abook_change);
+ keymap_add (keymaps + CMD_ABOOK, ' ', abook_hit);
+ keymap_add (keymaps + CMD_ABOOK, '*', abook_hit_all);
+ keymap_add (keymaps + CMD_ABOOK, '+', abook_set_all);
+ keymap_add (keymaps + CMD_ABOOK, '-', abook_unset_all);
keymap_add (keymaps + CMD_ABOOK, 'm', abook_compose);
keymap_add (keymaps + CMD_READ_MAIL, 'q', mailreader_close);
@@ -213,6 +220,7 @@
keymap_add (keymaps + CMD_SENDER, 'f', sender_change_from);
keymap_add (keymaps + CMD_SENDER, 's', sender_change_subject);
keymap_add (keymaps + CMD_SENDER, 'r', sender_change_reply_to);
+ keymap_add (keymaps + CMD_SENDER, 'S', sender_change_smtp);
keymap_add (keymaps + CMD_SENDER, 'a', sender_add_attachment);
keymap_add (keymaps + CMD_SENDER, KEY_DC, sender_delete_attachment);
keymap_add (keymaps + CMD_SENDER, 'd', sender_delete_attachment);
@@ -221,10 +229,12 @@
keymap_add (keymaps + CMD_SENDER, 'y', sender_go);
keymap_add (keymaps + CMD_SENDER, 'E', sender_reedit);
- keymap_add (keymaps + CMD_ASK, KEY_HOME, choose_first);
- keymap_add (keymaps + CMD_ASK, KEY_END, choose_last);
- keymap_add (keymaps + CMD_ASK, KEY_DOWN, choose_next);
- keymap_add (keymaps + CMD_ASK, KEY_UP, choose_prev);
+ keymap_add (keymaps + CMD_ASK, KEY_HOME, choose_first);
+ keymap_add (keymaps + CMD_ASK, KEY_END, choose_last);
+ keymap_add (keymaps + CMD_ASK, KEY_DOWN, choose_next);
+ keymap_add (keymaps + CMD_ASK, KEY_RIGHT, choose_next);
+ keymap_add (keymaps + CMD_ASK, KEY_UP, choose_prev);
+ keymap_add (keymaps + CMD_ASK, KEY_LEFT, choose_prev);
keymap_add (keymaps + CMD_LIST, '~', cmd_test_action);
}
@@ -348,6 +358,14 @@
attach_refresh ();
break;
+ case CMD_ABOOK:
+ abook_refresh ();
+ break;
+
+ case CMD_ABOOK_ADD:
+ abook_add_refresh ();
+ break;
+
default:
break;
}
diff -Nru elmo-0.8.1/src/compose.c elmo-0.8.1-/src/compose.c
--- elmo-0.8.1/src/compose.c 2003-07-21 22:08:01.000000000 +0200
+++ elmo-0.8.1-/src/compose.c 2003-07-26 15:31:56.000000000 +0200
@@ -459,13 +459,17 @@
char *
compose_new (char *to)
{
+ char *real_to;
char *ret;
char *subject;
rstring_t *header;
if (to == NULL)
- to = xstrdup (read_argument ("To: ", NULL, COMPLETE_ADDRS));
- if (to == NULL)
+ real_to = xstrdup (read_argument ("To: ", NULL, COMPLETE_ADDRS));
+ else
+ real_to = xstrdup (to);
+
+ if (real_to == NULL)
return NULL;
subject = read_argument ("Subject: ", NULL, COMPLETE_NONE);
@@ -478,14 +482,14 @@
compose_act = COMPOSE_NEW;
rstring_add (header, make_from ());
- rstring_add (header, make_to (to));
+ rstring_add (header, make_to (real_to));
rstring_add (header, make_subject (subject, NULL));
rstring_add (header, make_empty_line ());
rstring_add (header, make_signature ());
ret = make_file_and_run (header, header->count, header->count, NULL);
- xfree (to);
+ xfree (real_to);
rstring_free_strings (header);
rstring_delete (header);
diff -Nru elmo-0.8.1/src/confread.c elmo-0.8.1-/src/confread.c
--- elmo-0.8.1/src/confread.c 2003-07-21 22:08:01.000000000 +0200
+++ elmo-0.8.1-/src/confread.c 2003-07-26 18:45:34.000000000 +0200
@@ -18,7 +18,7 @@
/* A lexical scanner generated by flex */
/* Scanner skeleton version:
- * $Header: /cvsroot/elmo/elmo/src/confread.c,v 1.30 2003/07/21 20:08:01 sdas Exp $
+ * $Header: /home/daffy/u0/vern/flex/RCS/flex.skl,v 2.91 96/09/10 16:58:48 vern Exp $
*/
#define FLEX_SCANNER
diff -Nru elmo-0.8.1/src/elmo.c elmo-0.8.1-/src/elmo.c
--- elmo-0.8.1/src/elmo.c 2003-07-21 22:08:01.000000000 +0200
+++ elmo-0.8.1-/src/elmo.c 2003-07-26 15:08:11.000000000 +0200
@@ -110,9 +110,10 @@
static char *config_file = NULL;
/**
- * this is used in signal handler
+ * this is used in signal handler to indicate that this error is being
+ * handled (see info libc)
*/
-static volatile sig_atomic_t segmentation_fault = 0;
+static volatile sig_atomic_t error_indicator = 0;
/****************************************************************************
* INTERFACE DATA
@@ -284,19 +285,22 @@
screen_doupdate ();
}
+
+
static void
curses_cleanup (int signum)
{
- if (segmentation_fault)
+ if (error_indicator)
raise (signum);
- segmentation_fault = 1;
+ error_indicator = 1;
clock_stop ();
curs_set (1);
endwin ();
- write (2, BUG_MSG, sizeof (BUG_MSG));
+ if (signum == SIGSEGV || signum == SIGFPE || signum == SIGABRT)
+ write (2, BUG_MSG, sizeof (BUG_MSG));
signal (signum, SIG_DFL);
raise (signum);
@@ -306,11 +310,9 @@
static void
setup_window (void)
{
-
- signal (SIGINT, elmo_finish);
- signal (SIGTERM, elmo_finish);
- signal (SIGQUIT, elmo_finish);
-
+ signal (SIGTERM, curses_cleanup);
+ signal (SIGQUIT, curses_cleanup);
+ signal (SIGINT, curses_cleanup);
signal (SIGSEGV, curses_cleanup);
signal (SIGFPE, curses_cleanup);
signal (SIGABRT, curses_cleanup);
@@ -388,10 +390,8 @@
status_free_resources ();
screen_free_resources ();
confhold_free_resources ();
- curs_set(1);
+ curs_set (1);
debug_end ();
- if (signum)
- exit (EXIT_SUCCESS);
}
diff -Nru elmo-0.8.1/src/eprintf.c elmo-0.8.1-/src/eprintf.c
--- elmo-0.8.1/src/eprintf.c 2003-07-21 22:08:01.000000000 +0200
+++ elmo-0.8.1-/src/eprintf.c 2003-07-26 18:42:38.000000000 +0200
@@ -220,7 +220,7 @@
int w_len;
if (! t)
- return;
+ t = "";
t_len = strlen (t);
@@ -286,30 +286,34 @@
/* Johnny Masta Killa */
case 'f':
- if (mail->from && mail->from->name)
+ if (mail->from)
put_string_fs (s, mail->from->name, &fs);
- else if (mail->from && mail->from->full)
- put_string_fs (s, mail->from->full, &fs);
+ else
+ put_string_fs (s, NULL, &fs);
break;
/* Johnny Masta Killa */
case 'F':
- if (mail->from && mail->from->full)
+ if (mail->from)
put_string_fs (s, mail->from->full, &fs);
+ else
+ put_string_fs (s, NULL, &fs);
break;
/* Bob The Ripper */
case 't':
- if (mail->to && mail->to->count && mail->to->array[0]->name)
+ if (mail->to && mail->to->count)
put_string_fs (s, mail->to->array[0]->name, &fs);
- else if (mail->to && mail->to->count && mail->to->array[0]->full)
- put_string_fs (s, mail->to->array[0]->full, &fs);
+ else
+ put_string_fs (s, NULL, &fs);
break;
/* Bob The Ripper */
case 'T':
- if (mail->to && mail->to->count && mail->to->array[0]->full)
+ if (mail->to && mail->to->count)
put_string_fs (s, mail->to->array[0]->full, &fs);
+ else
+ put_string_fs (s, NULL, &fs);
break;
/* Wed, 7 May 2003 15:36:46 +0200 */
@@ -326,29 +330,21 @@
/* Bow before me! */
case 's':
- if (mail->subject)
- put_string_fs (s, mail->subject, &fs);
+ put_string_fs (s, mail->subject, &fs);
break;
/* JMK */
case 'i':
- if (mail->from && mail->from->initials)
+ if (mail->from)
put_string_fs (s, mail->from->initials, &fs);
- else {
- if (mail->from && mail->from->name)
- put_char (s, *mail->from->name);
- else if (mail->from
- && mail->from->full)
- put_char (s, *mail->from->full);
- if (mail->from && mail->from->last)
- put_char (s, *mail->from->last);
- }
+ else
+ put_string_fs (s, NULL, &fs);
break;
/* (3.5K) */
case 'S':
size = wrapbox_mail_size (mail);
- put_string_fs (s, human_size_paren (size), &fs);
+ put_string_fs (s, human_size_pure (size), &fs);
break;
/* these are flags */
@@ -438,13 +434,11 @@
break;
case 'n':
- if (addr->name)
- put_string_fs (s, addr->name, &fs);
+ put_string_fs (s, addr->name, &fs);
break;
case 'e':
- if (addr->email)
- put_string_fs (s, addr->email, &fs);
+ put_string_fs (s, addr->email, &fs);
break;
case 'o':
diff -Nru elmo-0.8.1/src/exec_table.t elmo-0.8.1-/src/exec_table.t
--- elmo-0.8.1/src/exec_table.t 2003-07-21 22:08:01.000000000 +0200
+++ elmo-0.8.1-/src/exec_table.t 2003-07-27 16:32:00.000000000 +0200
@@ -8,26 +8,29 @@
{"abook_new_store", abook_new_store, NULL, NULL},
{"abook_open", abook_open, NULL, NULL},
{"abook_close", abook_close, NULL, NULL},
+{"abook_refresh", abook_refresh, NULL, NULL},
{"abook_next", abook_next, NULL, NULL},
{"abook_prev", abook_prev, NULL, NULL},
{"abook_next_page", abook_next_page, NULL, NULL},
{"abook_prev_page", abook_prev_page, NULL, NULL},
{"abook_first", abook_first, NULL, NULL},
{"abook_last", abook_last, NULL, NULL},
-{"abook_change", abook_change, NULL, NULL},
-{"abook_change_all", abook_change_all, NULL, NULL},
+{"abook_hit", abook_hit, NULL, NULL},
+{"abook_hit_all", abook_hit_all, NULL, NULL},
{"abook_set", abook_set, NULL, NULL},
{"abook_unset", abook_unset, NULL, NULL},
{"abook_set_all", abook_set_all, NULL, NULL},
{"abook_unset_all", abook_unset_all, NULL, NULL},
{"abook_change_name", abook_change_name, NULL, NULL},
{"abook_change_email", abook_change_email, NULL, NULL},
-{"abook_change_flag", abook_change_flag, NULL, NULL},
+{"abook_change_sex", abook_change_sex, NULL, NULL},
+{"abook_change_official", abook_change_official, NULL, NULL},
{"abook_remove", abook_remove, NULL, NULL},
{"abook_insert", abook_insert, NULL, NULL},
{"abook_compose", abook_compose, NULL, NULL},
{"abook_add_open", abook_add_open, NULL, NULL},
{"abook_add_close", abook_add_close, NULL, NULL},
+{"abook_add_refresh", abook_add_refresh, NULL, NULL},
{"abook_add_next", abook_add_next, NULL, NULL},
{"abook_add_prev", abook_add_prev, NULL, NULL},
{"abook_add_next_page", abook_add_next_page, NULL, NULL},
diff -Nru elmo-0.8.1/src/fetch.c elmo-0.8.1-/src/fetch.c
--- elmo-0.8.1/src/fetch.c 2003-07-21 22:08:01.000000000 +0200
+++ elmo-0.8.1-/src/fetch.c 2003-07-26 14:05:25.000000000 +0200
@@ -89,7 +89,7 @@
/**
* This is the default format of the line displayed in the fetch window.
*/
-static char *default_format = "%?%$ %D %016f %S %s";
+static char *default_format = "%?%$ %D %016f (%-06S) %s";
/****************************************************************************
* INTERFACE DATA
diff -Nru elmo-0.8.1/src/mail.c elmo-0.8.1-/src/mail.c
--- elmo-0.8.1/src/mail.c 2003-07-21 22:08:01.000000000 +0200
+++ elmo-0.8.1-/src/mail.c 2003-07-26 15:14:45.000000000 +0200
@@ -295,6 +295,7 @@
mail->place.generic = NULL;
mail->date = 0;
mail->mua = MUA_UNKNOWN;
+ mail->type = BOX_INVALID;
mail->rmime = NULL;
}
diff -Nru elmo-0.8.1/src/maildir.c elmo-0.8.1-/src/maildir.c
--- elmo-0.8.1/src/maildir.c 2003-07-21 22:08:01.000000000 +0200
+++ elmo-0.8.1-/src/maildir.c 2003-07-26 13:59:48.000000000 +0200
@@ -277,6 +277,7 @@
ret = mlex_scan_file (0);
if (ret == NEXT_MAIL){
newmail->flags |= mail_flags (fname, dir, dname_len);
+ newmail->type = BOX_MAILDIR;
newmail->place.file_name = full_name;
mail_array_insert (new_marray, newmail);
}
@@ -530,6 +531,7 @@
static mail_array_t *
read_cache (const char *dir)
{
+ int i;
char *fname;
FILE *fp;
mail_array_t *marray;
@@ -554,6 +556,9 @@
if (marray_r)
mail_array_substitute (marray, marray_r);
+ for (i = 0; i < marray->count; i++)
+ marray->array[i].type = BOX_MAILDIR;
+
xfree (fname);
return marray;
}
diff -Nru elmo-0.8.1/src/mail.h elmo-0.8.1-/src/mail.h
--- elmo-0.8.1/src/mail.h 2003-07-21 22:08:01.000000000 +0200
+++ elmo-0.8.1-/src/mail.h 2003-07-26 13:57:37.000000000 +0200
@@ -42,7 +42,7 @@
#define FLAG_TRASHED 0x0008
#define FLAG_DRAFT 0x0010
#define FLAG_FLAGGED 0x0020
- #define FLAG_PASSED 0x0040
+#define FLAG_PASSED 0x0040
#define FLAG_LEGITIMATE 0x0080
#define FLAG_NOSPAM 0x0100
#define FLAG_SPAM 0x0200
@@ -98,6 +98,7 @@
BOX_INVALID,
BOX_MBOX,
BOX_MAILDIR,
+ BOX_POP3,
} box_type_t;
@@ -122,6 +123,8 @@
* INTERFACE STRUCTURES / UTILITY CLASSES
****************************************************************************/
+struct mail_array;
+
/**
* This simple structure describes a single mail and its connections with
* other mails grouped in mail_array, and in a tree which is built when
@@ -135,6 +138,8 @@
* to -- To: field split into an array of addresses
* cc -- Cc: field split into an array of addresses
* bcc -- Bcc: field split into an array of addresses
+ * recv_for -- Received: [...] for ; -- email address as
+ * a string
* msg_id -- Message-ID: field
* in_reply_to -- References: field split into an array of message ids or
* one message id taken from In-reply-to: field.
@@ -170,11 +175,14 @@
time_t date;
mua_t mua;
rmime_t *rmime;
+
+ box_type_t type;
union {
void *generic;
unsigned offset_header;
char *file_name;
+ int size;
} place;
};
diff -Nru elmo-0.8.1/src/mbox.c elmo-0.8.1-/src/mbox.c
--- elmo-0.8.1/src/mbox.c 2003-07-21 22:08:01.000000000 +0200
+++ elmo-0.8.1-/src/mbox.c 2003-07-26 14:00:01.000000000 +0200
@@ -151,6 +151,7 @@
switch (ret){
case NEXT_MAIL:
+ newmail->type = BOX_MBOX;
mail_array_insert (result, newmail);
progress_add (mbox_mail_size (newmail));
break;
diff -Nru elmo-0.8.1/src/memblock.c elmo-0.8.1-/src/memblock.c
--- elmo-0.8.1/src/memblock.c 2003-07-21 22:08:01.000000000 +0200
+++ elmo-0.8.1-/src/memblock.c 2003-07-27 17:12:09.000000000 +0200
@@ -199,6 +199,18 @@
void
+memblock_shrink_last (memblock_t *block, int size)
+{
+ if (size > block->last)
+ return;
+
+ block->used -= size - block->last;
+ block->last = size;
+}
+
+
+
+void
memblock_free_last (memblock_t *block)
{
block->used -= block->last;
diff -Nru elmo-0.8.1/src/memblock.h elmo-0.8.1-/src/memblock.h
--- elmo-0.8.1/src/memblock.h 2003-07-21 22:08:01.000000000 +0200
+++ elmo-0.8.1-/src/memblock.h 2003-07-27 16:52:28.000000000 +0200
@@ -58,6 +58,7 @@
extern void memblock_destroy (memblock_t *block);
extern char *memblock_strdup (memblock_t **block, const char *str);
extern void *memblock_malloc (memblock_t **block, int size);
+extern void memblock_shrink_last (memblock_t *block, int size);
extern void memblock_free_last (memblock_t *block);
extern void memblock_set_mark (memblock_t *block);
extern void memblock_free_marked (memblock_t **block);
diff -Nru elmo-0.8.1/src/mlex.c elmo-0.8.1-/src/mlex.c
--- elmo-0.8.1/src/mlex.c 2003-07-21 22:08:01.000000000 +0200
+++ elmo-0.8.1-/src/mlex.c 2003-07-26 18:45:33.000000000 +0200
@@ -1,7 +1,7 @@
/* A lexical scanner generated by flex */
/* Scanner skeleton version:
- * $Header: /cvsroot/elmo/elmo/src/mlex.c,v 1.55 2003/07/21 20:08:01 sdas Exp $
+ * $Header: /home/daffy/u0/vern/flex/RCS/flex.skl,v 2.91 96/09/10 16:58:48 vern Exp $
*/
#define FLEX_SCANNER
diff -Nru elmo-0.8.1/src/mybox.c elmo-0.8.1-/src/mybox.c
--- elmo-0.8.1/src/mybox.c 2003-07-21 22:08:01.000000000 +0200
+++ elmo-0.8.1-/src/mybox.c 2003-07-26 14:09:13.000000000 +0200
@@ -48,6 +48,10 @@
/****************************************************************************
* IMPLEMENTATION PRIVATE DEFINITIONS / ENUMERATIONS / SIMPLE TYPEDEFS
****************************************************************************/
+
+#define REGULAR_FORMAT "%?%$%# %D %016f (%-06S) "
+#define SENT_FORMAT "%?%$ %D %016t (%-06S) "
+
/****************************************************************************
* IMPLEMENTATION PRIVATE CLASS PROTOTYPES / EXTERNAL CLASS REFERENCES
****************************************************************************/
@@ -92,7 +96,7 @@
* folder line format
*/
-char *mybox_format = "%?%$%# %D %016f %S ";
+char *mybox_format = NULL;
/****************************************************************************
* IMPLEMENTATION PRIVATE FUNCTION PROTOTYPES
@@ -193,12 +197,12 @@
if (is_box (box, "sent") || is_box (box, "drafts")){
mybox_format = ask_for_default ("sent_format", NULL);
if (mybox_format == NULL)
- mybox_format = "%?%$ %D %016t %S ";
+ mybox_format = SENT_FORMAT;
}
else {
mybox_format = ask_for_default ("line_format", NULL);
if (mybox_format == NULL)
- mybox_format = "%?%$%# %D %016f %S ";
+ mybox_format = REGULAR_FORMAT;
}
}
diff -Nru elmo-0.8.1/src/pop.c elmo-0.8.1-/src/pop.c
--- elmo-0.8.1/src/pop.c 2003-05-22 21:27:24.000000000 +0200
+++ elmo-0.8.1-/src/pop.c 2003-07-26 15:14:03.000000000 +0200
@@ -246,6 +246,8 @@
{
item->info = xmalloc (sizeof (mail_t));
memcpy (item->info, newmail, sizeof (mail_t));
+ item->info->type = BOX_POP3;
+ item->info->place.size = item->size;
}
diff -Nru elmo-0.8.1/src/raddress.c elmo-0.8.1-/src/raddress.c
--- elmo-0.8.1/src/raddress.c 2003-07-21 22:08:01.000000000 +0200
+++ elmo-0.8.1-/src/raddress.c 2003-07-23 17:28:30.000000000 +0200
@@ -59,6 +59,22 @@
/****************************************************************************
* IMPLEMENTATION PRIVATE FUNCTIONS
****************************************************************************/
+
+static char *
+find_comma (char *str)
+{
+ int in_quotes = 0;
+
+ while (*str){
+ if (*str == '"')
+ in_quotes = ! in_quotes;
+ if (*str == ',' && ! in_quotes)
+ return str;
+ str++;
+ }
+ return NULL;
+}
+
/****************************************************************************
* INTERFACE FUNCTIONS
****************************************************************************/
@@ -139,7 +155,7 @@
result = raddress_create ();
while (seek && *seek){
- comma = strchr (seek, ',');
+ comma = find_comma (seek);
if (comma)
*comma = '\0';
diff -Nru elmo-0.8.1/src/sender.c elmo-0.8.1-/src/sender.c
--- elmo-0.8.1/src/sender.c 2003-07-21 22:08:01.000000000 +0200
+++ elmo-0.8.1-/src/sender.c 2003-07-26 15:25:12.000000000 +0200
@@ -61,6 +61,7 @@
****************************************************************************/
typedef enum {SENDER_DROP, SENDER_DRAFT, SENDER_SENT} sent_t;
+
#define PREAMBLE do {if (message == NULL) return; } while (0)
/****************************************************************************
@@ -601,9 +602,7 @@
}
if (from){
-/*
- message->reply_to = message->from = address_create (from);
-*/
+ message->reply_to = message->from = address_from_string (from);
}
mailinfo_refresh ();
@@ -614,8 +613,9 @@
void
sender_change_smtp (void)
{
- char *email;
- char *name;
+ char *email;
+ char *name;
+ addr_t *addr;
if(sender_ask == NULL)
return;
@@ -625,9 +625,11 @@
email = ask_get_field (sender_ask, "email");
name = ask_get_field (sender_ask, "my_name");
-/*
- message->reply_to = message->from = address_construct (email, name, 'F');
-*/
+ addr = address_empty ();
+ addr->name = name;
+ addr->email = email;
+
+ message->reply_to = message->from = address_complete (addr);
select_redraw (sender_select);
mailinfo_refresh ();
@@ -652,9 +654,7 @@
}
if (reply_to){
-/*
- message->reply_to = address_create (reply_to);
-*/
+ message->reply_to = address_from_string (reply_to);
}
mailinfo_refresh ();
diff -Nru elmo-0.8.1/src/wrapbox.c elmo-0.8.1-/src/wrapbox.c
--- elmo-0.8.1/src/wrapbox.c 2003-07-21 22:08:01.000000000 +0200
+++ elmo-0.8.1-/src/wrapbox.c 2003-07-26 13:58:50.000000000 +0200
@@ -175,9 +175,6 @@
switch (wrapbox_marray->type){
- case BOX_INVALID:
- return 1;
-
case BOX_MBOX:
ret = mbox_mail_header (mail, place, wrapbox_marray->path);
break;
@@ -185,6 +182,9 @@
case BOX_MAILDIR:
ret = maildir_mail_header (mail, place);
break;
+
+ default:
+ return 1;
}
if (ret == 0)
@@ -225,9 +225,6 @@
switch (wrapbox_marray->type){
- case BOX_INVALID:
- return 1;
-
case BOX_MBOX:
ret = mbox_mail_body (mail, place, mime, wrapbox_marray->path);
break;
@@ -235,6 +232,9 @@
case BOX_MAILDIR:
ret = maildir_mail_body (mail, place, mime);
break;
+
+ default:
+ return 1;
}
if (ret == 0)
@@ -256,14 +256,14 @@
switch (wrapbox_marray->type){
- case BOX_INVALID:
- return NULL;
-
case BOX_MAILDIR:
return maildir_fetch_single (mail);
case BOX_MBOX:
return NULL;
+
+ default:
+ return NULL;
}
return NULL;
@@ -284,14 +284,14 @@
switch (wrapbox_marray->type){
- case BOX_INVALID:
- return NULL;
-
case BOX_MAILDIR:
return maildir_fetch_where (wrapbox_marray->path);
case BOX_MBOX:
return NULL;
+
+ default:
+ return NULL;
}
return NULL;
@@ -386,13 +386,7 @@
int
wrapbox_mail_size (mail_t *mail)
{
- if (wrapbox_marray == NULL)
- return 0;
-
- switch (wrapbox_marray->type){
-
- case BOX_INVALID:
- return 0;
+ switch (mail->type){
case BOX_MBOX:
return mbox_mail_size (mail);
@@ -400,6 +394,9 @@
case BOX_MAILDIR:
return maildir_mail_size (mail);
+ case BOX_POP3:
+ return mail->place.size;
+
default:
return 0;
}