From 806a13ed8a23eeda97f50e4a9e0dd0fc5988efa7 Mon Sep 17 00:00:00 2001 From: Lukas Fleischer Date: Fri, 26 Aug 2011 11:26:51 +0200 Subject: src/io.c: iCal content line folding correctness This is a rather invasive change that introduces correct line folding to our iCal parser. From now on, ical_readline() should be used instead of fgets() to read lines from an iCal file as it unfolds lines automatically. We also need to use shared buffers as each ical_readline() invocation eats up the first part of the next line and stores it in the "lstore" buffer. Subsequent ical_readline() invocations copy the contents of this buffer and append continuation lines. We currently use a single buffer pair that is allocated in io_import_data() and pass it to all subroutines. ical_readline_init() needs to be called once for every buffer pair. It reads the first part of the current line and writes to "lstore", clearing the target buffer at the same time. Signed-off-by: Lukas Fleischer --- src/io.c | 181 ++++++++++++++++++++++++--------------------------------------- 1 file changed, 69 insertions(+), 112 deletions(-) diff --git a/src/io.c b/src/io.c index de46cce..12c9494 100644 --- a/src/io.c +++ b/src/io.c @@ -1813,7 +1813,7 @@ ical_store_apoint (char *mesg, char *note, long start, long dur, /* * Returns an allocated string representing the string given in argument once - * unformatted. See ical_unfold_content () below. + * unformatted. * * Note: * Even if the RFC2445 recommends not to have more than 75 octets on one line of @@ -1827,8 +1827,6 @@ ical_store_apoint (char *mesg, char *note, long start, long dur, static char * ical_unformat_line (char *line) { -#define LINE_FEED 0x0a -#define CARRIAGE_RETURN 0x0d char *p, uline[BUFSIZ]; int len; @@ -1840,10 +1838,6 @@ ical_unformat_line (char *line) { switch (*p) { - case LINE_FEED: - return mem_strdup (uline); - case CARRIAGE_RETURN: - break; case '\\': switch (*(p + 1)) { @@ -1871,106 +1865,69 @@ ical_unformat_line (char *line) break; } } -#undef LINE_FEED -#undef CARRIAGE_RETURN - return NULL; + + return mem_strdup (uline); } -/* - * Extract from RFC2445: - * - * When parsing a content line, folded lines MUST first be - * unfolded [..] The content information associated with an iCalendar - * object is formatted using a syntax similar to that defined by [RFC 2425]. - */ -static char * -ical_unfold_content (FILE *fd, char *line, unsigned *lineno) +static void +ical_readline_init (FILE *fdi, char *buf, char *lstore, unsigned *ln) { - char *content; - int c; + char *eol; - content = ical_unformat_line (line); - if (!content) - return NULL; + *buf = *lstore = '\0'; + fgets (lstore, BUFSIZ, fdi); + if ((eol = strchr(lstore, '\n')) != NULL) + *eol = '\0'; + (*ln)++; +} - for (;;) - { - c = getc (fd); - if (c == SPACE || c == TAB) - { - char buf[BUFSIZ]; +static int +ical_readline (FILE *fdi, char *buf, char *lstore, unsigned *ln) +{ + char *eol; - if (fgets (buf, BUFSIZ, fd) != NULL) - { - char *tmpline, *rline; - int newsize; + strncpy (buf, lstore, BUFSIZ); + (*ln)++; - (*lineno)++; - tmpline = ical_unformat_line (buf); - if (!tmpline) - { - mem_free (content); - return NULL; - } - newsize = strlen (content) + strlen (tmpline) + 1; - if ((rline = mem_realloc (content, newsize, 1)) == NULL) - { - mem_free (content); - mem_free (tmpline); - return NULL; - } - content = rline; - (void)strncat (content, tmpline, BUFSIZ); - mem_free (tmpline); - } - else - { - mem_free (content); - return NULL; - /* Could not get entire item description. */ - } - } - else - { - (void)ungetc (c, fd); - return content; - } + while (fgets (lstore, BUFSIZ, fdi) != NULL) + { + if ((eol = strchr(lstore, '\n')) != NULL) + *eol = '\0'; + if (*lstore != SPACE && *lstore != TAB) + break; + strncat (buf, lstore + 1, BUFSIZ); + (*ln)++; + } + + if (feof (fdi)) + { + *lstore = '\0'; + if (*buf == '\0') + return 0; } + + return 1; } static float -ical_chk_header (FILE *fd, unsigned *lineno) +ical_chk_header (FILE *fd, char *buf, char *lstore, unsigned *lineno) { const int HEADER_MALFORMED = -1; const struct string icalheader = STRING_BUILD ("BEGIN:VCALENDAR"); - char buf[BUFSIZ]; - - (void)fgets (buf, BUFSIZ, fd); - (*lineno)++; + float version; - if (buf == NULL) return HEADER_MALFORMED; + if (!ical_readline (fd, buf, lstore, lineno)) + return HEADER_MALFORMED; str_toupper (buf); if (strncmp (buf, icalheader.str, icalheader.len) != 0) return HEADER_MALFORMED; - const int AWAITED = 1; - float version = HEADER_MALFORMED; - int read; - - do + while (!sscanf (buf, "VERSION:%f", &version)) { - if (fgets (buf, BUFSIZ, fd) == NULL) - { - return HEADER_MALFORMED; - } - else - { - (*lineno)++; - read = sscanf (buf, "VERSION:%f", &version); - } + if (!ical_readline (fd, buf, lstore, lineno)) + return HEADER_MALFORMED; } - while (read != AWAITED); return version; } @@ -2354,14 +2311,13 @@ ical_read_exdate (llist_t *exc, FILE *log, char *exstr, unsigned *noskipped, /* Return an allocated string containing the name of the newly created note. */ static char * -ical_read_note (char *first_line, FILE *fdi, unsigned *noskipped, - unsigned *lineno, ical_vevent_e item_type, const int itemline, - FILE *log) +ical_read_note (char *line, unsigned *noskipped, ical_vevent_e item_type, + const int itemline, FILE *log) { char *p, *notestr, *notename, fullnotename[BUFSIZ]; FILE *fdo; - if ((p = strchr (first_line, ':')) != NULL) + if ((p = strchr (line, ':')) != NULL) { notename = new_tempfile (path_notes, NOTESIZ); EXIT_IF (notename == NULL, @@ -2372,7 +2328,7 @@ ical_read_note (char *first_line, FILE *fdi, unsigned *noskipped, EXIT_IF (fdo == NULL, _("Warning: could not open %s, Aborting..."), fullnotename); p++; - notestr = ical_unfold_content (fdi, p, lineno); + notestr = ical_unformat_line (p); if (notestr == NULL) { ical_log (log, item_type, itemline, @@ -2407,14 +2363,14 @@ ical_read_note (char *first_line, FILE *fdi, unsigned *noskipped, /* Returns an allocated string containing the ical item summary. */ static char * -ical_read_summary (char *first_line, FILE *fdi, unsigned *lineno) +ical_read_summary (char *line) { char *p, *summary; - if ((p = strchr (first_line, ':')) != NULL) + if ((p = strchr (line, ':')) != NULL) { p++; - summary = ical_unfold_content (fdi, p, lineno); + summary = ical_unformat_line (p); return summary; } else @@ -2423,7 +2379,8 @@ ical_read_summary (char *first_line, FILE *fdi, unsigned *lineno) static void ical_read_event (FILE *fdi, FILE *log, unsigned *noevents, unsigned *noapoints, - unsigned *noskipped, unsigned *lineno) + unsigned *noskipped, char *buf, char *lstore, + unsigned *lineno) { const int ITEMLINE = *lineno; const struct string endevent = STRING_BUILD ("END:VEVENT"); @@ -2437,7 +2394,7 @@ ical_read_event (FILE *fdi, FILE *log, unsigned *noevents, unsigned *noapoints, const struct string endalarm = STRING_BUILD ("END:VALARM"); const struct string desc = STRING_BUILD ("DESCRIPTION"); ical_vevent_e vevent_type; - char *p, buf[BUFSIZ], buf_upper[BUFSIZ]; + char *p, buf_upper[BUFSIZ]; struct { llist_t exc; ical_rpt_t *rpt; @@ -2450,11 +2407,11 @@ ical_read_event (FILE *fdi, FILE *log, unsigned *noevents, unsigned *noapoints, vevent_type = UNDEFINED; bzero (&vevent, sizeof vevent); skip_alarm = 0; - while (fgets (buf, BUFSIZ, fdi) != NULL) + while (ical_readline (fdi, buf, lstore, lineno)) { - (*lineno)++; memcpy (buf_upper, buf, strlen (buf)); str_toupper (buf_upper); + if (skip_alarm) { /* Need to skip VALARM properties because some keywords could @@ -2584,7 +2541,7 @@ ical_read_event (FILE *fdi, FILE *log, unsigned *noevents, unsigned *noapoints, } else if (strncmp (buf_upper, summary.str, summary.len) == 0) { - vevent.mesg = ical_read_summary (buf, fdi, lineno); + vevent.mesg = ical_read_summary (buf); } else if (strncmp (buf_upper, alarm.str, alarm.len) == 0) { @@ -2593,8 +2550,8 @@ ical_read_event (FILE *fdi, FILE *log, unsigned *noevents, unsigned *noapoints, } else if (strncmp (buf_upper, desc.str, desc.len) == 0) { - vevent.note = ical_read_note (buf, fdi, noskipped, lineno, - ICAL_VEVENT, ITEMLINE, log); + vevent.note = ical_read_note (buf, noskipped, ICAL_VEVENT, + ITEMLINE, log); } } } @@ -2616,7 +2573,7 @@ cleanup: static void ical_read_todo (FILE *fdi, FILE *log, unsigned *notodos, unsigned *noskipped, - unsigned *lineno) + char *buf, char *lstore, unsigned *lineno) { const struct string endtodo = STRING_BUILD ("END:VTODO"); const struct string summary = STRING_BUILD ("SUMMARY"); @@ -2625,7 +2582,7 @@ ical_read_todo (FILE *fdi, FILE *log, unsigned *notodos, unsigned *noskipped, const struct string desc = STRING_BUILD ("DESCRIPTION"); const int LOWEST = 9; const int ITEMLINE = *lineno; - char buf[BUFSIZ], buf_upper[BUFSIZ]; + char buf_upper[BUFSIZ]; struct { char *mesg, *note; int has_priority, priority; @@ -2634,9 +2591,8 @@ ical_read_todo (FILE *fdi, FILE *log, unsigned *notodos, unsigned *noskipped, bzero (&vtodo, sizeof vtodo); skip_alarm = 0; - while (fgets (buf, BUFSIZ, fdi) != NULL) + while (ical_readline (fdi, buf, lstore, lineno)) { - (*lineno)++; memcpy (buf_upper, buf, strlen (buf)); str_toupper (buf_upper); if (skip_alarm) @@ -2685,7 +2641,7 @@ ical_read_todo (FILE *fdi, FILE *log, unsigned *notodos, unsigned *noskipped, } else if (strncmp (buf_upper, summary.str, summary.len) == 0) { - vtodo.mesg = ical_read_summary (buf, fdi, lineno); + vtodo.mesg = ical_read_summary (buf); } else if (strncmp (buf_upper, alarm.str, alarm.len) == 0) { @@ -2693,8 +2649,8 @@ ical_read_todo (FILE *fdi, FILE *log, unsigned *notodos, unsigned *noskipped, } else if (strncmp (buf_upper, desc.str, desc.len) == 0) { - vtodo.note = ical_read_note (buf, fdi, noskipped, lineno, - ICAL_VTODO, ITEMLINE, log); + vtodo.note = ical_read_note (buf, noskipped, ICAL_VTODO, + ITEMLINE, log); } } } @@ -2762,7 +2718,7 @@ io_import_data (enum import_type type, struct conf *conf, char *stream_name) _("%d apps / %d events / %d todos / %d skipped "); char *lines_stats_interactive = _("%d apps / %d events / %d todos / %d skipped ([ENTER] to continue)"); - char buf[BUFSIZ]; + char buf[BUFSIZ], lstore[BUFSIZ]; FILE *stream = NULL; struct io_file *log; float ical_version; @@ -2791,7 +2747,8 @@ io_import_data (enum import_type type, struct conf *conf, char *stream_name) return; bzero (&stats, sizeof stats); - ical_version = ical_chk_header (stream, &stats.lines); + ical_readline_init (stream, buf, lstore, &stats.lines); + ical_version = ical_chk_header (stream, buf, lstore, &stats.lines); RETURN_IF (ical_version < 0, _("Warning: ical header malformed or wrong version number. " "Aborting...")); @@ -2805,19 +2762,19 @@ io_import_data (enum import_type type, struct conf *conf, char *stream_name) } ical_log_init (log->fd, ical_version); - while (fgets (buf, BUFSIZ, stream) != NULL) + while (ical_readline (stream, buf, lstore, &stats.lines)) { stats.lines++; str_toupper (buf); if (strncmp (buf, vevent.str, vevent.len) == 0) { ical_read_event (stream, log->fd, &stats.events, &stats.apoints, - &stats.skipped, &stats.lines); + &stats.skipped, buf, lstore, &stats.lines); } else if (strncmp (buf, vtodo.str, vtodo.len) == 0) { ical_read_todo (stream, log->fd, &stats.todos, &stats.skipped, - &stats.lines); + buf, lstore, &stats.lines); } } if (stream != stdin) -- cgit v1.2.3-54-g00ecf From b59070a49e292746edeb781733db25931a6a6e50 Mon Sep 17 00:00:00 2001 From: Lukas Fleischer Date: Fri, 26 Aug 2011 12:07:11 +0200 Subject: Rework indentation code in print_notefile() Do not use snprintf() here as printf() behaviour is undefined if the destination pointer is used as a parameter. Signed-off-by: Lukas Fleischer --- src/args.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/args.c b/src/args.c index e447997..a3a22fe 100644 --- a/src/args.c +++ b/src/args.c @@ -199,13 +199,19 @@ print_notefile (FILE *out, char *filename, int nbtab) { char path_to_notefile[BUFSIZ]; FILE *notefile; - char linestarter[BUFSIZ] = ""; + char linestarter[BUFSIZ]; char buffer[BUFSIZ]; int i; int printlinestarter = 1; - for (i = 0; i < nbtab; i++) - (void)snprintf(linestarter, BUFSIZ, "%s\t", linestarter); + if (nbtab < BUFSIZ) + { + for (i = 0; i < nbtab; i++) + linestarter[i] = '\t'; + linestarter[nbtab] = '\0'; + } + else + linestarter[0] = '\0'; (void)snprintf (path_to_notefile, BUFSIZ, "%s/%s", path_notes, filename); notefile = fopen (path_to_notefile, "r"); -- cgit v1.2.3-54-g00ecf From ac50b5a11106576f24dca18e1d6ab4313d696013 Mon Sep 17 00:00:00 2001 From: Lukas Fleischer Date: Sat, 3 Sep 2011 02:19:32 +0200 Subject: Add a configure setting to skip "doc/" This should fix all remaining build issues with documentation generation. Finally. The new "--disable-docs" option should be used to skip documentation completely, whereas "--without-asciidoc" can be used if both manual and man page should not be rebuilt. As a consequence, "--without-asciidoc" can only be combined with "--enable-docs" if ready-made documentation already exists in "doc/". This is true for release tarballs (where we include prebuilt documentation for the sake of portability and simplicity), as well as for Git checkouts where the documentation has already been built earlier. Signed-off-by: Lukas Fleischer --- Makefile.am | 6 +++++- configure.ac | 19 +++++++++++++++---- doc/Makefile.am | 8 ++++---- 3 files changed, 24 insertions(+), 9 deletions(-) diff --git a/Makefile.am b/Makefile.am index 9e17d2f..5dd1ed9 100644 --- a/Makefile.am +++ b/Makefile.am @@ -2,7 +2,11 @@ AUTOMAKE_OPTIONS= foreign ACLOCAL_AMFLAGS = -I m4 -SUBDIRS = doc po src +SUBDIRS = po src + +if ENABLE_DOCS +SUBDIRS += doc +endif EXTRA_DIST = \ INSTALL \ diff --git a/configure.ac b/configure.ac index f736d9f..debd8b8 100644 --- a/configure.ac +++ b/configure.ac @@ -70,23 +70,34 @@ AC_CHECK_HEADERS([math.h], [ #------------------------------------------------------------------------------- # Check whether to build documentation #------------------------------------------------------------------------------- +AC_ARG_ENABLE(docs, + AS_HELP_STRING([--disable-docs], [skip documentation]), + [enabledocs=$enableval], [enabledocs=yes]) +if test x"$enabledocs" != x"yes"; then + enabledocs=no + AC_MSG_WARN([Skipping documentation!]) +fi +AC_MSG_CHECKING([whether to include documentation]) +AC_MSG_RESULT($enabledocs) +AM_CONDITIONAL(ENABLE_DOCS, test x"$enabledocs" = x"yes") + AC_ARG_WITH(asciidoc, AS_HELP_STRING([--with-asciidoc], - [Use asciidoc to regenerate documentation.]), + [use AsciiDoc to regenerate documentation]), [use_asciidoc=$withval], [use_asciidoc="auto"]) if test x"$use_asciidoc" = x"auto"; then AC_PATH_PROG([ASCIIDOC], [asciidoc]) if test -z "$ASCIIDOC"; then have_asciidoc=no - AC_MSG_WARN([AsciiDoc not found - documentation will be skipped!]) + AC_MSG_WARN([AsciiDoc not found - cannot rebuild documentation!]) else have_asciidoc=yes fi AC_PATH_PROG([A2X], [a2x]) if test -z "$A2X"; then have_a2x=no - AC_MSG_WARN([a2x not found - man pages will be skipped!]) + AC_MSG_WARN([a2x not found - cannot rebuild man pages!]) else have_a2x=yes fi @@ -101,7 +112,7 @@ elif test x"$use_asciidoc" = x"yes"; then fi have_asciidoc=yes elif test x"$use_asciidoc" = x"no"; then - AC_MSG_WARN(["--without-asciidoc" specified - documentation will be skipped!]) + AC_MSG_WARN([Will not rebuild documentation!]) have_asciidoc=no have_a2x=no fi diff --git a/doc/Makefile.am b/doc/Makefile.am index 287cddb..caa90d2 100644 --- a/doc/Makefile.am +++ b/doc/Makefile.am @@ -5,19 +5,19 @@ ASCIIDOC_ARGS = \ -n \ -a toc \ -a icons - -dist_doc_DATA = \ - manual.html endif if HAVE_A2X A2X_ARGS = \ -d manpage \ -f manpage +endif + +dist_doc_DATA = \ + manual.html dist_man_MANS = \ calcurse.1 -endif EXTRA_DIST = \ manual.txt \ -- cgit v1.2.3-54-g00ecf From 2d298dcd5f4b6ead349e384e8863e816533e7849 Mon Sep 17 00:00:00 2001 From: Lukas Fleischer Date: Tue, 6 Sep 2011 14:29:18 +0200 Subject: Update translations Signed-off-by: Lukas Fleischer --- po/calcurse.pot | 4 +- po/de.po | 2 +- po/en.po | 2 +- po/es.po | 2 +- po/fr.po | 172 +++++++++++++++++++++++++++++++++++++++++++------------- po/nl.po | 2 +- po/ru.po | 2 +- 7 files changed, 140 insertions(+), 46 deletions(-) diff --git a/po/calcurse.pot b/po/calcurse.pot index 8bf0cdd..5ef5d1b 100644 --- a/po/calcurse.pot +++ b/po/calcurse.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: calcurse 2.9.1\n" +"Project-Id-Version: calcurse 2.9.2\n" "Report-Msgid-Bugs-To: bugs@calcurse.org\n" -"POT-Creation-Date: 2011-07-31 02:54+0200\n" +"POT-Creation-Date: 2011-09-06 14:34+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/po/de.po b/po/de.po index 753e482..ffd4191 100644 --- a/po/de.po +++ b/po/de.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: calcurse\n" "Report-Msgid-Bugs-To: bugs@calcurse.org\n" -"POT-Creation-Date: 2011-07-31 02:54+0200\n" +"POT-Creation-Date: 2011-09-06 14:34+0200\n" "PO-Revision-Date: 2011-05-11 14:00+0000\n" "Last-Translator: cryptocrack \n" "Language-Team: German (http://www.transifex.net/projects/p/calcurse/team/" diff --git a/po/en.po b/po/en.po index 314ecec..68d2eb5 100644 --- a/po/en.po +++ b/po/en.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: calcurse 1.4\n" "Report-Msgid-Bugs-To: bugs@calcurse.org\n" -"POT-Creation-Date: 2011-07-31 02:54+0200\n" +"POT-Creation-Date: 2011-09-06 14:34+0200\n" "PO-Revision-Date: 2006-07-03 00:05+0100\n" "Last-Translator: Neil Williams \n" "Language-Team: English/GB \n" diff --git a/po/es.po b/po/es.po index e534673..9d49af2 100644 --- a/po/es.po +++ b/po/es.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: calcurse\n" "Report-Msgid-Bugs-To: bugs@calcurse.org\n" -"POT-Creation-Date: 2011-07-31 02:54+0200\n" +"POT-Creation-Date: 2011-09-06 14:34+0200\n" "PO-Revision-Date: 2011-05-11 09:21+0000\n" "Last-Translator: cryptocrack \n" "Language-Team: LANGUAGE \n" diff --git a/po/fr.po b/po/fr.po index ca5e13a..adadf66 100644 --- a/po/fr.po +++ b/po/fr.po @@ -2,13 +2,15 @@ # Copyright (C) YEAR Free Software Foundation, Inc. # This file is distributed under the same license as the PACKAGE package. # +# esaule , 2011. +# Lukas Fleischer , 2011. msgid "" msgstr "" "Project-Id-Version: calcurse\n" "Report-Msgid-Bugs-To: bugs@calcurse.org\n" -"POT-Creation-Date: 2011-07-31 02:54+0200\n" -"PO-Revision-Date: 2011-05-17 13:44+0000\n" -"Last-Translator: esaule \n" +"POT-Creation-Date: 2011-09-06 14:34+0200\n" +"PO-Revision-Date: 2011-09-04 21:35+0000\n" +"Last-Translator: lkppo \n" "Language-Team: French (http://www.transifex.net/projects/p/calcurse/team/" "fr/)\n" "Language: fr\n" @@ -74,6 +76,10 @@ msgid "" "Copyright (c) 2004-2011 calcurse Development Team.\n" "This is free software; see the source for copying conditions.\n" msgstr "" +"\n" +"Copyright (c) 2004-2011 Équipe de développement de calcurse.\n" +"Ceci est un logiciel libre ; consultez le code source pour connaître les " +"conditions légales d'utilisation.\n" #, c-format msgid "Calcurse %s - text-based organizer\n" @@ -150,6 +156,81 @@ msgid "" "For more information, type '?' from within Calcurse, or read the manpage.\n" "Mail bug reports and suggestions to .\n" msgstr "" +"\n" +"Divers:\n" +" -h, --help\n" +"\taffiche cette aide et quitte.\n" +"\n" +" -v, --version\n" +"\taffiche la version de calcurse et quitte.\n" +"\n" +" --status\n" +"\taffiche l'état des instances de calcurse en cours d'exécution.\n" +"\n" +"Fichiers:\n" +" -c , --calendar \n" +"\tindique le de calendrier à utiliser (incompatible avec '-D').\n" +"\n" +" -D , --directory \n" +"\tindique le répertoire de données à utiliser (incompatible avec '-c').\n" +"\tSi non indiqué, le répertoire par défaut est ~/.calcurse\n" +"\n" +"Non-interactif:\n" +" -a, --appointment\n" +" \taffiche les évènements et les rendez-vous du jour et quitte.\n" +"\n" +" -d , --day \n" +"\taffiche les évènements et rendez-vous d'une ou des prochains " +"jours et\n" +"\tquitte. Pour indiquer un jour de départ et une durée, utilisez les " +"options\n" +"\t'--startday' and '--range'.\n" +"\n" +" -i , --import \n" +"\timporte les données au format icalendar depuis un . \n" +"\n" +" -n, --next\n" +"\taffiche le prochain rendez-vous à venir dans les 24 heures et quitte. " +"Donne aussi\n" +"\tle temps restant avant le rendez-vous suivant.\n" +" -N, --note\n" +"\tutilisée avec l'option '-a' ou '-t', affiche la note associée\n" +"\tà l'élément affiché s'il en a une.\n" +"\n" +" -r[nombre], --range[=nombre]\n" +"\taffiche les évènements et les rendez-vous sur [nombre] de jours\n" +"\tet quitte. Si [nombre] n'est pas précisé, on utilise une durée de 1 jour " +"par défaut.\n" +"\n" +" -s[date], --startday[=date]\n" +"\taffiche les évènements et rendez-vous d'une [date] et quitte.\n" +"\tSi la [date] n'est pas précisée, la date courante est utilisée.\n" +"\n" +" -S, --search=\n" +"\tRecherche les évènements, rendez-vous et tâches\n" +"\tdont la description correspond à l'expression régulière [regex].n\n" +" -t[priorite], --todo[=priorite]\n" +"\taffiche la liste des tâches et quitte. Si la valeur facultative [priorite] " +"est précisée,\n" +"\talors ne seront affichées que les tâches de ce niveau priorité.\n" +"\tLe niveau de priorité est compris entre 1 (plus important) et 9 (moins " +"important).\n" +"\tIl est également possible de spécifier '0' pour la priorité,\n" +"\tauquel cas seules les tâches terminées seront affichés.\n" +"\n" +" -x[format], --export[=format]\n" +"\texporte les données utilisateur au format spécifié. Évènements, rendez-" +"vous et \n" +"\ttâches sont convertis et envoyés sur la sortie standard (stdout).\n" +"\tDeux formats au choix : 'ical' et 'pcal'.\n" +"\tSi l'option facultative de format est omise, le format ical\n" +"\test sélectionné par défaut.\n" +"\tnote : pour rediriger la sortie de l'export vers un fichier,\n" +"\tutilisez une commande de la forme : calcurse --export > calcurse.dat\n" +"\n" +"Pour plus d'informations, tapez '?' dans Calcurse, ou lisez le manuel.\n" +"Envoyez par courriel vos rapports de bogue et vos suggestions à " +".\n" #, c-format msgid "" @@ -235,7 +316,7 @@ msgid "To do :" msgstr "Tâche :" msgid "ERROR setting first day of week" -msgstr "" +msgstr "ERREUR de paramètre sur le premier jour de la semaine" msgid "" "The day you entered is not valid (should be between 01/01/1902 and " @@ -278,7 +359,7 @@ msgid "Layout" msgstr "Ecran" msgid "Sidebar" -msgstr "" +msgstr "Barre latérale" msgid "Color" msgstr "Couleur" @@ -287,10 +368,10 @@ msgid "Notify" msgstr "Notifier" msgid "Keys" -msgstr "" +msgstr "Raccourcis" msgid "Select" -msgstr "" +msgstr "Sélectionner" msgid "Up" msgstr "Haut" @@ -479,19 +560,19 @@ msgid "undefined" msgstr "inconnue" msgid "Key info" -msgstr "" +msgstr "Informations" msgid "Add key" -msgstr "" +msgstr "Ajouter" msgid "Del key" -msgstr "" +msgstr "Supprimer" msgid "Prev Key" -msgstr "" +msgstr "Précédent" msgid "Next Key" -msgstr "" +msgstr "Suivant" #, c-format msgid "keys configuration" @@ -692,7 +773,7 @@ msgid "" msgstr "" msgid "Displacement keys\n" -msgstr "" +msgstr "Touches de déplacement\n" #, c-format msgid "" @@ -721,7 +802,7 @@ msgid "" msgstr "" msgid "View\n" -msgstr "" +msgstr "Afficher\n" #, c-format msgid "" @@ -772,7 +853,7 @@ msgid "" msgstr "" msgid "Delete\n" -msgstr "" +msgstr "Supprimer\n" #, c-format msgid "" @@ -1016,7 +1097,7 @@ msgid "" msgstr "" msgid "Generic keybindings\n" -msgstr "" +msgstr "Raccourcis clavier génériques\n" #, c-format msgid "" @@ -1093,6 +1174,8 @@ msgstr "Export..." msgid "Internal error while displaying progress bar" msgstr "" +"Une erreur interne s'est produite durant l'affichage de la barre de " +"progression" msgid "Choose the file used to export calcurse data:" msgstr "Choisissez le fichier dans lequel exporter les données :" @@ -1147,7 +1230,7 @@ msgid "The data files were successfully saved" msgstr "Les données ont été correctement enregistrées" msgid "syntax error in the item date" -msgstr "" +msgstr "Erreur de syntaxe sur la date" msgid "no event nor appointment found" msgstr "Aucun évènement ou rendez-vous trouvé" @@ -1159,7 +1242,7 @@ msgid "Failed to open todo file" msgstr "Problème d'ouverture du fichier des tâches" msgid "could not find any key file." -msgstr "" +msgstr "Impossible de trouver un fichier de raccourcis." msgid "" "\n" @@ -1167,23 +1250,29 @@ msgid "" "Please backup your keys file, remove it from directory, and launch calcurse " "again.\n" msgstr "" +"\n" +"Trop d'erreurs à la lecture du fichier de configuration !\n" +"Veuillez faire une sauvegarde votre fichier de raccourcis, et le supprimer " +"du répertoire, puis relancer calcurse.\n" msgid "Could not read key label" -msgstr "" +msgstr "Impossible de lire le libellé de la touche" msgid "Key label not recognized" msgstr "Touche non reconnue" #, c-format msgid "Error reading key: \"%s\"" -msgstr "" +msgstr "Erreur de lecture de la touche : \"%s\"" #, c-format msgid "\"%s\" assigned multiple times!" -msgstr "" +msgstr "\"%s\" est assignée plusieurs fois !" msgid "There were some errors when loading keys file, see log file ?" msgstr "" +"Des erreurs se sont produites lors du chargement du fichier de raccourcis. " +"Voulez-vous consulter le journal ?" msgid "Too many errors while reading keys file, aborting..." msgstr "Trop d'erreur durant la lecture du fichier de touche, annulation..." @@ -1254,7 +1343,7 @@ msgid "item has a negative duration." msgstr "L'élément a une durée négative." msgid "event date is not defined." -msgstr "" +msgstr "La date de l'évènement n'est pas définie." msgid "item could not be identified." msgstr "L'élément n'a pu être identifié." @@ -1312,6 +1401,8 @@ msgstr "Certains éléments n'ont pu être importés, voir le fichier de log ?" msgid "Warning: could not create temporary log file, Aborting..." msgstr "" +"Attention : création d'un fichier journal temporaire impossible, abandon en " +"cours..." msgid "Warning: could not open temporary log file, Aborting..." msgstr "Attention: impossible d'ouvrir le fichier de log, abandon..." @@ -1385,7 +1476,7 @@ msgid "notify-daemon_log = " msgstr "notify-daemon_log = " msgid "(Log activity when running in background)" -msgstr "" +msgstr "Enregistrer l'activité lors de l'exécution en arrière-plan" msgid "Enter the time format (see 'man 3 strftime' for possible formats) " msgstr "" @@ -1409,13 +1500,15 @@ msgid "unknown character" msgstr "caractère inconnu" msgid "date error in event" -msgstr "Date erroné pour le rendez-vous" +msgstr "Date erronée pour l'évènement" msgid "appointment not found" msgstr "rendez-vous inconnu" msgid "Enter the repetition type: (D)aily, (W)eekly, (M)onthly, (Y)early" -msgstr "Entrez le type: (D) journ., (W) hebdo., (M) mensuel, (Y) annuel" +msgstr "" +"Entrez le type de répétition : (D) quotidien, (W) hebdomadaire, (M) mensuel, " +"(Y) annuel" msgid "Enter the repetition frequence:" msgstr "Entrez la fréquence de répétition :" @@ -1426,19 +1519,20 @@ msgstr "Entrez la date de fin: [%s] ou '0' pour répéter indéfiniment" #, c-format msgid "Possible formats are [%s] or '0' for an endless repetition" -msgstr "Les formats autorisés sont [%s] ou '0' pour une répétition sans fin" +msgstr "" +"Les formats autorisés sont [%s] ou '0' pour une répétition indéfiniment" msgid "This item is already a repeated one." -msgstr "Cet élément est déjà recurrent." +msgstr "Cet élément est déjà récurrent." msgid "Sorry, the date you entered is older than the item start time." -msgstr "La date que vous avez entrée est antérieure à la date de l'élément!" +msgstr "La date que vous avez entrée est antérieure à la date de l'élément !" msgid "wrong item type" msgstr "type d'élément incorrect" msgid "syntax error in item date" -msgstr "erreur de syntaxe dans la data de l'élément" +msgstr "erreur de syntaxe dans la date de l'élément" #, c-format msgid "Could not remove calcurse lock file: %s\n" @@ -1465,7 +1559,7 @@ msgstr "Voulez-vous vraiment effacer cette tâche ?" msgid "This item has a note attached to it. Delete (t)odo or just its (n)ote ?" msgstr "" -"Une note est attachée à cette tâche. Effacer (t) la tâche ou (n) la note " +"Une note est attachée à cette tâche. Effacer la (t)âche ou la (n)ote " "seulement ?" msgid "[t/n] " @@ -1493,10 +1587,10 @@ msgid "Internal error: line too long" msgstr "Erreur interne : ligne trop longue" msgid "out of memory" -msgstr "plus de memoire" +msgstr "dépassement de mémoire" msgid "failure in mktime" -msgstr "faute dans mktime" +msgstr "erreur fatale dans mktime" msgid "error in mktime" msgstr "erreur dans mktime" @@ -1508,7 +1602,7 @@ msgid "could not convert string" msgstr "impossible de convertir la chaîne de caractères" msgid "out of range" -msgstr "en dehors de l'interval" +msgstr "en dehors de l'intervalle" msgid "yes" msgstr "oui" @@ -1517,14 +1611,14 @@ msgid "no" msgstr "non" msgid "option not defined" -msgstr "option non definie" +msgstr "option non définie" #, c-format msgid "temporary file \"%s\" could not be created" msgstr "le fichier temporaire \"%s\" n'a pas pu être crée" msgid "could not remove note" -msgstr "impossible de retirer la note" +msgstr "impossible de supprimer la note" #, c-format msgid "Error when closing file at %s" @@ -1633,13 +1727,13 @@ msgid "Config" msgstr "Config" msgid "Redraw" -msgstr "Retracer" +msgstr "Rafraîchir" msgid "Add Appt" msgstr "Ajt rdv" msgid "Add Todo" -msgstr "Ajt todo" +msgstr "Ajt tâche" msgid "+1 Day" msgstr "+1 Jour" @@ -1657,10 +1751,10 @@ msgid "Today" msgstr "Aujourd." msgid "Nxt View" -msgstr "Proch.Vue" +msgstr "Voir Suiv." msgid "Prv View" -msgstr "VuePrec." +msgstr "Voir Prec." msgid "beg Week" msgstr "deb Sem." diff --git a/po/nl.po b/po/nl.po index a599763..94ffcb0 100644 --- a/po/nl.po +++ b/po/nl.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: calcurse\n" "Report-Msgid-Bugs-To: bugs@calcurse.org\n" -"POT-Creation-Date: 2011-07-31 02:54+0200\n" +"POT-Creation-Date: 2011-09-06 14:34+0200\n" "PO-Revision-Date: 2011-05-11 09:21+0000\n" "Last-Translator: cryptocrack \n" "Language-Team: LANGUAGE \n" diff --git a/po/ru.po b/po/ru.po index e66dcff..8317153 100644 --- a/po/ru.po +++ b/po/ru.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: calcurse\n" "Report-Msgid-Bugs-To: bugs@calcurse.org\n" -"POT-Creation-Date: 2011-07-31 02:54+0200\n" +"POT-Creation-Date: 2011-09-06 14:34+0200\n" "PO-Revision-Date: 2011-05-23 18:06+0000\n" "Last-Translator: Rusdec \n" "Language-Team: Russian (http://www.transifex.net/projects/p/calcurse/team/" -- cgit v1.2.3-54-g00ecf From 9f1fed3ed1f77620334302616a6ed881ca78878d Mon Sep 17 00:00:00 2001 From: Lukas Fleischer Date: Tue, 6 Sep 2011 14:47:17 +0200 Subject: Release 2.9.2 Signed-off-by: Lukas Fleischer --- NEWS | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/NEWS b/NEWS index 78f0b84..e8af26e 100644 --- a/NEWS +++ b/NEWS @@ -1,3 +1,11 @@ +[08 Sep 2011] +Version 2.9.2: +- Bugfixes: + * Handle iCal line folding correctly. + + * Introduce a configure option to completely exclude the documentation + subdirectory from the build process ("--disable-docs"). + [03 Aug 2011] Version 2.9.1: - Bugfixes: -- cgit v1.2.3-54-g00ecf