calcurse-3.1.4/0000755000175000001440000000000012105444505010315 500000000000000calcurse-3.1.4/README0000644000175000001440000000303312105444321011110 00000000000000calcurse ======== Read `INSTALL` for instructions on how to build and install calcurse. Check `TODO` for things that still need to be done. Browse the file `doc/manual.html` (or its source `doc/manual.txt`) for detailed descriptions on how to use calcurse. Package Overview ---------------- You should be reading this file in a directory called: `calcurse-x.y.z`, where `x.y.z` is the current version number. There should be four subdirectories: * `src`: contains calcurse sources * `test`: contains a test suite and test cases for calcurse * `scripts`: contains additional scripts, such as `calcurse-upgrade` * `doc`: contains detailed documentation in plain text and HTML Authors ------- * Frederic Culot (Founder) * Lukas Fleischer (Developer) Contributors ------------ * RegEx support: Erik Saule * Dutch translation: Jeremy Roon, 2007-2010 * French translation: Frédéric Culot, 2006-2010 * French translation: Toucouch, 2007 * French translation: Erik Saule, 2011-2012 * French translation: Stéphane Aulery, 2012 * French translation: Baptiste Jonglez, 2012 * German translation: Michael Schulz, 2006-2010 * German translation: Chris M., 2006 * German translation: Benjamin Moeller, 2010 * German translation: Lukas Fleischer, 2011-2012 * Portuguese (Brazil) translation: Rafael Ferreira, 2012 * Russian translation: Aleksey Mechonoshin, 2011-2012 * Spanish translation: Jose Lopez, 2006-2010 Also check the `Thanks` section in the manual for a list of people who have contributed by reporting bugs, sending fixes, or suggesting improvements. calcurse-3.1.4/scripts/0000755000175000001440000000000012105444505012004 500000000000000calcurse-3.1.4/scripts/calcurse-upgrade.sh.in0000644000175000001440000001266412105444321016120 00000000000000#!/bin/sh export TEXTDOMAIN='calcurse' set -e CONFFILE=$HOME/.calcurse/conf if [ "$#" -gt 0 ]; then if [ "$1" = "--config" ]; then CONFFILE=$2 elif [ "$1" = "-h" -o "$1" = "--help" ]; then echo "calcurse-upgrade @PACKAGE_VERSION@" echo "$(gettext "Usage: calcurse-upgrade [-h|-v|--config ]")" elif [ "$1" = "-v" -o "$1" = "--version" ]; then echo "calcurse-upgrade @PACKAGE_VERSION@" echo "$(gettext " Copyright (c) 2004-2013 calcurse Development Team. This is free software; see the source for copying conditions. ")" else echo "$(gettext "unrecognized option:") \"$1\"" >&2 exit 1 fi fi if [ ! -e "$CONFFILE" ]; then echo "$(gettext "Configuration file not found:") $CONFFILE" >&2 exit 1 fi if grep -q -e '^auto_save=' -e '^auto_gc=' -e '^periodic_save=' \ -e '^confirm_quit=' -e '^confirm_delete=' -e '^skip_system_dialogs=' \ -e '^skip_progress_bar=' -e '^calendar_default_view=' \ -e '^week_begins_on_monday=' -e '^color-theme=' -e '^layout=' \ -e '^side-bar_width=' -e '^notify-bar_show=' -e '^notify-bar_date=' \ -e '^notify-bar_clock=' -e '^notify-bar_warning=' -e '^notify-bar_command=' \ -e '^notify-all=' -e '^output_datefmt=' -e '^input_datefmt=' \ -e '^notify-daemon_enable=' -e '^notify-daemon_log=' "$CONFFILE"; then echo "$(gettext "Pre-3.0.0 configuration file format detected...")" echo -n "$(gettext "Create temporary backup of the configuration file...")" backupfile="$CONFFILE.calcurse-upgrade.old" if [ -e "$backupfile" ]; then echo echo "$(gettext "Old backup file found:") \"$backupfile\"" >&2 echo "$(gettext " If a previous conversion did not complete, please try to restore your configuration from this backup and then remove the backup file.")" >&2 exit 1 fi cp "$CONFFILE" "$backupfile" echo -n ' ' echo "$(gettext 'done')" tmpfile="$CONFFILE.calcurse-upgrade.tmp" if [ -e "$tmpfile" ]; then echo "$(gettext "Old temporary file found:") \"$tmpfile\"" >&2 echo "$(gettext " If a previous conversion did not complete, please try to remove this file and start over with a backup of your old configuration file.")" >&2 exit 1 fi echo -n "$(gettext "Upgrade configuration directives...")" sed -e 's/^auto_save=/general.autosave=/' \ -e 's/^auto_gc=/general.autogc=/' \ -e 's/^periodic_save=/general.periodicsave=/' \ -e 's/^confirm_quit=/general.confirmquit=/' \ -e 's/^confirm_delete=/general.confirmdelete=/' \ -e 's/^skip_system_dialogs=/general.systemdialogs=/' \ -e 's/^skip_progress_bar=/general.progressbar=/' \ -e 's/^calendar_default_view=/appearance.calendarview=/' \ -e 's/^week_begins_on_monday=/general.firstdayofweek=/' \ -e 's/^color-theme=/appearance.theme=/' \ -e 's/^layout=/appearance.layout=/' \ -e 's/^side-bar_width=/appearance.sidebarwidth=/' \ -e 's/^notify-bar_show=/appearance.notifybar=/' \ -e 's/^notify-bar_date=/format.notifydate=/' \ -e 's/^notify-bar_clock=/format.notifytime=/' \ -e 's/^notify-bar_warning=/notification.warning=/' \ -e 's/^notify-bar_command=/notification.command=/' \ -e 's/^notify-all=/notification.notifyall=/' \ -e 's/^output_datefmt=/format.outputdate=/' \ -e 's/^input_datefmt=/format.inputdate=/' \ -e 's/^notify-daemon_enable=/daemon.enable=/' \ -e 's/^notify-daemon_log=/daemon.log=/' "$CONFFILE" > "$tmpfile" mv "$tmpfile" "$CONFFILE" if grep -q -e '^[^#=][^#=]*$' -e '^[^#=][^#=]*#.*$' "$CONFFILE"; then sed ' /^general.autosave=/{ N s/\n// } /^general.autogc=/{ N s/\n// } /^general.periodicsave=/{ N s/\n// } /^general.confirmquit=/{ N s/\n// } /^general.confirmdelete=/{ N s/\n// } /^general.systemdialogs=/{ N s/\n// } /^general.progressbar=/{ N s/\n// } /^appearance.calendarview=/{ N s/\n// } /^general.firstdayofweek=/{ N s/\n// } /^appearance.theme=/{ N s/\n// } /^appearance.layout=/{ N s/\n// } /^appearance.sidebarwidth=/{ N s/\n// } /^appearance.notifybar=/{ N s/\n// } /^format.notifydate=/{ N s/\n// } /^format.notifytime=/{ N s/\n// } /^notification.warning=/{ N s/\n// } /^notification.command=/{ N s/\n// } /^notification.notifyall=/{ N s/\n// } /^format.outputdate=/{ N s/\n// } /^format.inputdate=/{ N s/\n// } /^daemon.enable=/{ N s/\n// } /^daemon.log=/{ N s/\n// }' "$CONFFILE" > "$tmpfile" mv "$tmpfile" "$CONFFILE" fi awk ' BEGIN { FS=OFS="=" } $1 == "general.systemdialogs" || $1 == "general.progressbar" \ { $2 = ($2 == "yes") ? "no" : "yes" } $1 == "general.firstdayofweek" { $2 = ($2 == "yes") ? "monday" : "sunday" } $1 == "appearance.calendarview" { $2 = ($2 == 0) ? "monthly" : \ ($2 == 1) ? "weekly" : $2 } { print } ' < "$CONFFILE" > "$tmpfile" mv "$tmpfile" "$CONFFILE" echo -n ' ' echo "$(gettext 'done')" echo -n "$(gettext "Remove temporary backup...")" rm "$backupfile" echo -n ' ' echo "$(gettext 'done')" fi calcurse-3.1.4/scripts/Makefile.in0000644000175000001440000003311312105444410013765 00000000000000# Makefile.in generated by automake 1.13.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2012 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = scripts DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ $(top_srcdir)/mkinstalldirs $(dist_bin_SCRIPTS) ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/lib-ld.m4 \ $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(bindir)" SCRIPTS = $(dist_bin_SCRIPTS) AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) A2X = @A2X@ ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ ASCIIDOC = @ASCIIDOC@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GMSGFMT = @GMSGFMT@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ LDFLAGS = @LDFLAGS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ POSUB = @POSUB@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ AUTOMAKE_OPTIONS = foreign dist_bin_SCRIPTS = \ calcurse-upgrade EXTRA_DIST = \ calcurse-upgrade.sh.in CLEANFILES = \ calcurse-upgrade edit = sed \ -e 's|@PACKAGE_VERSION[@]|$(PACKAGE_VERSION)|g' all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign scripts/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign scripts/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-dist_binSCRIPTS: $(dist_bin_SCRIPTS) @$(NORMAL_INSTALL) @list='$(dist_bin_SCRIPTS)'; test -n "$(bindir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(bindir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ } \ ; done uninstall-dist_binSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(dist_bin_SCRIPTS)'; test -n "$(bindir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ dir='$(DESTDIR)$(bindir)'; $(am__uninstall_files_from_dir) tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(SCRIPTS) installdirs: for dir in "$(DESTDIR)$(bindir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-dist_binSCRIPTS install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_binSCRIPTS .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic cscopelist-am \ ctags-am distclean distclean-generic distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dist_binSCRIPTS install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-generic pdf pdf-am ps ps-am tags-am uninstall \ uninstall-am uninstall-dist_binSCRIPTS calcurse-upgrade: calcurse-upgrade.sh.in $(AM_V_at)$(RM) "$@" $(AM_V_GEN)$(edit) <"$(srcdir)/$<" >"$@" $(AM_V_at)chmod +x "$@" $(AM_V_at)chmod a-w "$@" # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: calcurse-3.1.4/scripts/calcurse-upgrade0000555000175000001440000001263412105444454015107 00000000000000#!/bin/sh export TEXTDOMAIN='calcurse' set -e CONFFILE=$HOME/.calcurse/conf if [ "$#" -gt 0 ]; then if [ "$1" = "--config" ]; then CONFFILE=$2 elif [ "$1" = "-h" -o "$1" = "--help" ]; then echo "calcurse-upgrade 3.1.4" echo "$(gettext "Usage: calcurse-upgrade [-h|-v|--config ]")" elif [ "$1" = "-v" -o "$1" = "--version" ]; then echo "calcurse-upgrade 3.1.4" echo "$(gettext " Copyright (c) 2004-2013 calcurse Development Team. This is free software; see the source for copying conditions. ")" else echo "$(gettext "unrecognized option:") \"$1\"" >&2 exit 1 fi fi if [ ! -e "$CONFFILE" ]; then echo "$(gettext "Configuration file not found:") $CONFFILE" >&2 exit 1 fi if grep -q -e '^auto_save=' -e '^auto_gc=' -e '^periodic_save=' \ -e '^confirm_quit=' -e '^confirm_delete=' -e '^skip_system_dialogs=' \ -e '^skip_progress_bar=' -e '^calendar_default_view=' \ -e '^week_begins_on_monday=' -e '^color-theme=' -e '^layout=' \ -e '^side-bar_width=' -e '^notify-bar_show=' -e '^notify-bar_date=' \ -e '^notify-bar_clock=' -e '^notify-bar_warning=' -e '^notify-bar_command=' \ -e '^notify-all=' -e '^output_datefmt=' -e '^input_datefmt=' \ -e '^notify-daemon_enable=' -e '^notify-daemon_log=' "$CONFFILE"; then echo "$(gettext "Pre-3.0.0 configuration file format detected...")" echo -n "$(gettext "Create temporary backup of the configuration file...")" backupfile="$CONFFILE.calcurse-upgrade.old" if [ -e "$backupfile" ]; then echo echo "$(gettext "Old backup file found:") \"$backupfile\"" >&2 echo "$(gettext " If a previous conversion did not complete, please try to restore your configuration from this backup and then remove the backup file.")" >&2 exit 1 fi cp "$CONFFILE" "$backupfile" echo -n ' ' echo "$(gettext 'done')" tmpfile="$CONFFILE.calcurse-upgrade.tmp" if [ -e "$tmpfile" ]; then echo "$(gettext "Old temporary file found:") \"$tmpfile\"" >&2 echo "$(gettext " If a previous conversion did not complete, please try to remove this file and start over with a backup of your old configuration file.")" >&2 exit 1 fi echo -n "$(gettext "Upgrade configuration directives...")" sed -e 's/^auto_save=/general.autosave=/' \ -e 's/^auto_gc=/general.autogc=/' \ -e 's/^periodic_save=/general.periodicsave=/' \ -e 's/^confirm_quit=/general.confirmquit=/' \ -e 's/^confirm_delete=/general.confirmdelete=/' \ -e 's/^skip_system_dialogs=/general.systemdialogs=/' \ -e 's/^skip_progress_bar=/general.progressbar=/' \ -e 's/^calendar_default_view=/appearance.calendarview=/' \ -e 's/^week_begins_on_monday=/general.firstdayofweek=/' \ -e 's/^color-theme=/appearance.theme=/' \ -e 's/^layout=/appearance.layout=/' \ -e 's/^side-bar_width=/appearance.sidebarwidth=/' \ -e 's/^notify-bar_show=/appearance.notifybar=/' \ -e 's/^notify-bar_date=/format.notifydate=/' \ -e 's/^notify-bar_clock=/format.notifytime=/' \ -e 's/^notify-bar_warning=/notification.warning=/' \ -e 's/^notify-bar_command=/notification.command=/' \ -e 's/^notify-all=/notification.notifyall=/' \ -e 's/^output_datefmt=/format.outputdate=/' \ -e 's/^input_datefmt=/format.inputdate=/' \ -e 's/^notify-daemon_enable=/daemon.enable=/' \ -e 's/^notify-daemon_log=/daemon.log=/' "$CONFFILE" > "$tmpfile" mv "$tmpfile" "$CONFFILE" if grep -q -e '^[^#=][^#=]*$' -e '^[^#=][^#=]*#.*$' "$CONFFILE"; then sed ' /^general.autosave=/{ N s/\n// } /^general.autogc=/{ N s/\n// } /^general.periodicsave=/{ N s/\n// } /^general.confirmquit=/{ N s/\n// } /^general.confirmdelete=/{ N s/\n// } /^general.systemdialogs=/{ N s/\n// } /^general.progressbar=/{ N s/\n// } /^appearance.calendarview=/{ N s/\n// } /^general.firstdayofweek=/{ N s/\n// } /^appearance.theme=/{ N s/\n// } /^appearance.layout=/{ N s/\n// } /^appearance.sidebarwidth=/{ N s/\n// } /^appearance.notifybar=/{ N s/\n// } /^format.notifydate=/{ N s/\n// } /^format.notifytime=/{ N s/\n// } /^notification.warning=/{ N s/\n// } /^notification.command=/{ N s/\n// } /^notification.notifyall=/{ N s/\n// } /^format.outputdate=/{ N s/\n// } /^format.inputdate=/{ N s/\n// } /^daemon.enable=/{ N s/\n// } /^daemon.log=/{ N s/\n// }' "$CONFFILE" > "$tmpfile" mv "$tmpfile" "$CONFFILE" fi awk ' BEGIN { FS=OFS="=" } $1 == "general.systemdialogs" || $1 == "general.progressbar" \ { $2 = ($2 == "yes") ? "no" : "yes" } $1 == "general.firstdayofweek" { $2 = ($2 == "yes") ? "monday" : "sunday" } $1 == "appearance.calendarview" { $2 = ($2 == 0) ? "monthly" : \ ($2 == 1) ? "weekly" : $2 } { print } ' < "$CONFFILE" > "$tmpfile" mv "$tmpfile" "$CONFFILE" echo -n ' ' echo "$(gettext 'done')" echo -n "$(gettext "Remove temporary backup...")" rm "$backupfile" echo -n ' ' echo "$(gettext 'done')" fi calcurse-3.1.4/scripts/Makefile.am0000644000175000001440000000055112105444321013755 00000000000000AUTOMAKE_OPTIONS = foreign dist_bin_SCRIPTS = \ calcurse-upgrade EXTRA_DIST = \ calcurse-upgrade.sh.in CLEANFILES = \ calcurse-upgrade edit = sed \ -e 's|@PACKAGE_VERSION[@]|$(PACKAGE_VERSION)|g' calcurse-upgrade: calcurse-upgrade.sh.in $(AM_V_at)$(RM) "$@" $(AM_V_GEN)$(edit) <"$(srcdir)/$<" >"$@" $(AM_V_at)chmod +x "$@" $(AM_V_at)chmod a-w "$@" calcurse-3.1.4/missing0000755000175000001440000001533112105444410011632 00000000000000#! /bin/sh # Common wrapper for a few potentially missing GNU programs. scriptversion=2012-06-26.16; # UTC # Copyright (C) 1996-2013 Free Software Foundation, Inc. # Originally written by Fran,cois Pinard , 1996. # 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, 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, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. if test $# -eq 0; then echo 1>&2 "Try '$0 --help' for more information" exit 1 fi case $1 in --is-lightweight) # Used by our autoconf macros to check whether the available missing # script is modern enough. exit 0 ;; --run) # Back-compat with the calling convention used by older automake. shift ;; -h|--h|--he|--hel|--help) echo "\ $0 [OPTION]... PROGRAM [ARGUMENT]... Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due to PROGRAM being missing or too old. Options: -h, --help display this help and exit -v, --version output version information and exit Supported PROGRAM values: aclocal autoconf autoheader autom4te automake makeinfo bison yacc flex lex help2man Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and 'g' are ignored when checking the name. Send bug reports to ." exit $? ;; -v|--v|--ve|--ver|--vers|--versi|--versio|--version) echo "missing $scriptversion (GNU Automake)" exit $? ;; -*) echo 1>&2 "$0: unknown '$1' option" echo 1>&2 "Try '$0 --help' for more information" exit 1 ;; esac # Run the given program, remember its exit status. "$@"; st=$? # If it succeeded, we are done. test $st -eq 0 && exit 0 # Also exit now if we it failed (or wasn't found), and '--version' was # passed; such an option is passed most likely to detect whether the # program is present and works. case $2 in --version|--help) exit $st;; esac # Exit code 63 means version mismatch. This often happens when the user # tries to use an ancient version of a tool on a file that requires a # minimum version. if test $st -eq 63; then msg="probably too old" elif test $st -eq 127; then # Program was missing. msg="missing on your system" else # Program was found and executed, but failed. Give up. exit $st fi perl_URL=http://www.perl.org/ flex_URL=http://flex.sourceforge.net/ gnu_software_URL=http://www.gnu.org/software program_details () { case $1 in aclocal|automake) echo "The '$1' program is part of the GNU Automake package:" echo "<$gnu_software_URL/automake>" echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:" echo "<$gnu_software_URL/autoconf>" echo "<$gnu_software_URL/m4/>" echo "<$perl_URL>" ;; autoconf|autom4te|autoheader) echo "The '$1' program is part of the GNU Autoconf package:" echo "<$gnu_software_URL/autoconf/>" echo "It also requires GNU m4 and Perl in order to run:" echo "<$gnu_software_URL/m4/>" echo "<$perl_URL>" ;; esac } give_advice () { # Normalize program name to check for. normalized_program=`echo "$1" | sed ' s/^gnu-//; t s/^gnu//; t s/^g//; t'` printf '%s\n' "'$1' is $msg." configure_deps="'configure.ac' or m4 files included by 'configure.ac'" case $normalized_program in autoconf*) echo "You should only need it if you modified 'configure.ac'," echo "or m4 files included by it." program_details 'autoconf' ;; autoheader*) echo "You should only need it if you modified 'acconfig.h' or" echo "$configure_deps." program_details 'autoheader' ;; automake*) echo "You should only need it if you modified 'Makefile.am' or" echo "$configure_deps." program_details 'automake' ;; aclocal*) echo "You should only need it if you modified 'acinclude.m4' or" echo "$configure_deps." program_details 'aclocal' ;; autom4te*) echo "You might have modified some maintainer files that require" echo "the 'automa4te' program to be rebuilt." program_details 'autom4te' ;; bison*|yacc*) echo "You should only need it if you modified a '.y' file." echo "You may want to install the GNU Bison package:" echo "<$gnu_software_URL/bison/>" ;; lex*|flex*) echo "You should only need it if you modified a '.l' file." echo "You may want to install the Fast Lexical Analyzer package:" echo "<$flex_URL>" ;; help2man*) echo "You should only need it if you modified a dependency" \ "of a man page." echo "You may want to install the GNU Help2man package:" echo "<$gnu_software_URL/help2man/>" ;; makeinfo*) echo "You should only need it if you modified a '.texi' file, or" echo "any other file indirectly affecting the aspect of the manual." echo "You might want to install the Texinfo package:" echo "<$gnu_software_URL/texinfo/>" echo "The spurious makeinfo call might also be the consequence of" echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might" echo "want to install GNU make:" echo "<$gnu_software_URL/make/>" ;; *) echo "You might have modified some files without having the proper" echo "tools for further handling them. Check the 'README' file, it" echo "often tells you about the needed prerequisites for installing" echo "this package. You may also peek at any GNU archive site, in" echo "case some other package contains this missing '$1' program." ;; esac } give_advice "$1" | sed -e '1s/^/WARNING: /' \ -e '2,$s/^/ /' >&2 # Propagate the correct exit status (expected to be 127 for a program # not found, 63 for a program that failed due to version mismatch). exit $st # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: calcurse-3.1.4/Makefile.in0000644000175000001440000005706612105444410012313 00000000000000# Makefile.in generated by automake 1.13.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2012 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ @ENABLE_DOCS_TRUE@am__append_1 = doc subdir = . DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ $(top_srcdir)/configure $(am__configure_deps) \ $(srcdir)/config.h.in mkinstalldirs ABOUT-NLS AUTHORS COPYING \ INSTALL NEWS README TODO config.guess config.rpath config.sub \ install-sh missing ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/lib-ld.m4 \ $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ configure.lineno config.status.lineno mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ctags-recursive dvi-recursive html-recursive info-recursive \ install-data-recursive install-dvi-recursive \ install-exec-recursive install-html-recursive \ install-info-recursive install-pdf-recursive \ install-ps-recursive install-recursive installcheck-recursive \ installdirs-recursive pdf-recursive ps-recursive \ tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive am__recursive_targets = \ $(RECURSIVE_TARGETS) \ $(RECURSIVE_CLEAN_TARGETS) \ $(am__extra_recursive_targets) AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ cscope distdir dist dist-all distcheck am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) \ $(LISP)config.h.in # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags CSCOPE = cscope DIST_SUBDIRS = po src test scripts doc DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) distdir = $(PACKAGE)-$(VERSION) top_distdir = $(distdir) am__remove_distdir = \ if test -d "$(distdir)"; then \ find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ && rm -rf "$(distdir)" \ || { sleep 5 && rm -rf "$(distdir)"; }; \ else :; fi am__post_remove_distdir = $(am__remove_distdir) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" DIST_ARCHIVES = $(distdir).tar.gz GZIP_ENV = --best DIST_TARGETS = dist-gzip distuninstallcheck_listfiles = find . -type f -print am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' distcleancheck_listfiles = find . -type f -print A2X = @A2X@ ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ ASCIIDOC = @ASCIIDOC@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GMSGFMT = @GMSGFMT@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ LDFLAGS = @LDFLAGS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ POSUB = @POSUB@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ AUTOMAKE_OPTIONS = foreign ACLOCAL_AMFLAGS = -I m4 SUBDIRS = po src test scripts $(am__append_1) EXTRA_DIST = \ INSTALL \ ABOUT-NLS BUILT_SOURCES = $(top_srcdir)/.version all: $(BUILT_SOURCES) config.h $(MAKE) $(AM_MAKEFLAGS) all-recursive .SUFFIXES: am--refresh: Makefile @: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \ $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ echo ' $(SHELL) ./config.status'; \ $(SHELL) ./config.status;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck $(top_srcdir)/configure: $(am__configure_deps) $(am__cd) $(srcdir) && $(AUTOCONF) $(ACLOCAL_M4): $(am__aclocal_m4_deps) $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) $(am__aclocal_m4_deps): config.h: stamp-h1 @if test ! -f $@; then rm -f stamp-h1; else :; fi @if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) stamp-h1; else :; fi stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status @rm -f stamp-h1 cd $(top_builddir) && $(SHELL) ./config.status config.h $(srcdir)/config.h.in: $(am__configure_deps) ($(am__cd) $(top_srcdir) && $(AUTOHEADER)) rm -f stamp-h1 touch $@ distclean-hdr: -rm -f config.h stamp-h1 # This directory's subdirectories are mostly independent; you can cd # into them and run 'make' without going through this Makefile. # To change the values of 'make' variables: instead of editing Makefiles, # (1) if the variable is set in 'config.status', edit 'config.status' # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(am__recursive_targets): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-recursive TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-recursive CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscope: cscope.files test ! -s cscope.files \ || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS) clean-cscope: -rm -f cscope.files cscope.files: clean-cscope cscopelist cscopelist: cscopelist-recursive cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -rm -f cscope.out cscope.in.out cscope.po.out cscope.files distdir: $(DISTFILES) $(am__remove_distdir) test -d "$(distdir)" || mkdir "$(distdir)" @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$(top_distdir)" distdir="$(distdir)" \ dist-hook -test -n "$(am__skip_mode_fix)" \ || find "$(distdir)" -type d ! -perm -755 \ -exec chmod u+rwx,go+rx {} \; -o \ ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ || chmod -R a+r "$(distdir)" dist-gzip: distdir tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz $(am__post_remove_distdir) dist-bzip2: distdir tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 $(am__post_remove_distdir) dist-lzip: distdir tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz $(am__post_remove_distdir) dist-xz: distdir tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz $(am__post_remove_distdir) dist-tarZ: distdir tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z $(am__post_remove_distdir) dist-shar: distdir shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz $(am__post_remove_distdir) dist-zip: distdir -rm -f $(distdir).zip zip -rq $(distdir).zip $(distdir) $(am__post_remove_distdir) dist dist-all: $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:' $(am__post_remove_distdir) # This target untars the dist file and tries a VPATH configuration. Then # it guarantees that the distribution is self-contained by making another # tarfile. distcheck: dist case '$(DIST_ARCHIVES)' in \ *.tar.gz*) \ GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\ *.tar.bz2*) \ bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ *.tar.lz*) \ lzip -dc $(distdir).tar.lz | $(am__untar) ;;\ *.tar.xz*) \ xz -dc $(distdir).tar.xz | $(am__untar) ;;\ *.tar.Z*) \ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ *.shar.gz*) \ GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\ *.zip*) \ unzip $(distdir).zip ;;\ esac chmod -R a-w $(distdir) chmod u+w $(distdir) mkdir $(distdir)/_build $(distdir)/_inst chmod a-w $(distdir) test -d $(distdir)/_build || exit 0; \ dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ && am__cwd=`pwd` \ && $(am__cd) $(distdir)/_build \ && ../configure --srcdir=.. --prefix="$$dc_install_base" \ $(AM_DISTCHECK_CONFIGURE_FLAGS) \ $(DISTCHECK_CONFIGURE_FLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) dvi \ && $(MAKE) $(AM_MAKEFLAGS) check \ && $(MAKE) $(AM_MAKEFLAGS) install \ && $(MAKE) $(AM_MAKEFLAGS) installcheck \ && $(MAKE) $(AM_MAKEFLAGS) uninstall \ && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ distuninstallcheck \ && chmod -R a-w "$$dc_install_base" \ && ({ \ (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ } || { rm -rf "$$dc_destdir"; exit 1; }) \ && rm -rf "$$dc_destdir" \ && $(MAKE) $(AM_MAKEFLAGS) dist \ && rm -rf $(DIST_ARCHIVES) \ && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ && cd "$$am__cwd" \ || exit 1 $(am__post_remove_distdir) @(echo "$(distdir) archives ready for distribution: "; \ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' distuninstallcheck: @test -n '$(distuninstallcheck_dir)' || { \ echo 'ERROR: trying to run $@ with an empty' \ '$$(distuninstallcheck_dir)' >&2; \ exit 1; \ }; \ $(am__cd) '$(distuninstallcheck_dir)' || { \ echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \ exit 1; \ }; \ test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left after uninstall:" ; \ if test -n "$(DESTDIR)"; then \ echo " (check DESTDIR support)"; \ fi ; \ $(distuninstallcheck_listfiles) ; \ exit 1; } >&2 distcleancheck: distclean @if test '$(srcdir)' = . ; then \ echo "ERROR: distcleancheck can only run from a VPATH build" ; \ exit 1 ; \ fi @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left in build directory after distclean:" ; \ $(distcleancheck_listfiles) ; \ exit 1; } >&2 check-am: all-am check: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) check-recursive all-am: Makefile config.h installdirs: installdirs-recursive installdirs-am: install: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) clean: clean-recursive clean-am: clean-generic mostlyclean-am distclean: distclean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -f Makefile distclean-am: clean-am distclean-generic distclean-hdr distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf $(top_srcdir)/autom4te.cache -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: .MAKE: $(am__recursive_targets) all check install install-am \ install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \ am--refresh check check-am clean clean-cscope clean-generic \ cscope cscopelist-am ctags ctags-am dist dist-all dist-bzip2 \ dist-gzip dist-hook dist-lzip dist-shar dist-tarZ dist-xz \ dist-zip distcheck distclean distclean-generic distclean-hdr \ distclean-tags distcleancheck distdir distuninstallcheck dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs installdirs-am \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am $(top_srcdir)/.version: echo $(VERSION) > $@-t && mv $@-t $@ dist-hook: echo $(VERSION) > $(distdir)/.version # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: calcurse-3.1.4/depcomp0000755000175000001440000005570312105444410011617 00000000000000#! /bin/sh # depcomp - compile a program generating dependencies as side-effects scriptversion=2012-10-18.11; # UTC # Copyright (C) 1999-2013 Free Software Foundation, Inc. # 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, 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, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Originally written by Alexandre Oliva . case $1 in '') echo "$0: No command. Try '$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: depcomp [--help] [--version] PROGRAM [ARGS] Run PROGRAMS ARGS to compile a file, generating dependencies as side-effects. Environment variables: depmode Dependency tracking mode. source Source file read by 'PROGRAMS ARGS'. object Object file output by 'PROGRAMS ARGS'. DEPDIR directory where to store dependencies. depfile Dependency file to output. tmpdepfile Temporary file to use when outputting dependencies. libtool Whether libtool is used (yes/no). Report bugs to . EOF exit $? ;; -v | --v*) echo "depcomp $scriptversion" exit $? ;; esac # Get the directory component of the given path, and save it in the # global variables '$dir'. Note that this directory component will # be either empty or ending with a '/' character. This is deliberate. set_dir_from () { case $1 in */*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;; *) dir=;; esac } # Get the suffix-stripped basename of the given path, and save it the # global variable '$base'. set_base_from () { base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'` } # If no dependency file was actually created by the compiler invocation, # we still have to create a dummy depfile, to avoid errors with the # Makefile "include basename.Plo" scheme. make_dummy_depfile () { echo "#dummy" > "$depfile" } # Factor out some common post-processing of the generated depfile. # Requires the auxiliary global variable '$tmpdepfile' to be set. aix_post_process_depfile () { # If the compiler actually managed to produce a dependency file, # post-process it. if test -f "$tmpdepfile"; then # Each line is of the form 'foo.o: dependency.h'. # Do two passes, one to just change these to # $object: dependency.h # and one to simply output # dependency.h: # which is needed to avoid the deleted-header problem. { sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile" sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile" } > "$depfile" rm -f "$tmpdepfile" else make_dummy_depfile fi } # A tabulation character. tab=' ' # A newline character. nl=' ' # Character ranges might be problematic outside the C locale. # These definitions help. upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ lower=abcdefghijklmnopqrstuvwxyz digits=0123456789 alpha=${upper}${lower} if test -z "$depmode" || test -z "$source" || test -z "$object"; then echo "depcomp: Variables source, object and depmode must be set" 1>&2 exit 1 fi # Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. depfile=${depfile-`echo "$object" | sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} rm -f "$tmpdepfile" # Avoid interferences from the environment. gccflag= dashmflag= # Some modes work just like other modes, but use different flags. We # parameterize here, but still list the modes in the big case below, # to make depend.m4 easier to write. Note that we *cannot* use a case # here, because this file can only contain one case statement. if test "$depmode" = hp; then # HP compiler uses -M and no extra arg. gccflag=-M depmode=gcc fi if test "$depmode" = dashXmstdout; then # This is just like dashmstdout with a different argument. dashmflag=-xM depmode=dashmstdout fi cygpath_u="cygpath -u -f -" if test "$depmode" = msvcmsys; then # This is just like msvisualcpp but w/o cygpath translation. # Just convert the backslash-escaped backslashes to single forward # slashes to satisfy depend.m4 cygpath_u='sed s,\\\\,/,g' depmode=msvisualcpp fi if test "$depmode" = msvc7msys; then # This is just like msvc7 but w/o cygpath translation. # Just convert the backslash-escaped backslashes to single forward # slashes to satisfy depend.m4 cygpath_u='sed s,\\\\,/,g' depmode=msvc7 fi if test "$depmode" = xlc; then # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information. gccflag=-qmakedep=gcc,-MF depmode=gcc fi case "$depmode" in gcc3) ## gcc 3 implements dependency tracking that does exactly what ## we want. Yay! Note: for some reason libtool 1.4 doesn't like ## it if -MD -MP comes after the -MF stuff. Hmm. ## Unfortunately, FreeBSD c89 acceptance of flags depends upon ## the command line argument order; so add the flags where they ## appear in depend2.am. Note that the slowdown incurred here ## affects only configure: in makefiles, %FASTDEP% shortcuts this. for arg do case $arg in -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; *) set fnord "$@" "$arg" ;; esac shift # fnord shift # $arg done "$@" stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi mv "$tmpdepfile" "$depfile" ;; gcc) ## Note that this doesn't just cater to obsosete pre-3.x GCC compilers. ## but also to in-use compilers like IMB xlc/xlC and the HP C compiler. ## (see the conditional assignment to $gccflag above). ## There are various ways to get dependency output from gcc. Here's ## why we pick this rather obscure method: ## - Don't want to use -MD because we'd like the dependencies to end ## up in a subdir. Having to rename by hand is ugly. ## (We might end up doing this anyway to support other compilers.) ## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like ## -MM, not -M (despite what the docs say). Also, it might not be ## supported by the other compilers which use the 'gcc' depmode. ## - Using -M directly means running the compiler twice (even worse ## than renaming). if test -z "$gccflag"; then gccflag=-MD, fi "$@" -Wp,"$gccflag$tmpdepfile" stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" # The second -e expression handles DOS-style file names with drive # letters. sed -e 's/^[^:]*: / /' \ -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" ## This next piece of magic avoids the "deleted header file" problem. ## The problem is that when a header file which appears in a .P file ## is deleted, the dependency causes make to die (because there is ## typically no way to rebuild the header). We avoid this by adding ## dummy dependencies for each header file. Too bad gcc doesn't do ## this for us directly. ## Some versions of gcc put a space before the ':'. On the theory ## that the space means something, we add a space to the output as ## well. hp depmode also adds that space, but also prefixes the VPATH ## to the object. Take care to not repeat it in the output. ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; sgi) if test "$libtool" = yes; then "$@" "-Wp,-MDupdate,$tmpdepfile" else "$@" -MDupdate "$tmpdepfile" fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files echo "$object : \\" > "$depfile" # Clip off the initial element (the dependent). Don't try to be # clever and replace this with sed code, as IRIX sed won't handle # lines with more than a fixed number of characters (4096 in # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; # the IRIX cc adds comments like '#:fec' to the end of the # dependency line. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \ | tr "$nl" ' ' >> "$depfile" echo >> "$depfile" # The second pass generates a dummy entry for each header file. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ >> "$depfile" else make_dummy_depfile fi rm -f "$tmpdepfile" ;; xlc) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; aix) # The C for AIX Compiler uses -M and outputs the dependencies # in a .u file. In older versions, this file always lives in the # current directory. Also, the AIX compiler puts '$object:' at the # start of each line; $object doesn't have directory information. # Version 6 uses the directory in both cases. set_dir_from "$object" set_base_from "$object" if test "$libtool" = yes; then tmpdepfile1=$dir$base.u tmpdepfile2=$base.u tmpdepfile3=$dir.libs/$base.u "$@" -Wc,-M else tmpdepfile1=$dir$base.u tmpdepfile2=$dir$base.u tmpdepfile3=$dir$base.u "$@" -M fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" do test -f "$tmpdepfile" && break done aix_post_process_depfile ;; tcc) # tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26 # FIXME: That version still under development at the moment of writing. # Make that this statement remains true also for stable, released # versions. # It will wrap lines (doesn't matter whether long or short) with a # trailing '\', as in: # # foo.o : \ # foo.c \ # foo.h \ # # It will put a trailing '\' even on the last line, and will use leading # spaces rather than leading tabs (at least since its commit 0394caf7 # "Emit spaces for -MD"). "$@" -MD -MF "$tmpdepfile" stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" # Each non-empty line is of the form 'foo.o : \' or ' dep.h \'. # We have to change lines of the first kind to '$object: \'. sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile" # And for each line of the second kind, we have to emit a 'dep.h:' # dummy dependency, to avoid the deleted-header problem. sed -n -e 's|^ *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile" rm -f "$tmpdepfile" ;; ## The order of this option in the case statement is important, since the ## shell code in configure will try each of these formats in the order ## listed in this file. A plain '-MD' option would be understood by many ## compilers, so we must ensure this comes after the gcc and icc options. pgcc) # Portland's C compiler understands '-MD'. # Will always output deps to 'file.d' where file is the root name of the # source file under compilation, even if file resides in a subdirectory. # The object file name does not affect the name of the '.d' file. # pgcc 10.2 will output # foo.o: sub/foo.c sub/foo.h # and will wrap long lines using '\' : # foo.o: sub/foo.c ... \ # sub/foo.h ... \ # ... set_dir_from "$object" # Use the source, not the object, to determine the base name, since # that's sadly what pgcc will do too. set_base_from "$source" tmpdepfile=$base.d # For projects that build the same source file twice into different object # files, the pgcc approach of using the *source* file root name can cause # problems in parallel builds. Use a locking strategy to avoid stomping on # the same $tmpdepfile. lockdir=$base.d-lock trap " echo '$0: caught signal, cleaning up...' >&2 rmdir '$lockdir' exit 1 " 1 2 13 15 numtries=100 i=$numtries while test $i -gt 0; do # mkdir is a portable test-and-set. if mkdir "$lockdir" 2>/dev/null; then # This process acquired the lock. "$@" -MD stat=$? # Release the lock. rmdir "$lockdir" break else # If the lock is being held by a different process, wait # until the winning process is done or we timeout. while test -d "$lockdir" && test $i -gt 0; do sleep 1 i=`expr $i - 1` done fi i=`expr $i - 1` done trap - 1 2 13 15 if test $i -le 0; then echo "$0: failed to acquire lock after $numtries attempts" >&2 echo "$0: check lockdir '$lockdir'" >&2 exit 1 fi if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" # Each line is of the form `foo.o: dependent.h', # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. # Do two passes, one to just change these to # `$object: dependent.h' and one to simply `dependent.h:'. sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process this invocation # correctly. Breaking it into two sed invocations is a workaround. sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp2) # The "hp" stanza above does not work with aCC (C++) and HP's ia64 # compilers, which have integrated preprocessors. The correct option # to use with these is +Maked; it writes dependencies to a file named # 'foo.d', which lands next to the object file, wherever that # happens to be. # Much of this is similar to the tru64 case; see comments there. set_dir_from "$object" set_base_from "$object" if test "$libtool" = yes; then tmpdepfile1=$dir$base.d tmpdepfile2=$dir.libs/$base.d "$@" -Wc,+Maked else tmpdepfile1=$dir$base.d tmpdepfile2=$dir$base.d "$@" +Maked fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" do test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile" # Add 'dependent.h:' lines. sed -ne '2,${ s/^ *// s/ \\*$// s/$/:/ p }' "$tmpdepfile" >> "$depfile" else make_dummy_depfile fi rm -f "$tmpdepfile" "$tmpdepfile2" ;; tru64) # The Tru64 compiler uses -MD to generate dependencies as a side # effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'. # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put # dependencies in 'foo.d' instead, so we check for that too. # Subdirectories are respected. set_dir_from "$object" set_base_from "$object" if test "$libtool" = yes; then # Libtool generates 2 separate objects for the 2 libraries. These # two compilations output dependencies in $dir.libs/$base.o.d and # in $dir$base.o.d. We have to check for both files, because # one of the two compilations can be disabled. We should prefer # $dir$base.o.d over $dir.libs/$base.o.d because the latter is # automatically cleaned when .libs/ is deleted, while ignoring # the former would cause a distcleancheck panic. tmpdepfile1=$dir$base.o.d # libtool 1.5 tmpdepfile2=$dir.libs/$base.o.d # Likewise. tmpdepfile3=$dir.libs/$base.d # Compaq CCC V6.2-504 "$@" -Wc,-MD else tmpdepfile1=$dir$base.d tmpdepfile2=$dir$base.d tmpdepfile3=$dir$base.d "$@" -MD fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" do test -f "$tmpdepfile" && break done # Same post-processing that is required for AIX mode. aix_post_process_depfile ;; msvc7) if test "$libtool" = yes; then showIncludes=-Wc,-showIncludes else showIncludes=-showIncludes fi "$@" $showIncludes > "$tmpdepfile" stat=$? grep -v '^Note: including file: ' "$tmpdepfile" if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" # The first sed program below extracts the file names and escapes # backslashes for cygpath. The second sed program outputs the file # name when reading, but also accumulates all include files in the # hold buffer in order to output them again at the end. This only # works with sed implementations that can handle large buffers. sed < "$tmpdepfile" -n ' /^Note: including file: *\(.*\)/ { s//\1/ s/\\/\\\\/g p }' | $cygpath_u | sort -u | sed -n ' s/ /\\ /g s/\(.*\)/'"$tab"'\1 \\/p s/.\(.*\) \\/\1:/ H $ { s/.*/'"$tab"'/ G p }' >> "$depfile" rm -f "$tmpdepfile" ;; msvc7msys) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; #nosideeffect) # This comment above is used by automake to tell side-effect # dependency tracking mechanisms from slower ones. dashmstdout) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout, regardless of -o. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # Remove '-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done test -z "$dashmflag" && dashmflag=-M # Require at least two characters before searching for ':' # in the target name. This is to cope with DOS-style filenames: # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise. "$@" $dashmflag | sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile" rm -f "$depfile" cat < "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process this sed invocation # correctly. Breaking it into two sed invocations is a workaround. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; dashXmstdout) # This case only exists to satisfy depend.m4. It is never actually # run, as this mode is specially recognized in the preamble. exit 1 ;; makedepend) "$@" || exit $? # Remove any Libtool call if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # X makedepend shift cleared=no eat=no for arg do case $cleared in no) set ""; shift cleared=yes ;; esac if test $eat = yes; then eat=no continue fi case "$arg" in -D*|-I*) set fnord "$@" "$arg"; shift ;; # Strip any option that makedepend may not understand. Remove # the object too, otherwise makedepend will parse it as a source file. -arch) eat=yes ;; -*|$object) ;; *) set fnord "$@" "$arg"; shift ;; esac done obj_suffix=`echo "$object" | sed 's/^.*\././'` touch "$tmpdepfile" ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" rm -f "$depfile" # makedepend may prepend the VPATH from the source file name to the object. # No need to regex-escape $object, excess matching of '.' is harmless. sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process the last invocation # correctly. Breaking it into two sed invocations is a workaround. sed '1,2d' "$tmpdepfile" \ | tr ' ' "$nl" \ | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" "$tmpdepfile".bak ;; cpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # Remove '-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done "$@" -E \ | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ | sed '$ s: \\$::' > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" cat < "$tmpdepfile" >> "$depfile" sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; msvisualcpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi IFS=" " for arg do case "$arg" in -o) shift ;; $object) shift ;; "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") set fnord "$@" shift shift ;; *) set fnord "$@" "$arg" shift shift ;; esac done "$@" -E 2>/dev/null | sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile" echo "$tab" >> "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" rm -f "$tmpdepfile" ;; msvcmsys) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; none) exec "$@" ;; *) echo "Unknown depmode $depmode" 1>&2 exit 1 ;; esac exit 0 # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: calcurse-3.1.4/AUTHORS0000644000175000001440000000011612105444321011277 00000000000000Frederic Culot Lukas Fleischer calcurse-3.1.4/src/0000755000175000001440000000000012105444504011103 500000000000000calcurse-3.1.4/src/day.c0000644000175000001440000004637512105444350011762 00000000000000/* * Calcurse - text-based organizer * * Copyright (c) 2004-2013 calcurse Development Team * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * - Redistributions of source code must retain the above * copyright notice, this list of conditions and the * following disclaimer. * * - Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the * following disclaimer in the documentation and/or other * materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * Send your feedback or comments to : misc@calcurse.org * Calcurse home page : http://calcurse.org * */ #include #include #include #include #include #include "calcurse.h" static llist_t day_items; static void day_free(struct day_item *day) { mem_free(day); } static void day_init_list(void) { LLIST_INIT(&day_items); } /* * Free the current day linked list containing the events and appointments. * Must not free associated message and note, because their are not dynamically * allocated (only pointers to real objects are stored in this structure). */ void day_free_list(void) { LLIST_FREE_INNER(&day_items, day_free); LLIST_FREE(&day_items); } static int day_cmp_start(struct day_item *a, struct day_item *b) { if (a->type <= EVNT) { if (b->type <= EVNT) return 0; else return -1; } else if (b->type <= EVNT) return 1; else return a->start < b->start ? -1 : (a->start == b->start ? 0 : 1); } /* Add an item to the current day list. */ static void day_add_item(int type, long start, union aptev_ptr item) { struct day_item *day = mem_malloc(sizeof(struct day_item)); day->type = type; day->start = start; day->item = item; LLIST_ADD_SORTED(&day_items, day, day_cmp_start); } /* Get the message of an item. */ char *day_item_get_mesg(struct day_item *day) { switch (day->type) { case APPT: return day->item.apt->mesg; case EVNT: return day->item.ev->mesg; case RECUR_APPT: return day->item.rapt->mesg; case RECUR_EVNT: return day->item.rev->mesg; default: return NULL; } } /* Get the note attached to an item. */ char *day_item_get_note(struct day_item *day) { switch (day->type) { case APPT: return day->item.apt->note; case EVNT: return day->item.ev->note; case RECUR_APPT: return day->item.rapt->note; case RECUR_EVNT: return day->item.rev->note; default: return NULL; } } /* Get the note attached to an item. */ void day_item_erase_note(struct day_item *day) { switch (day->type) { case APPT: erase_note(&day->item.apt->note); break; case EVNT: erase_note(&day->item.ev->note); break; case RECUR_APPT: erase_note(&day->item.rapt->note); break; case RECUR_EVNT: erase_note(&day->item.rev->note); break; } } /* Get the duration of an item. */ long day_item_get_duration(struct day_item *day) { switch (day->type) { case APPT: return day->item.apt->dur; case RECUR_APPT: return day->item.rapt->dur; default: return 0; } } /* Get the notification state of an item. */ int day_item_get_state(struct day_item *day) { switch (day->type) { case APPT: return day->item.apt->state; case RECUR_APPT: return day->item.rapt->state; default: return APOINT_NULL; } } /* Add an exception to an item. */ void day_item_add_exc(struct day_item *day, long date) { switch (day->type) { case RECUR_EVNT: recur_event_add_exc(day->item.rev, date); case RECUR_APPT: recur_apoint_add_exc(day->item.rapt, date); } } /* Clone the actual item. */ void day_item_fork(struct day_item *day_in, struct day_item *day_out) { day_out->type = day_in->type; day_out->start = day_in->start; switch (day_in->type) { case APPT: day_out->item.apt = apoint_dup(day_in->item.apt); break; case EVNT: day_out->item.ev = event_dup(day_in->item.ev); break; case RECUR_APPT: day_out->item.rapt = recur_apoint_dup(day_in->item.rapt); break; case RECUR_EVNT: day_out->item.rev = recur_event_dup(day_in->item.rev); break; default: EXIT(_("unknown item type")); /* NOTREACHED */ } } /* * Store the events for the selected day in structure pointed * by day_items. This is done by copying the events * from the general structure pointed by eventlist to the structure * dedicated to the selected day. * Returns the number of events for the selected day. */ static int day_store_events(long date, regex_t *regex) { llist_item_t *i; union aptev_ptr p; int e_nb = 0; LLIST_FIND_FOREACH_CONT(&eventlist, &date, event_inday, i) { struct event *ev = LLIST_TS_GET_DATA(i); if (regex && regexec(regex, ev->mesg, 0, 0, 0) != 0) continue; p.ev = ev; day_add_item(EVNT, ev->day, p); e_nb++; } return e_nb; } /* * Store the recurrent events for the selected day in structure pointed * by day_items. This is done by copying the recurrent events * from the general structure pointed by recur_elist to the structure * dedicated to the selected day. * Returns the number of recurrent events for the selected day. */ static int day_store_recur_events(long date, regex_t *regex) { llist_item_t *i; union aptev_ptr p; int e_nb = 0; LLIST_FIND_FOREACH(&recur_elist, &date, recur_event_inday, i) { struct recur_event *rev = LLIST_TS_GET_DATA(i); if (regex && regexec(regex, rev->mesg, 0, 0, 0) != 0) continue; p.rev = rev; day_add_item(RECUR_EVNT, rev->day, p); e_nb++; } return e_nb; } /* * Store the apoints for the selected day in structure pointed * by day_items. This is done by copying the appointments * from the general structure pointed by alist_p to the * structure dedicated to the selected day. * Returns the number of appointments for the selected day. */ static int day_store_apoints(long date, regex_t *regex) { llist_item_t *i; union aptev_ptr p; int a_nb = 0; LLIST_TS_LOCK(&alist_p); LLIST_TS_FIND_FOREACH(&alist_p, &date, apoint_inday, i) { struct apoint *apt = LLIST_TS_GET_DATA(i); if (regex && regexec(regex, apt->mesg, 0, 0, 0) != 0) continue; p.apt = apt; if (apt->start >= date + DAYINSEC) break; day_add_item(APPT, apt->start, p); a_nb++; } LLIST_TS_UNLOCK(&alist_p); return a_nb; } /* * Store the recurrent apoints for the selected day in structure pointed * by day_items. This is done by copying the appointments * from the general structure pointed by recur_alist_p to the * structure dedicated to the selected day. * Returns the number of recurrent appointments for the selected day. */ static int day_store_recur_apoints(long date, regex_t *regex) { llist_item_t *i; union aptev_ptr p; int a_nb = 0; LLIST_TS_LOCK(&recur_alist_p); LLIST_TS_FIND_FOREACH(&recur_alist_p, &date, recur_apoint_inday, i) { struct recur_apoint *rapt = LLIST_TS_GET_DATA(i); if (regex && regexec(regex, rapt->mesg, 0, 0, 0) != 0) continue; p.rapt = rapt; unsigned real_start; if (recur_apoint_find_occurrence(rapt, date, &real_start)) { day_add_item(RECUR_APPT, real_start, p); a_nb++; } } LLIST_TS_UNLOCK(&recur_alist_p); return a_nb; } /* * Store all of the items to be displayed for the selected day. * Items are of four types: recursive events, normal events, * recursive appointments and normal appointments. * The items are stored in the linked list pointed by day_items * and the length of the new pad to write is returned. * The number of events and appointments in the current day are also updated. */ int day_store_items(long date, unsigned *pnb_events, unsigned *pnb_apoints, regex_t *regex) { int nb_events, nb_recur_events; int nb_apoints, nb_recur_apoints; day_free_list(); day_init_list(); nb_recur_events = day_store_recur_events(date, regex); nb_events = day_store_events(date, regex); nb_recur_apoints = day_store_recur_apoints(date, regex); nb_apoints = day_store_apoints(date, regex); if (pnb_apoints) *pnb_apoints = nb_apoints + nb_recur_apoints; if (pnb_events) *pnb_events = nb_events + nb_recur_events; return nb_events + nb_recur_events + nb_apoints + nb_recur_apoints; } /* * Store the events and appointments for the selected day, and write * those items in a pad. If selected day is null, then store items for current * day. This is useful to speed up the appointment panel update. */ struct day_items_nb *day_process_storage(struct date *slctd_date, unsigned day_changed, struct day_items_nb *inday) { long date; struct date day; if (slctd_date) day = *slctd_date; else calendar_store_current_date(&day); date = date2sec(day, 0, 0); /* Inits */ if (apad.length != 0) delwin(apad.ptrwin); /* Store the events and appointments (recursive and normal items). */ day_store_items(date, &inday->nb_events, &inday->nb_apoints, NULL); apad.length = (inday->nb_events + 1 + 3 * inday->nb_apoints); /* Create the new pad with its new length. */ if (day_changed) apad.first_onscreen = 0; apad.ptrwin = newpad(apad.length, apad.width); return inday; } /* * Print an item date in the appointment panel. */ static void display_item_date(struct day_item *day, int incolor, long date, int y, int x) { WINDOW *win; char a_st[100], a_end[100]; /* FIXME: Redesign apoint_sec2str() and remove the need for a temporary * appointment item here. */ struct apoint apt_tmp; apt_tmp.start = day->start; apt_tmp.dur = day_item_get_duration(day); win = apad.ptrwin; apoint_sec2str(&apt_tmp, date, a_st, a_end); if (incolor == 0) custom_apply_attr(win, ATTR_HIGHEST); if (day->type == RECUR_EVNT || day->type == RECUR_APPT) { if (day_item_get_state(day) & APOINT_NOTIFY) mvwprintw(win, y, x, " *!%s -> %s", a_st, a_end); else mvwprintw(win, y, x, " * %s -> %s", a_st, a_end); } else if (day_item_get_state(day) & APOINT_NOTIFY) { mvwprintw(win, y, x, " -!%s -> %s", a_st, a_end); } else { mvwprintw(win, y, x, " - %s -> %s", a_st, a_end); } if (incolor == 0) custom_remove_attr(win, ATTR_HIGHEST); } /* * Print an item description in the corresponding panel window. */ static void display_item(struct day_item *day, int incolor, int width, int y, int x) { WINDOW *win; int ch_recur, ch_note; char buf[width * UTF8_MAXLEN]; int i; if (width <= 0) return; char *mesg = day_item_get_mesg(day); win = apad.ptrwin; ch_recur = (day->type == RECUR_EVNT || day->type == RECUR_APPT) ? '*' : ' '; ch_note = day_item_get_note(day) ? '>' : ' '; if (incolor == 0) custom_apply_attr(win, ATTR_HIGHEST); if (utf8_strwidth(mesg) < width) mvwprintw(win, y, x, " %c%c%s", ch_recur, ch_note, mesg); else { for (i = 0; mesg[i] && width > 0; i++) { if (!UTF8_ISCONT(mesg[i])) width -= utf8_width(&mesg[i]); buf[i] = mesg[i]; } if (i) buf[i - 1] = 0; else buf[0] = 0; mvwprintw(win, y, x, " %c%c%s...", ch_recur, ch_note, buf); } if (incolor == 0) custom_remove_attr(win, ATTR_HIGHEST); } /* * Write the appointments and events for the selected day in a pad. * An horizontal line is drawn between events and appointments, and the * item selected by user is highlighted. */ void day_write_pad(long date, int width, int length, int incolor) { llist_item_t *i; int line, item_number; const int x_pos = 0; unsigned draw_line = 0; line = item_number = 0; LLIST_FOREACH(&day_items, i) { struct day_item *day = LLIST_TS_GET_DATA(i); /* First print the events for current day. */ if (day->type < RECUR_APPT) { item_number++; display_item(day, item_number - incolor, width - 7, line, x_pos); line++; draw_line = 1; } else { /* Draw a line between events and appointments. */ if (line > 0 && draw_line) { wmove(apad.ptrwin, line, 0); whline(apad.ptrwin, 0, width); draw_line = 0; } /* Last print the appointments for current day. */ item_number++; display_item_date(day, item_number - incolor, date, line + 1, x_pos); display_item(day, item_number - incolor, width - 7, line + 2, x_pos); line += 3; } } } /* Write the appointments and events for the selected day to stdout. */ void day_write_stdout(long date, const char *fmt_apt, const char *fmt_rapt, const char *fmt_ev, const char *fmt_rev) { llist_item_t *i; LLIST_FOREACH(&day_items, i) { struct day_item *day = LLIST_TS_GET_DATA(i); switch (day->type) { case APPT: print_apoint(fmt_apt, date, day->item.apt); break; case EVNT: print_event(fmt_ev, date, day->item.ev); break; case RECUR_APPT: print_recur_apoint(fmt_rapt, date, day->start, day->item.rapt); break; case RECUR_EVNT: print_recur_event(fmt_rev, date, day->item.rev); break; default: EXIT(_("unknown item type")); /* NOTREACHED */ } } } /* Display an item inside a popup window. */ void day_popup_item(struct day_item *day) { if (day->type == EVNT || day->type == RECUR_EVNT) { item_in_popup(NULL, NULL, day_item_get_mesg(day), _("Event :")); } else if (day->type == APPT || day->type == RECUR_APPT) { char a_st[100], a_end[100]; /* FIXME: Redesign apoint_sec2str() and remove the need for a temporary * appointment item here. */ struct apoint apt_tmp; apt_tmp.start = day->start; apt_tmp.dur = day_item_get_duration(day); apoint_sec2str(&apt_tmp, calendar_get_slctd_day_sec(), a_st, a_end); item_in_popup(a_st, a_end, day_item_get_mesg(day), _("Appointment :")); } else { EXIT(_("unknown item type")); /* NOTREACHED */ } } /* * Need to know if there is an item for the current selected day inside * calendar. This is used to put the correct colors inside calendar panel. */ int day_check_if_item(struct date day) { const long date = date2sec(day, 0, 0); if (LLIST_FIND_FIRST(&recur_elist, (long *)&date, recur_event_inday)) return 1; LLIST_TS_LOCK(&recur_alist_p); if (LLIST_TS_FIND_FIRST(&recur_alist_p, (long *)&date, recur_apoint_inday)) { LLIST_TS_UNLOCK(&recur_alist_p); return 1; } LLIST_TS_UNLOCK(&recur_alist_p); if (LLIST_FIND_FIRST(&eventlist, (long *)&date, event_inday)) return 1; LLIST_TS_LOCK(&alist_p); if (LLIST_TS_FIND_FIRST(&alist_p, (long *)&date, apoint_inday)) { LLIST_TS_UNLOCK(&alist_p); return 1; } LLIST_TS_UNLOCK(&alist_p); return 0; } static unsigned fill_slices(int *slices, int slicesno, int first, int last) { int i; if (first < 0 || last < first) return 0; if (last >= slicesno) last = slicesno - 1; /* Appointment spanning more than one day. */ for (i = first; i <= last; i++) slices[i] = 1; return 1; } /* * Fill in the 'slices' vector given as an argument with 1 if there is an * appointment in the corresponding time slice, 0 otherwise. * A 24 hours day is divided into 'slicesno' number of time slices. */ unsigned day_chk_busy_slices(struct date day, int slicesno, int *slices) { llist_item_t *i; int slicelen; const long date = date2sec(day, 0, 0); slicelen = DAYINSEC / slicesno; #define SLICENUM(tsec) ((tsec) / slicelen % slicesno) LLIST_TS_LOCK(&recur_alist_p); LLIST_TS_FIND_FOREACH(&recur_alist_p, (long *)&date, recur_apoint_inday, i) { struct apoint *rapt = LLIST_TS_GET_DATA(i); long start = get_item_time(rapt->start); long end = get_item_time(rapt->start + rapt->dur); if (rapt->start < date) start = 0; if (rapt->start + rapt->dur >= date + DAYINSEC) end = DAYINSEC - 1; if (!fill_slices(slices, slicesno, SLICENUM(start), SLICENUM(end))) { LLIST_TS_UNLOCK(&recur_alist_p); return 0; } } LLIST_TS_UNLOCK(&recur_alist_p); LLIST_TS_LOCK(&alist_p); LLIST_TS_FIND_FOREACH(&alist_p, (long *)&date, apoint_inday, i) { struct apoint *apt = LLIST_TS_GET_DATA(i); long start = get_item_time(apt->start); long end = get_item_time(apt->start + apt->dur); if (apt->start >= date + DAYINSEC) break; if (apt->start < date) start = 0; if (apt->start + apt->dur >= date + DAYINSEC) end = DAYINSEC - 1; if (!fill_slices(slices, slicesno, SLICENUM(start), SLICENUM(end))) { LLIST_TS_UNLOCK(&alist_p); return 0; } } LLIST_TS_UNLOCK(&alist_p); #undef SLICENUM return 1; } /* Cut an item so it can be pasted somewhere else later. */ struct day_item *day_cut_item(long date, int item_number) { struct day_item *p = day_get_item(item_number); switch (p->type) { case EVNT: event_delete(p->item.ev); break; case RECUR_EVNT: recur_event_erase(p->item.rev); break; case APPT: apoint_delete(p->item.apt); break; case RECUR_APPT: recur_apoint_erase(p->item.rapt); break; default: EXIT(_("unknwon type")); /* NOTREACHED */ } return p; } /* Paste a previously cut item. */ int day_paste_item(struct day_item *p, long date) { switch (p->type) { case 0: return 0; case EVNT: event_paste_item(p->item.ev, date); break; case RECUR_EVNT: recur_event_paste_item(p->item.rev, date); break; case APPT: apoint_paste_item(p->item.apt, date); break; case RECUR_APPT: recur_apoint_paste_item(p->item.rapt, date); break; default: EXIT(_("unknwon type")); /* NOTREACHED */ } return p->type; } /* Returns a structure containing the selected item. */ struct day_item *day_get_item(int item_number) { return LLIST_GET_DATA(LLIST_NTH(&day_items, item_number - 1)); } /* Attach a note to an appointment or event. */ void day_edit_note(struct day_item *p, const char *editor) { char *note; note = day_item_get_note(p); edit_note(¬e, editor); switch (p->type) { case RECUR_EVNT: p->item.rev->note = note; break; case EVNT: p->item.ev->note = note; break; case RECUR_APPT: p->item.rapt->note = note; break; case APPT: p->item.apt->note = note; break; } } /* View a note previously attached to an appointment or event */ void day_view_note(struct day_item *p, const char *pager) { view_note(day_item_get_note(p), pager); } /* Switch notification state for an item. */ void day_item_switch_notify(struct day_item *p) { switch (p->type) { case RECUR_APPT: recur_apoint_switch_notify(p->item.rapt); break; case APPT: apoint_switch_notify(p->item.apt); break; } } calcurse-3.1.4/src/calcurse.c0000644000175000001440000004316312105444350012776 00000000000000/* * Calcurse - text-based organizer * * Copyright (c) 2004-2013 calcurse Development Team * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * - Redistributions of source code must retain the above * copyright notice, this list of conditions and the * following disclaimer. * * - Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the * following disclaimer in the documentation and/or other * materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * Send your feedback or comments to : misc@calcurse.org * Calcurse home page : http://calcurse.org * */ #include #include "calcurse.h" #define HANDLE_KEY(key, fn) case key: fn(); break; struct day_items_nb inday; int count, reg; /* * Store the events and appointments for the selected day and reset the * appointment highlight pointer if a new day was selected. */ static struct day_items_nb do_storage(int day_changed) { struct day_items_nb inday = *day_process_storage(calendar_get_slctd_day(), day_changed, &inday); if (day_changed) { if ((inday.nb_events + inday.nb_apoints) > 0) apoint_hilt_set(1); else apoint_hilt_set(0); } return inday; } static inline void key_generic_change_view(void) { wins_reset_status_page(); wins_slctd_next(); /* Select the event to highlight. */ switch (wins_slctd()) { case TOD: if ((todo_hilt() == 0) && (todo_nb() > 0)) todo_hilt_set(1); break; case APP: if ((apoint_hilt() == 0) && ((inday.nb_events + inday.nb_apoints) > 0)) apoint_hilt_set(1); break; default: break; } wins_update(FLAG_ALL); } static inline void key_generic_other_cmd(void) { wins_other_status_page(wins_slctd()); wins_update(FLAG_STA); } static inline void key_generic_goto(void) { wins_erase_status_bar(); calendar_set_current_date(); calendar_change_day(conf.input_datefmt); inday = do_storage(1); wins_update(FLAG_CAL | FLAG_APP | FLAG_STA); } static inline void key_generic_goto_today(void) { wins_erase_status_bar(); calendar_set_current_date(); calendar_goto_today(); inday = do_storage(1); wins_update(FLAG_CAL | FLAG_APP | FLAG_STA); } static inline void key_view_item(void) { if ((wins_slctd() == APP) && (apoint_hilt() != 0)) day_popup_item(day_get_item(apoint_hilt())); else if ((wins_slctd() == TOD) && (todo_hilt() != 0)) item_in_popup(NULL, NULL, todo_saved_mesg(), _("To do :")); wins_update(FLAG_ALL); } static inline void key_generic_config_menu(void) { wins_erase_status_bar(); custom_config_main(); inday = do_storage(0); wins_update(FLAG_ALL); } static inline void key_generic_add_appt(void) { interact_day_item_add(); inday = do_storage(1); wins_update(FLAG_CAL | FLAG_APP | FLAG_STA); } static inline void key_generic_add_todo(void) { interact_todo_add(); if (todo_hilt() == 0 && todo_nb() == 1) todo_hilt_increase(1); wins_update(FLAG_TOD | FLAG_STA); } static inline void key_add_item(void) { switch (wins_slctd()) { case APP: interact_day_item_add(); inday = do_storage(0); wins_update(FLAG_CAL | FLAG_APP | FLAG_STA); break; case TOD: interact_todo_add(); if (todo_hilt() == 0 && todo_nb() == 1) todo_hilt_increase(1); wins_update(FLAG_TOD | FLAG_STA); break; default: break; } } static inline void key_edit_item(void) { if (wins_slctd() == APP && apoint_hilt() != 0) { interact_day_item_edit(); inday = do_storage(0); wins_update(FLAG_CAL | FLAG_APP | FLAG_STA); } else if (wins_slctd() == TOD && todo_hilt() != 0) { interact_todo_edit(); wins_update(FLAG_TOD | FLAG_STA); } } static inline void key_del_item(void) { if (wins_slctd() == APP && apoint_hilt() != 0) { interact_day_item_delete(&inday.nb_events, &inday.nb_apoints, reg); inday = do_storage(0); wins_update(FLAG_CAL | FLAG_APP | FLAG_STA); } else if (wins_slctd() == TOD && todo_hilt() != 0) { interact_todo_delete(); wins_update(FLAG_TOD | FLAG_STA); } } static inline void key_generic_copy(void) { if (wins_slctd() == APP && apoint_hilt() != 0) { interact_day_item_copy(&inday.nb_events, &inday.nb_apoints, reg); inday = do_storage(0); wins_update(FLAG_CAL | FLAG_APP); } } static inline void key_generic_paste(void) { if (wins_slctd() == APP) { interact_day_item_paste(&inday.nb_events, &inday.nb_apoints, reg); inday = do_storage(0); wins_update(FLAG_CAL | FLAG_APP); } } static inline void key_repeat_item(void) { if (wins_slctd() == APP && apoint_hilt() != 0) interact_day_item_repeat(); inday = do_storage(0); wins_update(FLAG_CAL | FLAG_APP | FLAG_STA); } static inline void key_flag_item(void) { if (wins_slctd() == APP && apoint_hilt() != 0) { day_item_switch_notify(day_get_item(apoint_hilt())); inday = do_storage(0); wins_update(FLAG_APP); } else if (wins_slctd() == TOD && todo_hilt() != 0) { todo_flag(todo_get_item(todo_hilt())); wins_update(FLAG_TOD); } } static inline void key_pipe_item(void) { if (wins_slctd() == APP && apoint_hilt() != 0) interact_day_item_pipe(); else if (wins_slctd() == TOD && todo_hilt() != 0) interact_todo_pipe(); wins_update(FLAG_ALL); } static inline void change_priority(int diff) { if (wins_slctd() == TOD && todo_hilt() != 0) { todo_chg_priority(todo_get_item(todo_hilt()), diff); if (todo_hilt_pos() < 0) todo_set_first(todo_hilt()); else if (todo_hilt_pos() >= win[TOD].h - 4) todo_set_first(todo_hilt() - win[TOD].h + 5); wins_update(FLAG_TOD); } } static inline void key_raise_priority(void) { change_priority(1); } static inline void key_lower_priority(void) { change_priority(-1); } static inline void key_edit_note(void) { if (wins_slctd() == APP && apoint_hilt() != 0) { day_edit_note(day_get_item(apoint_hilt()), conf.editor); inday = do_storage(0); } else if (wins_slctd() == TOD && todo_hilt() != 0) todo_edit_note(todo_get_item(todo_hilt()), conf.editor); wins_update(FLAG_ALL); } static inline void key_view_note(void) { if (wins_slctd() == APP && apoint_hilt() != 0) day_view_note(day_get_item(apoint_hilt()), conf.pager); else if (wins_slctd() == TOD && todo_hilt() != 0) todo_view_note(todo_get_item(todo_hilt()), conf.pager); wins_update(FLAG_ALL); } static inline void key_generic_help(void) { wins_status_bar(); help_screen(); wins_update(FLAG_ALL); } static inline void key_generic_save(void) { io_save_cal(IO_SAVE_DISPLAY_BAR); wins_update(FLAG_STA); } static inline void key_generic_import(void) { wins_erase_status_bar(); io_import_data(IO_IMPORT_ICAL, NULL); calendar_monthly_view_cache_set_invalid(); inday = do_storage(0); wins_update(FLAG_ALL); } static inline void key_generic_export() { const char *export_msg = _("Export to (i)cal or (p)cal format?"); const char *export_choices = _("[ip]"); const int nb_export_choices = 2; wins_erase_status_bar(); switch (status_ask_choice(export_msg, export_choices, nb_export_choices)) { case 1: io_export_data(IO_EXPORT_ICAL); break; case 2: io_export_data(IO_EXPORT_PCAL); break; default: /* User escaped */ break; } inday = do_storage(0); wins_update(FLAG_ALL); } static inline void key_generic_prev_day(void) { calendar_move(DAY_PREV, count); inday = do_storage(1); wins_update(FLAG_CAL | FLAG_APP); } static inline void key_move_left(void) { if (wins_slctd() == CAL) key_generic_prev_day(); } static inline void key_generic_next_day(void) { calendar_move(DAY_NEXT, count); inday = do_storage(1); wins_update(FLAG_CAL | FLAG_APP); } static inline void key_move_right(void) { if (wins_slctd() == CAL) key_generic_next_day(); } static inline void key_generic_prev_week(void) { calendar_move(WEEK_PREV, count); inday = do_storage(1); wins_update(FLAG_CAL | FLAG_APP); } static inline void key_move_up(void) { if (wins_slctd() == CAL) { key_generic_prev_week(); } else if (wins_slctd() == APP) { if (count >= apoint_hilt()) count = apoint_hilt() - 1; apoint_hilt_decrease(count); apoint_scroll_pad_up(inday.nb_events); wins_update(FLAG_APP); } else if (wins_slctd() == TOD) { if (count >= todo_hilt()) count = todo_hilt() - 1; todo_hilt_decrease(count); if (todo_hilt_pos() < 0) todo_first_increase(todo_hilt_pos()); wins_update(FLAG_TOD); } } static inline void key_generic_next_week(void) { calendar_move(WEEK_NEXT, count); inday = do_storage(1); wins_update(FLAG_CAL | FLAG_APP); } static inline void key_move_down(void) { if (wins_slctd() == CAL) { key_generic_next_week(); } else if (wins_slctd() == APP) { if (count > inday.nb_events + inday.nb_apoints - apoint_hilt()) count = inday.nb_events + inday.nb_apoints - apoint_hilt(); apoint_hilt_increase(count); apoint_scroll_pad_down(inday.nb_events, win[APP].h); wins_update(FLAG_APP); } else if (wins_slctd() == TOD) { if (count > todo_nb() - todo_hilt()) count = todo_nb() - todo_hilt(); todo_hilt_increase(count); if (todo_hilt_pos() >= win[TOD].h - 4) todo_first_increase(todo_hilt_pos() - win[TOD].h + 5); wins_update(FLAG_TOD); } } static inline void key_generic_prev_month(void) { calendar_move(MONTH_PREV, count); inday = do_storage(1); wins_update(FLAG_CAL | FLAG_APP); } static inline void key_generic_next_month(void) { calendar_move(MONTH_NEXT, count); inday = do_storage(1); wins_update(FLAG_CAL | FLAG_APP); } static inline void key_generic_prev_year(void) { calendar_move(YEAR_PREV, count); inday = do_storage(1); wins_update(FLAG_CAL | FLAG_APP); } static inline void key_generic_next_year(void) { calendar_move(YEAR_NEXT, count); inday = do_storage(1); wins_update(FLAG_CAL | FLAG_APP); } static inline void key_start_of_week(void) { if (wins_slctd() == CAL) { calendar_move(WEEK_START, count); inday = do_storage(1); wins_update(FLAG_CAL | FLAG_APP); } } static inline void key_end_of_week(void) { if (wins_slctd() == CAL) { calendar_move(WEEK_END, count); inday = do_storage(1); wins_update(FLAG_CAL | FLAG_APP); } } static inline void key_generic_scroll_up(void) { if (wins_slctd() == CAL) { calendar_view_prev(); wins_update(FLAG_CAL | FLAG_APP); } } static inline void key_generic_scroll_down(void) { if (wins_slctd() == CAL) { calendar_view_next(); wins_update(FLAG_CAL | FLAG_APP); } } static inline void key_generic_quit(void) { if (conf.auto_save) io_save_cal(IO_SAVE_DISPLAY_BAR); if (conf.auto_gc) note_gc(); if (conf.confirm_quit) { if (status_ask_bool(_("Do you really want to quit ?")) == 1) exit_calcurse(EXIT_SUCCESS); else { wins_erase_status_bar(); wins_update(FLAG_STA); } } else exit_calcurse(EXIT_SUCCESS); } /* * Calcurse is a text-based personal organizer which helps keeping track * of events and everyday tasks. It contains a calendar, a 'todo' list, * and puts your appointments in order. The user interface is configurable, * and one can choose between different color schemes and layouts. * All of the commands are documented within an online help system. */ int main(int argc, char **argv) { int no_data_file = 1; #if ENABLE_NLS setlocale(LC_ALL, ""); bindtextdomain(PACKAGE, LOCALEDIR); textdomain(PACKAGE); #endif /* ENABLE_NLS */ /* Thread-safe data structure init */ apoint_llist_init(); recur_apoint_llist_init(); /* Initialize non-thread-safe data structures. */ event_llist_init(); todo_init_list(); /* * Begin by parsing and handling command line arguments. * The data path is also initialized here. */ if (parse_args(argc, argv)) { /* Non-interactive mode. */ exit_calcurse(EXIT_SUCCESS); } else { no_data_file = io_check_data_files(); dmon_stop(); io_set_lock(); } /* Begin of interactive mode with ncurses interface. */ sigs_init(); /* signal handling init */ initscr(); /* start the curses mode */ cbreak(); /* control chars generate a signal */ noecho(); /* controls echoing of typed chars */ curs_set(0); /* make cursor invisible */ calendar_set_current_date(); notify_init_vars(); wins_get_config(); /* Check if terminal supports color. */ if (has_colors()) { colorize = 1; background = COLOR_BLACK; foreground = COLOR_WHITE; start_color(); #ifdef NCURSES_VERSION if (use_default_colors() != ERR) { background = -1; foreground = -1; } #endif /* NCURSES_VERSION */ /* Color assignment */ init_pair(COLR_RED, COLOR_RED, background); init_pair(COLR_GREEN, COLOR_GREEN, background); init_pair(COLR_YELLOW, COLOR_YELLOW, background); init_pair(COLR_BLUE, COLOR_BLUE, background); init_pair(COLR_MAGENTA, COLOR_MAGENTA, background); init_pair(COLR_CYAN, COLOR_CYAN, background); init_pair(COLR_DEFAULT, foreground, background); init_pair(COLR_HIGH, COLOR_BLACK, COLOR_GREEN); init_pair(COLR_CUSTOM, COLOR_RED, background); } else { colorize = 0; background = COLOR_BLACK; } vars_init(); wins_init(); /* Default to the calendar panel -- this is overridden later. */ wins_slctd_set(CAL); notify_init_bar(); wins_reset_status_page(); /* * Read the data from files : first the user * configuration (the display is then updated), and then * the todo list, appointments and events. */ config_load(); wins_erase_status_bar(); io_load_keys(conf.pager); io_load_todo(); io_load_app(); wins_reinit(); /* * Refresh the hidden key handler window here to prevent wgetch() from * implicitly calling wrefresh() later (causing ncurses race conditions). */ wins_wrefresh(win[KEY].p); if (conf.system_dialogs) { wins_update(FLAG_ALL); io_startup_screen(no_data_file); } inday = *day_process_storage(0, 0, &inday); wins_slctd_set(conf.default_panel); wins_update(FLAG_ALL); /* Start miscellaneous threads. */ if (notify_bar()) notify_start_main_thread(); calendar_start_date_thread(); if (conf.periodic_save > 0) io_start_psave_thread(); /* User input */ for (;;) { int key; if (resize) { resize = 0; wins_reset(); } key = keys_getch(win[KEY].p, &count, ®); switch (key) { case KEY_GENERIC_REDRAW: resize = 1; break; HANDLE_KEY(KEY_GENERIC_CHANGE_VIEW, key_generic_change_view); HANDLE_KEY(KEY_GENERIC_OTHER_CMD, key_generic_other_cmd); HANDLE_KEY(KEY_GENERIC_GOTO, key_generic_goto); HANDLE_KEY(KEY_GENERIC_GOTO_TODAY, key_generic_goto_today); HANDLE_KEY(KEY_VIEW_ITEM, key_view_item); HANDLE_KEY(KEY_GENERIC_CONFIG_MENU, key_generic_config_menu); HANDLE_KEY(KEY_GENERIC_ADD_APPT, key_generic_add_appt); HANDLE_KEY(KEY_GENERIC_ADD_TODO, key_generic_add_todo); HANDLE_KEY(KEY_ADD_ITEM, key_add_item); HANDLE_KEY(KEY_EDIT_ITEM, key_edit_item); HANDLE_KEY(KEY_DEL_ITEM, key_del_item); HANDLE_KEY(KEY_GENERIC_COPY, key_generic_copy); HANDLE_KEY(KEY_GENERIC_PASTE, key_generic_paste); HANDLE_KEY(KEY_REPEAT_ITEM, key_repeat_item); HANDLE_KEY(KEY_FLAG_ITEM, key_flag_item); HANDLE_KEY(KEY_PIPE_ITEM, key_pipe_item); HANDLE_KEY(KEY_RAISE_PRIORITY, key_raise_priority); HANDLE_KEY(KEY_LOWER_PRIORITY, key_lower_priority); HANDLE_KEY(KEY_EDIT_NOTE, key_edit_note); HANDLE_KEY(KEY_VIEW_NOTE, key_view_note); HANDLE_KEY(KEY_GENERIC_HELP, key_generic_help); HANDLE_KEY(KEY_GENERIC_SAVE, key_generic_save); HANDLE_KEY(KEY_GENERIC_IMPORT, key_generic_import); HANDLE_KEY(KEY_GENERIC_EXPORT, key_generic_export); HANDLE_KEY(KEY_GENERIC_PREV_DAY, key_generic_prev_day); HANDLE_KEY(KEY_MOVE_LEFT, key_move_left); HANDLE_KEY(KEY_GENERIC_NEXT_DAY, key_generic_next_day); HANDLE_KEY(KEY_MOVE_RIGHT, key_move_right); HANDLE_KEY(KEY_GENERIC_PREV_WEEK, key_generic_prev_week); HANDLE_KEY(KEY_MOVE_UP, key_move_up); HANDLE_KEY(KEY_GENERIC_NEXT_WEEK, key_generic_next_week); HANDLE_KEY(KEY_MOVE_DOWN, key_move_down); HANDLE_KEY(KEY_GENERIC_PREV_MONTH, key_generic_prev_month); HANDLE_KEY(KEY_GENERIC_NEXT_MONTH, key_generic_next_month); HANDLE_KEY(KEY_GENERIC_PREV_YEAR, key_generic_prev_year); HANDLE_KEY(KEY_GENERIC_NEXT_YEAR, key_generic_next_year); HANDLE_KEY(KEY_START_OF_WEEK, key_start_of_week); HANDLE_KEY(KEY_END_OF_WEEK, key_end_of_week); HANDLE_KEY(KEY_GENERIC_SCROLL_UP, key_generic_scroll_up); HANDLE_KEY(KEY_GENERIC_SCROLL_DOWN, key_generic_scroll_down); HANDLE_KEY(KEY_GENERIC_QUIT, key_generic_quit); case KEY_RESIZE: case ERR: /* Do not reset the count parameter on resize or error. */ continue; default: break; } count = 0; } } calcurse-3.1.4/src/htable.h0000644000175000001440000006270312105444321012440 00000000000000/* * Copyright (c) 2004-2013 calcurse Development Team * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * - Redistributions of source code must retain the above * copyright notice, this list of conditions and the * following disclaimer. * * - Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the * following disclaimer in the documentation and/or other * materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef HTABLE_H #define HTABLE_H #include #include /* * This file defines data structures for hash tables. * * Hash tables are ideal for applications with datasets needing lots of adding, * searching or removal, as those are normally constant-time operations. * The primary operation it supports efficiently is a lookup: given a key (e.g. * a person's name), find the corresponding value (e.g. that person's telephone * number). It works by transforming the key using a hash function into a hash, * a number that is used as an index in an array to locate the desired location * ("bucket") where the values should be. * * Hash tables support the efficient insertion of new entries, in expected O(1) * time. The time spent in searching depends on the hash function and the load * of the hash table; both insertion and search approach O(1) time with well * chosen values and hashes. * * The collision resolution technique used here is direct chaining, implemented * using singly linked lists (the worst-case time is O(n)). * * This was chosen because performance degradation is linear as the table * fills, so there is almost no need to resize table * (for example, a chaining hash table containing twice its recommended * capacity of data would only be about twice as slow on average as the same * table at its recommended capacity). */ #define HTABLE_HEAD(name, size, type) \ struct name { \ uint32_t noitems; /* Number of items stored in hash table. */ \ uint32_t nosingle; /* Number of items alone in their bucket. */ \ uint32_t nofreebkts; /* Number of free buckets. */ \ struct type *bkts[size]; /* Pointers to user-defined data structures. */ \ } #define HTABLE_ENTRY(type) \ struct type *next /* To build the bucket chain list. */ #define HTABLE_SIZE(head) \ (sizeof (*(head)->bkts) ? sizeof ((head)->bkts) / sizeof (*(head)->bkts) : 0) #define HTABLE_COUNT(head) \ ((head)->noitems ? (head)->noitems : 0) #define HTABLE_EMPTY(head) \ (HTABLE_COUNT((head)) == 0 ? 1 : 0) #define HTABLE_COLLS(head) \ ((head)->noitems ? 100.0 - 100 * (head)->nosingle / (head)->noitems : 0) #define HTABLE_LOAD(head) \ (HTABLE_SIZE((head)) ? \ 100.0 - 100.0 * (head)->nofreebkts / HTABLE_SIZE((head)) : 0) #define HTABLE_INITIALIZER(head) \ { 0, /* noitems */ \ 0, /* nosingle */ \ HTABLE_SIZE((head)) /* nofreebkts */ \ } #define HTABLE_INIT(head) do { \ bzero ((head), sizeof (*(head))); \ (head)->nofreebkts = HTABLE_SIZE((head)); \ } while (0) /* * Generate prototypes. */ #define HTABLE_PROTOTYPE(name, type) \ struct type *name##_HTABLE_INSERT(struct name *, struct type *); \ struct type *name##_HTABLE_REMOVE(struct name *, struct type *); \ struct type *name##_HTABLE_LOOKUP(struct name *, struct type *); \ uint32_t name##_HTABLE_FIND_BKT(struct name *, struct type *); \ int name##_HTABLE_CHAIN_LEN(struct name *, uint32_t); \ struct type *name##_HTABLE_FIRST_FROM(struct name *, int); \ struct type *name##_HTABLE_NEXT(struct name *, struct type *); /* * Generate function bodies. */ #define HTABLE_GENERATE(name, type, key, cmp) \ uint32_t \ name##_HTABLE_FIND_BKT(struct name *head, struct type *elm) \ { \ uint32_t __bkt; \ const char *__key; \ int __len; \ \ (key) (elm, &__key, &__len); \ HTABLE_HASH(__key, __len, HTABLE_SIZE(head), __bkt); \ \ return __bkt; \ } \ \ int \ name##_HTABLE_CHAIN_LEN(struct name *head, uint32_t bkt) \ { \ struct type *__bktp; \ int __len; \ \ __len = 0; \ for (__bktp = (head)->bkts[(bkt)]; __bktp != NULL; __bktp = __bktp->next) \ __len++; \ \ return __len; \ } \ \ struct type * \ name##_HTABLE_INSERT(struct name *head, struct type *elm) \ { \ struct type *__bktp, **__bktpp; \ uint32_t __bkt, __pos; \ \ __pos = 0; \ __bkt = name##_HTABLE_FIND_BKT(head, elm); \ __bktpp = &head->bkts[__bkt]; \ while ((__bktp = *__bktpp)) \ { \ if (!(cmp)(elm, __bktp)) \ return NULL; \ else \ { \ __pos++; \ __bktpp = &__bktp->next; \ } \ } \ __bktp = elm; \ __bktp->next = NULL; \ *__bktpp = __bktp; \ head->noitems++; \ switch (__pos) \ { \ case 0: \ head->nosingle++; \ head->nofreebkts--; \ break; \ case 1: \ head->nosingle--; \ break; \ default: \ break; \ } \ \ return __bktp; \ } \ \ struct type * \ name##_HTABLE_REMOVE(struct name *head, struct type *elm) \ { \ struct type *__bktp, **__bktpp; \ uint32_t __bkt, __pos; \ \ __pos = 0; \ __bkt = name##_HTABLE_FIND_BKT(head, elm); \ __bktpp = &head->bkts[__bkt]; \ while ((__bktp = *__bktpp)) \ { \ if (!(cmp)(elm, __bktp)) \ { \ *__bktpp = __bktp->next; \ elm = __bktp; \ head->noitems--; \ if (__pos <= 1) /* Need to scan list to know if we have */ \ { /* a free bucket or a single item. */ \ int __len; \ \ __len = name##_HTABLE_CHAIN_LEN(head, __bkt); \ switch (__len) \ { \ case 0: \ head->nofreebkts++; \ head->nosingle--; \ break; \ case 1: \ head->nosingle++; \ break; \ } \ } \ return elm; \ } \ __pos++; \ __bktpp = &__bktp->next; \ } \ return NULL; \ } \ \ struct type * \ name##_HTABLE_LOOKUP(struct name *head, struct type *elm) \ { \ struct type *__bktp, **__bktpp; \ uint32_t __bkt; \ \ __bkt = name##_HTABLE_FIND_BKT(head, elm); \ __bktpp = &head->bkts[__bkt]; \ while ((__bktp = *__bktpp)) \ { \ if (!(cmp)(elm, __bktp)) \ return __bktp; \ else \ __bktpp = &__bktp->next; \ } \ \ return NULL; \ } \ \ struct type * \ name##_HTABLE_FIRST_FROM(struct name *head, int bkt) \ { \ struct type *__bktp; \ \ while (bkt < HTABLE_SIZE(head)) \ { \ if ((__bktp = head->bkts[bkt])) \ return __bktp; \ else \ bkt++; \ } \ \ return NULL; \ } \ \ struct type * \ name##_HTABLE_NEXT(struct name *head, struct type *elm) \ { \ struct type *__elmp, *__bktp, **__bktpp; \ uint32_t __bkt; \ \ __elmp = NULL; \ __bkt = name##_HTABLE_FIND_BKT(head, elm); \ __bktpp = &head->bkts[__bkt]; \ while ((__bktp = *__bktpp)) \ { \ if (!(cmp)(elm, __bktp)) \ { \ __elmp = __bktp; \ break; \ } \ else \ __bktpp = &__bktp->next; \ } \ \ if (!__elmp) \ return NULL; \ else if (__elmp->next) \ return __elmp->next; \ else \ return name##_HTABLE_FIRST_FROM(head, ++__bkt); \ } #define FIRST_BKT 0 #define HTABLE_INSERT(name, x, y) name##_HTABLE_INSERT(x, y) #define HTABLE_REMOVE(name, x, y) name##_HTABLE_REMOVE(x, y) #define HTABLE_LOOKUP(name, x, y) name##_HTABLE_LOOKUP(x, y) #define HTABLE_FIRST_FROM(name, x, y) (HTABLE_EMPTY(x) ? NULL \ : name##_HTABLE_FIRST_FROM(x, y)) #define HTABLE_FIRST(name, x) HTABLE_FIRST_FROM(name, x, FIRST_BKT) #define HTABLE_NEXT(name, x, y) (HTABLE_EMPTY(x) ? NULL \ : name##_HTABLE_NEXT(x, y)) #define HTABLE_FOREACH(x, name, head) \ for ((x) = HTABLE_FIRST(name, head); \ (x) != NULL; \ (x) = HTABLE_NEXT(name, head, x)) /* * Hash functions. */ #ifdef HASH_FUNCTION #define HTABLE_HASH HASH_FUNCTION #else #define HTABLE_HASH HASH_JEN #endif #define HASH_JEN_MIX(a, b, c) do { \ a -= b; a -= c; a ^= (c >> 13); \ b -= c; b -= a; b ^= (a << 8); \ c -= a; c -= b; c ^= (b >> 13); \ a -= b; a -= c; a ^= (c >> 12); \ b -= c; b -= a; b ^= (a << 16); \ c -= a; c -= b; c ^= (b >> 5); \ a -= b; a -= c; a ^= (c >> 3); \ b -= c; b -= a; b ^= (a << 10); \ c -= a; c -= b; c ^= (b >> 15); \ } while (0) #define HASH_JEN(key, keylen, num_bkts, bkt) do { \ register uint32_t i, j, k, hash; \ \ hash = 0xfeedbeef; \ i = j = 0x9e3779b9; \ k = keylen; \ while (k >= 12) \ { \ i += (key[0] + ((unsigned)key[1] << 8) \ + ((unsigned)key[2] << 16) \ + ((unsigned)key[3] << 24)); \ j += (key[4] + ((unsigned)key[5] << 8) \ + ((unsigned)key[6] << 16) \ + ((unsigned)key[7] << 24 )); \ hash += (key[8] + ((unsigned)key[9] << 8) \ + ((unsigned)key[10] << 16) \ + ((unsigned)key[11] << 24)); \ \ HASH_JEN_MIX (i, j, hash); \ \ key += 12; \ k -= 12; \ } \ hash += keylen; \ switch (k) \ { \ case 11: \ hash += ((unsigned)key[10] << 24); \ case 10: \ hash += ((unsigned)key[9] << 16); \ case 9: \ hash += ((unsigned)key[8] << 8); \ case 8: \ j += ((unsigned)key[7] << 24); \ case 7: \ j += ((unsigned)key[6] << 16); \ case 6: \ j += ((unsigned)key[5] << 8); \ case 5: \ j += key[4]; \ case 4: \ i += ((unsigned)key[3] << 24); \ case 3: \ i += ((unsigned)key[2] << 16); \ case 2: \ i += ((unsigned)key[1] << 8); \ case 1: \ i += key[0]; \ } \ HASH_JEN_MIX (i, j, hash); \ bkt = hash % (num_bkts); \ } while (0) #define HASH_OAT(key, keylen, num_bkts, bkt) do { \ register uint32_t hash; \ int i; \ \ hash = 0; \ for (i = 0; i < keylen; i++) \ { \ hash += key[i]; \ hash += (hash << 10); \ hash ^= (hash >> 6); \ } \ hash += (hash << 3); \ hash ^= (hash >> 11); \ hash += (hash << 15); \ bkt = hash % (num_bkts); \ } while (0) #endif /* !HTABLE_H */ calcurse-3.1.4/src/args.c0000644000175000001440000005346712105444321012137 00000000000000/* * Calcurse - text-based organizer * * Copyright (c) 2004-2013 calcurse Development Team * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * - Redistributions of source code must retain the above * copyright notice, this list of conditions and the * following disclaimer. * * - Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the * following disclaimer in the documentation and/or other * materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * Send your feedback or comments to : misc@calcurse.org * Calcurse home page : http://calcurse.org * */ #include #include #include #include #include #include #include #include "calcurse.h" /* Long options */ enum { OPT_FMT_APT = 1000, OPT_FMT_RAPT, OPT_FMT_EV, OPT_FMT_REV, OPT_FMT_TODO, OPT_READ_ONLY }; /* * Print Calcurse usage and exit. */ static void usage(void) { const char *arg_usage = _("Usage: calcurse [-g|-h|-v] [-an] [-t[num]] [-i] [-x[format]]\n" " [-d |] [-s[date]] [-r[range]]\n" " [-c] [-D] [-S] [--status]\n" " [--read-only]\n"); fputs(arg_usage, stdout); } static void usage_try(void) { const char *arg_usage_try = _("Try 'calcurse -h' for more information.\n"); fputs(arg_usage_try, stdout); } /* * Print Calcurse version with a short copyright text and exit. */ static void version_arg(void) { const char *vtext = _("\nCopyright (c) 2004-2013 calcurse Development Team.\n" "This is free software; see the source for copying conditions.\n"); fprintf(stdout, _("Calcurse %s - text-based organizer\n"), VERSION); fputs(vtext, stdout); } static void more_info(void) { fputs(_("\nFor more information, type '?' from within Calcurse, " "or read the manpage.\n"), stdout); fputs(_("Mail feature requests and suggestions to .\n"), stdout); fputs(_("Mail bug reports to .\n"), stdout); } /* * Print the command line options and exit. */ static void help_arg(void) { const char *htext = _("\nMiscellaneous:\n" " -h, --help\n" " print this help and exit.\n" "\n -v, --version\n" " print calcurse version and exit.\n" "\n --status\n" " display the status of running instances of calcurse.\n" "\n --read-only\n" " Don't save configuration nor appointments/todos. Use with care.\n" "\nFiles:\n" " -c , --calendar \n" " specify the calendar to use (has precedence over '-D').\n" "\n -D , --directory \n" " specify the data directory to use.\n" "\tIf not specified, the default directory is ~/.calcurse\n" "\nNon-interactive:\n" " -a, --appointment\n" " print events and appointments for current day and exit.\n" "\n -d , --day \n" " print events and appointments for or upcoming days and" "\n\texit. To specify both a starting date and a range, use the\n" "\t'--startday' and the '--range' option.\n" "\n -g, --gc\n" " run the garbage collector for note files and exit. \n" "\n -i , --import \n" " import the icalendar data contained in . \n" "\n -n, --next\n" " print next appointment within upcoming 24 hours " "and exit. Also given\n\tis the remaining time before this " "next appointment.\n" "\n -r[num], --range[=num]\n" " print events and appointments for the [num] number of days" "\n\tand exit. If no [num] is given, a range of 1 day is considered.\n" "\n -s[date], --startday[=date]\n" " print events and appointments from [date] and exit.\n" "\tIf no [date] is given, the current day is considered.\n" "\n -S, --search=\n" " search for the given regular expression within events, appointments,\n" "\tand todos description.\n" "\n -t[num], --todo[=num]\n" " print todo list and exit. If the optional number [num] is given,\n" "\tthen only todos having a priority equal to [num] will be returned.\n" "\tThe priority number must be between 1 (highest) and 9 (lowest).\n" "\tIt is also possible to specify '0' for the priority, in which case\n" "\tonly completed tasks will be shown.\n" "\n -x[format], --export[=format]\n" " export user data to the specified format. Events, appointments and\n" "\ttodos are converted and echoed to stdout.\n" "\tTwo possible formats are available: 'ical' and 'pcal'.\n" "\tIf the optional argument format is not given, ical format is\n" "\tselected by default.\n" "\tnote: redirect standard output to export data to a file,\n" "\tby issuing a command such as: calcurse --export > calcurse.dat\n"); fprintf(stdout, _("Calcurse %s - text-based organizer\n"), VERSION); usage(); fputs(htext, stdout); more_info(); } /* * Used to display the status of running instances of calcurse. * The displayed message will look like one of the following ones: * * calcurse is running (pid #) * calcurse is running in background (pid #) * calcurse is not running * * The status is obtained by looking at pid files in user data directory * (.calcurse.pid and .daemon.pid). */ static void status_arg(void) { int cpid, dpid; cpid = io_get_pid(path_cpid); dpid = io_get_pid(path_dpid); EXIT_IF(cpid && dpid, _("Error: both calcurse (pid: %d) and its daemon (pid: %d)\n" "seem to be running at the same time!\n" "Please check manually and restart calcurse.\n"), cpid, dpid); if (cpid) fprintf(stdout, _("calcurse is running (pid %d)\n"), cpid); else if (dpid) fprintf(stdout, _("calcurse is running in background (pid %d)\n"), dpid); else puts(_("calcurse is not running\n")); } /* * Print todo list and exit. If a priority number is given, then only todo * then only todo items that have this priority will be displayed. * If priority is < 0, all todos will be displayed. * If priority == 0, only completed tasks will be displayed. * If regex is not null, only the matching todos are printed. */ static void todo_arg(int priority, const char *format, regex_t * regex) { llist_item_t *i; int title = 1; const char *titlestr; const char *all_todos_title = _("to do:\n"); const char *completed_title = _("completed tasks:\n"); titlestr = priority == 0 ? completed_title : all_todos_title; #define DISPLAY_TITLE do { \ if (title) \ { \ fputs (titlestr, stdout); \ title = 0; \ } \ } while (0) LLIST_FOREACH(&todolist, i) { struct todo *todo = LLIST_TS_GET_DATA(i); if (regex && regexec(regex, todo->mesg, 0, 0, 0) != 0) continue; if (todo->id < 0) { /* completed task */ if (priority == 0) { DISPLAY_TITLE; print_todo(format, todo); } } else { if (priority < 0 || todo->id == priority) { DISPLAY_TITLE; print_todo(format, todo); } } } #undef DISPLAY_TITLE } /* Print the next appointment within the upcoming 24 hours. */ static void next_arg(void) { struct notify_app next_app; const long current_time = now(); int time_left, hours_left, min_left; next_app.time = current_time + DAYINSEC; next_app.got_app = 0; next_app.txt = NULL; next_app = *recur_apoint_check_next(&next_app, current_time, get_today()); next_app = *apoint_check_next(&next_app, current_time); if (next_app.got_app) { time_left = next_app.time - current_time; hours_left = (time_left / HOURINSEC); min_left = (time_left - hours_left * HOURINSEC) / MININSEC; fputs(_("next appointment:\n"), stdout); fprintf(stdout, " [%02d:%02d] %s\n", hours_left, min_left, next_app.txt); mem_free(next_app.txt); } } /* * Print the date on stdout. */ static void arg_print_date(long date) { char date_str[BUFSIZ]; struct tm lt; localtime_r((time_t *)&date, <); strftime(date_str, BUFSIZ, conf.output_datefmt, <); fputs(date_str, stdout); fputs(":\n", stdout); } /* * Print appointments for given day and exit. * If no day is given, the given date is used. * If there is also no date given, current date is considered. * If regex is not null, only the matching appointments or events are printed. */ static int app_arg(int add_line, struct date *day, long date, const char *fmt_apt, const char *fmt_rapt, const char *fmt_ev, const char *fmt_rev, regex_t *regex) { if (date == 0) date = get_sec_date(*day); int n = day_store_items(date, NULL, NULL, regex); if (n > 0) { if (add_line) fputs("\n", stdout); arg_print_date(date); day_write_stdout(date, fmt_apt, fmt_rapt, fmt_ev, fmt_rev); } return n; } /* * For a given date, print appointments for each day * in the chosen interval. app_found and add_line are used * to format the output correctly. */ static void display_app(struct tm *t, int numdays, int add_line, const char *fmt_apt, const char *fmt_rapt, const char *fmt_ev, const char *fmt_rev, regex_t * regex) { int i, app_found; struct date day; for (i = 0; i < numdays; i++) { day.dd = t->tm_mday; day.mm = t->tm_mon + 1; day.yyyy = t->tm_year + 1900; app_found = app_arg(add_line, &day, 0, fmt_apt, fmt_rapt, fmt_ev, fmt_rev, regex); if (app_found) add_line = 1; t->tm_mday++; mktime(t); } } /* * Print appointment for the given date or for the given n upcoming * days. */ static void date_arg(const char *ddate, int add_line, const char *fmt_apt, const char *fmt_rapt, const char *fmt_ev, const char *fmt_rev, regex_t * regex) { struct date day; static struct tm t; time_t timer; /* * Check (with the argument length) if a date or a number of days * was entered, and then call app_arg() to print appointments */ if (strlen(ddate) <= 4 && is_all_digit(ddate)) { /* * A number of days was entered. Get current date and print appointments * for each day in the chosen interval. app_found and add_line are used to * format the output correctly. */ timer = time(NULL); localtime_r(&timer, &t); display_app(&t, atoi(ddate), add_line, fmt_apt, fmt_rapt, fmt_ev, fmt_rev, regex); } else { /* A date was entered. */ if (parse_date(ddate, conf.input_datefmt, (int *)&day.yyyy, (int *)&day.mm, (int *)&day.dd, NULL)) { app_arg(add_line, &day, 0, fmt_apt, fmt_rapt, fmt_ev, fmt_rev, regex); } else { fputs(_("Argument to the '-d' flag is not valid\n"), stderr); fprintf(stdout, _("Possible argument format are: '%s' or 'n'\n"), DATEFMT_DESC(conf.input_datefmt)); more_info(); } } } /* * Print appointment from the given date 'startday' for the 'range' upcoming * days. * If no starday is given (NULL), today is considered * If no range is given (NULL), 1 day is considered * * Many thanks to Erik Saule for providing this function. */ static void date_arg_extended(const char *startday, const char *range, int add_line, const char *fmt_apt, const char *fmt_rapt, const char *fmt_ev, const char *fmt_rev, regex_t * regex) { int numdays = 1, error = 0; static struct tm t; time_t timer; /* * Check arguments and extract information */ if (range != NULL) { if (is_all_digit(range)) { numdays = atoi(range); } else { error = 1; } } timer = time(NULL); localtime_r(&timer, &t); if (startday != NULL) { if (parse_date(startday, conf.input_datefmt, (int *)&t.tm_year, (int *)&t.tm_mon, (int *)&t.tm_mday, NULL)) { t.tm_year -= 1900; t.tm_mon--; mktime(&t); } else { error = 1; } } if (!error) { display_app(&t, numdays, add_line, fmt_apt, fmt_rapt, fmt_ev, fmt_rev, regex); } else { fputs(_("Argument is not valid\n"), stderr); fprintf(stdout, _("Argument format for -s and --startday is: '%s'\n"), DATEFMT_DESC(conf.input_datefmt)); fputs(_("Argument format for -r and --range is: 'n'\n"), stdout); more_info(); } } /* * Parse the command-line arguments and call the appropriate * routines to handle those arguments. Also initialize the data paths. */ int parse_args(int argc, char **argv) { int ch, add_line = 0; int unknown_flag = 0; /* Command-line flags */ int aflag = 0; /* -a: print appointments for current day */ int dflag = 0; /* -d: print appointments for a specified days */ int hflag = 0; /* -h: print help text */ int gflag = 0; /* -g: run garbage collector */ int iflag = 0; /* -i: import data */ int nflag = 0; /* -n: print next appointment */ int rflag = 0; /* -r: specify the range of days to consider */ int sflag = 0; /* -s: specify the first day to consider */ int Sflag = 0; /* -S: specify a regex to search for */ int tflag = 0; /* -t: print todo list */ int vflag = 0; /* -v: print version number */ int xflag = 0; /* -x: export data */ /* Format strings */ const char *fmt_apt = " - %S -> %E\n\t%m\n"; const char *fmt_rapt = " - %S -> %E\n\t%m\n"; const char *fmt_ev = " * %m\n"; const char *fmt_rev = " * %m\n"; const char *fmt_todo = "%p. %m\n"; int tnum = 0, xfmt = 0, non_interactive = 0, multiple_flag = 0, load_data = 0; const char *ddate = "", *cfile = NULL, *range = NULL, *startday = NULL; const char *datadir = NULL, *ifile = NULL; regex_t reg, *preg = NULL; /* Long options only */ int statusflag = 0; /* --status: get the status of running instances */ enum { STATUS_OPT = CHAR_MAX + 1 }; static const char *optstr = "ghvnNax::t::d:c:r::s::S:D:i:"; struct option longopts[] = { {"appointment", no_argument, NULL, 'a'}, {"calendar", required_argument, NULL, 'c'}, {"day", required_argument, NULL, 'd'}, {"directory", required_argument, NULL, 'D'}, {"gc", no_argument, NULL, 'g'}, {"help", no_argument, NULL, 'h'}, {"import", required_argument, NULL, 'i'}, {"next", no_argument, NULL, 'n'}, {"note", no_argument, NULL, 'N'}, {"range", optional_argument, NULL, 'r'}, {"startday", optional_argument, NULL, 's'}, {"search", required_argument, NULL, 'S'}, {"status", no_argument, NULL, STATUS_OPT}, {"todo", optional_argument, NULL, 't'}, {"version", no_argument, NULL, 'v'}, {"export", optional_argument, NULL, 'x'}, {"format-apt", required_argument, NULL, OPT_FMT_APT}, {"format-recur-apt", required_argument, NULL, OPT_FMT_RAPT}, {"format-event", required_argument, NULL, OPT_FMT_EV}, {"format-recur-event", required_argument, NULL, OPT_FMT_REV}, {"format-todo", required_argument, NULL, OPT_FMT_TODO}, {"read-only", no_argument, NULL, OPT_READ_ONLY}, {NULL, no_argument, NULL, 0} }; while ((ch = getopt_long(argc, argv, optstr, longopts, NULL)) != -1) { switch (ch) { case STATUS_OPT: statusflag = 1; break; case 'a': aflag = 1; multiple_flag++; load_data++; break; case 'c': multiple_flag++; cfile = optarg; load_data++; break; case 'd': dflag = 1; multiple_flag++; load_data++; ddate = optarg; break; case 'D': datadir = optarg; break; case 'h': hflag = 1; break; case 'g': gflag = 1; break; case 'i': iflag = 1; multiple_flag++; load_data++; ifile = optarg; break; case 'n': nflag = 1; multiple_flag++; load_data++; break; case 'r': rflag = 1; multiple_flag++; load_data++; range = optarg; break; case 's': sflag = 1; multiple_flag++; load_data++; startday = optarg; break; case 'S': EXIT_IF(Sflag > 0, _("Can not handle more than one regular expression.")); Sflag = 1; if (regcomp(®, optarg, REG_EXTENDED)) EXIT(_("Could not compile regular expression.")); preg = ® break; case 't': tflag = 1; multiple_flag++; load_data++; add_line = 1; if (optarg != NULL) { tnum = atoi(optarg); if (tnum < 0 || tnum > 9) { usage(); usage_try(); return EXIT_FAILURE; } } else tnum = -1; break; case 'v': vflag = 1; break; case 'x': xflag = 1; multiple_flag++; load_data++; if (optarg != NULL) { if (strcmp(optarg, "ical") == 0) xfmt = IO_EXPORT_ICAL; else if (strcmp(optarg, "pcal") == 0) xfmt = IO_EXPORT_PCAL; else { fputs(_("Argument for '-x' should be either " "'ical' or 'pcal'\n"), stderr); usage(); usage_try(); return EXIT_FAILURE; } } else { xfmt = IO_EXPORT_ICAL; } break; case OPT_FMT_APT: fmt_apt = optarg; break; case OPT_FMT_RAPT: fmt_rapt = optarg; break; case OPT_FMT_EV: fmt_ev = optarg; break; case OPT_FMT_REV: fmt_rev = optarg; break; case OPT_FMT_TODO: fmt_todo = optarg; break; case OPT_READ_ONLY: read_only = 1; break; default: usage(); usage_try(); unknown_flag = 1; non_interactive = 1; /* NOTREACHED */ } } argc -= optind; if (argc >= 1) { usage(); usage_try(); return EXIT_FAILURE; /* Incorrect arguments */ } else if (Sflag && !(aflag || dflag || rflag || sflag || tflag)) { fputs(_("Option '-S' must be used with either '-d', '-r', '-s', " "'-a' or '-t'\n"), stderr); usage(); usage_try(); return EXIT_FAILURE; } else { if (unknown_flag) { non_interactive = 1; } else if (hflag) { help_arg(); non_interactive = 1; } else if (vflag) { version_arg(); non_interactive = 1; } else if (statusflag) { io_init(cfile, datadir); status_arg(); non_interactive = 1; } else if (gflag) { io_init(cfile, datadir); io_check_dir(path_dir); io_check_dir(path_notes); io_check_file(path_apts); io_check_file(path_todo); io_load_app(); io_load_todo(); note_gc(); non_interactive = 1; } else if (multiple_flag) { if (load_data) { io_init(cfile, datadir); io_check_dir(path_dir); io_check_dir(path_notes); } if (iflag) { io_check_file(path_apts); io_check_file(path_todo); /* Get default pager in case we need to show a log file. */ vars_init(); io_load_app(); io_load_todo(); io_import_data(IO_IMPORT_ICAL, ifile); io_save_apts(); io_save_todo(); non_interactive = 1; } if (xflag) { io_check_file(path_apts); io_check_file(path_todo); io_load_app(); io_load_todo(); io_export_data(xfmt); non_interactive = 1; return non_interactive; } if (tflag) { io_check_file(path_todo); io_load_todo(); todo_arg(tnum, fmt_todo, preg); non_interactive = 1; } if (nflag) { io_check_file(path_apts); io_load_app(); next_arg(); non_interactive = 1; } if (dflag || rflag || sflag) { io_check_file(path_apts); io_check_file(path_conf); io_load_app(); config_load(); /* To get output date format. */ if (dflag) date_arg(ddate, add_line, fmt_apt, fmt_rapt, fmt_ev, fmt_rev, preg); if (rflag || sflag) date_arg_extended(startday, range, add_line, fmt_apt, fmt_rapt, fmt_ev, fmt_rev, preg); non_interactive = 1; } else if (aflag) { struct date day; io_check_file(path_apts); io_check_file(path_conf); vars_init(); config_load(); /* To get output date format. */ io_load_app(); day.dd = day.mm = day.yyyy = 0; app_arg(add_line, &day, 0, fmt_apt, fmt_rapt, fmt_ev, fmt_rev, preg); non_interactive = 1; } } else { non_interactive = 0; io_init(cfile, datadir); } } if (preg) regfree(preg); return non_interactive; } calcurse-3.1.4/src/sha1.h0000644000175000001440000000416312105444321012031 00000000000000/* * Calcurse - text-based organizer * * Copyright (c) 2004-2013 calcurse Development Team * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * - Redistributions of source code must retain the above * copyright notice, this list of conditions and the * following disclaimer. * * - Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the * following disclaimer in the documentation and/or other * materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * Send your feedback or comments to : misc@calcurse.org * Calcurse home page : http://calcurse.org * * This code is based on Steve Reid's public domain SHA1 implementation. * * The original version is available at: * ftp://ftp.funet.fi/pub/crypt/hash/sha/sha1.c * */ #include #define SHA1_BLOCKLEN 64 #define SHA1_DIGESTLEN 20 typedef struct { uint32_t state[5]; uint32_t count[2]; uint8_t buffer[SHA1_BLOCKLEN]; } sha1_ctx_t; void sha1_init(sha1_ctx_t *); void sha1_update(sha1_ctx_t *, const uint8_t *, unsigned int); void sha1_final(sha1_ctx_t *, uint8_t *); void sha1_digest(const char *, char *); void sha1_stream(FILE *, char *); calcurse-3.1.4/src/config.c0000644000175000001440000004224412105444321012437 00000000000000/* * Calcurse - text-based organizer * * Copyright (c) 2004-2013 calcurse Development Team * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * - Redistributions of source code must retain the above * copyright notice, this list of conditions and the * following disclaimer. * * - Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the * following disclaimer in the documentation and/or other * materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * Send your feedback or comments to : misc@calcurse.org * Calcurse home page : http://calcurse.org * */ #include #include #include "calcurse.h" typedef int (*config_fn_parse_t) (void *, const char *); typedef int (*config_fn_serialize_t) (char *, void *); struct confvar { const char *key; config_fn_parse_t fn_parse; config_fn_serialize_t fn_serialize; void *target; }; static int config_parse_bool(unsigned *, const char *); static int config_serialize_bool(char *, unsigned *); static int config_parse_int(int *, const char *); static int config_serialize_int(char *, int *); static int config_parse_unsigned(unsigned *, const char *); static int config_serialize_unsigned(char *, unsigned *); static int config_parse_str(char *, const char *); static int config_serialize_str(char *, const char *); static int config_parse_calendar_view(void *, const char *); static int config_serialize_calendar_view(char *, void *); static int config_parse_default_panel(void *, const char *); static int config_serialize_default_panel(char *, void *); static int config_parse_first_day_of_week(void *, const char *); static int config_serialize_first_day_of_week(char *, void *); static int config_parse_color_theme(void *, const char *); static int config_serialize_color_theme(char *, void *); static int config_parse_layout(void *, const char *); static int config_serialize_layout(char *, void *); static int config_parse_sidebar_width(void *, const char *); static int config_serialize_sidebar_width(char *, void *); static int config_parse_output_datefmt(void *, const char *); static int config_serialize_output_datefmt(char *, void *); static int config_parse_input_datefmt(void *, const char *); static int config_serialize_input_datefmt(char *, void *); #define CONFIG_HANDLER_BOOL(var) (config_fn_parse_t) config_parse_bool, \ (config_fn_serialize_t) config_serialize_bool, &(var) #define CONFIG_HANDLER_INT(var) (config_fn_parse_t) config_parse_int, \ (config_fn_serialize_t) config_serialize_int, &(var) #define CONFIG_HANDLER_UNSIGNED(var) (config_fn_parse_t) config_parse_unsigned, \ (config_fn_serialize_t) config_serialize_unsigned, &(var) #define CONFIG_HANDLER_STR(var) (config_fn_parse_t) config_parse_str, \ (config_fn_serialize_t) config_serialize_str, &(var) static const struct confvar confmap[] = { {"appearance.calendarview", config_parse_calendar_view, config_serialize_calendar_view, NULL}, {"appearance.compactpanels", CONFIG_HANDLER_BOOL(conf.compact_panels)}, {"appearance.defaultpanel", config_parse_default_panel, config_serialize_default_panel, NULL}, {"appearance.layout", config_parse_layout, config_serialize_layout, NULL}, {"appearance.notifybar", CONFIG_HANDLER_BOOL(nbar.show)}, {"appearance.sidebarwidth", config_parse_sidebar_width, config_serialize_sidebar_width, NULL}, {"appearance.theme", config_parse_color_theme, config_serialize_color_theme, NULL}, {"daemon.enable", CONFIG_HANDLER_BOOL(dmon.enable)}, {"daemon.log", CONFIG_HANDLER_BOOL(dmon.log)}, {"format.inputdate", config_parse_input_datefmt, config_serialize_input_datefmt, NULL}, {"format.notifydate", CONFIG_HANDLER_STR(nbar.datefmt)}, {"format.notifytime", CONFIG_HANDLER_STR(nbar.timefmt)}, {"format.outputdate", config_parse_output_datefmt, config_serialize_output_datefmt, NULL}, {"general.autogc", CONFIG_HANDLER_BOOL(conf.auto_gc)}, {"general.autosave", CONFIG_HANDLER_BOOL(conf.auto_save)}, {"general.confirmdelete", CONFIG_HANDLER_BOOL(conf.confirm_delete)}, {"general.confirmquit", CONFIG_HANDLER_BOOL(conf.confirm_quit)}, {"general.firstdayofweek", config_parse_first_day_of_week, config_serialize_first_day_of_week, NULL}, {"general.periodicsave", CONFIG_HANDLER_UNSIGNED(conf.periodic_save)}, {"general.progressbar", CONFIG_HANDLER_BOOL(conf.progress_bar)}, {"general.systemdialogs", CONFIG_HANDLER_BOOL(conf.system_dialogs)}, {"notification.command", CONFIG_HANDLER_STR(nbar.cmd)}, {"notification.notifyall", CONFIG_HANDLER_BOOL(nbar.notify_all)}, {"notification.warning", CONFIG_HANDLER_INT(nbar.cntdwn)} }; struct config_save_status { FILE *fp; int done[sizeof(confmap) / sizeof(confmap[0])]; }; typedef int (*config_fn_walk_cb_t) (const char *, const char *, void *); typedef int (*config_fn_walk_junk_cb_t) (const char *, void *); static int config_parse_bool(unsigned *dest, const char *val) { if (strcmp(val, "yes") == 0) *dest = 1; else if (strcmp(val, "no") == 0) *dest = 0; else return 0; return 1; } static int config_parse_unsigned(unsigned *dest, const char *val) { if (is_all_digit(val)) *dest = atoi(val); else return 0; return 1; } static int config_parse_int(int *dest, const char *val) { if ((*val == '+' || *val == '-' || isdigit(*val)) && is_all_digit(val + 1)) *dest = atoi(val); else return 0; return 1; } static int config_parse_str(char *dest, const char *val) { strncpy(dest, val, BUFSIZ); return 1; } static int config_parse_color(int *dest, const char *val) { if (!strcmp(val, "black")) *dest = COLOR_BLACK; else if (!strcmp(val, "red")) *dest = COLOR_RED; else if (!strcmp(val, "green")) *dest = COLOR_GREEN; else if (!strcmp(val, "yellow")) *dest = COLOR_YELLOW; else if (!strcmp(val, "blue")) *dest = COLOR_BLUE; else if (!strcmp(val, "magenta")) *dest = COLOR_MAGENTA; else if (!strcmp(val, "cyan")) *dest = COLOR_CYAN; else if (!strcmp(val, "white")) *dest = COLOR_WHITE; else if (!strcmp(val, "default")) *dest = background; else return 0; return 1; } static int config_parse_color_pair(int *dest1, int *dest2, const char *val) { char s1[BUFSIZ], s2[BUFSIZ]; if (sscanf(val, "%s on %s", s1, s2) != 2) return 0; return (config_parse_color(dest1, s1) && config_parse_color(dest2, s2)); } static int config_parse_calendar_view(void *dummy, const char *val) { if (!strcmp(val, "monthly")) calendar_set_view(CAL_MONTH_VIEW); else if (!strcmp(val, "weekly")) calendar_set_view(CAL_WEEK_VIEW); else return 0; return 1; } static int config_parse_default_panel(void *dummy, const char *val) { if (!strcmp(val, "calendar")) conf.default_panel = CAL; else if (!strcmp(val, "appointments")) conf.default_panel = APP; else if (!strcmp(val, "todo")) conf.default_panel = TOD; else return 0; return 1; } static int config_parse_first_day_of_week(void *dummy, const char *val) { if (!strcmp(val, "monday")) calendar_set_first_day_of_week(MONDAY); else if (!strcmp(val, "sunday")) calendar_set_first_day_of_week(SUNDAY); else return 0; return 1; } static int config_parse_color_theme(void *dummy, const char *val) { int color1, color2; if (!strcmp(val, "0") || !strcmp(val, "none")) { colorize = 0; return 1; } if (!config_parse_color_pair(&color1, &color2, val)) return 0; init_pair(COLR_CUSTOM, color1, color2); return 1; } static int config_parse_layout(void *dummy, const char *val) { wins_set_layout(atoi(val)); return 1; } static int config_parse_sidebar_width(void *dummy, const char *val) { wins_set_sbar_width(atoi(val)); return 1; } static int config_parse_output_datefmt(void *dummy, const char *val) { if (val[0] != '\0') return config_parse_str(conf.output_datefmt, val); return 1; } static int config_parse_input_datefmt(void *dummy, const char *val) { if (config_parse_int(&conf.input_datefmt, val)) { if (conf.input_datefmt <= 0 || conf.input_datefmt > DATE_FORMATS) conf.input_datefmt = 1; return 1; } else return 0; } /* Set a configuration variable. */ static int config_set_conf(const char *key, const char *value) { int i; if (!key) return -1; for (i = 0; i < sizeof(confmap) / sizeof(confmap[0]); i++) { if (!strcmp(confmap[i].key, key)) return confmap[i].fn_parse(confmap[i].target, value); } return -1; } static int config_serialize_bool(char *dest, unsigned *val) { if (*val) { dest[0] = 'y'; dest[1] = 'e'; dest[2] = 's'; dest[3] = '\0'; } else { dest[0] = 'n'; dest[1] = 'o'; dest[2] = '\0'; } return 1; } static int config_serialize_unsigned(char *dest, unsigned *val) { snprintf(dest, BUFSIZ, "%u", *val); return 1; } static int config_serialize_int(char *dest, int *val) { snprintf(dest, BUFSIZ, "%d", *val); return 1; } static int config_serialize_str(char *dest, const char *val) { strncpy(dest, val, BUFSIZ); return 1; } /* * Return a string defining the color theme in the form: * foreground color 'on' background color * in order to dump this data in the configuration file. * Color numbers follow the ncurses library definitions. * If ncurses library was compiled with --enable-ext-funcs, * then default color is -1. */ static void config_color_theme_name(char *theme_name) { #define MAXCOLORS 8 #define NBCOLORS 2 #define DEFAULTCOLOR 255 #define DEFAULTCOLOR_EXT -1 int i; short color[NBCOLORS]; const char *color_name[NBCOLORS]; const char *default_color = "default"; const char *name[MAXCOLORS] = { "black", "red", "green", "yellow", "blue", "magenta", "cyan", "white" }; if (!colorize) strncpy(theme_name, "none", BUFSIZ); else { pair_content(COLR_CUSTOM, &color[0], &color[1]); for (i = 0; i < NBCOLORS; i++) { if ((color[i] == DEFAULTCOLOR) || (color[i] == DEFAULTCOLOR_EXT)) color_name[i] = default_color; else if (color[i] >= 0 && color[i] <= MAXCOLORS) color_name[i] = name[color[i]]; else { EXIT(_("unknown color")); /* NOTREACHED */ } } snprintf(theme_name, BUFSIZ, "%s on %s", color_name[0], color_name[1]); } } static int config_serialize_calendar_view(char *buf, void *dummy) { if (calendar_get_view() == CAL_WEEK_VIEW) strcpy(buf, "weekly"); else strcpy(buf, "monthly"); return 1; } static int config_serialize_default_panel(char *buf, void *dummy) { if (conf.default_panel == CAL) strcpy(buf, "calendar"); else if (conf.default_panel == APP) strcpy(buf, "appointments"); else strcpy(buf, "todo"); return 1; } static int config_serialize_first_day_of_week(char *buf, void *dummy) { if (calendar_week_begins_on_monday()) strcpy(buf, "monday"); else strcpy(buf, "sunday"); return 1; } static int config_serialize_color_theme(char *buf, void *dummy) { config_color_theme_name(buf); return 1; } static int config_serialize_layout(char *buf, void *dummy) { int tmp = wins_layout(); return config_serialize_int(buf, &tmp); } static int config_serialize_sidebar_width(char *buf, void *dummy) { int tmp = wins_sbar_wperc(); return config_serialize_int(buf, &tmp); } static int config_serialize_output_datefmt(char *buf, void *dummy) { return config_serialize_str(buf, conf.output_datefmt); } static int config_serialize_input_datefmt(char *buf, void *dummy) { return config_serialize_int(buf, &conf.input_datefmt); } /* Serialize the value of a configuration variable. */ static int config_serialize_conf(char *buf, const char *key, struct config_save_status *status) { int i; if (!key) return -1; for (i = 0; i < sizeof(confmap) / sizeof(confmap[0]); i++) { if (!strcmp(confmap[i].key, key)) { if (confmap[i].fn_serialize(buf, confmap[i].target)) { if (status) status->done[i] = 1; return 1; } else return 0; } } return -1; } static void config_file_walk(config_fn_walk_cb_t fn_cb, config_fn_walk_junk_cb_t fn_junk_cb, void *data) { FILE *data_file; char buf[BUFSIZ], e_conf[BUFSIZ]; char *key, *value; data_file = fopen(path_conf, "r"); EXIT_IF(data_file == NULL, _("failed to open configuration file")); pthread_mutex_lock(&nbar.mutex); for (;;) { if (fgets(buf, sizeof buf, data_file) == NULL) break; io_extract_data(e_conf, buf, sizeof buf); if (*e_conf == '\0') { if (fn_junk_cb) fn_junk_cb(buf, data); continue; } key = e_conf; value = strchr(e_conf, '='); if (value) { *value = '\0'; value++; } else { EXIT(_("invalid configuration directive: \"%s\""), e_conf); } if (strcmp(key, "auto_save") == 0 || strcmp(key, "auto_gc") == 0 || strcmp(key, "periodic_save") == 0 || strcmp(key, "confirm_quit") == 0 || strcmp(key, "confirm_delete") == 0 || strcmp(key, "skip_system_dialogs") == 0 || strcmp(key, "skip_progress_bar") == 0 || strcmp(key, "calendar_default_view") == 0 || strcmp(key, "week_begins_on_monday") == 0 || strcmp(key, "color-theme") == 0 || strcmp(key, "layout") == 0 || strcmp(key, "side-bar_width") == 0 || strcmp(key, "notify-bar_show") == 0 || strcmp(key, "notify-bar_date") == 0 || strcmp(key, "notify-bar_clock") == 0 || strcmp(key, "notify-bar_warning") == 0 || strcmp(key, "notify-bar_command") == 0 || strcmp(key, "notify-all") == 0 || strcmp(key, "output_datefmt") == 0 || strcmp(key, "input_datefmt") == 0 || strcmp(key, "notify-daemon_enable") == 0 || strcmp(key, "notify-daemon_log") == 0) { WARN_MSG(_("Pre-3.0.0 configuration file format detected, " "please upgrade running `calcurse-upgrade`.")); } if (value && (*value == '\0' || *value == '\n')) { /* Backward compatibility mode. */ if (fgets(buf, sizeof buf, data_file) == NULL) break; io_extract_data(e_conf, buf, sizeof buf); value = e_conf; } fn_cb(key, value, data); } file_close(data_file, __FILE_POS__); pthread_mutex_unlock(&nbar.mutex); } static int config_load_cb(const char *key, const char *value, void *dummy) { int result = config_set_conf(key, value); if (result < 0) EXIT(_("configuration variable unknown: \"%s\""), key); /* NOTREACHED */ else if (result == 0) EXIT(_("wrong configuration variable format for \"%s\""), key); /* NOTREACHED */ return 1; } /* Load the user configuration. */ void config_load(void) { config_file_walk(config_load_cb, NULL, NULL); } static int config_save_cb(const char *key, const char *value, void *status) { char buf[BUFSIZ]; int result = config_serialize_conf(buf, key, (struct config_save_status *)status); if (result < 0) EXIT(_("configuration variable unknown: \"%s\""), key); /* NOTREACHED */ else if (result == 0) EXIT(_("wrong configuration variable format for \"%s\""), key); /* NOTREACHED */ fputs(key, ((struct config_save_status *)status)->fp); fputc('=', ((struct config_save_status *)status)->fp); fputs(buf, ((struct config_save_status *)status)->fp); fputc('\n', ((struct config_save_status *)status)->fp); return 1; } static int config_save_junk_cb(const char *data, void *status) { fputs(data, ((struct config_save_status *)status)->fp); return 1; } /* Save the user configuration. */ unsigned config_save(void) { char tmppath[BUFSIZ]; char *tmpext; struct config_save_status status; int i; if (read_only) return 1; strncpy(tmppath, get_tempdir(), BUFSIZ); strncat(tmppath, "/" CONF_PATH_NAME ".", BUFSIZ - strlen(tmppath) - 1); if ((tmpext = new_tempfile(tmppath, TMPEXTSIZ)) == NULL) return 0; strncat(tmppath, tmpext, BUFSIZ - strlen(tmppath) - 1); mem_free(tmpext); status.fp = fopen(tmppath, "w"); if (!status.fp) return 0; memset(status.done, 0, sizeof(status.done)); config_file_walk(config_save_cb, config_save_junk_cb, (void *)&status); /* Set variables that were missing from the configuration file. */ for (i = 0; i < sizeof(confmap) / sizeof(confmap[0]); i++) { if (!status.done[i]) config_save_cb(confmap[i].key, NULL, &status); } file_close(status.fp, __FILE_POS__); if (io_file_cp(tmppath, path_conf)) unlink(tmppath); return 1; } calcurse-3.1.4/src/Makefile.in0000644000175000001440000004605112105444410013072 00000000000000# Makefile.in generated by automake 1.13.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2012 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ bin_PROGRAMS = calcurse$(EXEEXT) subdir = src DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/lib-ld.m4 \ $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__installdirs = "$(DESTDIR)$(bindir)" PROGRAMS = $(bin_PROGRAMS) am_calcurse_OBJECTS = calcurse.$(OBJEXT) apoint.$(OBJEXT) \ args.$(OBJEXT) calendar.$(OBJEXT) config.$(OBJEXT) \ custom.$(OBJEXT) day.$(OBJEXT) event.$(OBJEXT) \ getstring.$(OBJEXT) help.$(OBJEXT) ical.$(OBJEXT) \ interaction.$(OBJEXT) io.$(OBJEXT) keys.$(OBJEXT) \ llist.$(OBJEXT) note.$(OBJEXT) notify.$(OBJEXT) pcal.$(OBJEXT) \ recur.$(OBJEXT) sha1.$(OBJEXT) sigs.$(OBJEXT) todo.$(OBJEXT) \ utf8.$(OBJEXT) utils.$(OBJEXT) vars.$(OBJEXT) wins.$(OBJEXT) \ mem.$(OBJEXT) dmon.$(OBJEXT) calcurse_OBJECTS = $(am_calcurse_OBJECTS) calcurse_LDADD = $(LDADD) calcurse_DEPENDENCIES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(calcurse_SOURCES) DIST_SOURCES = $(calcurse_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) A2X = @A2X@ ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ ASCIIDOC = @ASCIIDOC@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = -DLOCALEDIR=\"$(localedir)\" @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GMSGFMT = @GMSGFMT@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ LDFLAGS = @LDFLAGS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ POSUB = @POSUB@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = $(datadir)/locale localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ AUTOMAKE_OPTIONS = foreign AM_CFLAGS = -std=c99 -pedantic -D_POSIX_C_SOURCE=200809L calcurse_SOURCES = \ calcurse.c \ calcurse.h \ htable.h \ llist.h \ llist_ts.h \ sha1.h \ apoint.c \ args.c \ calendar.c \ config.c \ custom.c \ day.c \ event.c \ getstring.c \ help.c \ ical.c \ interaction.c \ io.c \ keys.c \ llist.c \ note.c \ notify.c \ pcal.c \ recur.c \ sha1.c \ sigs.c \ todo.c \ utf8.c \ utils.c \ vars.c \ wins.c \ mem.c \ dmon.c LDADD = @LTLIBINTL@ all: all-am .SUFFIXES: .SUFFIXES: .c .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign src/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-binPROGRAMS: $(bin_PROGRAMS) @$(NORMAL_INSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ fi; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ while read p p1; do if test -f $$p \ ; then echo "$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n;h' \ -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) files[d] = files[d] " " $$1; \ else { print "f", $$3 "/" $$4, $$1; } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ } \ ; done uninstall-binPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ -e 's/$$/$(EXEEXT)/' \ `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(bindir)" && rm -f $$files clean-binPROGRAMS: -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS) calcurse$(EXEEXT): $(calcurse_OBJECTS) $(calcurse_DEPENDENCIES) $(EXTRA_calcurse_DEPENDENCIES) @rm -f calcurse$(EXEEXT) $(AM_V_CCLD)$(LINK) $(calcurse_OBJECTS) $(calcurse_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/apoint.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/args.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/calcurse.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/calendar.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/config.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/custom.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/day.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dmon.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/event.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getstring.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/help.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ical.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/interaction.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/io.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/keys.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/llist.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mem.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/note.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/notify.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pcal.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/recur.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sha1.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sigs.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/todo.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/utf8.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/utils.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vars.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wins.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: for dir in "$(DESTDIR)$(bindir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-binPROGRAMS clean-generic mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-binPROGRAMS install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-binPROGRAMS .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean \ clean-binPROGRAMS clean-generic cscopelist-am ctags ctags-am \ distclean distclean-compile distclean-generic distclean-tags \ distdir dvi dvi-am html html-am info info-am install \ install-am install-binPROGRAMS install-data install-data-am \ install-dvi install-dvi-am install-exec install-exec-am \ install-html install-html-am install-info install-info-am \ install-man install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-compile mostlyclean-generic pdf pdf-am \ ps ps-am tags tags-am uninstall uninstall-am \ uninstall-binPROGRAMS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: calcurse-3.1.4/src/vars.c0000644000175000001440000001061512105444321012142 00000000000000/* * Calcurse - text-based organizer * * Copyright (c) 2004-2013 calcurse Development Team * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * - Redistributions of source code must retain the above * copyright notice, this list of conditions and the * following disclaimer. * * - Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the * following disclaimer in the documentation and/or other * materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * Send your feedback or comments to : misc@calcurse.org * Calcurse home page : http://calcurse.org * */ #include #include #include "calcurse.h" /* * variables to store window size */ int col = 0, row = 0; int resize = 0; /* variable to tell if the terminal supports color */ unsigned colorize = 0; /* Default background and foreground colors. */ int foreground, background; /* * To tell if curses interface was launched already or not (in that case * calcurse is running in command-line mode). * This is useful to konw how to display messages on the screen. */ enum ui_mode ui_mode = UI_CMDLINE; /* Don't save anything if this is set. */ int read_only = 0; /* Strings describing each input date format. */ const char *datefmt_str[DATE_FORMATS]; /* * variables to store calendar names */ int days[12] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; const char *monthnames[12] = { N_("January"), N_("February"), N_("March"), N_("April"), N_("May"), N_("June"), N_("July"), N_("August"), N_("September"), N_("October"), N_("November"), N_("December") }; const char *daynames[8] = { N_("Sun"), N_("Mon"), N_("Tue"), N_("Wed"), N_("Thu"), N_("Fri"), N_("Sat"), N_("Sun") }; /* * variables to store data path names, which are initialized in * io_init() */ char path_dir[] = ""; char path_todo[] = ""; char path_apts[] = ""; char path_conf[] = ""; char path_notes[] = ""; char path_keys[] = ""; char path_cpid[] = ""; char path_dpid[] = ""; char path_dmon_log[] = ""; /* Variable to store global configuration. */ struct conf conf; /* Variable to handle pads. */ struct pad apad; /* Variable to store notify-bar settings. */ struct nbar nbar; /* Variable to store daemon configuration. */ struct dmon_conf dmon; /* * Variables init */ void vars_init(void) { const char *ed, *pg; /* Variables for user configuration */ conf.confirm_quit = 1; conf.confirm_delete = 1; conf.auto_save = 1; conf.auto_gc = 0; conf.periodic_save = 0; conf.default_panel = CAL; conf.compact_panels = 0; conf.system_dialogs = 1; conf.progress_bar = 1; strncpy(conf.output_datefmt, "%D", 3); conf.input_datefmt = 1; datefmt_str[0] = _("mm/dd/yyyy"); datefmt_str[1] = _("dd/mm/yyyy"); datefmt_str[2] = _("yyyy/mm/dd"); datefmt_str[3] = _("yyyy-mm-dd"); /* Default external editor and pager */ ed = getenv("VISUAL"); if (ed == NULL || ed[0] == '\0') ed = getenv("EDITOR"); if (ed == NULL || ed[0] == '\0') ed = DEFAULT_EDITOR; conf.editor = ed; pg = getenv("PAGER"); if (pg == NULL || pg[0] == '\0') pg = DEFAULT_PAGER; conf.pager = pg; wins_set_layout(1); calendar_set_first_day_of_week(MONDAY); /* Pad structure to scroll text inside the appointment panel */ apad.length = 1; apad.first_onscreen = 0; /* Attribute definitions for color and non-color terminals */ custom_init_attr(); /* Start at the current date */ calendar_init_slctd_day(); } calcurse-3.1.4/src/calcurse.h0000644000175000001440000010153112105444350012775 00000000000000/* * Calcurse - text-based organizer * * Copyright (c) 2004-2013 calcurse Development Team * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * - Redistributions of source code must retain the above * copyright notice, this list of conditions and the * following disclaimer. * * - Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the * following disclaimer in the documentation and/or other * materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * Send your feedback or comments to : misc@calcurse.org * Calcurse home page : http://calcurse.org * */ #ifndef CALCURSE_H #define CALCURSE_H #include "config.h" #ifdef HAVE_NCURSES_H #include #elif defined HAVE_NCURSES_NCURSES_H #include #elif defined HAVE_NCURSESW_NCURSES_H #include #else #error "Missing ncurses header. Aborting..." #endif #include #include #include #include #include #include "llist.h" #include "htable.h" #include "llist_ts.h" /* Internationalization. */ #if ENABLE_NLS #include #include #undef _ #define _(String) gettext(String) #ifdef gettext_noop #define N_(String) gettext_noop(String) #else #define N_(String) (String) #endif #else /* NLS disabled */ #define _(String) (String) #define N_(String) (String) #define textdomain(String) (String) #define gettext(String) (String) #define dgettext(String) (String) #define dcgettext(String) (String) #define ngettext(String1,String2,n) ((n) == 1 ? (String1) : (String2)) #define bindtextdomain(String) (String) #define bind_textdomain_codeset(Domain,Codeset) (Codeset) #endif /* ENABLE_NLS */ /* Paths configuration. */ #define DIR_NAME ".calcurse/" #define TODO_PATH_NAME "todo" #define APTS_PATH_NAME "apts" #define CONF_PATH_NAME "conf" #define KEYS_PATH_NAME "keys" #define CPID_PATH_NAME ".calcurse.pid" #define DPID_PATH_NAME ".daemon.pid" #define DLOG_PATH_NAME "daemon.log" #define NOTES_DIR_NAME "notes/" #define TODO_PATH DIR_NAME TODO_PATH_NAME #define APTS_PATH DIR_NAME APTS_PATH_NAME #define CONF_PATH DIR_NAME CONF_PATH_NAME #define KEYS_PATH DIR_NAME KEYS_PATH_NAME #define CPID_PATH DIR_NAME CPID_PATH_NAME #define DLOG_PATH DIR_NAME DLOG_PATH_NAME #define DPID_PATH DIR_NAME DPID_PATH_NAME #define NOTES_DIR DIR_NAME NOTES_DIR_NAME #define DEFAULT_EDITOR "vi" #define DEFAULT_PAGER "less" #define ATTR_FALSE 0 #define ATTR_TRUE 1 #define ATTR_LOWEST 2 #define ATTR_LOW 3 #define ATTR_MIDDLE 4 #define ATTR_HIGH 5 #define ATTR_HIGHEST 6 #define STATUSHEIGHT 2 #define MAX_NOTESIZ 40 #define TMPEXTSIZ 6 /* Format for appointment hours is: HH:MM */ #define HRMIN_SIZE 6 /* Maximum number of colors available. */ #define NBUSERCOLORS 6 /* Side bar width acceptable boundaries. */ #define SBARMINWIDTH 32 #define SBARMAXWIDTHPERC 50 /* Related to date manipulation. */ #define YEARINMONTHS 12 #define YEARINDAYS 365 #define TM_YEAR_BASE 1900 #define WEEKINDAYS 7 #define DAYINHOURS 24 #define HOURINMIN 60 #define MININSEC 60 #define WEEKINHOURS (WEEKINDAYS * DAYINHOURS) #define WEEKINMIN (WEEKINHOURS * HOURINMIN) #define WEEKINSEC (WEEKINMIN * MININSEC) #define DAYINMIN (DAYINHOURS * HOURINMIN) #define DAYINSEC (DAYINMIN * MININSEC) #define HOURINSEC (HOURINMIN * MININSEC) #define MAXDAYSPERMONTH 31 /* Calendar window. */ #define CALHEIGHT 8 /* Key definitions. */ #define CTRLVAL 0x1F #define CTRL(x) ((x) & CTRLVAL) #define ESCAPE 27 #define TAB 9 #define SPACE 32 #define KEYS_KEYLEN 3 /* length of each keybinding */ #define KEYS_LABELEN 8 /* length of command description */ #define KEYS_CMDS_PER_LINE 6 /* max number of commands per line */ /* Register definitions. */ #define REG_BLACK_HOLE 37 /* Size of the hash table the note garbage collector uses. */ #define NOTE_GC_HSIZE 1024 #define ERROR_MSG(...) do { \ char msg[BUFSIZ]; \ int len; \ \ len = snprintf (msg, BUFSIZ, "%s: %d: ", __FILE__, __LINE__); \ snprintf (msg + len, BUFSIZ - len, __VA_ARGS__); \ if (ui_mode == UI_CURSES) \ fatalbox (msg); \ else \ fprintf (stderr, "%s\n", msg); \ } while (0) #define WARN_MSG(...) do { \ char msg[BUFSIZ]; \ \ snprintf (msg, BUFSIZ, __VA_ARGS__); \ if (ui_mode == UI_CURSES) \ warnbox (msg); \ else \ fprintf (stderr, "%s\n", msg); \ } while (0) #define EXIT(...) do { \ ERROR_MSG(__VA_ARGS__); \ if (ui_mode == UI_CURSES) \ exit_calcurse (EXIT_FAILURE); \ else \ exit (EXIT_FAILURE); \ } while (0) #define EXIT_IF(cond, ...) do { \ if ((cond)) \ EXIT(__VA_ARGS__); \ } while (0) #define RETURN_IF(cond, ...) do { \ if ((cond)) \ { \ ERROR_MSG(__VA_ARGS__); \ return; \ } \ } while (0) #define RETVAL_IF(cond, val, ...) do { \ if ((cond)) \ { \ ERROR_MSG(__VA_ARGS__); \ return (val); \ } \ } while (0) #define STRINGIFY(x) #x #define TOSTRING(x) STRINGIFY(x) #define __FILE_POS__ __FILE__ ":" TOSTRING(__LINE__) #define UTF8_MAXLEN 6 #define UTF8_LENGTH(ch) ((unsigned char)ch >= 0xFC ? 6 : \ ((unsigned char)ch >= 0xF8 ? 5 : \ ((unsigned char)ch >= 0xF0 ? 4 : \ ((unsigned char)ch >= 0xE0 ? 3 : \ ((unsigned char)ch >= 0xC0 ? 2 : 1))))) #define UTF8_ISCONT(ch) ((unsigned char)ch >= 0x80 && \ (unsigned char)ch <= 0xBF) #define MAX(x,y) ((x)>(y)?(x):(y)) #define MIN(x,y) ((x)<(y)?(x):(y)) enum win { CAL, APP, TOD, NOT, STA, KEY, NBWINS }; /* General configuration variables. */ struct conf { unsigned auto_save; unsigned auto_gc; unsigned periodic_save; unsigned confirm_quit; unsigned confirm_delete; enum win default_panel; unsigned compact_panels; unsigned system_dialogs; unsigned progress_bar; const char *editor; const char *pager; char output_datefmt[BUFSIZ]; /* format for displaying date */ int input_datefmt; /* format for reading date */ }; /* Daemon-related configuration. */ struct dmon_conf { unsigned enable; /* launch daemon automatically when exiting */ unsigned log; /* log daemon activity */ }; /* Input date formats. */ enum datefmt { DATEFMT_MMDDYYYY = 1, DATEFMT_DDMMYYYY, DATEFMT_YYYYMMDD, DATEFMT_ISO, DATEFMT_MAX }; #define DATE_FORMATS (DATEFMT_MAX - 1) #define DATEFMT(datefmt) (datefmt == DATEFMT_MMDDYYYY ? "%m/%d/%Y" : \ (datefmt == DATEFMT_DDMMYYYY ? "%d/%m/%Y" : \ (datefmt == DATEFMT_YYYYMMDD ? "%Y/%m/%d" : "%Y-%m-%d"))) #define DATEFMT_DESC(datefmt) (datefmt == DATEFMT_MMDDYYYY ? \ _("mm/dd/yyyy") : (datefmt == DATEFMT_DDMMYYYY ? _("dd/mm/yyyy") : \ (datefmt == DATEFMT_YYYYMMDD ? _("yyyy/mm/dd") : _("yyyy-mm-dd")))) struct date { unsigned dd; unsigned mm; unsigned yyyy; }; /* Appointment definition. */ struct apoint { long start; /* seconds since 1 jan 1970 */ long dur; /* duration of the appointment in seconds */ #define APOINT_NULL 0x0 #define APOINT_NOTIFY 0x1 /* Item needs to be notified */ #define APOINT_NOTIFIED 0x2 /* Item was already notified */ int state; char *mesg; char *note; }; /* Event definition. */ struct event { int id; /* event identifier */ long day; /* seconds since 1 jan 1970 */ char *mesg; char *note; }; /* Todo item definition. */ struct todo { char *mesg; int id; char *note; }; /* Number of items in current day. */ struct day_items_nb { unsigned nb_events; unsigned nb_apoints; }; struct excp { long st; /* beggining of the considered day, in seconds */ }; enum recur_type { RECUR_NO, RECUR_DAILY, RECUR_WEEKLY, RECUR_MONTHLY, RECUR_YEARLY, RECUR_TYPES }; /* To describe an item's repetition. */ struct rpt { enum recur_type type; /* repetition type */ int freq; /* repetition frequence */ long until; /* ending date for repeated event */ }; /* Recurrent appointment definition. */ struct recur_apoint { struct rpt *rpt; /* information about repetition */ llist_t exc; /* days when the item should not be repeated */ long start; /* beggining of the appointment */ long dur; /* duration of the appointment */ char state; /* 8 bits to store item state */ char *mesg; /* appointment description */ char *note; /* note attached to appointment */ }; /* Reccurent event definition. */ struct recur_event { struct rpt *rpt; /* information about repetition */ llist_t exc; /* days when the item should not be repeated */ int id; /* event type */ long day; /* day at which event occurs */ char *mesg; /* event description */ char *note; /* note attached to event */ }; /* Generic pointer data type for appointments and events. */ union aptev_ptr { struct apoint *apt; struct event *ev; struct recur_apoint *rapt; struct recur_event *rev; }; /* Generic item description (to hold appointments, events...). */ struct day_item { int type; /* (recursive or normal) event or appointment */ long start; /* start time of the repetition occurrence */ union aptev_ptr item; /* pointer to the actual item */ }; /* Available view for the calendar panel. */ enum { CAL_MONTH_VIEW, CAL_WEEK_VIEW, CAL_VIEWS }; struct notify_app { long time; int got_app; char *txt; char state; pthread_mutex_t mutex; }; struct io_file { FILE *fd; char name[BUFSIZ]; }; /* Available keys. */ enum key { KEY_GENERIC_CANCEL, KEY_GENERIC_SELECT, KEY_GENERIC_CREDITS, KEY_GENERIC_HELP, KEY_GENERIC_QUIT, KEY_GENERIC_SAVE, KEY_GENERIC_COPY, KEY_GENERIC_PASTE, KEY_GENERIC_CHANGE_VIEW, KEY_GENERIC_IMPORT, KEY_GENERIC_EXPORT, KEY_GENERIC_GOTO, KEY_GENERIC_OTHER_CMD, KEY_GENERIC_CONFIG_MENU, KEY_GENERIC_REDRAW, KEY_GENERIC_ADD_APPT, KEY_GENERIC_ADD_TODO, KEY_GENERIC_PREV_DAY, KEY_GENERIC_NEXT_DAY, KEY_GENERIC_PREV_WEEK, KEY_GENERIC_NEXT_WEEK, KEY_GENERIC_PREV_MONTH, KEY_GENERIC_NEXT_MONTH, KEY_GENERIC_PREV_YEAR, KEY_GENERIC_NEXT_YEAR, KEY_GENERIC_SCROLL_DOWN, KEY_GENERIC_SCROLL_UP, KEY_GENERIC_GOTO_TODAY, KEY_MOVE_RIGHT, KEY_MOVE_LEFT, KEY_MOVE_DOWN, KEY_MOVE_UP, KEY_START_OF_WEEK, KEY_END_OF_WEEK, KEY_ADD_ITEM, KEY_DEL_ITEM, KEY_EDIT_ITEM, KEY_VIEW_ITEM, KEY_PIPE_ITEM, KEY_FLAG_ITEM, KEY_REPEAT_ITEM, KEY_EDIT_NOTE, KEY_VIEW_NOTE, KEY_RAISE_PRIORITY, KEY_LOWER_PRIORITY, NBKEYS, KEY_UNDEF }; /* To describe a key binding. */ struct binding { char *label; enum key action; }; #define FLAG_CAL (1 << CAL) #define FLAG_APP (1 << APP) #define FLAG_TOD (1 << TOD) #define FLAG_NOT (1 << NOT) #define FLAG_STA (1 << STA) #define FLAG_ALL ((1 << NBWINS) - 1) #define WINS_NBAR_LOCK \ pthread_cleanup_push(wins_nbar_cleanup, NULL); \ wins_nbar_lock(); #define WINS_NBAR_UNLOCK \ wins_nbar_unlock(); \ pthread_cleanup_pop(0); #define WINS_CALENDAR_LOCK \ pthread_cleanup_push(wins_calendar_cleanup, NULL); \ wins_calendar_lock(); #define WINS_CALENDAR_UNLOCK \ wins_calendar_unlock(); \ pthread_cleanup_pop(0); enum ui_mode { UI_CURSES, UI_CMDLINE, UI_MODES }; /* Generic window structure. */ struct window { WINDOW *p; /* pointer to window */ unsigned w; /* width */ unsigned h; /* height */ int x; /* x position */ int y; /* y position */ }; /* Generic scrolling window structure. */ struct scrollwin { struct window win; struct window pad; unsigned first_visible_line; unsigned total_lines; const char *label; }; /* Pad structure to handle scrolling. */ struct pad { int width; int length; int first_onscreen; /* first line to be displayed inside window */ WINDOW *ptrwin; /* pointer to the pad window */ }; /* Notification bar definition. */ struct nbar { unsigned show; /* display or hide the notify-bar */ int cntdwn; /* warn when time left before next app becomes lesser than cntdwn */ char datefmt[BUFSIZ]; /* format for displaying date */ char timefmt[BUFSIZ]; /* format for displaying time */ char cmd[BUFSIZ]; /* notification command */ const char *shell; /* user shell to launch notif. cmd */ unsigned notify_all; /* notify all appointments */ pthread_mutex_t mutex; }; /* Available types of items. */ enum item_type { RECUR_EVNT = 1, EVNT, RECUR_APPT, APPT, MAX_TYPES = APPT }; /* Return codes for the getstring() function. */ enum getstr { GETSTRING_VALID, GETSTRING_ESC, /* user pressed escape to cancel editing. */ GETSTRING_RET /* return was pressed without entering any text. */ }; /* Week days. */ enum wday { SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, WDAYS }; /* Possible movements inside calendar. */ enum move { DAY_PREV, DAY_NEXT, WEEK_PREV, WEEK_NEXT, WEEK_START, WEEK_END, MONTH_PREV, MONTH_NEXT, YEAR_PREV, YEAR_NEXT }; /* Available color pairs. */ enum { COLR_RED = 1, COLR_GREEN, COLR_YELLOW, COLR_BLUE, COLR_MAGENTA, COLR_CYAN, COLR_DEFAULT, COLR_HIGH, COLR_CUSTOM }; /* Available import types. */ enum import_type { IO_IMPORT_ICAL, IO_IMPORT_NBTYPES }; /* Available export types. */ enum export_type { IO_EXPORT_ICAL, IO_EXPORT_PCAL, IO_EXPORT_NBTYPES }; /* To customize the display when saving data. */ enum save_display { IO_SAVE_DISPLAY_BAR, IO_SAVE_DISPLAY_NONE }; /* apoint.c */ extern llist_ts_t alist_p; void apoint_free_bkp(void); struct apoint *apoint_dup(struct apoint *); void apoint_free(struct apoint *); void apoint_llist_init(void); void apoint_llist_free(void); void apoint_hilt_set(int); void apoint_hilt_decrease(int); void apoint_hilt_increase(int); int apoint_hilt(void); struct apoint *apoint_new(char *, char *, long, long, char); unsigned apoint_inday(struct apoint *, long *); void apoint_sec2str(struct apoint *, long, char *, char *); void apoint_write(struct apoint *, FILE *); struct apoint *apoint_scan(FILE *, struct tm, struct tm, char, char *); void apoint_delete(struct apoint *); void apoint_scroll_pad_down(int, int); void apoint_scroll_pad_up(int); struct notify_app *apoint_check_next(struct notify_app *, long); void apoint_switch_notify(struct apoint *); void apoint_update_panel(int); void apoint_paste_item(struct apoint *, long); /* args.c */ int parse_args(int, char **); /* calendar.c */ void calendar_view_next(void); void calendar_view_prev(void); void calendar_set_view(int); int calendar_get_view(void); void calendar_start_date_thread(void); void calendar_stop_date_thread(void); void calendar_set_current_date(void); void calendar_set_first_day_of_week(enum wday); void calendar_change_first_day_of_week(void); unsigned calendar_week_begins_on_monday(void); void calendar_store_current_date(struct date *); void calendar_init_slctd_day(void); struct date *calendar_get_slctd_day(void); long calendar_get_slctd_day_sec(void); void calendar_monthly_view_cache_set_invalid(void); void calendar_update_panel(struct window *); void calendar_goto_today(void); void calendar_change_day(int); void calendar_move(enum move, int); long calendar_start_of_year(void); long calendar_end_of_year(void); const char *calendar_get_pom(time_t); /* config.c */ void config_load(void); unsigned config_save(void); /* custom.c */ void custom_init_attr(void); void custom_apply_attr(WINDOW *, int); void custom_remove_attr(WINDOW *, int); void custom_config_bar(void); void custom_layout_config(void); void custom_sidebar_config(void); void custom_color_config(void); void custom_color_theme_name(char *); void custom_confwin_init(struct window *, const char *); void custom_set_swsiz(struct scrollwin *); void custom_general_config(void); void custom_keys_config(void); void custom_config_main(void); /* day.c */ void day_free_list(void); char *day_item_get_mesg(struct day_item *); char *day_item_get_note(struct day_item *); void day_item_erase_note(struct day_item *); long day_item_get_duration(struct day_item *); int day_item_get_state(struct day_item *); void day_item_add_exc(struct day_item *, long); void day_item_fork(struct day_item *, struct day_item *); int day_store_items(long, unsigned *, unsigned *, regex_t *); struct day_items_nb *day_process_storage(struct date *, unsigned, struct day_items_nb *); void day_write_pad(long, int, int, int); void day_write_stdout(long, const char *, const char *, const char *, const char *); void day_popup_item(struct day_item *); int day_check_if_item(struct date); unsigned day_chk_busy_slices(struct date, int, int *); struct day_item *day_cut_item(long, int); int day_paste_item(struct day_item *, long); struct day_item *day_get_item(int); void day_edit_note(struct day_item *, const char *); void day_view_note(struct day_item *, const char *); void day_item_switch_notify(struct day_item *); /* dmon.c */ void dmon_start(int); void dmon_stop(void); /* event.c */ extern llist_t eventlist; void event_free_bkp(void); struct event *event_dup(struct event *); void event_free(struct event *); void event_llist_init(void); void event_llist_free(void); struct event *event_new(char *, char *, long, int); unsigned event_inday(struct event *, long *); void event_write(struct event *, FILE *); struct event *event_scan(FILE *, struct tm, int, char *); void event_delete(struct event *); void event_paste_item(struct event *, long); /* help.c */ void help_wins_init(struct scrollwin *, int, int, int, int); void help_screen(void); /* getstring.c */ enum getstr getstring(WINDOW *, char *, int, int, int); int updatestring(WINDOW *, char **, int, int); /* ical.c */ void ical_import_data(FILE *, FILE *, unsigned *, unsigned *, unsigned *, unsigned *, unsigned *); void ical_export_data(FILE *); /* interaction.c */ void interact_day_item_add(void); void interact_day_item_delete(unsigned *, unsigned *, unsigned); void interact_day_item_edit(void); void interact_day_item_pipe(void); void interact_day_item_repeat(void); void interact_day_item_cut_free(unsigned); void interact_day_item_copy(unsigned *, unsigned *, unsigned); void interact_day_item_paste(unsigned *, unsigned *, unsigned); void interact_todo_add(void); void interact_todo_delete(void); void interact_todo_edit(void); void interact_todo_pipe(void); /* io.c */ unsigned io_fprintln(const char *, const char *, ...); void io_init(const char *, const char *); void io_extract_data(char *, const char *, int); unsigned io_save_apts(void); unsigned io_save_todo(void); unsigned io_save_keys(void); void io_save_cal(enum save_display); void io_load_app(void); void io_load_todo(void); void io_load_keys(const char *); int io_check_dir(const char *); unsigned io_file_exist(const char *); int io_check_file(const char *); int io_check_data_files(void); void io_startup_screen(int); void io_export_data(enum export_type); void io_import_data(enum import_type, const char *); struct io_file *io_log_init(void); void io_log_print(struct io_file *, int, const char *); void io_log_display(struct io_file *, const char *, const char *); void io_log_free(struct io_file *); void io_start_psave_thread(void); void io_stop_psave_thread(void); void io_set_lock(void); unsigned io_dump_pid(char *); unsigned io_get_pid(char *); int io_file_is_empty(char *); int io_file_cp(const char *, const char *); /* keys.c */ void keys_init(void); void keys_free(void); void keys_dump_defaults(char *); const char *keys_get_label(enum key); enum key keys_get_action(int); enum key keys_getch(WINDOW * win, int *, int *); int keys_assign_binding(int, enum key); void keys_remove_binding(int, enum key); int keys_str2int(const char *); const char *keys_int2str(int); int keys_action_count_keys(enum key); const char *keys_action_firstkey(enum key); const char *keys_action_nkey(enum key, int); char *keys_action_allkeys(enum key); void keys_display_bindings_bar(WINDOW *, struct binding *[], int, int, int, struct binding *); void keys_popup_info(enum key); void keys_save_bindings(FILE *); int keys_check_missing_bindings(void); void keys_fill_missing(void); /* mem.c */ void *xmalloc(size_t); void *xcalloc(size_t, size_t); void *xrealloc(void *, size_t, size_t); char *xstrdup(const char *); void xfree(void *); #ifdef CALCURSE_MEMORY_DEBUG #define mem_malloc(s) dbg_malloc ((s), __FILE_POS__) #define mem_calloc(n, s) dbg_calloc ((n), (s), __FILE_POS__) #define mem_realloc(p, n, s) dbg_realloc ((p), (n), (s), __FILE_POS__) #define mem_strdup(s) dbg_strdup ((s), __FILE_POS__) #define mem_free(p) dbg_free ((p), __FILE_POS__) void *dbg_malloc(size_t, const char *); void *dbg_calloc(size_t, size_t, const char *); void *dbg_realloc(void *, size_t, size_t, const char *); char *dbg_strdup(const char *, const char *); void dbg_free(void *, const char *); void mem_stats(void); #else /* MEMORY DEBUG disabled */ #define mem_malloc(s) xmalloc ((s)) #define mem_calloc(n, s) xcalloc ((n), (s)) #define mem_realloc(p, n, s) xrealloc ((p), (n), (s)) #define mem_strdup(s) xstrdup ((s)) #define mem_free(p) xfree ((p)) #define mem_stats() #endif /* CALCURSE_MEMORY_DEBUG */ /* note.c */ char *generate_note(const char *); void edit_note(char **, const char *); void view_note(const char *, const char *); void erase_note(char **); void note_read(char *, FILE *); void note_gc(void); /* notify.c */ int notify_time_left(void); unsigned notify_needs_reminder(void); void notify_update_app(long, char, char *); int notify_bar(void); void notify_init_vars(void); void notify_init_bar(void); void notify_free_app(void); void notify_start_main_thread(void); void notify_stop_main_thread(void); void notify_reinit_bar(void); unsigned notify_launch_cmd(void); void notify_update_bar(void); unsigned notify_get_next(struct notify_app *); unsigned notify_get_next_bkgd(void); char *notify_app_txt(void); void notify_check_next_app(int); void notify_check_added(char *, long, char); void notify_check_repeated(struct recur_apoint *); int notify_same_item(long); int notify_same_recur_item(struct recur_apoint *); void notify_config_bar(void); /* pcal.c */ void pcal_export_data(FILE *); /* recur.c */ extern llist_ts_t recur_alist_p; extern llist_t recur_elist; struct recur_event *recur_event_dup(struct recur_event *); struct recur_apoint *recur_apoint_dup(struct recur_apoint *); void recur_event_free_bkp(void); void recur_apoint_free_bkp(void); void recur_event_free(struct recur_event *); void recur_apoint_free(struct recur_apoint *); void recur_apoint_llist_init(void); void recur_apoint_llist_free(void); void recur_event_llist_free(void); struct recur_apoint *recur_apoint_new(char *, char *, long, long, char, int, int, long, llist_t *); struct recur_event *recur_event_new(char *, char *, long, int, int, int, long, llist_t *); char recur_def2char(enum recur_type); int recur_char2def(char); struct recur_apoint *recur_apoint_scan(FILE *, struct tm, struct tm, char, int, struct tm, char *, llist_t *, char); struct recur_event *recur_event_scan(FILE *, struct tm, int, char, int, struct tm, char *, llist_t *); void recur_apoint_write(struct recur_apoint *, FILE *); void recur_event_write(struct recur_event *, FILE *); void recur_save_data(FILE *); unsigned recur_item_find_occurrence(long, long, llist_t *, int, int, long, long, unsigned *); unsigned recur_apoint_find_occurrence(struct recur_apoint *, long, unsigned *); unsigned recur_event_find_occurrence(struct recur_event *, long, unsigned *); unsigned recur_item_inday(long, long, llist_t *, int, int, long, long); unsigned recur_apoint_inday(struct recur_apoint *, long *); unsigned recur_event_inday(struct recur_event *, long *); void recur_event_add_exc(struct recur_event *, long); void recur_apoint_add_exc(struct recur_apoint *, long); void recur_event_erase(struct recur_event *); void recur_apoint_erase(struct recur_apoint *); void recur_exc_scan(llist_t *, FILE *); struct notify_app *recur_apoint_check_next(struct notify_app *, long, long); void recur_apoint_switch_notify(struct recur_apoint *); void recur_event_paste_item(struct recur_event *, long); void recur_apoint_paste_item(struct recur_apoint *, long); /* sigs.c */ void sigs_init(void); unsigned sigs_set_hdlr(int, void (*)(int)); void sigs_ignore(void); void sigs_unignore(void); /* todo.c */ extern llist_t todolist; struct todo *todo_get_item(int); void todo_hilt_set(int); void todo_hilt_decrease(int); void todo_hilt_increase(int); int todo_hilt(void); int todo_nb(void); void todo_set_nb(int); void todo_set_first(int); void todo_first_increase(int); void todo_first_decrease(int); int todo_hilt_pos(void); char *todo_saved_mesg(void); struct todo *todo_add(char *, int, char *); void todo_write(struct todo *, FILE *); void todo_delete_note(struct todo *); void todo_delete(struct todo *); void todo_flag(struct todo *); void todo_chg_priority(struct todo *, int); void todo_update_panel(int); void todo_edit_note(struct todo *, const char *); void todo_view_note(struct todo *, const char *); void todo_free(struct todo *); void todo_init_list(void); void todo_free_list(void); /* utf8.c */ int utf8_width(char *); int utf8_strwidth(char *); /* utils.c */ void exit_calcurse(int) __attribute__ ((__noreturn__)); void free_user_data(void); void fatalbox(const char *); void warnbox(const char *); void status_mesg(const char *, const char *); int status_ask_choice(const char *, const char[], int); int status_ask_bool(const char *); int status_ask_simplechoice(const char *, const char *[], int); void erase_window_part(WINDOW *, int, int, int, int); WINDOW *popup(int, int, int, int, const char *, const char *, int); void print_in_middle(WINDOW *, int, int, int, const char *); int is_all_digit(const char *); long get_item_time(long); int get_item_hour(long); int get_item_min(long); long date2sec(struct date, unsigned, unsigned); char *date_sec2date_str(long, const char *); void date_sec2date_fmt(long, const char *, char *); long date_sec_change(long, int, int); long update_time_in_date(long, unsigned, unsigned); long get_sec_date(struct date); long min2sec(unsigned); void draw_scrollbar(WINDOW *, int, int, int, int, int, unsigned); void item_in_popup(const char *, const char *, const char *, const char *); long get_today(void); long now(void); char *nowstr(void); long mystrtol(const char *); void print_bool_option_incolor(WINDOW *, unsigned, int, int); const char *get_tempdir(void); char *new_tempfile(const char *, int); int parse_date(const char *, enum datefmt, int *, int *, int *, struct date *); int parse_time(const char *, unsigned *, unsigned *); int parse_duration(const char *, unsigned *); void str_toupper(char *); void file_close(FILE *, const char *); void psleep(unsigned); int fork_exec(int *, int *, const char *, const char *const *); int shell_exec(int *, int *, const char *, const char *const *); int child_wait(int *, int *, int); void press_any_key(void); void print_apoint(const char *, long, struct apoint *); void print_event(const char *, long, struct event *); void print_recur_apoint(const char *, long, unsigned, struct recur_apoint *); void print_recur_event(const char *, long, struct recur_event *); void print_todo(const char *, struct todo *); /* vars.c */ extern int col, row; extern int resize; extern unsigned colorize; extern int foreground, background; extern enum ui_mode ui_mode; extern int read_only; extern const char *datefmt_str[DATE_FORMATS]; extern int days[12]; extern const char *monthnames[12]; extern const char *daynames[8]; extern char path_dir[BUFSIZ]; extern char path_todo[BUFSIZ]; extern char path_apts[BUFSIZ]; extern char path_conf[BUFSIZ]; extern char path_keys[BUFSIZ]; extern char path_notes[BUFSIZ]; extern char path_cpid[BUFSIZ]; extern char path_dpid[BUFSIZ]; extern char path_dmon_log[BUFSIZ]; extern struct conf conf; extern struct pad apad; extern struct nbar nbar; extern struct dmon_conf dmon; void vars_init(void); /* wins.c */ extern struct window win[NBWINS]; unsigned wins_nbar_lock(void); void wins_nbar_unlock(void); void wins_nbar_cleanup(void *); unsigned wins_calendar_lock(void); void wins_calendar_unlock(void); void wins_calendar_cleanup(void *); int wins_refresh(void); int wins_wrefresh(WINDOW *); int wins_doupdate(void); int wins_layout(void); void wins_set_layout(int); unsigned wins_sbar_width(void); unsigned wins_sbar_wperc(void); void wins_set_sbar_width(unsigned); void wins_sbar_winc(void); void wins_sbar_wdec(void); enum win wins_slctd(void); void wins_slctd_set(enum win); void wins_slctd_next(void); void wins_init(void); void wins_scrollwin_init(struct scrollwin *); void wins_scrollwin_delete(struct scrollwin *); void wins_scrollwin_display(struct scrollwin *); void wins_scrollwin_up(struct scrollwin *, int); void wins_scrollwin_down(struct scrollwin *, int); void wins_reinit(void); void wins_reinit_panels(void); void wins_show(WINDOW *, const char *); void wins_get_config(void); void wins_update_border(int); void wins_update_panels(int); void wins_update(int); void wins_reset(void); void wins_prepare_external(void); void wins_unprepare_external(void); void wins_launch_external(const char *, const char *); void wins_status_bar(void); void wins_erase_status_bar(void); void wins_other_status_page(int); void wins_reset_status_page(void); #endif /* CALCURSE_H */ calcurse-3.1.4/src/io.c0000644000175000001440000010206312105444321011575 00000000000000/* * Calcurse - text-based organizer * * Copyright (c) 2004-2013 calcurse Development Team * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * - Redistributions of source code must retain the above * copyright notice, this list of conditions and the * following disclaimer. * * - Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the * following disclaimer in the documentation and/or other * materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * Send your feedback or comments to : misc@calcurse.org * Calcurse home page : http://calcurse.org * */ #include #include #include #include #include #include #include #include #include #include "calcurse.h" #include "sha1.h" typedef enum { PROGRESS_BAR_SAVE, PROGRESS_BAR_LOAD, PROGRESS_BAR_EXPORT } progress_bar_t; enum { PROGRESS_BAR_CONF, PROGRESS_BAR_TODO, PROGRESS_BAR_APTS, PROGRESS_BAR_KEYS }; enum { PROGRESS_BAR_EXPORT_EVENTS, PROGRESS_BAR_EXPORT_APOINTS, PROGRESS_BAR_EXPORT_TODO }; struct ht_keybindings_s { const char *label; enum key key; HTABLE_ENTRY(ht_keybindings_s); }; static void load_keys_ht_getkey(struct ht_keybindings_s *, const char **, int *); static int load_keys_ht_compare(struct ht_keybindings_s *, struct ht_keybindings_s *); #define HSIZE 256 HTABLE_HEAD(ht_keybindings, HSIZE, ht_keybindings_s); HTABLE_PROTOTYPE(ht_keybindings, ht_keybindings_s) HTABLE_GENERATE(ht_keybindings, ht_keybindings_s, load_keys_ht_getkey, load_keys_ht_compare) /* Draw a progress bar while saving, loading or exporting data. */ static void progress_bar(progress_bar_t type, int progress) { #define NBFILES 4 #define NBEXPORTED 3 #define LABELENGTH 15 int i, step, steps; const char *mesg_sav = _("Saving..."); const char *mesg_load = _("Loading..."); const char *mesg_export = _("Exporting..."); const char *error_msg = _("Internal error while displaying progress bar"); const char *barchar = "|"; const char *file[NBFILES] = { "[ conf ]", "[ todo ]", "[ apts ]", "[ keys ]" }; const char *data[NBEXPORTED] = { "[ events ]", "[appointments]", "[ todo ]" }; int ipos = LABELENGTH + 2; int epos[NBFILES]; /* progress bar length init. */ ipos = LABELENGTH + 2; steps = (type == PROGRESS_BAR_EXPORT) ? NBEXPORTED : NBFILES; step = floor(col / (steps + 1)); for (i = 0; i < steps - 1; i++) epos[i] = (i + 2) * step; epos[steps - 1] = col - 2; switch (type) { case PROGRESS_BAR_SAVE: EXIT_IF(progress < 0 || progress > PROGRESS_BAR_KEYS, "%s", error_msg); status_mesg(mesg_sav, file[progress]); break; case PROGRESS_BAR_LOAD: EXIT_IF(progress < 0 || progress > PROGRESS_BAR_KEYS, "%s", error_msg); status_mesg(mesg_load, file[progress]); break; case PROGRESS_BAR_EXPORT: EXIT_IF(progress < 0 || progress > PROGRESS_BAR_EXPORT_TODO, "%s", error_msg); status_mesg(mesg_export, data[progress]); break; } /* Draw the progress bar. */ mvwaddstr(win[STA].p, 1, ipos, barchar); mvwaddstr(win[STA].p, 1, epos[steps - 1], barchar); custom_apply_attr(win[STA].p, ATTR_HIGHEST); for (i = ipos + 1; i < epos[progress]; i++) mvwaddch(win[STA].p, 1, i, ' ' | A_REVERSE); custom_remove_attr(win[STA].p, ATTR_HIGHEST); wmove(win[STA].p, 0, 0); wins_wrefresh(win[STA].p); #undef NBFILES #undef NBEXPORTED #undef LABELENGTH } /* Ask user for a file name to export data to. */ static FILE *get_export_stream(enum export_type type) { FILE *stream; char *home, *stream_name; const char *question = _("Choose the file used to export calcurse data:"); const char *wrong_name = _("The file cannot be accessed, please enter another file name."); const char *press_enter = _("Press [ENTER] to continue."); const char *file_ext[IO_EXPORT_NBTYPES] = { "ical", "txt" }; stream = NULL; stream_name = (char *)mem_malloc(BUFSIZ); if ((home = getenv("HOME")) != NULL) snprintf(stream_name, BUFSIZ, "%s/calcurse.%s", home, file_ext[type]); else snprintf(stream_name, BUFSIZ, "%s/calcurse.%s", get_tempdir(), file_ext[type]); while (stream == NULL) { status_mesg(question, ""); if (updatestring(win[STA].p, &stream_name, 0, 1)) { mem_free(stream_name); return NULL; } stream = fopen(stream_name, "w"); if (stream == NULL) { status_mesg(wrong_name, press_enter); wgetch(win[KEY].p); } } mem_free(stream_name); return stream; } /* Append a line to a file. */ unsigned io_fprintln(const char *fname, const char *fmt, ...) { FILE *fp; va_list ap; char buf[BUFSIZ]; int ret; fp = fopen(fname, "a"); RETVAL_IF(!fp, 0, _("Failed to open \"%s\", - %s\n"), fname, strerror(errno)); va_start(ap, fmt); ret = vsnprintf(buf, sizeof buf, fmt, ap); RETVAL_IF(ret < 0, 0, _("Failed to build message\n")); va_end(ap); ret = fprintf(fp, "%s", buf); RETVAL_IF(ret < 0, 0, _("Failed to print message \"%s\"\n"), buf); ret = fclose(fp); RETVAL_IF(ret != 0, 0, _("Failed to close \"%s\" - %s\n"), fname, strerror(errno)); return 1; } /* * Initialization of data paths. The cfile argument is the variable * which contains the calendar file. If none is given, then the default * one (~/.calcurse/apts) is taken. If the one given does not exist, it * is created. * The datadir argument can be use to specify an alternative data root dir. */ void io_init(const char *cfile, const char *datadir) { FILE *data_file; const char *home; char apts_file[BUFSIZ] = ""; int ch; if (datadir != NULL) { home = datadir; snprintf(path_dir, BUFSIZ, "%s", home); snprintf(path_todo, BUFSIZ, "%s/" TODO_PATH_NAME, home); snprintf(path_conf, BUFSIZ, "%s/" CONF_PATH_NAME, home); snprintf(path_notes, BUFSIZ, "%s/" NOTES_DIR_NAME, home); snprintf(path_keys, BUFSIZ, "%s/" KEYS_PATH_NAME, home); snprintf(path_cpid, BUFSIZ, "%s/" CPID_PATH_NAME, home); snprintf(path_dpid, BUFSIZ, "%s/" DPID_PATH_NAME, home); snprintf(path_dmon_log, BUFSIZ, "%s/" DLOG_PATH_NAME, home); } else { home = getenv("HOME"); if (home == NULL) { home = "."; } snprintf(path_dir, BUFSIZ, "%s/" DIR_NAME, home); snprintf(path_todo, BUFSIZ, "%s/" TODO_PATH, home); snprintf(path_conf, BUFSIZ, "%s/" CONF_PATH, home); snprintf(path_keys, BUFSIZ, "%s/" KEYS_PATH, home); snprintf(path_cpid, BUFSIZ, "%s/" CPID_PATH, home); snprintf(path_dpid, BUFSIZ, "%s/" DPID_PATH, home); snprintf(path_dmon_log, BUFSIZ, "%s/" DLOG_PATH, home); snprintf(path_notes, BUFSIZ, "%s/" NOTES_DIR, home); } if (cfile == NULL) { if (datadir != NULL) { snprintf(path_apts, BUFSIZ, "%s/" APTS_PATH_NAME, home); } else { snprintf(path_apts, BUFSIZ, "%s/" APTS_PATH, home); } } else { snprintf(apts_file, BUFSIZ, "%s", cfile); strncpy(path_apts, apts_file, BUFSIZ); /* check if the file exists, otherwise create it */ data_file = fopen(path_apts, "r"); if (data_file == NULL) { printf(_("%s does not exist, create it now [y or n] ? "), path_apts); ch = getchar(); switch (ch) { case 'N': case 'n': puts(_("aborting...\n")); exit_calcurse(EXIT_FAILURE); break; case 'Y': case 'y': data_file = fopen(path_apts, "w"); if (data_file == NULL) { perror(path_apts); exit_calcurse(EXIT_FAILURE); } else { printf(_("%s successfully created\n"), path_apts); puts(_("starting interactive mode...\n")); } break; default: puts(_("aborting...\n")); exit_calcurse(EXIT_FAILURE); break; } } file_close(data_file, __FILE_POS__); } } void io_extract_data(char *dst_data, const char *org, int len) { int i; for (; *org == ' ' || *org == '\t'; org++) ; for (i = 0; i < len - 1; i++) { if (*org == '\n' || *org == '\0' || *org == '#') break; *dst_data++ = *org++; } *dst_data = '\0'; } static pthread_mutex_t io_save_mutex = PTHREAD_MUTEX_INITIALIZER; /* * Save the apts data file, which contains the * appointments first, and then the events. * Recursive items are written first. */ unsigned io_save_apts(void) { llist_item_t *i; FILE *fp; if (read_only) return 1; if ((fp = fopen(path_apts, "w")) == NULL) return 0; recur_save_data(fp); if (ui_mode == UI_CURSES) LLIST_TS_LOCK(&alist_p); LLIST_TS_FOREACH(&alist_p, i) { struct apoint *apt = LLIST_TS_GET_DATA(i); apoint_write(apt, fp); } if (ui_mode == UI_CURSES) LLIST_TS_UNLOCK(&alist_p); LLIST_FOREACH(&eventlist, i) { struct event *ev = LLIST_TS_GET_DATA(i); event_write(ev, fp); } file_close(fp, __FILE_POS__); return 1; } /* Save the todo data file. */ unsigned io_save_todo(void) { llist_item_t *i; FILE *fp; if (read_only) return 1; if ((fp = fopen(path_todo, "w")) == NULL) return 0; LLIST_FOREACH(&todolist, i) { struct todo *todo = LLIST_TS_GET_DATA(i); todo_write(todo, fp); } file_close(fp, __FILE_POS__); return 1; } /* Save user-defined keys */ unsigned io_save_keys(void) { FILE *fp; if (read_only) return 1; if ((fp = fopen(path_keys, "w")) == NULL) return 0; keys_save_bindings(fp); file_close(fp, __FILE_POS__); return 1; } /* Save the calendar data */ void io_save_cal(enum save_display display) { const char *access_pb = _("Problems accessing data file ..."); const char *save_success = _("The data files were successfully saved"); const char *enter = _("Press [ENTER] to continue"); int show_bar; if (read_only) return; pthread_mutex_lock(&io_save_mutex); show_bar = 0; if (ui_mode == UI_CURSES && display == IO_SAVE_DISPLAY_BAR && conf.progress_bar) show_bar = 1; if (show_bar) progress_bar(PROGRESS_BAR_SAVE, PROGRESS_BAR_CONF); if (!config_save()) ERROR_MSG("%s", access_pb); if (show_bar) progress_bar(PROGRESS_BAR_SAVE, PROGRESS_BAR_TODO); if (!io_save_todo()) ERROR_MSG("%s", access_pb); if (show_bar) progress_bar(PROGRESS_BAR_SAVE, PROGRESS_BAR_APTS); if (!io_save_apts()) ERROR_MSG("%s", access_pb); if (show_bar) progress_bar(PROGRESS_BAR_SAVE, PROGRESS_BAR_KEYS); if (!io_save_keys()) ERROR_MSG("%s", access_pb); /* Print a message telling data were saved */ if (ui_mode == UI_CURSES && conf.system_dialogs) { status_mesg(save_success, enter); wgetch(win[KEY].p); } pthread_mutex_unlock(&io_save_mutex); } static void io_load_error(const char *filename, unsigned line, const char *mesg) { EXIT("%s:%u: %s", filename, line, mesg); } /* * Check what type of data is written in the appointment file, * and then load either: a new appointment, a new event, or a new * recursive item (which can also be either an event or an appointment). */ void io_load_app(void) { FILE *data_file; int c, is_appointment, is_event, is_recursive; struct tm start, end, until, lt; llist_t exc; time_t t; int id = 0; int freq; char type, state = 0L; char note[MAX_NOTESIZ + 1], *notep; unsigned line = 0; t = time(NULL); localtime_r(&t, <); start = end = until = lt; data_file = fopen(path_apts, "r"); EXIT_IF(data_file == NULL, _("failed to open appointment file")); for (;;) { LLIST_INIT(&exc); is_appointment = is_event = is_recursive = 0; line++; c = getc(data_file); if (c == EOF) break; ungetc(c, data_file); /* Read the date first: it is common to both events * and appointments. */ if (fscanf(data_file, "%d / %d / %d ", &start.tm_mon, &start.tm_mday, &start.tm_year) != 3) io_load_error(path_apts, line, _("syntax error in the item date")); /* Read the next character : if it is an '@' then we have * an appointment, else if it is an '[' we have en event. */ c = getc(data_file); if (c == '@') is_appointment = 1; else if (c == '[') is_event = 1; else io_load_error(path_apts, line, _("no event nor appointment found")); /* Read the remaining informations. */ if (is_appointment) { if (fscanf(data_file, " %d : %d -> %d / %d / %d @ %d : %d ", &start.tm_hour, &start.tm_min, &end.tm_mon, &end.tm_mday, &end.tm_year, &end.tm_hour, &end.tm_min) != 7) io_load_error(path_apts, line, _("syntax error in item time or duration")); } else if (is_event) { if (fscanf(data_file, " %d ", &id) != 1 || getc(data_file) != ']') io_load_error(path_apts, line, _("syntax error in item identifier")); while ((c = getc(data_file)) == ' ') ; ungetc(c, data_file); } else { io_load_error(path_apts, line, _("wrong format in the appointment or event")); /* NOTREACHED */ } /* Check if we have a recursive item. */ c = getc(data_file); if (c == '{') { is_recursive = 1; if (fscanf(data_file, " %d%c ", &freq, &type) != 2) io_load_error(path_apts, line, _("syntax error in item repetition")); c = getc(data_file); if (c == '}') { /* endless recurrent item */ until.tm_year = 0; while ((c = getc(data_file)) == ' ') ; ungetc(c, data_file); } else if (c == '-' && getc(data_file) == '>') { if (fscanf(data_file, " %d / %d / %d ", &until.tm_mon, &until.tm_mday, &until.tm_year) != 3) io_load_error(path_apts, line, _("syntax error in item repetition")); c = getc(data_file); if (c == '!') { ungetc(c, data_file); recur_exc_scan(&exc, data_file); while ((c = getc(data_file)) == ' ') ; ungetc(c, data_file); } else if (c == '}') { while ((c = getc(data_file)) == ' ') ; ungetc(c, data_file); } else io_load_error(path_apts, line, _("syntax error in item repetition")); } else if (c == '!') { /* endless item with exceptions */ ungetc(c, data_file); recur_exc_scan(&exc, data_file); while ((c = getc(data_file)) == ' ') ; ungetc(c, data_file); until.tm_year = 0; } else { io_load_error(path_apts, line, _("wrong format in the appointment or event")); /* NOTREACHED */ } } else ungetc(c, data_file); /* Check if a note is attached to the item. */ c = getc(data_file); if (c == '>') { note_read(note, data_file); notep = note; } else { notep = NULL; ungetc(c, data_file); } /* * Last: read the item description and load it into its * corresponding linked list, depending on the item type. */ if (is_appointment) { c = getc(data_file); if (c == '!') { state |= APOINT_NOTIFY; while ((c = getc(data_file)) == ' ') ; ungetc(c, data_file); } else if (c == '|') { state = 0L; while ((c = getc(data_file)) == ' ') ; ungetc(c, data_file); } else io_load_error(path_apts, line, _("syntax error in item repetition")); if (is_recursive) { recur_apoint_scan(data_file, start, end, type, freq, until, notep, &exc, state); } else { apoint_scan(data_file, start, end, state, notep); } } else if (is_event) { if (is_recursive) { recur_event_scan(data_file, start, id, type, freq, until, notep, &exc); } else { event_scan(data_file, start, id, notep); } } else { io_load_error(path_apts, line, _("wrong format in the appointment or event")); /* NOTREACHED */ } } file_close(data_file, __FILE_POS__); } /* Load the todo data */ void io_load_todo(void) { FILE *data_file; char *newline; int nb_tod = 0; int c, id; char buf[BUFSIZ], e_todo[BUFSIZ], note[MAX_NOTESIZ + 1]; unsigned line = 0; data_file = fopen(path_todo, "r"); EXIT_IF(data_file == NULL, _("failed to open todo file")); for (;;) { line++; c = getc(data_file); if (c == EOF) break; else if (c == '[') { /* new style with id */ if (fscanf(data_file, " %d ", &id) != 1 || getc(data_file) != ']') io_load_error(path_todo, line, _("syntax error in item identifier")); while ((c = getc(data_file)) == ' ') ; ungetc(c, data_file); } else { id = 9; ungetc(c, data_file); } /* Now read the attached note, if any. */ c = getc(data_file); if (c == '>') note_read(note, data_file); else { note[0] = '\0'; ungetc(c, data_file); } /* Then read todo description. */ if (!fgets(buf, sizeof buf, data_file)) buf[0] = '\0'; newline = strchr(buf, '\n'); if (newline) *newline = '\0'; io_extract_data(e_todo, buf, sizeof buf); todo_add(e_todo, id, note); ++nb_tod; } file_close(data_file, __FILE_POS__); todo_set_nb(nb_tod); } static void load_keys_ht_getkey(struct ht_keybindings_s *data, const char **key, int *len) { *key = data->label; *len = strlen(data->label); } static int load_keys_ht_compare(struct ht_keybindings_s *data1, struct ht_keybindings_s *data2) { const int KEYLEN = strlen(data1->label); if (strlen(data2->label) == KEYLEN && !memcmp(data1->label, data2->label, KEYLEN)) return 0; else return 1; } /* * isblank(3) is protected by the __BSD_VISIBLE macro and this fails to be * visible in some specific cases. Thus replace it by the following is_blank() * function. */ static int is_blank(int c) { return c == ' ' || c == '\t'; } /* * Load user-definable keys from file. * A hash table is used to speed up loading process in avoiding string * comparisons. * A log file is also built in case some errors were found in the key * configuration file. */ void io_load_keys(const char *pager) { struct ht_keybindings_s keys[NBKEYS]; FILE *keyfp; char buf[BUFSIZ]; struct io_file *log; int i, skipped, loaded, line; const int MAX_ERRORS = 5; keys_init(); struct ht_keybindings ht_keys = HTABLE_INITIALIZER(&ht_keys); for (i = 0; i < NBKEYS; i++) { keys[i].key = (enum key)i; keys[i].label = keys_get_label((enum key)i); HTABLE_INSERT(ht_keybindings, &ht_keys, &keys[i]); } keyfp = fopen(path_keys, "r"); EXIT_IF(keyfp == NULL, _("failed to open key file")); log = io_log_init(); skipped = loaded = line = 0; while (fgets(buf, BUFSIZ, keyfp) != NULL) { char key_label[BUFSIZ], *p; struct ht_keybindings_s *ht_elm, ht_entry; const int AWAITED = 1; int assigned; line++; if (skipped > MAX_ERRORS) { const char *too_many = _("\nToo many errors while reading configuration file!\n" "Please backup your keys file, remove it from directory, " "and launch calcurse again.\n"); io_log_print(log, line, too_many); break; } for (p = buf; is_blank((int)*p); p++) ; if (p != buf) memmove(buf, p, strlen(p)); if (buf[0] == '#' || buf[0] == '\n') continue; if (sscanf(buf, "%s", key_label) != AWAITED) { skipped++; io_log_print(log, line, _("Could not read key label")); continue; } /* Skip legacy entries. */ if (strcmp(key_label, "generic-cut") == 0) continue; ht_entry.label = key_label; p = buf + strlen(key_label) + 1; ht_elm = HTABLE_LOOKUP(ht_keybindings, &ht_keys, &ht_entry); if (!ht_elm) { skipped++; io_log_print(log, line, _("Key label not recognized")); continue; } assigned = 0; for (;;) { char key_ch[BUFSIZ], tmpbuf[BUFSIZ]; while (*p == ' ') p++; (void)strncpy(tmpbuf, p, BUFSIZ); if (sscanf(tmpbuf, "%s", key_ch) == AWAITED) { int ch; if ((ch = keys_str2int(key_ch)) < 0) { char unknown_key[BUFSIZ]; skipped++; (void)snprintf(unknown_key, BUFSIZ, _("Error reading key: \"%s\""), key_ch); io_log_print(log, line, unknown_key); } else { int used; used = keys_assign_binding(ch, ht_elm->key); if (used) { char already_assigned[BUFSIZ]; skipped++; (void)snprintf(already_assigned, BUFSIZ, _("\"%s\" assigned multiple times!"), key_ch); io_log_print(log, line, already_assigned); } else assigned++; } p += strlen(key_ch) + 1; } else { if (assigned) loaded++; break; } } } file_close(keyfp, __FILE_POS__); file_close(log->fd, __FILE_POS__); if (skipped > 0) { const char *view_log = _("There were some errors when loading keys file, see log file ?"); io_log_display(log, view_log, pager); } io_log_free(log); EXIT_IF(skipped > MAX_ERRORS, _("Too many errors while reading keys file, aborting...")); if (loaded < NBKEYS) keys_fill_missing(); if (keys_check_missing_bindings()) WARN_MSG(_("Some actions do not have any associated key bindings!")); } int io_check_dir(const char *dir) { if (read_only) return -1; errno = 0; if (mkdir(dir, 0700) != 0) { if (errno != EEXIST) { fprintf(stderr, _("FATAL ERROR: could not create %s: %s\n"), dir, strerror(errno)); exit_calcurse(EXIT_FAILURE); } else { return 1; } } else { return 0; } } unsigned io_file_exist(const char *file) { FILE *fd; if (file && (fd = fopen(file, "r")) != NULL) { fclose(fd); return 1; } else { return 0; } } int io_check_file(const char *file) { if (read_only) return -1; errno = 0; if (io_file_exist(file)) { return 1; } else { FILE *fd; if ((fd = fopen(file, "w")) == NULL) { fprintf(stderr, _("FATAL ERROR: could not create %s: %s\n"), file, strerror(errno)); exit_calcurse(EXIT_FAILURE); } file_close(fd, __FILE_POS__); return 0; } } /* * Checks if data files exist. If not, create them. * The following structure has to be created: * * $HOME/.calcurse/ * | * +--- notes/ * |___ conf * |___ keys * |___ apts * |___ todo */ int io_check_data_files(void) { int missing = 0; missing += io_check_dir(path_dir) ? 0 : 1; missing += io_check_dir(path_notes) ? 0 : 1; missing += io_check_file(path_todo) ? 0 : 1; missing += io_check_file(path_apts) ? 0 : 1; missing += io_check_file(path_conf) ? 0 : 1; if (!io_check_file(path_keys)) { missing++; keys_dump_defaults(path_keys); } return missing; } /* Draw the startup screen */ void io_startup_screen(int no_data_file) { const char *enter = _("Press [ENTER] to continue"); if (no_data_file) status_mesg(_("Welcome to Calcurse. Missing data files were created."), enter); else status_mesg(_("Data files found. Data will be loaded now."), enter); wgetch(win[KEY].p); } /* Export calcurse data. */ void io_export_data(enum export_type type) { FILE *stream = NULL; const char *success = _("The data were successfully exported"); const char *enter = _("Press [ENTER] to continue"); if (type < IO_EXPORT_ICAL || type >= IO_EXPORT_NBTYPES) EXIT(_("unknown export type")); switch (ui_mode) { case UI_CMDLINE: stream = stdout; break; case UI_CURSES: stream = get_export_stream(type); break; default: EXIT(_("wrong export mode")); /* NOTREACHED */ } if (stream == NULL) return; if (type == IO_EXPORT_ICAL) ical_export_data(stream); else if (type == IO_EXPORT_PCAL) pcal_export_data(stream); if (conf.system_dialogs && ui_mode == UI_CURSES) { status_mesg(success, enter); wgetch(win[KEY].p); } } static FILE *get_import_stream(enum import_type type) { FILE *stream = NULL; char *stream_name; const char *ask_fname = _("Enter the file name to import data from:"); const char *wrong_file = _("The file cannot be accessed, please enter another file name."); const char *press_enter = _("Press [ENTER] to continue."); stream_name = mem_malloc(BUFSIZ); memset(stream_name, 0, BUFSIZ); while (stream == NULL) { status_mesg(ask_fname, ""); if (updatestring(win[STA].p, &stream_name, 0, 1)) { mem_free(stream_name); return NULL; } stream = fopen(stream_name, "r"); if (stream == NULL) { status_mesg(wrong_file, press_enter); wgetch(win[KEY].p); } } mem_free(stream_name); return stream; } /* * Import data from a given stream (either stdin in non-interactive mode, or the * user given file in interactive mode). * A temporary log file is created in /tmp to store the import process report, * and is cleared at the end. */ void io_import_data(enum import_type type, const char *stream_name) { const char *proc_report = _("Import process report: %04d lines read "); char stats_str[4][BUFSIZ]; FILE *stream = NULL; struct io_file *log; struct { unsigned events, apoints, todos, lines, skipped; } stats; EXIT_IF(type < 0 || type >= IO_IMPORT_NBTYPES, _("unknown import type")); switch (ui_mode) { case UI_CMDLINE: stream = fopen(stream_name, "r"); EXIT_IF(stream == NULL, _("FATAL ERROR: the input file cannot be accessed, " "Aborting...")); break; case UI_CURSES: stream = get_import_stream(type); break; default: EXIT(_("FATAL ERROR: wrong import mode")); /* NOTREACHED */ } if (stream == NULL) return; memset(&stats, 0, sizeof stats); log = io_log_init(); if (log == NULL) { if (stream != stdin) file_close(stream, __FILE_POS__); return; } if (type == IO_IMPORT_ICAL) ical_import_data(stream, log->fd, &stats.events, &stats.apoints, &stats.todos, &stats.lines, &stats.skipped); if (stream != stdin) file_close(stream, __FILE_POS__); snprintf(stats_str[0], BUFSIZ, ngettext("%d app", "%d apps", stats.apoints), stats.apoints); snprintf(stats_str[1], BUFSIZ, ngettext("%d event", "%d events", stats.events), stats.events); snprintf(stats_str[2], BUFSIZ, ngettext("%d todo", "%d todos", stats.todos), stats.todos); snprintf(stats_str[3], BUFSIZ, _("%d skipped"), stats.skipped); /* Update the number of todo items. */ todo_set_nb(todo_nb() + stats.todos); if (ui_mode == UI_CURSES && conf.system_dialogs) { char read[BUFSIZ], stat[BUFSIZ]; snprintf(read, BUFSIZ, proc_report, stats.lines); snprintf(stat, BUFSIZ, "%s / %s / %s / %s (%s)", stats_str[0], stats_str[1], stats_str[2], stats_str[3], _("Press [ENTER] to continue")); status_mesg(read, stat); wgetch(win[KEY].p); } else if (ui_mode == UI_CMDLINE) { printf(proc_report, stats.lines); printf("\n%s / %s / %s / %s\n", stats_str[0], stats_str[1], stats_str[2], stats_str[3]); } /* User has the choice to look at the log file if some items could not be imported. */ file_close(log->fd, __FILE_POS__); if (stats.skipped > 0) { const char *view_log = _("Some items could not be imported, see log file ?"); io_log_display(log, view_log, conf.pager); } io_log_free(log); } struct io_file *io_log_init(void) { char logprefix[BUFSIZ]; char *logname; struct io_file *log; snprintf(logprefix, BUFSIZ, "%s/calcurse_log.", get_tempdir()); logname = new_tempfile(logprefix, TMPEXTSIZ); RETVAL_IF(logname == NULL, 0, _("Warning: could not create temporary log file, Aborting...")); log = mem_malloc(sizeof(struct io_file)); RETVAL_IF(log == NULL, 0, _("Warning: could not open temporary log file, Aborting...")); snprintf(log->name, sizeof(log->name), "%s%s", logprefix, logname); mem_free(logname); log->fd = fopen(log->name, "w"); if (log->fd == NULL) { ERROR_MSG(_("Warning: could not open temporary log file, Aborting...")); mem_free(log); return 0; } return log; } void io_log_print(struct io_file *log, int line, const char *msg) { if (log && log->fd) fprintf(log->fd, "line %d: %s\n", line, msg); } void io_log_display(struct io_file *log, const char *msg, const char *pager) { RETURN_IF(log == NULL, _("No log file to display!")); if (ui_mode == UI_CMDLINE) { printf("\n%s [y/n] ", msg); if (fgetc(stdin) == 'y') { const char *arg[] = { pager, log->name, NULL }; int pid; if ((pid = fork_exec(NULL, NULL, pager, arg))) child_wait(NULL, NULL, pid); } } else { if (status_ask_bool(msg) == 1) wins_launch_external(log->name, pager); wins_erase_status_bar(); } } void io_log_free(struct io_file *log) { if (!log) return; EXIT_IF(unlink(log->name) != 0, _("Warning: could not erase temporary log file %s, Aborting..."), log->name); mem_free(log); } static pthread_t io_t_psave; /* Thread used to periodically save data. */ static void *io_psave_thread(void *arg) { int delay = conf.periodic_save; EXIT_IF(delay < 0, _("Invalid delay")); for (;;) { sleep(delay * MININSEC); io_save_cal(IO_SAVE_DISPLAY_NONE); } } /* Launch the thread which handles periodic saves. */ void io_start_psave_thread(void) { pthread_create(&io_t_psave, NULL, io_psave_thread, NULL); } /* Stop periodic data saves. */ void io_stop_psave_thread(void) { if (io_t_psave) { pthread_cancel(io_t_psave); pthread_join(io_t_psave, NULL); } } /* * This sets a lock file to prevent from having two different instances of * calcurse running. * * If the lock cannot be obtained, then warn the user and exit calcurse. Else, * create a .calcurse.pid file in the user defined directory, which will be * removed when calcurse exits. * * Note: When creating the lock file, the interactive mode is not initialized * yet. */ void io_set_lock(void) { FILE *lock = fopen(path_cpid, "r"); int pid; if (lock != NULL) { /* If there is a lock file, check whether the process exists. */ if (fscanf(lock, "%d", &pid) == 1) { fclose(lock); if (kill(pid, 0) != 0 && errno == ESRCH) lock = NULL; } else fclose(lock); } if (lock != NULL) { fprintf(stderr, _("\nWARNING: it seems that another calcurse instance is " "already running.\n" "If this is not the case, please remove the following " "lock file: \n\"%s\"\n" "and restart calcurse.\n"), path_cpid); exit(EXIT_FAILURE); } else { if (!io_dump_pid(path_cpid)) EXIT(_("FATAL ERROR: could not create %s: %s\n"), path_cpid, strerror(errno)); } } /* * Create a new file and write the process pid inside (used to create a simple * lock for example). Overwrite already existing files. */ unsigned io_dump_pid(char *file) { pid_t pid; FILE *fp; if (!file) return 0; pid = getpid(); if (!(fp = fopen(file, "w")) || fprintf(fp, "%ld\n", (long)pid) < 0 || fclose(fp) != 0) return 0; return 1; } /* * Return the pid number contained in a file previously created with * io_dump_pid (). * If no file was found, return 0. */ unsigned io_get_pid(char *file) { FILE *fp; unsigned pid; if (!file) return 0; if ((fp = fopen(file, "r")) == NULL) return 0; if (fscanf(fp, "%u", &pid) != 1) return 0; fclose(fp); return pid; } /* * Check whether a file is empty. */ int io_file_is_empty(char *file) { FILE *fp; if (file && (fp = fopen(file, "r"))) { if ((fgetc(fp) == '\n' && fgetc(fp) == EOF) || feof(fp)) { fclose(fp); return 1; } else { fclose(fp); return 0; } } return -1; } /* * Copy an existing file to a new location. */ int io_file_cp(const char *src, const char *dst) { FILE *fp_src, *fp_dst; char *buffer[BUFSIZ]; unsigned int bytes_read; if (!(fp_src = fopen(src, "rb"))) return 0; if (!(fp_dst = fopen(dst, "wb"))) return 0; while (!feof(fp_src)) { bytes_read = fread(buffer, 1, BUFSIZ, fp_src); if (bytes_read > 0) { if (fwrite(buffer, 1, bytes_read, fp_dst) != bytes_read) return 0; } else return 0; } fclose(fp_dst); fclose(fp_src); return 1; } calcurse-3.1.4/src/utf8.c0000644000175000001440000002106212105444321012053 00000000000000/* * Calcurse - text-based organizer * * Copyright (c) 2004-2013 calcurse Development Team * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * - Redistributions of source code must retain the above * copyright notice, this list of conditions and the * following disclaimer. * * - Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the * following disclaimer in the documentation and/or other * materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * Send your feedback or comments to : misc@calcurse.org * Calcurse home page : http://calcurse.org * */ #include "calcurse.h" struct utf8_range { int min, max, width; }; static const struct utf8_range utf8_widthtab[] = { {0x00300, 0x0036f, 0}, {0x00483, 0x00489, 0}, {0x00591, 0x005bd, 0}, {0x005bf, 0x005bf, 0}, {0x005c1, 0x005c2, 0}, {0x005c4, 0x005c5, 0}, {0x005c7, 0x005c7, 0}, {0x00610, 0x0061a, 0}, {0x0064b, 0x0065e, 0}, {0x00670, 0x00670, 0}, {0x006d6, 0x006dc, 0}, {0x006de, 0x006e4, 0}, {0x006e7, 0x006e8, 0}, {0x006ea, 0x006ed, 0}, {0x00711, 0x00711, 0}, {0x00730, 0x0074a, 0}, {0x007a6, 0x007b0, 0}, {0x007eb, 0x007f3, 0}, {0x00816, 0x00819, 0}, {0x0081b, 0x00823, 0}, {0x00825, 0x00827, 0}, {0x00829, 0x0082d, 0}, {0x00900, 0x00903, 0}, {0x0093c, 0x0093c, 0}, {0x0093e, 0x0094e, 0}, {0x00951, 0x00955, 0}, {0x00962, 0x00963, 0}, {0x00981, 0x00983, 0}, {0x009bc, 0x009bc, 0}, {0x009be, 0x009c4, 0}, {0x009c7, 0x009c8, 0}, {0x009cb, 0x009cd, 0}, {0x009d7, 0x009d7, 0}, {0x009e2, 0x009e3, 0}, {0x00a01, 0x00a03, 0}, {0x00a3c, 0x00a3c, 0}, {0x00a3e, 0x00a42, 0}, {0x00a47, 0x00a48, 0}, {0x00a4b, 0x00a4d, 0}, {0x00a51, 0x00a51, 0}, {0x00a70, 0x00a71, 0}, {0x00a75, 0x00a75, 0}, {0x00a81, 0x00a83, 0}, {0x00abc, 0x00abc, 0}, {0x00abe, 0x00ac5, 0}, {0x00ac7, 0x00ac9, 0}, {0x00acb, 0x00acd, 0}, {0x00ae2, 0x00ae3, 0}, {0x00b01, 0x00b03, 0}, {0x00b3c, 0x00b3c, 0}, {0x00b3e, 0x00b44, 0}, {0x00b47, 0x00b48, 0}, {0x00b4b, 0x00b4d, 0}, {0x00b56, 0x00b57, 0}, {0x00b62, 0x00b63, 0}, {0x00b82, 0x00b82, 0}, {0x00bbe, 0x00bc2, 0}, {0x00bc6, 0x00bc8, 0}, {0x00bca, 0x00bcd, 0}, {0x00bd7, 0x00bd7, 0}, {0x00c01, 0x00c03, 0}, {0x00c3e, 0x00c44, 0}, {0x00c46, 0x00c48, 0}, {0x00c4a, 0x00c4d, 0}, {0x00c55, 0x00c56, 0}, {0x00c62, 0x00c63, 0}, {0x00c82, 0x00c83, 0}, {0x00cbc, 0x00cbc, 0}, {0x00cbe, 0x00cc4, 0}, {0x00cc6, 0x00cc8, 0}, {0x00cca, 0x00ccd, 0}, {0x00cd5, 0x00cd6, 0}, {0x00ce2, 0x00ce3, 0}, {0x00d02, 0x00d03, 0}, {0x00d3e, 0x00d44, 0}, {0x00d46, 0x00d48, 0}, {0x00d4a, 0x00d4d, 0}, {0x00d57, 0x00d57, 0}, {0x00d62, 0x00d63, 0}, {0x00d82, 0x00d83, 0}, {0x00dca, 0x00dca, 0}, {0x00dcf, 0x00dd4, 0}, {0x00dd6, 0x00dd6, 0}, {0x00dd8, 0x00ddf, 0}, {0x00df2, 0x00df3, 0}, {0x00e31, 0x00e31, 0}, {0x00e34, 0x00e3a, 0}, {0x00e47, 0x00e4e, 0}, {0x00eb1, 0x00eb1, 0}, {0x00eb4, 0x00eb9, 0}, {0x00ebb, 0x00ebc, 0}, {0x00ec8, 0x00ecd, 0}, {0x00f18, 0x00f19, 0}, {0x00f35, 0x00f35, 0}, {0x00f37, 0x00f37, 0}, {0x00f39, 0x00f39, 0}, {0x00f3e, 0x00f3f, 0}, {0x00f71, 0x00f84, 0}, {0x00f86, 0x00f87, 0}, {0x00f90, 0x00f97, 0}, {0x00f99, 0x00fbc, 0}, {0x00fc6, 0x00fc6, 0}, {0x0102b, 0x0103e, 0}, {0x01056, 0x01059, 0}, {0x0105e, 0x01060, 0}, {0x01062, 0x01064, 0}, {0x01067, 0x0106d, 0}, {0x01071, 0x01074, 0}, {0x01082, 0x0108d, 0}, {0x0108f, 0x0108f, 0}, {0x0109a, 0x0109d, 0}, {0x01100, 0x0115f, 2}, {0x011a3, 0x011a7, 2}, {0x011fa, 0x011ff, 2}, {0x0135f, 0x0135f, 0}, {0x01712, 0x01714, 0}, {0x01732, 0x01734, 0}, {0x01752, 0x01753, 0}, {0x01772, 0x01773, 0}, {0x017b6, 0x017d3, 0}, {0x017dd, 0x017dd, 0}, {0x0180b, 0x0180d, 0}, {0x018a9, 0x018a9, 0}, {0x01920, 0x0192b, 0}, {0x01930, 0x0193b, 0}, {0x019b0, 0x019c0, 0}, {0x019c8, 0x019c9, 0}, {0x01a17, 0x01a1b, 0}, {0x01a55, 0x01a5e, 0}, {0x01a60, 0x01a7c, 0}, {0x01a7f, 0x01a7f, 0}, {0x01b00, 0x01b04, 0}, {0x01b34, 0x01b44, 0}, {0x01b6b, 0x01b73, 0}, {0x01b80, 0x01b82, 0}, {0x01ba1, 0x01baa, 0}, {0x01c24, 0x01c37, 0}, {0x01cd0, 0x01cd2, 0}, {0x01cd4, 0x01ce8, 0}, {0x01ced, 0x01ced, 0}, {0x01cf2, 0x01cf2, 0}, {0x01dc0, 0x01de6, 0}, {0x01dfd, 0x01dff, 0}, {0x020d0, 0x020f0, 0}, {0x02329, 0x0232a, 2}, {0x02cef, 0x02cf1, 0}, {0x02de0, 0x02dff, 0}, {0x02e80, 0x02e99, 2}, {0x02e9b, 0x02ef3, 2}, {0x02f00, 0x02fd5, 2}, {0x02ff0, 0x02ffb, 2}, {0x03000, 0x03029, 2}, {0x0302a, 0x0302f, 0}, {0x03030, 0x0303e, 2}, {0x03041, 0x03096, 2}, {0x03099, 0x0309a, 0}, {0x0309b, 0x030ff, 2}, {0x03105, 0x0312d, 2}, {0x03131, 0x0318e, 2}, {0x03190, 0x031b7, 2}, {0x031c0, 0x031e3, 2}, {0x031f0, 0x0321e, 2}, {0x03220, 0x03247, 2}, {0x03250, 0x032fe, 2}, {0x03300, 0x04dbf, 2}, {0x04e00, 0x0a48c, 2}, {0x0a490, 0x0a4c6, 2}, {0x0a66f, 0x0a672, 0}, {0x0a67c, 0x0a67d, 0}, {0x0a6f0, 0x0a6f1, 0}, {0x0a802, 0x0a802, 0}, {0x0a806, 0x0a806, 0}, {0x0a80b, 0x0a80b, 0}, {0x0a823, 0x0a827, 0}, {0x0a880, 0x0a881, 0}, {0x0a8b4, 0x0a8c4, 0}, {0x0a8e0, 0x0a8f1, 0}, {0x0a926, 0x0a92d, 0}, {0x0a947, 0x0a953, 0}, {0x0a960, 0x0a97c, 2}, {0x0a980, 0x0a983, 0}, {0x0a9b3, 0x0a9c0, 0}, {0x0aa29, 0x0aa36, 0}, {0x0aa43, 0x0aa43, 0}, {0x0aa4c, 0x0aa4d, 0}, {0x0aa7b, 0x0aa7b, 0}, {0x0aab0, 0x0aab0, 0}, {0x0aab2, 0x0aab4, 0}, {0x0aab7, 0x0aab8, 0}, {0x0aabe, 0x0aabf, 0}, {0x0aac1, 0x0aac1, 0}, {0x0abe3, 0x0abea, 0}, {0x0abec, 0x0abed, 0}, {0x0ac00, 0x0d7a3, 2}, {0x0d7b0, 0x0d7c6, 2}, {0x0d7cb, 0x0d7fb, 2}, {0x0f900, 0x0faff, 2}, {0x0fb1e, 0x0fb1e, 0}, {0x0fe00, 0x0fe0f, 0}, {0x0fe10, 0x0fe19, 2}, {0x0fe20, 0x0fe26, 0}, {0x0fe30, 0x0fe52, 2}, {0x0fe54, 0x0fe66, 2}, {0x0fe68, 0x0fe6b, 2}, {0x0ff01, 0x0ff60, 2}, {0x0ffe0, 0x0ffe6, 2}, {0x101fd, 0x101fd, 0}, {0x10a01, 0x10a03, 0}, {0x10a05, 0x10a06, 0}, {0x10a0c, 0x10a0f, 0}, {0x10a38, 0x10a3a, 0}, {0x10a3f, 0x10a3f, 0}, {0x11080, 0x11082, 0}, {0x110b0, 0x110ba, 0}, {0x1d165, 0x1d169, 0}, {0x1d16d, 0x1d172, 0}, {0x1d17b, 0x1d182, 0}, {0x1d185, 0x1d18b, 0}, {0x1d1aa, 0x1d1ad, 0}, {0x1d242, 0x1d244, 0}, {0x1f200, 0x1f200, 2}, {0x1f210, 0x1f231, 2}, {0x1f240, 0x1f248, 2}, {0x20000, 0x2fffd, 2}, {0x30000, 0x3fffd, 2}, {0xe0100, 0xe01ef, 0} }; /* Get the width of a UTF-8 character. */ int utf8_width(char *s) { int val, low, high, cur; if (UTF8_ISCONT(*s)) return 0; switch (UTF8_LENGTH(*s)) { case 1: val = s[0]; break; case 2: val = (s[1] & 0x3f) | (s[0] & 0x1f) << 6; break; case 3: val = ((s[2] & 0x3f) | (s[1] & 0x3f) << 6) | (s[0] & 0x0f) << 12; break; case 4: val = (((s[3] & 0x3f) | (s[2] & 0x3f) << 6) | (s[1] & 0x3f) << 12) | (s[0] & 0x3f) << 18; break; case 5: val = ((((s[4] & 0x3f) | (s[3] & 0x3f) << 6) | (s[2] & 0x3f) << 12) | (s[1] & 0x3f) << 18) | (s[0] & 0x3f) << 24; break; case 6: val = (((((s[5] & 0x3f) | (s[4] & 0x3f) << 6) | (s[3] & 0x3f) << 12) | (s[2] & 0x3f) << 18) | (s[1] & 0x3f) << 24) | (s[0] & 0x3f) << 30; break; default: return 0; } low = 0; high = sizeof(utf8_widthtab) / sizeof(utf8_widthtab[0]); do { cur = (low + high) / 2; if (val >= utf8_widthtab[cur].min) { if (val <= utf8_widthtab[cur].max) return utf8_widthtab[cur].width; else low = cur + 1; } else high = cur - 1; } while (low <= high); return 1; } /* Get the width of a UTF-8 string. */ int utf8_strwidth(char *s) { int width = 0; for (; s && *s; s++) { if (!UTF8_ISCONT(*s)) width += utf8_width(s); } return width; } calcurse-3.1.4/src/sha1.c0000644000175000001440000001642612105444321012031 00000000000000/* * Calcurse - text-based organizer * * Copyright (c) 2004-2013 calcurse Development Team * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * - Redistributions of source code must retain the above * copyright notice, this list of conditions and the * following disclaimer. * * - Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the * following disclaimer in the documentation and/or other * materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * Send your feedback or comments to : misc@calcurse.org * Calcurse home page : http://calcurse.org * * This code is based on Steve Reid's public domain SHA1 implementation. * * The original version is available at: * ftp://ftp.funet.fi/pub/crypt/hash/sha/sha1.c * */ #include #include #include "sha1.h" #define rol(val, n) (((val) << (n)) | ((val) >> (32 - (n)))) #ifdef WORDS_BIGENDIAN #define blk0(i) block->l[i] #else #define blk0(i) (block->l[i] = (rol (block->l[i], 24) & \ (uint32_t)0xFF00FF00) | (rol (block->l[i], 8) & (uint32_t)0x00FF00FF)) #endif #define blk(i) (block->l[i & 15] = rol (block->l[(i + 13) & 15] ^ \ block->l[(i + 8) & 15] ^ block->l[(i + 2) & 15] ^ block->l[i & 15], 1)) #define R0(v, w, x, y, z, i) z += ((w & (x ^ y)) ^ y) + blk0 (i) + \ 0x5A827999 + rol (v, 5); w = rol (w, 30); #define R1(v, w, x, y, z, i) z += ((w & (x ^ y)) ^ y) + blk (i) + \ 0x5A827999 + rol (v, 5); w = rol (w, 30); #define R2(v, w, x, y, z, i) z += (w ^ x ^ y) + blk (i) + 0x6ED9EBA1 + \ rol (v, 5); w = rol(w, 30); #define R3(v, w, x, y, z, i) z += (((w | x) & y) | (w & x)) + blk (i) + \ 0x8F1BBCDC + rol (v, 5); w = rol (w, 30); #define R4(v, w, x, y, z, i) z += (w ^ x ^ y) + blk (i) + 0xCA62C1D6 + \ rol (v, 5); w = rol (w, 30); static void sha1_transform(uint32_t state[5], const uint8_t buffer[64]) { typedef union { uint8_t c[64]; uint32_t l[16]; } b64_t; b64_t *block = (b64_t *) buffer; uint32_t a = state[0]; uint32_t b = state[1]; uint32_t c = state[2]; uint32_t d = state[3]; uint32_t e = state[4]; R0(a, b, c, d, e, 0); R0(e, a, b, c, d, 1); R0(d, e, a, b, c, 2); R0(c, d, e, a, b, 3); R0(b, c, d, e, a, 4); R0(a, b, c, d, e, 5); R0(e, a, b, c, d, 6); R0(d, e, a, b, c, 7); R0(c, d, e, a, b, 8); R0(b, c, d, e, a, 9); R0(a, b, c, d, e, 10); R0(e, a, b, c, d, 11); R0(d, e, a, b, c, 12); R0(c, d, e, a, b, 13); R0(b, c, d, e, a, 14); R0(a, b, c, d, e, 15); R1(e, a, b, c, d, 16); R1(d, e, a, b, c, 17); R1(c, d, e, a, b, 18); R1(b, c, d, e, a, 19); R2(a, b, c, d, e, 20); R2(e, a, b, c, d, 21); R2(d, e, a, b, c, 22); R2(c, d, e, a, b, 23); R2(b, c, d, e, a, 24); R2(a, b, c, d, e, 25); R2(e, a, b, c, d, 26); R2(d, e, a, b, c, 27); R2(c, d, e, a, b, 28); R2(b, c, d, e, a, 29); R2(a, b, c, d, e, 30); R2(e, a, b, c, d, 31); R2(d, e, a, b, c, 32); R2(c, d, e, a, b, 33); R2(b, c, d, e, a, 34); R2(a, b, c, d, e, 35); R2(e, a, b, c, d, 36); R2(d, e, a, b, c, 37); R2(c, d, e, a, b, 38); R2(b, c, d, e, a, 39); R3(a, b, c, d, e, 40); R3(e, a, b, c, d, 41); R3(d, e, a, b, c, 42); R3(c, d, e, a, b, 43); R3(b, c, d, e, a, 44); R3(a, b, c, d, e, 45); R3(e, a, b, c, d, 46); R3(d, e, a, b, c, 47); R3(c, d, e, a, b, 48); R3(b, c, d, e, a, 49); R3(a, b, c, d, e, 50); R3(e, a, b, c, d, 51); R3(d, e, a, b, c, 52); R3(c, d, e, a, b, 53); R3(b, c, d, e, a, 54); R3(a, b, c, d, e, 55); R3(e, a, b, c, d, 56); R3(d, e, a, b, c, 57); R3(c, d, e, a, b, 58); R3(b, c, d, e, a, 59); R4(a, b, c, d, e, 60); R4(e, a, b, c, d, 61); R4(d, e, a, b, c, 62); R4(c, d, e, a, b, 63); R4(b, c, d, e, a, 64); R4(a, b, c, d, e, 65); R4(e, a, b, c, d, 66); R4(d, e, a, b, c, 67); R4(c, d, e, a, b, 68); R4(b, c, d, e, a, 69); R4(a, b, c, d, e, 70); R4(e, a, b, c, d, 71); R4(d, e, a, b, c, 72); R4(c, d, e, a, b, 73); R4(b, c, d, e, a, 74); R4(a, b, c, d, e, 75); R4(e, a, b, c, d, 76); R4(d, e, a, b, c, 77); R4(c, d, e, a, b, 78); R4(b, c, d, e, a, 79); state[0] += a; state[1] += b; state[2] += c; state[3] += d; state[4] += e; a = b = c = d = e = 0; } void sha1_init(sha1_ctx_t * ctx) { ctx->state[0] = 0x67452301; ctx->state[1] = 0xEFCDAB89; ctx->state[2] = 0x98BADCFE; ctx->state[3] = 0x10325476; ctx->state[4] = 0xC3D2E1F0; ctx->count[0] = ctx->count[1] = 0; } void sha1_update(sha1_ctx_t * ctx, const uint8_t * data, unsigned int len) { unsigned int i, j; j = (ctx->count[0] >> 3) & 63; if ((ctx->count[0] += len << 3) < (len << 3)) ctx->count[1]++; ctx->count[1] += (len >> 29); if (j + len > 63) { memcpy(&ctx->buffer[j], data, (i = 64 - j)); sha1_transform(ctx->state, ctx->buffer); for (; i + 63 < len; i += 64) sha1_transform(ctx->state, &data[i]); j = 0; } else i = 0; memcpy(&ctx->buffer[j], &data[i], len - i); } void sha1_final(sha1_ctx_t * ctx, uint8_t digest[SHA1_DIGESTLEN]) { uint32_t i, j; uint8_t finalcount[8]; for (i = 0; i < 8; i++) { finalcount[i] = (uint8_t) ((ctx->count[(i >= 4 ? 0 : 1)] >> ((3 - (i & 3)) * 8)) & 255); } sha1_update(ctx, (uint8_t *) "\200", 1); while ((ctx->count[0] & 504) != 448) sha1_update(ctx, (uint8_t *) "\0", 1); sha1_update(ctx, finalcount, 8); for (i = 0; i < SHA1_DIGESTLEN; i++) digest[i] = (uint8_t) ((ctx->state[i >> 2] >> ((3 - (i & 3)) * 8)) & 255); i = j = 0; memset(ctx->buffer, 0, SHA1_BLOCKLEN); memset(ctx->state, 0, SHA1_DIGESTLEN); memset(ctx->count, 0, 8); memset(&finalcount, 0, 8); } void sha1_digest(const char *data, char *buffer) { sha1_ctx_t ctx; uint8_t digest[SHA1_DIGESTLEN]; int i; sha1_init(&ctx); sha1_update(&ctx, (const uint8_t *)data, strlen(data)); sha1_final(&ctx, (uint8_t *) digest); for (i = 0; i < SHA1_DIGESTLEN; i++) { snprintf(buffer, 3, "%02x", digest[i]); buffer += sizeof(char) * 2; } } void sha1_stream(FILE * fp, char *buffer) { sha1_ctx_t ctx; uint8_t data[BUFSIZ]; size_t bytes_read; uint8_t digest[SHA1_DIGESTLEN]; int i; sha1_init(&ctx); while (!feof(fp)) { bytes_read = fread(data, 1, BUFSIZ, fp); sha1_update(&ctx, data, bytes_read); } sha1_final(&ctx, (uint8_t *) digest); for (i = 0; i < SHA1_DIGESTLEN; i++) { snprintf(buffer, 3, "%02x", digest[i]); buffer += sizeof(char) * 2; } } calcurse-3.1.4/src/ical.c0000644000175000001440000007630712105444350012113 00000000000000/* * Calcurse - text-based organizer * * Copyright (c) 2004-2013 calcurse Development Team * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * - Redistributions of source code must retain the above * copyright notice, this list of conditions and the * following disclaimer. * * - Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the * following disclaimer in the documentation and/or other * materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * Send your feedback or comments to : misc@calcurse.org * Calcurse home page : http://calcurse.org * */ #include #include "calcurse.h" #define ICALDATEFMT "%Y%m%d" #define ICALDATETIMEFMT "%Y%m%dT%H%M%S" typedef enum { ICAL_VEVENT, ICAL_VTODO, ICAL_TYPES } ical_types_e; typedef enum { UNDEFINED, APPOINTMENT, EVENT } ical_vevent_e; typedef struct { enum recur_type type; int freq; long until; unsigned count; } ical_rpt_t; static void ical_export_header(FILE *); static void ical_export_recur_events(FILE *); static void ical_export_events(FILE *); static void ical_export_recur_apoints(FILE *); static void ical_export_apoints(FILE *); static void ical_export_todo(FILE *); static void ical_export_footer(FILE *); static const char *ical_recur_type[RECUR_TYPES] = { "", "DAILY", "WEEKLY", "MONTHLY", "YEARLY" }; /* iCal alarm notification. */ static void ical_export_valarm(FILE * stream) { fputs("BEGIN:VALARM\n", stream); pthread_mutex_lock(&nbar.mutex); fprintf(stream, "TRIGGER:-P%dS\n", nbar.cntdwn); pthread_mutex_unlock(&nbar.mutex); fputs("ACTION:DISPLAY\n", stream); fputs("END:VALARM\n", stream); } /* Export header. */ static void ical_export_header(FILE * stream) { fputs("BEGIN:VCALENDAR\n", stream); fprintf(stream, "PRODID:-//calcurse//NONSGML v%s//EN\n", VERSION); fputs("VERSION:2.0\n", stream); } /* Export footer. */ static void ical_export_footer(FILE * stream) { fputs("END:VCALENDAR\n", stream); } /* Export recurrent events. */ static void ical_export_recur_events(FILE * stream) { llist_item_t *i, *j; char ical_date[BUFSIZ]; LLIST_FOREACH(&recur_elist, i) { struct recur_event *rev = LLIST_GET_DATA(i); date_sec2date_fmt(rev->day, ICALDATEFMT, ical_date); fputs("BEGIN:VEVENT\n", stream); fprintf(stream, "DTSTART:%s\n", ical_date); fprintf(stream, "RRULE:FREQ=%s;INTERVAL=%d", ical_recur_type[rev->rpt->type], rev->rpt->freq); if (rev->rpt->until != 0) { date_sec2date_fmt(rev->rpt->until, ICALDATEFMT, ical_date); fprintf(stream, ";UNTIL=%s\n", ical_date); } else fputc('\n', stream); if (LLIST_FIRST(&rev->exc)) { fputs("EXDATE:", stream); LLIST_FOREACH(&rev->exc, j) { struct excp *exc = LLIST_GET_DATA(j); date_sec2date_fmt(exc->st, ICALDATEFMT, ical_date); fprintf(stream, "%s", ical_date); if (LLIST_NEXT(j)) fputc(',', stream); else fputc('\n', stream); } } fprintf(stream, "SUMMARY:%s\n", rev->mesg); fputs("END:VEVENT\n", stream); } } /* Export events. */ static void ical_export_events(FILE * stream) { llist_item_t *i; char ical_date[BUFSIZ]; LLIST_FOREACH(&eventlist, i) { struct event *ev = LLIST_TS_GET_DATA(i); date_sec2date_fmt(ev->day, ICALDATEFMT, ical_date); fputs("BEGIN:VEVENT\n", stream); fprintf(stream, "DTSTART:%s\n", ical_date); fprintf(stream, "SUMMARY:%s\n", ev->mesg); fputs("END:VEVENT\n", stream); } } /* Export recurrent appointments. */ static void ical_export_recur_apoints(FILE * stream) { llist_item_t *i, *j; char ical_datetime[BUFSIZ]; char ical_date[BUFSIZ]; LLIST_TS_LOCK(&recur_alist_p); LLIST_TS_FOREACH(&recur_alist_p, i) { struct recur_apoint *rapt = LLIST_TS_GET_DATA(i); date_sec2date_fmt(rapt->start, ICALDATETIMEFMT, ical_datetime); fputs("BEGIN:VEVENT\n", stream); fprintf(stream, "DTSTART:%s\n", ical_datetime); fprintf(stream, "DURATION:PT0H0M%ldS\n", rapt->dur); fprintf(stream, "RRULE:FREQ=%s;INTERVAL=%d", ical_recur_type[rapt->rpt->type], rapt->rpt->freq); if (rapt->rpt->until != 0) { date_sec2date_fmt(rapt->rpt->until + HOURINSEC, ICALDATEFMT, ical_date); fprintf(stream, ";UNTIL=%s\n", ical_date); } else fputc('\n', stream); if (LLIST_FIRST(&rapt->exc)) { fputs("EXDATE:", stream); LLIST_FOREACH(&rapt->exc, j) { struct excp *exc = LLIST_GET_DATA(j); date_sec2date_fmt(exc->st, ICALDATEFMT, ical_date); fprintf(stream, "%s", ical_date); if (LLIST_NEXT(j)) fputc(',', stream); else fputc('\n', stream); } } fprintf(stream, "SUMMARY:%s\n", rapt->mesg); if (rapt->state & APOINT_NOTIFY) ical_export_valarm(stream); fputs("END:VEVENT\n", stream); } LLIST_TS_UNLOCK(&recur_alist_p); } /* Export appointments. */ static void ical_export_apoints(FILE * stream) { llist_item_t *i; char ical_datetime[BUFSIZ]; LLIST_TS_LOCK(&alist_p); LLIST_TS_FOREACH(&alist_p, i) { struct apoint *apt = LLIST_TS_GET_DATA(i); date_sec2date_fmt(apt->start, ICALDATETIMEFMT, ical_datetime); fputs("BEGIN:VEVENT\n", stream); fprintf(stream, "DTSTART:%s\n", ical_datetime); fprintf(stream, "DURATION:P%ldDT%ldH%ldM%ldS\n", apt->dur / DAYINSEC, (apt->dur / HOURINSEC) % DAYINHOURS, (apt->dur / MININSEC) % HOURINMIN, apt->dur % MININSEC); fprintf(stream, "SUMMARY:%s\n", apt->mesg); if (apt->state & APOINT_NOTIFY) ical_export_valarm(stream); fputs("END:VEVENT\n", stream); } LLIST_TS_UNLOCK(&alist_p); } /* Export todo items. */ static void ical_export_todo(FILE * stream) { llist_item_t *i; LLIST_FOREACH(&todolist, i) { struct todo *todo = LLIST_TS_GET_DATA(i); if (todo->id < 0) /* completed items */ continue; fputs("BEGIN:VTODO\n", stream); fprintf(stream, "PRIORITY:%d\n", todo->id); fprintf(stream, "SUMMARY:%s\n", todo->mesg); fputs("END:VTODO\n", stream); } } /* Print a header to describe import log report format. */ static void ical_log_init(FILE * log, int major, int minor) { const char *header = "+-------------------------------------------------------------------+\n" "| Calcurse icalendar import log. |\n" "| |\n" "| Items imported from icalendar file, version %d.%d |\n" "| Some items could not be imported, they are described hereafter. |\n" "| The log line format is as follows: |\n" "| |\n" "| TYPE [LINE]: DESCRIPTION |\n" "| |\n" "| where: |\n" "| * TYPE represents the item type ('VEVENT' or 'VTODO') |\n" "| * LINE is the line in the input stream at which this item begins |\n" "| * DESCRIPTION indicates why the item could not be imported |\n" "+-------------------------------------------------------------------+\n\n"; if (log) fprintf(log, header, major, minor); } /* * Used to build a report of the import process. * The icalendar item for which a problem occurs is mentioned (by giving its * first line inside the icalendar file), together with a message describing the * problem. */ static void ical_log(FILE * log, ical_types_e type, unsigned lineno, char *msg) { const char *typestr[ICAL_TYPES] = { "VEVENT", "VTODO" }; RETURN_IF(type < 0 || type >= ICAL_TYPES, _("unknown ical type")); if (log) fprintf(log, "%s [%d]: %s\n", typestr[type], lineno, msg); } static void ical_store_todo(int priority, char *mesg, char *note) { todo_add(mesg, priority, note); mem_free(mesg); erase_note(¬e); } static void ical_store_event(char *mesg, char *note, long day, long end, ical_rpt_t * rpt, llist_t * exc) { const int EVENTID = 1; if (rpt) { recur_event_new(mesg, note, day, EVENTID, rpt->type, rpt->freq, rpt->until, exc); mem_free(rpt); } else if (end && end != day) { /* Here we have an event that spans over several days. */ rpt = mem_malloc(sizeof(ical_rpt_t)); rpt->type = RECUR_DAILY; rpt->freq = 1; rpt->count = 0; rpt->until = end; recur_event_new(mesg, note, day, EVENTID, rpt->type, rpt->freq, rpt->until, exc); mem_free(rpt); } else { event_new(mesg, note, day, EVENTID); } mem_free(mesg); erase_note(¬e); } static void ical_store_apoint(char *mesg, char *note, long start, long dur, ical_rpt_t * rpt, llist_t * exc, int has_alarm) { char state = 0L; if (has_alarm) state |= APOINT_NOTIFY; if (rpt) { recur_apoint_new(mesg, note, start, dur, state, rpt->type, rpt->freq, rpt->until, exc); mem_free(rpt); } else { apoint_new(mesg, note, start, dur, state); } mem_free(mesg); erase_note(¬e); } /* * Returns an allocated string representing the string given in argument once * unformatted. * * Note: * Even if the RFC2445 recommends not to have more than 75 octets on one line of * text, I prefer not to restrict the parsing to this size, thus I use a buffer * of size BUFSIZ. * * Extract from RFC2445: * Lines of text SHOULD NOT be longer than 75 octets, excluding the line * break. */ static char *ical_unformat_line(char *line) { char *p, uline[BUFSIZ]; int len; if (strlen(line) >= BUFSIZ) return NULL; memset(uline, 0, BUFSIZ); for (len = 0, p = line; *p; p++) { switch (*p) { case '\\': switch (*(p + 1)) { case 'n': uline[len++] = '\n'; p++; break; case 't': uline[len++] = '\t'; p++; break; case ';': case ':': case ',': uline[len++] = *(p + 1); p++; break; default: uline[len++] = *p; break; } break; default: uline[len++] = *p; break; } } return mem_strdup(uline); } static void ical_readline_init(FILE * fdi, char *buf, char *lstore, unsigned *ln) { char *eol; *buf = *lstore = '\0'; if (fgets(lstore, BUFSIZ, fdi)) { if ((eol = strchr(lstore, '\n')) != NULL) *eol = '\0'; (*ln)++; } } static int ical_readline(FILE * fdi, char *buf, char *lstore, unsigned *ln) { char *eol; strncpy(buf, lstore, BUFSIZ); (*ln)++; 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 - strlen(buf) - 1); (*ln)++; } if (feof(fdi)) { *lstore = '\0'; if (*buf == '\0') return 0; } return 1; } static int ical_chk_header(FILE * fd, char *buf, char *lstore, unsigned *lineno, int *major, int *minor) { const char icalheader[] = "BEGIN:VCALENDAR"; if (!ical_readline(fd, buf, lstore, lineno)) return 0; str_toupper(buf); if (strncmp(buf, icalheader, sizeof(icalheader) - 1) != 0) return 0; while (!sscanf(buf, "VERSION:%d.%d", major, minor)) { if (!ical_readline(fd, buf, lstore, lineno)) return 0; } return 1; } /* * iCalendar date-time format is based on the ISO 8601 complete * representation. It should be something like : DATE 'T' TIME * where DATE is 'YYYYMMDD' and TIME is 'HHMMSS'. * The time and 'T' separator are optional (in the case of an day-long event). * * Optionnaly, if the type pointer is given, specify if it is an event * (no time is given, meaning it is an all-day event), or an appointment * (time is given). * * The timezone is not yet handled by calcurse. */ static long ical_datetime2long(char *datestr, ical_vevent_e * type) { const int NOTFOUND = 0, FORMAT_DATE = 3, FORMAT_DATETIME = 5; struct date date; unsigned hour, min; long datelong; int format; format = sscanf(datestr, "%04u%02u%02uT%02u%02u", &date.yyyy, &date.mm, &date.dd, &hour, &min); if (format == FORMAT_DATE) { if (type) *type = EVENT; datelong = date2sec(date, 0, 0); } else if (format == FORMAT_DATETIME) { if (type) *type = APPOINTMENT; datelong = date2sec(date, hour, min); } else { datelong = NOTFOUND; } return datelong; } static long ical_durtime2long(char *timestr) { long timelong; char *p; if ((p = strchr(timestr, 'T')) == NULL) timelong = 0; else { int nbmatch; struct { unsigned hour, min, sec; } time; p++; memset(&time, 0, sizeof time); nbmatch = sscanf(p, "%uH%uM%uS", &time.hour, &time.min, &time.sec); if (nbmatch < 1 || nbmatch > 3) timelong = 0; else timelong = time.hour * HOURINSEC + time.min * MININSEC + time.sec; } return timelong; } /* * Extract from RFC2445: * * Value Name: DURATION * * Purpose: This value type is used to identify properties that contain * duration of time. * * Formal Definition: The value type is defined by the following * notation: * * dur-value = (["+"] / "-") "P" (dur-date / dur-time / dur-week) * dur-date = dur-day [dur-time] * dur-time = "T" (dur-hour / dur-minute / dur-second) * dur-week = 1*DIGIT "W" * dur-hour = 1*DIGIT "H" [dur-minute] * dur-minute = 1*DIGIT "M" [dur-second] * dur-second = 1*DIGIT "S" * dur-day = 1*DIGIT "D" * * Example: A duration of 15 days, 5 hours and 20 seconds would be: * P15DT5H0M20S * A duration of 7 weeks would be: * P7W */ static long ical_dur2long(char *durstr) { const int NOTFOUND = -1; long durlong; char *p; struct { unsigned week, day; } date; memset(&date, 0, sizeof date); if ((p = strchr(durstr, 'P')) == NULL) durlong = NOTFOUND; else { p++; if (*p == '-') return NOTFOUND; else if (*p == '+') p++; if (*p == 'T') /* dur-time */ durlong = ical_durtime2long(p); else if (strchr(p, 'W')) { /* dur-week */ if (sscanf(p, "%u", &date.week) == 1) durlong = date.week * WEEKINDAYS * DAYINSEC; else durlong = NOTFOUND; } else { if (strchr(p, 'D')) { /* dur-date */ if (sscanf(p, "%uD", &date.day) == 1) { durlong = date.day * DAYINSEC; durlong += ical_durtime2long(p); } else durlong = NOTFOUND; } else durlong = NOTFOUND; } } return durlong; } /* * Compute the vevent repetition end date from the repetition count. * * Extract from RFC2445: * The COUNT rule part defines the number of occurrences at which to * range-bound the recurrence. The "DTSTART" property value, if specified, * counts as the first occurrence. */ static long ical_compute_rpt_until(long start, ical_rpt_t * rpt) { long until; switch (rpt->type) { case RECUR_DAILY: until = date_sec_change(start, 0, rpt->freq * (rpt->count - 1)); break; case RECUR_WEEKLY: until = date_sec_change(start, 0, rpt->freq * WEEKINDAYS * (rpt->count - 1)); break; case RECUR_MONTHLY: until = date_sec_change(start, rpt->freq * (rpt->count - 1), 0); break; case RECUR_YEARLY: until = date_sec_change(start, rpt->freq * 12 * (rpt->count - 1), 0); break; default: until = 0; break; /* NOTREACHED */ } return until; } /* * Read a recurrence rule from an iCalendar RRULE string. * * Value Name: RECUR * * Purpose: This value type is used to identify properties that contain * a recurrence rule specification. * * Formal Definition: The value type is defined by the following * notation: * * recur = "FREQ"=freq *( * * ; either UNTIL or COUNT may appear in a 'recur', * ; but UNTIL and COUNT MUST NOT occur in the same 'recur' * * ( ";" "UNTIL" "=" enddate ) / * ( ";" "COUNT" "=" 1*DIGIT ) / * * ; the rest of these keywords are optional, * ; but MUST NOT occur more than * ; once * * ( ";" "INTERVAL" "=" 1*DIGIT ) / * ( ";" "BYSECOND" "=" byseclist ) / * ( ";" "BYMINUTE" "=" byminlist ) / * ( ";" "BYHOUR" "=" byhrlist ) / * ( ";" "BYDAY" "=" bywdaylist ) / * ( ";" "BYMONTHDAY" "=" bymodaylist ) / * ( ";" "BYYEARDAY" "=" byyrdaylist ) / * ( ";" "BYWEEKNO" "=" bywknolist ) / * ( ";" "BYMONTH" "=" bymolist ) / * ( ";" "BYSETPOS" "=" bysplist ) / * ( ";" "WKST" "=" weekday ) / * ( ";" x-name "=" text ) * ) */ static ical_rpt_t *ical_read_rrule(FILE * log, char *rrulestr, unsigned *noskipped, const int itemline) { const char daily[] = "DAILY"; const char weekly[] = "WEEKLY"; const char monthly[] = "MONTHLY"; const char yearly[] = "YEARLY"; const char count[] = "COUNT="; const char interv[] = "INTERVAL="; unsigned interval; ical_rpt_t *rpt; char *p; rpt = NULL; if ((p = strchr(rrulestr, ':')) != NULL) { char freqstr[BUFSIZ]; p++; rpt = mem_malloc(sizeof(ical_rpt_t)); memset(rpt, 0, sizeof(ical_rpt_t)); if (sscanf(p, "FREQ=%s", freqstr) != 1) { ical_log(log, ICAL_VEVENT, itemline, _("recurrence frequence not found.")); (*noskipped)++; mem_free(rpt); return NULL; } else { if (strncmp(freqstr, daily, sizeof(daily) - 1) == 0) rpt->type = RECUR_DAILY; else if (strncmp(freqstr, weekly, sizeof(weekly) - 1) == 0) rpt->type = RECUR_WEEKLY; else if (strncmp(freqstr, monthly, sizeof(monthly) - 1) == 0) rpt->type = RECUR_MONTHLY; else if (strncmp(freqstr, yearly, sizeof(yearly) - 1) == 0) rpt->type = RECUR_YEARLY; else { ical_log(log, ICAL_VEVENT, itemline, _("recurrence frequence not recognized.")); (*noskipped)++; mem_free(rpt); return NULL; } } /* The UNTIL rule part defines a date-time value which bounds the recurrence rule in an inclusive manner. If not present, and the COUNT rule part is also not present, the RRULE is considered to repeat forever. The COUNT rule part defines the number of occurrences at which to range-bound the recurrence. The "DTSTART" property value, if specified, counts as the first occurrence. */ if ((p = strstr(rrulestr, "UNTIL")) != NULL) { char *untilstr; untilstr = strchr(p, '='); rpt->until = ical_datetime2long(++untilstr, NULL); } else { unsigned cnt; char *countstr; if ((countstr = strstr(rrulestr, count)) != NULL) { countstr += sizeof(count) - 1; if (sscanf(countstr, "%u", &cnt) != 1) { rpt->until = 0; /* endless repetition */ } else { rpt->count = cnt; } } else rpt->until = 0; } if ((p = strstr(rrulestr, interv)) != NULL) { p += sizeof(interv) - 1; if (sscanf(p, "%u", &interval) != 1) { rpt->freq = 1; /* default frequence if none specified */ } else { rpt->freq = interval; } } else { rpt->freq = 1; } } else { ical_log(log, ICAL_VEVENT, itemline, _("recurrence rule malformed.")); (*noskipped)++; } return rpt; } static void ical_add_exc(llist_t * exc_head, long date) { if (date != 0) { struct excp *exc = mem_malloc(sizeof(struct excp)); exc->st = date; LLIST_ADD(exc_head, exc); } } /* * This property defines the list of date/time exceptions for a * recurring calendar component. */ static void ical_read_exdate(llist_t * exc, FILE * log, char *exstr, unsigned *noskipped, const int itemline) { char *p, *q; long date; LLIST_INIT(exc); if ((p = strchr(exstr, ':')) != NULL) { p++; while ((q = strchr(p, ',')) != NULL) { char buf[BUFSIZ]; const int buflen = q - p; strncpy(buf, p, buflen); buf[buflen] = '\0'; date = ical_datetime2long(buf, NULL); ical_add_exc(exc, date); p = ++q; } date = ical_datetime2long(p, NULL); ical_add_exc(exc, date); } else { ical_log(log, ICAL_VEVENT, itemline, _("recurrence exception dates malformed.")); (*noskipped)++; } } /* Return an allocated string containing the name of the newly created note. */ static char *ical_read_note(char *line, unsigned *noskipped, ical_types_e item_type, const int itemline, FILE * log) { char *p, *notestr, *note; if ((p = strchr(line, ':')) != NULL) { p++; notestr = ical_unformat_line(p); if (notestr == NULL) { ical_log(log, item_type, itemline, _("could not get entire item description.")); (*noskipped)++; return NULL; } else if (strlen(notestr) == 0) { mem_free(notestr); return NULL; } else { note = generate_note(notestr); mem_free(notestr); return note; } } else { ical_log(log, item_type, itemline, _("description malformed.")); (*noskipped)++; return NULL; } } /* Returns an allocated string containing the ical item summary. */ static char *ical_read_summary(char *line) { char *p, *summary; if ((p = strchr(line, ':')) != NULL) { p++; summary = ical_unformat_line(p); return summary; } else return NULL; } static void ical_read_event(FILE * fdi, FILE * log, unsigned *noevents, unsigned *noapoints, unsigned *noskipped, char *buf, char *lstore, unsigned *lineno) { const int ITEMLINE = *lineno; const char endevent[] = "END:VEVENT"; const char summary[] = "SUMMARY"; const char dtstart[] = "DTSTART"; const char dtend[] = "DTEND"; const char duration[] = "DURATION"; const char rrule[] = "RRULE"; const char exdate[] = "EXDATE"; const char alarm[] = "BEGIN:VALARM"; const char endalarm[] = "END:VALARM"; const char desc[] = "DESCRIPTION"; ical_vevent_e vevent_type; char *p, buf_upper[BUFSIZ]; struct { llist_t exc; ical_rpt_t *rpt; char *mesg, *note; long start, end, dur; int has_alarm; } vevent; int skip_alarm; vevent_type = UNDEFINED; memset(&vevent, 0, sizeof vevent); skip_alarm = 0; while (ical_readline(fdi, buf, lstore, lineno)) { strncpy(buf_upper, buf, BUFSIZ); buf_upper[BUFSIZ - 1] = '\0'; str_toupper(buf_upper); if (skip_alarm) { /* Need to skip VALARM properties because some keywords could interfere, such as DURATION, SUMMARY,.. */ if (strncmp(buf_upper, endalarm, sizeof(endalarm) - 1) == 0) skip_alarm = 0; continue; } if (strncmp(buf_upper, endevent, sizeof(endevent) - 1) == 0) { if (vevent.mesg) { if (vevent.rpt && vevent.rpt->count) vevent.rpt->until = ical_compute_rpt_until(vevent.start, vevent.rpt); switch (vevent_type) { case APPOINTMENT: if (vevent.start == 0) { ical_log(log, ICAL_VEVENT, ITEMLINE, _("appointment has no start time.")); goto cleanup; } if (vevent.dur == 0) { if (vevent.end == 0) { ical_log(log, ICAL_VEVENT, ITEMLINE, _("could not compute duration " "(no end time).")); goto cleanup; } else if (vevent.start == vevent.end) { vevent_type = EVENT; vevent.end = 0L; ical_store_event(vevent.mesg, vevent.note, vevent.start, vevent.end, vevent.rpt, &vevent.exc); (*noevents)++; return; } else { vevent.dur = vevent.end - vevent.start; if (vevent.dur < 0) { ical_log(log, ICAL_VEVENT, ITEMLINE, _("item has a negative duration.")); goto cleanup; } } } ical_store_apoint(vevent.mesg, vevent.note, vevent.start, vevent.dur, vevent.rpt, &vevent.exc, vevent.has_alarm); (*noapoints)++; break; case EVENT: if (vevent.start == 0) { ical_log(log, ICAL_VEVENT, ITEMLINE, _("event date is not defined.")); goto cleanup; } ical_store_event(vevent.mesg, vevent.note, vevent.start, vevent.end, vevent.rpt, &vevent.exc); (*noevents)++; break; case UNDEFINED: ical_log(log, ICAL_VEVENT, ITEMLINE, _("item could not be identified.")); goto cleanup; break; } } else { ical_log(log, ICAL_VEVENT, ITEMLINE, _("could not retrieve item summary.")); goto cleanup; } return; } else { if (strncmp(buf_upper, dtstart, sizeof(dtstart) - 1) == 0) { if ((p = strchr(buf, ':')) != NULL) vevent.start = ical_datetime2long(++p, &vevent_type); if (!vevent.start) { ical_log(log, ICAL_VEVENT, ITEMLINE, _("could not retrieve event start time.")); goto cleanup; } } else if (strncmp(buf_upper, dtend, sizeof(dtend) - 1) == 0) { if ((p = strchr(buf, ':')) != NULL) vevent.end = ical_datetime2long(++p, &vevent_type); if (!vevent.end) { ical_log(log, ICAL_VEVENT, ITEMLINE, _("could not retrieve event end time.")); goto cleanup; } } else if (strncmp(buf_upper, duration, sizeof(duration) - 1) == 0) { if ((vevent.dur = ical_dur2long(buf)) <= 0) { ical_log(log, ICAL_VEVENT, ITEMLINE, _("item duration malformed.")); goto cleanup; } } else if (strncmp(buf_upper, rrule, sizeof(rrule) - 1) == 0) { vevent.rpt = ical_read_rrule(log, buf, noskipped, ITEMLINE); } else if (strncmp(buf_upper, exdate, sizeof(exdate) - 1) == 0) { ical_read_exdate(&vevent.exc, log, buf, noskipped, ITEMLINE); } else if (strncmp(buf_upper, summary, sizeof(summary) - 1) == 0) { vevent.mesg = ical_read_summary(buf); } else if (strncmp(buf_upper, alarm, sizeof(alarm) - 1) == 0) { skip_alarm = 1; vevent.has_alarm = 1; } else if (strncmp(buf_upper, desc, sizeof(desc) - 1) == 0) { vevent.note = ical_read_note(buf, noskipped, ICAL_VEVENT, ITEMLINE, log); } } } ical_log(log, ICAL_VEVENT, ITEMLINE, _("The ical file seems to be malformed. " "The end of item was not found.")); cleanup: if (vevent.note) mem_free(vevent.note); if (vevent.mesg) mem_free(vevent.mesg); if (vevent.rpt) mem_free(vevent.rpt); LLIST_FREE(&vevent.exc); (*noskipped)++; } static void ical_read_todo(FILE * fdi, FILE * log, unsigned *notodos, unsigned *noskipped, char *buf, char *lstore, unsigned *lineno) { const char endtodo[] = "END:VTODO"; const char summary[] = "SUMMARY"; const char alarm[] = "BEGIN:VALARM"; const char endalarm[] = "END:VALARM"; const char desc[] = "DESCRIPTION"; const int LOWEST = 9; const int ITEMLINE = *lineno; char buf_upper[BUFSIZ]; struct { char *mesg, *note; int has_priority, priority; } vtodo; int skip_alarm; memset(&vtodo, 0, sizeof vtodo); skip_alarm = 0; while (ical_readline(fdi, buf, lstore, lineno)) { strncpy(buf_upper, buf, BUFSIZ); buf_upper[BUFSIZ - 1] = '\0'; str_toupper(buf_upper); if (skip_alarm) { /* Need to skip VALARM properties because some keywords could interfere, such as DURATION, SUMMARY,.. */ if (strncmp(buf_upper, endalarm, sizeof(endalarm) - 1) == 0) skip_alarm = 0; continue; } if (strncmp(buf_upper, endtodo, sizeof(endtodo) - 1) == 0) { if (!vtodo.has_priority) vtodo.priority = LOWEST; if (vtodo.mesg) { ical_store_todo(vtodo.priority, vtodo.mesg, vtodo.note); (*notodos)++; } else { ical_log(log, ICAL_VTODO, ITEMLINE, _("could not retrieve item summary.")); goto cleanup; } return; } else { int tmpint; if (sscanf(buf_upper, "PRIORITY:%d", &tmpint) == 1) { if (tmpint <= 9 && tmpint >= 1) { vtodo.priority = tmpint; vtodo.has_priority = 1; } else { ical_log(log, ICAL_VTODO, ITEMLINE, _("item priority is not acceptable " "(must be between 1 and 9).")); vtodo.priority = LOWEST; } } else if (strncmp(buf_upper, summary, sizeof(summary) - 1) == 0) { vtodo.mesg = ical_read_summary(buf); } else if (strncmp(buf_upper, alarm, sizeof(alarm) - 1) == 0) { skip_alarm = 1; } else if (strncmp(buf_upper, desc, sizeof(desc) - 1) == 0) { vtodo.note = ical_read_note(buf, noskipped, ICAL_VTODO, ITEMLINE, log); } } } ical_log(log, ICAL_VTODO, ITEMLINE, _("The ical file seems to be malformed. " "The end of item was not found.")); cleanup: if (vtodo.note) mem_free(vtodo.note); if (vtodo.mesg) mem_free(vtodo.mesg); (*noskipped)++; } /* Import calcurse data. */ void ical_import_data(FILE * stream, FILE * log, unsigned *events, unsigned *apoints, unsigned *todos, unsigned *lines, unsigned *skipped) { const char vevent[] = "BEGIN:VEVENT"; const char vtodo[] = "BEGIN:VTODO"; char buf[BUFSIZ], lstore[BUFSIZ]; int major, minor; ical_readline_init(stream, buf, lstore, lines); RETURN_IF(!ical_chk_header(stream, buf, lstore, lines, &major, &minor), _("Warning: ical header malformed or wrong version number. " "Aborting...")); ical_log_init(log, major, minor); while (ical_readline(stream, buf, lstore, lines)) { (*lines)++; str_toupper(buf); if (strncmp(buf, vevent, sizeof(vevent) - 1) == 0) { ical_read_event(stream, log, events, apoints, skipped, buf, lstore, lines); } else if (strncmp(buf, vtodo, sizeof(vtodo) - 1) == 0) { ical_read_todo(stream, log, todos, skipped, buf, lstore, lines); } } } /* Export calcurse data. */ void ical_export_data(FILE * stream) { ical_export_header(stream); ical_export_recur_events(stream); ical_export_events(stream); ical_export_recur_apoints(stream); ical_export_apoints(stream); ical_export_todo(stream); ical_export_footer(stream); } calcurse-3.1.4/src/help.c0000644000175000001440000010335712105444321012125 00000000000000/* * Calcurse - text-based organizer * * Copyright (c) 2004-2013 calcurse Development Team * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * - Redistributions of source code must retain the above * copyright notice, this list of conditions and the * following disclaimer. * * - Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the * following disclaimer in the documentation and/or other * materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * Send your feedback or comments to : misc@calcurse.org * Calcurse home page : http://calcurse.org * */ #include #include #include #include #include "calcurse.h" #define HELPTEXTSIZ 4096 typedef struct { char *title; char text[HELPTEXTSIZ]; } help_page_t; typedef enum { HELP_MAIN, HELP_SAVE, HELP_IMPORT, HELP_EXPORT, HELP_DISPLACEMENT, HELP_VIEW, HELP_PIPE, HELP_TAB, HELP_GOTO, HELP_DELETE, HELP_ADD, HELP_COPY_PASTE, HELP_EDIT, HELP_ENOTE, HELP_VNOTE, HELP_PRIORITY, HELP_REPEAT, HELP_FLAG, HELP_CONFIG, HELP_GENERAL, HELP_OTHER, HELP_CREDITS, HELPSCREENS, NOPAGE } help_pages_e; /* Returns the number of lines in an help text. */ static int get_help_lines(char *text) { int i, newline; newline = 0; for (i = 0; text[i]; i++) { if (text[i] == '\n') newline++; } return newline + 1; } /* * Write the desired help text inside the help pad, and return the number * of lines that were written. */ static int help_write_pad(struct window *win, char *title, char *text, enum key action) { int colnum, rownum; const char *bindings_title = _("key bindings: %s"); char *bindings; colnum = 0; rownum = 0; erase_window_part(win->p, rownum, colnum, BUFSIZ, win->w); custom_apply_attr(win->p, ATTR_HIGHEST); mvwaddstr(win->p, rownum, colnum, title); if ((int)action != KEY_RESIZE && action < NBKEYS) { switch (action) { case KEY_END_OF_WEEK: case KEY_START_OF_WEEK: case KEY_MOVE_UP: case KEY_MOVE_DOWN: case KEY_MOVE_RIGHT: case KEY_MOVE_LEFT: case KEY_GENERIC_HELP: case KEY_GENERIC_REDRAW: case KEY_GENERIC_ADD_APPT: case KEY_GENERIC_ADD_TODO: case KEY_GENERIC_PREV_DAY: case KEY_GENERIC_NEXT_DAY: case KEY_GENERIC_PREV_WEEK: case KEY_GENERIC_NEXT_WEEK: case KEY_GENERIC_PREV_MONTH: case KEY_GENERIC_NEXT_MONTH: case KEY_GENERIC_PREV_YEAR: case KEY_GENERIC_NEXT_YEAR: case KEY_GENERIC_GOTO_TODAY: case KEY_GENERIC_CREDITS: case KEY_GENERIC_COPY: case KEY_GENERIC_PASTE: break; default: bindings = keys_action_allkeys(action); if (bindings) { colnum = win->w - strlen(bindings_title) - strlen(bindings); mvwprintw(win->p, rownum, colnum, bindings_title, bindings); } } } colnum = 0; rownum += get_help_lines(title); custom_remove_attr(win->p, ATTR_HIGHEST); mvwaddstr(win->p, rownum, colnum, text); rownum += get_help_lines(text); return rownum; } /* * Create and init help screen and its pad, which is used to make the scrolling * faster. */ void help_wins_init(struct scrollwin *hwin, int x, int y, int h, int w) { const int PADOFFSET = 4; const int TITLELINES = 3; hwin->win.x = x; hwin->win.y = y; hwin->win.h = h; hwin->win.w = w; hwin->pad.x = PADOFFSET; hwin->pad.y = TITLELINES; hwin->pad.h = BUFSIZ; hwin->pad.w = hwin->win.w - 2 * PADOFFSET + 1; hwin->label = _("Calcurse help"); wins_scrollwin_init(hwin); wins_show(hwin->win.p, hwin->label); } /* * Delete the existing windows and recreate them with their new * size and placement. */ static void help_wins_reinit(struct scrollwin *hwin) { wins_scrollwin_delete(hwin); wins_get_config(); help_wins_init(hwin, 0, 0, (notify_bar())? row - 3 : row - 2, col); } /* Reset the screen, needed when resizing terminal for example. */ static void help_wins_reset(struct scrollwin *hwin) { endwin(); wins_refresh(); curs_set(0); delwin(win[STA].p); help_wins_reinit(hwin); win[STA].p = newwin(win[STA].h, win[STA].w, win[STA].y, win[STA].x); keypad(win[STA].p, TRUE); if (notify_bar()) notify_reinit_bar(); wins_status_bar(); if (notify_bar()) notify_update_bar(); } /* Association between a key pressed and its corresponding help page. */ static int wanted_page(int ch) { int page; switch (ch) { case KEY_GENERIC_HELP: page = HELP_MAIN; break; case KEY_FLAG_ITEM: page = HELP_FLAG; break; case KEY_GENERIC_REDRAW: case KEY_GENERIC_ADD_APPT: case KEY_GENERIC_ADD_TODO: case KEY_GENERIC_PREV_DAY: case KEY_GENERIC_NEXT_DAY: case KEY_GENERIC_PREV_WEEK: case KEY_GENERIC_NEXT_WEEK: case KEY_GENERIC_PREV_MONTH: case KEY_GENERIC_NEXT_MONTH: case KEY_GENERIC_PREV_YEAR: case KEY_GENERIC_NEXT_YEAR: case KEY_GENERIC_GOTO_TODAY: page = HELP_GENERAL; break; case KEY_GENERIC_SAVE: page = HELP_SAVE; break; case KEY_GENERIC_IMPORT: page = HELP_IMPORT; break; case KEY_GENERIC_EXPORT: page = HELP_EXPORT; break; case KEY_END_OF_WEEK: case KEY_START_OF_WEEK: case KEY_MOVE_UP: case KEY_MOVE_DOWN: case KEY_MOVE_RIGHT: case KEY_MOVE_LEFT: page = HELP_DISPLACEMENT; break; case KEY_ADD_ITEM: page = HELP_ADD; break; case KEY_GENERIC_GOTO: page = HELP_GOTO; break; case KEY_DEL_ITEM: page = HELP_DELETE; break; case KEY_GENERIC_COPY: case KEY_GENERIC_PASTE: page = HELP_COPY_PASTE; break; case KEY_EDIT_ITEM: page = HELP_EDIT; break; case KEY_EDIT_NOTE: page = HELP_ENOTE; break; case KEY_VIEW_NOTE: page = HELP_VNOTE; break; case KEY_GENERIC_CONFIG_MENU: page = HELP_CONFIG; break; case KEY_GENERIC_OTHER_CMD: page = HELP_OTHER; break; case KEY_REPEAT_ITEM: page = HELP_REPEAT; break; case KEY_VIEW_ITEM: page = HELP_VIEW; break; case KEY_PIPE_ITEM: page = HELP_PIPE; break; case KEY_RAISE_PRIORITY: case KEY_LOWER_PRIORITY: page = HELP_PRIORITY; break; case KEY_GENERIC_CHANGE_VIEW: page = HELP_TAB; break; case KEY_GENERIC_CREDITS: page = HELP_CREDITS; break; default: page = NOPAGE; break; } return page; } /* Draws the help screen */ void help_screen(void) { enum { MOVE_UP, MOVE_DOWN, MOVE_LEFT, MOVE_RIGHT, DIRECTIONS }; struct scrollwin hwin; int need_resize; enum key ch = KEY_GENERIC_HELP; int page, oldpage; help_page_t hscr[HELPSCREENS]; char keystr[DIRECTIONS][BUFSIZ]; hscr[HELP_MAIN].title = _(" Welcome to Calcurse. This is the main help screen.\n"); snprintf(hscr[HELP_MAIN].text, HELPTEXTSIZ, _ ("Moving around: Press '%s' or '%s' to scroll text upward or downward\n" " inside help screens, if necessary.\n\n" " Exit help: When finished, press '%s' to exit help and go back to\n" " the main Calcurse screen.\n\n" " Help topic: At the bottom of this screen you can see a panel with\n" " different fields, represented by a letter and a short\n" " title. This panel contains all the available actions\n" " you can perform when using Calcurse.\n" " By pressing one of the letters appearing in this\n" " panel, you will be shown a short description of the\n" " corresponding action. At the top right side of the\n" " description screen are indicated the user-defined key\n" " bindings that lead to the action.\n\n" " Credits: Press '%s' for credits."), keys_action_firstkey(KEY_GENERIC_SCROLL_UP), keys_action_firstkey(KEY_GENERIC_SCROLL_DOWN), keys_action_firstkey(KEY_GENERIC_QUIT), keys_action_firstkey(KEY_GENERIC_CREDITS)); hscr[HELP_SAVE].title = _("Save\n"); snprintf(hscr[HELP_SAVE].text, HELPTEXTSIZ, _("Save calcurse data.\n" "Data are splitted into four different files which contain :" "\n\n" " / ~/.calcurse/conf -> user configuration\n" " | (layout, color, general options)\n" " | ~/.calcurse/apts -> data related to the appointments\n" " | ~/.calcurse/todo -> data related to the todo list\n" " \\ ~/.calcurse/keys -> user-defined key bindings\n" "\nIn the config menu, you can choose to save the Calcurse data\n" "automatically before quitting.")); hscr[HELP_IMPORT].title = _("Import\n"); snprintf(hscr[HELP_IMPORT].text, HELPTEXTSIZ, _("Import data from an icalendar file.\n" "You will be asked to enter the file name from which to load ical\n" "items. At the end of the import process, and if the general option\n" "'system_dialogs' is set to 'yes', a report indicating how many items\n" "were imported is shown.\n" "This report contains the total number of lines read, the number of\n" "appointments, events and todo items which were successfully imported,\n" "together with the number of items for which problems occured and that\n" "were skipped, if any.\n\n" "If one or more items could not be imported, one has the possibility to\n" "read the import process report in order to identify which problems\n" "occured.\n" "In this report is shown one item per line, with the line in the input\n" "stream at which this item begins, together with the description of why\n" "the item could not be imported.\n")); hscr[HELP_EXPORT].title = _("Export\n"); snprintf(hscr[HELP_EXPORT].text, HELPTEXTSIZ, _("Export calcurse data (appointments, events and todos).\n" "This leads to the export submenu, from which you can choose between\n" "two different export formats: 'ical' and 'pcal'. Choosing one of\n" "those formats lets you export calcurse data to icalendar or pcal\n" "format.\n\n" "You first need to specify the file to which the data will be exported.\n" "By default, this file is:\n\n" " ~/calcurse.ics\n\n" "for an ical export, and:\n\n" " ~/calcurse.txt\n\n" "for a pcal export.\n\n" "Calcurse data are exported in the following order:\n" " events, appointments, todos.\n")); strncpy(keystr[MOVE_UP], keys_action_allkeys(KEY_MOVE_UP), BUFSIZ); strncpy(keystr[MOVE_DOWN], keys_action_allkeys(KEY_MOVE_DOWN), BUFSIZ); strncpy(keystr[MOVE_LEFT], keys_action_allkeys(KEY_MOVE_LEFT), BUFSIZ); strncpy(keystr[MOVE_RIGHT], keys_action_allkeys(KEY_MOVE_RIGHT), BUFSIZ); hscr[HELP_DISPLACEMENT].title = _("Displacement keys\n"); snprintf(hscr[HELP_DISPLACEMENT].text, HELPTEXTSIZ, _("Move around inside calcurse screens.\n" "The following scheme summarizes how to get around:\n\n" " move up\n" " move to previous week\n" "\n" " %s\n" " move left ^ \n" " move to previous day |\n" " %s\n" " <-- + -->\n" " %s\n" " | move right\n" " v move to next day\n" " %s\n" "\n" " move to next week\n" " move down\n" "\nMoreover, while inside the calendar panel, the '%s' key moves\n" "to the first day of the week, and the '%s' key selects the last day of\n" "the week.\n"), keystr[MOVE_UP], keystr[MOVE_LEFT], keystr[MOVE_RIGHT], keystr[MOVE_DOWN], keys_action_firstkey(KEY_START_OF_WEEK), keys_action_firstkey(KEY_END_OF_WEEK)); hscr[HELP_VIEW].title = _("View\n"); snprintf(hscr[HELP_VIEW].text, HELPTEXTSIZ, _ ("View the item you select in either the Todo or Appointment panel.\n" "\nThis is usefull when an event description is longer than the " "available\nspace to display it. " "If that is the case, the description will be\n" "shortened and its end replaced by '...'. To be able to read the entire\n" "description, just press '%s' and a popup window will appear, containing\n" "the whole event.\n" "\nPress any key to close the popup window and go back to the main\n" "Calcurse screen."), keys_action_firstkey(KEY_VIEW_ITEM)); hscr[HELP_PIPE].title = _("Pipe\n"); snprintf(hscr[HELP_PIPE].text, HELPTEXTSIZ, _("Pipe the selected item to an external program.\n" "\nPress the '%s' key to pipe the currently selected appointment or\n" "todo entry to an external program.\n" "\nYou will be driven back to calcurse as soon as the program exits.\n"), keys_action_firstkey(KEY_PIPE_ITEM)); hscr[HELP_TAB].title = _("Tab\n"); snprintf(hscr[HELP_TAB].text, HELPTEXTSIZ, _("Switch between panels.\n" "The panel currently in use has its border colorized.\n" "\nSome actions are possible only if the right panel is selected.\n" "For example, if you want to add a task in the TODO list, you need first" "\nto press the '%s' key to get the TODO panel selected. Then you can\n" "press '%s' to add your item.\n" "\nNotice that at the bottom of the screen the list of possible actions\n" "change while pressing '%s', so you always know what action can be\n" "performed on the selected panel."), keys_action_firstkey(KEY_GENERIC_CHANGE_VIEW), keys_action_firstkey(KEY_ADD_ITEM), keys_action_firstkey(KEY_GENERIC_CHANGE_VIEW)); hscr[HELP_GOTO].title = _("Goto\n"); snprintf(hscr[HELP_GOTO].text, HELPTEXTSIZ, _("Jump to a specific day in the calendar.\n" "\nUsing this command, you do not need to travel to that day using\n" "the displacement keys inside the calendar panel.\n" "If you hit [ENTER] without specifying any date, Calcurse checks the\n" "system current date and you will be taken to that date.\n" "\nNotice that pressing '%s', whatever panel is\n" "selected, will select current day in the calendar."), keys_action_firstkey(KEY_GENERIC_GOTO_TODAY)); hscr[HELP_DELETE].title = _("Delete\n"); snprintf(hscr[HELP_DELETE].text, HELPTEXTSIZ, _("Delete an element in the ToDo or Appointment list.\n" "\nDepending on which panel is selected when you press the delete key,\n" "the hilighted item of either the ToDo or Appointment list will be \n" "removed from this list.\n" "\nIf the item to be deleted is recurrent, you will be asked if you\n" "wish to suppress all of the item occurences or just the one you\n" "selected.\n" "\nIf the general option 'confirm_delete' is set to 'YES', then you will" "\nbe asked for confirmation before deleting the selected event.\n" "Do not forget to save the calendar data to retrieve the modifications\n" "next time you launch Calcurse.")); hscr[HELP_ADD].title = _("Add\n"); snprintf(hscr[HELP_ADD].text, HELPTEXTSIZ, _ ("Add an item in either the ToDo or Appointment list, depending on which\n" "panel is selected when you press '%s'.\n" "\nTo enter a new item in the TODO list, you will need first to enter the" "\ndescription of this new item. Then you will be asked to specify the " "todo\npriority. This priority is represented by a number going from 9 " "for the\nlowest priority, to 1 for the highest one. It is still " "possible to\nchange the item priority afterwards, by using the '%s' and " "'%s' keys\ninside the todo panel.\n" "\nIf the APPOINTMENT panel is selected while pressing '%s', you will be\n" "able to enter either a new appointment or a new all-day long event.\n" "To enter a new event, press [ENTER] instead of the item start time, " "and\njust fill in the event description.\n" "To enter a new appointment to be added in the APPOINTMENT list, you\n" "will need to enter successively the time at which the appointment\n" "begins, the appointment length (either by specifying the end time in\n" "[hh:mm] or the duration in [+hh:mm], [+xxdxxhxxm] or [+mm] format), \n" "and the description of the event.\n" "\nThe day at which occurs the event or appointment is the day currently" "\nselected in the calendar, so you need to move to the desired day " "before\npressing '%s'.\n" "\nNotes:\n" " o if an appointment lasts for such a long time that it continues\n" " on the next days, this event will be indicated on all the\n" " corresponding days, and the beginning or ending hour will be\n" " replaced by '..' if the event does not begin or end on the day.\n" " o if you only press [ENTER] at the APPOINTMENT or TODO event\n" " description prompt, without any description, no item will be\n" " added.\n" " o do not forget to save the calendar data to retrieve the new\n" " event next time you launch Calcurse."), keys_action_firstkey(KEY_ADD_ITEM), keys_action_firstkey(KEY_RAISE_PRIORITY), keys_action_firstkey(KEY_LOWER_PRIORITY), keys_action_firstkey(KEY_ADD_ITEM), keys_action_firstkey(KEY_ADD_ITEM)); hscr[HELP_COPY_PASTE].title = _("Copy and Paste\n"); snprintf(hscr[HELP_COPY_PASTE].text, HELPTEXTSIZ, _ ( "Copy and paste the currently selected item. This is useful to quickly\n" "copy an item from one date to another. To do so, one must first\n" "highlight the item that needs to be copied, then press '%s' to copy.\n" "Once the new date is chosen in the calendar, the appointment panel must\n" "be selected and the '%s' key must be pressed to paste the item. The item\n" "will appear in the appointment panel, assigned to the newly selected\n" "date.\n\n"), keys_action_firstkey(KEY_GENERIC_COPY), keys_action_firstkey(KEY_GENERIC_PASTE)); hscr[HELP_EDIT].title = _("Edit Item\n"); snprintf(hscr[HELP_EDIT].text, HELPTEXTSIZ, _("Edit the item which is currently selected.\n" "Depending on the item type (appointment, event, or todo), and if it is\n" "repeated or not, you will be asked to choose one of the item properties" "\nto modify. An item property is one of the following: the start time, " "the\nend time, the description, or the item repetition.\n" "Once you have chosen the property you want to modify, you will be shown" "\nits actual value, and you will be able to change it as you like.\n" "\nNotes:\n" " o if you choose to edit the item repetition properties, you will\n" " be asked to re-enter all of the repetition characteristics\n" " (repetition type, frequence, and ending date). Moreover, the\n" " previous data concerning the deleted occurences will be lost.\n" " o do not forget to save the calendar data to retrieve the\n" " modified properties next time you launch Calcurse.")); hscr[HELP_ENOTE].title = _("EditNote\n"); snprintf(hscr[HELP_ENOTE].text, HELPTEXTSIZ, _ ("Attach a note to any type of item, or edit an already existing note.\n" "This feature is useful if you do not have enough space to store all\n" "of your item description, or if you would like to add sub-tasks to an\n" "already existing todo item for example.\n" "Before pressing the '%s' key, you first need to highlight the item you\n" "want the note to be attached to. Then you will be driven to an\n" "external editor to edit your note. This editor is chosen the following\n" "way:\n" " o if the 'VISUAL' environment variable is set, then this will be\n" " the default editor to be called.\n" " o if 'VISUAL' is not set, then the 'EDITOR' environment variable\n" " will be used as the default editor.\n" " o if none of the above environment variables is set, then\n" " '/usr/bin/vi' will be used.\n" "\nOnce the item note is edited and saved, quit your favorite editor.\n" "You will then go back to Calcurse, and the '>' sign will appear in front" "\nof the highlighted item, meaning there is a note attached to it."), keys_action_firstkey(KEY_EDIT_NOTE)); hscr[HELP_VNOTE].title = _("ViewNote\n"); snprintf(hscr[HELP_VNOTE].text, HELPTEXTSIZ, _ ("View a note which was previously attached to an item (an item which\n" "owns a note has a '>' sign in front of it).\n" "This command only permits to view the note, not to edit it (to do so,\n" "use the 'EditNote' command, by pressing the '%s' key).\n" "Once you highlighted an item with a note attached to it, and the '%s' key" "\nwas pressed, you will be driven to an external pager to view that " "note.\n" "The default pager is chosen the following way:\n" " o if the 'PAGER' environment variable is set, then this will be\n" " the default viewer to be called.\n" " o if the above environment variable is not set, then\n" " '/usr/bin/less' will be used.\n" "As for editing a note, quit the pager and you will be driven back to\n" "Calcurse."), keys_action_firstkey(KEY_EDIT_NOTE), keys_action_firstkey(KEY_VIEW_NOTE)); hscr[HELP_PRIORITY].title = _("Priority\n"); snprintf(hscr[HELP_PRIORITY].text, HELPTEXTSIZ, _ ("Change the priority of the currently selected item in the ToDo list.\n" "Priorities are represented by the number appearing in front of the\n" "todo description. This number goes from 9 for the lowest priority to\n" "1 for the highest priority.\n" "Todo having higher priorities are placed first (at the top) inside the\n" "todo panel.\n\n" "If you want to raise the priority of a todo item, you need to press " "'%s'.\n" "In doing so, the number in front of this item will decrease, " "meaning its\npriority increases. The item position inside the todo " "panel may change,\ndepending on the priority of the items above it.\n\n" "At the opposite, to lower a todo priority, press '%s'. The todo position" "\nmay also change depending on the priority of the items below."), keys_action_firstkey(KEY_RAISE_PRIORITY), keys_action_firstkey(KEY_LOWER_PRIORITY)); hscr[HELP_REPEAT].title = _("Repeat\n"); snprintf(hscr[HELP_REPEAT].text, HELPTEXTSIZ, _("Repeat an event or an appointment.\n" "You must first select the item to be repeated by moving inside the\n" "appointment panel. Then pressing '%s' will lead you to a set of three\n" "questions, with which you will be able to specify the repetition\n" "characteristics:\n\n" " o type: you can choose between a daily, weekly, monthly or\n" " yearly repetition by pressing 'D', 'W', 'M' or 'Y'\n" " respectively.\n\n" " o frequence: this indicates how often the item shall be repeated.\n" " For example, if you want to remember an anniversary,\n" " choose a 'yearly' repetition with a frequence of '1',\n" " which means it must be repeated every year. Another\n" " example: if you go to the restaurant every two days,\n" " choose a 'daily' repetition with a frequence of '2'.\n\n" " o ending date: this specifies when to stop repeating the selected\n" " event or appointment. To indicate an endless \n" " repetition, enter '0' and the item will be repeated\n" " forever.\n" "\nNotes:\n" " o repeated items are marked with an '*' inside the appointment\n" " panel, to be easily recognizable from non-repeated ones.\n" " o the 'Repeat' and 'Delete' command can be mixed to create\n" " complicated configurations, as it is possible to delete only\n" " one occurence of a repeated item."), keys_action_firstkey(KEY_REPEAT_ITEM)); hscr[HELP_FLAG].title = _("Flag Item\n"); snprintf(hscr[HELP_FLAG].text, HELPTEXTSIZ, _ ("Toggle an appointment's 'important' flag or a todo's 'completed' flag.\n" "If a todo is flagged as completed, its priority number will be replaced\n" "by an 'X' sign. Completed tasks will no longer appear in exported data\n" "or when using the '-t' command line flag (unless specifying '0' as the\n" "priority number, in which case only completed tasks will be shown).\n\n" "If an appointment is flagged as important, an exclamation mark appears\n" "in front of it, and you will be warned if time gets closed to the\n" "appointment start time.\n" "To customize the way one gets notified, the configuration submenu lets\n" "you choose the command launched to warn user of an upcoming appointment," "\nand how long before it he gets notified.")); hscr[HELP_CONFIG].title = _("Config\n"); snprintf(hscr[HELP_CONFIG].text, HELPTEXTSIZ, _("Open the configuration submenu.\n" "From this submenu, you can select between color, layout, notification\n" "and general options, and you can also configure your keybindings.\n" "\nThe color submenu lets you choose the color theme.\n" "The layout submenu lets you choose the Calcurse screen layout, in other" "\nwords where to place the three different panels on the screen.\n" "The general options submenu brings a screen with the different options" "\nwhich modifies the way Calcurse interacts with the user.\n" "The notify submenu allows you to change the notify-bar settings.\n" "The keys submenu lets you define your own key bindings.\n" "\nDo not forget to save the calendar data to retrieve your configuration" "\nnext time you launch Calcurse.")); hscr[HELP_GENERAL].title = _("Generic keybindings\n"); snprintf(hscr[HELP_GENERAL].text, HELPTEXTSIZ, _ ("Some of the keybindings apply whatever panel is selected. They are\n" "called generic keybinding.\n" "Here is the list of all the generic key bindings, together with their\n" "corresponding action:\n\n" " '%s' : Redraw function -> redraws calcurse panels, this is useful if\n" " you resize your terminal screen or when\n" " garbage appears inside the display\n" " '%s' : Add Appointment -> add an appointment or an event\n" " '%s' : Add ToDo -> add a todo\n" " '%s' : -1 Day -> move to previous day\n" " '%s' : +1 Day -> move to next day\n" " '%s' : -1 Week -> move to previous week\n" " '%s' : +1 Week -> move to next week\n" " '%s' : -1 Month -> move to previous month\n" " '%s' : +1 Month -> move to next month\n" " '%s' : -1 Year -> move to previous year\n" " '%s' : +1 Year -> move to next year\n" " '%s' : Goto today -> move to current day\n" "\nThe '%s' and '%s' keys are used to scroll text upward or downward\n" "when inside specific screens such the help screens for example.\n" "They are also used when the calendar screen is selected to switch\n" "between the available views (monthly and weekly calendar views)."), keys_action_firstkey(KEY_GENERIC_REDRAW), keys_action_firstkey(KEY_GENERIC_ADD_APPT), keys_action_firstkey(KEY_GENERIC_ADD_TODO), keys_action_firstkey(KEY_GENERIC_PREV_DAY), keys_action_firstkey(KEY_GENERIC_NEXT_DAY), keys_action_firstkey(KEY_GENERIC_PREV_WEEK), keys_action_firstkey(KEY_GENERIC_NEXT_WEEK), keys_action_firstkey(KEY_GENERIC_PREV_MONTH), keys_action_firstkey(KEY_GENERIC_NEXT_MONTH), keys_action_firstkey(KEY_GENERIC_PREV_YEAR), keys_action_firstkey(KEY_GENERIC_NEXT_YEAR), keys_action_firstkey(KEY_GENERIC_GOTO_TODAY), keys_action_firstkey(KEY_GENERIC_SCROLL_UP), keys_action_firstkey(KEY_GENERIC_SCROLL_DOWN)); hscr[HELP_OTHER].title = _("OtherCmd\n"); snprintf(hscr[HELP_OTHER].text, HELPTEXTSIZ, _("Switch between status bar help pages.\n" "Because the terminal screen is too narrow to display all of the\n" "available commands, you need to press '%s' to see the next set of\n" "commands together with their keybindings.\n" "Once the last status bar page is reached, pressing '%s' another time\n" "leads you back to the first page."), keys_action_firstkey(KEY_GENERIC_OTHER_CMD), keys_action_firstkey(KEY_GENERIC_OTHER_CMD)); hscr[HELP_CREDITS].title = _("Calcurse - text-based organizer"); snprintf(hscr[HELP_CREDITS].text, HELPTEXTSIZ, _("\nCopyright (c) 2004-2013 calcurse Development Team\n" "All rights reserved.\n" "\n" "Redistribution and use in source and binary forms, with or without\n" "modification, are permitted provided that the following conditions\n" "are met:\n" "\n" "\t- Redistributions of source code must retain the above\n" "\t copyright notice, this list of conditions and the\n" "\t following disclaimer.\n" "\n" "\t- Redistributions in binary form must reproduce the above\n" "\t copyright notice, this list of conditions and the\n" "\t following disclaimer in the documentation and/or other\n" "\t materials provided with the distribution.\n" "\n\n" "Send your feedback or comments to : misc@calcurse.org\n" "Calcurse home page : http://calcurse.org")); help_wins_init(&hwin, 0, 0, (notify_bar())? row - 3 : row - 2, col); oldpage = HELP_MAIN; need_resize = 0; /* Display the help screen related to user input. */ while (ch != KEY_GENERIC_QUIT) { erase_window_part(hwin.win.p, 1, hwin.pad.y, col - 2, hwin.win.h - 2); switch (ch) { case KEY_GENERIC_SCROLL_DOWN: wins_scrollwin_down(&hwin, 1); break; case KEY_GENERIC_SCROLL_UP: wins_scrollwin_up(&hwin, 1); break; default: page = wanted_page(ch); if (page != NOPAGE) { hwin.first_visible_line = 0; hwin.total_lines = help_write_pad(&hwin.pad, hscr[page].title, hscr[page].text, ch); oldpage = page; } } if (resize) { resize = 0; wins_get_config(); help_wins_reset(&hwin); hwin.first_visible_line = 0; hwin.total_lines = help_write_pad(&hwin.pad, hscr[oldpage].title, hscr[oldpage].text, ch); need_resize = 1; } wins_scrollwin_display(&hwin); ch = keys_getch(win[KEY].p, NULL, NULL); } wins_scrollwin_delete(&hwin); if (need_resize) wins_reset(); } calcurse-3.1.4/src/calendar.c0000644000175000001440000006234612105444321012750 00000000000000/* * Calcurse - text-based organizer * * Copyright (c) 2004-2013 calcurse Development Team * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * - Redistributions of source code must retain the above * copyright notice, this list of conditions and the * following disclaimer. * * - Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the * following disclaimer in the documentation and/or other * materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * Send your feedback or comments to : misc@calcurse.org * Calcurse home page : http://calcurse.org * */ #include #include #include #include #include #include #include "calcurse.h" #ifndef M_PI #define M_PI 3.14159265358979323846 #endif #define EPOCH 90 #define EPSILONg 279.403303 /* solar ecliptic long at EPOCH */ #define RHOg 282.768422 /* solar ecliptic long of perigee at EPOCH */ #define ECCEN 0.016713 /* solar orbit eccentricity */ #define lzero 318.351648 /* lunar mean long at EPOCH */ #define Pzero 36.340410 /* lunar mean long of perigee at EPOCH */ #define Nzero 318.510107 /* lunar mean long of node at EPOCH */ #define ISLEAP(y) ((((y) % 4) == 0 && ((y) % 100) != 0) || ((y) % 400) == 0) enum pom { NO_POM, FIRST_QUARTER, FULL_MOON, LAST_QUARTER, NEW_MOON, MOON_PHASES }; static struct date today, slctd_day; static unsigned calendar_view, week_begins_on_monday; static pthread_mutex_t date_thread_mutex = PTHREAD_MUTEX_INITIALIZER; static pthread_t calendar_t_date; static void draw_monthly_view(struct window *, struct date *, unsigned); static void draw_weekly_view(struct window *, struct date *, unsigned); static void (*draw_calendar[CAL_VIEWS]) (struct window *, struct date *, unsigned) = { draw_monthly_view, draw_weekly_view}; static int monthly_view_cache[MAXDAYSPERMONTH]; static int monthly_view_cache_valid = 0; static int monthly_view_cache_month = 0; /* Switch between calendar views (monthly view is selected by default). */ void calendar_view_next(void) { calendar_view++; if (calendar_view == CAL_VIEWS) calendar_view = 0; } void calendar_view_prev(void) { if (calendar_view == 0) calendar_view = CAL_VIEWS; calendar_view--; } void calendar_set_view(int view) { calendar_view = (view < 0 || view >= CAL_VIEWS) ? CAL_MONTH_VIEW : view; } int calendar_get_view(void) { return (int)calendar_view; } /* Thread needed to update current date in calendar. */ /* ARGSUSED0 */ static void *calendar_date_thread(void *arg) { time_t actual, tomorrow; for (;;) { tomorrow = (time_t) (get_today() + DAYINSEC); while ((actual = time(NULL)) < tomorrow) sleep(tomorrow - actual); calendar_set_current_date(); calendar_update_panel(&win[CAL]); } return NULL; } /* Launch the calendar date thread. */ void calendar_start_date_thread(void) { pthread_create(&calendar_t_date, NULL, calendar_date_thread, NULL); } /* Stop the calendar date thread. */ void calendar_stop_date_thread(void) { if (calendar_t_date) { pthread_cancel(calendar_t_date); pthread_join(calendar_t_date, NULL); } } /* Set static variable today to current date */ void calendar_set_current_date(void) { time_t timer; struct tm tm; timer = time(NULL); localtime_r(&timer, &tm); pthread_mutex_lock(&date_thread_mutex); today.dd = tm.tm_mday; today.mm = tm.tm_mon + 1; today.yyyy = tm.tm_year + 1900; pthread_mutex_unlock(&date_thread_mutex); } /* Needed to display sunday or monday as the first day of week in calendar. */ void calendar_set_first_day_of_week(enum wday first_day) { switch (first_day) { case SUNDAY: week_begins_on_monday = 0; break; case MONDAY: week_begins_on_monday = 1; break; default: ERROR_MSG(_("ERROR setting first day of week")); week_begins_on_monday = 0; /* NOTREACHED */ } } /* Swap first day of week in calendar. */ void calendar_change_first_day_of_week(void) { week_begins_on_monday = !week_begins_on_monday; } /* Return 1 if week begins on monday, 0 otherwise. */ unsigned calendar_week_begins_on_monday(void) { return week_begins_on_monday; } /* Fill in the given variable with the current date. */ void calendar_store_current_date(struct date *date) { pthread_mutex_lock(&date_thread_mutex); *date = today; pthread_mutex_unlock(&date_thread_mutex); } /* This is to start at the current date in calendar. */ void calendar_init_slctd_day(void) { calendar_store_current_date(&slctd_day); } /* Return the selected day in calendar */ struct date *calendar_get_slctd_day(void) { return &slctd_day; } /* Returned value represents the selected day in calendar (in seconds) */ long calendar_get_slctd_day_sec(void) { return date2sec(slctd_day, 0, 0); } static int calendar_get_wday(struct date *date) { struct tm t; memset(&t, 0, sizeof(struct tm)); t.tm_mday = date->dd; t.tm_mon = date->mm - 1; t.tm_year = date->yyyy - 1900; mktime(&t); return t.tm_wday; } static unsigned months_to_days(unsigned month) { return (month * 3057 - 3007) / 100; } static long years_to_days(unsigned year) { return year * 365L + year / 4 - year / 100 + year / 400; } static long ymd_to_scalar(unsigned year, unsigned month, unsigned day) { long scalar; scalar = day + months_to_days(month); if (month > 2) scalar -= ISLEAP(year) ? 1 : 2; year--; scalar += years_to_days(year); return scalar; } /* * Used to change date by adding a certain amount of days or weeks. * Returns 0 on success, 1 otherwise. */ static int date_change(struct tm *date, int delta_month, int delta_day) { struct tm t; t = *date; t.tm_mon += delta_month; t.tm_mday += delta_day; if (mktime(&t) == -1) return 1; else { *date = t; return 0; } } void calendar_monthly_view_cache_set_invalid(void) { monthly_view_cache_valid = 0; } /* Draw the monthly view inside calendar panel. */ static void draw_monthly_view(struct window *cwin, struct date *current_day, unsigned sunday_first) { const int OFFY = CALHEIGHT / 2 - (conf.compact_panels ? 3 : 1); struct date check_day; int c_day, c_day_1, day_1_sav, numdays, j; unsigned yr, mo; int OFFX, SBAR_WIDTH, ofs_x, ofs_y; int item_this_day = 0; mo = slctd_day.mm; yr = slctd_day.yyyy; /* offset for centering calendar in window */ SBAR_WIDTH = wins_sbar_width(); OFFX = (SBAR_WIDTH - 27) / 2; ofs_y = OFFY; ofs_x = OFFX; /* checking the number of days in february */ numdays = days[mo - 1]; if (2 == mo && ISLEAP(yr)) ++numdays; /* * the first calendar day will be monday or sunday, depending on * 'week_begins_on_monday' value */ c_day_1 = (int)((ymd_to_scalar(yr, mo, 1 + sunday_first) - (long)1) % 7L); /* Write the current month and year on top of the calendar */ WINS_CALENDAR_LOCK; custom_apply_attr(cwin->p, ATTR_HIGHEST); mvwprintw(cwin->p, ofs_y, (SBAR_WIDTH - (strlen(_(monthnames[mo - 1])) + 5)) / 2, "%s %d", _(monthnames[mo - 1]), slctd_day.yyyy); custom_remove_attr(cwin->p, ATTR_HIGHEST); ++ofs_y; /* print the days, with regards to the first day of the week */ custom_apply_attr(cwin->p, ATTR_HIGHEST); for (j = 0; j < WEEKINDAYS; j++) { mvwaddstr(cwin->p, ofs_y, ofs_x + 4 * j, _(daynames[1 + j - sunday_first])); } custom_remove_attr(cwin->p, ATTR_HIGHEST); WINS_CALENDAR_UNLOCK; day_1_sav = (c_day_1 + 1) * 3 + c_day_1 - 7; /* invalidate cache if a new month is selected */ if (yr * YEARINMONTHS + mo != monthly_view_cache_month) { monthly_view_cache_month = yr * YEARINMONTHS + mo; monthly_view_cache_valid = 0; } for (c_day = 1; c_day <= numdays; ++c_day, ++c_day_1, c_day_1 %= 7) { check_day.dd = c_day; check_day.mm = slctd_day.mm; check_day.yyyy = slctd_day.yyyy; /* check if the day contains an event or an appointment */ if (monthly_view_cache_valid) { item_this_day = monthly_view_cache[c_day - 1]; } else { item_this_day = monthly_view_cache[c_day - 1] = day_check_if_item(check_day); } /* Go to next line, the week is over. */ if (!c_day_1 && 1 != c_day) { ofs_y++; ofs_x = OFFX - day_1_sav - 4 * c_day; } WINS_CALENDAR_LOCK; if (c_day == current_day->dd && current_day->mm == slctd_day.mm && current_day->yyyy == slctd_day.yyyy && current_day->dd != slctd_day.dd) { /* This is today, so print it in yellow. */ custom_apply_attr(cwin->p, ATTR_LOWEST); mvwprintw(cwin->p, ofs_y + 1, ofs_x + day_1_sav + 4 * c_day + 1, "%2d", c_day); custom_remove_attr(cwin->p, ATTR_LOWEST); } else if (c_day == slctd_day.dd) { /* This is the selected day, print it according to user's theme. */ custom_apply_attr(cwin->p, ATTR_HIGHEST); mvwprintw(cwin->p, ofs_y + 1, ofs_x + day_1_sav + 4 * c_day + 1, "%2d", c_day); custom_remove_attr(cwin->p, ATTR_HIGHEST); } else if (item_this_day) { custom_apply_attr(cwin->p, ATTR_LOW); mvwprintw(cwin->p, ofs_y + 1, ofs_x + day_1_sav + 4 * c_day + 1, "%2d", c_day); custom_remove_attr(cwin->p, ATTR_LOW); } else { /* otherwise, print normal days in black */ mvwprintw(cwin->p, ofs_y + 1, ofs_x + day_1_sav + 4 * c_day + 1, "%2d", c_day); } WINS_CALENDAR_UNLOCK; } monthly_view_cache_valid = 1; } static int weeknum(const struct tm *t, int firstweekday) { int wday, wnum; wday = t->tm_wday; if (firstweekday == MONDAY) { if (wday == SUNDAY) wday = 6; else wday--; } wnum = ((t->tm_yday + WEEKINDAYS - wday) / WEEKINDAYS); if (wnum < 0) wnum = 0; return wnum; } /* * Compute the week number according to ISO 8601. */ static int ISO8601weeknum(const struct tm *t) { int wnum, jan1day; wnum = weeknum(t, MONDAY); jan1day = t->tm_wday - (t->tm_yday % WEEKINDAYS); if (jan1day < 0) jan1day += WEEKINDAYS; switch (jan1day) { case MONDAY: break; case TUESDAY: case WEDNESDAY: case THURSDAY: wnum++; break; case FRIDAY: case SATURDAY: case SUNDAY: if (wnum == 0) { /* Get week number of last week of last year. */ struct tm dec31ly; /* 12/31 last year */ dec31ly = *t; dec31ly.tm_year--; dec31ly.tm_mon = 11; dec31ly.tm_mday = 31; dec31ly.tm_wday = (jan1day == SUNDAY) ? 6 : jan1day - 1; dec31ly.tm_yday = 364 + ISLEAP(dec31ly.tm_year + 1900); wnum = ISO8601weeknum(&dec31ly); } break; } if (t->tm_mon == 11) { int wday, mday; wday = t->tm_wday; mday = t->tm_mday; if ((wday == MONDAY && (mday >= 29 && mday <= 31)) || (wday == TUESDAY && (mday == 30 || mday == 31)) || (wday == WEDNESDAY && mday == 31)) wnum = 1; } return wnum; } /* Draw the weekly view inside calendar panel. */ static void draw_weekly_view(struct window *cwin, struct date *current_day, unsigned sunday_first) { #define DAYSLICESNO 6 const int WCALWIDTH = 30; const int OFFY = CALHEIGHT / 2 - (conf.compact_panels ? 3 : 1); struct tm t; int OFFX, j, c_wday, days_to_remove, weeknum; OFFX = (wins_sbar_width() - WCALWIDTH) / 2 + 1; /* Fill in a tm structure with the first day of the selected week. */ c_wday = calendar_get_wday(&slctd_day); if (sunday_first) days_to_remove = c_wday; else days_to_remove = c_wday == 0 ? WEEKINDAYS - 1 : c_wday - 1; memset(&t, 0, sizeof(struct tm)); t.tm_mday = slctd_day.dd; t.tm_mon = slctd_day.mm - 1; t.tm_year = slctd_day.yyyy - 1900; mktime(&t); date_change(&t, 0, -days_to_remove); /* Print the week number. */ weeknum = ISO8601weeknum(&t); WINS_CALENDAR_LOCK; custom_apply_attr(cwin->p, ATTR_HIGHEST); mvwprintw(cwin->p, conf.compact_panels ? 0 : 2, cwin->w - 9, "(# %02d)", weeknum); custom_remove_attr(cwin->p, ATTR_HIGHEST); WINS_CALENDAR_UNLOCK; /* Now draw calendar view. */ for (j = 0; j < WEEKINDAYS; j++) { struct date date; unsigned attr, item_this_day; int i, slices[DAYSLICESNO]; /* print the day names, with regards to the first day of the week */ custom_apply_attr(cwin->p, ATTR_HIGHEST); mvwaddstr(cwin->p, OFFY, OFFX + 4 * j, _(daynames[1 + j - sunday_first])); custom_remove_attr(cwin->p, ATTR_HIGHEST); /* Check if the day to be printed has an item or not. */ date.dd = t.tm_mday; date.mm = t.tm_mon + 1; date.yyyy = t.tm_year + 1900; item_this_day = day_check_if_item(date); /* Print the day numbers with appropriate decoration. */ if (t.tm_mday == current_day->dd && current_day->mm == slctd_day.mm && current_day->yyyy == slctd_day.yyyy && current_day->dd != slctd_day.dd) attr = ATTR_LOWEST; /* today, but not selected */ else if (t.tm_mday == slctd_day.dd) attr = ATTR_HIGHEST; /* selected day */ else if (item_this_day) attr = ATTR_LOW; else attr = 0; WINS_CALENDAR_LOCK; if (attr) custom_apply_attr(cwin->p, attr); mvwprintw(cwin->p, OFFY + 1, OFFX + 1 + 4 * j, "%02d", t.tm_mday); if (attr) custom_remove_attr(cwin->p, attr); WINS_CALENDAR_UNLOCK; /* Draw slices indicating appointment times. */ memset(slices, 0, DAYSLICESNO * sizeof *slices); if (day_chk_busy_slices(date, DAYSLICESNO, slices)) { for (i = 0; i < DAYSLICESNO; i++) { if (j != WEEKINDAYS - 1 && i != DAYSLICESNO - 1) { WINS_CALENDAR_LOCK; mvwhline(cwin->p, OFFY + 2 + i, OFFX + 3 + 4 * j, ACS_S9, 2); WINS_CALENDAR_UNLOCK; } if (slices[i]) { int highlight; highlight = (t.tm_mday == slctd_day.dd) ? 1 : 0; WINS_CALENDAR_LOCK; if (highlight) custom_apply_attr(cwin->p, attr); wattron(cwin->p, A_REVERSE); mvwaddstr(cwin->p, OFFY + 2 + i, OFFX + 1 + 4 * j, " "); mvwaddstr(cwin->p, OFFY + 2 + i, OFFX + 2 + 4 * j, " "); wattroff(cwin->p, A_REVERSE); if (highlight) custom_remove_attr(cwin->p, attr); WINS_CALENDAR_UNLOCK; } } } /* get next day */ date_change(&t, 0, 1); } /* Draw marks to indicate midday on the sides of the calendar. */ WINS_CALENDAR_LOCK; custom_apply_attr(cwin->p, ATTR_HIGHEST); mvwhline(cwin->p, OFFY + 1 + DAYSLICESNO / 2, OFFX, ACS_S9, 1); mvwhline(cwin->p, OFFY + 1 + DAYSLICESNO / 2, OFFX + WCALWIDTH - 3, ACS_S9, 1); custom_remove_attr(cwin->p, ATTR_HIGHEST); WINS_CALENDAR_UNLOCK; #undef DAYSLICESNO } /* Function used to display the calendar panel. */ void calendar_update_panel(struct window *cwin) { struct date current_day; unsigned sunday_first; calendar_store_current_date(¤t_day); WINS_CALENDAR_LOCK; erase_window_part(cwin->p, 1, conf.compact_panels ? 1 : 3, cwin->w - 2, cwin->h - 2); if (!conf.compact_panels) mvwhline(cwin->p, 2, 1, ACS_HLINE, cwin->w - 2); WINS_CALENDAR_UNLOCK; sunday_first = calendar_week_begins_on_monday()? 0 : 1; draw_calendar[calendar_view] (cwin, ¤t_day, sunday_first); wnoutrefresh(cwin->p); } /* Set the selected day in calendar to current day. */ void calendar_goto_today(void) { struct date today; calendar_store_current_date(&today); slctd_day.dd = today.dd; slctd_day.mm = today.mm; slctd_day.yyyy = today.yyyy; } /* * Ask for a date to jump to, then check the correctness of that date * and jump to it. * If the entered date is empty, automatically jump to the current date. * slctd_day is updated with the newly selected date. */ void calendar_change_day(int datefmt) { #define LDAY 11 char selected_day[LDAY] = ""; char outstr[BUFSIZ]; int dday, dmonth, dyear; int wrong_day = 1; const char *mesg_line1 = _("The day you entered is not valid " "(should be between 01/01/1902 and 12/31/2037)"); const char *mesg_line2 = _("Press [ENTER] to continue"); const char *request_date = _("Enter the day to go to [ENTER for today] : %s"); while (wrong_day) { snprintf(outstr, BUFSIZ, request_date, DATEFMT_DESC(datefmt)); status_mesg(outstr, ""); if (getstring(win[STA].p, selected_day, LDAY, 0, 1) == GETSTRING_ESC) return; else { if (strlen(selected_day) == 0) { wrong_day = 0; calendar_goto_today(); } else if (parse_date(selected_day, datefmt, &dyear, &dmonth, &dday, calendar_get_slctd_day())) { wrong_day = 0; /* go to chosen day */ slctd_day.dd = dday; slctd_day.mm = dmonth; slctd_day.yyyy = dyear; } if (wrong_day) { status_mesg(mesg_line1, mesg_line2); wgetch(win[KEY].p); } } } return; } void calendar_move(enum move move, int count) { int ret, days_to_remove, days_to_add; struct tm t; memset(&t, 0, sizeof(struct tm)); t.tm_mday = slctd_day.dd; t.tm_mon = slctd_day.mm - 1; t.tm_year = slctd_day.yyyy - 1900; switch (move) { case DAY_PREV: ret = date_change(&t, 0, -count); break; case DAY_NEXT: ret = date_change(&t, 0, count); break; case WEEK_PREV: ret = date_change(&t, 0, -count * WEEKINDAYS); break; case WEEK_NEXT: ret = date_change(&t, 0, count * WEEKINDAYS); break; case MONTH_PREV: ret = date_change(&t, -count, 0); break; case MONTH_NEXT: ret = date_change(&t, count, 0); break; case YEAR_PREV: ret = date_change(&t, -count * YEARINMONTHS, 0); break; case YEAR_NEXT: ret = date_change(&t, count * YEARINMONTHS, 0); break; case WEEK_START: /* Normalize struct tm to get week day number. */ mktime(&t); if (calendar_week_begins_on_monday()) days_to_remove = ((t.tm_wday == 0) ? WEEKINDAYS - 1 : t.tm_wday - 1); else days_to_remove = ((t.tm_wday == 0) ? 0 : t.tm_wday); days_to_remove += (count - 1) * WEEKINDAYS; ret = date_change(&t, 0, -days_to_remove); break; case WEEK_END: mktime(&t); if (calendar_week_begins_on_monday()) days_to_add = ((t.tm_wday == 0) ? 0 : WEEKINDAYS - t.tm_wday); else days_to_add = ((t.tm_wday == 0) ? WEEKINDAYS - 1 : WEEKINDAYS - 1 - t.tm_wday); days_to_add += (count - 1) * WEEKINDAYS; ret = date_change(&t, 0, days_to_add); break; default: ret = 1; /* NOTREACHED */ } if (ret == 0) { if (t.tm_year < 2) { t.tm_mday = 1; t.tm_mon = 0; t.tm_year = 2; } else if (t.tm_year > 137) { t.tm_mday = 31; t.tm_mon = 11; t.tm_year = 137; } slctd_day.dd = t.tm_mday; slctd_day.mm = t.tm_mon + 1; slctd_day.yyyy = t.tm_year + 1900; } } /* Returns the beginning of current year as a long. */ long calendar_start_of_year(void) { time_t timer; struct tm tm; timer = time(NULL); localtime_r(&timer, &tm); tm.tm_mon = 0; tm.tm_mday = 1; tm.tm_hour = 0; tm.tm_min = 0; tm.tm_sec = 0; timer = mktime(&tm); return (long)timer; } long calendar_end_of_year(void) { time_t timer; struct tm tm; timer = time(NULL); localtime_r(&timer, &tm); tm.tm_mon = 0; tm.tm_mday = 1; tm.tm_hour = 0; tm.tm_min = 0; tm.tm_sec = 0; tm.tm_year++; timer = mktime(&tm); return (long)(timer - 1); } /* * The pom, potm, dotr, adj360 are used to compute the current * phase of the moon. * The code is based on the OpenBSD version of pom(6). * Below is reported the copyright notice. */ /* * Copyright (c) 1989, 1993 * The Regents of the University of California. All rights reserved. * * This code is derived from software posted to USENET. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ /* * dtor -- * convert degrees to radians */ static double dtor(double deg) { return deg * M_PI / 180; } /* * adj360 -- * adjust value so 0 <= deg <= 360 */ static void adj360(double *deg) { for (;;) if (*deg < 0.0) *deg += 360.0; else if (*deg > 360.0) *deg -= 360.0; else break; } /* * potm -- * return phase of the moon */ static double potm(double days) { double N, Msol, Ec, LambdaSol, l, Mm, Ev, Ac, A3, Mmprime; double A4, lprime, V, ldprime, D, Nm; N = 360.0 * days / 365.242191; /* sec 46 #3 */ adj360(&N); Msol = N + EPSILONg - RHOg; /* sec 46 #4 */ adj360(&Msol); Ec = 360 / M_PI * ECCEN * sin(dtor(Msol)); /* sec 46 #5 */ LambdaSol = N + Ec + EPSILONg; /* sec 46 #6 */ adj360(&LambdaSol); l = 13.1763966 * days + lzero; /* sec 65 #4 */ adj360(&l); Mm = l - (0.1114041 * days) - Pzero; /* sec 65 #5 */ adj360(&Mm); Nm = Nzero - (0.0529539 * days); /* sec 65 #6 */ adj360(&Nm); Ev = 1.2739 * sin(dtor(2 * (l - LambdaSol) - Mm)); /* sec 65 #7 */ Ac = 0.1858 * sin(dtor(Msol)); /* sec 65 #8 */ A3 = 0.37 * sin(dtor(Msol)); Mmprime = Mm + Ev - Ac - A3; /* sec 65 #9 */ Ec = 6.2886 * sin(dtor(Mmprime)); /* sec 65 #10 */ A4 = 0.214 * sin(dtor(2 * Mmprime)); /* sec 65 #11 */ lprime = l + Ev + Ec - Ac + A4; /* sec 65 #12 */ V = 0.6583 * sin(dtor(2 * (lprime - LambdaSol))); /* sec 65 #13 */ ldprime = lprime + V; /* sec 65 #14 */ D = ldprime - LambdaSol; /* sec 67 #2 */ return 50.0 * (1 - cos(dtor(D))); /* sec 67 #3 */ } /* * Phase of the Moon. Calculates the current phase of the moon. * Based on routines from `Practical Astronomy with Your Calculator', * by Duffett-Smith. Comments give the section from the book that * particular piece of code was adapted from. * * -- Keith E. Brandt VIII 1984 * * Updated to the Third Edition of Duffett-Smith's book, IX 1998 * */ static double pom(time_t tmpt) { struct tm *GMT; double days; int cnt; GMT = gmtime(&tmpt); days = (GMT->tm_yday + 1) + ((GMT->tm_hour + (GMT->tm_min / 60.0) + (GMT->tm_sec / 3600.0)) / 24.0); for (cnt = EPOCH; cnt < GMT->tm_year; ++cnt) days += ISLEAP(cnt + TM_YEAR_BASE) ? 366 : 365; /* Selected time could be before EPOCH */ for (cnt = GMT->tm_year; cnt < EPOCH; ++cnt) days -= ISLEAP(cnt + TM_YEAR_BASE) ? 366 : 365; return potm(days); } /* * Return a pictogram representing the current phase of the moon. * Careful: date is the selected day in calendar at 00:00, so it represents * the phase of the moon for previous day. */ const char *calendar_get_pom(time_t date) { const char *pom_pict[MOON_PHASES] = { " ", "|) ", "(|)", "(| ", " | " }; enum pom phase = NO_POM; double pom_today, relative_pom, pom_yesterday, pom_tomorrow; const double half = 50.0; pom_yesterday = pom(date); pom_today = pom(date + DAYINSEC); relative_pom = abs(pom_today - half); pom_tomorrow = pom(date + 2 * DAYINSEC); if (pom_today > pom_yesterday && pom_today > pom_tomorrow) phase = FULL_MOON; else if (pom_today < pom_yesterday && pom_today < pom_tomorrow) phase = NEW_MOON; else if (relative_pom < abs(pom_yesterday - half) && relative_pom < abs(pom_tomorrow - half)) phase = (pom_tomorrow > pom_today) ? FIRST_QUARTER : LAST_QUARTER; return pom_pict[phase]; } calcurse-3.1.4/src/apoint.c0000644000175000001440000002422712105444321012465 00000000000000/* * Calcurse - text-based organizer * * Copyright (c) 2004-2013 calcurse Development Team * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * - Redistributions of source code must retain the above * copyright notice, this list of conditions and the * following disclaimer. * * - Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the * following disclaimer in the documentation and/or other * materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * Send your feedback or comments to : misc@calcurse.org * Calcurse home page : http://calcurse.org * */ #include #include #include #include #include "calcurse.h" llist_ts_t alist_p; static int hilt; void apoint_free(struct apoint *apt) { mem_free(apt->mesg); erase_note(&apt->note); mem_free(apt); } struct apoint *apoint_dup(struct apoint *in) { EXIT_IF(!in, _("null pointer")); struct apoint *apt = mem_malloc(sizeof(struct apoint)); apt->start = in->start; apt->dur = in->dur; apt->state = in->state; apt->mesg = mem_strdup(in->mesg); if (in->note) apt->note = mem_strdup(in->note); else apt->note = NULL; return apt; } void apoint_llist_init(void) { LLIST_TS_INIT(&alist_p); } /* * Called before exit to free memory associated with the appointments linked * list. No need to be thread safe, as only the main process remains when * calling this function. */ void apoint_llist_free(void) { LLIST_TS_FREE_INNER(&alist_p, apoint_free); LLIST_TS_FREE(&alist_p); } /* Sets which appointment is highlighted. */ void apoint_hilt_set(int highlighted) { hilt = highlighted; } void apoint_hilt_decrease(int n) { hilt -= n; } void apoint_hilt_increase(int n) { hilt += n; } /* Return which appointment is highlighted. */ int apoint_hilt(void) { return hilt; } static int apoint_cmp_start(struct apoint *a, struct apoint *b) { return a->start < b->start ? -1 : (a->start == b->start ? 0 : 1); } struct apoint *apoint_new(char *mesg, char *note, long start, long dur, char state) { struct apoint *apt; apt = mem_malloc(sizeof(struct apoint)); apt->mesg = mem_strdup(mesg); apt->note = (note != NULL) ? mem_strdup(note) : NULL; apt->state = state; apt->start = start; apt->dur = dur; LLIST_TS_LOCK(&alist_p); LLIST_TS_ADD_SORTED(&alist_p, apt, apoint_cmp_start); LLIST_TS_UNLOCK(&alist_p); return apt; } unsigned apoint_inday(struct apoint *i, long *start) { return (i->start <= *start + DAYINSEC && i->start + i->dur > *start); } void apoint_sec2str(struct apoint *o, long day, char *start, char *end) { struct tm lt; time_t t; if (o->start < day) strncpy(start, "..:..", 6); else { t = o->start; localtime_r(&t, <); snprintf(start, HRMIN_SIZE, "%02u:%02u", lt.tm_hour, lt.tm_min); } if (o->start + o->dur > day + DAYINSEC) strncpy(end, "..:..", 6); else { t = o->start + o->dur; localtime_r(&t, <); snprintf(end, HRMIN_SIZE, "%02u:%02u", lt.tm_hour, lt.tm_min); } } void apoint_write(struct apoint *o, FILE * f) { struct tm lt; time_t t; t = o->start; localtime_r(&t, <); fprintf(f, "%02u/%02u/%04u @ %02u:%02u", lt.tm_mon + 1, lt.tm_mday, 1900 + lt.tm_year, lt.tm_hour, lt.tm_min); t = o->start + o->dur; localtime_r(&t, <); fprintf(f, " -> %02u/%02u/%04u @ %02u:%02u ", lt.tm_mon + 1, lt.tm_mday, 1900 + lt.tm_year, lt.tm_hour, lt.tm_min); if (o->note != NULL) fprintf(f, ">%s ", o->note); if (o->state & APOINT_NOTIFY) fputc('!', f); else fputc('|', f); fprintf(f, "%s\n", o->mesg); } struct apoint *apoint_scan(FILE * f, struct tm start, struct tm end, char state, char *note) { char buf[BUFSIZ], *newline; time_t tstart, tend; /* Read the appointment description */ if (!fgets(buf, sizeof buf, f)) return NULL; newline = strchr(buf, '\n'); if (newline) *newline = '\0'; start.tm_sec = end.tm_sec = 0; start.tm_isdst = end.tm_isdst = -1; start.tm_year -= 1900; start.tm_mon--; end.tm_year -= 1900; end.tm_mon--; tstart = mktime(&start); tend = mktime(&end); EXIT_IF(tstart == -1 || tend == -1 || tstart > tend, _("date error in appointment")); return apoint_new(buf, note, tstart, tend - tstart, state); } void apoint_delete(struct apoint *apt) { LLIST_TS_LOCK(&alist_p); llist_item_t *i = LLIST_TS_FIND_FIRST(&alist_p, apt, NULL); int need_check_notify = 0; if (!i) EXIT(_("no such appointment")); if (notify_bar()) need_check_notify = notify_same_item(apt->start); LLIST_TS_REMOVE(&alist_p, i); if (need_check_notify) notify_check_next_app(0); LLIST_TS_UNLOCK(&alist_p); } /* * Return the line number of an item (either an appointment or an event) in * the appointment panel. This is to help the appointment scroll function * to place beggining of the pad correctly. */ static int get_item_line(int item_nb, int nb_events_inday) { int separator = 2; int line = 0; if (item_nb <= nb_events_inday) line = item_nb - 1; else line = nb_events_inday + separator + (item_nb - (nb_events_inday + 1)) * 3 - 1; return line; } /* * Update (if necessary) the first displayed pad line to make the * appointment panel scroll down next time pnoutrefresh is called. */ void apoint_scroll_pad_down(int nb_events_inday, int win_length) { int pad_last_line = 0; int item_first_line = 0, item_last_line = 0; int borders = 6; int awin_length = win_length - borders; item_first_line = get_item_line(hilt, nb_events_inday); if (hilt < nb_events_inday) item_last_line = item_first_line; else item_last_line = item_first_line + 1; pad_last_line = apad.first_onscreen + awin_length; if (item_last_line >= pad_last_line) apad.first_onscreen = item_last_line - awin_length; } /* * Update (if necessary) the first displayed pad line to make the * appointment panel scroll up next time pnoutrefresh is called. */ void apoint_scroll_pad_up(int nb_events_inday) { int item_first_line = 0; item_first_line = get_item_line(hilt, nb_events_inday); if (item_first_line < apad.first_onscreen) apad.first_onscreen = item_first_line; } static int apoint_starts_after(struct apoint *apt, long *time) { return apt->start > *time; } /* * Look in the appointment list if we have an item which starts before the item * stored in the notify_app structure (which is the next item to be notified). */ struct notify_app *apoint_check_next(struct notify_app *app, long start) { llist_item_t *i; LLIST_TS_LOCK(&alist_p); i = LLIST_TS_FIND_FIRST(&alist_p, &start, apoint_starts_after); if (i) { struct apoint *apt = LLIST_TS_GET_DATA(i); if (apt->start <= app->time) { app->time = apt->start; app->txt = mem_strdup(apt->mesg); app->state = apt->state; app->got_app = 1; } } LLIST_TS_UNLOCK(&alist_p); return app; } /* * Switch notification state. */ void apoint_switch_notify(struct apoint *apt) { LLIST_TS_LOCK(&alist_p); apt->state ^= APOINT_NOTIFY; if (notify_bar()) notify_check_added(apt->mesg, apt->start, apt->state); LLIST_TS_UNLOCK(&alist_p); } /* Updates the Appointment panel */ void apoint_update_panel(int which_pan) { int title_xpos; int bordr = 1; int title_lines = conf.compact_panels ? 1 : 3; int app_width = win[APP].w - bordr; int app_length = win[APP].h - bordr - title_lines; long date; struct date slctd_date; /* variable inits */ slctd_date = *calendar_get_slctd_day(); title_xpos = win[APP].w - (strlen(_(monthnames[slctd_date.mm - 1])) + 16); if (slctd_date.dd < 10) title_xpos++; date = date2sec(slctd_date, 0, 0); day_write_pad(date, app_width, app_length, (which_pan == APP) ? hilt : 0); /* Print current date in the top right window corner. */ erase_window_part(win[APP].p, 1, title_lines, win[APP].w - 2, win[APP].h - 2); custom_apply_attr(win[APP].p, ATTR_HIGHEST); mvwprintw(win[APP].p, title_lines, title_xpos, "%s %s %d, %d", calendar_get_pom(date), _(monthnames[slctd_date.mm - 1]), slctd_date.dd, slctd_date.yyyy); custom_remove_attr(win[APP].p, ATTR_HIGHEST); /* Draw the scrollbar if necessary. */ if ((apad.length >= app_length) || (apad.first_onscreen > 0)) { int sbar_length = app_length * app_length / apad.length; int highend = app_length * apad.first_onscreen / apad.length; unsigned hilt_bar = (which_pan == APP) ? 1 : 0; int sbar_top = highend + title_lines + 1; if ((sbar_top + sbar_length) > win[APP].h - 1) sbar_length = win[APP].h - 1 - sbar_top; draw_scrollbar(win[APP].p, sbar_top, win[APP].w - 2, sbar_length, title_lines + 1, win[APP].h - 1, hilt_bar); } wnoutrefresh(win[APP].p); pnoutrefresh(apad.ptrwin, apad.first_onscreen, 0, win[APP].y + title_lines + 1, win[APP].x + bordr, win[APP].y + win[APP].h - 2 * bordr, win[APP].x + win[APP].w - 3 * bordr); } void apoint_paste_item(struct apoint *apt, long date) { apt->start = date + get_item_time(apt->start); LLIST_TS_LOCK(&alist_p); LLIST_TS_ADD_SORTED(&alist_p, apt, apoint_cmp_start); LLIST_TS_UNLOCK(&alist_p); if (notify_bar()) notify_check_added(apt->mesg, apt->start, apt->state); } calcurse-3.1.4/src/note.c0000644000175000001440000001424312105444321012135 00000000000000/* * Calcurse - text-based organizer * * Copyright (c) 2004-2013 calcurse Development Team * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * - Redistributions of source code must retain the above * copyright notice, this list of conditions and the * following disclaimer. * * - Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the * following disclaimer in the documentation and/or other * materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * Send your feedback or comments to : misc@calcurse.org * Calcurse home page : http://calcurse.org * */ #include #include #include "calcurse.h" #include "sha1.h" struct note_gc_hash { char *hash; char buf[MAX_NOTESIZ + 1]; HTABLE_ENTRY(note_gc_hash); }; static void note_gc_extract_key(struct note_gc_hash *, const char **, int *); static int note_gc_cmp(struct note_gc_hash *, struct note_gc_hash *); HTABLE_HEAD(htp, NOTE_GC_HSIZE, note_gc_hash); HTABLE_PROTOTYPE(htp, note_gc_hash) HTABLE_GENERATE(htp, note_gc_hash, note_gc_extract_key, note_gc_cmp) /* Create note file from a string and return a newly allocated string that * contains its name. */ char *generate_note(const char *str) { char *sha1 = mem_malloc(SHA1_DIGESTLEN * 2 + 1); char notepath[BUFSIZ]; FILE *fp; sha1_digest(str, sha1); snprintf(notepath, BUFSIZ, "%s%s", path_notes, sha1); fp = fopen(notepath, "w"); EXIT_IF(fp == NULL, _("Warning: could not open %s, Aborting..."), notepath); fputs(str, fp); file_close(fp, __FILE_POS__); return sha1; } /* Edit a note with an external editor. */ void edit_note(char **note, const char *editor) { char tmppath[BUFSIZ]; char *tmpext; char notepath[BUFSIZ]; char *sha1 = mem_malloc(SHA1_DIGESTLEN * 2 + 1); FILE *fp; strncpy(tmppath, get_tempdir(), BUFSIZ); strncat(tmppath, "/calcurse-note.", BUFSIZ - strlen(tmppath) - 1); if ((tmpext = new_tempfile(tmppath, TMPEXTSIZ)) == NULL) return; strncat(tmppath, tmpext, BUFSIZ - strlen(tmppath) - 1); mem_free(tmpext); if (*note != NULL) { snprintf(notepath, BUFSIZ, "%s%s", path_notes, *note); io_file_cp(notepath, tmppath); } wins_launch_external(tmppath, editor); if (io_file_is_empty(tmppath) > 0) erase_note(note); else if ((fp = fopen(tmppath, "r"))) { sha1_stream(fp, sha1); fclose(fp); *note = sha1; snprintf(notepath, BUFSIZ, "%s%s", path_notes, *note); io_file_cp(tmppath, notepath); } unlink(tmppath); } /* View a note in an external pager. */ void view_note(const char *note, const char *pager) { char fullname[BUFSIZ]; if (note == NULL) return; snprintf(fullname, BUFSIZ, "%s%s", path_notes, note); wins_launch_external(fullname, pager); } /* Erase a note previously attached to an item. */ void erase_note(char **note) { if (*note == NULL) return; mem_free(*note); *note = NULL; } /* Read a serialized note file name from a stream and deserialize it. */ void note_read(char *buffer, FILE * fp) { int i; for (i = 0; i < MAX_NOTESIZ; i++) { buffer[i] = getc(fp); if (buffer[i] == ' ') { buffer[i] = '\0'; return; } } while (getc(fp) != ' ') ; buffer[MAX_NOTESIZ] = '\0'; } static void note_gc_extract_key(struct note_gc_hash *data, const char **key, int *len) { *key = data->hash; *len = strlen(data->hash); } static int note_gc_cmp(struct note_gc_hash *a, struct note_gc_hash *b) { return strcmp(a->hash, b->hash); } /* Spot and unlink unused note files. */ void note_gc(void) { struct htp gc_htable = HTABLE_INITIALIZER(&gc_htable); struct note_gc_hash *hp; DIR *dirp; struct dirent *dp; llist_item_t *i; struct note_gc_hash tmph; char notepath[BUFSIZ]; if (!(dirp = opendir(path_notes))) return; /* Insert all note file names into a hash table. */ do { if ((dp = readdir(dirp)) && *(dp->d_name) != '.') { hp = mem_malloc(sizeof(struct note_gc_hash)); strncpy(hp->buf, dp->d_name, MAX_NOTESIZ + 1); hp->hash = hp->buf; HTABLE_INSERT(htp, &gc_htable, hp); } } while (dp); closedir(dirp); /* Remove hashes that are actually in use. */ LLIST_TS_FOREACH(&alist_p, i) { struct apoint *apt = LLIST_GET_DATA(i); if (apt->note) { tmph.hash = apt->note; free(HTABLE_REMOVE(htp, &gc_htable, &tmph)); } } LLIST_FOREACH(&eventlist, i) { struct event *ev = LLIST_GET_DATA(i); if (ev->note) { tmph.hash = ev->note; free(HTABLE_REMOVE(htp, &gc_htable, &tmph)); } } LLIST_TS_FOREACH(&recur_alist_p, i) { struct recur_apoint *rapt = LLIST_GET_DATA(i); if (rapt->note) { tmph.hash = rapt->note; free(HTABLE_REMOVE(htp, &gc_htable, &tmph)); } } LLIST_FOREACH(&recur_elist, i) { struct recur_event *rev = LLIST_GET_DATA(i); if (rev->note) { tmph.hash = rev->note; free(HTABLE_REMOVE(htp, &gc_htable, &tmph)); } } LLIST_FOREACH(&todolist, i) { struct todo *todo = LLIST_GET_DATA(i); if (todo->note) { tmph.hash = todo->note; free(HTABLE_REMOVE(htp, &gc_htable, &tmph)); } } /* Unlink unused note files. */ HTABLE_FOREACH(hp, htp, &gc_htable) { snprintf(notepath, BUFSIZ, "%s%s", path_notes, hp->hash); unlink(notepath); } } calcurse-3.1.4/src/utils.c0000644000175000001440000007534712105444350012346 00000000000000/* * Calcurse - text-based organizer * * Copyright (c) 2004-2013 calcurse Development Team * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * - Redistributions of source code must retain the above * copyright notice, this list of conditions and the * following disclaimer. * * - Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the * following disclaimer in the documentation and/or other * materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * Send your feedback or comments to : misc@calcurse.org * Calcurse home page : http://calcurse.org * */ #include #include #include #include #include #include #include #include #include #include #include #include "calcurse.h" #define ISLEAP(y) ((((y) % 4) == 0 && ((y) % 100) != 0) || ((y) % 400) == 0) #define FS_EXT_MAXLEN 64 enum format_specifier { FS_STARTDATE, FS_DURATION, FS_ENDDATE, FS_MESSAGE, FS_NOTE, FS_NOTEFILE, FS_PRIORITY, FS_PSIGN, FS_EOF, FS_UNKNOWN }; /* General routine to exit calcurse properly. */ void exit_calcurse(int status) { int was_interactive; if (ui_mode == UI_CURSES) { notify_stop_main_thread(); clear(); wins_refresh(); endwin(); ui_mode = UI_CMDLINE; was_interactive = 1; } else was_interactive = 0; calendar_stop_date_thread(); io_stop_psave_thread(); free_user_data(); keys_free(); mem_stats(); if (was_interactive) { if (unlink(path_cpid) != 0) EXIT(_("Could not remove calcurse lock file: %s\n"), strerror(errno)); if (dmon.enable) dmon_start(status); } exit(status); } void free_user_data(void) { unsigned i; day_free_list(); event_llist_free(); apoint_llist_free(); recur_apoint_llist_free(); recur_event_llist_free(); for (i = 0; i <= 37; i++) interact_day_item_cut_free(i); todo_free_list(); notify_free_app(); } /* Function to exit on internal error. */ void fatalbox(const char *errmsg) { WINDOW *errwin; const char *label = _("/!\\ INTERNAL ERROR /!\\"); const char *reportmsg = _("Please report the following bug:"); const int WINROW = 10; const int WINCOL = col - 2; const int MSGLEN = WINCOL - 2; char msg[MSGLEN]; if (errmsg == NULL) return; strncpy(msg, errmsg, MSGLEN); errwin = newwin(WINROW, WINCOL, (row - WINROW) / 2, (col - WINCOL) / 2); custom_apply_attr(errwin, ATTR_HIGHEST); box(errwin, 0, 0); wins_show(errwin, label); mvwaddstr(errwin, 3, 1, reportmsg); mvwaddstr(errwin, 5, (WINCOL - strlen(msg)) / 2, msg); custom_remove_attr(errwin, ATTR_HIGHEST); wins_wrefresh(errwin); wgetch(errwin); delwin(errwin); wins_doupdate(); } void warnbox(const char *msg) { WINDOW *warnwin; const char *label = "/!\\"; const int WINROW = 10; const int WINCOL = col - 2; const int MSGLEN = WINCOL - 2; char displmsg[MSGLEN]; if (msg == NULL) return; strncpy(displmsg, msg, MSGLEN); warnwin = newwin(WINROW, WINCOL, (row - WINROW) / 2, (col - WINCOL) / 2); custom_apply_attr(warnwin, ATTR_HIGHEST); box(warnwin, 0, 0); wins_show(warnwin, label); mvwaddstr(warnwin, 5, (WINCOL - strlen(displmsg)) / 2, displmsg); custom_remove_attr(warnwin, ATTR_HIGHEST); wins_wrefresh(warnwin); wgetch(warnwin); delwin(warnwin); wins_doupdate(); } /* * Print a message in the status bar. * Message texts for first line and second line are to be provided. */ void status_mesg(const char *msg1, const char *msg2) { wins_erase_status_bar(); custom_apply_attr(win[STA].p, ATTR_HIGHEST); mvwaddstr(win[STA].p, 0, 0, msg1); mvwaddstr(win[STA].p, 1, 0, msg2); custom_remove_attr(win[STA].p, ATTR_HIGHEST); wins_wrefresh(win[STA].p); } /* * Prompts the user to make a choice between named alternatives. * * The available choices are described by a string of the form * "[ynp]". The first and last char are ignored (they are only here to * make the translators' life easier), and every other char indicates * a key the user is allowed to press. * * Returns the index of the key pressed by the user (starting from 1), * or -1 if the user doesn't want to answer (e.g. by escaping). */ int status_ask_choice(const char *message, const char choice[], int nb_choice) { int i, ch; char tmp[BUFSIZ]; /* "[4/2/f/t/w/.../Z] " */ char avail_choice[2 * nb_choice + 3]; avail_choice[0] = '['; avail_choice[1] = '\0'; for (i = 1; i <= nb_choice; i++) { snprintf(tmp, BUFSIZ, (i == nb_choice) ? "%c] " : "%c/", choice[i]); strcat(avail_choice, tmp); } status_mesg(message, avail_choice); for (;;) { ch = wgetch(win[KEY].p); for (i = 1; i <= nb_choice; i++) if (ch == choice[i]) return i; if (ch == ESCAPE) return (-1); if (resize) { resize = 0; wins_reset(); status_mesg(message, avail_choice); } } } /* * Prompts the user with a boolean question. * * Returns 1 if yes, 2 if no, and -1 otherwise */ int status_ask_bool(const char *msg) { return (status_ask_choice(msg, _("[yn]"), 2)); } /* * Prompts the user to make a choice between a number of alternatives. * * Returns the option chosen by the user (starting from 1), or -1 if * the user doesn't want to answer. */ int status_ask_simplechoice(const char *prefix, const char *choice[], int nb_choice) { int i; char tmp[BUFSIZ]; /* "(1) Choice1, (2) Choice2, (3) Choice3?" */ char choicestr[BUFSIZ]; /* Holds the characters to choose from ('1', '2', etc) */ char char_choice[nb_choice + 2]; /* No need to initialize first and last char. */ for (i = 1; i <= nb_choice; i++) char_choice[i] = '0' + i; strcpy(choicestr, prefix); for (i = 0; i < nb_choice; i++) { snprintf(tmp, BUFSIZ, ((i + 1) == nb_choice) ? "(%d) %s?" : "(%d) %s, ", (i + 1), choice[i]); strcat(choicestr, tmp); } return (status_ask_choice(choicestr, char_choice, nb_choice)); } /* Erase part of a window. */ void erase_window_part(WINDOW * win, int first_col, int first_row, int last_col, int last_row) { int c, r; for (r = first_row; r <= last_row; r++) { for (c = first_col; c <= last_col; c++) mvwaddstr(win, r, c, " "); } } /* draws a popup window */ WINDOW *popup(int pop_row, int pop_col, int pop_y, int pop_x, const char *title, const char *msg, int hint) { const char *any_key = _("Press any key to continue..."); WINDOW *popup_win; const int MSGXPOS = 5; popup_win = newwin(pop_row, pop_col, pop_y, pop_x); keypad(popup_win, TRUE); if (msg) mvwaddstr(popup_win, MSGXPOS, (pop_col - strlen(msg)) / 2, msg); custom_apply_attr(popup_win, ATTR_HIGHEST); box(popup_win, 0, 0); wins_show(popup_win, title); if (hint) mvwaddstr(popup_win, pop_row - 2, pop_col - (strlen(any_key) + 1), any_key); custom_remove_attr(popup_win, ATTR_HIGHEST); wins_wrefresh(popup_win); return popup_win; } /* prints in middle of a panel */ void print_in_middle(WINDOW * win, int starty, int startx, int width, const char *string) { int len = strlen(string); int x, y; win = win ? win : stdscr; getyx(win, y, x); x = startx ? startx : x; y = starty ? starty : y; width = width ? width : 80; x += (width - len) / 2; custom_apply_attr(win, ATTR_HIGHEST); mvwaddstr(win, y, x, string); custom_remove_attr(win, ATTR_HIGHEST); } /* checks if a string is only made of digits */ int is_all_digit(const char *string) { for (; *string; string++) { if (!isdigit((int)*string)) return 0; } return 1; } /* Given an item date expressed in seconds, return its start time in seconds. */ long get_item_time(long date) { return (long)(get_item_hour(date) * HOURINSEC + get_item_min(date) * MININSEC); } int get_item_hour(long date) { struct tm lt; localtime_r((time_t *)&date, <); return lt.tm_hour; } int get_item_min(long date) { struct tm lt; localtime_r((time_t *)&date, <); return lt.tm_min; } long date2sec(struct date day, unsigned hour, unsigned min) { time_t t = now(); struct tm start; localtime_r(&t, &start); start.tm_mon = day.mm - 1; start.tm_mday = day.dd; start.tm_year = day.yyyy - 1900; start.tm_hour = hour; start.tm_min = min; start.tm_sec = 0; start.tm_isdst = -1; t = mktime(&start); EXIT_IF(t == -1, _("failure in mktime")); return t; } /* Return a string containing the date, given a date in seconds. */ char *date_sec2date_str(long sec, const char *datefmt) { struct tm lt; char *datestr = (char *)mem_calloc(BUFSIZ, sizeof(char)); if (sec == 0) strncpy(datestr, "0", BUFSIZ); else { localtime_r((time_t *)&sec, <); strftime(datestr, BUFSIZ, datefmt, <); } return datestr; } /* Generic function to format date. */ void date_sec2date_fmt(long sec, const char *fmt, char *datef) { #if ENABLE_NLS /* TODO: Find a better way to deal with localization and strftime(). */ char *locale_old = mem_strdup (setlocale (LC_ALL, NULL)); setlocale (LC_ALL, "C"); #endif struct tm lt; localtime_r((time_t *)&sec, <); strftime(datef, BUFSIZ, fmt, <); #if ENABLE_NLS setlocale (LC_ALL, locale_old); mem_free (locale_old); #endif } /* * Used to change date by adding a certain amount of days or weeks. */ long date_sec_change(long date, int delta_month, int delta_day) { struct tm lt; time_t t; t = date; localtime_r(&t, <); lt.tm_mon += delta_month; lt.tm_mday += delta_day; lt.tm_isdst = -1; t = mktime(<); EXIT_IF(t == -1, _("failure in mktime")); return t; } /* * Return a long containing the date which is updated taking into account * the new time and date entered by the user. */ long update_time_in_date(long date, unsigned hr, unsigned mn) { struct tm lt; time_t t, new_date; t = date; localtime_r(&t, <); lt.tm_hour = hr; lt.tm_min = mn; new_date = mktime(<); EXIT_IF(new_date == -1, _("error in mktime")); return new_date; } /* * Returns the date in seconds from year 1900. * If no date is entered, current date is chosen. */ long get_sec_date(struct date date) { struct tm ptrtime; time_t timer; long long_date; char current_day[] = "dd "; char current_month[] = "mm "; char current_year[] = "yyyy "; if (date.yyyy == 0 && date.mm == 0 && date.dd == 0) { timer = time(NULL); localtime_r(&timer, &ptrtime); strftime(current_day, strlen(current_day), "%d", &ptrtime); strftime(current_month, strlen(current_month), "%m", &ptrtime); strftime(current_year, strlen(current_year), "%Y", &ptrtime); date.mm = atoi(current_month); date.dd = atoi(current_day); date.yyyy = atoi(current_year); } long_date = date2sec(date, 0, 0); return long_date; } long min2sec(unsigned minutes) { return minutes * MININSEC; } /* * Display a scroll bar when there are so many items that they * can not be displayed inside the corresponding panel. */ void draw_scrollbar(WINDOW * win, int y, int x, int length, int bar_top, int bar_bottom, unsigned hilt) { mvwvline(win, bar_top, x, ACS_VLINE, bar_bottom - bar_top); if (hilt) custom_apply_attr(win, ATTR_HIGHEST); wattron(win, A_REVERSE); mvwvline(win, y, x, ' ', length); wattroff(win, A_REVERSE); if (hilt) custom_remove_attr(win, ATTR_HIGHEST); } /* * Print an item (either an appointment, event, or todo) in a * popup window. This is useful if an item description is too * long to fit in its corresponding panel window. */ void item_in_popup(const char *a_start, const char *a_end, const char *msg, const char *pop_title) { WINDOW *popup_win, *pad; const int margin_left = 4, margin_top = 4; const int winl = row - 5, winw = col - margin_left; const int padl = winl - 2, padw = winw - margin_left; pad = newpad(padl, padw); popup_win = popup(winl, winw, 1, 2, pop_title, NULL, 1); if (a_start && a_end) { mvwprintw(popup_win, margin_top, margin_left, "- %s -> %s", a_start, a_end); } mvwaddstr(pad, 0, margin_left, msg); wmove(win[STA].p, 0, 0); pnoutrefresh(pad, 0, 0, margin_top + 2, margin_left, padl, winw); wins_doupdate(); wgetch(popup_win); delwin(pad); delwin(popup_win); } /* Returns the beginning of current day in seconds from 1900. */ long get_today(void) { struct tm lt; time_t current_time; long current_day; struct date day; current_time = time(NULL); localtime_r(¤t_time, <); day.mm = lt.tm_mon + 1; day.dd = lt.tm_mday; day.yyyy = lt.tm_year + 1900; current_day = date2sec(day, 0, 0); return current_day; } /* Returns the current time in seconds. */ long now(void) { return (long)time(NULL); } char *nowstr(void) { struct tm lt; static char buf[BUFSIZ]; time_t t = now(); localtime_r(&t, <); strftime(buf, sizeof buf, "%a %b %d %T %Y", <); return buf; } long mystrtol(const char *str) { char *ep; long lval; errno = 0; lval = strtol(str, &ep, 10); if (str[0] == '\0' || *ep != '\0') EXIT(_("could not convert string")); if (errno == ERANGE && (lval == LONG_MAX || lval == LONG_MIN)) EXIT(_("out of range")); return lval; } /* Print the given option value with appropriate color. */ void print_bool_option_incolor(WINDOW * win, unsigned option, int pos_y, int pos_x) { int color = 0; const char *option_value; if (option == 1) { color = ATTR_TRUE; option_value = _("yes"); } else if (option == 0) { color = ATTR_FALSE; option_value = _("no"); } else EXIT(_("option not defined")); custom_apply_attr(win, color); mvwaddstr(win, pos_y, pos_x, option_value); custom_remove_attr(win, color); wnoutrefresh(win); wins_doupdate(); } /* * Get the name of the default directory for temporary files. */ const char *get_tempdir(void) { if (getenv("TMPDIR")) return getenv("TMPDIR"); #ifdef P_tmpdir else if (P_tmpdir) return P_tmpdir; #endif else return "/tmp"; } /* * Create a new unique file, and return a newly allocated string which contains * the random part of the file name. */ char *new_tempfile(const char *prefix, int trailing_len) { char fullname[BUFSIZ]; int prefix_len, fd; FILE *file; if (prefix == NULL) return NULL; prefix_len = strlen(prefix); if (prefix_len + trailing_len >= BUFSIZ) return NULL; memcpy(fullname, prefix, prefix_len); memset(fullname + prefix_len, 'X', trailing_len); fullname[prefix_len + trailing_len] = '\0'; if ((fd = mkstemp(fullname)) == -1 || (file = fdopen(fd, "w+")) == NULL) { if (fd != -1) { unlink(fullname); close(fd); } ERROR_MSG(_("temporary file \"%s\" could not be created"), fullname); return NULL; } fclose(file); return mem_strdup(fullname + prefix_len); } /* * Convert a string containing a date into three integers containing the year, * month and day. * * If a pointer to a date structure containing the current date is passed as * last parameter ("slctd_date"), the function will accept several short forms, * e.g. "26" for the 26th of the current month/year or "3/1" for Mar 01 (or Jan * 03, depending on the date format) of the current year. If a null pointer is * passed, short forms won't be accepted at all. * * Returns 1 if sucessfully converted or 0 if the string is an invalid date. */ int parse_date(const char *date_string, enum datefmt datefmt, int *year, int *month, int *day, struct date *slctd_date) { const char sep = (datefmt == DATEFMT_ISO) ? '-' : '/'; const char *p; int in[3] = { 0, 0, 0 }, n = 0; int d, m, y; if (!date_string) return 0; /* parse string into in[], read up to three integers */ for (p = date_string; *p; p++) { if (*p == sep) { if ((++n) > 2) return 0; } else if ((*p >= '0') && (*p <= '9')) in[n] = in[n] * 10 + (int)(*p - '0'); else return 0; } if ((!slctd_date && n < 2) || in[n] == 0) return 0; /* convert into day, month and year, depending on the date format */ switch (datefmt) { case DATEFMT_MMDDYYYY: m = (n >= 1) ? in[0] : 0; d = (n >= 1) ? in[1] : in[0]; y = in[2]; break; case DATEFMT_DDMMYYYY: d = in[0]; m = in[1]; y = in[2]; break; case DATEFMT_YYYYMMDD: case DATEFMT_ISO: y = (n >= 2) ? in[n - 2] : 0; m = (n >= 1) ? in[n - 1] : 0; d = in[n]; break; default: return 0; } if (slctd_date) { if (y > 0 && y < 100) { /* convert "YY" format into "YYYY" */ y += slctd_date->yyyy - slctd_date->yyyy % 100; } else if (n < 2) { /* set year and, optionally, month if short from is used */ y = slctd_date->yyyy; if (n < 1) m = slctd_date->mm; } } /* check if date is valid, take leap years into account */ if (y < 1902 || y > 2037 || m < 1 || m > 12 || d < 1 || d > days[m - 1] + (m == 2 && ISLEAP(y)) ? 1 : 0) return 0; if (year) *year = y; if (month) *month = m; if (day) *day = d; return 1; } /* * Converts a time string into hours and minutes. Short forms like "23:" * (23:00) or ":45" (0:45) are allowed. * * Returns 1 on success and 0 on failure. */ int parse_time(const char *string, unsigned *hour, unsigned *minute) { const char *p; unsigned in[2] = { 0, 0 }, n = 0; if (!string) return 0; /* parse string into in[], read up to two integers */ for (p = string; *p; p++) { if (*p == ':') { if ((++n) > 1) return 0; } else if ((*p >= '0') && (*p <= '9')) { if ((n == 0) && (p == (string + 2)) && *(p + 1)) n++; in[n] = in[n] * 10 + (int)(*p - '0'); } else return 0; } if (n != 1 || in[0] >= DAYINHOURS || in[1] >= HOURINMIN) return 0; *hour = in[0]; *minute = in[1]; return 1; } /* * Converts a duration string into minutes. * * Allowed formats (noted as regular expressions): * * - \d*:\d* * - (\d*m|\d*h(|\d*m)|\d*d(|\d*m|\d*h(|\d*m))) * - \d+ * * "\d" is used as a placeholder for "(0|1|2|3|4|5|6|7|8|9)". * * Returns 1 on success and 0 on failure. */ int parse_duration(const char *string, unsigned *duration) { enum { STATE_INITIAL, STATE_HHMM_MM, STATE_DDHHMM_HH, STATE_DDHHMM_MM, STATE_DONE } state = STATE_INITIAL; const char *p; unsigned in = 0; unsigned dur = 0; if (!string || *string == '\0') return 0; /* parse string using a simple state machine */ for (p = string; *p; p++) { if ((*p >= '0') && (*p <= '9')) { if (state == STATE_DONE) return 0; else in = in * 10 + (int)(*p - '0'); } else { switch (state) { case STATE_INITIAL: if (*p == ':') { dur += in * HOURINMIN; state = STATE_HHMM_MM; } else if (*p == 'd') { dur += in * DAYINMIN; state = STATE_DDHHMM_HH; } else if (*p == 'h') { dur += in * HOURINMIN; state = STATE_DDHHMM_MM; } else if (*p == 'm') { dur += in; state = STATE_DONE; } else return 0; break; case STATE_DDHHMM_HH: if (*p == 'h') { dur += in * HOURINMIN; state = STATE_DDHHMM_MM; } else if (*p == 'm') { dur += in; state = STATE_DONE; } else return 0; break; case STATE_DDHHMM_MM: if (*p == 'm') { dur += in; state = STATE_DONE; } else return 0; break; case STATE_HHMM_MM: case STATE_DONE: return 0; break; } in = 0; } } if ((state == STATE_HHMM_MM && in >= HOURINMIN) || ((state == STATE_DDHHMM_HH || state == STATE_DDHHMM_MM) && in > 0)) return 0; dur += in; *duration = dur; return 1; } void str_toupper(char *s) { if (!s) return; for (; *s; s++) *s = toupper(*s); } void file_close(FILE * f, const char *pos) { EXIT_IF((fclose(f)) != 0, _("Error when closing file at %s"), pos); } /* * Sleep the given number of seconds, but make it more 'precise' than sleep(3) * (hence the 'p') in a way that even if a signal is caught during the sleep * process, this function will return to sleep afterwards. */ void psleep(unsigned secs) { unsigned unslept; for (unslept = sleep(secs); unslept; unslept = sleep(unslept)) ; } /* * Fork and execute an external process. * * If pfdin and/or pfdout point to a valid address, a pipe is created and the * appropriate file descriptors are written to pfdin/pfdout. */ int fork_exec(int *pfdin, int *pfdout, const char *path, const char *const *arg) { int pin[2], pout[2]; int pid; if (pfdin && (pipe(pin) == -1)) return 0; if (pfdout && (pipe(pout) == -1)) return 0; if ((pid = fork()) == 0) { if (pfdout) { if (dup2(pout[0], STDIN_FILENO) < 0) _exit(127); close(pout[0]); close(pout[1]); } if (pfdin) { if (dup2(pin[1], STDOUT_FILENO) < 0) _exit(127); close(pin[0]); close(pin[1]); } execvp(path, (char *const *)arg); _exit(127); } else { if (pfdin) close(pin[1]); if (pfdout) close(pout[0]); if (pid > 0) { if (pfdin) { fcntl(pin[0], F_SETFD, FD_CLOEXEC); *pfdin = pin[0]; } if (pfdout) { fcntl(pout[1], F_SETFD, FD_CLOEXEC); *pfdout = pout[1]; } } else { if (pfdin) close(pin[0]); if (pfdout) close(pout[1]); return 0; } } return pid; } /* Execute an external program in a shell. */ int shell_exec(int *pfdin, int *pfdout, const char *path, const char *const *arg) { int argc, i; const char **narg; char *arg0 = NULL; int ret; for (argc = 0; arg[argc]; argc++) ; if (argc < 1) return -1; narg = mem_calloc(argc + 4, sizeof(const char *)); narg[0] = "sh"; narg[1] = "-c"; if (argc > 1) { arg0 = mem_malloc(strlen(path) + 6); sprintf(arg0, "%s \"$@\"", path); narg[2] = arg0; for (i = 0; i < argc; i++) narg[i + 3] = arg[i]; narg[argc + 3] = NULL; } else { narg[2] = path; narg[3] = NULL; } ret = fork_exec(pfdin, pfdout, *narg, narg); if (arg0) mem_free(arg0); mem_free(narg); return ret; } /* Wait for a child process to terminate. */ int child_wait(int *pfdin, int *pfdout, int pid) { int stat; if (pfdin) close(*pfdin); if (pfdout) close(*pfdout); waitpid(pid, &stat, 0); return stat; } /* Display "Press any key to continue..." and wait for a key press. */ void press_any_key(void) { struct termios t_attr_old, t_attr; tcgetattr(STDIN_FILENO, &t_attr_old); memcpy(&t_attr, &t_attr_old, sizeof(struct termios)); t_attr.c_lflag &= ~(ICANON | ECHO | ECHONL); tcsetattr(STDIN_FILENO, TCSAFLUSH, &t_attr); fflush(stdout); fputs(_("Press any key to continue..."), stdout); fflush(stdout); fgetc(stdin); fflush(stdin); fputs("\r\n", stdout); tcsetattr(STDIN_FILENO, TCSAFLUSH, &t_attr_old); } /* * Display note contents if one is asociated with the currently displayed item * (to be used together with the '-a' or '-t' flag in non-interactive mode). * Each line begins with nbtab tabs. * Print "No note file found", if the notefile does not exists. * * (patch submitted by Erik Saule). */ static void print_notefile(FILE * out, const char *filename, int nbtab) { char path_to_notefile[BUFSIZ]; FILE *notefile; char linestarter[BUFSIZ]; char buffer[BUFSIZ]; int i; int printlinestarter = 1; if (nbtab < BUFSIZ) { for (i = 0; i < nbtab; i++) linestarter[i] = '\t'; linestarter[nbtab] = '\0'; } else linestarter[0] = '\0'; snprintf(path_to_notefile, BUFSIZ, "%s/%s", path_notes, filename); notefile = fopen(path_to_notefile, "r"); if (notefile) { while (fgets(buffer, BUFSIZ, notefile) != 0) { if (printlinestarter) { fputs(linestarter, out); printlinestarter = 0; } fputs(buffer, out); if (buffer[strlen(buffer) - 1] == '\n') printlinestarter = 1; } fputs("\n", out); file_close(notefile, __FILE_POS__); } else { fputs(linestarter, out); fputs(_("No note file found\n"), out); } } /* Print an escape sequence and return its length. */ static int print_escape(const char *s) { switch (*(s + 1)) { case 'a': putchar('\a'); return 1; case 'b': putchar('\b'); return 1; case 'f': putchar('\f'); return 1; case 'n': putchar('\n'); return 1; case 'r': putchar('\r'); return 1; case 't': putchar('\t'); return 1; case 'v': putchar('\v'); return 1; case '0': putchar('\0'); return 1; case '\'': putchar('\''); return 1; case '"': putchar('"'); return 1; case '\?': putchar('?'); return 1; case '\\': putchar('\\'); return 1; case '\0': return 0; default: return 1; } } /* Parse a format specifier. */ static enum format_specifier parse_fs(const char **s, char *extformat) { char buf[FS_EXT_MAXLEN]; int i; extformat[0] = '\0'; switch (**s) { case 's': strcpy(extformat, "epoch"); return FS_STARTDATE; case 'S': return FS_STARTDATE; case 'd': return FS_DURATION; case 'e': strcpy(extformat, "epoch"); return FS_ENDDATE; case 'E': return FS_ENDDATE; case 'm': return FS_MESSAGE; case 'n': return FS_NOTE; case 'N': return FS_NOTEFILE; case 'p': return FS_PRIORITY; case '(': /* Long format specifier. */ for ((*s)++, i = 0; **s != ':' && **s != ')'; (*s)++, i++) { if (**s == '\0') return FS_EOF; if (i < FS_EXT_MAXLEN) buf[i] = **s; } buf[(i < FS_EXT_MAXLEN) ? i : FS_EXT_MAXLEN - 1] = '\0'; if (**s == ':') { for ((*s)++, i = 0; **s != ')'; (*s)++, i++) { if (**s == '\0') return FS_EOF; if (i < FS_EXT_MAXLEN) extformat[i] = **s; } extformat[(i < FS_EXT_MAXLEN) ? i : FS_EXT_MAXLEN - 1] = '\0'; } if (!strcmp(buf, "start")) return FS_STARTDATE; else if (!strcmp(buf, "duration")) return FS_DURATION; else if (!strcmp(buf, "end")) return FS_ENDDATE; else if (!strcmp(buf, "message")) return FS_MESSAGE; else if (!strcmp(buf, "noteid")) return FS_NOTE; else if (!strcmp(buf, "note")) return FS_NOTEFILE; else if (!strcmp(buf, "priority")) return FS_PRIORITY; else return FS_UNKNOWN; case '%': return FS_PSIGN; case '\0': return FS_EOF; default: return FS_UNKNOWN; } } /* Print a formatted date to stdout. */ static void print_date(long date, long day, const char *extformat) { char buf[BUFSIZ]; if (!strcmp(extformat, "epoch")) printf("%ld", date); else { time_t t = date; struct tm lt; localtime_r((time_t *)&t, <); if (extformat[0] == '\0' || !strcmp(extformat, "default")) { if (date >= day && date <= day + DAYINSEC) strftime(buf, BUFSIZ, "%H:%M", <); else strftime(buf, BUFSIZ, "..:..", <); } else { strftime(buf, BUFSIZ, extformat, <); } printf("%s", buf); } } /* Print a formatted appointment to stdout. */ void print_apoint(const char *format, long day, struct apoint *apt) { const char *p; char extformat[FS_EXT_MAXLEN]; for (p = format; *p; p++) { if (*p == '%') { p++; switch (parse_fs(&p, extformat)) { case FS_STARTDATE: print_date(apt->start, day, extformat); break; case FS_DURATION: printf("%ld", apt->dur); break; case FS_ENDDATE: print_date(apt->start + apt->dur, day, extformat); break; case FS_MESSAGE: printf("%s", apt->mesg); break; case FS_NOTE: printf("%s", apt->note); break; case FS_NOTEFILE: print_notefile(stdout, apt->note, 1); break; case FS_PSIGN: putchar('%'); break; case FS_EOF: return; break; default: putchar('?'); break; } } else if (*p == '\\') p += print_escape(p); else putchar(*p); } } /* Print a formatted event to stdout. */ void print_event(const char *format, long day, struct event *ev) { const char *p; char extformat[FS_EXT_MAXLEN]; for (p = format; *p; p++) { if (*p == '%') { p++; switch (parse_fs(&p, extformat)) { case FS_MESSAGE: printf("%s", ev->mesg); break; case FS_NOTE: printf("%s", ev->note); break; case FS_NOTEFILE: print_notefile(stdout, ev->note, 1); break; case FS_PSIGN: putchar('%'); break; case FS_EOF: return; break; default: putchar('?'); break; } } else if (*p == '\\') p += print_escape(p); else putchar(*p); } } /* Print a formatted recurrent appointment to stdout. */ void print_recur_apoint(const char *format, long day, unsigned occurrence, struct recur_apoint *rapt) { struct apoint apt; apt.start = occurrence; apt.dur = rapt->dur; apt.mesg = rapt->mesg; apt.note = rapt->note; print_apoint(format, day, &apt); } /* Print a formatted recurrent event to stdout. */ void print_recur_event(const char *format, long day, struct recur_event *rev) { struct event ev; ev.mesg = rev->mesg; ev.note = rev->note; print_event(format, day, &ev); } /* Print a formatted todo item to stdout. */ void print_todo(const char *format, struct todo *todo) { const char *p; char extformat[FS_EXT_MAXLEN]; for (p = format; *p; p++) { if (*p == '%') { p++; switch (parse_fs(&p, extformat)) { case FS_PRIORITY: printf("%d", abs(todo->id)); break; case FS_MESSAGE: printf("%s", todo->mesg); break; case FS_NOTE: printf("%s", todo->note); break; case FS_NOTEFILE: print_notefile(stdout, todo->note, 1); break; case FS_PSIGN: putchar('%'); break; case FS_EOF: return; break; default: putchar('?'); break; } } else if (*p == '\\') p += print_escape(p); else putchar(*p); } } calcurse-3.1.4/src/llist_ts.h0000644000175000001440000001015712105444321013032 00000000000000/* * Calcurse - text-based organizer * * Copyright (c) 2004-2013 calcurse Development Team * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * - Redistributions of source code must retain the above * copyright notice, this list of conditions and the * following disclaimer. * * - Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the * following disclaimer in the documentation and/or other * materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * Send your feedback or comments to : misc@calcurse.org * Calcurse home page : http://calcurse.org * */ /* Thread-safe linked lists. */ typedef struct llist_ts llist_ts_t; struct llist_ts { llist_item_t *head; llist_item_t *tail; pthread_mutex_t mutex; }; /* Initialization and deallocation. */ #define LLIST_TS_INIT(l_ts) do { \ llist_init ((llist_t *)l_ts); \ pthread_mutex_init (&(l_ts)->mutex, NULL); \ } while (0) #define LLIST_TS_FREE(l_ts) do { \ llist_free ((llist_t *)l_ts); \ pthread_mutex_destroy (&(l_ts)->mutex); \ } while (0) #define LLIST_TS_FREE_INNER(l_ts, fn_free) \ llist_free_inner ((llist_t *)l_ts, (llist_fn_free_t)fn_free) /* Thread-safety operations. */ #define LLIST_TS_LOCK(l_ts) pthread_mutex_lock (&(l_ts)->mutex) #define LLIST_TS_UNLOCK(l_ts) pthread_mutex_unlock (&(l_ts)->mutex) /* Retrieving list items. */ #define LLIST_TS_FIRST(l_ts) llist_first ((llist_t *)l_ts) #define LLIST_TS_NTH(l_ts, n) llist_nth ((llist_t *)l_ts, n) #define LLIST_TS_NEXT(i) llist_next (i) #define LLIST_TS_NEXT_FILTER(i, data, fn_match) \ llist_next_filter (i, data, (llist_fn_match_t)fn_match) #define LLIST_TS_FIND_FIRST(l_ts, data, fn_match) \ llist_find_first ((llist_t *)l_ts, data, (llist_fn_match_t)fn_match) #define LLIST_TS_FIND_NEXT(i, data, fn_match) \ llist_find_next (i, data, (llist_fn_match_t)fn_match) #define LLIST_TS_FIND_NTH(l_ts, n, data, fn_match) \ llist_find_nth ((llist_t *)l_ts, n, data, (llist_fn_match_t)fn_match) #define LLIST_TS_FOREACH(l_ts, i) \ for (i = LLIST_TS_FIRST (l_ts); i; i = LLIST_TS_NEXT (i)) #define LLIST_TS_FIND_FOREACH(l_ts, data, fn_match, i) \ for (i = LLIST_TS_FIND_FIRST (l_ts, data, fn_match); i; \ i = LLIST_TS_FIND_NEXT (i, data, fn_match)) #define LLIST_TS_FIND_FOREACH_CONT(l_ts, data, fn_match, i) \ for (i = LLIST_TS_FIND_FIRST (l_ts, data, fn_match); i; \ i = LLIST_TS_NEXT_FILTER (i, data, fn_match)) /* Accessing list item data. */ #define LLIST_TS_GET_DATA(i) llist_get_data (i) /* List manipulation. */ #define LLIST_TS_ADD(l_ts, data) llist_add ((llist_t *)l_ts, data) #define LLIST_TS_REMOVE(l_ts, i) llist_remove ((llist_t *)l_ts, i) #define LLIST_TS_ADD_SORTED(l_ts, data, fn_cmp) \ llist_add_sorted ((llist_t *)l_ts, data, (llist_fn_cmp_t)fn_cmp) calcurse-3.1.4/src/recur.c0000644000175000001440000005416312105444321012315 00000000000000/* * Calcurse - text-based organizer * * Copyright (c) 2004-2013 calcurse Development Team * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * - Redistributions of source code must retain the above * copyright notice, this list of conditions and the * following disclaimer. * * - Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the * following disclaimer in the documentation and/or other * materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * Send your feedback or comments to : misc@calcurse.org * Calcurse home page : http://calcurse.org * */ #include #include #include #include #include #include "calcurse.h" llist_ts_t recur_alist_p; llist_t recur_elist; static void free_exc(struct excp *exc) { mem_free(exc); } static void free_exc_list(llist_t * exc) { LLIST_FREE_INNER(exc, free_exc); LLIST_FREE(exc); } static int exc_cmp_day(struct excp *a, struct excp *b) { return a->st < b->st ? -1 : (a->st == b->st ? 0 : 1); } static void recur_add_exc(llist_t * exc, long day) { struct excp *o = mem_malloc(sizeof(struct excp)); o->st = day; LLIST_ADD_SORTED(exc, o, exc_cmp_day); } static void exc_dup(llist_t * in, llist_t * exc) { llist_item_t *i; LLIST_INIT(in); if (exc) { LLIST_FOREACH(exc, i) { struct excp *p = LLIST_GET_DATA(i); recur_add_exc(in, p->st); } } } struct recur_event *recur_event_dup(struct recur_event *in) { EXIT_IF(!in, _("null pointer")); struct recur_event *rev = mem_malloc(sizeof(struct recur_event)); rev->id = in->id; rev->day = in->day; rev->mesg = mem_strdup(in->mesg); rev->rpt = mem_malloc(sizeof(struct rpt)); rev->rpt->type = in->rpt->type; rev->rpt->freq = in->rpt->freq; rev->rpt->until = in->rpt->until; exc_dup(&rev->exc, &in->exc); if (in->note) rev->note = mem_strdup(in->note); else rev->note = NULL; return rev; } struct recur_apoint *recur_apoint_dup(struct recur_apoint *in) { EXIT_IF(!in, _("null pointer")); struct recur_apoint *rapt = mem_malloc(sizeof(struct recur_apoint)); rapt->start = in->start; rapt->dur = in->dur; rapt->state = in->state; rapt->mesg = mem_strdup(in->mesg); rapt->rpt = mem_malloc(sizeof(struct rpt)); rapt->rpt->type = in->rpt->type; rapt->rpt->freq = in->rpt->freq; rapt->rpt->until = in->rpt->until; exc_dup(&rapt->exc, &in->exc); if (in->note) rapt->note = mem_strdup(in->note); else rapt->note = NULL; return rapt; } void recur_apoint_llist_init(void) { LLIST_TS_INIT(&recur_alist_p); } void recur_apoint_free(struct recur_apoint *rapt) { mem_free(rapt->mesg); if (rapt->note) mem_free(rapt->note); if (rapt->rpt) mem_free(rapt->rpt); free_exc_list(&rapt->exc); mem_free(rapt); } void recur_event_free(struct recur_event *rev) { mem_free(rev->mesg); if (rev->note) mem_free(rev->note); if (rev->rpt) mem_free(rev->rpt); free_exc_list(&rev->exc); mem_free(rev); } void recur_apoint_llist_free(void) { LLIST_TS_FREE_INNER(&recur_alist_p, recur_apoint_free); LLIST_TS_FREE(&recur_alist_p); } void recur_event_llist_free(void) { LLIST_FREE_INNER(&recur_elist, recur_event_free); LLIST_FREE(&recur_elist); } static int recur_apoint_cmp_start(struct recur_apoint *a, struct recur_apoint *b) { return a->start < b->start ? -1 : (a->start == b->start ? 0 : 1); } static int recur_event_cmp_day(struct recur_event *a, struct recur_event *b) { return a->day < b->day ? -1 : (a->day == b->day ? 0 : 1); } /* Insert a new recursive appointment in the general linked list */ struct recur_apoint *recur_apoint_new(char *mesg, char *note, long start, long dur, char state, int type, int freq, long until, llist_t * except) { struct recur_apoint *rapt = mem_malloc(sizeof(struct recur_apoint)); rapt->rpt = mem_malloc(sizeof(struct rpt)); rapt->mesg = mem_strdup(mesg); rapt->note = (note != NULL) ? mem_strdup(note) : 0; rapt->start = start; rapt->state = state; rapt->dur = dur; rapt->rpt->type = type; rapt->rpt->freq = freq; rapt->rpt->until = until; if (except) { exc_dup(&rapt->exc, except); free_exc_list(except); } else LLIST_INIT(&rapt->exc); LLIST_TS_LOCK(&recur_alist_p); LLIST_TS_ADD_SORTED(&recur_alist_p, rapt, recur_apoint_cmp_start); LLIST_TS_UNLOCK(&recur_alist_p); return rapt; } /* Insert a new recursive event in the general linked list */ struct recur_event *recur_event_new(char *mesg, char *note, long day, int id, int type, int freq, long until, llist_t * except) { struct recur_event *rev = mem_malloc(sizeof(struct recur_event)); rev->rpt = mem_malloc(sizeof(struct rpt)); rev->mesg = mem_strdup(mesg); rev->note = (note != NULL) ? mem_strdup(note) : 0; rev->day = day; rev->id = id; rev->rpt->type = type; rev->rpt->freq = freq; rev->rpt->until = until; if (except) { exc_dup(&rev->exc, except); free_exc_list(except); } else LLIST_INIT(&rev->exc); LLIST_ADD_SORTED(&recur_elist, rev, recur_event_cmp_day); return rev; } /* * Correspondance between the defines on recursive type, * and the letter to be written in file. */ char recur_def2char(enum recur_type define) { char recur_char; switch (define) { case RECUR_DAILY: recur_char = 'D'; break; case RECUR_WEEKLY: recur_char = 'W'; break; case RECUR_MONTHLY: recur_char = 'M'; break; case RECUR_YEARLY: recur_char = 'Y'; break; default: EXIT(_("unknown repetition type")); return 0; } return recur_char; } /* * Correspondance between the letters written in file and the defines * concerning the recursive type. */ int recur_char2def(char type) { int recur_def; switch (type) { case 'D': recur_def = RECUR_DAILY; break; case 'W': recur_def = RECUR_WEEKLY; break; case 'M': recur_def = RECUR_MONTHLY; break; case 'Y': recur_def = RECUR_YEARLY; break; default: EXIT(_("unknown character")); return 0; } return recur_def; } /* Write days for which recurrent items should not be repeated. */ static void recur_write_exc(llist_t * lexc, FILE * f) { llist_item_t *i; struct tm lt; time_t t; int st_mon, st_day, st_year; LLIST_FOREACH(lexc, i) { struct excp *exc = LLIST_GET_DATA(i); t = exc->st; localtime_r(&t, <); st_mon = lt.tm_mon + 1; st_day = lt.tm_mday; st_year = lt.tm_year + 1900; fprintf(f, " !%02u/%02u/%04u", st_mon, st_day, st_year); } } /* Load the recursive appointment description */ struct recur_apoint *recur_apoint_scan(FILE * f, struct tm start, struct tm end, char type, int freq, struct tm until, char *note, llist_t * exc, char state) { char buf[BUFSIZ], *nl; time_t tstart, tend, tuntil; /* Read the appointment description */ if (!fgets(buf, sizeof buf, f)) return NULL; nl = strchr(buf, '\n'); if (nl) { *nl = '\0'; } start.tm_sec = end.tm_sec = 0; start.tm_isdst = end.tm_isdst = -1; start.tm_year -= 1900; start.tm_mon--; end.tm_year -= 1900; end.tm_mon--; tstart = mktime(&start); tend = mktime(&end); if (until.tm_year != 0) { until.tm_hour = 23; until.tm_min = 59; until.tm_sec = 0; until.tm_isdst = -1; until.tm_year -= 1900; until.tm_mon--; tuntil = mktime(&until); } else { tuntil = 0; } EXIT_IF(tstart == -1 || tend == -1 || tstart > tend || tuntil == -1, _("date error in appointment")); return recur_apoint_new(buf, note, tstart, tend - tstart, state, recur_char2def(type), freq, tuntil, exc); } /* Load the recursive events from file */ struct recur_event *recur_event_scan(FILE * f, struct tm start, int id, char type, int freq, struct tm until, char *note, llist_t * exc) { char buf[BUFSIZ], *nl; time_t tstart, tuntil; /* Read the event description */ if (!fgets(buf, sizeof buf, f)) return NULL; nl = strchr(buf, '\n'); if (nl) { *nl = '\0'; } start.tm_hour = until.tm_hour = 0; start.tm_min = until.tm_min = 0; start.tm_sec = until.tm_sec = 0; start.tm_isdst = until.tm_isdst = -1; start.tm_year -= 1900; start.tm_mon--; if (until.tm_year != 0) { until.tm_year -= 1900; until.tm_mon--; tuntil = mktime(&until); } else { tuntil = 0; } tstart = mktime(&start); EXIT_IF(tstart == -1 || tuntil == -1, _("date error in event")); return recur_event_new(buf, note, tstart, id, recur_char2def(type), freq, tuntil, exc); } /* Writting of a recursive appointment into file. */ void recur_apoint_write(struct recur_apoint *o, FILE * f) { struct tm lt; time_t t; t = o->start; localtime_r(&t, <); fprintf(f, "%02u/%02u/%04u @ %02u:%02u", lt.tm_mon + 1, lt.tm_mday, 1900 + lt.tm_year, lt.tm_hour, lt.tm_min); t = o->start + o->dur; localtime_r(&t, <); fprintf(f, " -> %02u/%02u/%04u @ %02u:%02u", lt.tm_mon + 1, lt.tm_mday, 1900 + lt.tm_year, lt.tm_hour, lt.tm_min); t = o->rpt->until; if (t == 0) { /* We have an endless recurrent appointment. */ fprintf(f, " {%d%c", o->rpt->freq, recur_def2char(o->rpt->type)); } else { localtime_r(&t, <); fprintf(f, " {%d%c -> %02u/%02u/%04u", o->rpt->freq, recur_def2char(o->rpt->type), lt.tm_mon + 1, lt.tm_mday, 1900 + lt.tm_year); } recur_write_exc(&o->exc, f); fputs("} ", f); if (o->note != NULL) fprintf(f, ">%s ", o->note); if (o->state & APOINT_NOTIFY) fputc('!', f); else fputc('|', f); fprintf(f, "%s\n", o->mesg); } /* Writting of a recursive event into file. */ void recur_event_write(struct recur_event *o, FILE * f) { struct tm lt; time_t t; int st_mon, st_day, st_year; int end_mon, end_day, end_year; t = o->day; localtime_r(&t, <); st_mon = lt.tm_mon + 1; st_day = lt.tm_mday; st_year = lt.tm_year + 1900; t = o->rpt->until; if (t == 0) { /* We have an endless recurrent event. */ fprintf(f, "%02u/%02u/%04u [%d] {%d%c", st_mon, st_day, st_year, o->id, o->rpt->freq, recur_def2char(o->rpt->type)); } else { localtime_r(&t, <); end_mon = lt.tm_mon + 1; end_day = lt.tm_mday; end_year = lt.tm_year + 1900; fprintf(f, "%02u/%02u/%04u [%d] {%d%c -> %02u/%02u/%04u", st_mon, st_day, st_year, o->id, o->rpt->freq, recur_def2char(o->rpt->type), end_mon, end_day, end_year); } recur_write_exc(&o->exc, f); fputs("} ", f); if (o->note != NULL) fprintf(f, ">%s ", o->note); fprintf(f, "%s\n", o->mesg); } /* Write recursive items to file. */ void recur_save_data(FILE * f) { llist_item_t *i; LLIST_FOREACH(&recur_elist, i) { struct recur_event *rev = LLIST_GET_DATA(i); recur_event_write(rev, f); } LLIST_TS_LOCK(&recur_alist_p); LLIST_TS_FOREACH(&recur_alist_p, i) { struct recur_apoint *rapt = LLIST_GET_DATA(i); recur_apoint_write(rapt, f); } LLIST_TS_UNLOCK(&recur_alist_p); } /* * The two following defines together with the diff_days, diff_months and * diff_years functions were provided by Lukas Fleischer to correct the wrong * calculation of recurrent dates after a turn of year. */ #define BC(start, end, bs) \ (((end) - (start) + ((start) % bs) - ((end) % bs)) / bs \ + ((((start) % bs) == 0) ? 1 : 0)) #define LEAPCOUNT(start, end) \ (BC(start, end, 4) - BC(start, end, 100) + BC(start, end, 400)) /* Calculate the difference in days between two dates. */ static long diff_days(struct tm lt_start, struct tm lt_end) { long diff; if (lt_end.tm_year < lt_start.tm_year) return 0; diff = lt_end.tm_yday - lt_start.tm_yday; if (lt_end.tm_year > lt_start.tm_year) { diff += (lt_end.tm_year - lt_start.tm_year) * YEARINDAYS; diff += LEAPCOUNT(lt_start.tm_year + TM_YEAR_BASE, lt_end.tm_year + TM_YEAR_BASE - 1); } return diff; } /* Calculate the difference in months between two dates. */ static long diff_months(struct tm lt_start, struct tm lt_end) { long diff; if (lt_end.tm_year < lt_start.tm_year) return 0; diff = lt_end.tm_mon - lt_start.tm_mon; diff += (lt_end.tm_year - lt_start.tm_year) * YEARINMONTHS; return diff; } /* Calculate the difference in years between two dates. */ static long diff_years(struct tm lt_start, struct tm lt_end) { return lt_end.tm_year - lt_start.tm_year; } static int exc_inday(struct excp *exc, long *day_start) { return (exc->st >= *day_start && exc->st < *day_start + DAYINSEC); } /* * Check if the recurrent item belongs to the selected day, and if yes, store * the start date of the occurrence that belongs to the day in a buffer. * * This function was improved thanks to Tony's patch. * Thanks also to youshe for reporting daylight saving time related problems. * And finally thanks to Lukas for providing a patch to correct the wrong * calculation of recurrent dates after a turn of years. */ unsigned recur_item_find_occurrence(long item_start, long item_dur, llist_t * item_exc, int rpt_type, int rpt_freq, long rpt_until, long day_start, unsigned *occurrence) { struct date start_date; long diff, span; struct tm lt_day, lt_item, lt_item_day; time_t t; if (day_start < item_start - DAYINSEC + 1) return 0; if (rpt_until != 0 && day_start >= rpt_until + item_dur) return 0; t = day_start; localtime_r(&t, <_day); t = item_start; localtime_r(&t, <_item); lt_item_day = lt_item; lt_item_day.tm_sec = lt_item_day.tm_min = lt_item_day.tm_hour = 0; span = (item_start - mktime(<_item_day) + item_dur - 1) / DAYINSEC; switch (rpt_type) { case RECUR_DAILY: diff = diff_days(lt_item_day, lt_day) % rpt_freq; lt_item_day.tm_mday = lt_day.tm_mday - diff; lt_item_day.tm_mon = lt_day.tm_mon; lt_item_day.tm_year = lt_day.tm_year; break; case RECUR_WEEKLY: diff = diff_days(lt_item_day, lt_day) % (rpt_freq * WEEKINDAYS); lt_item_day.tm_mday = lt_day.tm_mday - diff; lt_item_day.tm_mon = lt_day.tm_mon; lt_item_day.tm_year = lt_day.tm_year; break; case RECUR_MONTHLY: diff = diff_months(lt_item_day, lt_day) % rpt_freq; if (lt_day.tm_mday < lt_item_day.tm_mday) diff++; lt_item_day.tm_mon = lt_day.tm_mon - diff; lt_item_day.tm_year = lt_day.tm_year; break; case RECUR_YEARLY: diff = diff_years(lt_item_day, lt_day) % rpt_freq; if (lt_day.tm_mon < lt_item_day.tm_mon || (lt_day.tm_mon == lt_item_day.tm_mon && lt_day.tm_mday < lt_item_day.tm_mday)) diff++; lt_item_day.tm_year = lt_day.tm_year - diff; break; default: EXIT(_("unknown item type")); } lt_item_day.tm_isdst = lt_day.tm_isdst; t = mktime(<_item_day); if (LLIST_FIND_FIRST(item_exc, &t, exc_inday)) return 0; if (rpt_until != 0 && t > rpt_until) return 0; localtime_r(&t, <_item_day); diff = diff_days(lt_item_day, lt_day); if (diff <= span) { if (occurrence) { start_date.dd = lt_item_day.tm_mday; start_date.mm = lt_item_day.tm_mon + 1; start_date.yyyy = lt_item_day.tm_year + 1900; *occurrence = date2sec(start_date, lt_item.tm_hour, lt_item.tm_min); } return 1; } else return 0; } unsigned recur_apoint_find_occurrence(struct recur_apoint *rapt, long day_start, unsigned *occurrence) { return recur_item_find_occurrence(rapt->start, rapt->dur, &rapt->exc, rapt->rpt->type, rapt->rpt->freq, rapt->rpt->until, day_start, occurrence); } unsigned recur_event_find_occurrence(struct recur_event *rev, long day_start, unsigned *occurrence) { return recur_item_find_occurrence(rev->day, DAYINSEC, &rev->exc, rev->rpt->type, rev->rpt->freq, rev->rpt->until, day_start, occurrence); } /* Check if a recurrent item belongs to the selected day. */ unsigned recur_item_inday(long item_start, long item_dur, llist_t * item_exc, int rpt_type, int rpt_freq, long rpt_until, long day_start) { /* We do not need the (real) start time of the occurrence here, so just * ignore the buffer. */ return recur_item_find_occurrence(item_start, item_dur, item_exc, rpt_type, rpt_freq, rpt_until, day_start, NULL); } unsigned recur_apoint_inday(struct recur_apoint *rapt, long *day_start) { return recur_item_inday(rapt->start, rapt->dur, &rapt->exc, rapt->rpt->type, rapt->rpt->freq, rapt->rpt->until, *day_start); } unsigned recur_event_inday(struct recur_event *rev, long *day_start) { return recur_item_inday(rev->day, DAYINSEC, &rev->exc, rev->rpt->type, rev->rpt->freq, rev->rpt->until, *day_start); } /* Add an exception to a recurrent event. */ void recur_event_add_exc(struct recur_event *rev, long date) { recur_add_exc(&rev->exc, date); } /* Add an exception to a recurrent appointment. */ void recur_apoint_add_exc(struct recur_apoint *rapt, long date) { int need_check_notify = 0; if (notify_bar()) need_check_notify = notify_same_recur_item(rapt); recur_add_exc(&rapt->exc, date); if (need_check_notify) notify_check_next_app(0); } /* * Delete a recurrent event from the list (if delete_whole is not null), * or delete only one occurence of the recurrent event. */ void recur_event_erase(struct recur_event *rev) { llist_item_t *i = LLIST_FIND_FIRST(&recur_elist, rev, NULL); if (!i) EXIT(_("event not found")); LLIST_REMOVE(&recur_elist, i); } /* * Delete a recurrent appointment from the list (if delete_whole is not null), * or delete only one occurence of the recurrent appointment. */ void recur_apoint_erase(struct recur_apoint *rapt) { LLIST_TS_LOCK(&recur_alist_p); llist_item_t *i = LLIST_TS_FIND_FIRST(&recur_alist_p, rapt, NULL); int need_check_notify = 0; if (!i) EXIT(_("appointment not found")); if (notify_bar()) need_check_notify = notify_same_recur_item(rapt); LLIST_TS_REMOVE(&recur_alist_p, i); if (need_check_notify) notify_check_next_app(0); LLIST_TS_UNLOCK(&recur_alist_p); } /* * Read days for which recurrent items must not be repeated * (such days are called exceptions). */ void recur_exc_scan(llist_t * lexc, FILE * data_file) { int c = 0; struct tm day; LLIST_INIT(lexc); while ((c = getc(data_file)) == '!') { ungetc(c, data_file); if (fscanf(data_file, "!%d / %d / %d ", &day.tm_mon, &day.tm_mday, &day.tm_year) != 3) { EXIT(_("syntax error in item date")); } day.tm_hour = 0; day.tm_min = day.tm_sec = 0; day.tm_isdst = -1; day.tm_year -= 1900; day.tm_mon--; struct excp *exc = mem_malloc(sizeof(struct excp)); exc->st = mktime(&day); LLIST_ADD(lexc, exc); } } static int recur_apoint_starts_before(struct recur_apoint *rapt, long time) { return rapt->start < time; } /* * Look in the appointment list if we have an item which starts before the item * stored in the notify_app structure (which is the next item to be notified). */ struct notify_app *recur_apoint_check_next(struct notify_app *app, long start, long day) { llist_item_t *i; unsigned real_recur_start_time; LLIST_TS_LOCK(&recur_alist_p); LLIST_TS_FIND_FOREACH(&recur_alist_p, &app->time, recur_apoint_starts_before, i) { struct recur_apoint *rapt = LLIST_TS_GET_DATA(i); if (recur_apoint_find_occurrence(rapt, day, &real_recur_start_time) && real_recur_start_time > start) { app->time = real_recur_start_time; app->txt = mem_strdup(rapt->mesg); app->state = rapt->state; app->got_app = 1; } } LLIST_TS_UNLOCK(&recur_alist_p); return app; } /* Switch recurrent item notification state. */ void recur_apoint_switch_notify(struct recur_apoint *rapt) { LLIST_TS_LOCK(&recur_alist_p); rapt->state ^= APOINT_NOTIFY; if (notify_bar()) notify_check_repeated(rapt); LLIST_TS_UNLOCK(&recur_alist_p); } void recur_event_paste_item(struct recur_event *rev, long date) { long time_shift; llist_item_t *i; time_shift = date - rev->day; rev->day += time_shift; if (rev->rpt->until != 0) rev->rpt->until += time_shift; LLIST_FOREACH(&rev->exc, i) { struct excp *exc = LLIST_GET_DATA(i); exc->st += time_shift; } LLIST_ADD_SORTED(&recur_elist, rev, recur_event_cmp_day); } void recur_apoint_paste_item(struct recur_apoint *rapt, long date) { long time_shift; llist_item_t *i; time_shift = (date + get_item_time(rapt->start)) - rapt->start; rapt->start += time_shift; if (rapt->rpt->until != 0) rapt->rpt->until += time_shift; LLIST_FOREACH(&rapt->exc, i) { struct excp *exc = LLIST_GET_DATA(i); exc->st += time_shift; } LLIST_TS_LOCK(&recur_alist_p); LLIST_TS_ADD_SORTED(&recur_alist_p, rapt, recur_apoint_cmp_start); LLIST_TS_UNLOCK(&recur_alist_p); if (notify_bar()) notify_check_repeated(rapt); } calcurse-3.1.4/src/keys.c0000644000175000001440000004106212105444321012142 00000000000000/* * Calcurse - text-based organizer * * Copyright (c) 2004-2013 calcurse Development Team * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * - Redistributions of source code must retain the above * copyright notice, this list of conditions and the * following disclaimer. * * - Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the * following disclaimer in the documentation and/or other * materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * Send your feedback or comments to : misc@calcurse.org * Calcurse home page : http://calcurse.org * */ #include #include #include "calcurse.h" #define MAXKEYVAL KEY_MAX /* ncurses defines KEY_MAX as maximum key value */ struct keydef_s { const char *label; const char *binding; }; static llist_t keys[NBKEYS]; static enum key actions[MAXKEYVAL]; static struct keydef_s keydef[NBKEYS] = { {"generic-cancel", "ESC"}, {"generic-select", "SPC"}, {"generic-credits", "@"}, {"generic-help", "?"}, {"generic-quit", "q Q"}, {"generic-save", "s S C-s"}, {"generic-copy", "c"}, {"generic-paste", "p C-v"}, {"generic-change-view", "TAB"}, {"generic-import", "i I"}, {"generic-export", "x X"}, {"generic-goto", "g G"}, {"generic-other-cmd", "o O"}, {"generic-config-menu", "C"}, {"generic-redraw", "C-r"}, {"generic-add-appt", "C-a"}, {"generic-add-todo", "C-t"}, {"generic-prev-day", "T C-h"}, {"generic-next-day", "t C-l"}, {"generic-prev-week", "W C-k"}, {"generic-next-week", "w C-j"}, {"generic-prev-month", "M"}, {"generic-next-month", "m"}, {"generic-prev-year", "Y"}, {"generic-next-year", "y"}, {"generic-scroll-down", "C-n"}, {"generic-scroll-up", "C-p"}, {"generic-goto-today", "C-g"}, {"move-right", "l L RGT"}, {"move-left", "h H LFT"}, {"move-down", "j J DWN"}, {"move-up", "k K UP"}, {"start-of-week", "0"}, {"end-of-week", "$"}, {"add-item", "a A"}, {"del-item", "d D"}, {"edit-item", "e E"}, {"view-item", "v V"}, {"pipe-item", "|"}, {"flag-item", "!"}, {"repeat", "r R"}, {"edit-note", "n N"}, {"view-note", ">"}, {"raise-priority", "+"}, {"lower-priority", "-"}, }; static void dump_intro(FILE * fd) { const char *intro = _("#\n" "# Calcurse keys configuration file\n#\n" "# This file sets the keybindings used by Calcurse.\n" "# Lines beginning with \"#\" are comments, and ignored by Calcurse.\n" "# To assign a keybinding to an action, this file must contain a line\n" "# with the following syntax:\n#\n" "# ACTION KEY1 KEY2 ... KEYn\n#\n" "# Where ACTION is what will be performed when KEY1, KEY2, ..., or KEYn\n" "# will be pressed.\n" "#\n" "# To define bindings which use the CONTROL key, prefix the key with " "'C-'.\n" "# The escape, space bar and horizontal Tab key can be specified using\n" "# the 'ESC', 'SPC' and 'TAB' keyword, respectively.\n" "# Arrow keys can also be specified with the UP, DWN, LFT, RGT keywords.\n" "# Last, Home and End keys can be assigned using 'KEY_HOME' and 'KEY_END'\n" "# keywords." "\n#\n" "# A description of what each ACTION keyword is used for is available\n" "# from calcurse online configuration menu.\n"); fprintf(fd, "%s\n", intro); } void keys_init(void) { int i; for (i = 0; i < MAXKEYVAL; i++) actions[i] = KEY_UNDEF; for (i = 0; i < NBKEYS; i++) LLIST_INIT(&keys[i]); } static void key_free(char *s) { mem_free(s); } void keys_free(void) { int i; for (i = 0; i < NBKEYS; i++) { LLIST_FREE_INNER(&keys[i], key_free); LLIST_FREE(&keys[i]); } } void keys_dump_defaults(char *file) { FILE *fd; int i; fd = fopen(file, "w"); EXIT_IF(fd == NULL, _("FATAL ERROR: could not create default keys file.")); dump_intro(fd); for (i = 0; i < NBKEYS; i++) fprintf(fd, "%s %s\n", keydef[i].label, keydef[i].binding); file_close(fd, __FILE_POS__); } const char *keys_get_label(enum key key) { EXIT_IF(key < 0 || key > NBKEYS, _("FATAL ERROR: key value out of bounds")); return keydef[key].label; } enum key keys_get_action(int pressed) { if (pressed < 0 || pressed > MAXKEYVAL) return -1; else return actions[pressed]; } enum key keys_getch(WINDOW * win, int *count, int *reg) { int ch = '0'; if (count && reg) { *count = 0; *reg = 0; do { *count = *count * 10 + ch - '0'; ch = wgetch(win); } while ((ch == '0' && *count > 0) || (ch >= '1' && ch <= '9')); if (*count == 0) *count = 1; if (ch == '"') { ch = wgetch(win); if (ch >= '1' && ch <= '9') { *reg = ch - '1' + 1; } else if (ch >= 'a' && ch <= 'z') { *reg = ch - 'a' + 10; } else if (ch == '_') { *reg = REG_BLACK_HOLE; } ch = wgetch(win); } } else { ch = wgetch(win); } switch (ch) { case KEY_RESIZE: return KEY_RESIZE; default: return keys_get_action(ch); } } static void add_key_str(enum key action, int key) { if (action > NBKEYS) return; LLIST_ADD(&keys[action], mem_strdup(keys_int2str(key))); } int keys_assign_binding(int key, enum key action) { if (key < 0 || key > MAXKEYVAL || actions[key] != KEY_UNDEF) return 1; else { actions[key] = action; add_key_str(action, key); } return 0; } static void del_key_str(enum key action, int key) { llist_item_t *i; char oldstr[BUFSIZ]; if (action > NBKEYS) return; strncpy(oldstr, keys_int2str(key), BUFSIZ); LLIST_FOREACH(&keys[action], i) { if (strcmp(LLIST_GET_DATA(i), oldstr) == 0) { LLIST_REMOVE(&keys[action], i); return; } } } void keys_remove_binding(int key, enum key action) { if (key >= 0 && key <= MAXKEYVAL) { actions[key] = KEY_UNDEF; del_key_str(action, key); } } int keys_str2int(const char *key) { const char CONTROL_KEY[] = "C-"; const char TAB_KEY[] = "TAB"; const char SPACE_KEY[] = "SPC"; const char ESCAPE_KEY[] = "ESC"; const char CURSES_KEY_UP[] = "UP"; const char CURSES_KEY_DOWN[] = "DWN"; const char CURSES_KEY_LEFT[] = "LFT"; const char CURSES_KEY_RIGHT[] = "RGT"; const char CURSES_KEY_HOME[] = "KEY_HOME"; const char CURSES_KEY_END[] = "KEY_END"; if (!key) return -1; if (strlen(key) == 1) return (int)key[0]; else { if (key[0] == '^') return CTRL((int)key[1]); else if (!strncmp(key, CONTROL_KEY, sizeof(CONTROL_KEY) - 1)) return CTRL((int)key[sizeof(CONTROL_KEY) - 1]); else if (!strcmp(key, TAB_KEY)) return TAB; else if (!strcmp(key, ESCAPE_KEY)) return ESCAPE; else if (!strcmp(key, SPACE_KEY)) return SPACE; else if (!strcmp(key, CURSES_KEY_UP)) return KEY_UP; else if (!strcmp(key, CURSES_KEY_DOWN)) return KEY_DOWN; else if (!strcmp(key, CURSES_KEY_LEFT)) return KEY_LEFT; else if (!strcmp(key, CURSES_KEY_RIGHT)) return KEY_RIGHT; else if (!strcmp(key, CURSES_KEY_HOME)) return KEY_HOME; else if (!strcmp(key, CURSES_KEY_END)) return KEY_END; else return -1; } } const char *keys_int2str(int key) { switch (key) { case TAB: return "TAB"; case SPACE: return "SPC"; case ESCAPE: return "ESC"; case KEY_UP: return "UP"; case KEY_DOWN: return "DWN"; case KEY_LEFT: return "LFT"; case KEY_RIGHT: return "RGT"; case KEY_HOME: return "KEY_HOME"; case KEY_END: return "KEY_END"; default: return (char *)keyname(key); } } int keys_action_count_keys(enum key action) { llist_item_t *i; int n = 0; LLIST_FOREACH(&keys[action], i) n++; return n; } const char *keys_action_firstkey(enum key action) { const char *s = LLIST_GET_DATA(LLIST_FIRST(&keys[action])); return (s != NULL) ? s : "XXX"; } const char *keys_action_nkey(enum key action, int keynum) { return LLIST_GET_DATA(LLIST_NTH(&keys[action], keynum)); } char *keys_action_allkeys(enum key action) { llist_item_t *i; static char keystr[BUFSIZ]; const char *CHAR_SPACE = " "; if (!LLIST_FIRST(&keys[action])) return NULL; keystr[0] = '\0'; LLIST_FOREACH(&keys[action], i) { const int MAXLEN = sizeof(keystr) - 1 - strlen(keystr); strncat(keystr, LLIST_GET_DATA(i), MAXLEN - 1); strncat(keystr, CHAR_SPACE, 1); } return keystr; } /* Need this to display keys properly inside status bar. */ static char *keys_format_label(char *key, int keylen) { static char fmtkey[BUFSIZ]; const int len = strlen(key); const char dot = '.'; int i; if (keylen > BUFSIZ) return NULL; memset(fmtkey, 0, sizeof(fmtkey)); if (len == 0) strncpy(fmtkey, "?", sizeof(fmtkey)); else if (len <= keylen) { for (i = 0; i < keylen - len; i++) fmtkey[i] = ' '; strncat(fmtkey, key, keylen); } else { for (i = 0; i < keylen - 1; i++) fmtkey[i] = key[i]; fmtkey[keylen - 1] = dot; } return fmtkey; } void keys_display_bindings_bar(WINDOW * win, struct binding *bindings[], int count, int page_base, int page_size, struct binding *more) { /* Padding between two key bindings. */ const int padding = (col * 2) / page_size - (KEYS_KEYLEN + KEYS_LABELEN + 1); /* Total length of a key binding (including padding). */ const int cmd_len = KEYS_KEYLEN + KEYS_LABELEN + 1 + padding; int i; wins_erase_status_bar(); for (i = 0; i < page_size && page_base + i < count; i++) { /* Location of key and label. */ const int key_pos_x = (i / 2) * cmd_len; const int key_pos_y = i % 2; const int label_pos_x = key_pos_x + KEYS_KEYLEN + 1; const int label_pos_y = key_pos_y; struct binding *binding; char key[KEYS_KEYLEN + 1], *fmtkey; if (!more || i < page_size - 1 || page_base + i == count - 1) binding = bindings[page_base + i]; else binding = more; strncpy(key, keys_action_firstkey(binding->action), KEYS_KEYLEN); key[KEYS_KEYLEN] = '\0'; fmtkey = keys_format_label(key, KEYS_KEYLEN); custom_apply_attr(win, ATTR_HIGHEST); mvwaddstr(win, key_pos_y, key_pos_x, fmtkey); custom_remove_attr(win, ATTR_HIGHEST); mvwaddstr(win, label_pos_y, label_pos_x, binding->label); } wnoutrefresh(win); } /* * Display information about the given key. * (could not add the keys descriptions to keydef variable, because of i18n). */ void keys_popup_info(enum key key) { char *info[NBKEYS]; WINDOW *infowin; info[KEY_GENERIC_CANCEL] = _("Cancel the ongoing action."); info[KEY_GENERIC_SELECT] = _("Select the highlighted item."); info[KEY_GENERIC_CREDITS] = _("Print general information about calcurse's authors, license, etc."); info[KEY_GENERIC_HELP] = _("Display hints whenever some help screens are available."); info[KEY_GENERIC_QUIT] = _("Exit from the current menu, or quit calcurse."); info[KEY_GENERIC_SAVE] = _("Save calcurse data."); info[KEY_GENERIC_COPY] = _("Copy the item that is currently selected."); info[KEY_GENERIC_PASTE] = _("Paste an item at the current position."); info[KEY_GENERIC_CHANGE_VIEW] = _("Select next panel in calcurse main screen."); info[KEY_GENERIC_IMPORT] = _("Import data from an external file."); info[KEY_GENERIC_EXPORT] = _("Export data to a new file format."); info[KEY_GENERIC_GOTO] = _("Select the day to go to."); info[KEY_GENERIC_OTHER_CMD] = _("Show next possible actions inside status bar."); info[KEY_GENERIC_CONFIG_MENU] = _("Enter the configuration menu."); info[KEY_GENERIC_REDRAW] = _("Redraw calcurse's screen."); info[KEY_GENERIC_ADD_APPT] = _("Add an appointment, whichever panel is currently selected."); info[KEY_GENERIC_ADD_TODO] = _("Add a todo item, whichever panel is currently selected."); info[KEY_GENERIC_PREV_DAY] = _("Move to previous day in calendar, whichever panel is currently " "selected."); info[KEY_GENERIC_NEXT_DAY] = _("Move to next day in calendar, whichever panel is currently selected."); info[KEY_GENERIC_PREV_WEEK] = _("Move to previous week in calendar, whichever panel is currently " "selected"); info[KEY_GENERIC_NEXT_WEEK] = _ ("Move to next week in calendar, whichever panel is currently selected."); info[KEY_GENERIC_PREV_MONTH] = _("Move to previous month in calendar, whichever panel is currently " "selected"); info[KEY_GENERIC_NEXT_MONTH] = _ ("Move to next month in calendar, whichever panel is currently " "selected."); info[KEY_GENERIC_PREV_YEAR] = _("Move to previous year in calendar, whichever panel is currently " "selected"); info[KEY_GENERIC_NEXT_YEAR] = _ ("Move to next year in calendar, whichever panel is currently selected."); info[KEY_GENERIC_SCROLL_DOWN] = _ ("Scroll window down (e.g. when displaying text inside a popup window)."); info[KEY_GENERIC_SCROLL_UP] = _("Scroll window up (e.g. when displaying text inside a popup window)."); info[KEY_GENERIC_GOTO_TODAY] = _("Go to today, whichever panel is selected."); info[KEY_MOVE_RIGHT] = _("Move to the right."); info[KEY_MOVE_LEFT] = _("Move to the left."); info[KEY_MOVE_DOWN] = _("Move down."); info[KEY_MOVE_UP] = _("Move up."); info[KEY_START_OF_WEEK] = _("Select the first day of the current week when inside the calendar " "panel."); info[KEY_END_OF_WEEK] = _("Select the last day of the current week when inside the calendar " "panel."); info[KEY_ADD_ITEM] = _("Add an item to the currently selected panel."); info[KEY_DEL_ITEM] = _("Delete the currently selected item."); info[KEY_EDIT_ITEM] = _("Edit the currently seleted item."); info[KEY_VIEW_ITEM] = _("Display the currently selected item inside a popup window."); info[KEY_FLAG_ITEM] = _("Flag the currently selected item as important."); info[KEY_REPEAT_ITEM] = _("Repeat an item"); info[KEY_PIPE_ITEM] = _("Pipe the currently selected item to an external program."); info[KEY_EDIT_NOTE] = _("Attach (or edit if one exists) a note to the currently selected item"); info[KEY_VIEW_NOTE] = _("View the note attached to the currently selected item."); info[KEY_RAISE_PRIORITY] = _("Raise a task priority inside the todo panel."); info[KEY_LOWER_PRIORITY] = _("Lower a task priority inside the todo panel."); if (key > NBKEYS) return; #define WINROW 10 #define WINCOL (col - 4) infowin = popup(WINROW, WINCOL, (row - WINROW) / 2, (col - WINCOL) / 2, keydef[key].label, info[key], 1); keys_getch(infowin, NULL, NULL); delwin(infowin); #undef WINROW #undef WINCOL } void keys_save_bindings(FILE * fd) { int i; char *action; EXIT_IF(fd == NULL, _("FATAL ERROR: null file pointer.")); dump_intro(fd); for (i = 0; i < NBKEYS; i++) { action = keys_action_allkeys(i); if (action) fprintf(fd, "%s %s\n", keydef[i].label, action); } } int keys_check_missing_bindings(void) { int i; for (i = 0; i < NBKEYS; i++) { if (!LLIST_FIRST(&keys[i])) return 1; } return 0; } void keys_fill_missing(void) { int i; for (i = 0; i < NBKEYS; i++) { if (!LLIST_FIRST(&keys[i])) { char *p, tmpbuf[BUFSIZ]; strncpy(tmpbuf, keydef[i].binding, BUFSIZ); p = tmpbuf; for (;;) { char key_ch[BUFSIZ]; while (*p == ' ') p++; if (sscanf(p, "%s", key_ch) == 1) { int ch, used; ch = keys_str2int(key_ch); used = keys_assign_binding(ch, i); if (used) WARN_MSG(_("When adding default key for \"%s\", " "\"%s\" was already assigned!"), keydef[i].label, key_ch); p += strlen(key_ch) + 1; } else break; } } } } calcurse-3.1.4/src/getstring.c0000644000175000001440000001711212105444321013174 00000000000000/* * Calcurse - text-based organizer * * Copyright (c) 2004-2013 calcurse Development Team * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * - Redistributions of source code must retain the above * copyright notice, this list of conditions and the * following disclaimer. * * - Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the * following disclaimer in the documentation and/or other * materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * Send your feedback or comments to : misc@calcurse.org * Calcurse home page : http://calcurse.org * */ #include "calcurse.h" struct getstr_charinfo { unsigned int offset, dpyoff; }; struct getstr_status { char *s; struct getstr_charinfo *ci; int pos, len; int scrpos; }; /* Print the string at the desired position. */ static void getstr_print(WINDOW * win, int x, int y, struct getstr_status *st) { char c = 0; /* print string */ mvwaddnstr(win, y, x, &st->s[st->ci[st->scrpos].offset], -1); wclrtoeol(win); /* print scrolling indicator */ if (st->scrpos > 0 && st->ci[st->len].dpyoff - st->ci[st->scrpos].dpyoff > col - 2) c = '*'; else if (st->scrpos > 0) c = '<'; else if (st->ci[st->len].dpyoff - st->ci[st->scrpos].dpyoff > col - 2) c = '>'; mvwprintw(win, y, col - 2, " %c", c); /* print cursor */ wmove(win, y, st->ci[st->pos].dpyoff - st->ci[st->scrpos].dpyoff); wchgat(win, 1, A_REVERSE, COLR_CUSTOM, NULL); } /* Delete a character at the given position in string. */ static void getstr_del_char(struct getstr_status *st) { char *str = st->s + st->ci[st->pos].offset; int cl = st->ci[st->pos + 1].offset - st->ci[st->pos].offset; int cw = st->ci[st->pos + 1].dpyoff - st->ci[st->pos].dpyoff; int i; memmove(str, str + cl, strlen(str) + 1); st->len--; for (i = st->pos; i <= st->len; i++) { st->ci[i].offset = st->ci[i + 1].offset - cl; st->ci[i].dpyoff = st->ci[i + 1].dpyoff - cw; } } /* Add a character at the given position in string. */ static void getstr_ins_char(struct getstr_status *st, char *c) { char *str = st->s + st->ci[st->pos].offset; int cl = UTF8_LENGTH(c[0]); int cw = utf8_width(c); int i; memmove(str + cl, str, strlen(str) + 1); for (i = 0; i < cl; i++, str++) *str = c[i]; for (i = st->len; i >= st->pos; i--) { st->ci[i + 1].offset = st->ci[i].offset + cl; st->ci[i + 1].dpyoff = st->ci[i].dpyoff + cw; } st->len++; } static void bell(void) { putchar('\a'); } /* Initialize getstring data structure. */ static void getstr_init(struct getstr_status *st, char *str, struct getstr_charinfo *ci) { int width; st->s = str; st->ci = ci; st->len = width = 0; while (*str) { st->ci[st->len].offset = str - st->s; st->ci[st->len].dpyoff = width; st->len++; width += utf8_width(str); str += UTF8_LENGTH(*str); } st->ci[st->len].offset = str - st->s; st->ci[st->len].dpyoff = width; st->pos = st->len; st->scrpos = 0; } /* Scroll left/right if the cursor moves outside the window range. */ static void getstr_fixscr(struct getstr_status *st) { const int pgsize = col / 3; int pgskip; while (st->pos < st->scrpos) { pgskip = 0; while (pgskip < pgsize && st->scrpos > 0) { st->scrpos--; pgskip += st->ci[st->scrpos + 1].dpyoff - st->ci[st->scrpos].dpyoff; } } while (st->ci[st->pos].dpyoff - st->ci[st->scrpos].dpyoff > col - 2) { pgskip = 0; while (pgskip < pgsize && st->scrpos < st->len) { pgskip += st->ci[st->scrpos + 1].dpyoff - st->ci[st->scrpos].dpyoff; st->scrpos++; } } } /* * Getstring allows to get user input and to print it on a window, * even if noecho() is on. This function is also used to modify an existing * text (the variable string can be non-NULL). * We need to do the echoing manually because of the multi-threading * environment, otherwise the cursor would move from place to place without * control. */ enum getstr getstring(WINDOW * win, char *str, int l, int x, int y) { struct getstr_status st; struct getstr_charinfo ci[l + 1]; int ch, k; char c[UTF8_MAXLEN]; getstr_init(&st, str, ci); custom_apply_attr(win, ATTR_HIGHEST); for (;;) { getstr_fixscr(&st); getstr_print(win, x, y, &st); wins_doupdate(); if ((ch = wgetch(win)) == '\n') break; switch (ch) { case KEY_BACKSPACE: /* delete one character */ case 330: case 127: case CTRL('H'): if (st.pos > 0) { st.pos--; getstr_del_char(&st); } else bell(); break; case CTRL('D'): /* delete next character */ if (st.pos < st.len) getstr_del_char(&st); else bell(); break; case CTRL('W'): /* delete a word */ if (st.pos > 0) { while (st.pos && st.s[st.ci[st.pos - 1].offset] == ' ') { st.pos--; getstr_del_char(&st); } while (st.pos && st.s[st.ci[st.pos - 1].offset] != ' ') { st.pos--; getstr_del_char(&st); } } else bell(); break; case CTRL('K'): /* delete to end-of-line */ st.s[st.ci[st.pos].offset] = 0; st.len = st.pos; break; case CTRL('A'): /* go to begginning of string */ st.pos = 0; break; case CTRL('E'): /* go to end of string */ st.pos = st.len; break; case KEY_LEFT: /* move one char backward */ case CTRL('B'): if (st.pos > 0) st.pos--; break; case KEY_RIGHT: /* move one char forward */ case CTRL('F'): if (st.pos < st.len) st.pos++; break; case ESCAPE: /* cancel editing */ return GETSTRING_ESC; break; default: /* insert one character */ c[0] = ch; for (k = 1; k < MIN(UTF8_LENGTH(c[0]), UTF8_MAXLEN); k++) c[k] = (unsigned char)wgetch(win); if (st.ci[st.len].offset + k < l) { getstr_ins_char(&st, c); st.pos++; } } } custom_remove_attr(win, ATTR_HIGHEST); return st.len == 0 ? GETSTRING_RET : GETSTRING_VALID; } /* Update an already existing string. */ int updatestring(WINDOW * win, char **str, int x, int y) { int len = strlen(*str); char *buf; enum getstr ret; EXIT_IF(len + 1 > BUFSIZ, _("Internal error: line too long")); buf = mem_malloc(BUFSIZ); memcpy(buf, *str, len + 1); ret = getstring(win, buf, BUFSIZ, x, y); if (ret == GETSTRING_VALID) { len = strlen(buf); *str = mem_realloc(*str, len + 1, 1); EXIT_IF(*str == NULL, _("out of memory")); memcpy(*str, buf, len + 1); } mem_free(buf); return ret; } calcurse-3.1.4/src/mem.c0000644000175000001440000001563112105444321011750 00000000000000/* * Calcurse - text-based organizer * * Copyright (c) 2004-2013 calcurse Development Team * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * - Redistributions of source code must retain the above * copyright notice, this list of conditions and the * following disclaimer. * * - Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the * following disclaimer in the documentation and/or other * materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * Send your feedback or comments to : misc@calcurse.org * Calcurse home page : http://calcurse.org * */ #include #include #include #include #include "calcurse.h" #ifdef CALCURSE_MEMORY_DEBUG enum { BLK_STATE, BLK_SIZE, BLK_ID, EXTRA_SPACE_START }; #define EXTRA_SPACE_END 1 #define EXTRA_SPACE EXTRA_SPACE_START + EXTRA_SPACE_END #define MAGIC_ALLOC 0xda #define MAGIC_FREE 0xdf struct mem_blk { unsigned id, size; const char *pos; struct mem_blk *next; }; struct mem_stats { unsigned ncall, nalloc, nfree; struct mem_blk *blk; }; static struct mem_stats mstats; #endif /* CALCURSE_MEMORY_DEBUG */ void *xmalloc(size_t size) { void *p; EXIT_IF(size == 0, _("xmalloc: zero size")); p = malloc(size); EXIT_IF(p == NULL, _("xmalloc: out of memory")); return p; } void *xcalloc(size_t nmemb, size_t size) { void *p; EXIT_IF(nmemb == 0 || size == 0, _("xcalloc: zero size")); EXIT_IF(SIZE_MAX / nmemb < size, _("xcalloc: overflow")); p = calloc(nmemb, size); EXIT_IF(p == NULL, _("xcalloc: out of memory")); return p; } void *xrealloc(void *ptr, size_t nmemb, size_t size) { void *new_ptr; size_t new_size; new_size = nmemb * size; EXIT_IF(new_size == 0, _("xrealloc: zero size")); EXIT_IF(SIZE_MAX / nmemb < size, _("xrealloc: overflow")); new_ptr = realloc(ptr, new_size); EXIT_IF(new_ptr == NULL, _("xrealloc: out of memory")); return new_ptr; } char *xstrdup(const char *str) { size_t len; char *cp; len = strlen(str) + 1; cp = xmalloc(len); return strncpy(cp, str, len); } void xfree(void *p) { EXIT_IF(p == NULL, _("xfree: null pointer")); free(p); } #ifdef CALCURSE_MEMORY_DEBUG static unsigned stats_add_blk(size_t size, const char *pos) { struct mem_blk *o, **i; o = malloc(sizeof(*o)); EXIT_IF(o == NULL, _("could not allocate memory to store block info")); mstats.ncall++; o->pos = pos; o->size = (unsigned)size; o->next = 0; for (i = &mstats.blk; *i; i = &(*i)->next) ; o->id = mstats.ncall; *i = o; return o->id; } static void stats_del_blk(unsigned id) { struct mem_blk *o, **i; i = &mstats.blk; for (o = mstats.blk; o; o = o->next) { if (o->id == id) { *i = o->next; free(o); return; } i = &o->next; } EXIT(_("Block not found")); /* NOTREACHED */ } void *dbg_malloc(size_t size, const char *pos) { unsigned *buf; if (size == 0) return NULL; size = EXTRA_SPACE + (size + sizeof(unsigned) - 1) / sizeof(unsigned); buf = xmalloc(size * sizeof(unsigned)); buf[BLK_STATE] = MAGIC_ALLOC; /* state of the block */ buf[BLK_SIZE] = size; /* size of the block */ buf[BLK_ID] = stats_add_blk(size, pos); /* identify a block by its id */ buf[size - 1] = buf[BLK_ID]; /* mark at end of block */ mstats.nalloc += size; return (void *)(buf + EXTRA_SPACE_START); } void *dbg_calloc(size_t nmemb, size_t size, const char *pos) { void *buf; if (!nmemb || !size) return NULL; EXIT_IF(nmemb > SIZE_MAX / size, _("overflow at %s"), pos); size *= nmemb; if ((buf = dbg_malloc(size, pos)) == NULL) return NULL; memset(buf, 0, size); return buf; } void *dbg_realloc(void *ptr, size_t nmemb, size_t size, const char *pos) { unsigned *buf, old_size, new_size, cpy_size; if (ptr == NULL) return NULL; new_size = nmemb * size; if (new_size == 0) return NULL; EXIT_IF(nmemb > SIZE_MAX / size, _("overflow at %s"), pos); if ((buf = dbg_malloc(new_size, pos)) == NULL) return NULL; old_size = *((unsigned *)ptr - EXTRA_SPACE_START + BLK_SIZE); cpy_size = (old_size > new_size) ? new_size : old_size; memmove(buf, ptr, cpy_size); mem_free(ptr); return (void *)buf; } char *dbg_strdup(const char *s, const char *pos) { size_t size; char *buf; if (s == NULL) return NULL; size = strlen(s); if ((buf = dbg_malloc(size + 1, pos)) == NULL) return NULL; return strncpy(buf, s, size + 1); } void dbg_free(void *ptr, const char *pos) { unsigned *buf, size; EXIT_IF(ptr == NULL, _("dbg_free: null pointer at %s"), pos); buf = (unsigned *)ptr - EXTRA_SPACE_START; size = buf[BLK_SIZE]; EXIT_IF(buf[BLK_STATE] == MAGIC_FREE, _("block seems already freed at %s"), pos); EXIT_IF(buf[BLK_STATE] != MAGIC_ALLOC, _("corrupt block header at %s"), pos); EXIT_IF(buf[size - 1] != buf[BLK_ID], _("corrupt block end at %s, (end = %u, should be %d)"), pos, buf[size - 1], buf[BLK_ID]); buf[0] = MAGIC_FREE; stats_del_blk(buf[BLK_ID]); free(buf); mstats.nfree += size; } static void dump_block_info(struct mem_blk *blk) { if (blk == NULL) return; puts(_("---==== MEMORY BLOCK ====----------------\n")); printf(_(" id: %u\n"), blk->id); printf(_(" size: %u\n"), blk->size); printf(_(" allocated in: %s\n"), blk->pos); puts(_("-----------------------------------------\n")); } void mem_stats(void) { putchar('\n'); puts(_("+------------------------------+\n")); puts(_("| calcurse memory usage report |\n")); puts(_("+------------------------------+\n")); printf(_(" number of calls: %u\n"), mstats.ncall); printf(_(" allocated blocks: %u\n"), mstats.nalloc); printf(_(" unfreed blocks: %u\n"), mstats.nalloc - mstats.nfree); putchar('\n'); if (mstats.nfree < mstats.nalloc) { struct mem_blk *blk; for (blk = mstats.blk; blk; blk = blk->next) dump_block_info(blk); } } #endif /* CALCURSE_MEMORY_DEBUG */ calcurse-3.1.4/src/dmon.c0000644000175000001440000001370312105444321012125 00000000000000/* * Calcurse - text-based organizer * * Copyright (c) 2004-2013 calcurse Development Team * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * - Redistributions of source code must retain the above * copyright notice, this list of conditions and the * following disclaimer. * * - Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the * following disclaimer in the documentation and/or other * materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * Send your feedback or comments to : misc@calcurse.org * Calcurse home page : http://calcurse.org * */ #include #include #include #include #include #include #include #include #include "calcurse.h" #define DMON_SLEEP_TIME 60 #define DMON_LOG(...) do { \ if (dmon.log) \ io_fprintln (path_dmon_log, __VA_ARGS__); \ } while (0) #define DMON_ABRT(...) do { \ DMON_LOG (__VA_ARGS__); \ if (kill (getpid (), SIGINT) < 0) \ { \ DMON_LOG (_("Could not stop daemon properly: %s\n"), \ strerror (errno)); \ exit (EXIT_FAILURE); \ } \ } while (0) static unsigned data_loaded; static void dmon_sigs_hdlr(int sig) { if (data_loaded) free_user_data(); DMON_LOG(_("terminated at %s with signal %d\n"), nowstr(), sig); if (unlink(path_dpid) != 0) { DMON_LOG(_("Could not remove daemon lock file: %s\n"), strerror(errno)); exit(EXIT_FAILURE); } exit(EXIT_SUCCESS); } static unsigned daemonize(int status) { int fd; /* * Operate in the background: Daemonizing. * * First need to fork in order to become a child of the init process, * once the father exits. */ switch (fork()) { case -1: /* fork error */ EXIT(_("Could not fork: %s\n"), strerror(errno)); break; case 0: /* child */ break; default: /* parent */ exit(status); } /* * Process independency. * * Obtain a new process group and session in order to get detached from the * controlling terminal. */ if (setsid() == -1) { DMON_LOG(_("Could not detach from the controlling terminal: %s\n"), strerror(errno)); return 0; } /* * Change working directory to root directory, * to prevent filesystem unmounts. */ if (chdir("/") == -1) { DMON_LOG(_("Could not change working directory: %s\n"), strerror(errno)); return 0; } /* Redirect standard file descriptors to /dev/null. */ if ((fd = open(_PATH_DEVNULL, O_RDWR, 0)) != -1) { dup2(fd, STDIN_FILENO); dup2(fd, STDOUT_FILENO); dup2(fd, STDERR_FILENO); if (fd > 2) close(fd); } /* Write access for the owner only. */ umask(0022); if (!sigs_set_hdlr(SIGINT, dmon_sigs_hdlr) || !sigs_set_hdlr(SIGTERM, dmon_sigs_hdlr) || !sigs_set_hdlr(SIGALRM, dmon_sigs_hdlr) || !sigs_set_hdlr(SIGQUIT, dmon_sigs_hdlr) || !sigs_set_hdlr(SIGCHLD, SIG_IGN)) return 0; return 1; } void dmon_start(int parent_exit_status) { if (!daemonize(parent_exit_status)) DMON_ABRT(_("Cannot daemonize, aborting\n")); if (!io_dump_pid(path_dpid)) DMON_ABRT(_("Could not set lock file\n")); if (!io_file_exist(path_conf)) DMON_ABRT(_("Could not access \"%s\": %s\n"), path_conf, strerror(errno)); config_load(); if (!io_file_exist(path_apts)) DMON_ABRT(_("Could not access \"%s\": %s\n"), path_apts, strerror(errno)); apoint_llist_init(); recur_apoint_llist_init(); event_llist_init(); todo_init_list(); io_load_app(); data_loaded = 1; DMON_LOG(_("started at %s\n"), nowstr()); for (;;) { int left; if (!notify_get_next_bkgd()) DMON_ABRT(_("error loading next appointment\n")); left = notify_time_left(); if (left > 0 && left < nbar.cntdwn && notify_needs_reminder()) { DMON_LOG(_("launching notification at %s for: \"%s\"\n"), nowstr(), notify_app_txt()); if (!notify_launch_cmd()) DMON_LOG(_("error while sending notification\n")); } DMON_LOG(ngettext("sleeping at %s for %d second\n", "sleeping at %s for %d seconds\n", DMON_SLEEP_TIME), nowstr(), DMON_SLEEP_TIME); psleep(DMON_SLEEP_TIME); DMON_LOG(_("awakened at %s\n"), nowstr()); } } /* * Check if calcurse is running in background, and if yes, send a SIGINT * signal to stop it. */ void dmon_stop(void) { int dpid; dpid = io_get_pid(path_dpid); if (!dpid) return; if (kill((pid_t) dpid, SIGINT) < 0 && errno != ESRCH) EXIT(_("Could not stop calcurse daemon: %s\n"), strerror(errno)); } calcurse-3.1.4/src/wins.c0000644000175000001440000004537512105444321012162 00000000000000/* * Calcurse - text-based organizer * * Copyright (c) 2004-2013 calcurse Development Team * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * - Redistributions of source code must retain the above * copyright notice, this list of conditions and the * following disclaimer. * * - Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the * following disclaimer in the documentation and/or other * materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * Send your feedback or comments to : misc@calcurse.org * Calcurse home page : http://calcurse.org * */ #include #include #include #include "calcurse.h" #define SCREEN_ACQUIRE \ pthread_cleanup_push(screen_cleanup, (void *)NULL); \ screen_acquire(); #define SCREEN_RELEASE \ screen_release(); \ pthread_cleanup_pop(0); /* Variables to handle calcurse windows. */ struct window win[NBWINS]; /* User-configurable side bar width. */ static unsigned sbarwidth_perc; static enum win slctd_win; static int layout; /* * The screen_mutex mutex and wins_refresh(), wins_wrefresh(), wins_doupdate() * functions are used to prevent concurrent updates of the screen. * It was observed that the display could get screwed up when mulitple threads * tried to refresh the screen at the same time. * * Note (2010-03-21): * Since recent versions of ncurses (5.7), rudimentary support for threads are * available (use_screen(), use_window() for instance - see curs_threads(3)), * but to remain compatible with earlier versions, it was chosen to rely on a * screen-level mutex instead. */ static pthread_mutex_t screen_mutex = PTHREAD_MUTEX_INITIALIZER; static unsigned screen_acquire(void) { if (pthread_mutex_lock(&screen_mutex) != 0) return 0; else return 1; } static void screen_release(void) { pthread_mutex_unlock(&screen_mutex); } static void screen_cleanup(void *arg) { screen_release(); } /* * FIXME: The following functions currently lock the whole screen. Use both * window-level and screen-level mutexes (or use use_screen() and use_window(), * see curs_threads(3)) to avoid locking too much. */ unsigned wins_nbar_lock(void) { return screen_acquire(); } void wins_nbar_unlock(void) { screen_release(); } void wins_nbar_cleanup(void *arg) { wins_nbar_unlock(); } unsigned wins_calendar_lock(void) { return screen_acquire(); } void wins_calendar_unlock(void) { screen_release(); } void wins_calendar_cleanup(void *arg) { wins_calendar_unlock(); } int wins_refresh(void) { int rc; SCREEN_ACQUIRE; rc = refresh(); SCREEN_RELEASE; return rc; } int wins_wrefresh(WINDOW * win) { int rc; if (!win) return ERR; SCREEN_ACQUIRE; rc = wrefresh(win); SCREEN_RELEASE; return rc; } int wins_doupdate(void) { int rc; SCREEN_ACQUIRE; rc = doupdate(); SCREEN_RELEASE; return rc; } /* Get the current layout. */ int wins_layout(void) { return layout; } /* Set the current layout. */ void wins_set_layout(int nb) { layout = nb; } /* Get the current side bar width. */ unsigned wins_sbar_width(void) { if (sbarwidth_perc > SBARMAXWIDTHPERC) return col * SBARMAXWIDTHPERC / 100; else { unsigned sbarwidth = (unsigned)(col * sbarwidth_perc / 100); return (sbarwidth < SBARMINWIDTH) ? SBARMINWIDTH : sbarwidth; } } /* * Return the side bar width in percentage of the total number of columns * available in calcurse's screen. */ unsigned wins_sbar_wperc(void) { return sbarwidth_perc > SBARMAXWIDTHPERC ? SBARMAXWIDTHPERC : sbarwidth_perc; } /* * Set side bar width (unit: number of characters) given a width in percentage * of calcurse's screen total width. * The side bar could not have a width representing more than 50% of the screen, * and could not be less than SBARMINWIDTH characters. */ void wins_set_sbar_width(unsigned perc) { sbarwidth_perc = perc; } /* Change the width of the side bar within acceptable boundaries. */ void wins_sbar_winc(void) { if (sbarwidth_perc < SBARMAXWIDTHPERC) sbarwidth_perc++; } void wins_sbar_wdec(void) { if (sbarwidth_perc > 0) sbarwidth_perc--; } /* Returns an enum which corresponds to the window which is selected. */ enum win wins_slctd(void) { return slctd_win; } /* Sets the selected window. */ void wins_slctd_set(enum win window) { slctd_win = window; } /* TAB key was hit in the interface, need to select next window. */ void wins_slctd_next(void) { if (slctd_win == TOD) slctd_win = CAL; else slctd_win++; } static void wins_init_panels(void) { win[CAL].p = newwin(CALHEIGHT + (conf.compact_panels ? 2 : 4), wins_sbar_width(), win[CAL].y, win[CAL].x); wins_show(win[CAL].p, _("Calendar")); win[APP].p = newwin(win[APP].h, win[APP].w, win[APP].y, win[APP].x); wins_show(win[APP].p, _("Appointments")); apad.width = win[APP].w - 3; apad.ptrwin = newpad(apad.length, apad.width); win[TOD].p = newwin(win[TOD].h, win[TOD].w, win[TOD].y, win[TOD].x); wins_show(win[TOD].p, _("ToDo")); /* Enable function keys (i.e. arrow keys) in those windows */ keypad(win[CAL].p, TRUE); keypad(win[APP].p, TRUE); keypad(win[TOD].p, TRUE); } /* Create all the windows. */ void wins_init(void) { wins_init_panels(); win[STA].p = newwin(win[STA].h, win[STA].w, win[STA].y, win[STA].x); win[KEY].p = newwin(1, 1, 1, 1); keypad(win[STA].p, TRUE); keypad(win[KEY].p, TRUE); /* Notify that the curses mode is now launched. */ ui_mode = UI_CURSES; } /* * Create a new window and its associated pad, which is used to make the * scrolling faster. */ void wins_scrollwin_init(struct scrollwin *sw) { EXIT_IF(sw == NULL, "null pointer"); sw->win.p = newwin(sw->win.h, sw->win.w, sw->win.y, sw->win.x); sw->pad.p = newpad(sw->pad.h, sw->pad.w); sw->first_visible_line = 0; sw->total_lines = 0; } /* Free an already created scrollwin. */ void wins_scrollwin_delete(struct scrollwin *sw) { EXIT_IF(sw == NULL, "null pointer"); delwin(sw->win.p); delwin(sw->pad.p); } /* Display a scrolling window. */ void wins_scrollwin_display(struct scrollwin *sw) { const int visible_lines = sw->win.h - sw->pad.y - 1; if (sw->total_lines > visible_lines) { int sbar_length = visible_lines * visible_lines / sw->total_lines; int highend = visible_lines * sw->first_visible_line / sw->total_lines; int sbar_top = highend + sw->pad.y + 1; if ((sbar_top + sbar_length) > sw->win.h - 1) sbar_length = sw->win.h - sbar_top; draw_scrollbar(sw->win.p, sbar_top, sw->win.w + sw->win.x - 2, sbar_length, sw->pad.y + 1, sw->win.h - 1, 1); } wmove(win[STA].p, 0, 0); wnoutrefresh(sw->win.p); pnoutrefresh(sw->pad.p, sw->first_visible_line, 0, sw->pad.y, sw->pad.x, sw->win.h - sw->pad.y + 1, sw->win.w - sw->win.x); wins_doupdate(); } void wins_scrollwin_up(struct scrollwin *sw, int amount) { if (sw->first_visible_line > 0) sw->first_visible_line -= amount; } void wins_scrollwin_down(struct scrollwin *sw, int amount) { if (sw->total_lines > (sw->first_visible_line + sw->win.h - sw->pad.y - 1)) sw->first_visible_line += amount; } void wins_reinit_panels(void) { delwin(win[CAL].p); delwin(win[APP].p); delwin(apad.ptrwin); delwin(win[TOD].p); wins_get_config(); wins_init_panels(); } /* * Delete the existing windows and recreate them with their new * size and placement. */ void wins_reinit(void) { delwin(win[CAL].p); delwin(win[APP].p); delwin(apad.ptrwin); delwin(win[TOD].p); delwin(win[STA].p); delwin(win[KEY].p); wins_get_config(); wins_init(); if (notify_bar()) notify_reinit_bar(); } /* Show the window with a border and a label. */ void wins_show(WINDOW * win, const char *label) { int width = getmaxx(win); box(win, 0, 0); if (!conf.compact_panels) { mvwaddch(win, 2, 0, ACS_LTEE); mvwhline(win, 2, 1, ACS_HLINE, width - 2); mvwaddch(win, 2, width - 1, ACS_RTEE); print_in_middle(win, 1, 0, width, label); } } /* * Get the screen size and recalculate the windows configurations. */ void wins_get_config(void) { enum win win_master; enum win win_slave[2]; unsigned master_is_left; /* Get the screen configuration */ getmaxyx(stdscr, row, col); /* fixed values for status, notification bars and calendar */ win[STA].h = STATUSHEIGHT; win[STA].w = col; win[STA].y = row - win[STA].h; win[STA].x = 0; if (notify_bar()) { win[NOT].h = 1; win[NOT].w = col; win[NOT].y = win[STA].y - 1; win[NOT].x = 0; } else { win[NOT].h = 0; win[NOT].w = 0; win[NOT].y = 0; win[NOT].x = 0; } win[CAL].h = CALHEIGHT + (conf.compact_panels ? 2 : 4); if (layout <= 4) { win_master = APP; win_slave[0] = ((layout - 1) % 2 == 0) ? CAL : TOD; win_slave[1] = ((layout - 1) % 2 == 1) ? CAL : TOD; win[TOD].h = row - (win[CAL].h + win[STA].h + win[NOT].h); } else { win_master = TOD; win_slave[0] = ((layout - 1) % 2 == 0) ? CAL : APP; win_slave[1] = ((layout - 1) % 2 == 1) ? CAL : APP; win[APP].h = row - (win[CAL].h + win[STA].h + win[NOT].h); } master_is_left = ((layout - 1) % 4 < 2); win[win_master].x = master_is_left ? 0 : wins_sbar_width(); win[win_master].y = 0; win[win_master].w = col - wins_sbar_width(); win[win_master].h = row - (win[STA].h + win[NOT].h); win[win_slave[0]].x = win[win_slave[1]].x = master_is_left ? win[win_master].w : 0; win[win_slave[0]].y = 0; win[win_slave[1]].y = win[win_slave[0]].h; win[win_slave[0]].w = win[win_slave[1]].w = wins_sbar_width(); } /* draw panel border in color */ static void border_color(WINDOW * window) { int color_attr = A_BOLD; int no_color_attr = A_BOLD; if (colorize) { wattron(window, color_attr | COLOR_PAIR(COLR_CUSTOM)); box(window, 0, 0); } else { wattron(window, no_color_attr); box(window, 0, 0); } if (colorize) { wattroff(window, color_attr | COLOR_PAIR(COLR_CUSTOM)); } else { wattroff(window, no_color_attr); } wnoutrefresh(window); } /* draw panel border without any color */ static void border_nocolor(WINDOW * window) { int color_attr = A_BOLD; int no_color_attr = A_DIM; if (colorize) { wattron(window, color_attr | COLOR_PAIR(COLR_DEFAULT)); } else { wattron(window, no_color_attr); } box(window, 0, 0); if (colorize) { wattroff(window, color_attr | COLOR_PAIR(COLR_DEFAULT)); } else { wattroff(window, no_color_attr); } wnoutrefresh(window); } void wins_update_border(int flags) { if (flags & FLAG_CAL) { WINS_CALENDAR_LOCK; if (slctd_win == CAL) border_color(win[CAL].p); else border_nocolor(win[CAL].p); WINS_CALENDAR_UNLOCK; } if (flags & FLAG_APP) { if (slctd_win == APP) border_color(win[APP].p); else border_nocolor(win[APP].p); } if (flags & FLAG_TOD) { if (slctd_win == TOD) border_color(win[TOD].p); else border_nocolor(win[TOD].p); } } void wins_update_panels(int flags) { if (flags & FLAG_APP) apoint_update_panel(slctd_win); if (flags & FLAG_TOD) todo_update_panel(slctd_win); if (flags & FLAG_CAL) calendar_update_panel(&win[CAL]); } /* * Update all of the three windows and put a border around the * selected window. */ void wins_update(int flags) { wins_update_border(flags); wins_update_panels(flags); if (flags & FLAG_STA) wins_status_bar(); if ((flags & FLAG_NOT) && notify_bar()) notify_update_bar(); wmove(win[STA].p, 0, 0); wins_doupdate(); } /* Reset the screen, needed when resizing terminal for example. */ void wins_reset(void) { endwin(); wins_refresh(); curs_set(0); wins_reinit(); wins_update(FLAG_ALL); } /* Prepare windows for the execution of an external command. */ void wins_prepare_external(void) { if (notify_bar()) notify_stop_main_thread(); def_prog_mode(); ui_mode = UI_CMDLINE; clear(); wins_refresh(); endwin(); sigs_ignore(); } /* Restore windows when returning from an external command. */ void wins_unprepare_external(void) { sigs_unignore(); reset_prog_mode(); clearok(curscr, TRUE); curs_set(0); ui_mode = UI_CURSES; wins_refresh(); wins_reinit(); wins_update(FLAG_ALL); if (notify_bar()) notify_start_main_thread(); } /* * While inside interactive mode, launch the external command cmd on the given * file. */ void wins_launch_external(const char *file, const char *cmd) { const char *arg[] = { cmd, file, NULL }; int pid; wins_prepare_external(); if ((pid = shell_exec(NULL, NULL, *arg, arg))) child_wait(NULL, NULL, pid); wins_unprepare_external(); } #define NB_CAL_CMDS 27 /* number of commands while in cal view */ #define NB_APP_CMDS 32 /* same thing while in appointment view */ #define NB_TOD_CMDS 31 /* same thing while in todo view */ static unsigned status_page; /* * Draws the status bar. * To add a keybinding, insert a new binding_t item, add it in the *binding * table, and update the NB_CAL_CMDS, NB_APP_CMDS or NB_TOD_CMDS defines, * depending on which panel the added keybind is assigned to. */ void wins_status_bar(void) { struct binding help = { _("Help"), KEY_GENERIC_HELP }; struct binding quit = { _("Quit"), KEY_GENERIC_QUIT }; struct binding save = { _("Save"), KEY_GENERIC_SAVE }; struct binding copy = { _("Copy"), KEY_GENERIC_COPY }; struct binding paste = { _("Paste"), KEY_GENERIC_PASTE }; struct binding chgvu = { _("Chg Win"), KEY_GENERIC_CHANGE_VIEW }; struct binding import = { _("Import"), KEY_GENERIC_IMPORT }; struct binding export = { _("Export"), KEY_GENERIC_EXPORT }; struct binding togo = { _("Go to"), KEY_GENERIC_GOTO }; struct binding conf = { _("Config"), KEY_GENERIC_CONFIG_MENU }; struct binding draw = { _("Redraw"), KEY_GENERIC_REDRAW }; struct binding appt = { _("Add Appt"), KEY_GENERIC_ADD_APPT }; struct binding todo = { _("Add Todo"), KEY_GENERIC_ADD_TODO }; struct binding gpday = { _("-1 Day"), KEY_GENERIC_PREV_DAY }; struct binding gnday = { _("+1 Day"), KEY_GENERIC_NEXT_DAY }; struct binding gpweek = { _("-1 Week"), KEY_GENERIC_PREV_WEEK }; struct binding gnweek = { _("+1 Week"), KEY_GENERIC_NEXT_WEEK }; struct binding gpmonth = { _("-1 Month"), KEY_GENERIC_PREV_MONTH }; struct binding gnmonth = { _("+1 Month"), KEY_GENERIC_NEXT_MONTH }; struct binding gpyear = { _("-1 Year"), KEY_GENERIC_PREV_YEAR }; struct binding gnyear = { _("+1 Year"), KEY_GENERIC_NEXT_YEAR }; struct binding today = { _("Today"), KEY_GENERIC_GOTO_TODAY }; struct binding nview = { _("Nxt View"), KEY_GENERIC_SCROLL_DOWN }; struct binding pview = { _("Prv View"), KEY_GENERIC_SCROLL_UP }; struct binding up = { _("Up"), KEY_MOVE_UP }; struct binding down = { _("Down"), KEY_MOVE_DOWN }; struct binding left = { _("Left"), KEY_MOVE_LEFT }; struct binding right = { _("Right"), KEY_MOVE_RIGHT }; struct binding weekb = { _("beg Week"), KEY_START_OF_WEEK }; struct binding weeke = { _("end Week"), KEY_END_OF_WEEK }; struct binding add = { _("Add Item"), KEY_ADD_ITEM }; struct binding del = { _("Del Item"), KEY_DEL_ITEM }; struct binding edit = { _("Edit Itm"), KEY_EDIT_ITEM }; struct binding view = { _("View"), KEY_VIEW_ITEM }; struct binding pipe = { _("Pipe"), KEY_PIPE_ITEM }; struct binding flag = { _("Flag Itm"), KEY_FLAG_ITEM }; struct binding rept = { _("Repeat"), KEY_REPEAT_ITEM }; struct binding enote = { _("EditNote"), KEY_EDIT_NOTE }; struct binding vnote = { _("ViewNote"), KEY_VIEW_NOTE }; struct binding rprio = { _("Prio.+"), KEY_RAISE_PRIORITY }; struct binding lprio = { _("Prio.-"), KEY_LOWER_PRIORITY }; struct binding othr = { _("OtherCmd"), KEY_GENERIC_OTHER_CMD }; struct binding *bindings_cal[] = { &help, &quit, &save, &chgvu, &nview, &pview, &up, &down, &left, &right, &togo, &import, &export, &weekb, &weeke, &appt, &todo, &gpday, &gnday, &gpweek, &gnweek, &gpmonth, &gnmonth, &gpyear, &gnyear, &draw, &today, &conf }; struct binding *bindings_apoint[] = { &help, &quit, &save, &chgvu, &import, &export, &add, &del, &edit, &view, &pipe, &draw, &rept, &flag, &enote, &vnote, &up, &down, &gpday, &gnday, &gpweek, &gnweek, &gpmonth, &gnmonth, &gpyear, &gnyear, &togo, &today, &conf, &appt, &todo, ©, &paste }; struct binding *bindings_todo[] = { &help, &quit, &save, &chgvu, &import, &export, &add, &del, &edit, &view, &pipe, &flag, &rprio, &lprio, &enote, &vnote, &up, &down, &gpday, &gnday, &gpweek, &gnweek, &gpmonth, &gnmonth, &gpyear, &gnyear, &togo, &today, &conf, &appt, &todo, &draw }; enum win active_panel = wins_slctd(); struct binding **bindings; int bindings_size; switch (active_panel) { case CAL: bindings = bindings_cal; bindings_size = sizeof(bindings_cal) / sizeof(bindings_cal[0]); break; case APP: bindings = bindings_apoint; bindings_size = sizeof(bindings_apoint) / sizeof(bindings_apoint[0]); break; case TOD: bindings = bindings_todo; bindings_size = sizeof(bindings_todo) / sizeof(bindings_todo[0]); break; default: EXIT(_("unknown panel")); /* NOTREACHED */ } keys_display_bindings_bar(win[STA].p, bindings, bindings_size, (KEYS_CMDS_PER_LINE * 2 - 1) * (status_page - 1), KEYS_CMDS_PER_LINE * 2, &othr); } /* Erase status bar. */ void wins_erase_status_bar(void) { erase_window_part(win[STA].p, 0, 0, col, STATUSHEIGHT); } /* Update the status bar page number to display other commands. */ void wins_other_status_page(int panel) { int nb_item, max_page; switch (panel) { case CAL: nb_item = NB_CAL_CMDS; break; case APP: nb_item = NB_APP_CMDS; break; case TOD: nb_item = NB_TOD_CMDS; break; default: EXIT(_("unknown panel")); /* NOTREACHED */ } max_page = nb_item / (KEYS_CMDS_PER_LINE * 2 - 1) + 1; status_page = (status_page % max_page) + 1; } /* Reset the status bar page. */ void wins_reset_status_page(void) { status_page = 1; } #undef NB_CAL_CMDS #undef NB_APP_CMDS #undef NB_TOD_CMDS calcurse-3.1.4/src/llist.h0000644000175000001440000001050212105444321012316 00000000000000/* * Calcurse - text-based organizer * * Copyright (c) 2004-2013 calcurse Development Team * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * - Redistributions of source code must retain the above * copyright notice, this list of conditions and the * following disclaimer. * * - Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the * following disclaimer in the documentation and/or other * materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * Send your feedback or comments to : misc@calcurse.org * Calcurse home page : http://calcurse.org * */ /* Linked lists. */ typedef struct llist_item llist_item_t; struct llist_item { struct llist_item *next; void *data; }; typedef struct llist llist_t; struct llist { struct llist_item *head; struct llist_item *tail; }; typedef int (*llist_fn_cmp_t) (void *, void *); typedef int (*llist_fn_match_t) (void *, void *); typedef void (*llist_fn_free_t) (void *); /* Initialization and deallocation. */ void llist_init(llist_t *); void llist_free(llist_t *); void llist_free_inner(llist_t *, llist_fn_free_t); #define LLIST_INIT(l) llist_init(l) #define LLIST_FREE(l) llist_free(l) #define LLIST_FREE_INNER(l, fn_free) \ llist_free_inner(l, (llist_fn_free_t)fn_free) /* Retrieving list items. */ llist_item_t *llist_first(llist_t *); llist_item_t *llist_nth(llist_t *, int); llist_item_t *llist_next(llist_item_t *); llist_item_t *llist_next_filter(llist_item_t *, void *, llist_fn_match_t); llist_item_t *llist_find_first(llist_t *, void *, llist_fn_match_t); llist_item_t *llist_find_next(llist_item_t *, void *, llist_fn_match_t); llist_item_t *llist_find_nth(llist_t *, int, void *, llist_fn_match_t); #define LLIST_FIRST(l) llist_first(l) #define LLIST_NTH(l, n) llist_nth(l, n) #define LLIST_NEXT(i) llist_next(i) #define LLIST_NEXT_FILTER(i, data, fn_match) \ llist_next_filter(i, data, (llist_fn_match_t)fn_match) #define LLIST_FIND_FIRST(l, data, fn_match) \ llist_find_first(l, data, (llist_fn_match_t)fn_match) #define LLIST_FIND_NEXT(i, data, fn_match) \ llist_find_next(i, data, (llist_fn_match_t)fn_match) #define LLIST_FIND_NTH(l, n, data, fn_match) \ llist_find_nth(l, n, data, (llist_fn_match_t)fn_match) #define LLIST_FOREACH(l, i) for (i = LLIST_FIRST (l); i; i = LLIST_NEXT (i)) #define LLIST_FIND_FOREACH(l, data, fn_match, i) \ for (i = LLIST_FIND_FIRST (l, data, fn_match); i; \ i = LLIST_FIND_NEXT (i, data, fn_match)) #define LLIST_FIND_FOREACH_CONT(l, data, fn_match, i) \ for (i = LLIST_FIND_FIRST (l, data, fn_match); i; \ i = LLIST_NEXT_FILTER (i, data, fn_match)) /* Accessing list item data. */ void *llist_get_data(llist_item_t *); #define LLIST_GET_DATA(i) llist_get_data(i) /* List manipulation. */ void llist_add(llist_t *, void *); void llist_add_sorted(llist_t *, void *, llist_fn_cmp_t); void llist_remove(llist_t *, llist_item_t *); #define LLIST_ADD(l, data) llist_add(l, data) #define LLIST_ADD_SORTED(l, data, fn_cmp) \ llist_add_sorted(l, data, (llist_fn_cmp_t)fn_cmp) #define LLIST_REMOVE(l, i) llist_remove(l, i) calcurse-3.1.4/src/custom.c0000644000175000001440000010061112105444350012477 00000000000000/* * Calcurse - text-based organizer * * Copyright (c) 2004-2013 calcurse Development Team * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * - Redistributions of source code must retain the above * copyright notice, this list of conditions and the * following disclaimer. * * - Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the * following disclaimer in the documentation and/or other * materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * Send your feedback or comments to : misc@calcurse.org * Calcurse home page : http://calcurse.org * */ #include #include #include #include #include "calcurse.h" struct attribute { int color[7]; int nocolor[7]; }; static struct attribute attr; /* * Define window attributes (for both color and non-color terminals): * ATTR_HIGHEST are for window titles * ATTR_HIGH are for month and days names * ATTR_MIDDLE are for the selected day inside calendar panel * ATTR_LOW are for days inside calendar panel which contains an event * ATTR_LOWEST are for current day inside calendar panel */ void custom_init_attr(void) { attr.color[ATTR_HIGHEST] = COLOR_PAIR(COLR_CUSTOM); attr.color[ATTR_HIGH] = COLOR_PAIR(COLR_HIGH); attr.color[ATTR_MIDDLE] = COLOR_PAIR(COLR_RED); attr.color[ATTR_LOW] = COLOR_PAIR(COLR_CYAN); attr.color[ATTR_LOWEST] = COLOR_PAIR(COLR_YELLOW); attr.color[ATTR_TRUE] = COLOR_PAIR(COLR_GREEN); attr.color[ATTR_FALSE] = COLOR_PAIR(COLR_RED); attr.nocolor[ATTR_HIGHEST] = A_BOLD; attr.nocolor[ATTR_HIGH] = A_REVERSE; attr.nocolor[ATTR_MIDDLE] = A_REVERSE; attr.nocolor[ATTR_LOW] = A_UNDERLINE; attr.nocolor[ATTR_LOWEST] = A_BOLD; attr.nocolor[ATTR_TRUE] = A_BOLD; attr.nocolor[ATTR_FALSE] = A_DIM; } /* Apply window attribute */ void custom_apply_attr(WINDOW * win, int attr_num) { if (colorize) wattron(win, attr.color[attr_num]); else wattron(win, attr.nocolor[attr_num]); } /* Remove window attribute */ void custom_remove_attr(WINDOW * win, int attr_num) { if (colorize) wattroff(win, attr.color[attr_num]); else wattroff(win, attr.nocolor[attr_num]); } /* Draws the configuration bar */ void custom_config_bar(void) { const int SMLSPC = 2; const int SPC = 15; custom_apply_attr(win[STA].p, ATTR_HIGHEST); mvwaddstr(win[STA].p, 0, 2, "Q"); mvwaddstr(win[STA].p, 1, 2, "G"); mvwaddstr(win[STA].p, 0, 2 + SPC, "L"); mvwaddstr(win[STA].p, 1, 2 + SPC, "S"); mvwaddstr(win[STA].p, 0, 2 + 2 * SPC, "C"); mvwaddstr(win[STA].p, 1, 2 + 2 * SPC, "N"); mvwaddstr(win[STA].p, 0, 2 + 3 * SPC, "K"); custom_remove_attr(win[STA].p, ATTR_HIGHEST); mvwaddstr(win[STA].p, 0, 2 + SMLSPC, _("Exit")); mvwaddstr(win[STA].p, 1, 2 + SMLSPC, _("General")); mvwaddstr(win[STA].p, 0, 2 + SPC + SMLSPC, _("Layout")); mvwaddstr(win[STA].p, 1, 2 + SPC + SMLSPC, _("Sidebar")); mvwaddstr(win[STA].p, 0, 2 + 2 * SPC + SMLSPC, _("Color")); mvwaddstr(win[STA].p, 1, 2 + 2 * SPC + SMLSPC, _("Notify")); mvwaddstr(win[STA].p, 0, 2 + 3 * SPC + SMLSPC, _("Keys")); wnoutrefresh(win[STA].p); wmove(win[STA].p, 0, 0); wins_doupdate(); } static void layout_selection_bar(void) { struct binding quit = { _("Exit"), KEY_GENERIC_QUIT }; struct binding select = { _("Select"), KEY_GENERIC_SELECT }; struct binding up = { _("Up"), KEY_MOVE_UP }; struct binding down = { _("Down"), KEY_MOVE_DOWN }; struct binding left = { _("Left"), KEY_MOVE_LEFT }; struct binding right = { _("Right"), KEY_MOVE_RIGHT }; struct binding help = { _("Help"), KEY_GENERIC_HELP }; struct binding *bindings[] = { &quit, &select, &up, &down, &left, &right, &help }; int bindings_size = sizeof(bindings) / sizeof(bindings[0]); keys_display_bindings_bar(win[STA].p, bindings, bindings_size, 0, bindings_size, NULL); } #define NBLAYOUTS 8 #define LAYOUTSPERCOL 2 /* Used to display available layouts in layout configuration menu. */ static void display_layout_config(struct window *lwin, int mark, int cursor) { #define CURSOR (32 | A_REVERSE) #define MARK 88 #define LAYOUTH 5 #define LAYOUTW 9 const char *box = "[ ]"; const int BOXSIZ = strlen(box); const int NBCOLS = NBLAYOUTS / LAYOUTSPERCOL; const int COLSIZ = LAYOUTW + BOXSIZ + 1; const int XSPC = (lwin->w - NBCOLS * COLSIZ) / (NBCOLS + 1); const int XOFST = (lwin->w - NBCOLS * (XSPC + COLSIZ)) / 2; const int YSPC = (lwin->h - 8 - LAYOUTSPERCOL * LAYOUTH) / (LAYOUTSPERCOL + 1); const int YOFST = (lwin->h - LAYOUTSPERCOL * (YSPC + LAYOUTH)) / 2; enum { YPOS, XPOS, NBPOS }; int pos[NBLAYOUTS][NBPOS]; const char *layouts[LAYOUTH][NBLAYOUTS] = { {"+---+---+", "+---+---+", "+---+---+", "+---+---+", "+---+---+", "+---+---+", "+---+---+", "+---+---+"}, {"| | c |", "| | t |", "| c | |", "| t | |", "| | c |", "| | a |", "| c | |", "| a | |"}, {"| a +---+", "| a +---+", "+---+ a |", "|---+ a |", "| t +---+", "| t +---+", "+---+ t |", "+---+ t |"}, {"| | t |", "| | c |", "| t | |", "| c | |", "| | a |", "| | c |", "| a | |", "| c | |"}, {"+---+---+", "+---+---+", "+---+---+", "+---+---+", "+---+---+", "+---+---+", "+---+---+", "+---+---+"} }; int i; for (i = 0; i < NBLAYOUTS; i++) { pos[i][YPOS] = YOFST + (i % LAYOUTSPERCOL) * (YSPC + LAYOUTH); pos[i][XPOS] = XOFST + (i / LAYOUTSPERCOL) * (XSPC + COLSIZ); } for (i = 0; i < NBLAYOUTS; i++) { int j; mvwaddstr(lwin->p, pos[i][YPOS] + 2, pos[i][XPOS], box); if (i == mark) custom_apply_attr(lwin->p, ATTR_HIGHEST); for (j = 0; j < LAYOUTH; j++) { mvwaddstr(lwin->p, pos[i][YPOS] + j, pos[i][XPOS] + BOXSIZ + 1, layouts[j][i]); } if (i == mark) custom_remove_attr(lwin->p, ATTR_HIGHEST); } mvwaddch(lwin->p, pos[mark][YPOS] + 2, pos[mark][XPOS] + 1, MARK); mvwaddch(lwin->p, pos[cursor][YPOS] + 2, pos[cursor][XPOS] + 1, CURSOR); layout_selection_bar(); wnoutrefresh(win[STA].p); wnoutrefresh(lwin->p); wins_doupdate(); if (notify_bar()) notify_update_bar(); } /* Choose the layout */ void custom_layout_config(void) { struct scrollwin hwin; struct window conf_win; int ch, mark, cursor, need_reset; const char *label = _("layout configuration"); const char *help_text = _("With this configuration menu, one can choose where panels will be\n" "displayed inside calcurse screen. \n" "It is possible to choose between eight different configurations.\n" "\nIn the configuration representations, letters correspond to:\n\n" " 'c' -> calendar panel\n\n" " 'a' -> appointment panel\n\n" " 't' -> todo panel\n\n"); conf_win.p = NULL; custom_confwin_init(&conf_win, label); cursor = mark = wins_layout() - 1; display_layout_config(&conf_win, mark, cursor); clear(); while ((ch = keys_getch(win[KEY].p, NULL, NULL)) != KEY_GENERIC_QUIT) { need_reset = 0; switch (ch) { case KEY_GENERIC_HELP: help_wins_init(&hwin, 0, 0, (notify_bar())? row - 3 : row - 2, col); mvwaddstr(hwin.pad.p, 1, 0, help_text); hwin.total_lines = 7; wins_scrollwin_display(&hwin); wgetch(hwin.win.p); wins_scrollwin_delete(&hwin); need_reset = 1; break; case KEY_GENERIC_SELECT: mark = cursor; break; case KEY_MOVE_DOWN: if (cursor % LAYOUTSPERCOL < LAYOUTSPERCOL - 1) cursor++; break; case KEY_MOVE_UP: if (cursor % LAYOUTSPERCOL > 0) cursor--; break; case KEY_MOVE_LEFT: if (cursor >= LAYOUTSPERCOL) cursor -= LAYOUTSPERCOL; break; case KEY_MOVE_RIGHT: if (cursor < NBLAYOUTS - LAYOUTSPERCOL) cursor += LAYOUTSPERCOL; break; case KEY_GENERIC_CANCEL: need_reset = 1; break; } if (resize) { resize = 0; endwin(); wins_refresh(); curs_set(0); need_reset = 1; } if (need_reset) custom_confwin_init(&conf_win, label); display_layout_config(&conf_win, mark, cursor); } wins_set_layout(mark + 1); delwin(conf_win.p); } #undef NBLAYOUTS #undef LAYOUTSPERCOL /* Sidebar configuration screen. */ void custom_sidebar_config(void) { struct scrollwin hwin; struct binding quit = { _("Exit"), KEY_GENERIC_QUIT }; struct binding inc = { _("Width +"), KEY_MOVE_UP }; struct binding dec = { _("Width -"), KEY_MOVE_DOWN }; struct binding help = { _("Help"), KEY_GENERIC_HELP }; struct binding *bindings[] = { &inc, &dec, &help, &quit }; const char *help_text = _ /* xgettext:no-c-format */ ("This configuration screen is used to change the width of the side bar.\n" "The side bar is the part of the screen which contains two panels:\n" "the calendar and, depending on the chosen layout, either the todo list\n" "or the appointment list.\n\n" "The side bar width can be up to 50% of the total screen width, but\n" "can't be smaller than " TOSTRING(SBARMINWIDTH) " characters wide.\n\n"); int ch, bindings_size; bindings_size = sizeof(bindings) / sizeof(bindings[0]); keys_display_bindings_bar(win[STA].p, bindings, bindings_size, 0, bindings_size, NULL); wins_doupdate(); while ((ch = keys_getch(win[KEY].p, NULL, NULL)) != KEY_GENERIC_QUIT) { switch (ch) { case KEY_MOVE_UP: wins_sbar_winc(); break; case KEY_MOVE_DOWN: wins_sbar_wdec(); break; case KEY_GENERIC_HELP: help_wins_init(&hwin, 0, 0, (notify_bar())? row - 3 : row - 2, col); mvwaddstr(hwin.pad.p, 1, 0, help_text); hwin.total_lines = 6; wins_scrollwin_display(&hwin); wgetch(hwin.win.p); wins_scrollwin_delete(&hwin); break; case KEY_RESIZE: break; default: continue; } if (resize) { resize = 0; wins_reset(); } else { wins_reinit_panels(); wins_update_border(FLAG_ALL); wins_update_panels(FLAG_ALL); keys_display_bindings_bar(win[STA].p, bindings, bindings_size, 0, bindings_size, NULL); wins_doupdate(); } } } static void set_confwin_attr(struct window *cwin) { cwin->h = (notify_bar())? row - 3 : row - 2; cwin->w = col; cwin->x = cwin->y = 0; } /* * Create a configuration window and initialize status and notification bar * (useful in case of window resize). */ void custom_confwin_init(struct window *confwin, const char *label) { if (confwin->p) { erase_window_part(confwin->p, confwin->x, confwin->y, confwin->x + confwin->w, confwin->y + confwin->h); delwin(confwin->p); } wins_get_config(); set_confwin_attr(confwin); confwin->p = newwin(confwin->h, col, 0, 0); box(confwin->p, 0, 0); wins_show(confwin->p, label); delwin(win[STA].p); win[STA].p = newwin(win[STA].h, win[STA].w, win[STA].y, win[STA].x); keypad(win[STA].p, TRUE); if (notify_bar()) { notify_reinit_bar(); notify_update_bar(); } } static void color_selection_bar(void) { struct binding quit = { _("Exit"), KEY_GENERIC_QUIT }; struct binding select = { _("Select"), KEY_GENERIC_SELECT }; struct binding nocolor = { _("No color"), KEY_GENERIC_CANCEL }; struct binding up = { _("Up"), KEY_MOVE_UP }; struct binding down = { _("Down"), KEY_MOVE_DOWN }; struct binding left = { _("Left"), KEY_MOVE_LEFT }; struct binding right = { _("Right"), KEY_MOVE_RIGHT }; struct binding *bindings[] = { &quit, &nocolor, &up, &down, &left, &right, &select }; int bindings_size = sizeof(bindings) / sizeof(bindings[0]); keys_display_bindings_bar(win[STA].p, bindings, bindings_size, 0, bindings_size, NULL); } /* * Used to display available colors in color configuration menu. * This is useful for window resizing. */ static void display_color_config(struct window *cwin, int *mark_fore, int *mark_back, int cursor, int theme_changed) { #define SIZE (2 * (NBUSERCOLORS + 1)) #define DEFAULTCOLOR 255 #define DEFAULTCOLOR_EXT -1 #define CURSOR (32 | A_REVERSE) #define MARK 88 const char *fore_txt = _("Foreground"); const char *back_txt = _("Background"); const char *default_txt = _("(terminal's default)"); const char *bar = " "; const char *box = "[ ]"; const unsigned Y = 3; const unsigned XOFST = 5; const unsigned YSPC = (cwin->h - 8) / (NBUSERCOLORS + 1); const unsigned BARSIZ = strlen(bar); const unsigned BOXSIZ = strlen(box); const unsigned XSPC = (cwin->w - 2 * BARSIZ - 2 * BOXSIZ - 6) / 3; const unsigned XFORE = XSPC; const unsigned XBACK = 2 * XSPC + BOXSIZ + XOFST + BARSIZ; enum { YPOS, XPOS, NBPOS }; unsigned i; int pos[SIZE][NBPOS]; short colr_fore, colr_back; int colr[SIZE] = { COLR_RED, COLR_GREEN, COLR_YELLOW, COLR_BLUE, COLR_MAGENTA, COLR_CYAN, COLR_DEFAULT, COLR_RED, COLR_GREEN, COLR_YELLOW, COLR_BLUE, COLR_MAGENTA, COLR_CYAN, COLR_DEFAULT }; for (i = 0; i < NBUSERCOLORS + 1; i++) { pos[i][YPOS] = Y + YSPC * (i + 1); pos[NBUSERCOLORS + i + 1][YPOS] = Y + YSPC * (i + 1); pos[i][XPOS] = XFORE; pos[NBUSERCOLORS + i + 1][XPOS] = XBACK; } if (colorize) { if (theme_changed) { pair_content(colr[*mark_fore], &colr_fore, 0L); if (colr_fore == 255) colr_fore = -1; pair_content(colr[*mark_back], &colr_back, 0L); if (colr_back == 255) colr_back = -1; init_pair(COLR_CUSTOM, colr_fore, colr_back); } else { /* Retrieve the actual color theme. */ pair_content(COLR_CUSTOM, &colr_fore, &colr_back); if ((colr_fore == DEFAULTCOLOR) || (colr_fore == DEFAULTCOLOR_EXT)) *mark_fore = NBUSERCOLORS; else for (i = 0; i < NBUSERCOLORS + 1; i++) if (colr_fore == colr[i]) *mark_fore = i; if ((colr_back == DEFAULTCOLOR) || (colr_back == DEFAULTCOLOR_EXT)) *mark_back = SIZE - 1; else for (i = 0; i < NBUSERCOLORS + 1; i++) if (colr_back == colr[NBUSERCOLORS + 1 + i]) *mark_back = NBUSERCOLORS + 1 + i; } } /* color boxes */ for (i = 0; i < SIZE - 1; i++) { mvwaddstr(cwin->p, pos[i][YPOS], pos[i][XPOS], box); wattron(cwin->p, COLOR_PAIR(colr[i]) | A_REVERSE); mvwaddstr(cwin->p, pos[i][YPOS], pos[i][XPOS] + XOFST, bar); wattroff(cwin->p, COLOR_PAIR(colr[i]) | A_REVERSE); } /* Terminal's default color */ i = SIZE - 1; mvwaddstr(cwin->p, pos[i][YPOS], pos[i][XPOS], box); wattron(cwin->p, COLOR_PAIR(colr[i])); mvwaddstr(cwin->p, pos[i][YPOS], pos[i][XPOS] + XOFST, bar); wattroff(cwin->p, COLOR_PAIR(colr[i])); mvwaddstr(cwin->p, pos[NBUSERCOLORS][YPOS] + 1, pos[NBUSERCOLORS][XPOS] + XOFST, default_txt); mvwaddstr(cwin->p, pos[SIZE - 1][YPOS] + 1, pos[SIZE - 1][XPOS] + XOFST, default_txt); custom_apply_attr(cwin->p, ATTR_HIGHEST); mvwaddstr(cwin->p, Y, XFORE + XOFST, fore_txt); mvwaddstr(cwin->p, Y, XBACK + XOFST, back_txt); custom_remove_attr(cwin->p, ATTR_HIGHEST); if (colorize) { mvwaddch(cwin->p, pos[*mark_fore][YPOS], pos[*mark_fore][XPOS] + 1, MARK); mvwaddch(cwin->p, pos[*mark_back][YPOS], pos[*mark_back][XPOS] + 1, MARK); } mvwaddch(cwin->p, pos[cursor][YPOS], pos[cursor][XPOS] + 1, CURSOR); color_selection_bar(); wnoutrefresh(win[STA].p); wnoutrefresh(cwin->p); wins_doupdate(); if (notify_bar()) notify_update_bar(); } /* Color theme configuration. */ void custom_color_config(void) { struct window conf_win; int ch, cursor, need_reset, theme_changed; int mark_fore, mark_back; const char *label = _("color theme"); conf_win.p = 0; custom_confwin_init(&conf_win, label); mark_fore = NBUSERCOLORS; mark_back = SIZE - 1; cursor = 0; theme_changed = 0; display_color_config(&conf_win, &mark_fore, &mark_back, cursor, theme_changed); clear(); while ((ch = keys_getch(win[KEY].p, NULL, NULL)) != KEY_GENERIC_QUIT) { need_reset = 0; theme_changed = 0; switch (ch) { case KEY_GENERIC_SELECT: colorize = 1; need_reset = 1; theme_changed = 1; if (cursor > NBUSERCOLORS) mark_back = cursor; else mark_fore = cursor; break; case KEY_MOVE_DOWN: if (cursor < SIZE - 1) ++cursor; break; case KEY_MOVE_UP: if (cursor > 0) --cursor; break; case KEY_MOVE_LEFT: if (cursor > NBUSERCOLORS) cursor -= (NBUSERCOLORS + 1); break; case KEY_MOVE_RIGHT: if (cursor <= NBUSERCOLORS) cursor += (NBUSERCOLORS + 1); break; case KEY_GENERIC_CANCEL: colorize = 0; need_reset = 1; break; } if (resize) { resize = 0; endwin(); wins_refresh(); curs_set(0); need_reset = 1; } if (need_reset) custom_confwin_init(&conf_win, label); display_color_config(&conf_win, &mark_fore, &mark_back, cursor, theme_changed); } delwin(conf_win.p); } /* Prints the general options. */ static int print_general_options(WINDOW * win) { enum { AUTO_SAVE, AUTO_GC, PERIODIC_SAVE, CONFIRM_QUIT, CONFIRM_DELETE, SYSTEM_DIAGS, PROGRESS_BAR, FIRST_DAY_OF_WEEK, OUTPUT_DATE_FMT, INPUT_DATE_FMT, NB_OPTIONS }; const int XPOS = 1; const int YOFF = 3; int y; char *opt[NB_OPTIONS] = { "general.autosave = ", "general.autogc = ", "general.periodicsave = ", "general.confirmquit = ", "general.confirmdelete = ", "general.systemdialogs = ", "general.progressbar = ", "general.firstdayofweek = ", "format.outputdate = ", "format.inputdate = " }; y = 0; mvwprintw(win, y, XPOS, "[1] %s ", opt[AUTO_SAVE]); print_bool_option_incolor(win, conf.auto_save, y, XPOS + 4 + strlen(opt[AUTO_SAVE])); mvwaddstr(win, y + 1, XPOS, _("(if set to YES, automatic save is done when quitting)")); y += YOFF; mvwprintw(win, y, XPOS, "[2] %s ", opt[AUTO_GC]); print_bool_option_incolor(win, conf.auto_gc, y, XPOS + 4 + strlen(opt[AUTO_GC])); mvwaddstr(win, y + 1, XPOS, _("(run the garbage collector when quitting)")); y += YOFF; mvwprintw(win, y, XPOS, "[3] %s ", opt[PERIODIC_SAVE]); custom_apply_attr(win, ATTR_HIGHEST); mvwprintw(win, y, XPOS + 4 + strlen(opt[PERIODIC_SAVE]), "%d", conf.periodic_save); custom_remove_attr(win, ATTR_HIGHEST); mvwaddstr(win, y + 1, XPOS, _("(if not null, automatically save data every 'periodic_save' " "minutes)")); y += YOFF; mvwprintw(win, y, XPOS, "[4] %s ", opt[CONFIRM_QUIT]); print_bool_option_incolor(win, conf.confirm_quit, y, XPOS + 4 + strlen(opt[CONFIRM_QUIT])); mvwaddstr(win, y + 1, XPOS, _("(if set to YES, confirmation is required before quitting)")); y += YOFF; mvwprintw(win, y, XPOS, "[5] %s ", opt[CONFIRM_DELETE]); print_bool_option_incolor(win, conf.confirm_delete, y, XPOS + 4 + strlen(opt[CONFIRM_DELETE])); mvwaddstr(win, y + 1, XPOS, _("(if set to YES, confirmation is required " "before deleting an event)")); y += YOFF; mvwprintw(win, y, XPOS, "[6] %s ", opt[SYSTEM_DIAGS]); print_bool_option_incolor(win, conf.system_dialogs, y, XPOS + 4 + strlen(opt[SYSTEM_DIAGS])); mvwaddstr(win, y + 1, XPOS, _("(if set to YES, messages about loaded " "and saved data will be displayed)")); y += YOFF; mvwprintw(win, y, XPOS, "[7] %s ", opt[PROGRESS_BAR]); print_bool_option_incolor(win, conf.progress_bar, y, XPOS + 4 + strlen(opt[PROGRESS_BAR])); mvwaddstr(win, y + 1, XPOS, _("(if set to YES, progress bar will be displayed " "when saving data)")); y += YOFF; mvwprintw(win, y, XPOS, "[8] %s ", opt[FIRST_DAY_OF_WEEK]); custom_apply_attr(win, ATTR_HIGHEST); mvwaddstr(win, y, XPOS + 4 + strlen(opt[FIRST_DAY_OF_WEEK]), calendar_week_begins_on_monday()? _("Monday") : _("Sunday")); custom_remove_attr(win, ATTR_HIGHEST); mvwaddstr(win, y + 1, XPOS, _("(specifies the first day of week in the calendar view)")); y += YOFF; mvwprintw(win, y, XPOS, "[9] %s ", opt[OUTPUT_DATE_FMT]); custom_apply_attr(win, ATTR_HIGHEST); mvwaddstr(win, y, XPOS + 4 + strlen(opt[OUTPUT_DATE_FMT]), conf.output_datefmt); custom_remove_attr(win, ATTR_HIGHEST); mvwaddstr(win, y + 1, XPOS, _("(Format of the date to be displayed in non-interactive mode)")); y += YOFF; mvwprintw(win, y, XPOS, "[0] %s ", opt[INPUT_DATE_FMT]); custom_apply_attr(win, ATTR_HIGHEST); mvwprintw(win, y, XPOS + 4 + strlen(opt[INPUT_DATE_FMT]), "%d", conf.input_datefmt); custom_remove_attr(win, ATTR_HIGHEST); mvwaddstr(win, y + 1, XPOS, _("(Format to be used when entering a date: ")); mvwprintw(win, y + 2, XPOS, " (1) %s, (2) %s, (3) %s, (4) %s)", datefmt_str[0], datefmt_str[1], datefmt_str[2], datefmt_str[3]); return y + YOFF; } void custom_set_swsiz(struct scrollwin *sw) { sw->win.x = 0; sw->win.y = 0; sw->win.h = (notify_bar())? row - 3 : row - 2; sw->win.w = col; sw->pad.x = 1; sw->pad.y = 3; sw->pad.h = BUFSIZ; sw->pad.w = col - 2 * sw->pad.x - 1; } /* General configuration. */ void custom_general_config(void) { struct scrollwin cwin; const char *number_str = _("Enter an option number to change its value"); const char *keys = _("(Press '^P' or '^N' to move up or down, 'Q' to quit)"); const char *output_datefmt_str = _("Enter the date format (see 'man 3 strftime' for possible formats) "); const char *input_datefmt_prefix = _("Enter the date format: "); const char *periodic_save_str = _("Enter the delay, in minutes, between automatic saves (0 to disable) "); int ch; int val; char *buf; clear(); custom_set_swsiz(&cwin); cwin.label = _("general options"); wins_scrollwin_init(&cwin); wins_show(cwin.win.p, cwin.label); status_mesg(number_str, keys); cwin.total_lines = print_general_options(cwin.pad.p); wins_scrollwin_display(&cwin); buf = mem_malloc(BUFSIZ); while ((ch = wgetch(win[KEY].p)) != 'q') { buf[0] = '\0'; switch (ch) { case CTRL('N'): wins_scrollwin_down(&cwin, 1); break; case CTRL('P'): wins_scrollwin_up(&cwin, 1); break; case '1': conf.auto_save = !conf.auto_save; break; case '2': conf.auto_gc = !conf.auto_gc; break; case '3': status_mesg(periodic_save_str, ""); if (updatestring(win[STA].p, &buf, 0, 1) == 0) { val = atoi(buf); if (val >= 0) conf.periodic_save = val; if (conf.periodic_save > 0) io_start_psave_thread(); else if (conf.periodic_save == 0) io_stop_psave_thread(); } status_mesg(number_str, keys); break; case '4': conf.confirm_quit = !conf.confirm_quit; break; case '5': conf.confirm_delete = !conf.confirm_delete; break; case '6': conf.system_dialogs = !conf.system_dialogs; break; case '7': conf.progress_bar = !conf.progress_bar; break; case '8': calendar_change_first_day_of_week(); break; case '9': status_mesg(output_datefmt_str, ""); strncpy(buf, conf.output_datefmt, strlen(conf.output_datefmt) + 1); if (updatestring(win[STA].p, &buf, 0, 1) == 0) { strncpy(conf.output_datefmt, buf, strlen(buf) + 1); } status_mesg(number_str, keys); break; case '0': val = status_ask_simplechoice(input_datefmt_prefix, datefmt_str, DATE_FORMATS); if (val != -1) conf.input_datefmt = val; break; } if (resize) { resize = 0; wins_reset(); wins_scrollwin_delete(&cwin); custom_set_swsiz(&cwin); wins_scrollwin_init(&cwin); wins_show(cwin.win.p, cwin.label); cwin.first_visible_line = 0; delwin(win[STA].p); win[STA].p = newwin(win[STA].h, win[STA].w, win[STA].y, win[STA].x); keypad(win[STA].p, TRUE); if (notify_bar()) { notify_reinit_bar(); notify_update_bar(); } } status_mesg(number_str, keys); cwin.total_lines = print_general_options(cwin.pad.p); wins_scrollwin_display(&cwin); } mem_free(buf); wins_scrollwin_delete(&cwin); } static void print_key_incolor(WINDOW * win, const char *option, int pos_y, int pos_x) { const int color = ATTR_HIGHEST; RETURN_IF(!option, _("Undefined option!")); custom_apply_attr(win, color); mvwprintw(win, pos_y, pos_x, "%s ", option); custom_remove_attr(win, color); } static int print_keys_bindings(WINDOW * win, int selected_row, int selected_elm, int yoff) { const int XPOS = 1; const int EQUALPOS = 23; const int KEYPOS = 25; int noelm, action, y; noelm = y = 0; for (action = 0; action < NBKEYS; action++) { char actionstr[BUFSIZ]; int nbkeys; nbkeys = keys_action_count_keys(action); snprintf(actionstr, BUFSIZ, "%s", keys_get_label(action)); if (action == selected_row) custom_apply_attr(win, ATTR_HIGHEST); mvwprintw(win, y, XPOS, "%s ", actionstr); mvwaddstr(win, y, EQUALPOS, "="); if (nbkeys == 0) mvwaddstr(win, y, KEYPOS, _("undefined")); if (action == selected_row) custom_remove_attr(win, ATTR_HIGHEST); if (nbkeys > 0) { if (action == selected_row) { const char *key; int pos; pos = KEYPOS; while ((key = keys_action_nkey(action, noelm)) != NULL) { if (noelm == selected_elm) print_key_incolor(win, key, y, pos); else mvwprintw(win, y, pos, "%s ", key); noelm++; pos += strlen(key) + 1; } } else { mvwaddstr(win, y, KEYPOS, keys_action_allkeys(action)); } } y += yoff; } return noelm; } static void custom_keys_config_bar(void) { struct binding quit = { _("Exit"), KEY_GENERIC_QUIT }; struct binding info = { _("Key info"), KEY_GENERIC_HELP }; struct binding add = { _("Add key"), KEY_ADD_ITEM }; struct binding del = { _("Del key"), KEY_DEL_ITEM }; struct binding up = { _("Up"), KEY_MOVE_UP }; struct binding down = { _("Down"), KEY_MOVE_DOWN }; struct binding left = { _("Prev Key"), KEY_MOVE_LEFT }; struct binding right = { _("Next Key"), KEY_MOVE_RIGHT }; struct binding *bindings[] = { &quit, &info, &add, &del, &up, &down, &left, &right }; int bindings_size = sizeof(bindings) / sizeof(bindings[0]); keys_display_bindings_bar(win[STA].p, bindings, bindings_size, 0, bindings_size, NULL); } void custom_keys_config(void) { struct scrollwin kwin; int selrow, selelm, firstrow, lastrow, nbrowelm, nbdisplayed; int keyval, used, not_recognized; const char *keystr; WINDOW *grabwin; const int LINESPERKEY = 2; const int LABELLINES = 3; clear(); custom_set_swsiz(&kwin); nbdisplayed = (kwin.win.h - LABELLINES) / LINESPERKEY; kwin.label = _("keys configuration"); wins_scrollwin_init(&kwin); wins_show(kwin.win.p, kwin.label); custom_keys_config_bar(); selrow = selelm = 0; nbrowelm = print_keys_bindings(kwin.pad.p, selrow, selelm, LINESPERKEY); kwin.total_lines = NBKEYS * LINESPERKEY; wins_scrollwin_display(&kwin); firstrow = 0; lastrow = firstrow + nbdisplayed - 1; for (;;) { int ch; ch = keys_getch(win[KEY].p, NULL, NULL); switch (ch) { case KEY_MOVE_UP: if (selrow > 0) { selrow--; selelm = 0; if (selrow == firstrow) { firstrow--; lastrow--; wins_scrollwin_up(&kwin, LINESPERKEY); } } break; case KEY_MOVE_DOWN: if (selrow < NBKEYS - 1) { selrow++; selelm = 0; if (selrow == lastrow) { firstrow++; lastrow++; wins_scrollwin_down(&kwin, LINESPERKEY); } } break; case KEY_MOVE_LEFT: if (selelm > 0) selelm--; break; case KEY_MOVE_RIGHT: if (selelm < nbrowelm - 1) selelm++; break; case KEY_GENERIC_HELP: keys_popup_info(selrow); break; case KEY_ADD_ITEM: #define WINROW 10 #define WINCOL 50 do { used = 0; grabwin = popup(WINROW, WINCOL, (row - WINROW) / 2, (col - WINCOL) / 2, _("Press the key you want to assign to:"), keys_get_label(selrow), 0); keyval = wgetch(grabwin); /* First check if this key would be recognized by calcurse. */ if (keys_str2int(keys_int2str(keyval)) == -1) { not_recognized = 1; WARN_MSG(_("This key is not yet recognized by calcurse, " "please choose another one.")); werase(kwin.pad.p); nbrowelm = print_keys_bindings(kwin.pad.p, selrow, selelm, LINESPERKEY); wins_scrollwin_display(&kwin); continue; } else not_recognized = 0; /* Is the binding used by this action already? If so, just end the reassignment */ if (selrow == keys_get_action(keyval)) { delwin(grabwin); break; } used = keys_assign_binding(keyval, selrow); if (used) { enum key action; action = keys_get_action(keyval); WARN_MSG(_("This key is already in use for %s, " "please choose another one."), keys_get_label(action)); werase(kwin.pad.p); nbrowelm = print_keys_bindings(kwin.pad.p, selrow, selelm, LINESPERKEY); wins_scrollwin_display(&kwin); } delwin(grabwin); } while (used || not_recognized); nbrowelm++; if (selelm < nbrowelm - 1) selelm++; #undef WINROW #undef WINCOL break; case KEY_DEL_ITEM: keystr = keys_action_nkey(selrow, selelm); keyval = keys_str2int(keystr); keys_remove_binding(keyval, selrow); nbrowelm--; if (selelm > 0 && selelm <= nbrowelm) selelm--; break; case KEY_GENERIC_QUIT: if (keys_check_missing_bindings() != 0) { WARN_MSG(_("Some actions do not have any associated " "key bindings!")); } wins_scrollwin_delete(&kwin); return; } custom_keys_config_bar(); werase(kwin.pad.p); nbrowelm = print_keys_bindings(kwin.pad.p, selrow, selelm, LINESPERKEY); wins_scrollwin_display(&kwin); } } void custom_config_main(void) { const char *no_color_support = _("Sorry, colors are not supported by your terminal\n" "(Press [ENTER] to continue)"); int ch; int old_layout; custom_config_bar(); while ((ch = wgetch(win[KEY].p)) != 'q') { switch (ch) { case 'C': case 'c': if (has_colors()) custom_color_config(); else { colorize = 0; wins_erase_status_bar(); mvwaddstr(win[STA].p, 0, 0, no_color_support); wgetch(win[KEY].p); } break; case 'L': case 'l': old_layout = wins_layout(); custom_layout_config(); if (wins_layout() != old_layout) wins_reset(); break; case 'G': case 'g': custom_general_config(); break; case 'N': case 'n': notify_config_bar(); break; case 'K': case 'k': custom_keys_config(); break; case 's': case 'S': custom_sidebar_config(); break; default: continue; } wins_update(FLAG_ALL); wins_erase_status_bar(); custom_config_bar(); } } calcurse-3.1.4/src/Makefile.am0000644000175000001440000000114712105444321013057 00000000000000AUTOMAKE_OPTIONS = foreign bin_PROGRAMS = calcurse AM_CFLAGS = -std=c99 -pedantic -D_POSIX_C_SOURCE=200809L calcurse_SOURCES = \ calcurse.c \ calcurse.h \ htable.h \ llist.h \ llist_ts.h \ sha1.h \ apoint.c \ args.c \ calendar.c \ config.c \ custom.c \ day.c \ event.c \ getstring.c \ help.c \ ical.c \ interaction.c \ io.c \ keys.c \ llist.c \ note.c \ notify.c \ pcal.c \ recur.c \ sha1.c \ sigs.c \ todo.c \ utf8.c \ utils.c \ vars.c \ wins.c \ mem.c \ dmon.c LDADD = @LTLIBINTL@ datadir = @datadir@ localedir = $(datadir)/locale DEFS = -DLOCALEDIR=\"$(localedir)\" @DEFS@ calcurse-3.1.4/src/interaction.c0000644000175000001440000006102212105444321013504 00000000000000/* * Calcurse - text-based organizer * * Copyright (c) 2004-2013 calcurse Development Team * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * - Redistributions of source code must retain the above * copyright notice, this list of conditions and the * following disclaimer. * * - Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the * following disclaimer in the documentation and/or other * materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * Send your feedback or comments to : misc@calcurse.org * Calcurse home page : http://calcurse.org * */ #include "calcurse.h" struct day_item day_cut[38] = { { 0, 0, { NULL } } }; /* Request the user to enter a new time. */ static int day_edit_time(int time, unsigned *new_hour, unsigned *new_minute) { char *timestr = date_sec2date_str(time, "%H:%M"); const char *msg_time = _("Enter the new time ([hh:mm] or [hhmm]) : "); const char *enter_str = _("Press [Enter] to continue"); const char *fmt_msg = _("You entered an invalid time, should be [hh:mm] or [hhmm]"); for (;;) { status_mesg(msg_time, ""); if (updatestring(win[STA].p, ×tr, 0, 1) == GETSTRING_VALID) { if (parse_time(timestr, new_hour, new_minute) == 1) { mem_free(timestr); return 1; } else { status_mesg(fmt_msg, enter_str); wgetch(win[KEY].p); } } else return 0; } } /* Request the user to enter a new time or duration. */ static int day_edit_duration(int start, int dur, unsigned *new_duration) { char *timestr = date_sec2date_str(start + dur, "%H:%M"); const char *msg_time = _ ("Enter new end time ([hh:mm], [hhmm]) or duration ([+hh:mm], [+xxxdxxhxxm] or [+mm]) : "); const char *enter_str = _("Press [Enter] to continue"); const char *fmt_msg = _("You entered an invalid time, should be [hh:mm] or [hhmm]"); long newtime; unsigned hr, mn; for (;;) { status_mesg(msg_time, ""); if (updatestring(win[STA].p, ×tr, 0, 1) == GETSTRING_VALID) { if (*timestr == '+' && parse_duration(timestr + 1, new_duration) == 1) { *new_duration *= MININSEC; break; } else if (parse_time(timestr, &hr, &mn) == 1) { newtime = update_time_in_date(start + dur, hr, mn); *new_duration = (newtime > start) ? newtime - start : DAYINSEC + newtime - start; break; } else { status_mesg(fmt_msg, enter_str); wgetch(win[KEY].p); } } else return 0; } mem_free(timestr); return 1; } /* Request the user to enter a new end time or duration. */ static void update_start_time(long *start, long *dur) { long newtime; unsigned hr, mn; int valid_date; const char *msg_wrong_time = _("Invalid time: start time must be before end time!"); const char *msg_enter = _("Press [Enter] to continue"); do { if (!day_edit_time(*start, &hr, &mn)) break; newtime = update_time_in_date(*start, hr, mn); if (newtime < *start + *dur) { *dur -= (newtime - *start); *start = newtime; valid_date = 1; } else { status_mesg(msg_wrong_time, msg_enter); wgetch(win[KEY].p); valid_date = 0; } } while (valid_date == 0); } static void update_duration(long *start, long *dur) { unsigned newdur; if (day_edit_duration(*start, *dur, &newdur)) *dur = newdur; } static void update_desc(char **desc) { status_mesg(_("Enter the new item description:"), ""); updatestring(win[STA].p, desc, 0, 1); } static void update_rept(struct rpt **rpt, const long start) { int newtype, newfreq, date_entered; long newuntil; char outstr[BUFSIZ]; char *freqstr, *timstr; const char *msg_rpt_prefix = _("Enter the new repetition type:"); const char *msg_rpt_daily = _("(d)aily"); const char *msg_rpt_weekly = _("(w)eekly"); const char *msg_rpt_monthly = _("(m)onthly"); const char *msg_rpt_yearly = _("(y)early"); /* Find the current repetition type. */ const char *rpt_current; char msg_rpt_current[BUFSIZ]; switch (recur_def2char((*rpt)->type)) { case 'D': rpt_current = msg_rpt_daily; break; case 'W': rpt_current = msg_rpt_weekly; break; case 'M': rpt_current = msg_rpt_monthly; break; case 'Y': rpt_current = msg_rpt_yearly; break; default: /* NOTREACHED, but makes the compiler happier. */ rpt_current = msg_rpt_daily; } snprintf(msg_rpt_current, BUFSIZ, _("(currently using %s)"), rpt_current); char msg_rpt_asktype[BUFSIZ]; snprintf(msg_rpt_asktype, BUFSIZ, "%s %s, %s, %s, %s ? %s", msg_rpt_prefix, msg_rpt_daily, msg_rpt_weekly, msg_rpt_monthly, msg_rpt_yearly, msg_rpt_current); const char *msg_rpt_choice = _("[dwmy]"); const char *msg_wrong_freq = _("The frequence you entered is not valid."); const char *msg_wrong_time = _("Invalid time: start time must be before end time!"); const char *msg_wrong_date = _("The entered date is not valid."); const char *msg_fmts = _("Possible formats are [%s] or '0' for an endless repetition."); const char *msg_enter = _("Press [Enter] to continue"); switch (status_ask_choice(msg_rpt_asktype, msg_rpt_choice, 4)) { case 1: newtype = 'D'; break; case 2: newtype = 'W'; break; case 3: newtype = 'M'; break; case 4: newtype = 'Y'; break; default: return; } do { status_mesg(_("Enter the new repetition frequence:"), ""); freqstr = mem_malloc(BUFSIZ); snprintf(freqstr, BUFSIZ, "%d", (*rpt)->freq); if (updatestring(win[STA].p, &freqstr, 0, 1) == GETSTRING_VALID) { newfreq = atoi(freqstr); mem_free(freqstr); if (newfreq == 0) { status_mesg(msg_wrong_freq, msg_enter); wgetch(win[KEY].p); } } else { mem_free(freqstr); return; } } while (newfreq == 0); do { snprintf(outstr, BUFSIZ, _("Enter the new ending date: [%s] or '0'"), DATEFMT_DESC(conf.input_datefmt)); status_mesg(outstr, ""); timstr = date_sec2date_str((*rpt)->until, DATEFMT(conf.input_datefmt)); if (updatestring(win[STA].p, &timstr, 0, 1) != GETSTRING_VALID) { mem_free(timstr); return; } if (strcmp(timstr, "0") == 0) { newuntil = 0; date_entered = 1; } else { struct tm lt; time_t t; struct date new_date; int newmonth, newday, newyear; if (parse_date(timstr, conf.input_datefmt, &newyear, &newmonth, &newday, calendar_get_slctd_day())) { t = start; localtime_r(&t, <); new_date.dd = newday; new_date.mm = newmonth; new_date.yyyy = newyear; newuntil = date2sec(new_date, lt.tm_hour, lt.tm_min); if (newuntil < start) { status_mesg(msg_wrong_time, msg_enter); wgetch(win[KEY].p); date_entered = 0; } else date_entered = 1; } else { snprintf(outstr, BUFSIZ, msg_fmts, DATEFMT_DESC(conf.input_datefmt)); status_mesg(msg_wrong_date, outstr); wgetch(win[KEY].p); date_entered = 0; } } } while (date_entered == 0); mem_free(timstr); (*rpt)->type = recur_char2def(newtype); (*rpt)->freq = newfreq; (*rpt)->until = newuntil; } /* Edit an already existing item. */ void interact_day_item_edit(void) { struct day_item *p; struct recur_event *re; struct event *e; struct recur_apoint *ra; struct apoint *a; int need_check_notify = 0; p = day_get_item(apoint_hilt()); switch (p->type) { case RECUR_EVNT: re = p->item.rev; const char *choice_recur_evnt[2] = { _("Description"), _("Repetition"), }; switch (status_ask_simplechoice(_("Edit: "), choice_recur_evnt, 2)) { case 1: update_desc(&re->mesg); break; case 2: update_rept(&re->rpt, re->day); break; default: return; } break; case EVNT: e = p->item.ev; update_desc(&e->mesg); break; case RECUR_APPT: ra = p->item.rapt; const char *choice_recur_appt[4] = { _("Start time"), _("End time"), _("Description"), _("Repetition"), }; switch (status_ask_simplechoice(_("Edit: "), choice_recur_appt, 4)) { case 1: need_check_notify = 1; update_start_time(&ra->start, &ra->dur); break; case 2: update_duration(&ra->start, &ra->dur); break; case 3: if (notify_bar()) need_check_notify = notify_same_recur_item(ra); update_desc(&ra->mesg); break; case 4: need_check_notify = 1; update_rept(&ra->rpt, ra->start); break; default: return; } break; case APPT: a = p->item.apt; const char *choice_appt[3] = { _("Start time"), _("End time"), _("Description"), }; switch (status_ask_simplechoice(_("Edit: "), choice_appt, 3)) { case 1: need_check_notify = 1; update_start_time(&a->start, &a->dur); break; case 2: update_duration(&a->start, &a->dur); break; case 3: if (notify_bar()) need_check_notify = notify_same_item(a->start); update_desc(&a->mesg); break; default: return; } break; } calendar_monthly_view_cache_set_invalid(); if (need_check_notify) notify_check_next_app(1); } /* Pipe an appointment or event to an external program. */ void interact_day_item_pipe(void) { char cmd[BUFSIZ] = ""; char const *arg[] = { cmd, NULL }; int pout; int pid; FILE *fpout; struct day_item *p; status_mesg(_("Pipe item to external command:"), ""); if (getstring(win[STA].p, cmd, BUFSIZ, 0, 1) != GETSTRING_VALID) return; wins_prepare_external(); if ((pid = shell_exec(NULL, &pout, *arg, arg))) { fpout = fdopen(pout, "w"); p = day_get_item(apoint_hilt()); switch (p->type) { case RECUR_EVNT: recur_event_write(p->item.rev, fpout); break; case EVNT: event_write(p->item.ev, fpout); break; case RECUR_APPT: recur_apoint_write(p->item.rapt, fpout); break; case APPT: apoint_write(p->item.apt, fpout); break; } fclose(fpout); child_wait(NULL, &pout, pid); press_any_key(); } wins_unprepare_external(); } /* * Add an item in either the appointment or the event list, * depending if the start time is entered or not. */ void interact_day_item_add(void) { #define LTIME 6 #define LDUR 12 const char *mesg_1 = _("Enter start time ([hh:mm] or [hhmm]), leave blank for an all-day event : "); const char *mesg_2 = _ ("Enter end time ([hh:mm] or [hhmm]) or duration ([+hh:mm], [+xxxdxxhxxm] or [+mm]) : "); const char *mesg_3 = _("Enter description :"); const char *format_message_1 = _("You entered an invalid start time, should be [hh:mm] or [hhmm]"); const char *format_message_2 = _ ("Invalid end time/duration, should be [hh:mm], [hhmm], [+hh:mm], [+xxxdxxhxxm] or [+mm]"); const char *enter_str = _("Press [Enter] to continue"); int Id = 1; char item_time[LDUR] = ""; char item_mesg[BUFSIZ] = ""; long apoint_start; unsigned heures, minutes; unsigned apoint_duration; unsigned end_h, end_m; int is_appointment = 1; /* Get the starting time */ for (;;) { status_mesg(mesg_1, ""); if (getstring(win[STA].p, item_time, LTIME, 0, 1) != GETSTRING_ESC) { if (strlen(item_time) == 0) { is_appointment = 0; break; } if (parse_time(item_time, &heures, &minutes) == 1) break; else { status_mesg(format_message_1, enter_str); wgetch(win[KEY].p); } } else return; } /* * Check if an event or appointment is entered, * depending on the starting time, and record the * corresponding item. */ if (is_appointment) { /* Get the appointment duration */ item_time[0] = '\0'; for (;;) { status_mesg(mesg_2, ""); if (getstring(win[STA].p, item_time, LDUR, 0, 1) != GETSTRING_ESC) { if (*item_time == '+' && parse_duration(item_time + 1, &apoint_duration) == 1) break; else if (parse_time(item_time, &end_h, &end_m) == 1) { if (end_h < heures || ((end_h == heures) && (end_m < minutes))) { apoint_duration = MININSEC - minutes + end_m + (24 + end_h - (heures + 1)) * MININSEC; } else { apoint_duration = MININSEC - minutes + end_m + (end_h - (heures + 1)) * MININSEC; } break; } else { status_mesg(format_message_2, enter_str); wgetch(win[KEY].p); } } else return; } } else /* Insert the event Id */ Id = 1; status_mesg(mesg_3, ""); if (getstring(win[STA].p, item_mesg, BUFSIZ, 0, 1) == GETSTRING_VALID) { if (is_appointment) { apoint_start = date2sec(*calendar_get_slctd_day(), heures, minutes); apoint_new(item_mesg, 0L, apoint_start, min2sec(apoint_duration), 0L); if (notify_bar()) notify_check_added(item_mesg, apoint_start, 0L); } else event_new(item_mesg, 0L, date2sec(*calendar_get_slctd_day(), 0, 0), Id); if (apoint_hilt() == 0) apoint_hilt_increase(1); } calendar_monthly_view_cache_set_invalid(); wins_erase_status_bar(); } /* Delete an item from the appointment list. */ void interact_day_item_delete(unsigned *nb_events, unsigned *nb_apoints, unsigned reg) { const char *del_app_str = _("Do you really want to delete this item ?"); const char *erase_warning = _("This item is recurrent. " "Delete (a)ll occurences or just this (o)ne ?"); const char *erase_choices = _("[ao]"); const int nb_erase_choices = 2; const char *note_warning = _("This item has a note attached to it. " "Delete (i)tem or just its (n)ote ?"); const char *note_choices = _("[in]"); const int nb_note_choices = 2; long date = calendar_get_slctd_day_sec(); int nb_items = *nb_apoints + *nb_events; int to_be_removed = 0; if (nb_items == 0) return; struct day_item *p = day_get_item(apoint_hilt()); if (conf.confirm_delete) { if (status_ask_bool(del_app_str) != 1) { wins_erase_status_bar(); return; } } if (day_item_get_note(p)) { switch (status_ask_choice(note_warning, note_choices, nb_note_choices)) { case 1: break; case 2: day_item_erase_note(p); return; default: /* User escaped */ return; } } if (p->type == RECUR_EVNT || p->type == RECUR_APPT) { switch (status_ask_choice(erase_warning, erase_choices, nb_erase_choices)) { case 1: break; case 2: day_item_add_exc(p, date); return; default: return; } } interact_day_item_cut_free(reg); p = day_cut_item(date, apoint_hilt()); day_cut[reg].type = p->type; day_cut[reg].item = p->item; switch (p->type) { case EVNT: case RECUR_EVNT: (*nb_events)--; to_be_removed = 1; break; case APPT: case RECUR_APPT: (*nb_apoints)--; to_be_removed = 3; break; default: EXIT(_("no such type")); /* NOTREACHED */ } calendar_monthly_view_cache_set_invalid(); if (apoint_hilt() > 1) apoint_hilt_decrease(1); if (apad.first_onscreen >= to_be_removed) apad.first_onscreen = apad.first_onscreen - to_be_removed; if (nb_items == 1) apoint_hilt_set(0); } /* Request user to enter a new todo item. */ void interact_todo_add(void) { int ch = 0; const char *mesg = _("Enter the new ToDo item : "); const char *mesg_id = _("Enter the ToDo priority [1 (highest) - 9 (lowest)] :"); char todo_input[BUFSIZ] = ""; status_mesg(mesg, ""); if (getstring(win[STA].p, todo_input, BUFSIZ, 0, 1) == GETSTRING_VALID) { while ((ch < '1') || (ch > '9')) { status_mesg(mesg_id, ""); ch = wgetch(win[KEY].p); } todo_add(todo_input, ch - '0', NULL); todo_set_nb(todo_nb() + 1); } } /* Delete an item from the ToDo list. */ void interact_todo_delete(void) { const char *del_todo_str = _("Do you really want to delete this task ?"); const char *erase_warning = _("This item has a note attached to it. " "Delete (t)odo or just its (n)ote ?"); const char *erase_choice = _("[tn]"); const int nb_erase_choice = 2; int answer; if ((todo_nb() <= 0) || (conf.confirm_delete && (status_ask_bool(del_todo_str) != 1))) { wins_erase_status_bar(); return; } /* This todo item doesn't have any note associated. */ if (todo_get_item(todo_hilt())->note == NULL) answer = 1; else answer = status_ask_choice(erase_warning, erase_choice, nb_erase_choice); switch (answer) { case 1: todo_delete(todo_get_item(todo_hilt())); todo_set_nb(todo_nb() - 1); if (todo_hilt() > 1) todo_hilt_decrease(1); if (todo_nb() == 0) todo_hilt_set(0); if (todo_hilt_pos() < 0) todo_first_decrease(1); break; case 2: todo_delete_note(todo_get_item(todo_hilt())); break; default: wins_erase_status_bar(); return; } } /* Edit the description of an already existing todo item. */ void interact_todo_edit(void) { struct todo *i; const char *mesg = _("Enter the new ToDo description :"); status_mesg(mesg, ""); i = todo_get_item(todo_hilt()); updatestring(win[STA].p, &i->mesg, 0, 1); } /* Pipe a todo item to an external program. */ void interact_todo_pipe(void) { char cmd[BUFSIZ] = ""; char const *arg[] = { cmd, NULL }; int pout; int pid; FILE *fpout; struct todo *todo; status_mesg(_("Pipe item to external command:"), ""); if (getstring(win[STA].p, cmd, BUFSIZ, 0, 1) != GETSTRING_VALID) return; wins_prepare_external(); if ((pid = shell_exec(NULL, &pout, *arg, arg))) { fpout = fdopen(pout, "w"); todo = todo_get_item(todo_hilt()); todo_write(todo, fpout); fclose(fpout); child_wait(NULL, &pout, pid); press_any_key(); } wins_unprepare_external(); } /* * Ask user for repetition characteristics: * o repetition type: daily, weekly, monthly, yearly * o repetition frequence: every X days, weeks, ... * o repetition end date * and then delete the selected item to recreate it as a recurrent one */ void interact_day_item_repeat(void) { struct tm lt; time_t t; int date_entered = 0; int year = 0, month = 0, day = 0; struct date until_date; char outstr[BUFSIZ]; char user_input[BUFSIZ] = ""; const char *msg_rpt_prefix = _("Enter the repetition type:"); const char *msg_rpt_daily = _("(d)aily"); const char *msg_rpt_weekly = _("(w)eekly"); const char *msg_rpt_monthly = _("(m)onthly"); const char *msg_rpt_yearly = _("(y)early"); const char *msg_type_choice = _("[dwmy]"); const char *mesg_freq_1 = _("Enter the repetition frequence:"); const char *mesg_wrong_freq = _("The frequence you entered is not valid."); const char *mesg_until_1 = _("Enter the ending date: [%s] or '0' for an endless repetition"); const char *mesg_wrong_1 = _("The entered date is not valid."); const char *mesg_wrong_2 = _("Possible formats are [%s] or '0' for an endless repetition"); const char *wrong_type_1 = _("This item is already a repeated one."); const char *wrong_type_2 = _("Press [ENTER] to continue."); const char *mesg_older = _("Sorry, the date you entered is older than the item start time."); char msg_asktype[BUFSIZ]; snprintf(msg_asktype, BUFSIZ, "%s %s, %s, %s, %s", msg_rpt_prefix, msg_rpt_daily, msg_rpt_weekly, msg_rpt_monthly, msg_rpt_yearly); int type = 0, freq = 0; int item_nb; struct day_item *p; struct recur_apoint *ra; long until, date; item_nb = apoint_hilt(); p = day_get_item(item_nb); if (p->type != APPT && p->type != EVNT) { status_mesg(wrong_type_1, wrong_type_2); wgetch(win[KEY].p); return; } switch (status_ask_choice(msg_asktype, msg_type_choice, 4)) { case 1: type = RECUR_DAILY; break; case 2: type = RECUR_WEEKLY; break; case 3: type = RECUR_MONTHLY; break; case 4: type = RECUR_YEARLY; break; default: return; } while (freq == 0) { status_mesg(mesg_freq_1, ""); if (getstring(win[STA].p, user_input, BUFSIZ, 0, 1) == GETSTRING_VALID) { freq = atoi(user_input); if (freq == 0) { status_mesg(mesg_wrong_freq, wrong_type_2); wgetch(win[KEY].p); } user_input[0] = '\0'; } else return; } while (!date_entered) { snprintf(outstr, BUFSIZ, mesg_until_1, DATEFMT_DESC(conf.input_datefmt)); status_mesg(outstr, ""); if (getstring(win[STA].p, user_input, BUFSIZ, 0, 1) == GETSTRING_VALID) { if (strlen(user_input) == 1 && strcmp(user_input, "0") == 0) { until = 0; date_entered = 1; } else { if (parse_date(user_input, conf.input_datefmt, &year, &month, &day, calendar_get_slctd_day())) { t = p->start; localtime_r(&t, <); until_date.dd = day; until_date.mm = month; until_date.yyyy = year; until = date2sec(until_date, lt.tm_hour, lt.tm_min); if (until < p->start) { status_mesg(mesg_older, wrong_type_2); wgetch(win[KEY].p); date_entered = 0; } else { date_entered = 1; } } else { snprintf(outstr, BUFSIZ, mesg_wrong_2, DATEFMT_DESC(conf.input_datefmt)); status_mesg(mesg_wrong_1, outstr); wgetch(win[KEY].p); date_entered = 0; } } } else return; } date = calendar_get_slctd_day_sec(); if (p->type == EVNT) { struct event *ev = p->item.ev; recur_event_new(ev->mesg, ev->note, ev->day, ev->id, type, freq, until, NULL); } else if (p->type == APPT) { struct apoint *apt = p->item.apt; ra = recur_apoint_new(apt->mesg, apt->note, apt->start, apt->dur, apt->state, type, freq, until, NULL); if (notify_bar()) notify_check_repeated(ra); } else { EXIT(_("wrong item type")); /* NOTREACHED */ } interact_day_item_cut_free(REG_BLACK_HOLE); p = day_cut_item(date, item_nb); day_cut[REG_BLACK_HOLE].type = p->type; day_cut[REG_BLACK_HOLE].item = p->item; calendar_monthly_view_cache_set_invalid(); } /* Free the current cut item, if any. */ void interact_day_item_cut_free(unsigned reg) { switch (day_cut[reg].type) { case 0: /* No previous item, don't free anything. */ break; case APPT: apoint_free(day_cut[reg].item.apt); break; case EVNT: event_free(day_cut[reg].item.ev); break; case RECUR_APPT: recur_apoint_free(day_cut[reg].item.rapt); break; case RECUR_EVNT: recur_event_free(day_cut[reg].item.rev); break; } } /* Copy an item, so that it can be pasted somewhere else later. */ void interact_day_item_copy(unsigned *nb_events, unsigned *nb_apoints, unsigned reg) { const int NBITEMS = *nb_apoints + *nb_events; if (NBITEMS == 0 || reg == REG_BLACK_HOLE) return; interact_day_item_cut_free(reg); day_item_fork(day_get_item(apoint_hilt()), &day_cut[reg]); } /* Paste a previously cut item. */ void interact_day_item_paste(unsigned *nb_events, unsigned *nb_apoints, unsigned reg) { int item_type; struct day_item day; if (reg == REG_BLACK_HOLE || !day_cut[reg].type) return; day_item_fork(&day_cut[reg], &day); item_type = day_paste_item(&day, calendar_get_slctd_day_sec()); calendar_monthly_view_cache_set_invalid(); if (item_type == EVNT || item_type == RECUR_EVNT) (*nb_events)++; else if (item_type == APPT || item_type == RECUR_APPT) (*nb_apoints)++; else return; if (apoint_hilt() == 0) apoint_hilt_increase(1); } calcurse-3.1.4/src/llist.c0000644000175000001440000001321212105444321012312 00000000000000/* * Calcurse - text-based organizer * * Copyright (c) 2004-2013 calcurse Development Team * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * - Redistributions of source code must retain the above * copyright notice, this list of conditions and the * following disclaimer. * * - Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the * following disclaimer in the documentation and/or other * materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * Send your feedback or comments to : misc@calcurse.org * Calcurse home page : http://calcurse.org * */ #include "calcurse.h" /* * Initialize a list. */ void llist_init(llist_t * l) { l->head = NULL; l->tail = NULL; } /* * Free a list, but not the contained data. */ void llist_free(llist_t * l) { llist_item_t *i, *t; for (i = l->head; i; i = t) { t = i->next; mem_free(i); } l->head = NULL; l->tail = NULL; } /* * Free the data contained in a list. */ void llist_free_inner(llist_t * l, llist_fn_free_t fn_free) { llist_item_t *i; for (i = l->head; i; i = i->next) { if (i->data) { fn_free(i->data); i->data = NULL; } } } /* * Get the first item of a list. */ llist_item_t *llist_first(llist_t * l) { return l->head; } /* * Get the nth item of a list. */ llist_item_t *llist_nth(llist_t * l, int n) { llist_item_t *i; if (n < 0) return NULL; for (i = l->head; i && n != 0; n--) i = i->next; return i; } /* * Get the successor of a list item. */ llist_item_t *llist_next(llist_item_t * i) { return i ? i->next : NULL; } /* * Return the successor of a list item if it is matched by some filter * callback. Return NULL otherwise. */ llist_item_t *llist_next_filter(llist_item_t * i, void *data, llist_fn_match_t fn_match) { if (i && i->next && fn_match(i->next->data, data)) return i->next; else return NULL; } /* * Get the actual data of an item. */ void *llist_get_data(llist_item_t * i) { return i ? i->data : NULL; } /* * Add an item at the end of a list. */ void llist_add(llist_t * l, void *data) { llist_item_t *o = mem_malloc(sizeof(llist_item_t)); if (o) { o->data = data; o->next = NULL; if (!l->head) l->head = l->tail = o; else { l->tail->next = o; l->tail = o; } } } /* * Add an item to a sorted list. */ void llist_add_sorted(llist_t * l, void *data, llist_fn_cmp_t fn_cmp) { llist_item_t *o = mem_malloc(sizeof(llist_item_t)); llist_item_t *i; if (o) { o->data = data; o->next = NULL; if (!l->head) l->head = l->tail = o; else if (fn_cmp(o->data, l->tail->data) >= 0) { l->tail->next = o; l->tail = o; } else if (fn_cmp(o->data, l->head->data) < 0) { o->next = l->head; l->head = o; } else { i = l->head; while (i->next && fn_cmp(o->data, i->next->data) >= 0) i = i->next; o->next = i->next; i->next = o; } } } /* * Remove an item from a list. */ void llist_remove(llist_t * l, llist_item_t * i) { llist_item_t *j = NULL; if (l->head && i == l->head) l->head = i->next; else { for (j = l->head; j && j->next != i; j = j->next) ; } if (i) { if (j) j->next = i->next; if (i == l->tail) l->tail = j; mem_free(i); } } /* * Find the first item matched by some filter callback. */ llist_item_t *llist_find_first(llist_t * l, void *data, llist_fn_match_t fn_match) { llist_item_t *i; if (fn_match) { for (i = l->head; i; i = i->next) { if (fn_match(i->data, data)) return i; } } else { for (i = l->head; i; i = i->next) { if (i->data == data) return i; } } return NULL; } /* * Find the next item matched by some filter callback. */ llist_item_t *llist_find_next(llist_item_t * i, void *data, llist_fn_match_t fn_match) { if (i) { i = i->next; if (fn_match) { for (; i; i = i->next) { if (fn_match(i->data, data)) return i; } } else { for (; i; i = i->next) { if (i->data == data) return i; } } } return NULL; } /* * Find the nth item matched by some filter callback. */ llist_item_t *llist_find_nth(llist_t * l, int n, void *data, llist_fn_match_t fn_match) { llist_item_t *i; if (n < 0) return NULL; if (fn_match) { for (i = l->head; i; i = i->next) { if (fn_match(i->data, data) && (n-- == 0)) return i; } } else { for (i = l->head; i; i = i->next) { if ((i->data == data) && (n-- == 0)) return i; } } return NULL; } calcurse-3.1.4/src/pcal.c0000644000175000001440000002275512105444321012116 00000000000000/* * Calcurse - text-based organizer * * Copyright (c) 2004-2013 calcurse Development Team * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * - Redistributions of source code must retain the above * copyright notice, this list of conditions and the * following disclaimer. * * - Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the * following disclaimer in the documentation and/or other * materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * Send your feedback or comments to : misc@calcurse.org * Calcurse home page : http://calcurse.org * */ #include #include "calcurse.h" /* Static functions used to add export functionalities. */ static void pcal_export_header(FILE *); static void pcal_export_recur_events(FILE *); static void pcal_export_events(FILE *); static void pcal_export_recur_apoints(FILE *); static void pcal_export_apoints(FILE *); static void pcal_export_todo(FILE *); static void pcal_export_footer(FILE *); /* Type definition for callbacks to export functions. */ typedef void (*cb_dump_t) (FILE *, long, long, char *); /* * Travel through each occurence of an item, and execute the given callback * (mainly used to export data). */ static void foreach_date_dump(const long date_end, struct rpt *rpt, llist_t * exc, long item_first_date, long item_dur, char *item_mesg, cb_dump_t cb_dump, FILE * stream) { long date, item_time; struct tm lt; time_t t; t = item_first_date; localtime_r(&t, <); lt.tm_hour = lt.tm_min = lt.tm_sec = 0; lt.tm_isdst = -1; date = mktime(<); item_time = item_first_date - date; while (date <= date_end && date <= rpt->until) { if (recur_item_inday(item_first_date, item_dur, exc, rpt->type, rpt->freq, rpt->until, date)) { (*cb_dump) (stream, date + item_time, item_dur, item_mesg); } switch (rpt->type) { case RECUR_DAILY: date = date_sec_change(date, 0, rpt->freq); break; case RECUR_WEEKLY: date = date_sec_change(date, 0, rpt->freq * WEEKINDAYS); break; case RECUR_MONTHLY: date = date_sec_change(date, rpt->freq, 0); break; case RECUR_YEARLY: date = date_sec_change(date, rpt->freq * 12, 0); break; default: EXIT(_("incoherent repetition type")); /* NOTREACHED */ break; } } } static void pcal_export_header(FILE * stream) { fputs("# calcurse pcal export\n", stream); fputs("\n# =======\n# options\n# =======\n", stream); fprintf(stream, "opt -A -K -l -m -F %s\n", calendar_week_begins_on_monday()? "Monday" : "Sunday"); fputs("# Display week number (i.e. 1-52) on every Monday\n", stream); fprintf(stream, "all monday in all week %%w\n"); fputc('\n', stream); } static void pcal_export_footer(FILE * stream) { } /* Format and dump event data to a pcal formatted file. */ static void pcal_dump_event(FILE * stream, long event_date, long event_dur, char *event_mesg) { char pcal_date[BUFSIZ]; date_sec2date_fmt(event_date, "%b %d", pcal_date); fprintf(stream, "%s %s\n", pcal_date, event_mesg); } /* Format and dump appointment data to a pcal formatted file. */ static void pcal_dump_apoint(FILE * stream, long apoint_date, long apoint_dur, char *apoint_mesg) { char pcal_date[BUFSIZ], pcal_beg[BUFSIZ], pcal_end[BUFSIZ]; date_sec2date_fmt(apoint_date, "%b %d", pcal_date); date_sec2date_fmt(apoint_date, "%R", pcal_beg); date_sec2date_fmt(apoint_date + apoint_dur, "%R", pcal_end); fprintf(stream, "%s ", pcal_date); fprintf(stream, "(%s -> %s) %s\n", pcal_beg, pcal_end, apoint_mesg); } static void pcal_export_recur_events(FILE * stream) { llist_item_t *i; char pcal_date[BUFSIZ]; fputs("\n# =============", stream); fputs("\n# Recur. Events", stream); fputs("\n# =============\n", stream); fputs("# (pcal does not support from..until dates specification\n", stream); LLIST_FOREACH(&recur_elist, i) { struct recur_event *rev = LLIST_GET_DATA(i); if (rev->rpt->until == 0 && rev->rpt->freq == 1) { switch (rev->rpt->type) { case RECUR_DAILY: date_sec2date_fmt(rev->day, "%b %d", pcal_date); fprintf(stream, "all day on_or_after %s %s\n", pcal_date, rev->mesg); break; case RECUR_WEEKLY: date_sec2date_fmt(rev->day, "%a", pcal_date); fprintf(stream, "all %s on_or_after ", pcal_date); date_sec2date_fmt(rev->day, "%b %d", pcal_date); fprintf(stream, "%s %s\n", pcal_date, rev->mesg); break; case RECUR_MONTHLY: date_sec2date_fmt(rev->day, "%d", pcal_date); fprintf(stream, "day on all %s %s\n", pcal_date, rev->mesg); break; case RECUR_YEARLY: date_sec2date_fmt(rev->day, "%b %d", pcal_date); fprintf(stream, "%s %s\n", pcal_date, rev->mesg); break; default: EXIT(_("incoherent repetition type")); } } else { const long YEAR_START = calendar_start_of_year(); const long YEAR_END = calendar_end_of_year(); if (rev->day < YEAR_END && rev->day > YEAR_START) foreach_date_dump(YEAR_END, rev->rpt, &rev->exc, rev->day, 0, rev->mesg, (cb_dump_t) pcal_dump_event, stream); } } } static void pcal_export_events(FILE * stream) { llist_item_t *i; fputs("\n# ======\n# Events\n# ======\n", stream); LLIST_FOREACH(&eventlist, i) { struct event *ev = LLIST_TS_GET_DATA(i); pcal_dump_event(stream, ev->day, 0, ev->mesg); } fputc('\n', stream); } static void pcal_export_recur_apoints(FILE * stream) { llist_item_t *i; char pcal_date[BUFSIZ], pcal_beg[BUFSIZ], pcal_end[BUFSIZ]; fputs("\n# ==============", stream); fputs("\n# Recur. Apoints", stream); fputs("\n# ==============\n", stream); fputs("# (pcal does not support from..until dates specification\n", stream); LLIST_TS_FOREACH(&recur_alist_p, i) { struct recur_apoint *rapt = LLIST_TS_GET_DATA(i); if (rapt->rpt->until == 0 && rapt->rpt->freq == 1) { date_sec2date_fmt(rapt->start, "%R", pcal_beg); date_sec2date_fmt(rapt->start + rapt->dur, "%R", pcal_end); switch (rapt->rpt->type) { case RECUR_DAILY: date_sec2date_fmt(rapt->start, "%b %d", pcal_date); fprintf(stream, "all day on_or_after %s (%s -> %s) %s\n", pcal_date, pcal_beg, pcal_end, rapt->mesg); break; case RECUR_WEEKLY: date_sec2date_fmt(rapt->start, "%a", pcal_date); fprintf(stream, "all %s on_or_after ", pcal_date); date_sec2date_fmt(rapt->start, "%b %d", pcal_date); fprintf(stream, "%s (%s -> %s) %s\n", pcal_date, pcal_beg, pcal_end, rapt->mesg); break; case RECUR_MONTHLY: date_sec2date_fmt(rapt->start, "%d", pcal_date); fprintf(stream, "day on all %s (%s -> %s) %s\n", pcal_date, pcal_beg, pcal_end, rapt->mesg); break; case RECUR_YEARLY: date_sec2date_fmt(rapt->start, "%b %d", pcal_date); fprintf(stream, "%s (%s -> %s) %s\n", pcal_date, pcal_beg, pcal_end, rapt->mesg); break; default: EXIT(_("incoherent repetition type")); } } else { const long YEAR_START = calendar_start_of_year(); const long YEAR_END = calendar_end_of_year(); if (rapt->start < YEAR_END && rapt->start > YEAR_START) foreach_date_dump(YEAR_END, rapt->rpt, &rapt->exc, rapt->start, rapt->dur, rapt->mesg, (cb_dump_t) pcal_dump_apoint, stream); } } } static void pcal_export_apoints(FILE * stream) { llist_item_t *i; fputs("\n# ============\n# Appointments\n# ============\n", stream); LLIST_TS_LOCK(&alist_p); LLIST_TS_FOREACH(&alist_p, i) { struct apoint *apt = LLIST_TS_GET_DATA(i); pcal_dump_apoint(stream, apt->start, apt->dur, apt->mesg); } LLIST_TS_UNLOCK(&alist_p); fputc('\n', stream); } static void pcal_export_todo(FILE * stream) { llist_item_t *i; fputs("#\n# Todos\n#\n", stream); LLIST_FOREACH(&todolist, i) { struct todo *todo = LLIST_TS_GET_DATA(i); if (todo->id < 0) /* completed items */ continue; fputs("note all ", stream); fprintf(stream, "%d. %s\n", todo->id, todo->mesg); } fputc('\n', stream); } /* Export calcurse data. */ void pcal_export_data(FILE * stream) { pcal_export_header(stream); pcal_export_recur_events(stream); pcal_export_events(stream); pcal_export_recur_apoints(stream); pcal_export_apoints(stream); pcal_export_todo(stream); pcal_export_footer(stream); } calcurse-3.1.4/src/sigs.c0000644000175000001440000000671212105444321012137 00000000000000/* * Calcurse - text-based organizer * * Copyright (c) 2004-2013 calcurse Development Team * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * - Redistributions of source code must retain the above * copyright notice, this list of conditions and the * following disclaimer. * * - Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the * following disclaimer in the documentation and/or other * materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * Send your feedback or comments to : misc@calcurse.org * Calcurse home page : http://calcurse.org * */ #ifndef _BSD_SOURCE /* Needed for SIGWINCH on OpenBSD. */ #define _BSD_SOURCE #endif #ifndef __BSD_VISIBLE /* Needed for SIGWINCH on FreeBSD. */ #define __BSD_VISIBLE 1 #endif #include #include #include #include #include #include #include "calcurse.h" #ifndef WAIT_MYPGRP #define WAIT_MYPGRP 0 #endif /* * General signal handling routine. * Catch return values from children (user-defined notification commands). * This is needed to avoid zombie processes running on system. * Also catch CTRL-C (SIGINT), and SIGWINCH to resize screen automatically. */ static void generic_hdlr(int sig) { switch (sig) { case SIGCHLD: while (waitpid(WAIT_MYPGRP, NULL, WNOHANG) > 0) ; break; case SIGWINCH: resize = 1; clearok(curscr, TRUE); ungetch(KEY_RESIZE); break; case SIGTERM: if (unlink(path_cpid) != 0) { EXIT(_("Could not remove calcurse lock file: %s\n"), strerror(errno)); } exit(EXIT_SUCCESS); break; } } unsigned sigs_set_hdlr(int sig, void (*handler) (int)) { struct sigaction sa; memset(&sa, 0, sizeof sa); sigemptyset(&sa.sa_mask); sa.sa_handler = handler; sa.sa_flags = 0; if (sigaction(sig, &sa, NULL) == -1) { ERROR_MSG(_("Error setting signal #%d : %s\n"), sig, strerror(errno)); return 0; } return 1; } /* Signal handling init. */ void sigs_init() { if (!sigs_set_hdlr(SIGCHLD, generic_hdlr) || !sigs_set_hdlr(SIGWINCH, generic_hdlr) || !sigs_set_hdlr(SIGTERM, generic_hdlr) || !sigs_set_hdlr(SIGINT, SIG_IGN)) exit_calcurse(1); } /* Ignore SIGWINCH and SIGTERM signals. */ void sigs_ignore(void) { sigs_set_hdlr(SIGWINCH, SIG_IGN); sigs_set_hdlr(SIGTERM, SIG_IGN); } /* No longer ignore SIGWINCH and SIGTERM signals. */ void sigs_unignore(void) { sigs_set_hdlr(SIGWINCH, generic_hdlr); sigs_set_hdlr(SIGTERM, generic_hdlr); } calcurse-3.1.4/src/todo.c0000644000175000001440000002044112105444321012132 00000000000000/* * Calcurse - text-based organizer * * Copyright (c) 2004-2013 calcurse Development Team * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * - Redistributions of source code must retain the above * copyright notice, this list of conditions and the * following disclaimer. * * - Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the * following disclaimer in the documentation and/or other * materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * Send your feedback or comments to : misc@calcurse.org * Calcurse home page : http://calcurse.org * */ #include #include #include #include "calcurse.h" llist_t todolist; static int hilt = 0; static int todos = 0; static int first = 1; static char *msgsav; /* Returns a structure containing the selected item. */ struct todo *todo_get_item(int item_number) { return LLIST_GET_DATA(LLIST_NTH(&todolist, item_number - 1)); } /* Sets which todo is highlighted. */ void todo_hilt_set(int highlighted) { hilt = highlighted; } void todo_hilt_decrease(int n) { hilt -= n; } void todo_hilt_increase(int n) { hilt += n; } /* Return which todo is highlighted. */ int todo_hilt(void) { return hilt; } /* Return the number of todos. */ int todo_nb(void) { return todos; } /* Set the number of todos. */ void todo_set_nb(int nb) { todos = nb; } /* Set which one is the first todo to be displayed. */ void todo_set_first(int nb) { first = nb; } void todo_first_increase(int n) { first += n; } void todo_first_decrease(int n) { first -= n; } /* * Return the position of the hilghlighted item, relative to the first one * displayed. */ int todo_hilt_pos(void) { return hilt - first; } /* Return the last visited todo. */ char *todo_saved_mesg(void) { return msgsav; } static int todo_cmp_id(struct todo *a, struct todo *b) { /* * As of version 2.6, todo items can have a negative id, which means they * were completed. To keep them sorted, we need to consider the absolute id * value. */ int abs_a = abs(a->id); int abs_b = abs(b->id); return abs_a < abs_b ? -1 : (abs_a == abs_b ? 0 : 1); } /* * Add an item in the todo linked list. */ struct todo *todo_add(char *mesg, int id, char *note) { struct todo *todo; todo = mem_malloc(sizeof(struct todo)); todo->mesg = mem_strdup(mesg); todo->id = id; todo->note = (note != NULL && note[0] != '\0') ? mem_strdup(note) : NULL; LLIST_ADD_SORTED(&todolist, todo, todo_cmp_id); return todo; } void todo_write(struct todo *todo, FILE * f) { if (todo->note) fprintf(f, "[%d]>%s %s\n", todo->id, todo->note, todo->mesg); else fprintf(f, "[%d] %s\n", todo->id, todo->mesg); } /* Delete a note previously attached to a todo item. */ void todo_delete_note(struct todo *todo) { if (!todo->note) EXIT(_("no note attached")); erase_note(&todo->note); } /* Delete an item from the todo linked list. */ void todo_delete(struct todo *todo) { llist_item_t *i = LLIST_FIND_FIRST(&todolist, todo, NULL); if (!i) EXIT(_("no such todo")); LLIST_REMOVE(&todolist, i); mem_free(todo->mesg); erase_note(&todo->note); mem_free(todo); } /* * Flag a todo item (for now on, only the 'completed' state is available). * Internally, a completed item keeps its priority, but it becomes negative. * This way, it is easy to retrive its original priority if the user decides * that in fact it was not completed. */ void todo_flag(struct todo *t) { t->id = -t->id; } /* * Returns the position into the linked list corresponding to the * given todo item. */ static int todo_get_position(struct todo *needle) { llist_item_t *i; int n = 0; LLIST_FOREACH(&todolist, i) { n++; if (LLIST_TS_GET_DATA(i) == needle) return n; } EXIT(_("todo not found")); return -1; /* avoid compiler warnings */ } /* Change an item priority by pressing '+' or '-' inside TODO panel. */ void todo_chg_priority(struct todo *backup, int diff) { char backup_mesg[BUFSIZ]; int backup_id; char backup_note[MAX_NOTESIZ + 1]; strncpy(backup_mesg, backup->mesg, strlen(backup->mesg) + 1); backup_id = backup->id; if (backup->note) strncpy(backup_note, backup->note, MAX_NOTESIZ + 1); else backup_note[0] = '\0'; backup_id += diff; if (backup_id < 1) backup_id = 1; else if (backup_id > 9) backup_id = 9; todo_delete(todo_get_item(hilt)); backup = todo_add(backup_mesg, backup_id, backup_note); hilt = todo_get_position(backup); } /* Display todo items in the corresponding panel. */ static void display_todo_item(int incolor, char *msg, int prio, int note, int width, int y, int x) { WINDOW *w; int ch_note; char buf[width * UTF8_MAXLEN], priostr[2]; int i; w = win[TOD].p; ch_note = (note) ? '>' : '.'; if (prio > 0) snprintf(priostr, sizeof priostr, "%d", prio); else strncpy(priostr, "X", sizeof priostr); if (incolor == 0) custom_apply_attr(w, ATTR_HIGHEST); if (utf8_strwidth(msg) < width) mvwprintw(w, y, x, "%s%c %s", priostr, ch_note, msg); else { for (i = 0; msg[i] && width > 0; i++) { if (!UTF8_ISCONT(msg[i])) width -= utf8_width(&msg[i]); buf[i] = msg[i]; } if (i) buf[i - 1] = 0; else buf[0] = 0; mvwprintw(w, y, x, "%s%c %s...", priostr, ch_note, buf); } if (incolor == 0) custom_remove_attr(w, ATTR_HIGHEST); } /* Updates the ToDo panel. */ void todo_update_panel(int which_pan) { llist_item_t *i; int len = win[TOD].w - 8; int num_todo = 0; int title_lines = conf.compact_panels ? 1 : 3; int y_offset = title_lines, x_offset = 1; int t_realpos = -1; int todo_lines = 1; int max_items = win[TOD].h - 4; int incolor = -1; if ((int)win[TOD].h < 4) return; /* Print todo item in the panel. */ erase_window_part(win[TOD].p, 1, title_lines, win[TOD].w - 2, win[TOD].h - 2); LLIST_FOREACH(&todolist, i) { struct todo *todo = LLIST_TS_GET_DATA(i); num_todo++; t_realpos = num_todo - first; incolor = (which_pan == TOD) ? num_todo - hilt : num_todo; if (incolor == 0) msgsav = todo->mesg; if (t_realpos >= 0 && t_realpos < max_items) { display_todo_item(incolor, todo->mesg, todo->id, (todo->note != NULL) ? 1 : 0, len, y_offset, x_offset); y_offset = y_offset + todo_lines; } } /* Draw the scrollbar if necessary. */ if (todos > max_items) { int sbar_length = max_items * (max_items + 1) / todos; int highend = max_items * first / todos; unsigned hilt_bar = (which_pan == TOD) ? 1 : 0; int sbar_top = highend + title_lines; if ((sbar_top + sbar_length) > win[TOD].h - 1) sbar_length = win[TOD].h - 1 - sbar_top; draw_scrollbar(win[TOD].p, sbar_top, win[TOD].w - 2, sbar_length, title_lines, win[TOD].h - 1, hilt_bar); } wnoutrefresh(win[TOD].p); } /* Attach a note to a todo */ void todo_edit_note(struct todo *i, const char *editor) { edit_note(&i->note, editor); } /* View a note previously attached to a todo */ void todo_view_note(struct todo *i, const char *pager) { view_note(i->note, pager); } void todo_free(struct todo *todo) { mem_free(todo->mesg); erase_note(&todo->note); mem_free(todo); } void todo_init_list(void) { LLIST_INIT(&todolist); } void todo_free_list(void) { LLIST_FREE_INNER(&todolist, todo_free); LLIST_FREE(&todolist); } calcurse-3.1.4/src/event.c0000644000175000001440000001012712105444321012306 00000000000000/* * Calcurse - text-based organizer * * Copyright (c) 2004-2013 calcurse Development Team * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * - Redistributions of source code must retain the above * copyright notice, this list of conditions and the * following disclaimer. * * - Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the * following disclaimer in the documentation and/or other * materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * Send your feedback or comments to : misc@calcurse.org * Calcurse home page : http://calcurse.org * */ #include #include #include #include #include "calcurse.h" llist_t eventlist; void event_free(struct event *ev) { mem_free(ev->mesg); erase_note(&ev->note); mem_free(ev); } struct event *event_dup(struct event *in) { EXIT_IF(!in, _("null pointer")); struct event *ev = mem_malloc(sizeof(struct event)); ev->id = in->id; ev->day = in->day; ev->mesg = mem_strdup(in->mesg); if (in->note) ev->note = mem_strdup(in->note); else ev->note = NULL; return ev; } void event_llist_init(void) { LLIST_INIT(&eventlist); } void event_llist_free(void) { LLIST_FREE_INNER(&eventlist, event_free); LLIST_FREE(&eventlist); } static int event_cmp_day(struct event *a, struct event *b) { return a->day < b->day ? -1 : (a->day == b->day ? 0 : 1); } /* Create a new event */ struct event *event_new(char *mesg, char *note, long day, int id) { struct event *ev; ev = mem_malloc(sizeof(struct event)); ev->mesg = mem_strdup(mesg); ev->day = day; ev->id = id; ev->note = (note != NULL) ? mem_strdup(note) : NULL; LLIST_ADD_SORTED(&eventlist, ev, event_cmp_day); return ev; } /* Check if the event belongs to the selected day */ unsigned event_inday(struct event *i, long *start) { return (i->day < *start + DAYINSEC && i->day >= *start); } /* Write to file the event in user-friendly format */ void event_write(struct event *o, FILE * f) { struct tm lt; time_t t; t = o->day; localtime_r(&t, <); fprintf(f, "%02u/%02u/%04u [%d] ", lt.tm_mon + 1, lt.tm_mday, 1900 + lt.tm_year, o->id); if (o->note != NULL) fprintf(f, ">%s ", o->note); fprintf(f, "%s\n", o->mesg); } /* Load the events from file */ struct event *event_scan(FILE * f, struct tm start, int id, char *note) { char buf[BUFSIZ], *nl; time_t tstart; /* Read the event description */ if (!fgets(buf, sizeof buf, f)) return NULL; nl = strchr(buf, '\n'); if (nl) { *nl = '\0'; } start.tm_hour = 0; start.tm_min = 0; start.tm_sec = 0; start.tm_isdst = -1; start.tm_year -= 1900; start.tm_mon--; tstart = mktime(&start); EXIT_IF(tstart == -1, _("date error in the event\n")); return event_new(buf, note, tstart, id); } /* Delete an event from the list. */ void event_delete(struct event *ev) { llist_item_t *i = LLIST_FIND_FIRST(&eventlist, ev, NULL); if (!i) EXIT(_("no such appointment")); LLIST_REMOVE(&eventlist, i); } void event_paste_item(struct event *ev, long date) { ev->day = date; LLIST_ADD_SORTED(&eventlist, ev, event_cmp_day); } calcurse-3.1.4/src/notify.c0000644000175000001440000005176012105444321012505 00000000000000/* * Calcurse - text-based organizer * * Copyright (c) 2004-2013 calcurse Development Team * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * - Redistributions of source code must retain the above * copyright notice, this list of conditions and the * following disclaimer. * * - Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the * following disclaimer in the documentation and/or other * materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * Send your feedback or comments to : misc@calcurse.org * Calcurse home page : http://calcurse.org * */ #include #include #include #include #include "calcurse.h" #define NOTIFY_FIELD_LENGTH 25 struct notify_vars { WINDOW *win; char *apts_file; char time[NOTIFY_FIELD_LENGTH]; char date[NOTIFY_FIELD_LENGTH]; pthread_mutex_t mutex; }; static struct notify_vars notify; static struct notify_app notify_app; static pthread_attr_t detached_thread_attr; static pthread_t notify_t_main; /* * Return the number of seconds before next appointment * (0 if no upcoming appointment). */ int notify_time_left(void) { time_t ntimer; int left; ntimer = time(NULL); left = notify_app.time - ntimer; return left > 0 ? left : 0; } /* * Return 1 if the reminder was not sent already for the upcoming * appointment. */ unsigned notify_needs_reminder(void) { if (notify_app.got_app && (((notify_app.state & APOINT_NOTIFY) && !nbar.notify_all) || (!(notify_app.state & APOINT_NOTIFY) && nbar.notify_all)) && !(notify_app.state & APOINT_NOTIFIED)) return 1; return 0; } /* * This is used to update the notify_app structure. * Note: the mutex associated with this structure must be locked by the * caller! */ void notify_update_app(long start, char state, char *msg) { notify_free_app(); notify_app.got_app = 1; notify_app.time = start; notify_app.state = state; notify_app.txt = mem_strdup(msg); } /* Return 1 if we need to display the notify-bar, else 0. */ int notify_bar(void) { int display_bar = 0; pthread_mutex_lock(&nbar.mutex); display_bar = (nbar.show) ? 1 : 0; pthread_mutex_unlock(&nbar.mutex); return display_bar; } /* Initialize the nbar variable used to store notification options. */ void notify_init_vars(void) { const char *time_format = "%T"; const char *date_format = "%a %F"; const char *cmd = "printf '\\a'"; pthread_mutex_init(&nbar.mutex, NULL); nbar.show = 1; nbar.cntdwn = 300; strncpy(nbar.datefmt, date_format, strlen(date_format) + 1); strncpy(nbar.timefmt, time_format, strlen(time_format) + 1); strncpy(nbar.cmd, cmd, strlen(cmd) + 1); if ((nbar.shell = getenv("SHELL")) == NULL) nbar.shell = "/bin/sh"; nbar.notify_all = 0; pthread_attr_init(&detached_thread_attr); pthread_attr_setdetachstate(&detached_thread_attr, PTHREAD_CREATE_DETACHED); } /* Extract the appointment file name from the complete file path. */ static void extract_aptsfile(void) { char *file; file = strrchr(path_apts, '/'); if (!file) notify.apts_file = path_apts; else { notify.apts_file = file; notify.apts_file++; } } /* * Create the notification bar, by initializing all the variables and * creating the notification window (l is the number of lines, c the * number of columns, y and x are its coordinates). */ void notify_init_bar(void) { pthread_mutex_init(¬ify.mutex, NULL); pthread_mutex_init(¬ify_app.mutex, NULL); notify_app.got_app = 0; notify_app.txt = 0; notify.win = newwin(win[NOT].h, win[NOT].w, win[NOT].y, win[NOT].x); extract_aptsfile(); } /* * Free memory associated with the notify_app structure. */ void notify_free_app(void) { notify_app.time = 0; notify_app.got_app = 0; notify_app.state = APOINT_NULL; if (notify_app.txt) mem_free(notify_app.txt); notify_app.txt = 0; } /* Stop the notify-bar main thread. */ void notify_stop_main_thread(void) { if (notify_t_main) { pthread_cancel(notify_t_main); pthread_join(notify_t_main, NULL); } } /* * The calcurse window geometry has changed so we need to reset the * notification window. */ void notify_reinit_bar(void) { delwin(notify.win); notify.win = newwin(win[NOT].h, win[NOT].w, win[NOT].y, win[NOT].x); } /* Launch user defined command as a notification. */ unsigned notify_launch_cmd(void) { int pid; if (notify_app.state & APOINT_NOTIFIED) return 1; notify_app.state |= APOINT_NOTIFIED; pid = fork(); if (pid < 0) { ERROR_MSG(_("error while launching command: could not fork")); return 0; } else if (pid == 0) { /* Child: launch user defined command */ if (execlp(nbar.shell, nbar.shell, "-c", nbar.cmd, NULL) < 0) { ERROR_MSG(_("error while launching command")); _exit(1); } _exit(0); } return 1; } /* * Update the notification bar. This is useful when changing color theme * for example. */ void notify_update_bar(void) { const int space = 3; int file_pos, date_pos, app_pos, txt_max_len, too_long = 0; int time_left, blinking; char buf[BUFSIZ]; date_pos = space; pthread_mutex_lock(¬ify.mutex); file_pos = strlen(notify.date) + strlen(notify.time) + 7 + 2 * space; app_pos = file_pos + strlen(notify.apts_file) + 2 + space; txt_max_len = col - (app_pos + 12 + space); WINS_NBAR_LOCK; custom_apply_attr(notify.win, ATTR_HIGHEST); wattron(notify.win, A_UNDERLINE | A_REVERSE); mvwhline(notify.win, 0, 0, ACS_HLINE, col); mvwprintw(notify.win, 0, date_pos, "[ %s | %s ]", notify.date, notify.time); mvwprintw(notify.win, 0, file_pos, "(%s)", notify.apts_file); WINS_NBAR_UNLOCK; pthread_mutex_lock(¬ify_app.mutex); if (notify_app.got_app) { if (strlen(notify_app.txt) > txt_max_len) { int shrink_len; too_long = 1; shrink_len = txt_max_len > 3 ? txt_max_len - 3 : 1; strncpy(buf, notify_app.txt, shrink_len); buf[shrink_len] = '\0'; } time_left = notify_time_left(); if (time_left > 0) { int hours_left, minutes_left; hours_left = (time_left / HOURINSEC); minutes_left = (time_left - hours_left * HOURINSEC) / MININSEC; pthread_mutex_lock(&nbar.mutex); if (time_left < nbar.cntdwn && (((notify_app.state & APOINT_NOTIFY) && !nbar.notify_all) || (!(notify_app.state & APOINT_NOTIFY) && nbar.notify_all))) blinking = 1; else blinking = 0; WINS_NBAR_LOCK; if (blinking) wattron(notify.win, A_BLINK); if (too_long) mvwprintw(notify.win, 0, app_pos, "> %02d:%02d :: %s.. <", hours_left, minutes_left, buf); else mvwprintw(notify.win, 0, app_pos, "> %02d:%02d :: %s <", hours_left, minutes_left, notify_app.txt); if (blinking) wattroff(notify.win, A_BLINK); WINS_NBAR_UNLOCK; if (blinking) notify_launch_cmd(); pthread_mutex_unlock(&nbar.mutex); } else { notify_app.got_app = 0; pthread_mutex_unlock(¬ify_app.mutex); pthread_mutex_unlock(¬ify.mutex); notify_check_next_app(0); return; } } pthread_mutex_unlock(¬ify_app.mutex); WINS_NBAR_LOCK; wattroff(notify.win, A_UNDERLINE | A_REVERSE); custom_remove_attr(notify.win, ATTR_HIGHEST); WINS_NBAR_UNLOCK; wins_wrefresh(notify.win); pthread_mutex_unlock(¬ify.mutex); } /* Update the notication bar content */ /* ARGSUSED0 */ static void *notify_main_thread(void *arg) { const unsigned thread_sleep = 1; const unsigned check_app = MININSEC; int elapse = 0; int got_app; struct tm ntime; time_t ntimer; elapse = 0; for (;;) { ntimer = time(NULL); localtime_r(&ntimer, &ntime); pthread_mutex_lock(¬ify.mutex); pthread_mutex_lock(&nbar.mutex); strftime(notify.time, NOTIFY_FIELD_LENGTH, nbar.timefmt, &ntime); strftime(notify.date, NOTIFY_FIELD_LENGTH, nbar.datefmt, &ntime); pthread_mutex_unlock(&nbar.mutex); pthread_mutex_unlock(¬ify.mutex); notify_update_bar(); psleep(thread_sleep); elapse += thread_sleep; if (elapse >= check_app) { elapse = 0; pthread_mutex_lock(¬ify_app.mutex); got_app = notify_app.got_app; pthread_mutex_unlock(¬ify_app.mutex); if (!got_app) notify_check_next_app(0); } } pthread_exit(NULL); } /* Fill the given structure with information about next appointment. */ unsigned notify_get_next(struct notify_app *a) { time_t current_time; if (!a) return 0; current_time = time(NULL); a->time = current_time + DAYINSEC; a->got_app = 0; a->state = 0; a->txt = NULL; recur_apoint_check_next(a, current_time, get_today()); apoint_check_next(a, current_time); return 1; } /* * This is used for the daemon to check if we have an upcoming appointment or * not. */ unsigned notify_get_next_bkgd(void) { struct notify_app a; a.txt = NULL; if (!notify_get_next(&a)) return 0; if (!a.got_app) { /* No next appointment, reset the previous notified one. */ notify_app.got_app = 0; return 1; } else { if (!notify_same_item(a.time)) notify_update_app(a.time, a.state, a.txt); } if (a.txt) mem_free(a.txt); return 1; } /* Return the description of next appointment to be notified. */ char *notify_app_txt(void) { if (notify_app.got_app) return notify_app.txt; else return NULL; } /* Look for the next appointment within the next 24 hours. */ /* ARGSUSED0 */ static void *notify_thread_app(void *arg) { struct notify_app tmp_app; int force = (arg ? 1 : 0); if (!notify_get_next(&tmp_app)) pthread_exit(NULL); if (!tmp_app.got_app) { pthread_mutex_lock(¬ify_app.mutex); notify_free_app(); pthread_mutex_unlock(¬ify_app.mutex); } else { if (force || !notify_same_item(tmp_app.time)) { pthread_mutex_lock(¬ify_app.mutex); notify_update_app(tmp_app.time, tmp_app.state, tmp_app.txt); pthread_mutex_unlock(¬ify_app.mutex); } } if (tmp_app.txt) mem_free(tmp_app.txt); notify_update_bar(); pthread_exit(NULL); } /* Launch the thread notify_thread_app to look for next appointment. */ void notify_check_next_app(int force) { pthread_t notify_t_app; void *arg = (force ? (void *)1 : NULL); pthread_create(¬ify_t_app, &detached_thread_attr, notify_thread_app, arg); return; } /* Check if the newly created appointment is to be notified. */ void notify_check_added(char *mesg, long start, char state) { time_t current_time; int update_notify = 0; long gap; current_time = time(NULL); pthread_mutex_lock(¬ify_app.mutex); if (!notify_app.got_app) { gap = start - current_time; if (gap >= 0 && gap <= DAYINSEC) update_notify = 1; } else if (start < notify_app.time && start >= current_time) { update_notify = 1; } else if (start == notify_app.time && state != notify_app.state) update_notify = 1; if (update_notify) { notify_update_app(start, state, mesg); } pthread_mutex_unlock(¬ify_app.mutex); notify_update_bar(); } /* Check if the newly repeated appointment is to be notified. */ void notify_check_repeated(struct recur_apoint *i) { unsigned real_app_time; int update_notify = 0; time_t current_time; current_time = time(NULL); pthread_mutex_lock(¬ify_app.mutex); if (recur_item_find_occurrence(i->start, i->dur, &i->exc, i->rpt->type, i->rpt->freq, i->rpt->until, get_today(), &real_app_time)) { if (!notify_app.got_app) { if (real_app_time - current_time <= DAYINSEC) update_notify = 1; } else if (real_app_time < notify_app.time && real_app_time >= current_time) { update_notify = 1; } else if (real_app_time == notify_app.time && i->state != notify_app.state) update_notify = 1; } if (update_notify) { notify_update_app(real_app_time, i->state, i->mesg); } pthread_mutex_unlock(¬ify_app.mutex); notify_update_bar(); } int notify_same_item(long time) { int same = 0; pthread_mutex_lock(&(notify_app.mutex)); if (notify_app.got_app && notify_app.time == time) same = 1; pthread_mutex_unlock(&(notify_app.mutex)); return same; } int notify_same_recur_item(struct recur_apoint *i) { int same = 0; unsigned item_start = 0; recur_item_find_occurrence(i->start, i->dur, &i->exc, i->rpt->type, i->rpt->freq, i->rpt->until, get_today(), &item_start); pthread_mutex_lock(¬ify_app.mutex); if (notify_app.got_app && item_start == notify_app.time) same = 1; pthread_mutex_unlock(&(notify_app.mutex)); return same; } /* Launch the notify-bar main thread. */ void notify_start_main_thread(void) { pthread_create(¬ify_t_main, NULL, notify_main_thread, NULL); notify_check_next_app(0); } /* * Print an option in the configuration menu. * Specific treatment is needed depending on if the option is of type boolean * (either YES or NO), or an option holding a string value. */ static void print_option(WINDOW * win, unsigned x, unsigned y, char *name, char *valstr, unsigned valbool, char *desc, unsigned num) { const int XOFF = 4; const int MAXCOL = col - 3; int x_opt, len; x_opt = x + XOFF + strlen(name); mvwprintw(win, y, x, "[%u] %s", num, name); erase_window_part(win, x_opt, y, MAXCOL, y); if ((len = strlen(valstr)) != 0) { unsigned maxlen; maxlen = MAXCOL - x_opt - 2; custom_apply_attr(win, ATTR_HIGHEST); if (len < maxlen) mvwaddstr(win, y, x_opt, valstr); else { char buf[BUFSIZ]; strncpy(buf, valstr, maxlen - 1); buf[maxlen - 1] = '\0'; mvwprintw(win, y, x_opt, "%s...", buf); } custom_remove_attr(win, ATTR_HIGHEST); } else print_bool_option_incolor(win, valbool, y, x_opt); mvwaddstr(win, y + 1, x, desc); } /* Print options related to the notify-bar. */ static unsigned print_config_options(WINDOW * optwin) { const int XORIG = 3; const int YORIG = 0; const int YOFF = 3; enum { SHOW, DATE, CLOCK, WARN, CMD, NOTIFY_ALL, DMON, DMON_LOG, NB_OPT }; struct opt_s { char *name; char *desc; char valstr[BUFSIZ]; unsigned valnum; } opt[NB_OPT]; int i; opt[SHOW].name = "appearance.notifybar = "; opt[SHOW].desc = _("(if set to YES, notify-bar will be displayed)"); opt[DATE].name = "format.notifydate = "; opt[DATE].desc = _("(Format of the date to be displayed inside notify-bar)"); opt[CLOCK].name = "format.notifytime = "; opt[CLOCK].desc = _("(Format of the time to be displayed inside notify-bar)"); opt[WARN].name = "notification.warning = "; opt[WARN].desc = _("(Warn user if an appointment is within next " "'notify-bar_warning' seconds)"); opt[CMD].name = "notification.command = "; opt[CMD].desc = _("(Command used to notify user of an upcoming appointment)"); opt[NOTIFY_ALL].name = "notification.notifyall = "; opt[NOTIFY_ALL].desc = _("(Notify all appointments instead of flagged ones only)"); opt[DMON].name = "daemon.enable = "; opt[DMON].desc = _("(Run in background to get notifications after exiting)"); opt[DMON_LOG].name = "daemon.log = "; opt[DMON_LOG].desc = _("(Log activity when running in background)"); pthread_mutex_lock(&nbar.mutex); /* String value options */ strncpy(opt[DATE].valstr, nbar.datefmt, BUFSIZ); strncpy(opt[CLOCK].valstr, nbar.timefmt, BUFSIZ); snprintf(opt[WARN].valstr, BUFSIZ, "%d", nbar.cntdwn); strncpy(opt[CMD].valstr, nbar.cmd, BUFSIZ); /* Boolean options */ opt[SHOW].valnum = nbar.show; opt[NOTIFY_ALL].valnum = nbar.notify_all; pthread_mutex_unlock(&nbar.mutex); opt[DMON].valnum = dmon.enable; opt[DMON_LOG].valnum = dmon.log; opt[SHOW].valstr[0] = opt[NOTIFY_ALL].valstr[0] = opt[DMON].valstr[0] = opt[DMON_LOG].valstr[0] = '\0'; for (i = 0; i < NB_OPT; i++) { int y; y = YORIG + i * YOFF; print_option(optwin, XORIG, y, opt[i].name, opt[i].valstr, opt[i].valnum, opt[i].desc, i + 1); } return YORIG + NB_OPT * YOFF; } static void reinit_conf_win(struct scrollwin *win) { unsigned first_line; first_line = win->first_visible_line; wins_scrollwin_delete(win); custom_set_swsiz(win); wins_scrollwin_init(win); wins_show(win->win.p, win->label); win->first_visible_line = first_line; } /* Notify-bar configuration. */ void notify_config_bar(void) { struct scrollwin cwin; char *buf; const char *number_str = _("Enter an option number to change its value"); const char *keys = _("(Press '^P' or '^N' to move up or down, 'Q' to quit)"); const char *date_str = _("Enter the date format (see 'man 3 strftime' for possible formats) "); const char *time_str = _("Enter the time format (see 'man 3 strftime' for possible formats) "); const char *count_str = _ ("Enter the number of seconds (0 not to be warned before an appointment)"); const char *cmd_str = _("Enter the notification command "); int ch; clear(); custom_set_swsiz(&cwin); cwin.label = _("notification options"); wins_scrollwin_init(&cwin); wins_show(cwin.win.p, cwin.label); status_mesg(number_str, keys); cwin.total_lines = print_config_options(cwin.pad.p); wins_scrollwin_display(&cwin); buf = mem_malloc(BUFSIZ); while ((ch = wgetch(win[KEY].p)) != 'q') { buf[0] = '\0'; switch (ch) { case CTRL('N'): wins_scrollwin_down(&cwin, 1); break; case CTRL('P'): wins_scrollwin_up(&cwin, 1); break; case '1': pthread_mutex_lock(&nbar.mutex); nbar.show = !nbar.show; pthread_mutex_unlock(&nbar.mutex); if (notify_bar()) notify_start_main_thread(); else notify_stop_main_thread(); wins_scrollwin_delete(&cwin); reinit_conf_win(&cwin); break; case '2': status_mesg(date_str, ""); pthread_mutex_lock(&nbar.mutex); strncpy(buf, nbar.datefmt, strlen(nbar.datefmt) + 1); pthread_mutex_unlock(&nbar.mutex); if (updatestring(win[STA].p, &buf, 0, 1) == 0) { pthread_mutex_lock(&nbar.mutex); strncpy(nbar.datefmt, buf, strlen(buf) + 1); pthread_mutex_unlock(&nbar.mutex); } break; case '3': status_mesg(time_str, ""); pthread_mutex_lock(&nbar.mutex); strncpy(buf, nbar.timefmt, strlen(nbar.timefmt) + 1); pthread_mutex_unlock(&nbar.mutex); if (updatestring(win[STA].p, &buf, 0, 1) == 0) { pthread_mutex_lock(&nbar.mutex); strncpy(nbar.timefmt, buf, strlen(buf) + 1); pthread_mutex_unlock(&nbar.mutex); } break; case '4': status_mesg(count_str, ""); pthread_mutex_lock(&nbar.mutex); snprintf(buf, BUFSIZ, "%d", nbar.cntdwn); pthread_mutex_unlock(&nbar.mutex); if (updatestring(win[STA].p, &buf, 0, 1) == 0 && is_all_digit(buf) && atoi(buf) >= 0 && atoi(buf) <= DAYINSEC) { pthread_mutex_lock(&nbar.mutex); nbar.cntdwn = atoi(buf); pthread_mutex_unlock(&nbar.mutex); } break; case '5': status_mesg(cmd_str, ""); pthread_mutex_lock(&nbar.mutex); strncpy(buf, nbar.cmd, strlen(nbar.cmd) + 1); pthread_mutex_unlock(&nbar.mutex); if (updatestring(win[STA].p, &buf, 0, 1) == 0) { pthread_mutex_lock(&nbar.mutex); strncpy(nbar.cmd, buf, strlen(buf) + 1); pthread_mutex_unlock(&nbar.mutex); } break; case '6': pthread_mutex_lock(&nbar.mutex); nbar.notify_all = !nbar.notify_all; pthread_mutex_unlock(&nbar.mutex); notify_check_next_app(1); break; case '7': dmon.enable = !dmon.enable; break; case '8': dmon.log = !dmon.log; break; } if (resize) { resize = 0; wins_get_config(); wins_reset(); reinit_conf_win(&cwin); delwin(win[STA].p); win[STA].p = newwin(win[STA].h, win[STA].w, win[STA].y, win[STA].x); keypad(win[STA].p, TRUE); if (notify_bar()) { notify_reinit_bar(); notify_update_bar(); } clearok(curscr, TRUE); } status_mesg(number_str, keys); cwin.total_lines = print_config_options(cwin.pad.p); wins_scrollwin_display(&cwin); } mem_free(buf); wins_scrollwin_delete(&cwin); } calcurse-3.1.4/COPYING0000644000175000001440000000252412105444321011267 00000000000000Copyright (c) 2004-2013 calcurse Development Team All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. calcurse-3.1.4/.version0000644000175000001440000000000612105444505011717 000000000000003.1.4 calcurse-3.1.4/po/0000755000175000001440000000000012105444504010732 500000000000000calcurse-3.1.4/po/es.po0000644000175000001440000014127712105444503011634 00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Free Software Foundation, Inc. # This file is distributed under the same license as the PACKAGE package. # # Translators: # Lukas Fleischer , 2011. msgid "" msgstr "" "Project-Id-Version: calcurse\n" "Report-Msgid-Bugs-To: bugs@calcurse.org\n" "POT-Creation-Date: 2013-02-09 14:04+0100\n" "PO-Revision-Date: 2012-11-23 21:51+0000\n" "Last-Translator: Lukas Fleischer \n" "Language-Team: LANGUAGE \n" "Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" msgid "null pointer" msgstr "" msgid "date error in appointment" msgstr "" msgid "no such appointment" msgstr "" msgid "" "Usage: calcurse [-g|-h|-v] [-an] [-t[num]] [-i] [-x[format]]\n" " [-d |] [-s[date]] [-r[range]]\n" " [-c] [-D] [-S] [--status]\n" " [--read-only]\n" msgstr "" msgid "Try 'calcurse -h' for more information.\n" msgstr "Prueba con 'calcurse -h' para mas informacion.\n" msgid "" "\n" "Copyright (c) 2004-2013 calcurse Development Team.\n" "This is free software; see the source for copying conditions.\n" msgstr "" #, c-format msgid "Calcurse %s - text-based organizer\n" msgstr " Calcurse %s - organizador basado en modo texto\n" msgid "" "\n" "For more information, type '?' from within Calcurse, or read the manpage.\n" msgstr "" "\n" "Para mas informacion, pulsa '?' dentro de Calcurse, o lee la pagina del " "man.\n" msgid "Mail feature requests and suggestions to .\n" msgstr "" msgid "Mail bug reports to .\n" msgstr "" msgid "" "\n" "Miscellaneous:\n" " -h, --help\n" "\tprint this help and exit.\n" "\n" " -v, --version\n" "\tprint calcurse version and exit.\n" "\n" " --status\n" "\tdisplay the status of running instances of calcurse.\n" "\n" " --read-only\n" "\tDon't save configuration nor appointments/todos. Use with care.\n" "\n" "Files:\n" " -c , --calendar \n" "\tspecify the calendar to use (has precedence over '-D').\n" "\n" " -D , --directory \n" "\tspecify the data directory to use.\n" "\tIf not specified, the default directory is ~/.calcurse\n" "\n" "Non-interactive:\n" " -a, --appointment\n" " \tprint events and appointments for current day and exit.\n" "\n" " -d , --day \n" "\tprint events and appointments for or upcoming days and\n" "\texit. To specify both a starting date and a range, use the\n" "\t'--startday' and the '--range' option.\n" "\n" " -g, --gc\n" "\trun the garbage collector for note files and exit. \n" "\n" " -i , --import \n" "\timport the icalendar data contained in . \n" "\n" " -n, --next\n" "\tprint next appointment within upcoming 24 hours and exit. Also given\n" "\tis the remaining time before this next appointment.\n" "\n" " -r[num], --range[=num]\n" "\tprint events and appointments for the [num] number of days\n" "\tand exit. If no [num] is given, a range of 1 day is considered.\n" "\n" " -s[date], --startday[=date]\n" "\tprint events and appointments from [date] and exit.\n" "\tIf no [date] is given, the current day is considered.\n" "\n" " -S, --search=\n" "\tsearch for the given regular expression within events, appointments,\n" "\tand todos description.\n" "\n" " -t[num], --todo[=num]\n" "\tprint todo list and exit. If the optional number [num] is given,\n" "\tthen only todos having a priority equal to [num] will be returned.\n" "\tThe priority number must be between 1 (highest) and 9 (lowest).\n" "\tIt is also possible to specify '0' for the priority, in which case\n" "\tonly completed tasks will be shown.\n" "\n" " -x[format], --export[=format]\n" "\texport user data to the specified format. Events, appointments and\n" "\ttodos are converted and echoed to stdout.\n" "\tTwo possible formats are available: 'ical' and 'pcal'.\n" "\tIf the optional argument format is not given, ical format is\n" "\tselected by default.\n" "\tnote: redirect standard output to export data to a file,\n" "\tby issuing a command such as: calcurse --export > calcurse.dat\n" msgstr "" #, c-format msgid "" "Error: both calcurse (pid: %d) and its daemon (pid: %d)\n" "seem to be running at the same time!\n" "Please check manually and restart calcurse.\n" msgstr "" #, c-format msgid "calcurse is running (pid %d)\n" msgstr "" #, c-format msgid "calcurse is running in background (pid %d)\n" msgstr "" msgid "calcurse is not running\n" msgstr "" msgid "to do:\n" msgstr "Tareas pendientes:\n" msgid "completed tasks:\n" msgstr "" msgid "next appointment:\n" msgstr "Proxima cita:\n" msgid "Argument to the '-d' flag is not valid\n" msgstr "El argumento pasado a la opcion -d no es valido\n" #, c-format msgid "Possible argument format are: '%s' or 'n'\n" msgstr "" msgid "Argument is not valid\n" msgstr "" #, c-format msgid "Argument format for -s and --startday is: '%s'\n" msgstr "" msgid "Argument format for -r and --range is: 'n'\n" msgstr "" msgid "Can not handle more than one regular expression." msgstr "" msgid "Could not compile regular expression." msgstr "" msgid "Argument for '-x' should be either 'ical' or 'pcal'\n" msgstr "" msgid "Option '-S' must be used with either '-d', '-r', '-s', '-a' or '-t'\n" msgstr "" msgid "To do :" msgstr "Tareas pendientes :" msgid "Export to (i)cal or (p)cal format?" msgstr "" msgid "[ip]" msgstr "" msgid "Do you really want to quit ?" msgstr "¿Estas seguro de que quieres salir?" msgid "ERROR setting first day of week" msgstr "" msgid "" "The day you entered is not valid (should be between 01/01/1902 and " "12/31/2037)" msgstr "" msgid "Press [ENTER] to continue" msgstr "Pulsa [INTRO] para continuar" #, c-format msgid "Enter the day to go to [ENTER for today] : %s" msgstr "" msgid "unknown color" msgstr "" msgid "failed to open configuration file" msgstr "" #, c-format msgid "invalid configuration directive: \"%s\"" msgstr "" msgid "" "Pre-3.0.0 configuration file format detected, please upgrade running " "`calcurse-upgrade`." msgstr "" #, c-format msgid "configuration variable unknown: \"%s\"" msgstr "" #, c-format msgid "wrong configuration variable format for \"%s\"" msgstr "" msgid "Exit" msgstr "Salir" msgid "General" msgstr "General" msgid "Layout" msgstr "Disposicion" msgid "Sidebar" msgstr "" msgid "Color" msgstr "Color" msgid "Notify" msgstr "Notificaciones" msgid "Keys" msgstr "" msgid "Select" msgstr "" msgid "Up" msgstr "" msgid "Down" msgstr "" msgid "Left" msgstr "" msgid "Right" msgstr "" msgid "Help" msgstr "Ayuda" msgid "layout configuration" msgstr "" msgid "" "With this configuration menu, one can choose where panels will be\n" "displayed inside calcurse screen. \n" "It is possible to choose between eight different configurations.\n" "\n" "In the configuration representations, letters correspond to:\n" "\n" " 'c' -> calendar panel\n" "\n" " 'a' -> appointment panel\n" "\n" " 't' -> todo panel\n" "\n" msgstr "" msgid "Width +" msgstr "" msgid "Width -" msgstr "" #, no-c-format msgid "" "This configuration screen is used to change the width of the side bar.\n" "The side bar is the part of the screen which contains two panels:\n" "the calendar and, depending on the chosen layout, either the todo list\n" "or the appointment list.\n" "\n" "The side bar width can be up to 50% of the total screen width, but\n" "can't be smaller than " msgstr "" msgid "No color" msgstr "" msgid "Foreground" msgstr "Color del texto" msgid "Background" msgstr "Color del fondo" msgid "(terminal's default)" msgstr "(el del terminal por defecto)" msgid "color theme" msgstr "" msgid "(if set to YES, automatic save is done when quitting)" msgstr "(si se fija en SI, se guardan automaticamente los datos al salir)" msgid "(run the garbage collector when quitting)" msgstr "" msgid "(if not null, automatically save data every 'periodic_save' minutes)" msgstr "" msgid "(if set to YES, confirmation is required before quitting)" msgstr "(si se fija en SI, se requiere confirmacion antes de salir)" msgid "(if set to YES, confirmation is required before deleting an event)" msgstr "(si se fija en SI, se requiere confirmacion antes de borrar un evento)" msgid "(if set to YES, messages about loaded and saved data will be displayed)" msgstr "" msgid "(if set to YES, progress bar will be displayed when saving data)" msgstr "" msgid "Monday" msgstr "" msgid "Sunday" msgstr "" msgid "(specifies the first day of week in the calendar view)" msgstr "" msgid "(Format of the date to be displayed in non-interactive mode)" msgstr "" msgid "(Format to be used when entering a date: " msgstr "" msgid "Enter an option number to change its value" msgstr "" msgid "(Press '^P' or '^N' to move up or down, 'Q' to quit)" msgstr "" msgid "Enter the date format (see 'man 3 strftime' for possible formats) " msgstr "" "Introduce el formato de la fecha (ver 'man 3 strftime' para los formatos\n" "posibles) " msgid "Enter the date format: " msgstr "" msgid "Enter the delay, in minutes, between automatic saves (0 to disable) " msgstr "" msgid "general options" msgstr "" msgid "Undefined option!" msgstr "" msgid "undefined" msgstr "" msgid "Key info" msgstr "" msgid "Add key" msgstr "" msgid "Del key" msgstr "" msgid "Prev Key" msgstr "" msgid "Next Key" msgstr "" msgid "keys configuration" msgstr "" msgid "Press the key you want to assign to:" msgstr "" msgid "This key is not yet recognized by calcurse, please choose another one." msgstr "" #, c-format msgid "This key is already in use for %s, please choose another one." msgstr "" msgid "Some actions do not have any associated key bindings!" msgstr "" msgid "" "Sorry, colors are not supported by your terminal\n" "(Press [ENTER] to continue)" msgstr "" "Lo siento, tu terminal no soporta colores\n" "(Pulsa [INTRO] para continuar)" msgid "unknown item type" msgstr "" msgid "Event :" msgstr "Evento :" msgid "Appointment :" msgstr "Cita :" msgid "unknwon type" msgstr "" #, c-format msgid "Could not stop daemon properly: %s\n" msgstr "" #, c-format msgid "terminated at %s with signal %d\n" msgstr "" #, c-format msgid "Could not remove daemon lock file: %s\n" msgstr "" #, c-format msgid "Could not fork: %s\n" msgstr "" #, c-format msgid "Could not detach from the controlling terminal: %s\n" msgstr "" #, c-format msgid "Could not change working directory: %s\n" msgstr "" msgid "Cannot daemonize, aborting\n" msgstr "" msgid "Could not set lock file\n" msgstr "" #, c-format msgid "Could not access \"%s\": %s\n" msgstr "" #, c-format msgid "started at %s\n" msgstr "" msgid "error loading next appointment\n" msgstr "" #, c-format msgid "launching notification at %s for: \"%s\"\n" msgstr "" msgid "error while sending notification\n" msgstr "" #, c-format msgid "sleeping at %s for %d second\n" msgid_plural "sleeping at %s for %d seconds\n" msgstr[0] "" msgstr[1] "" #, c-format msgid "awakened at %s\n" msgstr "" #, c-format msgid "Could not stop calcurse daemon: %s\n" msgstr "" msgid "date error in the event\n" msgstr "" msgid "Internal error: line too long" msgstr "" msgid "out of memory" msgstr "" #, c-format msgid "key bindings: %s" msgstr "" msgid "Calcurse help" msgstr "" msgid " Welcome to Calcurse. This is the main help screen.\n" msgstr " Bienvenid@ a Calcurse. Esta es la pantalla de ayuda inicial.\n" #, c-format msgid "" "Moving around: Press '%s' or '%s' to scroll text upward or downward\n" " inside help screens, if necessary.\n" "\n" " Exit help: When finished, press '%s' to exit help and go back to\n" " the main Calcurse screen.\n" "\n" " Help topic: At the bottom of this screen you can see a panel with\n" " different fields, represented by a letter and a short\n" " title. This panel contains all the available actions\n" " you can perform when using Calcurse.\n" " By pressing one of the letters appearing in this\n" " panel, you will be shown a short description of the\n" " corresponding action. At the top right side of the\n" " description screen are indicated the user-defined key\n" " bindings that lead to the action.\n" "\n" " Credits: Press '%s' for credits." msgstr "" msgid "Save\n" msgstr "" #, c-format msgid "" "Save calcurse data.\n" "Data are splitted into four different files which contain :\n" "\n" " / ~/.calcurse/conf -> user configuration\n" " | (layout, color, general options)\n" " | ~/.calcurse/apts -> data related to the appointments\n" " | ~/.calcurse/todo -> data related to the todo list\n" " \\ ~/.calcurse/keys -> user-defined key bindings\n" "\n" "In the config menu, you can choose to save the Calcurse data\n" "automatically before quitting." msgstr "" msgid "Import\n" msgstr "" #, c-format msgid "" "Import data from an icalendar file.\n" "You will be asked to enter the file name from which to load ical\n" "items. At the end of the import process, and if the general option\n" "'system_dialogs' is set to 'yes', a report indicating how many items\n" "were imported is shown.\n" "This report contains the total number of lines read, the number of\n" "appointments, events and todo items which were successfully imported,\n" "together with the number of items for which problems occured and that\n" "were skipped, if any.\n" "\n" "If one or more items could not be imported, one has the possibility to\n" "read the import process report in order to identify which problems\n" "occured.\n" "In this report is shown one item per line, with the line in the input\n" "stream at which this item begins, together with the description of why\n" "the item could not be imported.\n" msgstr "" msgid "Export\n" msgstr "" #, c-format msgid "" "Export calcurse data (appointments, events and todos).\n" "This leads to the export submenu, from which you can choose between\n" "two different export formats: 'ical' and 'pcal'. Choosing one of\n" "those formats lets you export calcurse data to icalendar or pcal\n" "format.\n" "\n" "You first need to specify the file to which the data will be exported.\n" "By default, this file is:\n" "\n" " ~/calcurse.ics\n" "\n" "for an ical export, and:\n" "\n" " ~/calcurse.txt\n" "\n" "for a pcal export.\n" "\n" "Calcurse data are exported in the following order:\n" " events, appointments, todos.\n" msgstr "" msgid "Displacement keys\n" msgstr "" #, c-format msgid "" "Move around inside calcurse screens.\n" "The following scheme summarizes how to get around:\n" "\n" " move up\n" " move to previous week\n" "\n" " %s\n" " move left ^ \n" " move to previous day |\n" " %s\n" " <-- + -->\n" " %s\n" " | move right\n" " v move to next day\n" " %s\n" "\n" " move to next week\n" " move down\n" "\n" "Moreover, while inside the calendar panel, the '%s' key moves\n" "to the first day of the week, and the '%s' key selects the last day of\n" "the week.\n" msgstr "" msgid "View\n" msgstr "" #, c-format msgid "" "View the item you select in either the Todo or Appointment panel.\n" "\n" "This is usefull when an event description is longer than the available\n" "space to display it. If that is the case, the description will be\n" "shortened and its end replaced by '...'. To be able to read the entire\n" "description, just press '%s' and a popup window will appear, containing\n" "the whole event.\n" "\n" "Press any key to close the popup window and go back to the main\n" "Calcurse screen." msgstr "" msgid "Pipe\n" msgstr "" #, c-format msgid "" "Pipe the selected item to an external program.\n" "\n" "Press the '%s' key to pipe the currently selected appointment or\n" "todo entry to an external program.\n" "\n" "You will be driven back to calcurse as soon as the program exits.\n" msgstr "" msgid "Tab\n" msgstr "" #, c-format msgid "" "Switch between panels.\n" "The panel currently in use has its border colorized.\n" "\n" "Some actions are possible only if the right panel is selected.\n" "For example, if you want to add a task in the TODO list, you need first\n" "to press the '%s' key to get the TODO panel selected. Then you can\n" "press '%s' to add your item.\n" "\n" "Notice that at the bottom of the screen the list of possible actions\n" "change while pressing '%s', so you always know what action can be\n" "performed on the selected panel." msgstr "" msgid "Goto\n" msgstr "" #, c-format msgid "" "Jump to a specific day in the calendar.\n" "\n" "Using this command, you do not need to travel to that day using\n" "the displacement keys inside the calendar panel.\n" "If you hit [ENTER] without specifying any date, Calcurse checks the\n" "system current date and you will be taken to that date.\n" "\n" "Notice that pressing '%s', whatever panel is\n" "selected, will select current day in the calendar." msgstr "" msgid "Delete\n" msgstr "" #, c-format msgid "" "Delete an element in the ToDo or Appointment list.\n" "\n" "Depending on which panel is selected when you press the delete key,\n" "the hilighted item of either the ToDo or Appointment list will be \n" "removed from this list.\n" "\n" "If the item to be deleted is recurrent, you will be asked if you\n" "wish to suppress all of the item occurences or just the one you\n" "selected.\n" "\n" "If the general option 'confirm_delete' is set to 'YES', then you will\n" "be asked for confirmation before deleting the selected event.\n" "Do not forget to save the calendar data to retrieve the modifications\n" "next time you launch Calcurse." msgstr "" msgid "Add\n" msgstr "" #, c-format msgid "" "Add an item in either the ToDo or Appointment list, depending on which\n" "panel is selected when you press '%s'.\n" "\n" "To enter a new item in the TODO list, you will need first to enter the\n" "description of this new item. Then you will be asked to specify the todo\n" "priority. This priority is represented by a number going from 9 for the\n" "lowest priority, to 1 for the highest one. It is still possible to\n" "change the item priority afterwards, by using the '%s' and '%s' keys\n" "inside the todo panel.\n" "\n" "If the APPOINTMENT panel is selected while pressing '%s', you will be\n" "able to enter either a new appointment or a new all-day long event.\n" "To enter a new event, press [ENTER] instead of the item start time, and\n" "just fill in the event description.\n" "To enter a new appointment to be added in the APPOINTMENT list, you\n" "will need to enter successively the time at which the appointment\n" "begins, the appointment length (either by specifying the end time in\n" "[hh:mm] or the duration in [+hh:mm], [+xxdxxhxxm] or [+mm] format), \n" "and the description of the event.\n" "\n" "The day at which occurs the event or appointment is the day currently\n" "selected in the calendar, so you need to move to the desired day before\n" "pressing '%s'.\n" "\n" "Notes:\n" " o if an appointment lasts for such a long time that it continues\n" " on the next days, this event will be indicated on all the\n" " corresponding days, and the beginning or ending hour will be\n" " replaced by '..' if the event does not begin or end on the day.\n" " o if you only press [ENTER] at the APPOINTMENT or TODO event\n" " description prompt, without any description, no item will be\n" " added.\n" " o do not forget to save the calendar data to retrieve the new\n" " event next time you launch Calcurse." msgstr "" msgid "Copy and Paste\n" msgstr "" #, c-format msgid "" "Copy and paste the currently selected item. This is useful to quickly\n" "copy an item from one date to another. To do so, one must first\n" "highlight the item that needs to be copied, then press '%s' to copy.\n" "Once the new date is chosen in the calendar, the appointment panel must\n" "be selected and the '%s' key must be pressed to paste the item. The item\n" "will appear in the appointment panel, assigned to the newly selected\n" "date.\n" "\n" msgstr "" msgid "Edit Item\n" msgstr "" #, c-format msgid "" "Edit the item which is currently selected.\n" "Depending on the item type (appointment, event, or todo), and if it is\n" "repeated or not, you will be asked to choose one of the item properties\n" "to modify. An item property is one of the following: the start time, the\n" "end time, the description, or the item repetition.\n" "Once you have chosen the property you want to modify, you will be shown\n" "its actual value, and you will be able to change it as you like.\n" "\n" "Notes:\n" " o if you choose to edit the item repetition properties, you will\n" " be asked to re-enter all of the repetition characteristics\n" " (repetition type, frequence, and ending date). Moreover, the\n" " previous data concerning the deleted occurences will be lost.\n" " o do not forget to save the calendar data to retrieve the\n" " modified properties next time you launch Calcurse." msgstr "" msgid "EditNote\n" msgstr "" #, c-format msgid "" "Attach a note to any type of item, or edit an already existing note.\n" "This feature is useful if you do not have enough space to store all\n" "of your item description, or if you would like to add sub-tasks to an\n" "already existing todo item for example.\n" "Before pressing the '%s' key, you first need to highlight the item you\n" "want the note to be attached to. Then you will be driven to an\n" "external editor to edit your note. This editor is chosen the following\n" "way:\n" " o if the 'VISUAL' environment variable is set, then this will be\n" " the default editor to be called.\n" " o if 'VISUAL' is not set, then the 'EDITOR' environment variable\n" " will be used as the default editor.\n" " o if none of the above environment variables is set, then\n" " '/usr/bin/vi' will be used.\n" "\n" "Once the item note is edited and saved, quit your favorite editor.\n" "You will then go back to Calcurse, and the '>' sign will appear in front\n" "of the highlighted item, meaning there is a note attached to it." msgstr "" msgid "ViewNote\n" msgstr "" #, c-format msgid "" "View a note which was previously attached to an item (an item which\n" "owns a note has a '>' sign in front of it).\n" "This command only permits to view the note, not to edit it (to do so,\n" "use the 'EditNote' command, by pressing the '%s' key).\n" "Once you highlighted an item with a note attached to it, and the '%s' key\n" "was pressed, you will be driven to an external pager to view that note.\n" "The default pager is chosen the following way:\n" " o if the 'PAGER' environment variable is set, then this will be\n" " the default viewer to be called.\n" " o if the above environment variable is not set, then\n" " '/usr/bin/less' will be used.\n" "As for editing a note, quit the pager and you will be driven back to\n" "Calcurse." msgstr "" msgid "Priority\n" msgstr "" #, c-format msgid "" "Change the priority of the currently selected item in the ToDo list.\n" "Priorities are represented by the number appearing in front of the\n" "todo description. This number goes from 9 for the lowest priority to\n" "1 for the highest priority.\n" "Todo having higher priorities are placed first (at the top) inside the\n" "todo panel.\n" "\n" "If you want to raise the priority of a todo item, you need to press '%s'.\n" "In doing so, the number in front of this item will decrease, meaning its\n" "priority increases. The item position inside the todo panel may change,\n" "depending on the priority of the items above it.\n" "\n" "At the opposite, to lower a todo priority, press '%s'. The todo position\n" "may also change depending on the priority of the items below." msgstr "" msgid "Repeat\n" msgstr "" #, c-format msgid "" "Repeat an event or an appointment.\n" "You must first select the item to be repeated by moving inside the\n" "appointment panel. Then pressing '%s' will lead you to a set of three\n" "questions, with which you will be able to specify the repetition\n" "characteristics:\n" "\n" " o type: you can choose between a daily, weekly, monthly or\n" " yearly repetition by pressing 'D', 'W', 'M' or 'Y'\n" " respectively.\n" "\n" " o frequence: this indicates how often the item shall be repeated.\n" " For example, if you want to remember an anniversary,\n" " choose a 'yearly' repetition with a frequence of '1',\n" " which means it must be repeated every year. Another\n" " example: if you go to the restaurant every two days,\n" " choose a 'daily' repetition with a frequence of '2'.\n" "\n" " o ending date: this specifies when to stop repeating the selected\n" " event or appointment. To indicate an endless \n" " repetition, enter '0' and the item will be repeated\n" " forever.\n" "\n" "Notes:\n" " o repeated items are marked with an '*' inside the appointment\n" " panel, to be easily recognizable from non-repeated ones.\n" " o the 'Repeat' and 'Delete' command can be mixed to create\n" " complicated configurations, as it is possible to delete only\n" " one occurence of a repeated item." msgstr "" msgid "Flag Item\n" msgstr "" #, c-format msgid "" "Toggle an appointment's 'important' flag or a todo's 'completed' flag.\n" "If a todo is flagged as completed, its priority number will be replaced\n" "by an 'X' sign. Completed tasks will no longer appear in exported data\n" "or when using the '-t' command line flag (unless specifying '0' as the\n" "priority number, in which case only completed tasks will be shown).\n" "\n" "If an appointment is flagged as important, an exclamation mark appears\n" "in front of it, and you will be warned if time gets closed to the\n" "appointment start time.\n" "To customize the way one gets notified, the configuration submenu lets\n" "you choose the command launched to warn user of an upcoming appointment,\n" "and how long before it he gets notified." msgstr "" msgid "Config\n" msgstr "" #, c-format msgid "" "Open the configuration submenu.\n" "From this submenu, you can select between color, layout, notification\n" "and general options, and you can also configure your keybindings.\n" "\n" "The color submenu lets you choose the color theme.\n" "The layout submenu lets you choose the Calcurse screen layout, in other\n" "words where to place the three different panels on the screen.\n" "The general options submenu brings a screen with the different options\n" "which modifies the way Calcurse interacts with the user.\n" "The notify submenu allows you to change the notify-bar settings.\n" "The keys submenu lets you define your own key bindings.\n" "\n" "Do not forget to save the calendar data to retrieve your configuration\n" "next time you launch Calcurse." msgstr "" msgid "Generic keybindings\n" msgstr "" #, c-format msgid "" "Some of the keybindings apply whatever panel is selected. They are\n" "called generic keybinding.\n" "Here is the list of all the generic key bindings, together with their\n" "corresponding action:\n" "\n" " '%s' : Redraw function -> redraws calcurse panels, this is useful if\n" " you resize your terminal screen or when\n" " garbage appears inside the display\n" " '%s' : Add Appointment -> add an appointment or an event\n" " '%s' : Add ToDo -> add a todo\n" " '%s' : -1 Day -> move to previous day\n" " '%s' : +1 Day -> move to next day\n" " '%s' : -1 Week -> move to previous week\n" " '%s' : +1 Week -> move to next week\n" " '%s' : -1 Month -> move to previous month\n" " '%s' : +1 Month -> move to next month\n" " '%s' : -1 Year -> move to previous year\n" " '%s' : +1 Year -> move to next year\n" " '%s' : Goto today -> move to current day\n" "\n" "The '%s' and '%s' keys are used to scroll text upward or downward\n" "when inside specific screens such the help screens for example.\n" "They are also used when the calendar screen is selected to switch\n" "between the available views (monthly and weekly calendar views)." msgstr "" msgid "OtherCmd\n" msgstr "" #, c-format msgid "" "Switch between status bar help pages.\n" "Because the terminal screen is too narrow to display all of the\n" "available commands, you need to press '%s' to see the next set of\n" "commands together with their keybindings.\n" "Once the last status bar page is reached, pressing '%s' another time\n" "leads you back to the first page." msgstr "" msgid "Calcurse - text-based organizer" msgstr "Calcurse - organizador basado en modo texto" #, c-format msgid "" "\n" "Copyright (c) 2004-2013 calcurse Development Team\n" "All rights reserved.\n" "\n" "Redistribution and use in source and binary forms, with or without\n" "modification, are permitted provided that the following conditions\n" "are met:\n" "\n" "\t- Redistributions of source code must retain the above\n" "\t copyright notice, this list of conditions and the\n" "\t following disclaimer.\n" "\n" "\t- Redistributions in binary form must reproduce the above\n" "\t copyright notice, this list of conditions and the\n" "\t following disclaimer in the documentation and/or other\n" "\t materials provided with the distribution.\n" "\n" "\n" "Send your feedback or comments to : misc@calcurse.org\n" "Calcurse home page : http://calcurse.org" msgstr "" msgid "unknown ical type" msgstr "" msgid "recurrence frequence not found." msgstr "" msgid "recurrence frequence not recognized." msgstr "" msgid "recurrence rule malformed." msgstr "" msgid "recurrence exception dates malformed." msgstr "" msgid "could not get entire item description." msgstr "" msgid "description malformed." msgstr "" msgid "appointment has no start time." msgstr "" msgid "could not compute duration (no end time)." msgstr "" msgid "item has a negative duration." msgstr "" msgid "event date is not defined." msgstr "" msgid "item could not be identified." msgstr "" msgid "could not retrieve item summary." msgstr "" msgid "could not retrieve event start time." msgstr "" msgid "could not retrieve event end time." msgstr "" msgid "item duration malformed." msgstr "" msgid "The ical file seems to be malformed. The end of item was not found." msgstr "" msgid "item priority is not acceptable (must be between 1 and 9)." msgstr "" msgid "Warning: ical header malformed or wrong version number. Aborting..." msgstr "" msgid "Enter the new time ([hh:mm] or [hhmm]) : " msgstr "" msgid "Press [Enter] to continue" msgstr "Pulsa [INTRO] para continuar" msgid "You entered an invalid time, should be [hh:mm] or [hhmm]" msgstr "" msgid "" "Enter new end time ([hh:mm], [hhmm]) or duration ([+hh:mm], [+xxxdxxhxxm] or " "[+mm]) : " msgstr "" msgid "Invalid time: start time must be before end time!" msgstr "Hora no valida: La hora de inicio debe ser anterior a la hora final!" msgid "Enter the new item description:" msgstr "Introduce la descripcion del nuevo elemento:" msgid "Enter the new repetition type:" msgstr "" msgid "(d)aily" msgstr "" msgid "(w)eekly" msgstr "" msgid "(m)onthly" msgstr "" msgid "(y)early" msgstr "" #, c-format msgid "(currently using %s)" msgstr "" msgid "[dwmy]" msgstr "" msgid "The frequence you entered is not valid." msgstr "La frecuencia que has introducido no es valida." msgid "The entered date is not valid." msgstr "La fecha introducida no es valida." #, c-format msgid "Possible formats are [%s] or '0' for an endless repetition." msgstr "" msgid "Enter the new repetition frequence:" msgstr "Introduce la nueva frecuencia de repeticion:" #, c-format msgid "Enter the new ending date: [%s] or '0'" msgstr "" msgid "Description" msgstr "" msgid "Repetition" msgstr "" msgid "Edit: " msgstr "" msgid "Start time" msgstr "" msgid "End time" msgstr "" msgid "Pipe item to external command:" msgstr "" msgid "" "Enter start time ([hh:mm] or [hhmm]), leave blank for an all-day event : " msgstr "" msgid "" "Enter end time ([hh:mm] or [hhmm]) or duration ([+hh:mm], [+xxxdxxhxxm] or " "[+mm]) : " msgstr "" msgid "Enter description :" msgstr "Introduce la descripcion :" msgid "You entered an invalid start time, should be [hh:mm] or [hhmm]" msgstr "" msgid "" "Invalid end time/duration, should be [hh:mm], [hhmm], [+hh:mm], " "[+xxxdxxhxxm] or [+mm]" msgstr "" msgid "Do you really want to delete this item ?" msgstr "¿Seguro que quieres borrar este elemento?" msgid "This item is recurrent. Delete (a)ll occurences or just this (o)ne ?" msgstr "" "Este evento es recurrente. ¿ Borrar todas las recurrencias (a) o solo esta\n" "(o) ?" msgid "[ao]" msgstr "" msgid "This item has a note attached to it. Delete (i)tem or just its (n)ote ?" msgstr "" msgid "[in]" msgstr "" msgid "no such type" msgstr "" msgid "Enter the new ToDo item : " msgstr "Introduce una nueva tarea pendiente :" msgid "Enter the ToDo priority [1 (highest) - 9 (lowest)] :" msgstr "" "Introduce la prioridad de la tarea [1 (la mas alta) - 9 (la mas baja)] :" msgid "Do you really want to delete this task ?" msgstr "¿Seguro que quieres borrar esta tarea ?" msgid "This item has a note attached to it. Delete (t)odo or just its (n)ote ?" msgstr "" msgid "[tn]" msgstr "" msgid "Enter the new ToDo description :" msgstr "Introduce la descripcion de la nueva tarea :" msgid "Enter the repetition type:" msgstr "" msgid "Enter the repetition frequence:" msgstr "Introduce la frecuencia de repeticion:" #, c-format msgid "Enter the ending date: [%s] or '0' for an endless repetition" msgstr "" #, c-format msgid "Possible formats are [%s] or '0' for an endless repetition" msgstr "" msgid "This item is already a repeated one." msgstr "Este elemento es ya un elemento repetido." msgid "Press [ENTER] to continue." msgstr "Pulsa [INTRO] para continuar." msgid "Sorry, the date you entered is older than the item start time." msgstr "La fecha que has introducido es anterior a la de inicio del elemento." msgid "wrong item type" msgstr "" msgid "Saving..." msgstr "Guardando..." msgid "Loading..." msgstr "Cargando..." msgid "Exporting..." msgstr "Exportando..." msgid "Internal error while displaying progress bar" msgstr "" msgid "Choose the file used to export calcurse data:" msgstr "Elige el archivo que se usara para exportar los datos de Calcurse:" msgid "The file cannot be accessed, please enter another file name." msgstr "El archivo no es accesible, por favor elige otro nombre de archivo." #, c-format msgid "Failed to open \"%s\", - %s\n" msgstr "" msgid "Failed to build message\n" msgstr "" #, c-format msgid "Failed to print message \"%s\"\n" msgstr "" #, c-format msgid "Failed to close \"%s\" - %s\n" msgstr "" #, c-format msgid "%s does not exist, create it now [y or n] ? " msgstr "%s no existe, crearlo ahora [y o n] ?" msgid "aborting...\n" msgstr "abortando...\n" #, c-format msgid "%s successfully created\n" msgstr "%s creado con exito\n" msgid "starting interactive mode...\n" msgstr "arrancando modo interactivo...\n" msgid "Problems accessing data file ..." msgstr "Problemas al acceder al fichero de datos..." msgid "The data files were successfully saved" msgstr "Los archivos de datos se han salvado con exito" msgid "failed to open appointment file" msgstr "" msgid "syntax error in the item date" msgstr "" msgid "no event nor appointment found" msgstr "" msgid "syntax error in item time or duration" msgstr "" msgid "syntax error in item identifier" msgstr "" msgid "wrong format in the appointment or event" msgstr "" msgid "syntax error in item repetition" msgstr "" msgid "failed to open todo file" msgstr "" msgid "failed to open key file" msgstr "" msgid "" "\n" "Too many errors while reading configuration file!\n" "Please backup your keys file, remove it from directory, and launch calcurse " "again.\n" msgstr "" msgid "Could not read key label" msgstr "" msgid "Key label not recognized" msgstr "" #, c-format msgid "Error reading key: \"%s\"" msgstr "" #, c-format msgid "\"%s\" assigned multiple times!" msgstr "" msgid "There were some errors when loading keys file, see log file ?" msgstr "" msgid "Too many errors while reading keys file, aborting..." msgstr "" #, c-format msgid "FATAL ERROR: could not create %s: %s\n" msgstr "" msgid "Welcome to Calcurse. Missing data files were created." msgstr "Bienvenid@ a Calcurse. Se crearon los archivos de datos que faltaban." msgid "Data files found. Data will be loaded now." msgstr "Archivos de datos encontrados. Ahora se cargaran los datos." msgid "The data were successfully exported" msgstr "Los datos se han exportado correctamente" msgid "unknown export type" msgstr "" msgid "wrong export mode" msgstr "" msgid "Enter the file name to import data from:" msgstr "" #, c-format msgid "Import process report: %04d lines read " msgstr "" msgid "unknown import type" msgstr "" msgid "FATAL ERROR: the input file cannot be accessed, Aborting..." msgstr "" msgid "FATAL ERROR: wrong import mode" msgstr "" #, c-format msgid "%d app" msgid_plural "%d apps" msgstr[0] "" msgstr[1] "" #, c-format msgid "%d event" msgid_plural "%d events" msgstr[0] "" msgstr[1] "" #, c-format msgid "%d todo" msgid_plural "%d todos" msgstr[0] "" msgstr[1] "" #, c-format msgid "%d skipped" msgstr "" msgid "Some items could not be imported, see log file ?" msgstr "" msgid "Warning: could not create temporary log file, Aborting..." msgstr "" msgid "Warning: could not open temporary log file, Aborting..." msgstr "" msgid "No log file to display!" msgstr "" #, c-format msgid "Warning: could not erase temporary log file %s, Aborting..." msgstr "" msgid "Invalid delay" msgstr "" #, c-format msgid "" "\n" "WARNING: it seems that another calcurse instance is already running.\n" "If this is not the case, please remove the following lock file: \n" "\"%s\"\n" "and restart calcurse.\n" msgstr "" msgid "" "#\n" "# Calcurse keys configuration file\n" "#\n" "# This file sets the keybindings used by Calcurse.\n" "# Lines beginning with \"#\" are comments, and ignored by Calcurse.\n" "# To assign a keybinding to an action, this file must contain a line\n" "# with the following syntax:\n" "#\n" "# ACTION KEY1 KEY2 ... KEYn\n" "#\n" "# Where ACTION is what will be performed when KEY1, KEY2, ..., or KEYn\n" "# will be pressed.\n" "#\n" "# To define bindings which use the CONTROL key, prefix the key with 'C-'.\n" "# The escape, space bar and horizontal Tab key can be specified using\n" "# the 'ESC', 'SPC' and 'TAB' keyword, respectively.\n" "# Arrow keys can also be specified with the UP, DWN, LFT, RGT keywords.\n" "# Last, Home and End keys can be assigned using 'KEY_HOME' and 'KEY_END'\n" "# keywords.\n" "#\n" "# A description of what each ACTION keyword is used for is available\n" "# from calcurse online configuration menu.\n" msgstr "" msgid "FATAL ERROR: could not create default keys file." msgstr "" msgid "FATAL ERROR: key value out of bounds" msgstr "" msgid "Cancel the ongoing action." msgstr "" msgid "Select the highlighted item." msgstr "" msgid "Print general information about calcurse's authors, license, etc." msgstr "" msgid "Display hints whenever some help screens are available." msgstr "" msgid "Exit from the current menu, or quit calcurse." msgstr "" msgid "Save calcurse data." msgstr "" msgid "Copy the item that is currently selected." msgstr "" msgid "Paste an item at the current position." msgstr "" msgid "Select next panel in calcurse main screen." msgstr "" msgid "Import data from an external file." msgstr "" msgid "Export data to a new file format." msgstr "" msgid "Select the day to go to." msgstr "" msgid "Show next possible actions inside status bar." msgstr "" msgid "Enter the configuration menu." msgstr "" msgid "Redraw calcurse's screen." msgstr "" msgid "Add an appointment, whichever panel is currently selected." msgstr "" msgid "Add a todo item, whichever panel is currently selected." msgstr "" msgid "" "Move to previous day in calendar, whichever panel is currently selected." msgstr "" msgid "Move to next day in calendar, whichever panel is currently selected." msgstr "" msgid "" "Move to previous week in calendar, whichever panel is currently selected" msgstr "" msgid "Move to next week in calendar, whichever panel is currently selected." msgstr "" msgid "" "Move to previous month in calendar, whichever panel is currently selected" msgstr "" msgid "Move to next month in calendar, whichever panel is currently selected." msgstr "" msgid "" "Move to previous year in calendar, whichever panel is currently selected" msgstr "" msgid "Move to next year in calendar, whichever panel is currently selected." msgstr "" msgid "Scroll window down (e.g. when displaying text inside a popup window)." msgstr "" msgid "Scroll window up (e.g. when displaying text inside a popup window)." msgstr "" msgid "Go to today, whichever panel is selected." msgstr "" msgid "Move to the right." msgstr "" msgid "Move to the left." msgstr "" msgid "Move down." msgstr "" msgid "Move up." msgstr "" msgid "" "Select the first day of the current week when inside the calendar panel." msgstr "" msgid "Select the last day of the current week when inside the calendar panel." msgstr "" msgid "Add an item to the currently selected panel." msgstr "" msgid "Delete the currently selected item." msgstr "" msgid "Edit the currently seleted item." msgstr "" msgid "Display the currently selected item inside a popup window." msgstr "" msgid "Flag the currently selected item as important." msgstr "" msgid "Repeat an item" msgstr "" msgid "Pipe the currently selected item to an external program." msgstr "" msgid "Attach (or edit if one exists) a note to the currently selected item" msgstr "" msgid "View the note attached to the currently selected item." msgstr "" msgid "Raise a task priority inside the todo panel." msgstr "" msgid "Lower a task priority inside the todo panel." msgstr "" msgid "FATAL ERROR: null file pointer." msgstr "" #, c-format msgid "When adding default key for \"%s\", \"%s\" was already assigned!" msgstr "" msgid "xmalloc: zero size" msgstr "" msgid "xmalloc: out of memory" msgstr "" msgid "xcalloc: zero size" msgstr "" msgid "xcalloc: overflow" msgstr "" msgid "xcalloc: out of memory" msgstr "" msgid "xrealloc: zero size" msgstr "" msgid "xrealloc: overflow" msgstr "" msgid "xrealloc: out of memory" msgstr "" msgid "xfree: null pointer" msgstr "" msgid "could not allocate memory to store block info" msgstr "" msgid "Block not found" msgstr "" #, c-format msgid "overflow at %s" msgstr "" #, c-format msgid "dbg_free: null pointer at %s" msgstr "" #, c-format msgid "block seems already freed at %s" msgstr "" #, c-format msgid "corrupt block header at %s" msgstr "" #, c-format msgid "corrupt block end at %s, (end = %u, should be %d)" msgstr "" msgid "---==== MEMORY BLOCK ====----------------\n" msgstr "" #, c-format msgid " id: %u\n" msgstr "" #, c-format msgid " size: %u\n" msgstr "" #, c-format msgid " allocated in: %s\n" msgstr "" msgid "-----------------------------------------\n" msgstr "" msgid "+------------------------------+\n" msgstr "" msgid "| calcurse memory usage report |\n" msgstr "" #, c-format msgid " number of calls: %u\n" msgstr "" #, c-format msgid " allocated blocks: %u\n" msgstr "" #, c-format msgid " unfreed blocks: %u\n" msgstr "" #, c-format msgid "Warning: could not open %s, Aborting..." msgstr "" msgid "error while launching command: could not fork" msgstr "" msgid "error while launching command" msgstr "" msgid "(if set to YES, notify-bar will be displayed)" msgstr "(si se fija en SI, se mostrara la barra de notificaciones)" msgid "(Format of the date to be displayed inside notify-bar)" msgstr "(Formato de la fecha dentro de la barra de notificaciones)" msgid "(Format of the time to be displayed inside notify-bar)" msgstr "(Formato de la hora dentro de la barra de notificaciones)" msgid "" "(Warn user if an appointment is within next 'notify-bar_warning' seconds)" msgstr "" "(Alarma de cita en los proximos 'alarma_barra-notificaciones' segundos)" msgid "(Command used to notify user of an upcoming appointment)" msgstr "(Comando usado para notificar al usuario una cita proxima)" msgid "(Notify all appointments instead of flagged ones only)" msgstr "" msgid "(Run in background to get notifications after exiting)" msgstr "" msgid "(Log activity when running in background)" msgstr "" msgid "Enter the time format (see 'man 3 strftime' for possible formats) " msgstr "" "Introduce el formato de la hora (ver 'man 3 strftime' para los formatos\n" "posibles) " msgid "Enter the number of seconds (0 not to be warned before an appointment)" msgstr "" "Introduce el numero de segundos (con 0 no se avisara antes de una cita)" msgid "Enter the notification command " msgstr "Introduce el comando de notificacion" msgid "notification options" msgstr "" msgid "incoherent repetition type" msgstr "" msgid "unknown repetition type" msgstr "" msgid "unknown character" msgstr "" msgid "date error in event" msgstr "" msgid "event not found" msgstr "" msgid "appointment not found" msgstr "" msgid "syntax error in item date" msgstr "" #, c-format msgid "Could not remove calcurse lock file: %s\n" msgstr "" #, c-format msgid "Error setting signal #%d : %s\n" msgstr "" msgid "no note attached" msgstr "" msgid "no such todo" msgstr "" msgid "todo not found" msgstr "" msgid "/!\\ INTERNAL ERROR /!\\" msgstr "" msgid "Please report the following bug:" msgstr "" msgid "[yn]" msgstr "" msgid "Press any key to continue..." msgstr "Pulsa cualquier tecla para continuar..." msgid "failure in mktime" msgstr "" msgid "error in mktime" msgstr "" msgid "could not convert string" msgstr "" msgid "out of range" msgstr "" msgid "yes" msgstr "si" msgid "no" msgstr "no" msgid "option not defined" msgstr "" #, c-format msgid "temporary file \"%s\" could not be created" msgstr "" #, c-format msgid "Error when closing file at %s" msgstr "" msgid "No note file found\n" msgstr "" msgid "January" msgstr "Enero" msgid "February" msgstr "Febrero" msgid "March" msgstr "Marzo" msgid "April" msgstr "Abril" msgid "May" msgstr "Mayo" msgid "June" msgstr "Junio" msgid "July" msgstr "Julio" msgid "August" msgstr "Agosto" msgid "September" msgstr "Septiembre" msgid "October" msgstr "Octubre" msgid "November" msgstr "Noviembre" msgid "December" msgstr "Diciembre" msgid "Sun" msgstr "Dom" msgid "Mon" msgstr "Lun" msgid "Tue" msgstr "Mar" msgid "Wed" msgstr "Mie" msgid "Thu" msgstr "Jue" msgid "Fri" msgstr "Vie" msgid "Sat" msgstr "Sab" msgid "mm/dd/yyyy" msgstr "" msgid "dd/mm/yyyy" msgstr "" msgid "yyyy/mm/dd" msgstr "" msgid "yyyy-mm-dd" msgstr "" msgid "Calendar" msgstr "Calendario" msgid "Appointments" msgstr "Citas y eventos" msgid "ToDo" msgstr "Tareas pendientes" msgid "Quit" msgstr "Salir" msgid "Save" msgstr "Guardar" msgid "Copy" msgstr "" msgid "Paste" msgstr "" msgid "Chg Win" msgstr "" msgid "Import" msgstr "" msgid "Export" msgstr "Exportar" msgid "Go to" msgstr "Ir a" msgid "Config" msgstr "Config" msgid "Redraw" msgstr "Redibujar" msgid "Add Appt" msgstr "Añadir Cita" msgid "Add Todo" msgstr "Añadir tarea" msgid "-1 Day" msgstr "" msgid "+1 Day" msgstr "" msgid "-1 Week" msgstr "" msgid "+1 Week" msgstr "" msgid "-1 Month" msgstr "" msgid "+1 Month" msgstr "" msgid "-1 Year" msgstr "" msgid "+1 Year" msgstr "" msgid "Today" msgstr "" msgid "Nxt View" msgstr "" msgid "Prv View" msgstr "" msgid "beg Week" msgstr "" msgid "end Week" msgstr "" msgid "Add Item" msgstr "Añadir elemento" msgid "Del Item" msgstr "Borrar elemento" msgid "Edit Itm" msgstr "Editar elemento" msgid "View" msgstr "Vista" msgid "Pipe" msgstr "" msgid "Flag Itm" msgstr "Marcar elemento" msgid "Repeat" msgstr "Repetir" msgid "EditNote" msgstr "" msgid "ViewNote" msgstr "" msgid "Prio.+" msgstr "" msgid "Prio.-" msgstr "" msgid "OtherCmd" msgstr "Otros comandos" msgid "unknown panel" msgstr "" msgid "Usage: calcurse-upgrade [-h|-v|--config ]" msgstr "" msgid "unrecognized option:" msgstr "" msgid "Configuration file not found:" msgstr "" msgid "Pre-3.0.0 configuration file format detected..." msgstr "" msgid "Create temporary backup of the configuration file..." msgstr "" msgid "Old backup file found:" msgstr "" msgid "" "\n" "If a previous conversion did not complete, please try to restore your\n" "configuration from this backup and then remove the backup file." msgstr "" msgid "done" msgstr "" msgid "Old temporary file found:" msgstr "" msgid "" "\n" "If a previous conversion did not complete, please try to remove this file " "and\n" "start over with a backup of your old configuration file." msgstr "" msgid "Upgrade configuration directives..." msgstr "" msgid "Remove temporary backup..." msgstr "" calcurse-3.1.4/po/pt_BR.po0000644000175000001440000025363612105444503012236 00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Free Software Foundation, Inc. # This file is distributed under the same license as the PACKAGE package. # # Translators: # Rafael Ferreira , 2012. msgid "" msgstr "" "Project-Id-Version: calcurse\n" "Report-Msgid-Bugs-To: bugs@calcurse.org\n" "POT-Creation-Date: 2013-02-09 14:04+0100\n" "PO-Revision-Date: 2012-11-24 04:59+0000\n" "Last-Translator: Rafael Ferreira \n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/" "calcurse/language/pt_BR/)\n" "Language: pt_BR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" msgid "null pointer" msgstr "ponteiro nulo" msgid "date error in appointment" msgstr "erro de data no agendamento" msgid "no such appointment" msgstr "agendamento inexistente" msgid "" "Usage: calcurse [-g|-h|-v] [-an] [-t[num]] [-i] [-x[format]]\n" " [-d |] [-s[date]] [-r[range]]\n" " [-c] [-D] [-S] [--status]\n" " [--read-only]\n" msgstr "" "Usage: calcurse [-g|-h|-v] [-an] [-t[num]] [-i] [-x[format]]\n" " [-d |] [-s[date]] [-r[range]]\n" " [-c] [-D] [-S] [--status]\n" " [--read-only]\n" msgid "Try 'calcurse -h' for more information.\n" msgstr "Tente \"calcurse -h\" para maiores informações.\n" msgid "" "\n" "Copyright (c) 2004-2013 calcurse Development Team.\n" "This is free software; see the source for copying conditions.\n" msgstr "" "\n" "Copyright (c) 2004-2012 Equipe de Desenvolvimento do calcurse.\n" "Este é um software livre; veja o código fonte para condições de cópia.\n" #, c-format msgid "Calcurse %s - text-based organizer\n" msgstr "Calcurse %s - organizador baseado em texto\n" msgid "" "\n" "For more information, type '?' from within Calcurse, or read the manpage.\n" msgstr "" "\n" "Para maiores informações, pressione \"?\" estando dentro do Calcurse ou leia " "a página man.\n" msgid "Mail feature requests and suggestions to .\n" msgstr "" "Envie solicitações de recursos e sugestões para .\\n\n" msgid "Mail bug reports to .\n" msgstr "Envie relatórios de erros para .\\n\n" msgid "" "\n" "Miscellaneous:\n" " -h, --help\n" "\tprint this help and exit.\n" "\n" " -v, --version\n" "\tprint calcurse version and exit.\n" "\n" " --status\n" "\tdisplay the status of running instances of calcurse.\n" "\n" " --read-only\n" "\tDon't save configuration nor appointments/todos. Use with care.\n" "\n" "Files:\n" " -c , --calendar \n" "\tspecify the calendar to use (has precedence over '-D').\n" "\n" " -D , --directory \n" "\tspecify the data directory to use.\n" "\tIf not specified, the default directory is ~/.calcurse\n" "\n" "Non-interactive:\n" " -a, --appointment\n" " \tprint events and appointments for current day and exit.\n" "\n" " -d , --day \n" "\tprint events and appointments for or upcoming days and\n" "\texit. To specify both a starting date and a range, use the\n" "\t'--startday' and the '--range' option.\n" "\n" " -g, --gc\n" "\trun the garbage collector for note files and exit. \n" "\n" " -i , --import \n" "\timport the icalendar data contained in . \n" "\n" " -n, --next\n" "\tprint next appointment within upcoming 24 hours and exit. Also given\n" "\tis the remaining time before this next appointment.\n" "\n" " -r[num], --range[=num]\n" "\tprint events and appointments for the [num] number of days\n" "\tand exit. If no [num] is given, a range of 1 day is considered.\n" "\n" " -s[date], --startday[=date]\n" "\tprint events and appointments from [date] and exit.\n" "\tIf no [date] is given, the current day is considered.\n" "\n" " -S, --search=\n" "\tsearch for the given regular expression within events, appointments,\n" "\tand todos description.\n" "\n" " -t[num], --todo[=num]\n" "\tprint todo list and exit. If the optional number [num] is given,\n" "\tthen only todos having a priority equal to [num] will be returned.\n" "\tThe priority number must be between 1 (highest) and 9 (lowest).\n" "\tIt is also possible to specify '0' for the priority, in which case\n" "\tonly completed tasks will be shown.\n" "\n" " -x[format], --export[=format]\n" "\texport user data to the specified format. Events, appointments and\n" "\ttodos are converted and echoed to stdout.\n" "\tTwo possible formats are available: 'ical' and 'pcal'.\n" "\tIf the optional argument format is not given, ical format is\n" "\tselected by default.\n" "\tnote: redirect standard output to export data to a file,\n" "\tby issuing a command such as: calcurse --export > calcurse.dat\n" msgstr "" "\n" "Miscelânea:\n" " -h, --help\n" "\texibe esta mensagem de ajuda e sai.\n" "\n" " -v, --version\n" " exibe a versão do calcurse e sai.\n" "\n" " --status\n" " mostra o status de instâncias em execução do calcurse.\n" "\n" " --read-only\n" " não salva configuração nem agendamentos/tarefas. Use com cuidado. \n" "\n" "Arquivos:\n" " -c , --calendar \n" " especifica o de calendário a ser usado (precede '-D').\n" "\n" " -D , --directory \n" " especifica o diretório de dados a ser usado.\n" " Se não for especificado, o diretório padrão do calcurse é ~/.calcurse\n" "\n" "Não-interativo:\n" " -a, --appointment\n" " exibe eventos e agendamentos para o dia atual e sai.\n" " \n" " -d , --day \n" " exibe eventos e agendamentos para dias próximos ou \n" " e sai. Para especificar ambas data de início e uma faixa, use a\n" " opção '--startday' e a '--range'.\n" " \n" " -g, --gc\n" " executa o coletor de lixo para arquivos de anotação e sai.\n" " \n" " -i , --import \n" " importa os dados de icalendar contidos no .\n" "\n" " -n, --next\n" " exibe próximo agendamento dentro das próximas 24 horas e sai. Também\n" " é dado o tempo restante até o próximo agendamento.\n" "\n" " -r[número], --range[=número]\n" " exibe eventos e agendamentos para o número [número] de dias e sai. Se\n" " nenhum [número] for dado, uma faixa de 1 dia é considerada.\n" "\n" " -s[data], --startday[=data]\n" " exibe eventos e agendamentos da [data] e sai. se nenhuma [data] for\n" " dado, o dia atual é considerado.\n" " \n" " -S, --search=\n" " pesquisa pela expressão regular dada dentro de descrições de eventos,\n" " agendamentos e tarefas.\n" " \n" " -t[número], --todo[=número]\n" " exibe lista de tarefas e sai. Se o número [número] opcional for dado,\n" " então somente tarefas contendo uma prioridade igual a [número] serão\n" " retornados. O número de prioridade deve estar entre 1 (maior) e 9\n" " (menor). Também é possível especificar '0' como prioridade, caso este\n" " em que somente tarefas finalizadas serão exibidas.\n" " \n" " -x[formato], --export[=formato]\n" " exporta dados do usuário para o formato especificado. Eventos,\n" " agendamentos e tarefas são convertidos e enviados para a stdout.\n" " Dois formatos estão disponíveis: 'ical' e 'pcal'. Se o argumento\n" " opcional de formato não for dado, o formato ical é selecionado por\n" " padrão.\n" " nota: redireciona a saída padrão (stdout) para exportar os dados para\n" " um arquivo, simplesmente executando um comando como este:\n" " calcurse --export > calcurse.dat\n" #, c-format msgid "" "Error: both calcurse (pid: %d) and its daemon (pid: %d)\n" "seem to be running at the same time!\n" "Please check manually and restart calcurse.\n" msgstr "" "Erro: ambos calcurse (pid: %d) e seu daemon (pid: %d)\n" "parecem estar em execução simultaneamente!\n" "Favor verifique manualmente e reinicie calcurse.\n" #, c-format msgid "calcurse is running (pid %d)\n" msgstr "calcurse está em execução (pid %d)\n" #, c-format msgid "calcurse is running in background (pid %d)\n" msgstr "calcurse está em execução em plano de fundo (pid %d)\n" msgid "calcurse is not running\n" msgstr "calcurse não está em execução\n" msgid "to do:\n" msgstr "tarefa:\n" msgid "completed tasks:\n" msgstr "tarefas finalizadas:\n" msgid "next appointment:\n" msgstr "próximo agendamento:\n" msgid "Argument to the '-d' flag is not valid\n" msgstr "Argumento para a sinalização \"-d\" não é válido\n" #, c-format msgid "Possible argument format are: '%s' or 'n'\n" msgstr "Possíveis formatos de argumentos são: '%s' ou 'n'\n" msgid "Argument is not valid\n" msgstr "Argumento não é válido\n" #, c-format msgid "Argument format for -s and --startday is: '%s'\n" msgstr "Formato de argumento para -s e --startday é: '%s'\n" msgid "Argument format for -r and --range is: 'n'\n" msgstr "Formato de argumento para -r e --range é: \"n\"\n" msgid "Can not handle more than one regular expression." msgstr "Não é possível utilizar mais de um expressão regular." msgid "Could not compile regular expression." msgstr "Não foi possível compilar expressão regular." msgid "Argument for '-x' should be either 'ical' or 'pcal'\n" msgstr "Argumento para \"-x\" deveria ser \"ical\" ou \"pcal\"\n" msgid "Option '-S' must be used with either '-d', '-r', '-s', '-a' or '-t'\n" msgstr "" "Opção \"-S\" deve ser usada com \"-d\", \"-r\", \"-s\", \"-a\" ou \"-t\"\n" msgid "To do :" msgstr "Tarefa :" msgid "Export to (i)cal or (p)cal format?" msgstr "Exportar para o formato (i)cal ou para (p)cal?" msgid "[ip]" msgstr "[ip]" msgid "Do you really want to quit ?" msgstr "Tem certeza que deseja sair ?" msgid "ERROR setting first day of week" msgstr "ERRO na configuração do primeiro dia do mês" msgid "" "The day you entered is not valid (should be between 01/01/1902 and " "12/31/2037)" msgstr "" "O dia informado não é válido (deveria ser entre 01/01/1902 e 12/31/2037)" msgid "Press [ENTER] to continue" msgstr "Pressione [ENTER] para continuar" #, c-format msgid "Enter the day to go to [ENTER for today] : %s" msgstr "Entre com o dia para ir para [ENTER para hoje] : %s" msgid "unknown color" msgstr "cor desconhecida" msgid "failed to open configuration file" msgstr "falha na abertura do arquivo de configuração" #, c-format msgid "invalid configuration directive: \"%s\"" msgstr "diretiva de configuração inválida: \"%s\"" msgid "" "Pre-3.0.0 configuration file format detected, please upgrade running " "`calcurse-upgrade`." msgstr "" "Formato de arquivo de configuração pré-3.0.0 detectado. Favor, atualize com " "`calcurse-upgrade`." #, c-format msgid "configuration variable unknown: \"%s\"" msgstr "variável de configuração desconhecida: \"%s\"" #, c-format msgid "wrong configuration variable format for \"%s\"" msgstr "formato incorreto de variável de configuração para \"%s\"" msgid "Exit" msgstr "Sair" msgid "General" msgstr "Geral" msgid "Layout" msgstr "Layout" msgid "Sidebar" msgstr "BarraLateral" msgid "Color" msgstr "Cor" msgid "Notify" msgstr "Notificação" msgid "Keys" msgstr "Teclas" msgid "Select" msgstr "Selecionar" msgid "Up" msgstr "Cima" msgid "Down" msgstr "Baixo" msgid "Left" msgstr "Esquerda" msgid "Right" msgstr "Direita" msgid "Help" msgstr "Ajuda" msgid "layout configuration" msgstr "Configuração de layout" msgid "" "With this configuration menu, one can choose where panels will be\n" "displayed inside calcurse screen. \n" "It is possible to choose between eight different configurations.\n" "\n" "In the configuration representations, letters correspond to:\n" "\n" " 'c' -> calendar panel\n" "\n" " 'a' -> appointment panel\n" "\n" " 't' -> todo panel\n" "\n" msgstr "" "Com esse menu de configuração, o usuário pode escolher onde os\n" "painéis serão exibidos dentro da tela do calcurse.\n" "É possível escolher entre oito configurações diferentes.\n" "\n" "Nas representações de configuração, letras correspondem a:\n" "\n" " \"c\" -> painel de Calendário\n" "\n" " \"a\" -> painel de Agendamentos\n" "\n" " \"t\" -> painel de Tarefas\n" msgid "Width +" msgstr "Largura +" msgid "Width -" msgstr "Largura -" #, no-c-format msgid "" "This configuration screen is used to change the width of the side bar.\n" "The side bar is the part of the screen which contains two panels:\n" "the calendar and, depending on the chosen layout, either the todo list\n" "or the appointment list.\n" "\n" "The side bar width can be up to 50% of the total screen width, but\n" "can't be smaller than " msgstr "" "Esta tela de configuração será usada para alterar a largura da barra\n" "lateral, a qual é parte da tela que contém dois painéis:\n" "o calendário e, dependendo do layout escolhido, tanto a lista de tarefas\n" "quanto a lista de agendamentos.\n" "\n" "A largura da barra lateral pode ser até 50% da largura total da tela,\n" "mas não pode ser menor do que " msgid "No color" msgstr "Nenhuma cor" msgid "Foreground" msgstr "Primeiro plano" msgid "Background" msgstr "Plano de fundo" msgid "(terminal's default)" msgstr "(padrão do terminal)" msgid "color theme" msgstr "Tema de Cor" msgid "(if set to YES, automatic save is done when quitting)" msgstr "" "(se definida como SIM, salvamento automático será feito quando estiver de " "saída)" msgid "(run the garbage collector when quitting)" msgstr "(executa o coletor de lixo ao sair)" msgid "(if not null, automatically save data every 'periodic_save' minutes)" msgstr "" "(se não nulo, automaticamente salva os dados a cada \"periodic_save\" " "minutos)" msgid "(if set to YES, confirmation is required before quitting)" msgstr "(se definida como SIM, uma confirmação será necessária antes de sair)" msgid "(if set to YES, confirmation is required before deleting an event)" msgstr "" "(se definida como SIM, uma confirmação será necessária antes da exclusão de " "um evento)" msgid "(if set to YES, messages about loaded and saved data will be displayed)" msgstr "" "(se definida como SIM, mensagens sobre dados carregados e salvados serão " "exibidos)" msgid "(if set to YES, progress bar will be displayed when saving data)" msgstr "" "(se definida como SIM, barra de progresso será exibida durante o salvamento " "dos dados)" msgid "Monday" msgstr "Segunda-feira" msgid "Sunday" msgstr "Domingo" msgid "(specifies the first day of week in the calendar view)" msgstr "(especifica o primeiro dia da semana na visão de calendário)" msgid "(Format of the date to be displayed in non-interactive mode)" msgstr "(formato da data a ser exibido no modo não interativo)" msgid "(Format to be used when entering a date: " msgstr "(formato a ser usado ao informar uma data: " msgid "Enter an option number to change its value" msgstr "Entre com o número de uma opção para alterar seu valor" msgid "(Press '^P' or '^N' to move up or down, 'Q' to quit)" msgstr "" "(Pressione \"^P\" ou \"^N\" para mover para cima ou para baixo, \"Q\" para " "sair)" msgid "Enter the date format (see 'man 3 strftime' for possible formats) " msgstr "" "Entre com o formato da data (veja \"man 3 strftime\" para formatos " "possíveis) " msgid "Enter the date format: " msgstr "Entre com formato da data: " msgid "Enter the delay, in minutes, between automatic saves (0 to disable) " msgstr "" "Entre com a distância, em minutos, entre salvamentos (0 = desabilitar) " msgid "general options" msgstr "Opções Gerais" msgid "Undefined option!" msgstr "Opção indefinida!" msgid "undefined" msgstr "indefinida" msgid "Key info" msgstr "InfoTecla" msgid "Add key" msgstr "AdicionarTecla" msgid "Del key" msgstr "ExcluirTecla" msgid "Prev Key" msgstr "TeclaAnterior" msgid "Next Key" msgstr "Tecla Seguinte" msgid "keys configuration" msgstr "Configuração das Teclas" msgid "Press the key you want to assign to:" msgstr "Pressione a tecla que você quer designar para:" msgid "This key is not yet recognized by calcurse, please choose another one." msgstr "Essa tecla não é reconhecida ainda pelo calcurse, favor escolha outra." #, c-format msgid "This key is already in use for %s, please choose another one." msgstr "Essa tecla está sendo usada por %s, favor escolha outra." msgid "Some actions do not have any associated key bindings!" msgstr "Algumas ações não têm teclas de atalho associadas!" msgid "" "Sorry, colors are not supported by your terminal\n" "(Press [ENTER] to continue)" msgstr "" "Sinto muito, cores não são suportadas em seu terminal\n" "(Pressione [Enter] para continuar)" msgid "unknown item type" msgstr "tipo de item desconhecido" msgid "Event :" msgstr "Evento :" msgid "Appointment :" msgstr "Agendamento :" msgid "unknwon type" msgstr "tipo desconhecido" #, c-format msgid "Could not stop daemon properly: %s\n" msgstr "Não foi possível parar o daemon corretamente: %s\n" #, c-format msgid "terminated at %s with signal %d\n" msgstr "Terminado em %s com sinal %d\n" #, c-format msgid "Could not remove daemon lock file: %s\n" msgstr "Não foi possível excluir o arquivo de trava do daemon: %s\n" #, c-format msgid "Could not fork: %s\n" msgstr "Não foi possível fazer bifurcação: %s\n" #, c-format msgid "Could not detach from the controlling terminal: %s\n" msgstr "Não foi possível desanexar do terminal de controle: %s\n" #, c-format msgid "Could not change working directory: %s\n" msgstr "Não foi possível alterar o diretório de trabalho: %s\n" msgid "Cannot daemonize, aborting\n" msgstr "Não foi possível executar em daemon, abortando\n" msgid "Could not set lock file\n" msgstr "Não foi possível definir arquivo de trava\n" #, c-format msgid "Could not access \"%s\": %s\n" msgstr "Não foi possível acessar \"%s\": %s\n" #, c-format msgid "started at %s\n" msgstr "Iniciado em %s\n" msgid "error loading next appointment\n" msgstr "erro no carregamento do agendamento seguinte\n" #, c-format msgid "launching notification at %s for: \"%s\"\n" msgstr "Iniciando notificação em %s para : \"%s\"\n" msgid "error while sending notification\n" msgstr "Erro no envio de notificação\n" #, c-format msgid "sleeping at %s for %d second\n" msgid_plural "sleeping at %s for %d seconds\n" msgstr[0] "Dormir em %s por %d segundo\n" msgstr[1] "Dormir em %s por %d segundos\n" #, c-format msgid "awakened at %s\n" msgstr "Acordou em %s\n" #, c-format msgid "Could not stop calcurse daemon: %s\n" msgstr "Não foi possível parar o daemon do calcurse: %s\n" msgid "date error in the event\n" msgstr "erro de data no evento\n" msgid "Internal error: line too long" msgstr "Erro interno: linha muito comprida" msgid "out of memory" msgstr "memória insuficiente" #, c-format msgid "key bindings: %s" msgstr "atalhos: %s" msgid "Calcurse help" msgstr "Ajuda do Calcurse" msgid " Welcome to Calcurse. This is the main help screen.\n" msgstr " Bem-vindo ao Calcurse. Esta é a tela principal de ajuda.\n" #, c-format msgid "" "Moving around: Press '%s' or '%s' to scroll text upward or downward\n" " inside help screens, if necessary.\n" "\n" " Exit help: When finished, press '%s' to exit help and go back to\n" " the main Calcurse screen.\n" "\n" " Help topic: At the bottom of this screen you can see a panel with\n" " different fields, represented by a letter and a short\n" " title. This panel contains all the available actions\n" " you can perform when using Calcurse.\n" " By pressing one of the letters appearing in this\n" " panel, you will be shown a short description of the\n" " corresponding action. At the top right side of the\n" " description screen are indicated the user-defined key\n" " bindings that lead to the action.\n" "\n" " Credits: Press '%s' for credits." msgstr "" " Movimentação: Pressione \"%s\" ou \"%s\" para rolar o texto para cima ou\n" " para baixo dentro da tela, se necessário.\n" "\n" " Sair da ajuda: Quando terminar, pressione \"%s\" para sair da ajuda e\n" " e voltar para a tela principal do Calcurse.\n" "\n" "Tópico de ajuda: Na parte de baixo desta tela você pode ver um painel\n" " com diferentes campos, representados por uma letra ou\n" " um nome curto. Este painel contém todas as ações\n" " disponíveis que você pode realizar quando está usando\n" " Calcurse.\n" " Ao pressionar uma das letras que aparecem neste painel,\n" " será exibido para você uma descrição curta da ação\n" " correspondente. Na parte superior-direita da tela de\n" " descrição estão indicadas as teclas de atalho definidas\n" " pelo usuário que levam a esta ação.\n" "\n" " Créditos: Pressione \"%s\" para acessar os créditos." msgid "Save\n" msgstr "Salvar\n" #, c-format msgid "" "Save calcurse data.\n" "Data are splitted into four different files which contain :\n" "\n" " / ~/.calcurse/conf -> user configuration\n" " | (layout, color, general options)\n" " | ~/.calcurse/apts -> data related to the appointments\n" " | ~/.calcurse/todo -> data related to the todo list\n" " \\ ~/.calcurse/keys -> user-defined key bindings\n" "\n" "In the config menu, you can choose to save the Calcurse data\n" "automatically before quitting." msgstr "" "Salva dados do calcurse.\n" "Dados serão separados em quatro arquivos diferentes contendo:\n" "\n" " / ~/.calcurse/conf -> configuração do usuário\n" " | (layout, cores, opções gerais)\n" " | ~/.calcurse/apts -> dados relacionados a agendamentos\n" " | ~/.calcurse/todo -> dados relacionados a lista de tarefas\n" " \\ ~/.calcurse/keys -> teclas de atalho do usuário\n" "\n" "No menu Config, você pode escolher salvar os dados do Calcurse\n" "automaticamente antes de cada saída." msgid "Import\n" msgstr "Importar\n" #, c-format msgid "" "Import data from an icalendar file.\n" "You will be asked to enter the file name from which to load ical\n" "items. At the end of the import process, and if the general option\n" "'system_dialogs' is set to 'yes', a report indicating how many items\n" "were imported is shown.\n" "This report contains the total number of lines read, the number of\n" "appointments, events and todo items which were successfully imported,\n" "together with the number of items for which problems occured and that\n" "were skipped, if any.\n" "\n" "If one or more items could not be imported, one has the possibility to\n" "read the import process report in order to identify which problems\n" "occured.\n" "In this report is shown one item per line, with the line in the input\n" "stream at which this item begins, together with the description of why\n" "the item could not be imported.\n" msgstr "" "Importa dados de um arquivo icalendar.\n" "Você será solicitado a entrar com o nome de arquivo do qual serão\n" "carregados itens de ical. No final do processo de importação, e se\n" "a opção geral 'system_dialogs' estiver definida como 'yes', um\n" "relatório indicando quantos itens foram importados será mostrado.\n" "Este relatório conterá o número total de linhas lidas, o número de\n" "de agendamentos, eventos e tarefas que foram importados com\n" "sucesso, junto com o número de itens que apresentaram problemas e\n" "que foram ignorados, se houver algum.\n" "\n" "Se um ou mais itens não puder ser importados, é possível ler o relatório\n" "do processo de importação para que se identifique que problemas\n" "ocorreram.\n" "Neste relatório é exibido um item por linha, com a linha do fluxo de\n" "entrada em que este item começa, junto com a descrição do porquê o item\n" "não pôde ser importado.\n" msgid "Export\n" msgstr "Exportar\n" #, c-format msgid "" "Export calcurse data (appointments, events and todos).\n" "This leads to the export submenu, from which you can choose between\n" "two different export formats: 'ical' and 'pcal'. Choosing one of\n" "those formats lets you export calcurse data to icalendar or pcal\n" "format.\n" "\n" "You first need to specify the file to which the data will be exported.\n" "By default, this file is:\n" "\n" " ~/calcurse.ics\n" "\n" "for an ical export, and:\n" "\n" " ~/calcurse.txt\n" "\n" "for a pcal export.\n" "\n" "Calcurse data are exported in the following order:\n" " events, appointments, todos.\n" msgstr "" "Exporta dados do calcurse (agendamentos, eventos e tarefas).\n" "Esta opção leva ao submenu de exportação, no qual você pode escolher\n" "entre dois formatos diferentes de exportação: 'ical' e 'pcal'.\n" "Escolhendo um destes formatos, será exportado dados do calcurse\n" "para o formato icalendar ou pcal.\n" "\n" "Você primeiro precisa especificar o arquivo para o qual o arquivo será\n" "exportado. Por padrão, este arquivo será:\n" "\n" " ~/calcurse.ics\n" "\n" "para uma exportação em ical, e:\n" "\n" " ~/calcurse.txt\n" "\n" "para uma exportação em pcal.\n" "\n" "Dados de Calcurse são exportados na seguinte ordem:\n" " eventos, agendamentos, tarefas.\n" msgid "Displacement keys\n" msgstr "Teclas de deslocamento\n" #, c-format msgid "" "Move around inside calcurse screens.\n" "The following scheme summarizes how to get around:\n" "\n" " move up\n" " move to previous week\n" "\n" " %s\n" " move left ^ \n" " move to previous day |\n" " %s\n" " <-- + -->\n" " %s\n" " | move right\n" " v move to next day\n" " %s\n" "\n" " move to next week\n" " move down\n" "\n" "Moreover, while inside the calendar panel, the '%s' key moves\n" "to the first day of the week, and the '%s' key selects the last day of\n" "the week.\n" msgstr "" "Movimenta pelas telas do calcurse.\n" "O seguinte esquema resume como funciona a movimentação:\n" "\n" " move para cima\n" " move para semana anterior\n" "\n" " %s\n" " move para esquerda ^ \n" " move para dia anterior |\n" " %s\n" " <-- + -->\n" " %s\n" " | move para direita\n" " v move para dia seguinte\n" " %s\n" "\n" " move para semana seguinte\n" " move para baixo\n" "\n" "Ademais, enquanto dentro do painel de calendário, a tecla \"%s\" move para\n" "o primeiro dia da semana, e a tecla \"%s\" seleciona o último dia da\n" "semana.\n" msgid "View\n" msgstr "Ver\n" #, c-format msgid "" "View the item you select in either the Todo or Appointment panel.\n" "\n" "This is usefull when an event description is longer than the available\n" "space to display it. If that is the case, the description will be\n" "shortened and its end replaced by '...'. To be able to read the entire\n" "description, just press '%s' and a popup window will appear, containing\n" "the whole event.\n" "\n" "Press any key to close the popup window and go back to the main\n" "Calcurse screen." msgstr "" "Vê o item que você selecionou em tanto no painel de Tarefas quanto de\n" "Agendamentos.\n" "\n" "Isto é útil quando a descrição de um evento é maior do que o espaço\n" "disponível para exibi-lo. Se esse for o caso, a descrição será\n" "reduzida e seu final será substituído por \"...\". Para ler a descrição\n" "por inteiro, basta pressionar \"%s\" e uma janela de pop-up aparecerá,\n" "contendo o evento completo.\n" "\n" "Pressione qualquer tecla para fechar a janela pop-up e vá para a tela\n" "principal do Calcurse." msgid "Pipe\n" msgstr "Redirecionar\n" #, c-format msgid "" "Pipe the selected item to an external program.\n" "\n" "Press the '%s' key to pipe the currently selected appointment or\n" "todo entry to an external program.\n" "\n" "You will be driven back to calcurse as soon as the program exits.\n" msgstr "" "Redireciona o item selecionado para um programa externo.\n" "\n" "Pressione a tecla '%s' para redirecionar a entrada de agendamento\n" "ou tarefa selecionada para um programa externo.\n" "\n" "Você será trazido de volta para o calcurse assim que o\n" "programa for finalizado.\n" msgid "Tab\n" msgstr "Guia\n" #, c-format msgid "" "Switch between panels.\n" "The panel currently in use has its border colorized.\n" "\n" "Some actions are possible only if the right panel is selected.\n" "For example, if you want to add a task in the TODO list, you need first\n" "to press the '%s' key to get the TODO panel selected. Then you can\n" "press '%s' to add your item.\n" "\n" "Notice that at the bottom of the screen the list of possible actions\n" "change while pressing '%s', so you always know what action can be\n" "performed on the selected panel." msgstr "" "Alterna entre painéis.\n" "O painel em uso no momento tem a sua borda colorizada.\n" "\n" "Algumas ações são possíveis somente se o painel correto estiver\n" "selecionado.\n" "Por exemplo, se você quer adicionar uma tarefa na lista de TAREFAS, você\n" "precisa primeiro pressionar a tecla \"%s\" para que o painel de TAREFAS\n" "seja selecionado. Então, você poderá pressionar \"%s\" para adicionar seu\n" "item.\n" "\n" "Repare como na parte inferior da tela a lista de ações possíveis muda\n" "quando se pressiona \"%s\", de forma que você sempre saberá qual ação\n" "pode ser executada no painel selecionado." msgid "Goto\n" msgstr "Ir para\n" #, c-format msgid "" "Jump to a specific day in the calendar.\n" "\n" "Using this command, you do not need to travel to that day using\n" "the displacement keys inside the calendar panel.\n" "If you hit [ENTER] without specifying any date, Calcurse checks the\n" "system current date and you will be taken to that date.\n" "\n" "Notice that pressing '%s', whatever panel is\n" "selected, will select current day in the calendar." msgstr "" "Pula para um dia especificado no calendário.\n" "\n" "Ao usar este comando, você não precisará viajar até aquele dia\n" "usando as teclas de movimentação dentro do painel de calendário.\n" "Se você pressionar [ENTER] sem especificar qualquer data, Calcurse\n" "verifica a data atual do sistema e você será levado àquela data.\n" "\n" "Repare que ao pressionar \"%s\", não importa o painel que esteja\n" "selecionado, será selecionado o dia atual no calendário." msgid "Delete\n" msgstr "Excluir\n" #, c-format msgid "" "Delete an element in the ToDo or Appointment list.\n" "\n" "Depending on which panel is selected when you press the delete key,\n" "the hilighted item of either the ToDo or Appointment list will be \n" "removed from this list.\n" "\n" "If the item to be deleted is recurrent, you will be asked if you\n" "wish to suppress all of the item occurences or just the one you\n" "selected.\n" "\n" "If the general option 'confirm_delete' is set to 'YES', then you will\n" "be asked for confirmation before deleting the selected event.\n" "Do not forget to save the calendar data to retrieve the modifications\n" "next time you launch Calcurse." msgstr "" "Exclui um elemento da lista de Tarefas ou de Agendamentos.\n" "\n" "Dependendo do painel selecionado, quando você pressionar a tecla de\n" "remoção, o item selecionado de tanto a lista de Tarefas quanto de\n" "Agendamentos será excluído desta lista.\n" "\n" "Se o item a ser excluído é recorrente, você será perguntado se você\n" "deseja suprimir todas ocorrências deste item ou somente o item que\n" "você selecionou.\n" "\n" "Se a opção geral \"confirm_delete\" estiver definida para \"SIM\", a você\n" "será solicitada confirmação antes de excluir o evento selecionado.\n" "Não esqueça de salvar os dados do calendário para recuperar as\n" "modificações na próxima vez que iniciar Calcurse." msgid "Add\n" msgstr "Adicionar\n" #, c-format msgid "" "Add an item in either the ToDo or Appointment list, depending on which\n" "panel is selected when you press '%s'.\n" "\n" "To enter a new item in the TODO list, you will need first to enter the\n" "description of this new item. Then you will be asked to specify the todo\n" "priority. This priority is represented by a number going from 9 for the\n" "lowest priority, to 1 for the highest one. It is still possible to\n" "change the item priority afterwards, by using the '%s' and '%s' keys\n" "inside the todo panel.\n" "\n" "If the APPOINTMENT panel is selected while pressing '%s', you will be\n" "able to enter either a new appointment or a new all-day long event.\n" "To enter a new event, press [ENTER] instead of the item start time, and\n" "just fill in the event description.\n" "To enter a new appointment to be added in the APPOINTMENT list, you\n" "will need to enter successively the time at which the appointment\n" "begins, the appointment length (either by specifying the end time in\n" "[hh:mm] or the duration in [+hh:mm], [+xxdxxhxxm] or [+mm] format), \n" "and the description of the event.\n" "\n" "The day at which occurs the event or appointment is the day currently\n" "selected in the calendar, so you need to move to the desired day before\n" "pressing '%s'.\n" "\n" "Notes:\n" " o if an appointment lasts for such a long time that it continues\n" " on the next days, this event will be indicated on all the\n" " corresponding days, and the beginning or ending hour will be\n" " replaced by '..' if the event does not begin or end on the day.\n" " o if you only press [ENTER] at the APPOINTMENT or TODO event\n" " description prompt, without any description, no item will be\n" " added.\n" " o do not forget to save the calendar data to retrieve the new\n" " event next time you launch Calcurse." msgstr "" "Adiciona um item para a lista de Tarefas ou de Agendamentos, dependendo\n" "de qual painel está selecionado quando você pressiona '%s'.\n" "\n" "Para entrar um novo item na lista de TAREFAS, você precisa primeiro\n" "entrar com a descrição deste novo item. Então, você será solicitado para\n" "especificar a prioridade da tarefa. Esta prioridade é representada por\n" "um número que vai de 9, como a menor prioridade, até 1, como a maior.\n" "Também é possível alterar a prioridade do item posteriormente, usando\n" "as teclas '%s' e '%s' dentro do painel de Tarefas.\n" "\n" "Se o painel de AGENDAMENTOS estiver selecionado quando se pressionar\n" "'%s', você poderá entrar com o novo agendamento ou um evento para dia\n" "inteiro.\n" "Para entrar com um novo evento, pressione [ENTER] ao invés do item de\n" "horário de início, e simplesmente preencha a descrição do evento.\n" "Para entrar com um novo agendamento a ser adicionado à lista de\n" "AGENDAMENTOS, será necessário que você entre sucessivamente com o\n" "horário no que o agendamento será iniciado, sua extensão (especificando\n" "o horário de término no formato [hh:mm] ou a duração, no formato\n" "[+hh:mm], [+xxdxxhxxm] ou [+mm]) e a descrição do evento.\n" "\n" "O dia em que o evento ou agendamento ocorrerá é o dia atualmente\n" "selecionado no calendário. Então, você deve mover para o dia desejado\n" "antes de pressionar '%s'.\n" "\n" "Notas:\n" " o se um agendamento durar por tanto tempo que chegar a continuar\n" " pelos próximos dias, este evento será indicado em todos os dias\n" " correspondentes, e os horários de início ou término serão\n" " substituídos por '..' se o evento não iniciar ou terminar no dia.\n" " o se você somente pressionar [ENTER] no prompt de descrição do\n" " evento de AGENDAMENTO ou TAREFA, sem qualquer descrição, nenhum\n" " item será adicionado.\n" " o não se esqueça de salvar os dados do calendário para obter o novo\n" " evento na próxima vez que você iniciar o Calcurse." msgid "Copy and Paste\n" msgstr "Copiar e Colar\n" #, c-format msgid "" "Copy and paste the currently selected item. This is useful to quickly\n" "copy an item from one date to another. To do so, one must first\n" "highlight the item that needs to be copied, then press '%s' to copy.\n" "Once the new date is chosen in the calendar, the appointment panel must\n" "be selected and the '%s' key must be pressed to paste the item. The item\n" "will appear in the appointment panel, assigned to the newly selected\n" "date.\n" "\n" msgstr "" "Copia e cola o item atualmente selecionado. Isso é útil para rapidamente\n" "copiar um item de uma data para outra. Para isso, deve-se primeiro\n" "destacar o item que precisa ser copiado e, então, pressionar \"%s\" para\n" "copiar. Assim que a nova data tiver sido escolhida no calendário, o painel\n" "de agendamentos deve estar selecionado e a tecla \"%s\" deve ser " "pressionado\n" "para colar o item. O item vai aparecer o painel de agendamentos, atribuído\n" "à data selecionada.\n" "\n" msgid "Edit Item\n" msgstr "Editar item\n" #, c-format msgid "" "Edit the item which is currently selected.\n" "Depending on the item type (appointment, event, or todo), and if it is\n" "repeated or not, you will be asked to choose one of the item properties\n" "to modify. An item property is one of the following: the start time, the\n" "end time, the description, or the item repetition.\n" "Once you have chosen the property you want to modify, you will be shown\n" "its actual value, and you will be able to change it as you like.\n" "\n" "Notes:\n" " o if you choose to edit the item repetition properties, you will\n" " be asked to re-enter all of the repetition characteristics\n" " (repetition type, frequence, and ending date). Moreover, the\n" " previous data concerning the deleted occurences will be lost.\n" " o do not forget to save the calendar data to retrieve the\n" " modified properties next time you launch Calcurse." msgstr "" "Edita o item selecionado.\n" "Dependendo do tipo do item (agendamento, evento, ou tarefa), e se ele\n" "for repetido ou não, a você será solicitado que escolha uma das\n" "propriedades do item a modificar. Uma propriedade de item é uma das\n" "seguintes: o horário de início, o horário de término, a descrição, ou\n" "a repetição do item.\n" "Assim que você escolher a propriedade que você quer modificar, será\n" "exibido a você o valor atual, e você poderá alterá-lo como quiser.\n" "\n" "Notas:\n" " o Se você escolher editar as propriedades de repetição do item,\n" " a você será solicitado que entre novamente com todas as\n" " características de repetição (tipo de repetição, frequência\n" " e data do fim). Ademais, a data anterior referente às\n" " ocorrências excluídas será perdida.\n" " o Não esqueça de salvar os dados do calendário para recuperar as\n" " propriedades modificadas na próxima vez que iniciar Calcurse." msgid "EditNote\n" msgstr "EditarNota\n" #, c-format msgid "" "Attach a note to any type of item, or edit an already existing note.\n" "This feature is useful if you do not have enough space to store all\n" "of your item description, or if you would like to add sub-tasks to an\n" "already existing todo item for example.\n" "Before pressing the '%s' key, you first need to highlight the item you\n" "want the note to be attached to. Then you will be driven to an\n" "external editor to edit your note. This editor is chosen the following\n" "way:\n" " o if the 'VISUAL' environment variable is set, then this will be\n" " the default editor to be called.\n" " o if 'VISUAL' is not set, then the 'EDITOR' environment variable\n" " will be used as the default editor.\n" " o if none of the above environment variables is set, then\n" " '/usr/bin/vi' will be used.\n" "\n" "Once the item note is edited and saved, quit your favorite editor.\n" "You will then go back to Calcurse, and the '>' sign will appear in front\n" "of the highlighted item, meaning there is a note attached to it." msgstr "" "Anexa uma nota a qualquer tipo de item, ou edita qualquer nota existente.\n" "Este recurso é útil se você não tem espaço suficiente para armazenar\n" "toda descrição de seu item, o se você deseja adicionar sub-tarefas para\n" "um item de tarefa já existente, por exemplo.\n" "Antes de pressionar a tecla \"%s\", você primeiro precisa realçar o item\n" "ao qual você deseja que a nota seja anexada. O editor é escolhido das\n" "seguintes formas:\n" " o se a variável de ambiente \"VISUAL\" estiver definida, então este\n" " será o editor padrão a ser chamado.\n" " o se \"VISUAL\" não estiver definido, então a variável de ambiente\n" " \"EDITOR\" será usada como o editor padrão.\n" " o se nenhuma das variáveis de ambiente acima estiverem definidas,\n" " então \"/usr/bin/vi\" será usado\n" "\n" "Assim que a nota do item for editada e salvada, saia do seu editor\n" "favorito.\n" "Então, você voltará para o Calcurse, e o sinal \">\" aparecerá na frente\n" "do item realçado, significando haver uma nota anexada a ele." msgid "ViewNote\n" msgstr "VerNota\n" #, c-format msgid "" "View a note which was previously attached to an item (an item which\n" "owns a note has a '>' sign in front of it).\n" "This command only permits to view the note, not to edit it (to do so,\n" "use the 'EditNote' command, by pressing the '%s' key).\n" "Once you highlighted an item with a note attached to it, and the '%s' key\n" "was pressed, you will be driven to an external pager to view that note.\n" "The default pager is chosen the following way:\n" " o if the 'PAGER' environment variable is set, then this will be\n" " the default viewer to be called.\n" " o if the above environment variable is not set, then\n" " '/usr/bin/less' will be used.\n" "As for editing a note, quit the pager and you will be driven back to\n" "Calcurse." msgstr "" "Vê uma nota que foi previamente anexada a um item (um item que possui\n" "uma nota tem um sinal \">\" na sua frente).\n" "Este comando somente permite que se visualize a note, e não que se edite\n" "(para fazê-lo, use o comando \"EditNote\", pressionando a tecla \"%s\").\n" "Assim que você tiver realçado um item contendo uma nota anexada, e a\n" "tecla \"%s\" for pressionada, você será levado para um paginador externo\n" "para ver aquela nota.\n" "O paginador padrão é escolhido das seguintes formas:\n" " o se a variávei de ambiente \"PAGER\" estiver definida, então esta\n" " será chamada como visualizador padrão.\n" " o Se a variável de ambiente acima não estiver definida, então\n" " \"/usr/bin/less\" será usado\n" "Quanto à edição de notas, saia do paginador e você será levado de volta\n" "ao Calcurse." msgid "Priority\n" msgstr "Prioridade\n" #, c-format msgid "" "Change the priority of the currently selected item in the ToDo list.\n" "Priorities are represented by the number appearing in front of the\n" "todo description. This number goes from 9 for the lowest priority to\n" "1 for the highest priority.\n" "Todo having higher priorities are placed first (at the top) inside the\n" "todo panel.\n" "\n" "If you want to raise the priority of a todo item, you need to press '%s'.\n" "In doing so, the number in front of this item will decrease, meaning its\n" "priority increases. The item position inside the todo panel may change,\n" "depending on the priority of the items above it.\n" "\n" "At the opposite, to lower a todo priority, press '%s'. The todo position\n" "may also change depending on the priority of the items below." msgstr "" "Altera a prioridade do item atualmente selecionado na lista de Tarefas.\n" "Prioridades são representadas pelo número que aparece na frente da\n" "descrição da tarefa. O número vai desde 9 para a menor prioridade até\n" "1 para a maior prioridade.\n" "As tarefas que tenham maior prioridade serão posicionadas primeiro (no\n" "topo) dentro do painel de Tarefas.\n" "\n" "Se você desejar aumentar a prioridade de um item de tarefa, você deverá\n" "pressionar \"%s\". Ao fazer isso, o número da prioridade deste item será\n" "reduzida, o que significa um aumento na sua prioridade. A posição do\n" "item dentro do painel de Tarefas pode mudar, dependendo da prioridade dos\n" "itens acima deste.\n" "\n" "E o contrário, para diminuir a prioridade de uma tarefa, pressione \"%s\".\n" "A posição da tarefa pode também alterar dependendo da prioridade dos\n" "demais itens abaixo deste." msgid "Repeat\n" msgstr "Repetir\n" #, c-format msgid "" "Repeat an event or an appointment.\n" "You must first select the item to be repeated by moving inside the\n" "appointment panel. Then pressing '%s' will lead you to a set of three\n" "questions, with which you will be able to specify the repetition\n" "characteristics:\n" "\n" " o type: you can choose between a daily, weekly, monthly or\n" " yearly repetition by pressing 'D', 'W', 'M' or 'Y'\n" " respectively.\n" "\n" " o frequence: this indicates how often the item shall be repeated.\n" " For example, if you want to remember an anniversary,\n" " choose a 'yearly' repetition with a frequence of '1',\n" " which means it must be repeated every year. Another\n" " example: if you go to the restaurant every two days,\n" " choose a 'daily' repetition with a frequence of '2'.\n" "\n" " o ending date: this specifies when to stop repeating the selected\n" " event or appointment. To indicate an endless \n" " repetition, enter '0' and the item will be repeated\n" " forever.\n" "\n" "Notes:\n" " o repeated items are marked with an '*' inside the appointment\n" " panel, to be easily recognizable from non-repeated ones.\n" " o the 'Repeat' and 'Delete' command can be mixed to create\n" " complicated configurations, as it is possible to delete only\n" " one occurence of a repeated item." msgstr "" "Repete um evento ou um agendamento.\n" "Primeiro você deve que selecionar o item a ser repetido movendo-o\n" "dentro do painel de Agendamentos. Então, ao pressionar \"%s\" você\n" "responderá um conjunto de três perguntas, com as quais você poderá\n" "especificar as caraterísticas da repetição:\n" "\n" " o tipo: você pode escolher entre uma repetição diária,\n" " semanal, mensal ou anual pressionando, \"D\",\n" " \"W\",\"M\" ou \"Y\", respectivamente.\n" "\n" " o frequência: indica com qual frequência o item deve se repetir.\n" " Por exemplo, se você deseja sempre se lembrar de um\n" " aniversário, escolha uma repetição \"anual\" com uma\n" " frequência de \"1\", o que significa que deve repetir\n" " todo ano. Outro exemplo: se você vai ao restaurante\n" " a cada dois dias, escolha uma repetição \"diária\" com\n" " frequência de \"2\".\n" "\n" " o data final: especifica quando deve parar a repetição do\n" " evento ou agendamento selecionado. Para indicar\n" " uma repetição sem fim, entre com \"0\" e o item\n" " será repetido para sempre.\n" "\n" "Notas:\n" " o Itens repetidos são marcados com um \"*\" dentro do painel de\n" " Agendamentos, para ser facilmente diferenciável dos não\n" " repetidos.\n" " o Os comandos \"Repetir\" e \"Excluir\" podem ser combinados para\n" " para criar configurações complicadas, já que é possível\n" " excluir somente uma ocorrência de um item repetido." msgid "Flag Item\n" msgstr "Sinalizar Item\n" #, c-format msgid "" "Toggle an appointment's 'important' flag or a todo's 'completed' flag.\n" "If a todo is flagged as completed, its priority number will be replaced\n" "by an 'X' sign. Completed tasks will no longer appear in exported data\n" "or when using the '-t' command line flag (unless specifying '0' as the\n" "priority number, in which case only completed tasks will be shown).\n" "\n" "If an appointment is flagged as important, an exclamation mark appears\n" "in front of it, and you will be warned if time gets closed to the\n" "appointment start time.\n" "To customize the way one gets notified, the configuration submenu lets\n" "you choose the command launched to warn user of an upcoming appointment,\n" "and how long before it he gets notified." msgstr "" "Alterna estado de sinalização de \"importante\" de um agendamento ou\n" "de \"finalizada\" de uma tarefa.\n" "Se uma tarefa é sinalizada como finalizada, seu número de prioridade\n" "será substituído por um sinal \"X\". Tarefas finalizadas não vão mais\n" "aparecer nos dados exportados ou quando se estiver usando a opção de\n" "linha de comando \"-t\" (a não ser que tenha sido especificado \"0\" como\n" "o número de prioridade, caso este em que somente tarefas finalizadas\n" "serão exibidas).\n" "\n" "Se um agendamento é sinalizado como importante, uma exclamação vai\n" "aparecer na frente dele e você será avisado quando o horário de início\n" "do agendamento se aproximar.\n" "Para personalizar a forma de notificação, o submenu de configuração\n" "permite que você escolha o comando a ser executado para avisar o\n" "usuário de um agendamento próximo e quanto tempo até que ele seja\n" "notificado." msgid "Config\n" msgstr "Config\n" #, c-format msgid "" "Open the configuration submenu.\n" "From this submenu, you can select between color, layout, notification\n" "and general options, and you can also configure your keybindings.\n" "\n" "The color submenu lets you choose the color theme.\n" "The layout submenu lets you choose the Calcurse screen layout, in other\n" "words where to place the three different panels on the screen.\n" "The general options submenu brings a screen with the different options\n" "which modifies the way Calcurse interacts with the user.\n" "The notify submenu allows you to change the notify-bar settings.\n" "The keys submenu lets you define your own key bindings.\n" "\n" "Do not forget to save the calendar data to retrieve your configuration\n" "next time you launch Calcurse." msgstr "" "Abre os submenus de configuração.\n" "A partir deste submenu, você pode selecionar dentre várias cores,\n" "layout, notificações e opções em geral, e você pode até mesmo\n" "configurar suas teclas de atalhos.\n" "\n" "O submenu Cor permite que você escolha o tema de cores.\n" "O submenu Layout permite que você escolha o layout da tela do Calcurse.\n" "Em outras palavras, permite definir onde colocar três painéis diferentes\n" "na tela.\n" "O submenu de opções gerais, Geral, traz uma tela com opções diferentes,\n" "que modificam a forma como Calcurse interage com o usuário.\n" "O submenu Notificação permite que você altere as configurações da\n" "barra de notificação.\n" "O submenu Teclas permite que você defina seus próprios atalhos de\n" "teclado.\n" "\n" "Não esqueça de salvar os dados do calendário para restaurar sua\n" "configuração na próxima vez que você carregar Calcurse." msgid "Generic keybindings\n" msgstr "Teclas de Atalhos Genéricas\n" #, c-format msgid "" "Some of the keybindings apply whatever panel is selected. They are\n" "called generic keybinding.\n" "Here is the list of all the generic key bindings, together with their\n" "corresponding action:\n" "\n" " '%s' : Redraw function -> redraws calcurse panels, this is useful if\n" " you resize your terminal screen or when\n" " garbage appears inside the display\n" " '%s' : Add Appointment -> add an appointment or an event\n" " '%s' : Add ToDo -> add a todo\n" " '%s' : -1 Day -> move to previous day\n" " '%s' : +1 Day -> move to next day\n" " '%s' : -1 Week -> move to previous week\n" " '%s' : +1 Week -> move to next week\n" " '%s' : -1 Month -> move to previous month\n" " '%s' : +1 Month -> move to next month\n" " '%s' : -1 Year -> move to previous year\n" " '%s' : +1 Year -> move to next year\n" " '%s' : Goto today -> move to current day\n" "\n" "The '%s' and '%s' keys are used to scroll text upward or downward\n" "when inside specific screens such the help screens for example.\n" "They are also used when the calendar screen is selected to switch\n" "between the available views (monthly and weekly calendar views)." msgstr "" "Algumas das teclas de atalhos se aplicam a qualquer painel que esteja\n" "selecionado. Elas são chamadas teclas de atalhos genéricas.\n" "Aqui está a lista de todas as teclas de atalhos genéricas, junto com\n" "suas respectivas ações:\n" "\n" " '%s' : Redesenhar -> redesenha painéis do calcurse, sendo útil se\n" " você redimensionar a sua tela de terminal ou\n" " quando aparece lixo na visão do calcurse\n" " '%s' : AdicAgend -> adiciona um agendamento ou um evento\n" " '%s' : AdiTarefa -> adiciona uma tarefa\n" " '%s' : -1 Dia -> move para dia anterior\n" " '%s' : +1 Dia -> move para dia seguinte\n" " '%s' : -1 Semana -> move para semana anterior\n" " '%s' : +1 Semana -> move para semana seguinte\n" " '%s' : -1 Mês -> move para mês anterior\n" " '%s' : +1 Mês -> move para mês seguinte\n" " '%s' : -1 Ano -> move para ano anterior\n" " '%s' : +1 Ano -> move para ano seguinte\n" " '%s' : IrPara hoje -> move para o dia de hoje\n" "\n" "As teclas '%s' e '%s' são usadas para rolar texto para cima e para\n" "baixo quando se está dentro de telas específicas, como, por exemplo,\n" "as telas de ajuda. Elas também são usadas quando a tela de calendário\n" "está selecionada para se alternar entre as visões disponíveis (visão\n" "de calendário mensal ou semanal)." msgid "OtherCmd\n" msgstr "OutroCmd\n" #, c-format msgid "" "Switch between status bar help pages.\n" "Because the terminal screen is too narrow to display all of the\n" "available commands, you need to press '%s' to see the next set of\n" "commands together with their keybindings.\n" "Once the last status bar page is reached, pressing '%s' another time\n" "leads you back to the first page." msgstr "" "Alterna entre páginas de ajuda de barra de status.\n" "Porque a tela do terminal é muito estreita para exibir todos os\n" "comandos disponíveis, você tem que pressionar \"%s\" para ver o\n" "próximo conjunto de comandos junto com suas teclas de atalhos.\n" "Assim que se chegar à última página de barra de status, ao se\n" "pressionar \"%s\" mais uma vez levará você de volta para a primeira\n" "página." msgid "Calcurse - text-based organizer" msgstr "Calcurse - Organizador baseado em texto" #, c-format msgid "" "\n" "Copyright (c) 2004-2013 calcurse Development Team\n" "All rights reserved.\n" "\n" "Redistribution and use in source and binary forms, with or without\n" "modification, are permitted provided that the following conditions\n" "are met:\n" "\n" "\t- Redistributions of source code must retain the above\n" "\t copyright notice, this list of conditions and the\n" "\t following disclaimer.\n" "\n" "\t- Redistributions in binary form must reproduce the above\n" "\t copyright notice, this list of conditions and the\n" "\t following disclaimer in the documentation and/or other\n" "\t materials provided with the distribution.\n" "\n" "\n" "Send your feedback or comments to : misc@calcurse.org\n" "Calcurse home page : http://calcurse.org" msgstr "" "\n" "Copyright (c) 2004-2012 Equipe de Desenvolvimento do calcurse\n" "Todos os direitos reservados.\n" "\n" "A redistribuição e uso na forma de código-fonte e binário, com ou\n" "sem modificações, são permitidas na medida em que as seguintes\n" "condições sejam cumpridas:\n" "\n" "\t- As redistribuições de código-fonte devem reter os direitos de\n" "\t propriedade, a presente licença, esta lista de condições e a\n" "\t seguinte ressalva.\n" "\n" "\t- As redistribuições em forma binária devem reproduzir a\n" "\t presente licença, esta lista de condições e a seguinte\n" "\t ressalva na documentação e/ou outros materiais fornecidos\n" "\t com a distribuição.\n" "\n" "\n" "Envie seu feedback ou comentários para : misc@calcurse.org\n" "Homepage do Calcurse : http://calcurse.org" msgid "unknown ical type" msgstr "tipo de ical desconhecido" msgid "recurrence frequence not found." msgstr "frequência de recorrência não encontrada." msgid "recurrence frequence not recognized." msgstr "frequência de recorrência não reconhecida." msgid "recurrence rule malformed." msgstr "regra de recorrência mal-formulada." msgid "recurrence exception dates malformed." msgstr "Exceção de datas de recorrência mal-formulada." msgid "could not get entire item description." msgstr "não foi possível adquirir a descrição completa do item." msgid "description malformed." msgstr "descrição mal-formulada." msgid "appointment has no start time." msgstr "agendamento não tem hora de início." msgid "could not compute duration (no end time)." msgstr "não foi possível computar duração (falta hora de término)." msgid "item has a negative duration." msgstr "item tem uma duração negativa." msgid "event date is not defined." msgstr "data de evento não está definida." msgid "item could not be identified." msgstr "item não pôde ser identificado." msgid "could not retrieve item summary." msgstr "não foi possível adquirir sumário do item" msgid "could not retrieve event start time." msgstr "não foi possível adquirir hora de início do evento." msgid "could not retrieve event end time." msgstr "não foi possível adquirir hora de término do evento." msgid "item duration malformed." msgstr "duração de item mal-formulada." msgid "The ical file seems to be malformed. The end of item was not found." msgstr "" "O arquivo ical parece estar mal-formulada. O fim do item não foi encontrado." msgid "item priority is not acceptable (must be between 1 and 9)." msgstr "prioridade de item não é aceitável (deve ser entre 1 e 9)." msgid "Warning: ical header malformed or wrong version number. Aborting..." msgstr "" "Aviso: cabeçalho ical mal-formulado ou número de versão errado. Abortando..." msgid "Enter the new time ([hh:mm] or [hhmm]) : " msgstr "Entre com novo horário ([hh:mm] ou [hhmm]) :" msgid "Press [Enter] to continue" msgstr "Pressione [Enter] para continuar" msgid "You entered an invalid time, should be [hh:mm] or [hhmm]" msgstr "Você entrou com horário inválido, deveria ser [hh:mm] ou [hhmm]" msgid "" "Enter new end time ([hh:mm], [hhmm]) or duration ([+hh:mm], [+xxxdxxhxxm] or " "[+mm]) : " msgstr "" "Entre com novo horário de término ([hh:mm],[hhmm]) ou duração ([+hh:mm], " "[+xxxdxxhxxm] ou [+mm]) : " msgid "Invalid time: start time must be before end time!" msgstr "" "Horário inválido: horário de início deve ser antes do horário de término!" msgid "Enter the new item description:" msgstr "Entre com uma descrição para o novo item:" msgid "Enter the new repetition type:" msgstr "Entre com o novo tipo de repetição:" msgid "(d)aily" msgstr "(d)iária" msgid "(w)eekly" msgstr "(s)emanal" msgid "(m)onthly" msgstr "(m)ensal" msgid "(y)early" msgstr "(a)nual" #, c-format msgid "(currently using %s)" msgstr "(atualmente usando %s)" msgid "[dwmy]" msgstr "[dsma]" msgid "The frequence you entered is not valid." msgstr "A frequência informada não é válida." msgid "The entered date is not valid." msgstr "A data informada não é válida." #, c-format msgid "Possible formats are [%s] or '0' for an endless repetition." msgstr "Formatos possíveis são [%s] ou '0' para repetição sem fim." msgid "Enter the new repetition frequence:" msgstr "Entre com uma nova frequência de repetição:" #, c-format msgid "Enter the new ending date: [%s] or '0'" msgstr "Entre com a nova data final: [%s] ou '0'" msgid "Description" msgstr "Descrição" msgid "Repetition" msgstr "Repetição" msgid "Edit: " msgstr "Editar: " msgid "Start time" msgstr "Horário de início" msgid "End time" msgstr "Horário de término" msgid "Pipe item to external command:" msgstr "Redirecionar o item para comando externo:" msgid "" "Enter start time ([hh:mm] or [hhmm]), leave blank for an all-day event : " msgstr "" "Entre com a data de início ([hh:mm] ou [hhmm]), ou deixe em branco para dia " "inteiro:" msgid "" "Enter end time ([hh:mm] or [hhmm]) or duration ([+hh:mm], [+xxxdxxhxxm] or " "[+mm]) : " msgstr "" "Entre com a data de término ([hh:mm] ou [hhmm]) ou duração ([+hh:mm], " "[+xxxdxxhxxm] ou [+mm]) :" msgid "Enter description :" msgstr "Entre com a descrição :" msgid "You entered an invalid start time, should be [hh:mm] or [hhmm]" msgstr "" "Você entrou com um horário de início inválida - deveria ser [hh:mm] ou [hhmm]" msgid "" "Invalid end time/duration, should be [hh:mm], [hhmm], [+hh:mm], " "[+xxxdxxhxxm] or [+mm]" msgstr "" "Horário de término/duração inválido/a, deveria ser [hh:mm], [hhmm], [+hh:" "mm], [+xxxdxxhxxm] ou [+mm]" msgid "Do you really want to delete this item ?" msgstr "Tem certeza que deseja excluir este item ?" msgid "This item is recurrent. Delete (a)ll occurences or just this (o)ne ?" msgstr "" "Este item é recorrente. Excluir (t)odas ocorrências ou somente (e)esta aqui?" msgid "[ao]" msgstr "[te]" msgid "This item has a note attached to it. Delete (i)tem or just its (n)ote ?" msgstr "" "Este item tem uma anotação anexada a ele. Excluir o (i)tem ou somente a " "(n)ota?" msgid "[in]" msgstr "[in]" msgid "no such type" msgstr "tipo inexistente" msgid "Enter the new ToDo item : " msgstr "Entre com o novo item da Tarefa : " msgid "Enter the ToDo priority [1 (highest) - 9 (lowest)] :" msgstr "Entre com a prioridade da Tarefa [1 (mais alta) - 9 (mais baixa)]:" msgid "Do you really want to delete this task ?" msgstr "Você realmente deseja excluir esta tarefa ?" msgid "This item has a note attached to it. Delete (t)odo or just its (n)ote ?" msgstr "" "Este item possui uma nota anexada a ele. Excluir o (t)odo ou somente sua " "(n)ota ?" msgid "[tn]" msgstr "[tn]" msgid "Enter the new ToDo description :" msgstr "Entre com a nova descrição da Tarefa :" msgid "Enter the repetition type:" msgstr "Entre com o tipo da repetição:" msgid "Enter the repetition frequence:" msgstr "Entre com a frequência de repetição:" #, c-format msgid "Enter the ending date: [%s] or '0' for an endless repetition" msgstr "Entre com a data final: [%s] ou \"0\" para uma repetição sem fim" #, c-format msgid "Possible formats are [%s] or '0' for an endless repetition" msgstr "Formatos possíveis são [%s] ou \"0\" para uma repetição sem fim" msgid "This item is already a repeated one." msgstr "Este é um item repetido." msgid "Press [ENTER] to continue." msgstr "Pressione [ENTER] para continuar." msgid "Sorry, the date you entered is older than the item start time." msgstr "Desculpe, a data que foi informou é mais antiga que a data inicial." msgid "wrong item type" msgstr "tipo de item errado" msgid "Saving..." msgstr "Salvando..." msgid "Loading..." msgstr "Carregando..." msgid "Exporting..." msgstr "Exportando..." msgid "Internal error while displaying progress bar" msgstr "Erro interno enquanto exibia barra de progresso" msgid "Choose the file used to export calcurse data:" msgstr "Escolha o arquivo para o qual serão exportados os dados do calcurse:" msgid "The file cannot be accessed, please enter another file name." msgstr "" "O arquivo não pode ser acessado. Favor, entra com outro nome de arquivo." #, c-format msgid "Failed to open \"%s\", - %s\n" msgstr "Falha na abertura de \"%s\", - %s\n" msgid "Failed to build message\n" msgstr "Falha na criação da mensagem\n" #, c-format msgid "Failed to print message \"%s\"\n" msgstr "Falha na exibição da mensagem \"%s\"\n" #, c-format msgid "Failed to close \"%s\" - %s\n" msgstr "Falha no fechamento de \"%s\" - %s\n" #, c-format msgid "%s does not exist, create it now [y or n] ? " msgstr "%s não existe, criar agora [s ou n]? " msgid "aborting...\n" msgstr "abortando...\n" #, c-format msgid "%s successfully created\n" msgstr "%s criado com sucesso\n" msgid "starting interactive mode...\n" msgstr "iniciando modo interativo...\n" msgid "Problems accessing data file ..." msgstr "Problemas no acesso do arquivo de dados..." msgid "The data files were successfully saved" msgstr "Os arquivos de dados foram salvos com sucesso" msgid "failed to open appointment file" msgstr "falha na abertura do arquivo de agendamento" msgid "syntax error in the item date" msgstr "erro de sintaxe no item data" msgid "no event nor appointment found" msgstr "nenhum evento nem agendamento encontrado" msgid "syntax error in item time or duration" msgstr "erro de sintaxe no horário ou duração do item" msgid "syntax error in item identifier" msgstr "erro de sintaxe no identificador do item" msgid "wrong format in the appointment or event" msgstr "formato errado no agendamento ou evento" msgid "syntax error in item repetition" msgstr "erro de sintaxe na repetição do item " msgid "failed to open todo file" msgstr "falha na abertura do arquivo de tarefas" msgid "failed to open key file" msgstr "falha na abertura do arquivo de teclas" msgid "" "\n" "Too many errors while reading configuration file!\n" "Please backup your keys file, remove it from directory, and launch calcurse " "again.\n" msgstr "" "\n" "Muitos erros de leitura do arquivo de configuração!\n" "Favor faça backup de seus arquivos de teclas, exclua-o de seu diretório e " "carregue calcurse novamente.\n" msgid "Could not read key label" msgstr "Não foi possível ler o rótulo de tecla" msgid "Key label not recognized" msgstr "Rótulo de tecla não reconhecida" #, c-format msgid "Error reading key: \"%s\"" msgstr "Erro na leitura da tecla: \"%s\"" #, c-format msgid "\"%s\" assigned multiple times!" msgstr "\"%s\" alocada múltiplas vezes!" msgid "There were some errors when loading keys file, see log file ?" msgstr "Ocorreram erros na leitura de arquivo de chaves, viu arquivos de log ?" msgid "Too many errors while reading keys file, aborting..." msgstr "Erros demais na leitura do arquivo de chaves, abortando..." #, c-format msgid "FATAL ERROR: could not create %s: %s\n" msgstr "ERRO FATAL: não foi possível criar %s: %s\n" msgid "Welcome to Calcurse. Missing data files were created." msgstr "" "Bem-vindo ao Calcurse. Arquivos de dados não encontrados foram criados." msgid "Data files found. Data will be loaded now." msgstr "Arquivos de dados encontrados. Os dados serão carregados agora." msgid "The data were successfully exported" msgstr "Os dados foram exportados com sucesso" msgid "unknown export type" msgstr "tipo de exportação desconhecido" msgid "wrong export mode" msgstr "modo de exportação errado" msgid "Enter the file name to import data from:" msgstr "Entre com o nome do arquivo de onde serão importados os dados:" #, c-format msgid "Import process report: %04d lines read " msgstr "Relatório de processo importação: %04d linhas lidas" msgid "unknown import type" msgstr "tipo de importação desconhecida" msgid "FATAL ERROR: the input file cannot be accessed, Aborting..." msgstr "ERRO FATAL: o arquivo de entrada não pode ser acessado. Abortando..." msgid "FATAL ERROR: wrong import mode" msgstr "ERRO FATAL: modo de importação errado" #, c-format msgid "%d app" msgid_plural "%d apps" msgstr[0] "%d agend." msgstr[1] "%d agends." #, c-format msgid "%d event" msgid_plural "%d events" msgstr[0] "%d evento" msgstr[1] "%d eventos" #, c-format msgid "%d todo" msgid_plural "%d todos" msgstr[0] "%d tarefa" msgstr[1] "%d tarefas" #, c-format msgid "%d skipped" msgstr "%d ignorado(s)" msgid "Some items could not be imported, see log file ?" msgstr "Alguns item não puderam ser importados. Ver arquivo de log ?" msgid "Warning: could not create temporary log file, Aborting..." msgstr "Aviso: não foi possível criar arquivo temporário de log. Abortando..." msgid "Warning: could not open temporary log file, Aborting..." msgstr "" "Aviso: não foi possível abrir o arquivo temporário de log. Abortando..." msgid "No log file to display!" msgstr "Nenhum arquivo de log para ser exibido!" #, c-format msgid "Warning: could not erase temporary log file %s, Aborting..." msgstr "" "Aviso: não foi possível apagar o arquivo temporário de log %s. Abortando..." msgid "Invalid delay" msgstr "Atraso inválido" #, c-format msgid "" "\n" "WARNING: it seems that another calcurse instance is already running.\n" "If this is not the case, please remove the following lock file: \n" "\"%s\"\n" "and restart calcurse.\n" msgstr "" "\n" "AVISO: para que outra instância de calcurse já está em execução.\n" "Se este não é o caso, favor excluir o seguinte arquivo de trava: \n" "\"%s\"\n" "e reinicie calcurse.\n" msgid "" "#\n" "# Calcurse keys configuration file\n" "#\n" "# This file sets the keybindings used by Calcurse.\n" "# Lines beginning with \"#\" are comments, and ignored by Calcurse.\n" "# To assign a keybinding to an action, this file must contain a line\n" "# with the following syntax:\n" "#\n" "# ACTION KEY1 KEY2 ... KEYn\n" "#\n" "# Where ACTION is what will be performed when KEY1, KEY2, ..., or KEYn\n" "# will be pressed.\n" "#\n" "# To define bindings which use the CONTROL key, prefix the key with 'C-'.\n" "# The escape, space bar and horizontal Tab key can be specified using\n" "# the 'ESC', 'SPC' and 'TAB' keyword, respectively.\n" "# Arrow keys can also be specified with the UP, DWN, LFT, RGT keywords.\n" "# Last, Home and End keys can be assigned using 'KEY_HOME' and 'KEY_END'\n" "# keywords.\n" "#\n" "# A description of what each ACTION keyword is used for is available\n" "# from calcurse online configuration menu.\n" msgstr "" "#\n" "# Calcurse - arquivo de configuração de teclas\n" "#\n" "# Este arquivo define as teclas de atalhos (keybindings) usadas pelo " "Calcurse.\n" "# Linhas iniciadas com \"#\" são comentários, e são ignoradas pelo " "Calcurse.\n" "# Para designar uma tecla de atalho para uma ação, o arquivo deve conter " "uma\n" "# linha com a seguinte sintaxe:\n" "#\n" "# AÇÃO TECLA1 TECLA2 ... TECLAn\n" "#\n" "# Onde AÇÃO é o que será executado quando TECLA1, TECLA2, ..., ou TECLAn\n" "# for pressionada.\n" "#\n" "# Para definir atalhos que usem a tecla CONTROL, insira antes 'C-' na " "tecla.\n" "# Para as teclas ESC, barra de espaço e Tab horizontal, podem ser# " "especificadas as palavras-chave 'ESC', 'SPC' e 'TAB', respectivamente.\n" "# Teclas de setas podem também ser especificadas com as palavras-chave UP, " "DWN,# LFT e RGT.# Por último, teclas Home e End podem ser designadas usando " "as palavras-chave\n" "# 'KEY_HOME' e 'KEY_END'.#\n" "# Uma descrição do como cada palavra-chave de AÇÃO é está disponível no " "menu\n" "# de configuração online do calcurse.\n" msgid "FATAL ERROR: could not create default keys file." msgstr "ERRO FATAL: não foi possível criar arquivo de teclas padrões." msgid "FATAL ERROR: key value out of bounds" msgstr "ERRO FATAL: valor da tecla fora dos limites" msgid "Cancel the ongoing action." msgstr "Cancela a ação em andamento." msgid "Select the highlighted item." msgstr "Seleciona o item realçado." msgid "Print general information about calcurse's authors, license, etc." msgstr "Imprime informações gerais sobre os autores do calcurse, licença, etc." msgid "Display hints whenever some help screens are available." msgstr "Exibe dicas quando algumas telas de ajuda estiverem disponíveis." msgid "Exit from the current menu, or quit calcurse." msgstr "Sai deste menu, ou sai do calcurse." msgid "Save calcurse data." msgstr "Salva dados do calcurse." msgid "Copy the item that is currently selected." msgstr "Copia o item que está selecionado no momento." msgid "Paste an item at the current position." msgstr "Cola um item na posição atual." msgid "Select next panel in calcurse main screen." msgstr "Seleciona o próximo painel na tela principal do calcurse." msgid "Import data from an external file." msgstr "Importa dados a partir de um arquivo externo." msgid "Export data to a new file format." msgstr "Exporta dados para um novo formato de arquivo." msgid "Select the day to go to." msgstr "Seleciona o dia para ir para." msgid "Show next possible actions inside status bar." msgstr "Mostra próximas ações possíveis dentro da barra de status." msgid "Enter the configuration menu." msgstr "Entra no menu de configurações." msgid "Redraw calcurse's screen." msgstr "Redesenha a tela do calcurse." msgid "Add an appointment, whichever panel is currently selected." msgstr "" "Adiciona um agendamento, seja qual for o painel atualmente selecionado." msgid "Add a todo item, whichever panel is currently selected." msgstr "" "Adiciona um item de tarefa, seja qual for o painel atualmente selecionado." msgid "" "Move to previous day in calendar, whichever panel is currently selected." msgstr "" "Move para o dia anterior no calendário, seja qual for o painel atualmente " "selecionado." msgid "Move to next day in calendar, whichever panel is currently selected." msgstr "" "Move para o dia seguinte no calendário, seja qual for o painel atualmente " "selecionado." msgid "" "Move to previous week in calendar, whichever panel is currently selected" msgstr "" "Move para a semana anterior no calendário, seja qual for o painel atualmente " "selecionado." msgid "Move to next week in calendar, whichever panel is currently selected." msgstr "" "Move para a semana seguinte no calendário, seja qual for o painel atualmente " "selecionado." msgid "" "Move to previous month in calendar, whichever panel is currently selected" msgstr "" "Move para o mês anterior no calendário, seja qual for o painel atualmente " "selecionado." msgid "Move to next month in calendar, whichever panel is currently selected." msgstr "" "Move para o mês seguinte no calendário, seja qual for o painel atualmente " "selecionado." msgid "" "Move to previous year in calendar, whichever panel is currently selected" msgstr "" "Move para o ano anterior no calendário, seja qual for o painel atualmente " "selecionado." msgid "Move to next year in calendar, whichever panel is currently selected." msgstr "" "Move para o ano seguinte no calendário, seja qual for o painel atualmente " "selecionado." msgid "Scroll window down (e.g. when displaying text inside a popup window)." msgstr "" "Rola a tela para baixo (ex: quando exibindo texto em uma janela pop-up)." msgid "Scroll window up (e.g. when displaying text inside a popup window)." msgstr "" "Rola a tela para cima (ex: quando exibindo texto em uma janela pop-up)." msgid "Go to today, whichever panel is selected." msgstr "Ir para hoje, seja qual for o painel selecionado." msgid "Move to the right." msgstr "Move para a direita." msgid "Move to the left." msgstr "Move para a esquerda." msgid "Move down." msgstr "Move para baixo." msgid "Move up." msgstr "Move para cima." msgid "" "Select the first day of the current week when inside the calendar panel." msgstr "" "Seleciona o primeiro dia da semana atual quando se está dentro do painel do " "calendário." msgid "Select the last day of the current week when inside the calendar panel." msgstr "" "Seleciona o último dia da semana atual quando se está dentro do painel do " "calendário." msgid "Add an item to the currently selected panel." msgstr "Adiciona um item para o painel atualmente selecionado." msgid "Delete the currently selected item." msgstr "Exclui o item atualmente selecionado." msgid "Edit the currently seleted item." msgstr "Edita o item atualmente selecionado." msgid "Display the currently selected item inside a popup window." msgstr "Exibe o item atualmente selecionado em uma janela pop-up." msgid "Flag the currently selected item as important." msgstr "Sinaliza o item atualmente selecionado como importante." msgid "Repeat an item" msgstr "Repete um item" msgid "Pipe the currently selected item to an external program." msgstr "Redirecia o item selecionado para um programa externo." msgid "Attach (or edit if one exists) a note to the currently selected item" msgstr "" "Anexa (ou edita, se já existir) uma nota ao item atualmente selecionado" msgid "View the note attached to the currently selected item." msgstr "Vê a nota anexada ao item atualmente selecionado." msgid "Raise a task priority inside the todo panel." msgstr "Aumenta a prioridade de uma tarefa no painel de tarefas." msgid "Lower a task priority inside the todo panel." msgstr "Reduz a prioridade de uma tarefa no painel de tarefas." msgid "FATAL ERROR: null file pointer." msgstr "ERRO FATAL: ponteiro nulo de arquivo." #, c-format msgid "When adding default key for \"%s\", \"%s\" was already assigned!" msgstr "Quando adicionava tecla padrão para \"%s\", \"%s\" já foi designada!" msgid "xmalloc: zero size" msgstr "xmalloc: tamanho zero" msgid "xmalloc: out of memory" msgstr "xmalloc: sem memória" msgid "xcalloc: zero size" msgstr "xcalloc: tamanho zero" msgid "xcalloc: overflow" msgstr "xcalloc: estouro de capacidade" msgid "xcalloc: out of memory" msgstr "xcalloc: sem memória" msgid "xrealloc: zero size" msgstr "xrealloc: tamanho zero" msgid "xrealloc: overflow" msgstr "xrealloc: estouro de capacidade" msgid "xrealloc: out of memory" msgstr "xrealloc: sem memória" msgid "xfree: null pointer" msgstr "xfree: ponteiro nulo" msgid "could not allocate memory to store block info" msgstr "não foi possível alocar memória para armazenar informação do bloco" msgid "Block not found" msgstr "Bloco não encontrado" #, c-format msgid "overflow at %s" msgstr "estouro de capacidade em %s" #, c-format msgid "dbg_free: null pointer at %s" msgstr "dbg_free: ponteiro nulo em %s" #, c-format msgid "block seems already freed at %s" msgstr "bloco parece já estar livre em %s" #, c-format msgid "corrupt block header at %s" msgstr "cabeçalho do bloco corrompido em %s" #, c-format msgid "corrupt block end at %s, (end = %u, should be %d)" msgstr "final de bloco corrompido em %s, (final = %u, deveria ser %d)" msgid "---==== MEMORY BLOCK ====----------------\n" msgstr "---==== BLOCO DE MEMÓRIA ====-----------\n" #, c-format msgid " id: %u\n" msgstr " id: %u\n" #, c-format msgid " size: %u\n" msgstr " tamanho: %u\n" #, c-format msgid " allocated in: %s\n" msgstr " alocado em: %s\n" msgid "-----------------------------------------\n" msgstr "----------------------------------------\n" msgid "+------------------------------+\n" msgstr "+-----------------------------------------+\n" msgid "| calcurse memory usage report |\n" msgstr "| relatório de uso de memória do calcurse |\n" #, c-format msgid " number of calls: %u\n" msgstr " número de chamadas: %u\n" #, c-format msgid " allocated blocks: %u\n" msgstr " blocos alocados: %u\n" #, c-format msgid " unfreed blocks: %u\n" msgstr " blocos não livres: %u\n" #, c-format msgid "Warning: could not open %s, Aborting..." msgstr "Aviso: não foi possível abrir %s. Abortando..." msgid "error while launching command: could not fork" msgstr "erro durante o lançamento do comando: não foi possível realizar fork" msgid "error while launching command" msgstr "erro durante o lançamento do comando" msgid "(if set to YES, notify-bar will be displayed)" msgstr "(Se definida como SIM, a barra de notificação será exibida)" msgid "(Format of the date to be displayed inside notify-bar)" msgstr "(Formato da data a ser exibida dentro da barra de notificação)" msgid "(Format of the time to be displayed inside notify-bar)" msgstr "(Formato de horário a ser exibido dentro da barra de notificação)" msgid "" "(Warn user if an appointment is within next 'notify-bar_warning' seconds)" msgstr "" "(Avisa o usuário se um agendamento ocorrerá nos próximos \"notify-bar_warning" "\" segundos)" msgid "(Command used to notify user of an upcoming appointment)" msgstr "(Comando usado para notificar usuário de um agendamento próximo)" msgid "(Notify all appointments instead of flagged ones only)" msgstr "(Notifica todos agendamentos ao invés de somente os marcados)" msgid "(Run in background to get notifications after exiting)" msgstr "(Executa em plano de fundo para pegar notificações depois de sair)" msgid "(Log activity when running in background)" msgstr "(Registra atividades quando estiver executando em plano de fundo)" msgid "Enter the time format (see 'man 3 strftime' for possible formats) " msgstr "" "Entre com o formato do horário (veja \"man 3 strftime\" para formatos " "possíveis) " msgid "Enter the number of seconds (0 not to be warned before an appointment)" msgstr "" "Entre com o número de segundos (0 para não ser avisado antes do agendamento)" msgid "Enter the notification command " msgstr "Entre com o comando de notificação " msgid "notification options" msgstr "opções de notificação" msgid "incoherent repetition type" msgstr "" "(se definida como SIM, salvamento automático será feito quando estiver de " "saída)" msgid "unknown repetition type" msgstr "tipo de repetição desconhecida" msgid "unknown character" msgstr "caractere desconhecido" msgid "date error in event" msgstr "erro na data em evento" msgid "event not found" msgstr "evento não encontrado" msgid "appointment not found" msgstr "agendamento não encontrado" msgid "syntax error in item date" msgstr "erro de sintaxe no item data" #, c-format msgid "Could not remove calcurse lock file: %s\n" msgstr "Não foi possível excluir arquivo de trava do Calcurse: %s\n" #, c-format msgid "Error setting signal #%d : %s\n" msgstr "Erro na definição de sinal #%d : %s\n" msgid "no note attached" msgstr "nenhuma nota anexada" msgid "no such todo" msgstr "tarefa inexistente" msgid "todo not found" msgstr "tarefa não encontrada" msgid "/!\\ INTERNAL ERROR /!\\" msgstr "/!\\ ERRO INTERNO /!\\" msgid "Please report the following bug:" msgstr "Por favor, reporte o seguinte erro:" msgid "[yn]" msgstr "[sn]" msgid "Press any key to continue..." msgstr "Pressione qualquer tecla para continuar..." msgid "failure in mktime" msgstr "falha no mktime" msgid "error in mktime" msgstr "erro no mktime" msgid "could not convert string" msgstr "Não foi possível converter string" msgid "out of range" msgstr "fora de alcance" msgid "yes" msgstr "sim" msgid "no" msgstr "não" msgid "option not defined" msgstr "opção não definida" #, c-format msgid "temporary file \"%s\" could not be created" msgstr "arquivo temporário \"%s\" não pôde ser criado" #, c-format msgid "Error when closing file at %s" msgstr "Erro em fechar arquivo em %s" msgid "No note file found\n" msgstr "Nenhuma nota encontrada\n" msgid "January" msgstr "Janeiro" msgid "February" msgstr "Fevereiro" msgid "March" msgstr "Março" msgid "April" msgstr "Abril" msgid "May" msgstr "Maio" msgid "June" msgstr "Junho" msgid "July" msgstr "Julho" msgid "August" msgstr "Agosto" msgid "September" msgstr "Setembro" msgid "October" msgstr "Outubro" msgid "November" msgstr "Novembro" msgid "December" msgstr "Dezembro" msgid "Sun" msgstr "Dom" msgid "Mon" msgstr "Seg" msgid "Tue" msgstr "Ter" msgid "Wed" msgstr "Qua" msgid "Thu" msgstr "Qui" msgid "Fri" msgstr "Sex" msgid "Sat" msgstr "Sab" msgid "mm/dd/yyyy" msgstr "mm/dd/yyyy" msgid "dd/mm/yyyy" msgstr "dd/mm/yyyy" msgid "yyyy/mm/dd" msgstr "yyyy/mm/dd" msgid "yyyy-mm-dd" msgstr "yyyy-mm-dd" msgid "Calendar" msgstr "Calendário" msgid "Appointments" msgstr "Agendamentos" msgid "ToDo" msgstr "Tarefas" msgid "Quit" msgstr "Sair" msgid "Save" msgstr "Salvar" msgid "Copy" msgstr "Copiar" msgid "Paste" msgstr "Colar" msgid "Chg Win" msgstr "MudarJan" msgid "Import" msgstr "Importar" msgid "Export" msgstr "Exportar" msgid "Go to" msgstr "IrPara" msgid "Config" msgstr "Config" msgid "Redraw" msgstr "Redesenhar" msgid "Add Appt" msgstr "AdicAgend" msgid "Add Todo" msgstr "AdiTarefa" msgid "-1 Day" msgstr "-1 Dia" msgid "+1 Day" msgstr "+1 Dia" msgid "-1 Week" msgstr "-1 Semana" msgid "+1 Week" msgstr "+1 Semana" msgid "-1 Month" msgstr "-1 Mês" msgid "+1 Month" msgstr "+1 Mês" msgid "-1 Year" msgstr "-1 Ano" msgid "+1 Year" msgstr "+1 Ano" msgid "Today" msgstr "Hoje" msgid "Nxt View" msgstr "Visão Seg" msgid "Prv View" msgstr "Visão Ant" msgid "beg Week" msgstr "IniSemana" msgid "end Week" msgstr "FimSemana" msgid "Add Item" msgstr "AdicItem" msgid "Del Item" msgstr "ExclItem" msgid "Edit Itm" msgstr "EditItem" msgid "View" msgstr "Ver" msgid "Pipe" msgstr "Redirec." msgid "Flag Itm" msgstr "SinalItem" msgid "Repeat" msgstr "Repetir" msgid "EditNote" msgstr "EditNota" msgid "ViewNote" msgstr "VerNota" msgid "Prio.+" msgstr "Prio.+" msgid "Prio.-" msgstr "Prio.-" msgid "OtherCmd" msgstr "OutroCmd" msgid "unknown panel" msgstr "painel desconhecido" msgid "Usage: calcurse-upgrade [-h|-v|--config ]" msgstr "Uso: calcurse-upgrade [-h|-v|--config ]" msgid "unrecognized option:" msgstr "opção não reconhecida:" msgid "Configuration file not found:" msgstr "Arquivo de configuração não encontrado:" msgid "Pre-3.0.0 configuration file format detected..." msgstr "Formato de arquivo de configuração pre-3.0.0 detectado..." msgid "Create temporary backup of the configuration file..." msgstr "cria backup temporário do arquivo de configuração..." msgid "Old backup file found:" msgstr "Arquivo de backup antigo encontrado:" msgid "" "\n" "If a previous conversion did not complete, please try to restore your\n" "configuration from this backup and then remove the backup file." msgstr "" "\n" "Se uma conversão anterior não completou, favor tente restaurar sua\n" "configuração a partir deste backup e, então, exclua o arquivo backup." msgid "done" msgstr "feito" msgid "Old temporary file found:" msgstr "Arquivo temporário antigo encontrado:" msgid "" "\n" "If a previous conversion did not complete, please try to remove this file " "and\n" "start over with a backup of your old configuration file." msgstr "" "\n" "Se uma conversão anterior não completou, favor tente excluir este\n" "arquivo e começar do começo com um backup de seu arquivo de\n" "configuração antigo." msgid "Upgrade configuration directives..." msgstr "atualiza diretivas de configuração..." msgid "Remove temporary backup..." msgstr "Excluir backup temporário..." calcurse-3.1.4/po/en@quot.header0000644000175000001440000000226312105444402013437 00000000000000# All this catalog "translates" are quotation characters. # The msgids must be ASCII and therefore cannot contain real quotation # characters, only substitutes like grave accent (0x60), apostrophe (0x27) # and double quote (0x22). These substitutes look strange; see # http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html # # This catalog translates grave accent (0x60) and apostrophe (0x27) to # left single quotation mark (U+2018) and right single quotation mark (U+2019). # It also translates pairs of apostrophe (0x27) to # left single quotation mark (U+2018) and right single quotation mark (U+2019) # and pairs of quotation mark (0x22) to # left double quotation mark (U+201C) and right double quotation mark (U+201D). # # When output to an UTF-8 terminal, the quotation characters appear perfectly. # When output to an ISO-8859-1 terminal, the single quotation marks are # transliterated to apostrophes (by iconv in glibc 2.2 or newer) or to # grave/acute accent (by libiconv), and the double quotation marks are # transliterated to 0x22. # When output to an ASCII terminal, the single quotation marks are # transliterated to apostrophes, and the double quotation marks are # transliterated to 0x22. # calcurse-3.1.4/po/LINGUAS0000644000175000001440000000006612105444321011676 00000000000000# Set of available languages. fr en de es nl ru pt_BR calcurse-3.1.4/po/remove-potcdate.sin0000644000175000001440000000066012105444402014462 00000000000000# Sed script that remove the POT-Creation-Date line in the header entry # from a POT file. # # The distinction between the first and the following occurrences of the # pattern is achieved by looking at the hold space. /^"POT-Creation-Date: .*"$/{ x # Test if the hold space is empty. s/P/P/ ta # Yes it was empty. First occurrence. Remove the line. g d bb :a # The hold space was nonempty. Following occurrences. Do nothing. x :b } calcurse-3.1.4/po/POTFILES.in0000644000175000001440000000065312105444321012430 00000000000000# List of source files which contain translatable strings. src/apoint.c src/args.c src/calcurse.c src/calendar.c src/config.c src/custom.c src/day.c src/dmon.c src/event.c src/getstring.c src/help.c src/ical.c src/interaction.c src/io.c src/keys.c src/llist.c src/mem.c src/note.c src/notify.c src/pcal.c src/recur.c src/sha1.c src/sigs.c src/todo.c src/utf8.c src/utils.c src/vars.c src/wins.c scripts/calcurse-upgrade.sh.in calcurse-3.1.4/po/Makevars0000644000175000001440000000347512105444321012354 00000000000000# Makefile variables for PO directory in any package using GNU gettext. # Usually the message domain is the same as the package name. DOMAIN = $(PACKAGE) # These two variables depend on the location of this directory. subdir = po top_builddir = .. # These options get passed to xgettext. XGETTEXT_OPTIONS = --no-location --keyword=_ --keyword=N_ # This is the copyright holder that gets inserted into the header of the # $(DOMAIN).pot file. Set this to the copyright holder of the surrounding # package. (Note that the msgstr strings, extracted from the package's # sources, belong to the copyright holder of the package.) Translators are # expected to transfer the copyright for their translations to this person # or entity, or to disclaim their copyright. The empty string stands for # the public domain; in this case the translators are expected to disclaim # their copyright. COPYRIGHT_HOLDER = calcurse Development Team # This is the email address or URL to which the translators shall report # bugs in the untranslated strings: # - Strings which are not entire sentences, see the maintainer guidelines # in the GNU gettext documentation, section 'Preparing Strings'. # - Strings which use unclear terms or require additional context to be # understood. # - Strings which make invalid assumptions about notation of date, time or # money. # - Pluralisation problems. # - Incorrect English spelling. # - Incorrect formatting. # It can be your email address, or a mailing list address where translators # can write to without being subscribed, or the URL of a web page through # which the translators can contact you. MSGID_BUGS_ADDRESS = bugs@calcurse.org # This is the list of locale categories, beyond LC_MESSAGES, for which the # message catalogs shall be used. It is usually empty. EXTRA_LOCALE_CATEGORIES = calcurse-3.1.4/po/fr.po0000644000175000001440000024645612105444503011641 00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Free Software Foundation, Inc. # This file is distributed under the same license as the PACKAGE package. # # Translators: # esaule , 2011. # Lukas Fleischer , 2011. # Stéphane Aulery , 2012. # , 2012. msgid "" msgstr "" "Project-Id-Version: calcurse\n" "Report-Msgid-Bugs-To: bugs@calcurse.org\n" "POT-Creation-Date: 2013-02-09 14:04+0100\n" "PO-Revision-Date: 2012-11-23 21:51+0000\n" "Last-Translator: Lukas Fleischer \n" "Language-Team: French (http://www.transifex.com/projects/p/calcurse/language/" "fr/)\n" "Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" msgid "null pointer" msgstr "Pointeur nul" msgid "date error in appointment" msgstr "erreur de date sur ce rendez-vous" msgid "no such appointment" msgstr "rendez-vous inconnu" msgid "" "Usage: calcurse [-g|-h|-v] [-an] [-t[num]] [-i] [-x[format]]\n" " [-d |] [-s[date]] [-r[range]]\n" " [-c] [-D] [-S] [--status]\n" " [--read-only]\n" msgstr "" msgid "Try 'calcurse -h' for more information.\n" msgstr "Taper 'calcurse -h' pour plus d'informations.\n" msgid "" "\n" "Copyright (c) 2004-2013 calcurse Development Team.\n" "This is free software; see the source for copying conditions.\n" msgstr "" "\n" "Copyright (c) 2004-2012 Équipe de développement de calcurse.\n" "Ceci est un logiciel libre ; consultez le code source pour connaître les\n" "conditions légales d'utilisation.\n" #, c-format msgid "Calcurse %s - text-based organizer\n" msgstr "Calcurse %s - organiseur personnel en mode texte\n" msgid "" "\n" "For more information, type '?' from within Calcurse, or read the manpage.\n" msgstr "" "\n" "Pour plus d'informations, tapez '?' dans Calcurse, ou lisez la page de " "manuel.\n" msgid "Mail feature requests and suggestions to .\n" msgstr "" "Vous pouvez envoyer vos remarques et suggestions à .\n" msgid "Mail bug reports to .\n" msgstr "Les rapports de bug sont à envoyer en anglais à .\n" msgid "" "\n" "Miscellaneous:\n" " -h, --help\n" "\tprint this help and exit.\n" "\n" " -v, --version\n" "\tprint calcurse version and exit.\n" "\n" " --status\n" "\tdisplay the status of running instances of calcurse.\n" "\n" " --read-only\n" "\tDon't save configuration nor appointments/todos. Use with care.\n" "\n" "Files:\n" " -c , --calendar \n" "\tspecify the calendar to use (has precedence over '-D').\n" "\n" " -D , --directory \n" "\tspecify the data directory to use.\n" "\tIf not specified, the default directory is ~/.calcurse\n" "\n" "Non-interactive:\n" " -a, --appointment\n" " \tprint events and appointments for current day and exit.\n" "\n" " -d , --day \n" "\tprint events and appointments for or upcoming days and\n" "\texit. To specify both a starting date and a range, use the\n" "\t'--startday' and the '--range' option.\n" "\n" " -g, --gc\n" "\trun the garbage collector for note files and exit. \n" "\n" " -i , --import \n" "\timport the icalendar data contained in . \n" "\n" " -n, --next\n" "\tprint next appointment within upcoming 24 hours and exit. Also given\n" "\tis the remaining time before this next appointment.\n" "\n" " -r[num], --range[=num]\n" "\tprint events and appointments for the [num] number of days\n" "\tand exit. If no [num] is given, a range of 1 day is considered.\n" "\n" " -s[date], --startday[=date]\n" "\tprint events and appointments from [date] and exit.\n" "\tIf no [date] is given, the current day is considered.\n" "\n" " -S, --search=\n" "\tsearch for the given regular expression within events, appointments,\n" "\tand todos description.\n" "\n" " -t[num], --todo[=num]\n" "\tprint todo list and exit. If the optional number [num] is given,\n" "\tthen only todos having a priority equal to [num] will be returned.\n" "\tThe priority number must be between 1 (highest) and 9 (lowest).\n" "\tIt is also possible to specify '0' for the priority, in which case\n" "\tonly completed tasks will be shown.\n" "\n" " -x[format], --export[=format]\n" "\texport user data to the specified format. Events, appointments and\n" "\ttodos are converted and echoed to stdout.\n" "\tTwo possible formats are available: 'ical' and 'pcal'.\n" "\tIf the optional argument format is not given, ical format is\n" "\tselected by default.\n" "\tnote: redirect standard output to export data to a file,\n" "\tby issuing a command such as: calcurse --export > calcurse.dat\n" msgstr "" #, c-format msgid "" "Error: both calcurse (pid: %d) and its daemon (pid: %d)\n" "seem to be running at the same time!\n" "Please check manually and restart calcurse.\n" msgstr "" "Erreur : calcurse (PID : %d) et son démon (PID : %d)\n" "semblent s'exécuter en même temps !\n" "Veuillez verifier manuellement et relancer calcurse.\n" #, c-format msgid "calcurse is running (pid %d)\n" msgstr "Calcurse est lancé (PID %d)\n" #, c-format msgid "calcurse is running in background (pid %d)\n" msgstr "calcurse s'exécute est arrière-plan (PID %d)\n" msgid "calcurse is not running\n" msgstr "calcurse n'est pas en cours d'exécution\n" msgid "to do:\n" msgstr "" "à faire :\n" "\n" msgid "completed tasks:\n" msgstr "tâches terminées :\n" msgid "next appointment:\n" msgstr "prochain rendez-vous :\n" msgid "Argument to the '-d' flag is not valid\n" msgstr "L'argument de l'option '-d' n'est pas valide\n" #, c-format msgid "Possible argument format are: '%s' or 'n'\n" msgstr "Format possible de l'argument : '%s' ou 'n'\n" msgid "Argument is not valid\n" msgstr "L'argument n'est pas valide\n" #, c-format msgid "Argument format for -s and --startday is: '%s'\n" msgstr "Le format de l'argument pour -s ou --startday est : '%s'\n" msgid "Argument format for -r and --range is: 'n'\n" msgstr "La syntaxe des arguments -r et --range est : 'n'\n" msgid "Can not handle more than one regular expression." msgstr "Impossible d'utiliser plus d'une expression régulière." msgid "Could not compile regular expression." msgstr "Impossible de compiler l'expression régulière." msgid "Argument for '-x' should be either 'ical' or 'pcal'\n" msgstr "L'argument pour '-x' doit être soit 'ical' soit 'pcal'\n" msgid "Option '-S' must be used with either '-d', '-r', '-s', '-a' or '-t'\n" msgstr "" "L'option '-S' doit être utilisée avec '-d', '-r', '-d', '-a', ou '-t'\n" msgid "To do :" msgstr "À faire :" msgid "Export to (i)cal or (p)cal format?" msgstr "" msgid "[ip]" msgstr "" msgid "Do you really want to quit ?" msgstr "Voulez-vous vraiment quitter ?" msgid "ERROR setting first day of week" msgstr "ERREUR de saisie du premier jour de la semaine" msgid "" "The day you entered is not valid (should be between 01/01/1902 and " "12/31/2037)" msgstr "" "Le jour que vous avez saisi n'est pas valide (il devrait être compris entre " "le 01/01/1902 et le 31/12/2037)" msgid "Press [ENTER] to continue" msgstr "Appuyer sur [ENTRÉE] pour continuer" #, c-format msgid "Enter the day to go to [ENTER for today] : %s" msgstr "" "Saisir le jour auquel vous souhaitez vous rendre [ou simplement ENTRÉE pour " "aujourd'hui] : %s" msgid "unknown color" msgstr "couleur inconnue" msgid "failed to open configuration file" msgstr "impossible d'ouvrir le fichier de configuration" #, c-format msgid "invalid configuration directive: \"%s\"" msgstr "instruction de configuration invalide : \"%s\"" msgid "" "Pre-3.0.0 configuration file format detected, please upgrade running " "`calcurse-upgrade`." msgstr "" "Format de fichier de configuration pre-3.0.0 détecté,\n" "veuillez mettre à jour en lançant `calcurse-upgrade`." #, c-format msgid "configuration variable unknown: \"%s\"" msgstr "variable de configuration inconnue : \"%s\"" #, c-format msgid "wrong configuration variable format for \"%s\"" msgstr "format de variable de configuration incorrect pour \"%s\"" msgid "Exit" msgstr "Quitter" msgid "General" msgstr "Général" msgid "Layout" msgstr "Écran" msgid "Sidebar" msgstr "Barre latérale" msgid "Color" msgstr "Couleur" msgid "Notify" msgstr "Notifier" msgid "Keys" msgstr "Raccourcis" msgid "Select" msgstr "Sélectionner" msgid "Up" msgstr "Haut" msgid "Down" msgstr "Bas" msgid "Left" msgstr "Gauche" msgid "Right" msgstr "Droite" msgid "Help" msgstr "Aide" msgid "layout configuration" msgstr "Configuration de l'affichage" msgid "" "With this configuration menu, one can choose where panels will be\n" "displayed inside calcurse screen. \n" "It is possible to choose between eight different configurations.\n" "\n" "In the configuration representations, letters correspond to:\n" "\n" " 'c' -> calendar panel\n" "\n" " 'a' -> appointment panel\n" "\n" " 't' -> todo panel\n" "\n" msgstr "" "Dans ce menu de configuration, on peut choisir où les panneaux\n" "seront affiché sur l'écran de calcurse. \n" "Il est possible de choisir parmi huit configurations différentes.\n" "\n" "Dans les représentations des configurations, les lettres correspondent à :\n" "\n" " 'c' -> calendrier\n" "\n" " 'a' -> panneau des rendez-vous\n" "\n" " 't' -> panneau des tâches\n" "\n" msgid "Width +" msgstr "Largeur +" msgid "Width -" msgstr "Largeur -" #, no-c-format msgid "" "This configuration screen is used to change the width of the side bar.\n" "The side bar is the part of the screen which contains two panels:\n" "the calendar and, depending on the chosen layout, either the todo list\n" "or the appointment list.\n" "\n" "The side bar width can be up to 50% of the total screen width, but\n" "can't be smaller than " msgstr "" "Cet écran de configuration sert à changer la largeur de la barre\n" "latérale. La barre latérale est la partie de l'écran qui contient deux\n" "panneaux : le calendier et, en fonction de l'agencement choisi,\n" "soit la liste des tâches soit la liste des rendez-vous.\n" "\n" "La barre latérale peut couvrir jusqu'à 50% de la largeur de l'écran,\n" "mais ne peut pas être plus petite que " msgid "No color" msgstr "Pas de couleur" msgid "Foreground" msgstr "Premier plan" msgid "Background" msgstr "Arrière plan" msgid "(terminal's default)" msgstr "(valeurs par défaut du terminal)" msgid "color theme" msgstr "thème de couleur" msgid "(if set to YES, automatic save is done when quitting)" msgstr "" "(si fixé à OUI, une sauvegarde est automatiquement effectuée en quittant)" msgid "(run the garbage collector when quitting)" msgstr "(lance le ramasse-miettes en quittant)" msgid "(if not null, automatically save data every 'periodic_save' minutes)" msgstr "" "(enregistre automatiquement toutes les 'periodic_save' minutes, si non nul)" msgid "(if set to YES, confirmation is required before quitting)" msgstr "(si fixé à OUI, il est nécessaire de confirmer avant de quitter)" msgid "(if set to YES, confirmation is required before deleting an event)" msgstr "" "(si fixé à OUI, il est nécessaire de confirmer avant d'effacer un élément)" msgid "(if set to YES, messages about loaded and saved data will be displayed)" msgstr "" "(si fixé à OUI, les messages concernant le chargement et l'enregistrement " "des données seront affichés)" msgid "(if set to YES, progress bar will be displayed when saving data)" msgstr "" "(si fixé à OUI, la barre sera affichée lors de la sauvegarde des données)" msgid "Monday" msgstr "Lundi" msgid "Sunday" msgstr "Dimanche" msgid "(specifies the first day of week in the calendar view)" msgstr "(indique le premier jour de la semaine dans la vue de calendrier)" msgid "(Format of the date to be displayed in non-interactive mode)" msgstr "(Format de la date à afficher en mode non-interactif)" msgid "(Format to be used when entering a date: " msgstr "(Format utilisé pour saisir une date : " msgid "Enter an option number to change its value" msgstr "Saisir le numéro d'une option pour changer sa valeur" msgid "(Press '^P' or '^N' to move up or down, 'Q' to quit)" msgstr "" "(Utiliser '^P' ou '^N' pour se déplacer vers le haut ou le bas, et 'Q' pour " "quitter)" msgid "Enter the date format (see 'man 3 strftime' for possible formats) " msgstr "" "Saisir le format de date (voir 'man 3 strftime' pour les formats possibles)" msgid "Enter the date format: " msgstr "Saisir le format de date : " msgid "Enter the delay, in minutes, between automatic saves (0 to disable) " msgstr "" "Saisir le délai, en minutes, entre deux sauvegardes automatiques (0 pour " "désactiver)" msgid "general options" msgstr "options générales" msgid "Undefined option!" msgstr "Option inconnue !" msgid "undefined" msgstr "inconnue" msgid "Key info" msgstr "Informations de raccourci" msgid "Add key" msgstr "Ajouter une raccourci" msgid "Del key" msgstr "Supprimer" msgid "Prev Key" msgstr "Précédent" msgid "Next Key" msgstr "Suivant" msgid "keys configuration" msgstr "Configuration des raccourcis" msgid "Press the key you want to assign to:" msgstr "Pressez la touche que vous voulez assigner :" msgid "This key is not yet recognized by calcurse, please choose another one." msgstr "" "Cette touche n'est pas encore reconnue par calcurse, veuillez en choisir une " "autre." #, c-format msgid "This key is already in use for %s, please choose another one." msgstr "Cette touche est déjà utilisée pour %s, veuillez en choisir une autre." msgid "Some actions do not have any associated key bindings!" msgstr "Certaines actions n'ont pas de raccourcis clavier associés !" msgid "" "Sorry, colors are not supported by your terminal\n" "(Press [ENTER] to continue)" msgstr "" "Désolé, les couleurs ne sont pas prises en charge par votre terminal\n" "(Appuyer sur [ENTRÉE] pour continuer)" msgid "unknown item type" msgstr "type d'élément inconnu" msgid "Event :" msgstr "Evénement :" msgid "Appointment :" msgstr "Rendez-vous :" msgid "unknwon type" msgstr "type inconnu" #, c-format msgid "Could not stop daemon properly: %s\n" msgstr "Impossible d'arrêter le démon normalement : %s\n" #, c-format msgid "terminated at %s with signal %d\n" msgstr "arrêté à %s avec le signal %d\n" #, c-format msgid "Could not remove daemon lock file: %s\n" msgstr "Impossible de retirer le fichier verrou du démon : %s\n" #, c-format msgid "Could not fork: %s\n" msgstr "Impossible de forker : %s\n" #, c-format msgid "Could not detach from the controlling terminal: %s\n" msgstr "Impossible de se détacher du terminal appelant : %s\n" #, c-format msgid "Could not change working directory: %s\n" msgstr "impossible de changer le repertoire de travail : %s\n" msgid "Cannot daemonize, aborting\n" msgstr "Impossible de lancer le démon, annulation en cours\n" msgid "Could not set lock file\n" msgstr "Impossible de vérouiller le fichier\n" #, c-format msgid "Could not access \"%s\": %s\n" msgstr "Impossible d'accéder à \"%s\" : %s\n" #, c-format msgid "started at %s\n" msgstr "démarré à %s\n" msgid "error loading next appointment\n" msgstr "erreur de chargement du rendez-vous suivant\n" #, c-format msgid "launching notification at %s for: \"%s\"\n" msgstr "lancement de la notification à %s pour : \"%s\"\n" msgid "error while sending notification\n" msgstr "erreur durant l'envoi de la notification\n" #, c-format msgid "sleeping at %s for %d second\n" msgid_plural "sleeping at %s for %d seconds\n" msgstr[0] "endormi à %s pour %d seconde\n" msgstr[1] "endormi à %s pour %d secondes\n" #, c-format msgid "awakened at %s\n" msgstr "réveillé à %s\n" #, c-format msgid "Could not stop calcurse daemon: %s\n" msgstr "Impossible d'arrêter le démon calcurse : %s\n" msgid "date error in the event\n" msgstr "erreur dans la date de l'événement\n" msgid "Internal error: line too long" msgstr "Erreur interne : ligne trop longue" msgid "out of memory" msgstr "dépassement de mémoire" #, c-format msgid "key bindings: %s" msgstr "raccourcis claviers : %s" msgid "Calcurse help" msgstr "Aide de calcurse" msgid " Welcome to Calcurse. This is the main help screen.\n" msgstr "" " Bienvenue dans Calcurse. Vous êtes dans l'écran d'aide principal.\n" #, c-format msgid "" "Moving around: Press '%s' or '%s' to scroll text upward or downward\n" " inside help screens, if necessary.\n" "\n" " Exit help: When finished, press '%s' to exit help and go back to\n" " the main Calcurse screen.\n" "\n" " Help topic: At the bottom of this screen you can see a panel with\n" " different fields, represented by a letter and a short\n" " title. This panel contains all the available actions\n" " you can perform when using Calcurse.\n" " By pressing one of the letters appearing in this\n" " panel, you will be shown a short description of the\n" " corresponding action. At the top right side of the\n" " description screen are indicated the user-defined key\n" " bindings that lead to the action.\n" "\n" " Credits: Press '%s' for credits." msgstr "" "Se déplacer :\n" " Presser '%s' ou '%s' pour faire défiler le texte\n" " vers le haut ou le bas de l'écran d'aide, si nécessaire.\n" "\n" " Quitter l'aide :\n" " Une fois terminé, presser '%s' pour quitter l'aide\n" " et revenir à l'écran principal de Calcurse.\n" "\n" " Rubriques d'aide :\n" " Au bas de cet écran vous pouvez voir\n" " un panneau avec des champs différents,\n" " représenté par une lettre et un titre court.\n" " Ce panneau contient toutes les actions disponibles\n" " que vous pouvez effectuer avec Calcurse.\n" " En appuyant sur une des lettres\n" " qui apparaissent dans ce panneau,\n" " vous verrez s'afficher une brève description\n" " de l'action correspondante.\n" " Sur le côté supérieur droit de l'écran de description\n" " sont indiqués les raccourcis définis par l'utilisateur.\n" "\n" " Crédits : \n" " Presser '%s' pour afficher les crédits." msgid "Save\n" msgstr "Enreg.\n" #, c-format msgid "" "Save calcurse data.\n" "Data are splitted into four different files which contain :\n" "\n" " / ~/.calcurse/conf -> user configuration\n" " | (layout, color, general options)\n" " | ~/.calcurse/apts -> data related to the appointments\n" " | ~/.calcurse/todo -> data related to the todo list\n" " \\ ~/.calcurse/keys -> user-defined key bindings\n" "\n" "In the config menu, you can choose to save the Calcurse data\n" "automatically before quitting." msgstr "" "Enregistrer des données de calcurse.\n" "Les données sont enregistrées dans quatre fichiers distincts qui " "contiennent :\n" "\n" " / ~/.calcurse/conf -> configuration de l'utilisateur\n" " | (agencement, couleur, options générales)\n" " | ~/.calcurse/apts -> données relatives aux rendez-vous\n" " | ~/.calcurse/todo -> données relatives aux tâches\n" " \\ ~/.calcurse/keys -> configuration des raccourcis\n" "\n" "Dans le menu de configuration, vous pouvez choisir d'enregistrer\n" "les données de calcurse automatiquement avant de quitter." msgid "Import\n" msgstr "Importer\n" #, c-format msgid "" "Import data from an icalendar file.\n" "You will be asked to enter the file name from which to load ical\n" "items. At the end of the import process, and if the general option\n" "'system_dialogs' is set to 'yes', a report indicating how many items\n" "were imported is shown.\n" "This report contains the total number of lines read, the number of\n" "appointments, events and todo items which were successfully imported,\n" "together with the number of items for which problems occured and that\n" "were skipped, if any.\n" "\n" "If one or more items could not be imported, one has the possibility to\n" "read the import process report in order to identify which problems\n" "occured.\n" "In this report is shown one item per line, with the line in the input\n" "stream at which this item begins, together with the description of why\n" "the item could not be imported.\n" msgstr "" "Importer les données d'un fichier icalendar.\n" "Il vous sera demandé d'entrer le nom du fichier à partir duquel\n" "seront chargés les éléments ical. À la fin du processus d'importation,\n" "et si l'option générale 'system_dialogs' est définie à 'oui', un rapport\n" "indiquera combien d'éléments ont été importés.\n" "Ce rapport contient le nombre total de lignes lues, le nombre de\n" "rendez-vous, d'événements et de tâches importés avec succès,\n" "ainsi que le nombre d'éléments pour lequels un problème a été\n" "rencontré et qui ont été ignorés, s'il y a lieu.\n" "\n" "Si un ou plusieurs éléments n'ont pas pu être importés, il est\n" "possible de lire le rapport du processus d'importation pour identifier\n" "les problèmes qui ce sont produit.\n" "Dans ce rapport est présenté un élément par ligne, avec la ligne dans le " "flux d'entrée avec laquelle cet élément commence, ainsi que le motif pour " "lequel l'élément n'a pas pu être importé.\n" msgid "Export\n" msgstr "Exporter\n" #, c-format msgid "" "Export calcurse data (appointments, events and todos).\n" "This leads to the export submenu, from which you can choose between\n" "two different export formats: 'ical' and 'pcal'. Choosing one of\n" "those formats lets you export calcurse data to icalendar or pcal\n" "format.\n" "\n" "You first need to specify the file to which the data will be exported.\n" "By default, this file is:\n" "\n" " ~/calcurse.ics\n" "\n" "for an ical export, and:\n" "\n" " ~/calcurse.txt\n" "\n" "for a pcal export.\n" "\n" "Calcurse data are exported in the following order:\n" " events, appointments, todos.\n" msgstr "" "Exporter les données de calcurse (rendez-vous, événements et tâches).\n" "Ceci ouvre le sous-menu d'exportation, dans lequel vous pouvez\n" "choisir entre deux formats d'exportation différents : \"ical et \"pcal\".\n" "En choisissant l'un de ces formats vous pouvez exporter les données\n" "de calcurse vers les formats icalendar ou pcal.\n" "\n" "Vous devez d'abord spécifier le fichier vers lequel les données\n" "seront exportées.\n" "Par défaut, c'est le fichier :\n" "\n" " ~/calcurse.ics\n" "\n" "pour un export ical, et :\n" "\n" " ~/calcurse.txt\n" "\n" "pour un export pcal.\n" "\n" "Les données de calcurse sont exportées en suivant l'ordre :\n" " événements, rendez-vous, tâches.\n" msgid "Displacement keys\n" msgstr "Touches de déplacement\n" #, c-format msgid "" "Move around inside calcurse screens.\n" "The following scheme summarizes how to get around:\n" "\n" " move up\n" " move to previous week\n" "\n" " %s\n" " move left ^ \n" " move to previous day |\n" " %s\n" " <-- + -->\n" " %s\n" " | move right\n" " v move to next day\n" " %s\n" "\n" " move to next week\n" " move down\n" "\n" "Moreover, while inside the calendar panel, the '%s' key moves\n" "to the first day of the week, and the '%s' key selects the last day of\n" "the week.\n" msgstr "" "Se déplacer dans les écrans de calcurse.\n" "Le schéma suivant résume la façon de se déplacer :\n" "\n" " vers le haut\n" " aller à la semaine précédente\n" "\n" " %s\n" " ^\n" " |\n" " vers la gauche %s <-- + --> %s vers la droite\n" " aller au jour | aller au jour\n" " précédent v suivant\n" " %s\n" "\n" " aller à la semaine suivante\n" " vers le bas\n" "\n" "De plus, à l'intérieur du calendrier, la touche '%s'\n" "déplace vers le premier jour de la semaine, et la touche\n" "'%s' sélectionne le dernier jour de la semaine.\n" msgid "View\n" msgstr "Afficher\n" #, c-format msgid "" "View the item you select in either the Todo or Appointment panel.\n" "\n" "This is usefull when an event description is longer than the available\n" "space to display it. If that is the case, the description will be\n" "shortened and its end replaced by '...'. To be able to read the entire\n" "description, just press '%s' and a popup window will appear, containing\n" "the whole event.\n" "\n" "Press any key to close the popup window and go back to the main\n" "Calcurse screen." msgstr "" "Voir l'élément que vous sélectionnez soit dans le panneau de la liste des " "tâches soit dans le panneau de la liste des rendez-vous.\n" "\n" "Ceci est utile quand la description d'un événement est plus longue\n" "que l'espace disponible pour l'afficher. Si tel est le cas, la description\n" "sera raccourcie et sa fin remplacée par '...'. Pour pouvoir lire toute la\n" "description, appuyez simplement sur '%s' et une fenêtre\n" "indépendante apparaîtra, contenant tout l'événement.\n" "\n" "Appuyez sur n'importe quelle touche pour fermer la fenêtre et\n" "revenir à l'écran principal de Calcurse." msgid "Pipe\n" msgstr "Tube\n" #, c-format msgid "" "Pipe the selected item to an external program.\n" "\n" "Press the '%s' key to pipe the currently selected appointment or\n" "todo entry to an external program.\n" "\n" "You will be driven back to calcurse as soon as the program exits.\n" msgstr "" "Passer l'élément sélectionné à un programme externe.\n" "\n" "Presser la touche '%s' pour passer le rendez-vous ou la tâche sélectionné à " "un programme externe.\n" "\n" "Vous serez redirigé vers calcurse lorsque l'exécution du programme sera " "terminée.\n" msgid "Tab\n" msgstr "Tab\n" #, c-format msgid "" "Switch between panels.\n" "The panel currently in use has its border colorized.\n" "\n" "Some actions are possible only if the right panel is selected.\n" "For example, if you want to add a task in the TODO list, you need first\n" "to press the '%s' key to get the TODO panel selected. Then you can\n" "press '%s' to add your item.\n" "\n" "Notice that at the bottom of the screen the list of possible actions\n" "change while pressing '%s', so you always know what action can be\n" "performed on the selected panel." msgstr "" "Basculer entre les panneaux.\n" "Le panneau en cours d'utilisation est bordé de couleur.\n" "\n" "Certaines actions sont possibles seulement si le bon panneau est\n" "sélectionné. Par exemple, si vous voulez ajouter une tâche à la liste\n" "des TÂCHES, vous devez au préalable presser la touche '%s' pour\n" "sélectionner le panneau des TÂCHES. Puis vous pouvez presser la\n" "touche '%s' pour ajouter l'élément.\n" "\n" "Notez qu'au bas de l'écran la liste des actions possibles change\n" "lorsque vous appuyez sur '%s', ainsi vous savez à tout moment\n" "quelles actions sont réalisables dans le panneau sélectionné." msgid "Goto\n" msgstr "Aller à\n" #, c-format msgid "" "Jump to a specific day in the calendar.\n" "\n" "Using this command, you do not need to travel to that day using\n" "the displacement keys inside the calendar panel.\n" "If you hit [ENTER] without specifying any date, Calcurse checks the\n" "system current date and you will be taken to that date.\n" "\n" "Notice that pressing '%s', whatever panel is\n" "selected, will select current day in the calendar." msgstr "" "Aller à un jour spécifique du calendrier.\n" "\n" "Grâce à cette commande, vous n'avez pas besoin de parcourir\n" "tout le calendrier en utilisant les touches de déplacement.\n" "Si vous appuyez sur [ENTRÉE], sans préciser une la date, Calcurse\n" "vérifie la date système actuelle et vous positionne à cette date.\n" "\n" "Notez qu'en appuyant sur '%s', quelle que soit le panneau\n" "sélectionné, la date du jour sera choisie dans le calendrier." msgid "Delete\n" msgstr "Supprimer\n" #, c-format msgid "" "Delete an element in the ToDo or Appointment list.\n" "\n" "Depending on which panel is selected when you press the delete key,\n" "the hilighted item of either the ToDo or Appointment list will be \n" "removed from this list.\n" "\n" "If the item to be deleted is recurrent, you will be asked if you\n" "wish to suppress all of the item occurences or just the one you\n" "selected.\n" "\n" "If the general option 'confirm_delete' is set to 'YES', then you will\n" "be asked for confirmation before deleting the selected event.\n" "Do not forget to save the calendar data to retrieve the modifications\n" "next time you launch Calcurse." msgstr "" "Supprimer un élément de la liste des tâches ou des rendez-vous.\n" "\n" "Selon le panneau sélectionné lorsque vous pressez la touche\n" "supprimer, l'élément en surbrillance sera supprimé de la liste\n" "correspondante.\n" "\n" "Si l'élément à supprimer est répétitif, il vous sera demandé si vous\n" "désirez supprimer toutes ses occurences ou seulement celle-ci.\n" "\n" "Si l'option générale 'confirm_delete' est activée, alors il vous sera\n" "demandé de confirmer la suppression de l'élément sélectionné.\n" "N'oubliez pas d'enregistrer les données du calendrier pour récupérer\n" "votre configuration au prochain lancement de Calcurse." msgid "Add\n" msgstr "Ajouter\n" #, c-format msgid "" "Add an item in either the ToDo or Appointment list, depending on which\n" "panel is selected when you press '%s'.\n" "\n" "To enter a new item in the TODO list, you will need first to enter the\n" "description of this new item. Then you will be asked to specify the todo\n" "priority. This priority is represented by a number going from 9 for the\n" "lowest priority, to 1 for the highest one. It is still possible to\n" "change the item priority afterwards, by using the '%s' and '%s' keys\n" "inside the todo panel.\n" "\n" "If the APPOINTMENT panel is selected while pressing '%s', you will be\n" "able to enter either a new appointment or a new all-day long event.\n" "To enter a new event, press [ENTER] instead of the item start time, and\n" "just fill in the event description.\n" "To enter a new appointment to be added in the APPOINTMENT list, you\n" "will need to enter successively the time at which the appointment\n" "begins, the appointment length (either by specifying the end time in\n" "[hh:mm] or the duration in [+hh:mm], [+xxdxxhxxm] or [+mm] format), \n" "and the description of the event.\n" "\n" "The day at which occurs the event or appointment is the day currently\n" "selected in the calendar, so you need to move to the desired day before\n" "pressing '%s'.\n" "\n" "Notes:\n" " o if an appointment lasts for such a long time that it continues\n" " on the next days, this event will be indicated on all the\n" " corresponding days, and the beginning or ending hour will be\n" " replaced by '..' if the event does not begin or end on the day.\n" " o if you only press [ENTER] at the APPOINTMENT or TODO event\n" " description prompt, without any description, no item will be\n" " added.\n" " o do not forget to save the calendar data to retrieve the new\n" " event next time you launch Calcurse." msgstr "" "Ajouter un élément à la liste des rendez-vous ou des tâches, en\n" "fonction du panneau sélectionné au moment ou vous pressez '%s'.\n" "\n" "Pour ajouter un nouvel élément à la liste des TÂCHES, vous devez\n" "d'abord saisir la description de ce nouvel élément. Il vous sera alors\n" "demandé d'indiquer sa priorité. Cette priorité est representée par\n" "un nombre compris entre 9 pour la plus basse, et 1 pour\n" "la plus haute. Il est toujours possible de modifier la priorité\n" "de l'élément par la suite, en utilisant les touches '%s' et '%s'\n" "dans le panneau des tâches.\n" "\n" "Si le panneau des RENDEZ-VOUS est sélectionné lorsque '%s' est\n" "pressée, vous pourrez saisir soit un nouveau rendez-vous soit\n" "un événement couvrant en jour entier. Pour ajouter un nouvel\n" "événement, pressez [ENTRÉE] au lieu de la date de début de\n" "l'élément, et remplissez uniquement la description de l'événement.\n" "Pour ajouter un nouveau rendez-vous à la liste des RENDEZ-VOUS,\n" "vous devrez saisir successivement le moment auquel il débute,\n" "sa durée (soit en indiquant l'heure de fin au format [hh:mm]\n" "soit sa durée avec [+hh:mm], [+xxdxxhxxm] ou [+mm]),\n" "et sa description.\n" "\n" "Le jour où se déroulera l'événement ou le rendez-vous correspond au jour " "actuellement sélectionné dans le calendrier, c'est pourquoi vous devez vous " "déplacer au jour désiré avant de presser '%s'.\n" "\n" "Remarques :\n" " o Si un rendez-vous s'étend sur plusieurs jours, cet événement\n" " sera indiqué sur tous les jours correspondants, et l'heure de\n" " début ou de fin seront remplacées par '...' si l'événement ne\n" " commence ni ne se finit ce jour là ;\n" " o Si vous appuyez simplement sur [ENTRÉE] lorsque la description\n" " du RENDEZ-VOUS ou de la TÂCHE est demandée,\n" " aucun élément ne sera ajouté ;\n" " o N'oublier de sauvegarder les données du calendrier pour\n" " récupérer le nouvel événement au prochain lancement\n" " de Calcurse." msgid "Copy and Paste\n" msgstr "" #, c-format msgid "" "Copy and paste the currently selected item. This is useful to quickly\n" "copy an item from one date to another. To do so, one must first\n" "highlight the item that needs to be copied, then press '%s' to copy.\n" "Once the new date is chosen in the calendar, the appointment panel must\n" "be selected and the '%s' key must be pressed to paste the item. The item\n" "will appear in the appointment panel, assigned to the newly selected\n" "date.\n" "\n" msgstr "" msgid "Edit Item\n" msgstr "Modif. élém.\n" #, c-format msgid "" "Edit the item which is currently selected.\n" "Depending on the item type (appointment, event, or todo), and if it is\n" "repeated or not, you will be asked to choose one of the item properties\n" "to modify. An item property is one of the following: the start time, the\n" "end time, the description, or the item repetition.\n" "Once you have chosen the property you want to modify, you will be shown\n" "its actual value, and you will be able to change it as you like.\n" "\n" "Notes:\n" " o if you choose to edit the item repetition properties, you will\n" " be asked to re-enter all of the repetition characteristics\n" " (repetition type, frequence, and ending date). Moreover, the\n" " previous data concerning the deleted occurences will be lost.\n" " o do not forget to save the calendar data to retrieve the\n" " modified properties next time you launch Calcurse." msgstr "" "Modifier l'élément sélectionné.\n" "Suivant le type de l'élément(rendez-vous, événement ou tâche), et\n" "suivant si celui-ci est répété ou non, il vous sera demandé de choisir\n" "une des propriétés de cet élément pour la modifier. La propriété\n" "de l'élément peut être : l'heure de début, l'heure de fin, la\n" "description, ou la répétition de l'élément. Une fois que vous aurez\n" "choisi la propriété à modifier de l'élément, sa valeur actuelle sera\n" "affichée, et vous pourrez modifier celle-ci comme vous le voulez.\n" "\n" "Remarques :\n" " o si vous choisissez d'éditer les propriétés de répétition de\n" " l'élément, il vous sera demandé d'entrer à nouveau toutes les\n" " caractéristiques de celle-ci (type, fréquence, date de fin) ;\n" " De plus, les données concernant les occurrences supprimées\n" " seront perdues ;\n" " o n'oubliez pas de sauvegarder les données du calendrier pour\n" " retrouver vos modifications de propriété au prochain lancement\n" " de calcurse." msgid "EditNote\n" msgstr "ModifNote\n" #, c-format msgid "" "Attach a note to any type of item, or edit an already existing note.\n" "This feature is useful if you do not have enough space to store all\n" "of your item description, or if you would like to add sub-tasks to an\n" "already existing todo item for example.\n" "Before pressing the '%s' key, you first need to highlight the item you\n" "want the note to be attached to. Then you will be driven to an\n" "external editor to edit your note. This editor is chosen the following\n" "way:\n" " o if the 'VISUAL' environment variable is set, then this will be\n" " the default editor to be called.\n" " o if 'VISUAL' is not set, then the 'EDITOR' environment variable\n" " will be used as the default editor.\n" " o if none of the above environment variables is set, then\n" " '/usr/bin/vi' will be used.\n" "\n" "Once the item note is edited and saved, quit your favorite editor.\n" "You will then go back to Calcurse, and the '>' sign will appear in front\n" "of the highlighted item, meaning there is a note attached to it." msgstr "" "Joindre une note à n'importe quel type d'élément, ou modifier une note " "existante.\n" "Cette fonctionnalité est utile si vous n'avez pas suffisamment de\n" "place pour stocker la description de l'élément, ou par exemple si\n" "vous voulez associer des sous-tâches à une tâche déjà existante.\n" "Avant d'appuyer sur la touche '%s', vous devez au préalable\n" "sélectionner l'élément auquel vous voulez associer une note. Ensuite,\n" "un éditeur externe s'ouvrira, dans lequel vous pourrez écrire votre\n" "note. L'éditeur est choisi de la manière suivante :\n" " o si la variable d'environnement 'VISUAL' est renseignée,\n" " alors l'éditeur par défaut sera appelé ;\n" " o si 'VISUAL' n'est pas renseignée, alors l'éditeur par défaut\n" " sera celui indiqué par la variable d'environnement 'EDITOR' ;\n" " o si aucune de ces variables n'est renseignée, alors\n" " '/usr/bin/vi' sera utilisé.\n" "\n" "Une fois la note de l'élément écrite et enregistrée, quittez votre\n" "éditeur favori. Vous serez ramené dans Calcurse, et le signe '>'\n" "apparaîtra alors devant l'élément en surbrillance, signifant\n" "qu'une note y est jointe." msgid "ViewNote\n" msgstr "VoirNote\n" #, c-format msgid "" "View a note which was previously attached to an item (an item which\n" "owns a note has a '>' sign in front of it).\n" "This command only permits to view the note, not to edit it (to do so,\n" "use the 'EditNote' command, by pressing the '%s' key).\n" "Once you highlighted an item with a note attached to it, and the '%s' key\n" "was pressed, you will be driven to an external pager to view that note.\n" "The default pager is chosen the following way:\n" " o if the 'PAGER' environment variable is set, then this will be\n" " the default viewer to be called.\n" " o if the above environment variable is not set, then\n" " '/usr/bin/less' will be used.\n" "As for editing a note, quit the pager and you will be driven back to\n" "Calcurse." msgstr "" "Consulter une note précédement attachée à un élément (un élément ayant\n" "une note est précédé du signe '>'). Cette commande permet seulement\n" "de consulter la note, pas de la modifier (pour cela, utilisez la commande\n" "'EditNote', en pressant la touche '%s'). Lorsque vous avez sélectionné\n" "un élément ayant une note, et que vous pressez la touche '%s',\n" "vous êtes conduit vers un pager externe pour voir la note.\n" "Le pager par défaut est choisi de la manière suivante :\n" " o si la variable d'environnement 'PAGER' et définie,\n" " alors ce sera la visionneuse par défaut qui sera appelée ;\n" " o si cette même variable d'environnement n'est pas définie,\n" " alors '/usr/bin/less' sera utilisé.\n" "Comme pour la modification d'une note, quitter le pager\n" "et vous serez ramenés à calcurse." msgid "Priority\n" msgstr "Priorité\n" #, c-format msgid "" "Change the priority of the currently selected item in the ToDo list.\n" "Priorities are represented by the number appearing in front of the\n" "todo description. This number goes from 9 for the lowest priority to\n" "1 for the highest priority.\n" "Todo having higher priorities are placed first (at the top) inside the\n" "todo panel.\n" "\n" "If you want to raise the priority of a todo item, you need to press '%s'.\n" "In doing so, the number in front of this item will decrease, meaning its\n" "priority increases. The item position inside the todo panel may change,\n" "depending on the priority of the items above it.\n" "\n" "At the opposite, to lower a todo priority, press '%s'. The todo position\n" "may also change depending on the priority of the items below." msgstr "" "Changer la priorité de l'élément sélectionné dans la liste de tâches.\n" "Les priorités sont représentées par un nombre placé devant la\n" "description de la tâche. Ce nombre est compris entre 9 pour la priorité\n" "la plus basse et 1 pour la plus haute. Les tâches ayant la plus forte\n" "priorité sont placées en premier (en haut) dans le panneau des tâches.\n" "\n" "Si vous voulez augmenter la priorité d'une tâche, vous devez appuyer\n" "sur '%s'. Ceci diminuera le nombre placé devant la tâche, indiquant\n" "ainsi une augmentation de la priorité. La position de l'élément dans\n" "le panneau des tâches pourra changer, en fonction de la priorité\n" "des éléments qui sont placés au dessus de lui.\n" "\n" "A l'inverse, pour diminuer une priorité, appuyez sur '%s'. La position\n" "de l'élément pourra également changer en fonction de la priorité des\n" "éléments placés en dessous de lui." msgid "Repeat\n" msgstr "Répeter\n" #, c-format msgid "" "Repeat an event or an appointment.\n" "You must first select the item to be repeated by moving inside the\n" "appointment panel. Then pressing '%s' will lead you to a set of three\n" "questions, with which you will be able to specify the repetition\n" "characteristics:\n" "\n" " o type: you can choose between a daily, weekly, monthly or\n" " yearly repetition by pressing 'D', 'W', 'M' or 'Y'\n" " respectively.\n" "\n" " o frequence: this indicates how often the item shall be repeated.\n" " For example, if you want to remember an anniversary,\n" " choose a 'yearly' repetition with a frequence of '1',\n" " which means it must be repeated every year. Another\n" " example: if you go to the restaurant every two days,\n" " choose a 'daily' repetition with a frequence of '2'.\n" "\n" " o ending date: this specifies when to stop repeating the selected\n" " event or appointment. To indicate an endless \n" " repetition, enter '0' and the item will be repeated\n" " forever.\n" "\n" "Notes:\n" " o repeated items are marked with an '*' inside the appointment\n" " panel, to be easily recognizable from non-repeated ones.\n" " o the 'Repeat' and 'Delete' command can be mixed to create\n" " complicated configurations, as it is possible to delete only\n" " one occurence of a repeated item." msgstr "" "Répéter un événement ou un rendez-vous.\n" "Vous devez commencer par sélectionner un élément à répéter en vous déplacant " "dans le panneau de rendez-vous. Pressez alors '%s' ce qui affichera une " "série de trois questions, pour lequelles vos réponses détermineront les " "caractéristiques de la répétition :\n" "\n" " o type : vous pouvez choisir entre une répétition\n" " quotidienne, hebdomadaire, mensuelle ou annuelle\n" " en pressant respectivement 'D', 'W', 'M' ou 'Y' ;\n" "\n" " o fréquence : indique combien de fois l'élément doit être répété.\n" " Par exemple, si vous voulez vous souvenir d'un " "anniversaire,\n" " choisissez une répétition 'annuelle' avec une fréquence de " "'1',\n" " ce qui signifie qu'il sera répété chaque année.\n" " Autre exemple : si vous allez au restaurant tous les deux " "jours,\n" " choisissez une répétition 'quotidienne' avec une fréquence " "de '2' ;\n" "\n" " o date de fin : indique quand interrompre la répétition de\n" " l'événement ou du rendez-vous sélectionné.\n" " Pour indiquer une répétition non bornée,\n" " entrer '0' et l'élément sera répété continuellement.\n" "\n" "Remarques :\n" " o les éléments répétés sont marqués d'un '*' dans le panneau\n" " des rendez-vous, pour les distinguer aisément de ceux\n" " qui ne le sont pas ;\n" " o les commandes 'Répéter' et 'Supprimer' peuvent être mélangées\n" " pour créer des configurations complexes, car il est " "possible \n" " de supprimer une seule occurrence d'un élément répété." msgid "Flag Item\n" msgstr "MarquerElem.\n" #, c-format msgid "" "Toggle an appointment's 'important' flag or a todo's 'completed' flag.\n" "If a todo is flagged as completed, its priority number will be replaced\n" "by an 'X' sign. Completed tasks will no longer appear in exported data\n" "or when using the '-t' command line flag (unless specifying '0' as the\n" "priority number, in which case only completed tasks will be shown).\n" "\n" "If an appointment is flagged as important, an exclamation mark appears\n" "in front of it, and you will be warned if time gets closed to the\n" "appointment start time.\n" "To customize the way one gets notified, the configuration submenu lets\n" "you choose the command launched to warn user of an upcoming appointment,\n" "and how long before it he gets notified." msgstr "" "Marquer un rendez-vous ou une tâche avec un drapeau 'important' ou " "'terminé'.\n" "Si une tâche est marquée comme terminée, son numéro de priorité\n" "sera remplacé par un signe 'X'. Les tâches terminées n'apparaîtront\n" "plus dans les données exportées ou lorsque vous utilisez l'option '-t'\n" "en ligne de commande (sauf à indiquer '0' comme numéro de\n" "priorité, auquel cas seules les tâches terminées seront affichées).\n" "\n" "Si un rendez-vous est signalé comme important, un point\n" "d'exclamation apparaît en face de lui, et vous serez averti\n" "lorsque le rendez-vous débute.\n" "\n" "Pour personnaliser la façon de recevoir la notification, le sous-menu\n" "de configuration vous permet de choisir la commande lancée pour\n" "avertir l'utilisateur d'un rendez-vous à venir, et combien de temps\n" "avant il lui est notifié." msgid "Config\n" msgstr "Config.\n" #, c-format msgid "" "Open the configuration submenu.\n" "From this submenu, you can select between color, layout, notification\n" "and general options, and you can also configure your keybindings.\n" "\n" "The color submenu lets you choose the color theme.\n" "The layout submenu lets you choose the Calcurse screen layout, in other\n" "words where to place the three different panels on the screen.\n" "The general options submenu brings a screen with the different options\n" "which modifies the way Calcurse interacts with the user.\n" "The notify submenu allows you to change the notify-bar settings.\n" "The keys submenu lets you define your own key bindings.\n" "\n" "Do not forget to save the calendar data to retrieve your configuration\n" "next time you launch Calcurse." msgstr "" "Ouvrir le sous-menu de configuration.\n" "Depuis ce sous-menu, vous pouvez choisir entre les options de\n" "couleur, mise en page, notification et les options générales ;\n" "et vous pouvez aussi configurer les raccourcis clavier.\n" "\n" "Le sous-menu couleur permet de choisir le thème de couleur.\n" "Le sous-menu mise en page permet de choisir la disposition des\n" "dives panneaux de Calcurse à l'écran.\n" "Le sous-menu des options générales fournie les diverses options\n" "qui modifient les interactions de Calcurse avec l'utilisateur.\n" "Le sous-menu notifier permet de modifier les paramètres\n" "de la barre de notification.\n" "Le sous-menu raccourcis permet de définir vos propres\n" "raccourcis clavier.\n" "\n" "N'oubliez pas d'enregistrer les données du calendrier pour récupérer\n" "votre configuration au prochain lancement de Calcurse." msgid "Generic keybindings\n" msgstr "Raccourcis clavier génériques\n" #, c-format msgid "" "Some of the keybindings apply whatever panel is selected. They are\n" "called generic keybinding.\n" "Here is the list of all the generic key bindings, together with their\n" "corresponding action:\n" "\n" " '%s' : Redraw function -> redraws calcurse panels, this is useful if\n" " you resize your terminal screen or when\n" " garbage appears inside the display\n" " '%s' : Add Appointment -> add an appointment or an event\n" " '%s' : Add ToDo -> add a todo\n" " '%s' : -1 Day -> move to previous day\n" " '%s' : +1 Day -> move to next day\n" " '%s' : -1 Week -> move to previous week\n" " '%s' : +1 Week -> move to next week\n" " '%s' : -1 Month -> move to previous month\n" " '%s' : +1 Month -> move to next month\n" " '%s' : -1 Year -> move to previous year\n" " '%s' : +1 Year -> move to next year\n" " '%s' : Goto today -> move to current day\n" "\n" "The '%s' and '%s' keys are used to scroll text upward or downward\n" "when inside specific screens such the help screens for example.\n" "They are also used when the calendar screen is selected to switch\n" "between the available views (monthly and weekly calendar views)." msgstr "" "Certains raccourcis clavier sont valides quel que soit le panneau\n" "sélectionné. Ces raccourcis sont dit génériques.\n" "Ci-dessous est reproduite la liste des raccourcis clavier génériques, ainsi\n" "que les actions associées :\n" "\n" " '%s' : Rafraîchir -> redessiner l'écran de calcurse. Utile en\n" " cas de redimensionnement du terminal, ou\n" " lorsque l'affichage est corrompu.\n" " '%s' : Ajouter rendez-vous -> ajouter un rendez-vous ou un événement.\n" " '%s' : Ajouter tâche -> ajouter une nouvelle tâche.\n" " '%s' : Jour précédent -> se déplacer vers le jour précédent.\n" " '%s' : Jour suivant -> se déplacer vers le jour suivant.\n" " '%s' : Semaine précédente -> se déplacer vers la semaine précédente.\n" " '%s' : Semaine suivante -> se déplacer vers la semaine suivante.\n" " '%s' : Mois précédent -> se déplacer vers le mois précédent.\n" " '%s' : Mois suivant -> se déplacer vers le mois suivant.\n" " '%s' : Année précédente -> se déplacer vers l'année précédente.\n" " '%s' : Année suivante -> se déplacer vers l'année suivante.\n" " '%s' : Aujourd'hui -> se déplacer vers le jour courant.\n" "\n" "Les touches '%s' et '%s' sont utilisées pour faire défiler le texte\n" "dans certains écrans, par exemple l'écran d'aide.\n" "Elles sont également utilisées lorsque l'écran du calendrier est\n" "sélectionné, pour changer entre vue mensuelle et vue hebdomadaire du\n" "calendrier." msgid "OtherCmd\n" msgstr "AutreComm.\n" #, c-format msgid "" "Switch between status bar help pages.\n" "Because the terminal screen is too narrow to display all of the\n" "available commands, you need to press '%s' to see the next set of\n" "commands together with their keybindings.\n" "Once the last status bar page is reached, pressing '%s' another time\n" "leads you back to the first page." msgstr "" "Faire défiler les pages d'aide de la barre d'état.\n" "Puisque le terminal est trop étroit pour afficher toutes les commandes " "disponibles, vous devez appuyer sur '%s' pour voir la prochaine série de " "commandes et leurs raccourcis clavier.\n" "Une fois la dernière page de la barre d'état affichée, appuyer sur '%s' " "encore une fois pour être ramener à la première page." msgid "Calcurse - text-based organizer" msgstr "Calcurse - organiseur personnel en mode texte" #, c-format msgid "" "\n" "Copyright (c) 2004-2013 calcurse Development Team\n" "All rights reserved.\n" "\n" "Redistribution and use in source and binary forms, with or without\n" "modification, are permitted provided that the following conditions\n" "are met:\n" "\n" "\t- Redistributions of source code must retain the above\n" "\t copyright notice, this list of conditions and the\n" "\t following disclaimer.\n" "\n" "\t- Redistributions in binary form must reproduce the above\n" "\t copyright notice, this list of conditions and the\n" "\t following disclaimer in the documentation and/or other\n" "\t materials provided with the distribution.\n" "\n" "\n" "Send your feedback or comments to : misc@calcurse.org\n" "Calcurse home page : http://calcurse.org" msgstr "" "\n" "Copyright (c) 2004-2012 Équipe de développement de calcurse\n" "Tous droits réservés.\n" "\n" "La redistribution et l'utilisation sous forme de source et d'exécutable, " "avec ou sans modification, sont autorisées si les conditions suivantes sont " "remplies :\n" "\n" "\t- Les redistributions du code source doivent conserver\n" "\t la notice de copyright ci-dessus, cette liste de conditions\n" "\t et la renonciation suivante.\n" "\n" "\t- Les redistributions sous forme binaire doivent reproduire\n" "\t la notice de copyright ci-dessus, cette liste de conditions\n" "\t et la renonciation suivante dans la documentation et / ou\n" "\t d'autres matériaux fournis avec la distribution.\n" "\n" "\n" "Envoyez vos réactions ou commentaires à : misc@calcurse.org\n" "Page d'accueil de Calcurse : http://calcurse.org" msgid "unknown ical type" msgstr "type ical inconnu" msgid "recurrence frequence not found." msgstr "la fréquence de répétition introuvable." msgid "recurrence frequence not recognized." msgstr "la fréquence de répétition non reconnue." msgid "recurrence rule malformed." msgstr "règle de répétition mal formée." msgid "recurrence exception dates malformed." msgstr "dates d'exception de répétition mal formées." msgid "could not get entire item description." msgstr "impossible de trouver la description entière de l'élément." msgid "description malformed." msgstr "description mal formée." msgid "appointment has no start time." msgstr "rendez-vous sans date de début." msgid "could not compute duration (no end time)." msgstr "impossible de calculer la durée (pas de date de fin)." msgid "item has a negative duration." msgstr "l'élément a une durée négative." msgid "event date is not defined." 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é." msgid "could not retrieve item summary." msgstr "impossible de récupérer le résumé de l'événement." msgid "could not retrieve event start time." msgstr "impossible de récupérer l'heure de début de l'événement." msgid "could not retrieve event end time." msgstr "impossible de récupérer l'heure de fin de l'événement." msgid "item duration malformed." msgstr "durée de l'élément mal formée." msgid "The ical file seems to be malformed. The end of item was not found." msgstr "" "Le fichier ical semble mal formé. La fin de l'élément n'a pas été trouvée." msgid "item priority is not acceptable (must be between 1 and 9)." msgstr "" "La priorité de l'élément est illégale (doit être compris entre 1 et 9)." msgid "Warning: ical header malformed or wrong version number. Aborting..." msgstr "" "Attention : l'en-tête ical est mal formé ou le numéro de version est " "mauvais. Abandon…" msgid "Enter the new time ([hh:mm] or [hhmm]) : " msgstr "" msgid "Press [Enter] to continue" msgstr "Appuyer sur [ENTRÉE] pour continuer" msgid "You entered an invalid time, should be [hh:mm] or [hhmm]" msgstr "" msgid "" "Enter new end time ([hh:mm], [hhmm]) or duration ([+hh:mm], [+xxxdxxhxxm] or " "[+mm]) : " msgstr "" msgid "Invalid time: start time must be before end time!" msgstr "" "Heure invalide : l'heure de début doit être antérieure à l'heure de fin !" msgid "Enter the new item description:" msgstr "Saisir la description du nouvel élément :" msgid "Enter the new repetition type:" msgstr "Saisir le nouveau type de répétition :" msgid "(d)aily" msgstr "quotidien (d)" msgid "(w)eekly" msgstr "hebdomadaire (w)" msgid "(m)onthly" msgstr "(m)ensuel" msgid "(y)early" msgstr "annuel (y)" #, c-format msgid "(currently using %s)" msgstr "(actuellement : %s)" msgid "[dwmy]" msgstr "[dwmy]" msgid "The frequence you entered is not valid." msgstr "La fréquence que vous avez saisie n'est pas valide." msgid "The entered date is not valid." msgstr "La date saisie n'est pas valide." #, c-format msgid "Possible formats are [%s] or '0' for an endless repetition." msgstr "Les formats possibles sont [%s] ou '0' pour une répétition non bornée." msgid "Enter the new repetition frequence:" msgstr "Saisir la nouvelle fréquence de répétition :" #, c-format msgid "Enter the new ending date: [%s] or '0'" msgstr "Saisir la nouvelle date de fin : [%s] ou '0'" msgid "Description" msgstr "Description" msgid "Repetition" msgstr "Répétition" msgid "Edit: " msgstr "Modifier :" msgid "Start time" msgstr "Heure de début" msgid "End time" msgstr "Heure de fin" msgid "Pipe item to external command:" msgstr "Passer un élément à une commande externe :" msgid "" "Enter start time ([hh:mm] or [hhmm]), leave blank for an all-day event : " msgstr "" msgid "" "Enter end time ([hh:mm] or [hhmm]) or duration ([+hh:mm], [+xxxdxxhxxm] or " "[+mm]) : " msgstr "" msgid "Enter description :" msgstr "Saisir la description :" msgid "You entered an invalid start time, should be [hh:mm] or [hhmm]" msgstr "" msgid "" "Invalid end time/duration, should be [hh:mm], [hhmm], [+hh:mm], " "[+xxxdxxhxxm] or [+mm]" msgstr "" msgid "Do you really want to delete this item ?" msgstr "Voulez-vous vraiment effacer cet élément ?" msgid "This item is recurrent. Delete (a)ll occurences or just this (o)ne ?" msgstr "" "Cet élément est répétitif. Effacer (t)outes les occurences ou seulement " "(c)elle-ci ?" msgid "[ao]" msgstr "[tc]" msgid "This item has a note attached to it. Delete (i)tem or just its (n)ote ?" msgstr "" "Une note est associée à cet élément. Effacer l'(é)lément ou seulement la " "(n)ote ?" msgid "[in]" msgstr "[en]" msgid "no such type" msgstr "type inconnu" msgid "Enter the new ToDo item : " msgstr "Saisir la nouvelle tâche : " msgid "Enter the ToDo priority [1 (highest) - 9 (lowest)] :" msgstr "" "Saisir la priorité de la tâche [1 (plus important) - 9 (moins important)] :" msgid "Do you really want to delete this task ?" 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 jointe à cette tâche. Effacer la (t)âche ou seulement la " "(n)ote ?" msgid "[tn]" msgstr "[tn]" msgid "Enter the new ToDo description :" msgstr "Saisir la nouvelle description de la tâche : " msgid "Enter the repetition type:" msgstr "Saisir le type de répétition :" msgid "Enter the repetition frequence:" msgstr "Saisir la fréquence de répétition :" #, c-format msgid "Enter the ending date: [%s] or '0' for an endless repetition" msgstr "Saisir 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 répéter indéfiniment" msgid "This item is already a repeated one." msgstr "Cet élément est déjà répétitif." msgid "Press [ENTER] to continue." msgstr "Appuyer sur [ENTRÉE] pour continuer." msgid "Sorry, the date you entered is older than the item start time." msgstr "" "Désolé, la date saisie est antérieure à la date de début de l'élément !" msgid "wrong item type" msgstr "type d'élément incorrect" msgid "Saving..." msgstr "Enregistrement…" msgid "Loading..." msgstr "Chargement…" msgid "Exporting..." msgstr "Exportation…" 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 "Choisir le fichier vers lequel exporter les données :" msgid "The file cannot be accessed, please enter another file name." msgstr "" "Le fichier ne peut être ouvert, veuillez saisir un autre nom de fichier." #, c-format msgid "Failed to open \"%s\", - %s\n" msgstr "Impossible d'ouvrir \"%s\", - %s\n" msgid "Failed to build message\n" msgstr "Impossible de construire le message\n" #, c-format msgid "Failed to print message \"%s\"\n" msgstr "Echec lors de l'affichage du message \"%s\"\n" #, c-format msgid "Failed to close \"%s\" - %s\n" msgstr "Impossible de fermer \"%s\" - %s\n" #, c-format msgid "%s does not exist, create it now [y or n] ? " msgstr "%s n'existe pas, le créer maintenant [y ou n] ? " msgid "aborting...\n" msgstr "annulation…\n" #, c-format msgid "%s successfully created\n" msgstr "%s correctement créé\n" msgid "starting interactive mode...\n" msgstr "lancement du mode interactif…\n" msgid "Problems accessing data file ..." msgstr "Problème d'accès aux fichiers de données…" msgid "The data files were successfully saved" msgstr "Les fichiers de données ont été correctement enregistrées" msgid "failed to open appointment file" msgstr "impossible d'ouvrir le fichier des rendez-vous" msgid "syntax error in the item date" msgstr "erreur de syntaxe sur la date de l'élément" msgid "no event nor appointment found" msgstr "aucun événement ni rendez-vous trouvé" msgid "syntax error in item time or duration" msgstr "erreur de syntaxe pour l'heure ou la durée de l'élément" msgid "syntax error in item identifier" msgstr "erreur de syntaxe dans le nom de l'élément" msgid "wrong format in the appointment or event" msgstr "format incorrect du rendez-vous ou de l'événement" msgid "syntax error in item repetition" msgstr "erreur de syntaxe pour la répétition de l'élément" msgid "failed to open todo file" msgstr "impossible d'ouvrir le fichier des tâches" msgid "failed to open key file" msgstr "impossible d'ouvrir le fichier des raccourcis clavier" msgid "" "\n" "Too many errors while reading configuration file!\n" "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 "Impossible de lire le libellé de la touche" msgid "Key label not recognized" msgstr "Libellé de la touche non reconnu" #, c-format msgid "Error reading key: \"%s\"" msgstr "Erreur de lecture de la touche : \"%s\"" #, c-format msgid "\"%s\" assigned multiple times!" 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'erreurs durant la lecture du fichier de raccourcis, annulation..." #, c-format msgid "FATAL ERROR: could not create %s: %s\n" msgstr "ERREUR FATALE : impossible de créer %s : %s\n" msgid "Welcome to Calcurse. Missing data files were created." msgstr "Bienvenue dans Calcurse. Les fichiers manquants ont été créés." msgid "Data files found. Data will be loaded now." msgstr "" "Fichiers de données trouvés. Les données seront chargées immédiatement." msgid "The data were successfully exported" msgstr "Les données ont été correctement exportées" msgid "unknown export type" msgstr "type d'exportation inconnu" msgid "wrong export mode" msgstr "mode d'exportation incorrect" msgid "Enter the file name to import data from:" msgstr "Saisir le nom du fichier depuis lequel importer les données :" #, c-format msgid "Import process report: %04d lines read " msgstr "Rapport du processus d'importation : %04d lignes lues " msgid "unknown import type" msgstr "type d'importation inconnu" msgid "FATAL ERROR: the input file cannot be accessed, Aborting..." msgstr "ERREUR FATALE : le fichier d'entrée n'a pu être ouvert, abandon..." msgid "FATAL ERROR: wrong import mode" msgstr "ERREUR FATALE : mode d'importation erroné" #, c-format msgid "%d app" msgid_plural "%d apps" msgstr[0] "%d app" msgstr[1] "%d apps" #, c-format msgid "%d event" msgid_plural "%d events" msgstr[0] "%d événement" msgstr[1] "%d événements" #, c-format msgid "%d todo" msgid_plural "%d todos" msgstr[0] "%d tâche" msgstr[1] "%d tâches" #, c-format msgid "%d skipped" msgstr "%d ignorés" msgid "Some items could not be imported, see log file ?" msgstr "Certains éléments n'ont pu être importés, voir le journal ?" msgid "Warning: could not create temporary log file, Aborting..." msgstr "" "Attention : impossible de créer un journal temporaire, abandon en cours..." msgid "Warning: could not open temporary log file, Aborting..." msgstr "Attention : impossible d'ouvrir le journal temporaire, abandon..." msgid "No log file to display!" msgstr "Aucun journal à afficher !" #, c-format msgid "Warning: could not erase temporary log file %s, Aborting..." msgstr "Attention : impossible d'effacer le journal temporaire %s, Abandon..." msgid "Invalid delay" msgstr "Délai invalide" #, c-format msgid "" "\n" "WARNING: it seems that another calcurse instance is already running.\n" "If this is not the case, please remove the following lock file: \n" "\"%s\"\n" "and restart calcurse.\n" msgstr "" "\n" "ATTENTION : il semble qu'une autre instance de calcurse soit en cours " "d'exécution.\n" "Si ce n'est pas le cas, veuillez supprimer le fichier de verrouillage " "suivant :\n" "\"%s\"\n" "et relancer calcurse.\n" msgid "" "#\n" "# Calcurse keys configuration file\n" "#\n" "# This file sets the keybindings used by Calcurse.\n" "# Lines beginning with \"#\" are comments, and ignored by Calcurse.\n" "# To assign a keybinding to an action, this file must contain a line\n" "# with the following syntax:\n" "#\n" "# ACTION KEY1 KEY2 ... KEYn\n" "#\n" "# Where ACTION is what will be performed when KEY1, KEY2, ..., or KEYn\n" "# will be pressed.\n" "#\n" "# To define bindings which use the CONTROL key, prefix the key with 'C-'.\n" "# The escape, space bar and horizontal Tab key can be specified using\n" "# the 'ESC', 'SPC' and 'TAB' keyword, respectively.\n" "# Arrow keys can also be specified with the UP, DWN, LFT, RGT keywords.\n" "# Last, Home and End keys can be assigned using 'KEY_HOME' and 'KEY_END'\n" "# keywords.\n" "#\n" "# A description of what each ACTION keyword is used for is available\n" "# from calcurse online configuration menu.\n" msgstr "" "#\n" "# Fichier de configuration des raccourcis de Calcurse\n" "#\n" "# Ce fichier définie les raccourcis clavier utilisés par Calcurse.\n" "# Les lignes débutant par \"#\" sont des commentaires ignorés par Calcurse.\n" "# Pour assigner un raccourci clavier à une action, ce fichier doit contenir " "une ligne\n" "# qui respecte la syntaxe suivante :\n" "#\n" "# ACTION TOUCHE1 TOUCHE2 ... TOUCHEn\n" "#\n" "# Où ACTION désigne la commande à exécuter lorsque TOUCHE1, TOUCHE2, ..., ou " "TOUCHEn\n" "# est pressée.\n" "#\n" "# Pour définir un raccourci utilisant la touche CONTRÔLE, préfixer la touche " "avec 'C-'.\n" "# Les touches échap, espace et tabulation horizontale peuvent être " "spécifiées en utilisant\n" "# les mots clefs respectifs ESC, SPC et TAB.\n" "# Les touches fléchées peuvent aussi être spécifiées avec les mots clefs UP, " "DWN, LFT, RGT.\n" "# Enfin les touches Début et Fin peuvent être assignées en utilisant les " "mots clefs KEY_HOME et KEY_END.\n" "#\n" "# Une description de ce que chaque ACTION fait est disponible\n" "# dans le menu de configuration de calcurse.\n" msgid "FATAL ERROR: could not create default keys file." msgstr "" "ERREUR FATALE : impossible de créer le fichier de raccourcis par défaut." msgid "FATAL ERROR: key value out of bounds" msgstr "ERREUR FATALE : valeur de clef hors limite" msgid "Cancel the ongoing action." msgstr "Annuler l'action en cours." msgid "Select the highlighted item." msgstr "Sélectionner l'élément en surbrillance." msgid "Print general information about calcurse's authors, license, etc." msgstr "" "Afficher les informations générales à propos des auteurs de calcurse, de la " "licence, etc." msgid "Display hints whenever some help screens are available." msgstr "" "Afficher des notes chaque fois que certains écrans d'aide sont disponibles." msgid "Exit from the current menu, or quit calcurse." msgstr "Fermer le menu courant, ou quitter calcurse." msgid "Save calcurse data." msgstr "Enregistre les données de calcurse." msgid "Copy the item that is currently selected." msgstr "" msgid "Paste an item at the current position." msgstr "Coller un élément à la position actuelle." msgid "Select next panel in calcurse main screen." msgstr "Sélectionner le panneau suivant dans l'écran général de calcurse." msgid "Import data from an external file." msgstr "Importer les données d'un fichier externe." msgid "Export data to a new file format." msgstr "Exporter les données vers un nouveau format de fichier." msgid "Select the day to go to." msgstr "Sélectionner le jour à afficher." msgid "Show next possible actions inside status bar." msgstr "Afficher l'action suivante possible dans la barre d'état." msgid "Enter the configuration menu." msgstr "Ouvrir le menu de configuration." msgid "Redraw calcurse's screen." msgstr "Rafraîchir l'écran de calcurse." msgid "Add an appointment, whichever panel is currently selected." msgstr "Ajouter un rendez-vous, quel que soit le panneau actif." msgid "Add a todo item, whichever panel is currently selected." msgstr "Ajouter une tâche, quel que soit le panneau actif." msgid "" "Move to previous day in calendar, whichever panel is currently selected." msgstr "" "Se déplacer au jour précédent du calendrier, quel que soit le panneau actif." msgid "Move to next day in calendar, whichever panel is currently selected." msgstr "" "Se déplacer au jour suivant du calendrier, quel que soit le panneau actif." msgid "" "Move to previous week in calendar, whichever panel is currently selected" msgstr "" "Se déplacer à la semaine précédente du calendrier, quel que soit le panneau " "actif." msgid "Move to next week in calendar, whichever panel is currently selected." msgstr "" "Se déplacer à la semaine suivante du calendrier, quel que soit le panneau " "actif." msgid "" "Move to previous month in calendar, whichever panel is currently selected" msgstr "" "Se déplacer au mois précédent du calendrier, quel que soit le panneau actif." msgid "Move to next month in calendar, whichever panel is currently selected." msgstr "" "Se déplacer au mois suivant du calendrier, quel que soit le panneau actif." msgid "" "Move to previous year in calendar, whichever panel is currently selected" msgstr "" "Se déplacer à l'année précédent du calendrier, quel que soit le panneau " "actif." msgid "Move to next year in calendar, whichever panel is currently selected." msgstr "" "Se déplacer à l'année suivante du calendrier, quel que soit le panneau actif." msgid "Scroll window down (e.g. when displaying text inside a popup window)." msgstr "" "Faire défiler l'écran vers le bas (p. ex. lors de l'affichage du texte dans " "une fenêtre indépendante)." msgid "Scroll window up (e.g. when displaying text inside a popup window)." msgstr "" "Faire défiler l'écran vers le haut (p. ex. lors de l'affichage du texte dans " "une fenêtre indépendante)." msgid "Go to today, whichever panel is selected." msgstr "Aller à la date du jour, quel que soit le panneau actif." msgid "Move to the right." msgstr "Vers la droite." msgid "Move to the left." msgstr "Vers la gauche." msgid "Move down." msgstr "Vers le bas." msgid "Move up." msgstr "Vers le haut." msgid "" "Select the first day of the current week when inside the calendar panel." msgstr "" "Sélectionner le premier jour de la semaine en cours lors de l'affichage du " "calendrier." msgid "Select the last day of the current week when inside the calendar panel." msgstr "" "Sélectionner le dernier jour de la semaine en cours lors de l'affichage du " "calendrier." msgid "Add an item to the currently selected panel." msgstr "Ajouter un élément au panneau sélectionné." msgid "Delete the currently selected item." msgstr "Supprimer l'élément sélectionné." msgid "Edit the currently seleted item." msgstr "Modifier l'élément sélectionné." msgid "Display the currently selected item inside a popup window." msgstr "Afficher l'élément sélectionner dans une fenêtre indépendante." msgid "Flag the currently selected item as important." msgstr "Marquer l'élément sélectionné comme important." msgid "Repeat an item" msgstr "Répéter un élément" msgid "Pipe the currently selected item to an external program." msgstr "Passer l'élément sélectionné à un programme externe." msgid "Attach (or edit if one exists) a note to the currently selected item" msgstr "Joindre (ou modifier si elle existe) une note à l'élément sélectionné" msgid "View the note attached to the currently selected item." msgstr "Consulter la note jointe à l'élément sélectionné." msgid "Raise a task priority inside the todo panel." msgstr "Augmenter la priorité d'une tâche dans le panneau des tâches." msgid "Lower a task priority inside the todo panel." msgstr "Diminuer la priorité d'une tâche dans le panneau des tâches." msgid "FATAL ERROR: null file pointer." msgstr "ERREUR FATALE : pointeur de fichier nul." #, c-format msgid "When adding default key for \"%s\", \"%s\" was already assigned!" msgstr "" "Pendant l'ajout de la touche par défaut pour \"%s\", \"%s\" était déjà " "assignée !" msgid "xmalloc: zero size" msgstr "xmalloc : taille nulle" msgid "xmalloc: out of memory" msgstr "xmalloc : dépassement de mémoire" msgid "xcalloc: zero size" msgstr "xcalloc : taille nulle" msgid "xcalloc: overflow" msgstr "xcalloc : débordement" msgid "xcalloc: out of memory" msgstr "xcalloc : dépassement de mémoire" msgid "xrealloc: zero size" msgstr "xrealloc : taille nulle" msgid "xrealloc: overflow" msgstr "xrealloc : débordement" msgid "xrealloc: out of memory" msgstr "xrealloc : dépassement de mémoire" msgid "xfree: null pointer" msgstr "xfree : pointeur nul" msgid "could not allocate memory to store block info" msgstr "" "impossible d'allouer de la mémoire pour stocker les informations du bloc" msgid "Block not found" msgstr "Bloc introuvable" #, c-format msgid "overflow at %s" msgstr "débordement à l'adresse %s" #, c-format msgid "dbg_free: null pointer at %s" msgstr "dbg_free : pointeur nulle à l'adresse %s" #, c-format msgid "block seems already freed at %s" msgstr "le bloc semble déjà libéré à l'adresse %s" #, c-format msgid "corrupt block header at %s" msgstr "début de bloc corrompu à l'adresse %s" #, c-format msgid "corrupt block end at %s, (end = %u, should be %d)" msgstr "fin de bloc corrompu à l'adresse %s, (fin = %u, devrait être %d)" msgid "---==== MEMORY BLOCK ====----------------\n" msgstr "---==== BLOC MÉMOIRE ====----------------\n" #, c-format msgid " id: %u\n" msgstr " id : %u\n" #, c-format msgid " size: %u\n" msgstr " taille : %u\n" #, c-format msgid " allocated in: %s\n" msgstr " alloué en : %s\n" msgid "-----------------------------------------\n" msgstr "-----------------------------------------\n" msgid "+------------------------------+\n" msgstr "+------------------------------+\n" msgid "| calcurse memory usage report |\n" msgstr "| rapport de consommation mémoire de calcurse |\n" #, c-format msgid " number of calls: %u\n" msgstr " nombre d'appels : %u\n" #, c-format msgid " allocated blocks: %u\n" msgstr " blocs alloués : %u\n" #, c-format msgid " unfreed blocks: %u\n" msgstr " blocs non libérés : %u\n" #, c-format msgid "Warning: could not open %s, Aborting..." msgstr "Attention : impossible d'ouvrir %s, abandon..." msgid "error while launching command: could not fork" msgstr "erreur pendant le lancement de la commande : fork impossible" msgid "error while launching command" msgstr "erreur durant le lancement de la commande" msgid "(if set to YES, notify-bar will be displayed)" msgstr "(si fixé à OUI, la barre de notification sera affichée)" msgid "(Format of the date to be displayed inside notify-bar)" msgstr "(Format de la date à afficher dans la barre de notification)" msgid "(Format of the time to be displayed inside notify-bar)" msgstr "(Format de l'heure à afficher dans la barre de notification)" msgid "" "(Warn user if an appointment is within next 'notify-bar_warning' seconds)" msgstr "" "(Alerte l'utilisateur si un rendez-vous se produit les prochaines 'notify-" "bar_warning' secondes)" msgid "(Command used to notify user of an upcoming appointment)" msgstr "" "(Commande utilisée pour prévenir l'utilisateur d'un rendez-vous sur le point " "de commencer)" msgid "(Notify all appointments instead of flagged ones only)" msgstr "" "(Signaler tous les rendez-vous au lieu de se restreindre à ceux marqués " "comme important)" msgid "(Run in background to get notifications after exiting)" msgstr "" "(Lancer en arrière-plan pour obtenir les notifications après avoir quitter)" msgid "(Log activity when running in background)" 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 "" "Saisir le format de l'heure (voir 'man 3 strftime' pour les formats " "possibles)" msgid "Enter the number of seconds (0 not to be warned before an appointment)" msgstr "" "Saisir le nombre de secondes (0 pour désactiver l'alerte qui précéde un " "rendez-vous)" msgid "Enter the notification command " msgstr "Saisir la commande de notification" msgid "notification options" msgstr "options de notification" msgid "incoherent repetition type" msgstr "type de répétition incohérent" msgid "unknown repetition type" msgstr "type de répétition inconnu" msgid "unknown character" msgstr "caractère inconnu" msgid "date error in event" msgstr "date erronée dans l'événement" msgid "event not found" msgstr "événement introuvable" msgid "appointment not found" msgstr "rendez-vous introuvable" msgid "syntax error in item date" msgstr "erreur de syntaxe dans la date de l'élément" #, c-format msgid "Could not remove calcurse lock file: %s\n" msgstr "Impossible d'effacer le fichier verrou de calcurse : %s\n" #, c-format msgid "Error setting signal #%d : %s\n" msgstr "Erreur d'affectation du signal #%d : %s\n" msgid "no note attached" msgstr "aucune note jointe" msgid "no such todo" msgstr "tâche inconnue" msgid "todo not found" msgstr "tâche introuvable" msgid "/!\\ INTERNAL ERROR /!\\" msgstr "/!\\ ERREUR INTERNE /!\\" msgid "Please report the following bug:" msgstr "Merci de reporter le bogue suivant :" msgid "[yn]" msgstr "[on]" msgid "Press any key to continue..." msgstr "Presser une touche pour continuer..." msgid "failure in mktime" msgstr "erreur fatale dans mktime" msgid "error in mktime" msgstr "erreur dans mktime" msgid "could not convert string" msgstr "impossible de convertir la chaîne de caractères" msgid "out of range" msgstr "en dehors de l'intervalle" msgid "yes" msgstr "oui" msgid "no" msgstr "non" msgid "option not defined" 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" #, c-format msgid "Error when closing file at %s" msgstr "Erreur lors de la fermeture du fichier à %s" msgid "No note file found\n" msgstr "Fichier de note introuvable\n" msgid "January" msgstr "Janvier" msgid "February" msgstr "Février" msgid "March" msgstr "Mars" msgid "April" msgstr "Avril" msgid "May" msgstr "Mai" msgid "June" msgstr "Juin" msgid "July" msgstr "Juillet" msgid "August" msgstr "Août" msgid "September" msgstr "Septembre" msgid "October" msgstr "Octobre" msgid "November" msgstr "Novembre" msgid "December" msgstr "Décembre" msgid "Sun" msgstr "Dim" msgid "Mon" msgstr "Lun" msgid "Tue" msgstr "Mar" msgid "Wed" msgstr "Mer" msgid "Thu" msgstr "Jeu" msgid "Fri" msgstr "Ven" msgid "Sat" msgstr "Sam" msgid "mm/dd/yyyy" msgstr "mm/dd/yyyy" msgid "dd/mm/yyyy" msgstr "dd/mm/yyyy" msgid "yyyy/mm/dd" msgstr "yyyy/mm/dd" msgid "yyyy-mm-dd" msgstr "yyyy-mm-dd" msgid "Calendar" msgstr "Calendrier" msgid "Appointments" msgstr "Rendez-vous" msgid "ToDo" msgstr "Tâches" msgid "Quit" msgstr "Quitter" msgid "Save" msgstr "Enregistrer" msgid "Copy" msgstr "" msgid "Paste" msgstr "Coller" msgid "Chg Win" msgstr "Chg.Fen." msgid "Import" msgstr "Importer" msgid "Export" msgstr "Exporter" msgid "Go to" msgstr "Aller à" msgid "Config" msgstr "Configurer" msgid "Redraw" msgstr "Rafraîchir" msgid "Add Appt" msgstr "Ajt rdv" msgid "Add Todo" msgstr "Ajt tâche" msgid "-1 Day" msgstr "-1 Jour" msgid "+1 Day" msgstr "+1 Jour" msgid "-1 Week" msgstr "-1 Sem." msgid "+1 Week" msgstr "+1 Sem." msgid "-1 Month" msgstr "-1 Mois" msgid "+1 Month" msgstr "+1 Mois" msgid "-1 Year" msgstr "-1 An" msgid "+1 Year" msgstr "+1 An" msgid "Today" msgstr "Aujourd." msgid "Nxt View" msgstr "Voir Suiv." msgid "Prv View" msgstr "Voir Prec." msgid "beg Week" msgstr "Déb Sem." msgid "end Week" msgstr "Fin Sem." msgid "Add Item" msgstr "Ajouter" msgid "Del Item" msgstr "Supprimer" msgid "Edit Itm" msgstr "Modifier" msgid "View" msgstr "Voir" msgid "Pipe" msgstr "Tube" msgid "Flag Itm" msgstr "Marq rdv" msgid "Repeat" msgstr "Répéter" msgid "EditNote" msgstr "EditNote" msgid "ViewNote" msgstr "VoirNote" msgid "Prio.+" msgstr "Prio.+" msgid "Prio.-" msgstr "Prio.-" msgid "OtherCmd" msgstr "Autres" msgid "unknown panel" msgstr "panneau inconnu" msgid "Usage: calcurse-upgrade [-h|-v|--config ]" msgstr "Utilisation : calcurse-upgrade [-h|-v|--config ]" msgid "unrecognized option:" msgstr "option non reconnue :" msgid "Configuration file not found:" msgstr "Fichier de configuration introuvable :" msgid "Pre-3.0.0 configuration file format detected..." msgstr "Format de fichier de configuration pre-3.0.0 détécté..." msgid "Create temporary backup of the configuration file..." msgstr "Création d'une sauvegarde temporaire du fichier de configuration..." msgid "Old backup file found:" msgstr "Ancien fichier de sauvegarde trouvé :" msgid "" "\n" "If a previous conversion did not complete, please try to restore your\n" "configuration from this backup and then remove the backup file." msgstr "" "\n" "Si une précédente conversion n'a pas fonctionné, vous pouvez essayer\n" "de réparer votre configuration à partir de cette sauvegarde, puis de\n" "supprimer la sauvegarde." msgid "done" msgstr "fait" msgid "Old temporary file found:" msgstr "Ancien fichier temporaire trouvé :" msgid "" "\n" "If a previous conversion did not complete, please try to remove this file " "and\n" "start over with a backup of your old configuration file." msgstr "" "\n" "Si une conversion précédente ne s'est pas terminée, veuillez essayer\n" "de supprimer ce fichier et recommencer avec une sauvegarde de\n" "votre ancien fichier de configuration." msgid "Upgrade configuration directives..." msgstr "Mise à jour des instructions de configuration..." msgid "Remove temporary backup..." msgstr "Suppression de la sauvegarde temporaire..." calcurse-3.1.4/po/insert-header.sin0000644000175000001440000000124012105444402014111 00000000000000# Sed script that inserts the file called HEADER before the header entry. # # At each occurrence of a line starting with "msgid ", we execute the following # commands. At the first occurrence, insert the file. At the following # occurrences, do nothing. The distinction between the first and the following # occurrences is achieved by looking at the hold space. /^msgid /{ x # Test if the hold space is empty. s/m/m/ ta # Yes it was empty. First occurrence. Read the file. r HEADER # Output the file's contents by reading the next line. But don't lose the # current line while doing this. g N bb :a # The hold space was nonempty. Following occurrences. Do nothing. x :b } calcurse-3.1.4/po/boldquot.sed0000644000175000001440000000033112105444401013171 00000000000000s/"\([^"]*\)"/“\1”/g s/`\([^`']*\)'/‘\1’/g s/ '\([^`']*\)' / ‘\1’ /g s/ '\([^`']*\)'$/ ‘\1’/g s/^'\([^`']*\)' /‘\1’ /g s/“”/""/g s/“/“/g s/”/”/g s/‘/‘/g s/’/’/g calcurse-3.1.4/po/calcurse.pot0000644000175000001440000013322212105444502013200 00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR calcurse Development Team # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: bugs@calcurse.org\n" "POT-Creation-Date: 2013-02-09 14:04+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" msgid "null pointer" msgstr "" msgid "date error in appointment" msgstr "" msgid "no such appointment" msgstr "" msgid "" "Usage: calcurse [-g|-h|-v] [-an] [-t[num]] [-i] [-x[format]]\n" " [-d |] [-s[date]] [-r[range]]\n" " [-c] [-D] [-S] [--status]\n" " [--read-only]\n" msgstr "" msgid "Try 'calcurse -h' for more information.\n" msgstr "" msgid "" "\n" "Copyright (c) 2004-2013 calcurse Development Team.\n" "This is free software; see the source for copying conditions.\n" msgstr "" #, c-format msgid "Calcurse %s - text-based organizer\n" msgstr "" msgid "" "\n" "For more information, type '?' from within Calcurse, or read the manpage.\n" msgstr "" msgid "Mail feature requests and suggestions to .\n" msgstr "" msgid "Mail bug reports to .\n" msgstr "" msgid "" "\n" "Miscellaneous:\n" " -h, --help\n" "\tprint this help and exit.\n" "\n" " -v, --version\n" "\tprint calcurse version and exit.\n" "\n" " --status\n" "\tdisplay the status of running instances of calcurse.\n" "\n" " --read-only\n" "\tDon't save configuration nor appointments/todos. Use with care.\n" "\n" "Files:\n" " -c , --calendar \n" "\tspecify the calendar to use (has precedence over '-D').\n" "\n" " -D , --directory \n" "\tspecify the data directory to use.\n" "\tIf not specified, the default directory is ~/.calcurse\n" "\n" "Non-interactive:\n" " -a, --appointment\n" " \tprint events and appointments for current day and exit.\n" "\n" " -d , --day \n" "\tprint events and appointments for or upcoming days and\n" "\texit. To specify both a starting date and a range, use the\n" "\t'--startday' and the '--range' option.\n" "\n" " -g, --gc\n" "\trun the garbage collector for note files and exit. \n" "\n" " -i , --import \n" "\timport the icalendar data contained in . \n" "\n" " -n, --next\n" "\tprint next appointment within upcoming 24 hours and exit. Also given\n" "\tis the remaining time before this next appointment.\n" "\n" " -r[num], --range[=num]\n" "\tprint events and appointments for the [num] number of days\n" "\tand exit. If no [num] is given, a range of 1 day is considered.\n" "\n" " -s[date], --startday[=date]\n" "\tprint events and appointments from [date] and exit.\n" "\tIf no [date] is given, the current day is considered.\n" "\n" " -S, --search=\n" "\tsearch for the given regular expression within events, appointments,\n" "\tand todos description.\n" "\n" " -t[num], --todo[=num]\n" "\tprint todo list and exit. If the optional number [num] is given,\n" "\tthen only todos having a priority equal to [num] will be returned.\n" "\tThe priority number must be between 1 (highest) and 9 (lowest).\n" "\tIt is also possible to specify '0' for the priority, in which case\n" "\tonly completed tasks will be shown.\n" "\n" " -x[format], --export[=format]\n" "\texport user data to the specified format. Events, appointments and\n" "\ttodos are converted and echoed to stdout.\n" "\tTwo possible formats are available: 'ical' and 'pcal'.\n" "\tIf the optional argument format is not given, ical format is\n" "\tselected by default.\n" "\tnote: redirect standard output to export data to a file,\n" "\tby issuing a command such as: calcurse --export > calcurse.dat\n" msgstr "" #, c-format msgid "" "Error: both calcurse (pid: %d) and its daemon (pid: %d)\n" "seem to be running at the same time!\n" "Please check manually and restart calcurse.\n" msgstr "" #, c-format msgid "calcurse is running (pid %d)\n" msgstr "" #, c-format msgid "calcurse is running in background (pid %d)\n" msgstr "" msgid "calcurse is not running\n" msgstr "" msgid "to do:\n" msgstr "" msgid "completed tasks:\n" msgstr "" msgid "next appointment:\n" msgstr "" msgid "Argument to the '-d' flag is not valid\n" msgstr "" #, c-format msgid "Possible argument format are: '%s' or 'n'\n" msgstr "" msgid "Argument is not valid\n" msgstr "" #, c-format msgid "Argument format for -s and --startday is: '%s'\n" msgstr "" msgid "Argument format for -r and --range is: 'n'\n" msgstr "" msgid "Can not handle more than one regular expression." msgstr "" msgid "Could not compile regular expression." msgstr "" msgid "Argument for '-x' should be either 'ical' or 'pcal'\n" msgstr "" msgid "Option '-S' must be used with either '-d', '-r', '-s', '-a' or '-t'\n" msgstr "" msgid "To do :" msgstr "" msgid "Export to (i)cal or (p)cal format?" msgstr "" msgid "[ip]" msgstr "" msgid "Do you really want to quit ?" msgstr "" msgid "ERROR setting first day of week" msgstr "" msgid "" "The day you entered is not valid (should be between 01/01/1902 and " "12/31/2037)" msgstr "" msgid "Press [ENTER] to continue" msgstr "" #, c-format msgid "Enter the day to go to [ENTER for today] : %s" msgstr "" msgid "unknown color" msgstr "" msgid "failed to open configuration file" msgstr "" #, c-format msgid "invalid configuration directive: \"%s\"" msgstr "" msgid "" "Pre-3.0.0 configuration file format detected, please upgrade running " "`calcurse-upgrade`." msgstr "" #, c-format msgid "configuration variable unknown: \"%s\"" msgstr "" #, c-format msgid "wrong configuration variable format for \"%s\"" msgstr "" msgid "Exit" msgstr "" msgid "General" msgstr "" msgid "Layout" msgstr "" msgid "Sidebar" msgstr "" msgid "Color" msgstr "" msgid "Notify" msgstr "" msgid "Keys" msgstr "" msgid "Select" msgstr "" msgid "Up" msgstr "" msgid "Down" msgstr "" msgid "Left" msgstr "" msgid "Right" msgstr "" msgid "Help" msgstr "" msgid "layout configuration" msgstr "" msgid "" "With this configuration menu, one can choose where panels will be\n" "displayed inside calcurse screen. \n" "It is possible to choose between eight different configurations.\n" "\n" "In the configuration representations, letters correspond to:\n" "\n" " 'c' -> calendar panel\n" "\n" " 'a' -> appointment panel\n" "\n" " 't' -> todo panel\n" "\n" msgstr "" msgid "Width +" msgstr "" msgid "Width -" msgstr "" #, no-c-format msgid "" "This configuration screen is used to change the width of the side bar.\n" "The side bar is the part of the screen which contains two panels:\n" "the calendar and, depending on the chosen layout, either the todo list\n" "or the appointment list.\n" "\n" "The side bar width can be up to 50% of the total screen width, but\n" "can't be smaller than " msgstr "" msgid "No color" msgstr "" msgid "Foreground" msgstr "" msgid "Background" msgstr "" msgid "(terminal's default)" msgstr "" msgid "color theme" msgstr "" msgid "(if set to YES, automatic save is done when quitting)" msgstr "" msgid "(run the garbage collector when quitting)" msgstr "" msgid "(if not null, automatically save data every 'periodic_save' minutes)" msgstr "" msgid "(if set to YES, confirmation is required before quitting)" msgstr "" msgid "(if set to YES, confirmation is required before deleting an event)" msgstr "" msgid "(if set to YES, messages about loaded and saved data will be displayed)" msgstr "" msgid "(if set to YES, progress bar will be displayed when saving data)" msgstr "" msgid "Monday" msgstr "" msgid "Sunday" msgstr "" msgid "(specifies the first day of week in the calendar view)" msgstr "" msgid "(Format of the date to be displayed in non-interactive mode)" msgstr "" msgid "(Format to be used when entering a date: " msgstr "" msgid "Enter an option number to change its value" msgstr "" msgid "(Press '^P' or '^N' to move up or down, 'Q' to quit)" msgstr "" msgid "Enter the date format (see 'man 3 strftime' for possible formats) " msgstr "" msgid "Enter the date format: " msgstr "" msgid "Enter the delay, in minutes, between automatic saves (0 to disable) " msgstr "" msgid "general options" msgstr "" msgid "Undefined option!" msgstr "" msgid "undefined" msgstr "" msgid "Key info" msgstr "" msgid "Add key" msgstr "" msgid "Del key" msgstr "" msgid "Prev Key" msgstr "" msgid "Next Key" msgstr "" msgid "keys configuration" msgstr "" msgid "Press the key you want to assign to:" msgstr "" msgid "This key is not yet recognized by calcurse, please choose another one." msgstr "" #, c-format msgid "This key is already in use for %s, please choose another one." msgstr "" msgid "Some actions do not have any associated key bindings!" msgstr "" msgid "" "Sorry, colors are not supported by your terminal\n" "(Press [ENTER] to continue)" msgstr "" msgid "unknown item type" msgstr "" msgid "Event :" msgstr "" msgid "Appointment :" msgstr "" msgid "unknwon type" msgstr "" #, c-format msgid "Could not stop daemon properly: %s\n" msgstr "" #, c-format msgid "terminated at %s with signal %d\n" msgstr "" #, c-format msgid "Could not remove daemon lock file: %s\n" msgstr "" #, c-format msgid "Could not fork: %s\n" msgstr "" #, c-format msgid "Could not detach from the controlling terminal: %s\n" msgstr "" #, c-format msgid "Could not change working directory: %s\n" msgstr "" msgid "Cannot daemonize, aborting\n" msgstr "" msgid "Could not set lock file\n" msgstr "" #, c-format msgid "Could not access \"%s\": %s\n" msgstr "" #, c-format msgid "started at %s\n" msgstr "" msgid "error loading next appointment\n" msgstr "" #, c-format msgid "launching notification at %s for: \"%s\"\n" msgstr "" msgid "error while sending notification\n" msgstr "" #, c-format msgid "sleeping at %s for %d second\n" msgid_plural "sleeping at %s for %d seconds\n" msgstr[0] "" msgstr[1] "" #, c-format msgid "awakened at %s\n" msgstr "" #, c-format msgid "Could not stop calcurse daemon: %s\n" msgstr "" msgid "date error in the event\n" msgstr "" msgid "Internal error: line too long" msgstr "" msgid "out of memory" msgstr "" #, c-format msgid "key bindings: %s" msgstr "" msgid "Calcurse help" msgstr "" msgid " Welcome to Calcurse. This is the main help screen.\n" msgstr "" #, c-format msgid "" "Moving around: Press '%s' or '%s' to scroll text upward or downward\n" " inside help screens, if necessary.\n" "\n" " Exit help: When finished, press '%s' to exit help and go back to\n" " the main Calcurse screen.\n" "\n" " Help topic: At the bottom of this screen you can see a panel with\n" " different fields, represented by a letter and a short\n" " title. This panel contains all the available actions\n" " you can perform when using Calcurse.\n" " By pressing one of the letters appearing in this\n" " panel, you will be shown a short description of the\n" " corresponding action. At the top right side of the\n" " description screen are indicated the user-defined key\n" " bindings that lead to the action.\n" "\n" " Credits: Press '%s' for credits." msgstr "" msgid "Save\n" msgstr "" #, c-format msgid "" "Save calcurse data.\n" "Data are splitted into four different files which contain :\n" "\n" " / ~/.calcurse/conf -> user configuration\n" " | (layout, color, general options)\n" " | ~/.calcurse/apts -> data related to the appointments\n" " | ~/.calcurse/todo -> data related to the todo list\n" " \\ ~/.calcurse/keys -> user-defined key bindings\n" "\n" "In the config menu, you can choose to save the Calcurse data\n" "automatically before quitting." msgstr "" msgid "Import\n" msgstr "" #, c-format msgid "" "Import data from an icalendar file.\n" "You will be asked to enter the file name from which to load ical\n" "items. At the end of the import process, and if the general option\n" "'system_dialogs' is set to 'yes', a report indicating how many items\n" "were imported is shown.\n" "This report contains the total number of lines read, the number of\n" "appointments, events and todo items which were successfully imported,\n" "together with the number of items for which problems occured and that\n" "were skipped, if any.\n" "\n" "If one or more items could not be imported, one has the possibility to\n" "read the import process report in order to identify which problems\n" "occured.\n" "In this report is shown one item per line, with the line in the input\n" "stream at which this item begins, together with the description of why\n" "the item could not be imported.\n" msgstr "" msgid "Export\n" msgstr "" #, c-format msgid "" "Export calcurse data (appointments, events and todos).\n" "This leads to the export submenu, from which you can choose between\n" "two different export formats: 'ical' and 'pcal'. Choosing one of\n" "those formats lets you export calcurse data to icalendar or pcal\n" "format.\n" "\n" "You first need to specify the file to which the data will be exported.\n" "By default, this file is:\n" "\n" " ~/calcurse.ics\n" "\n" "for an ical export, and:\n" "\n" " ~/calcurse.txt\n" "\n" "for a pcal export.\n" "\n" "Calcurse data are exported in the following order:\n" " events, appointments, todos.\n" msgstr "" msgid "Displacement keys\n" msgstr "" #, c-format msgid "" "Move around inside calcurse screens.\n" "The following scheme summarizes how to get around:\n" "\n" " move up\n" " move to previous week\n" "\n" " %s\n" " move left ^ \n" " move to previous day |\n" " %s\n" " <-- + -->\n" " %s\n" " | move right\n" " v move to next day\n" " %s\n" "\n" " move to next week\n" " move down\n" "\n" "Moreover, while inside the calendar panel, the '%s' key moves\n" "to the first day of the week, and the '%s' key selects the last day of\n" "the week.\n" msgstr "" msgid "View\n" msgstr "" #, c-format msgid "" "View the item you select in either the Todo or Appointment panel.\n" "\n" "This is usefull when an event description is longer than the available\n" "space to display it. If that is the case, the description will be\n" "shortened and its end replaced by '...'. To be able to read the entire\n" "description, just press '%s' and a popup window will appear, containing\n" "the whole event.\n" "\n" "Press any key to close the popup window and go back to the main\n" "Calcurse screen." msgstr "" msgid "Pipe\n" msgstr "" #, c-format msgid "" "Pipe the selected item to an external program.\n" "\n" "Press the '%s' key to pipe the currently selected appointment or\n" "todo entry to an external program.\n" "\n" "You will be driven back to calcurse as soon as the program exits.\n" msgstr "" msgid "Tab\n" msgstr "" #, c-format msgid "" "Switch between panels.\n" "The panel currently in use has its border colorized.\n" "\n" "Some actions are possible only if the right panel is selected.\n" "For example, if you want to add a task in the TODO list, you need first\n" "to press the '%s' key to get the TODO panel selected. Then you can\n" "press '%s' to add your item.\n" "\n" "Notice that at the bottom of the screen the list of possible actions\n" "change while pressing '%s', so you always know what action can be\n" "performed on the selected panel." msgstr "" msgid "Goto\n" msgstr "" #, c-format msgid "" "Jump to a specific day in the calendar.\n" "\n" "Using this command, you do not need to travel to that day using\n" "the displacement keys inside the calendar panel.\n" "If you hit [ENTER] without specifying any date, Calcurse checks the\n" "system current date and you will be taken to that date.\n" "\n" "Notice that pressing '%s', whatever panel is\n" "selected, will select current day in the calendar." msgstr "" msgid "Delete\n" msgstr "" #, c-format msgid "" "Delete an element in the ToDo or Appointment list.\n" "\n" "Depending on which panel is selected when you press the delete key,\n" "the hilighted item of either the ToDo or Appointment list will be \n" "removed from this list.\n" "\n" "If the item to be deleted is recurrent, you will be asked if you\n" "wish to suppress all of the item occurences or just the one you\n" "selected.\n" "\n" "If the general option 'confirm_delete' is set to 'YES', then you will\n" "be asked for confirmation before deleting the selected event.\n" "Do not forget to save the calendar data to retrieve the modifications\n" "next time you launch Calcurse." msgstr "" msgid "Add\n" msgstr "" #, c-format msgid "" "Add an item in either the ToDo or Appointment list, depending on which\n" "panel is selected when you press '%s'.\n" "\n" "To enter a new item in the TODO list, you will need first to enter the\n" "description of this new item. Then you will be asked to specify the todo\n" "priority. This priority is represented by a number going from 9 for the\n" "lowest priority, to 1 for the highest one. It is still possible to\n" "change the item priority afterwards, by using the '%s' and '%s' keys\n" "inside the todo panel.\n" "\n" "If the APPOINTMENT panel is selected while pressing '%s', you will be\n" "able to enter either a new appointment or a new all-day long event.\n" "To enter a new event, press [ENTER] instead of the item start time, and\n" "just fill in the event description.\n" "To enter a new appointment to be added in the APPOINTMENT list, you\n" "will need to enter successively the time at which the appointment\n" "begins, the appointment length (either by specifying the end time in\n" "[hh:mm] or the duration in [+hh:mm], [+xxdxxhxxm] or [+mm] format), \n" "and the description of the event.\n" "\n" "The day at which occurs the event or appointment is the day currently\n" "selected in the calendar, so you need to move to the desired day before\n" "pressing '%s'.\n" "\n" "Notes:\n" " o if an appointment lasts for such a long time that it continues\n" " on the next days, this event will be indicated on all the\n" " corresponding days, and the beginning or ending hour will be\n" " replaced by '..' if the event does not begin or end on the day.\n" " o if you only press [ENTER] at the APPOINTMENT or TODO event\n" " description prompt, without any description, no item will be\n" " added.\n" " o do not forget to save the calendar data to retrieve the new\n" " event next time you launch Calcurse." msgstr "" msgid "Copy and Paste\n" msgstr "" #, c-format msgid "" "Copy and paste the currently selected item. This is useful to quickly\n" "copy an item from one date to another. To do so, one must first\n" "highlight the item that needs to be copied, then press '%s' to copy.\n" "Once the new date is chosen in the calendar, the appointment panel must\n" "be selected and the '%s' key must be pressed to paste the item. The item\n" "will appear in the appointment panel, assigned to the newly selected\n" "date.\n" "\n" msgstr "" msgid "Edit Item\n" msgstr "" #, c-format msgid "" "Edit the item which is currently selected.\n" "Depending on the item type (appointment, event, or todo), and if it is\n" "repeated or not, you will be asked to choose one of the item properties\n" "to modify. An item property is one of the following: the start time, the\n" "end time, the description, or the item repetition.\n" "Once you have chosen the property you want to modify, you will be shown\n" "its actual value, and you will be able to change it as you like.\n" "\n" "Notes:\n" " o if you choose to edit the item repetition properties, you will\n" " be asked to re-enter all of the repetition characteristics\n" " (repetition type, frequence, and ending date). Moreover, the\n" " previous data concerning the deleted occurences will be lost.\n" " o do not forget to save the calendar data to retrieve the\n" " modified properties next time you launch Calcurse." msgstr "" msgid "EditNote\n" msgstr "" #, c-format msgid "" "Attach a note to any type of item, or edit an already existing note.\n" "This feature is useful if you do not have enough space to store all\n" "of your item description, or if you would like to add sub-tasks to an\n" "already existing todo item for example.\n" "Before pressing the '%s' key, you first need to highlight the item you\n" "want the note to be attached to. Then you will be driven to an\n" "external editor to edit your note. This editor is chosen the following\n" "way:\n" " o if the 'VISUAL' environment variable is set, then this will be\n" " the default editor to be called.\n" " o if 'VISUAL' is not set, then the 'EDITOR' environment variable\n" " will be used as the default editor.\n" " o if none of the above environment variables is set, then\n" " '/usr/bin/vi' will be used.\n" "\n" "Once the item note is edited and saved, quit your favorite editor.\n" "You will then go back to Calcurse, and the '>' sign will appear in front\n" "of the highlighted item, meaning there is a note attached to it." msgstr "" msgid "ViewNote\n" msgstr "" #, c-format msgid "" "View a note which was previously attached to an item (an item which\n" "owns a note has a '>' sign in front of it).\n" "This command only permits to view the note, not to edit it (to do so,\n" "use the 'EditNote' command, by pressing the '%s' key).\n" "Once you highlighted an item with a note attached to it, and the '%s' key\n" "was pressed, you will be driven to an external pager to view that note.\n" "The default pager is chosen the following way:\n" " o if the 'PAGER' environment variable is set, then this will be\n" " the default viewer to be called.\n" " o if the above environment variable is not set, then\n" " '/usr/bin/less' will be used.\n" "As for editing a note, quit the pager and you will be driven back to\n" "Calcurse." msgstr "" msgid "Priority\n" msgstr "" #, c-format msgid "" "Change the priority of the currently selected item in the ToDo list.\n" "Priorities are represented by the number appearing in front of the\n" "todo description. This number goes from 9 for the lowest priority to\n" "1 for the highest priority.\n" "Todo having higher priorities are placed first (at the top) inside the\n" "todo panel.\n" "\n" "If you want to raise the priority of a todo item, you need to press '%s'.\n" "In doing so, the number in front of this item will decrease, meaning its\n" "priority increases. The item position inside the todo panel may change,\n" "depending on the priority of the items above it.\n" "\n" "At the opposite, to lower a todo priority, press '%s'. The todo position\n" "may also change depending on the priority of the items below." msgstr "" msgid "Repeat\n" msgstr "" #, c-format msgid "" "Repeat an event or an appointment.\n" "You must first select the item to be repeated by moving inside the\n" "appointment panel. Then pressing '%s' will lead you to a set of three\n" "questions, with which you will be able to specify the repetition\n" "characteristics:\n" "\n" " o type: you can choose between a daily, weekly, monthly or\n" " yearly repetition by pressing 'D', 'W', 'M' or 'Y'\n" " respectively.\n" "\n" " o frequence: this indicates how often the item shall be repeated.\n" " For example, if you want to remember an anniversary,\n" " choose a 'yearly' repetition with a frequence of '1',\n" " which means it must be repeated every year. Another\n" " example: if you go to the restaurant every two days,\n" " choose a 'daily' repetition with a frequence of '2'.\n" "\n" " o ending date: this specifies when to stop repeating the selected\n" " event or appointment. To indicate an endless \n" " repetition, enter '0' and the item will be repeated\n" " forever.\n" "\n" "Notes:\n" " o repeated items are marked with an '*' inside the appointment\n" " panel, to be easily recognizable from non-repeated ones.\n" " o the 'Repeat' and 'Delete' command can be mixed to create\n" " complicated configurations, as it is possible to delete only\n" " one occurence of a repeated item." msgstr "" msgid "Flag Item\n" msgstr "" #, c-format msgid "" "Toggle an appointment's 'important' flag or a todo's 'completed' flag.\n" "If a todo is flagged as completed, its priority number will be replaced\n" "by an 'X' sign. Completed tasks will no longer appear in exported data\n" "or when using the '-t' command line flag (unless specifying '0' as the\n" "priority number, in which case only completed tasks will be shown).\n" "\n" "If an appointment is flagged as important, an exclamation mark appears\n" "in front of it, and you will be warned if time gets closed to the\n" "appointment start time.\n" "To customize the way one gets notified, the configuration submenu lets\n" "you choose the command launched to warn user of an upcoming appointment,\n" "and how long before it he gets notified." msgstr "" msgid "Config\n" msgstr "" #, c-format msgid "" "Open the configuration submenu.\n" "From this submenu, you can select between color, layout, notification\n" "and general options, and you can also configure your keybindings.\n" "\n" "The color submenu lets you choose the color theme.\n" "The layout submenu lets you choose the Calcurse screen layout, in other\n" "words where to place the three different panels on the screen.\n" "The general options submenu brings a screen with the different options\n" "which modifies the way Calcurse interacts with the user.\n" "The notify submenu allows you to change the notify-bar settings.\n" "The keys submenu lets you define your own key bindings.\n" "\n" "Do not forget to save the calendar data to retrieve your configuration\n" "next time you launch Calcurse." msgstr "" msgid "Generic keybindings\n" msgstr "" #, c-format msgid "" "Some of the keybindings apply whatever panel is selected. They are\n" "called generic keybinding.\n" "Here is the list of all the generic key bindings, together with their\n" "corresponding action:\n" "\n" " '%s' : Redraw function -> redraws calcurse panels, this is useful if\n" " you resize your terminal screen or when\n" " garbage appears inside the display\n" " '%s' : Add Appointment -> add an appointment or an event\n" " '%s' : Add ToDo -> add a todo\n" " '%s' : -1 Day -> move to previous day\n" " '%s' : +1 Day -> move to next day\n" " '%s' : -1 Week -> move to previous week\n" " '%s' : +1 Week -> move to next week\n" " '%s' : -1 Month -> move to previous month\n" " '%s' : +1 Month -> move to next month\n" " '%s' : -1 Year -> move to previous year\n" " '%s' : +1 Year -> move to next year\n" " '%s' : Goto today -> move to current day\n" "\n" "The '%s' and '%s' keys are used to scroll text upward or downward\n" "when inside specific screens such the help screens for example.\n" "They are also used when the calendar screen is selected to switch\n" "between the available views (monthly and weekly calendar views)." msgstr "" msgid "OtherCmd\n" msgstr "" #, c-format msgid "" "Switch between status bar help pages.\n" "Because the terminal screen is too narrow to display all of the\n" "available commands, you need to press '%s' to see the next set of\n" "commands together with their keybindings.\n" "Once the last status bar page is reached, pressing '%s' another time\n" "leads you back to the first page." msgstr "" msgid "Calcurse - text-based organizer" msgstr "" #, c-format msgid "" "\n" "Copyright (c) 2004-2013 calcurse Development Team\n" "All rights reserved.\n" "\n" "Redistribution and use in source and binary forms, with or without\n" "modification, are permitted provided that the following conditions\n" "are met:\n" "\n" "\t- Redistributions of source code must retain the above\n" "\t copyright notice, this list of conditions and the\n" "\t following disclaimer.\n" "\n" "\t- Redistributions in binary form must reproduce the above\n" "\t copyright notice, this list of conditions and the\n" "\t following disclaimer in the documentation and/or other\n" "\t materials provided with the distribution.\n" "\n" "\n" "Send your feedback or comments to : misc@calcurse.org\n" "Calcurse home page : http://calcurse.org" msgstr "" msgid "unknown ical type" msgstr "" msgid "recurrence frequence not found." msgstr "" msgid "recurrence frequence not recognized." msgstr "" msgid "recurrence rule malformed." msgstr "" msgid "recurrence exception dates malformed." msgstr "" msgid "could not get entire item description." msgstr "" msgid "description malformed." msgstr "" msgid "appointment has no start time." msgstr "" msgid "could not compute duration (no end time)." msgstr "" msgid "item has a negative duration." msgstr "" msgid "event date is not defined." msgstr "" msgid "item could not be identified." msgstr "" msgid "could not retrieve item summary." msgstr "" msgid "could not retrieve event start time." msgstr "" msgid "could not retrieve event end time." msgstr "" msgid "item duration malformed." msgstr "" msgid "The ical file seems to be malformed. The end of item was not found." msgstr "" msgid "item priority is not acceptable (must be between 1 and 9)." msgstr "" msgid "Warning: ical header malformed or wrong version number. Aborting..." msgstr "" msgid "Enter the new time ([hh:mm] or [hhmm]) : " msgstr "" msgid "Press [Enter] to continue" msgstr "" msgid "You entered an invalid time, should be [hh:mm] or [hhmm]" msgstr "" msgid "" "Enter new end time ([hh:mm], [hhmm]) or duration ([+hh:mm], [+xxxdxxhxxm] or " "[+mm]) : " msgstr "" msgid "Invalid time: start time must be before end time!" msgstr "" msgid "Enter the new item description:" msgstr "" msgid "Enter the new repetition type:" msgstr "" msgid "(d)aily" msgstr "" msgid "(w)eekly" msgstr "" msgid "(m)onthly" msgstr "" msgid "(y)early" msgstr "" #, c-format msgid "(currently using %s)" msgstr "" msgid "[dwmy]" msgstr "" msgid "The frequence you entered is not valid." msgstr "" msgid "The entered date is not valid." msgstr "" #, c-format msgid "Possible formats are [%s] or '0' for an endless repetition." msgstr "" msgid "Enter the new repetition frequence:" msgstr "" #, c-format msgid "Enter the new ending date: [%s] or '0'" msgstr "" msgid "Description" msgstr "" msgid "Repetition" msgstr "" msgid "Edit: " msgstr "" msgid "Start time" msgstr "" msgid "End time" msgstr "" msgid "Pipe item to external command:" msgstr "" msgid "" "Enter start time ([hh:mm] or [hhmm]), leave blank for an all-day event : " msgstr "" msgid "" "Enter end time ([hh:mm] or [hhmm]) or duration ([+hh:mm], [+xxxdxxhxxm] or " "[+mm]) : " msgstr "" msgid "Enter description :" msgstr "" msgid "You entered an invalid start time, should be [hh:mm] or [hhmm]" msgstr "" msgid "" "Invalid end time/duration, should be [hh:mm], [hhmm], [+hh:mm], " "[+xxxdxxhxxm] or [+mm]" msgstr "" msgid "Do you really want to delete this item ?" msgstr "" msgid "This item is recurrent. Delete (a)ll occurences or just this (o)ne ?" msgstr "" msgid "[ao]" msgstr "" msgid "This item has a note attached to it. Delete (i)tem or just its (n)ote ?" msgstr "" msgid "[in]" msgstr "" msgid "no such type" msgstr "" msgid "Enter the new ToDo item : " msgstr "" msgid "Enter the ToDo priority [1 (highest) - 9 (lowest)] :" msgstr "" msgid "Do you really want to delete this task ?" msgstr "" msgid "This item has a note attached to it. Delete (t)odo or just its (n)ote ?" msgstr "" msgid "[tn]" msgstr "" msgid "Enter the new ToDo description :" msgstr "" msgid "Enter the repetition type:" msgstr "" msgid "Enter the repetition frequence:" msgstr "" #, c-format msgid "Enter the ending date: [%s] or '0' for an endless repetition" msgstr "" #, c-format msgid "Possible formats are [%s] or '0' for an endless repetition" msgstr "" msgid "This item is already a repeated one." msgstr "" msgid "Press [ENTER] to continue." msgstr "" msgid "Sorry, the date you entered is older than the item start time." msgstr "" msgid "wrong item type" msgstr "" msgid "Saving..." msgstr "" msgid "Loading..." msgstr "" msgid "Exporting..." msgstr "" msgid "Internal error while displaying progress bar" msgstr "" msgid "Choose the file used to export calcurse data:" msgstr "" msgid "The file cannot be accessed, please enter another file name." msgstr "" #, c-format msgid "Failed to open \"%s\", - %s\n" msgstr "" msgid "Failed to build message\n" msgstr "" #, c-format msgid "Failed to print message \"%s\"\n" msgstr "" #, c-format msgid "Failed to close \"%s\" - %s\n" msgstr "" #, c-format msgid "%s does not exist, create it now [y or n] ? " msgstr "" msgid "aborting...\n" msgstr "" #, c-format msgid "%s successfully created\n" msgstr "" msgid "starting interactive mode...\n" msgstr "" msgid "Problems accessing data file ..." msgstr "" msgid "The data files were successfully saved" msgstr "" msgid "failed to open appointment file" msgstr "" msgid "syntax error in the item date" msgstr "" msgid "no event nor appointment found" msgstr "" msgid "syntax error in item time or duration" msgstr "" msgid "syntax error in item identifier" msgstr "" msgid "wrong format in the appointment or event" msgstr "" msgid "syntax error in item repetition" msgstr "" msgid "failed to open todo file" msgstr "" msgid "failed to open key file" msgstr "" msgid "" "\n" "Too many errors while reading configuration file!\n" "Please backup your keys file, remove it from directory, and launch calcurse " "again.\n" msgstr "" msgid "Could not read key label" msgstr "" msgid "Key label not recognized" msgstr "" #, c-format msgid "Error reading key: \"%s\"" msgstr "" #, c-format msgid "\"%s\" assigned multiple times!" msgstr "" msgid "There were some errors when loading keys file, see log file ?" msgstr "" msgid "Too many errors while reading keys file, aborting..." msgstr "" #, c-format msgid "FATAL ERROR: could not create %s: %s\n" msgstr "" msgid "Welcome to Calcurse. Missing data files were created." msgstr "" msgid "Data files found. Data will be loaded now." msgstr "" msgid "The data were successfully exported" msgstr "" msgid "unknown export type" msgstr "" msgid "wrong export mode" msgstr "" msgid "Enter the file name to import data from:" msgstr "" #, c-format msgid "Import process report: %04d lines read " msgstr "" msgid "unknown import type" msgstr "" msgid "FATAL ERROR: the input file cannot be accessed, Aborting..." msgstr "" msgid "FATAL ERROR: wrong import mode" msgstr "" #, c-format msgid "%d app" msgid_plural "%d apps" msgstr[0] "" msgstr[1] "" #, c-format msgid "%d event" msgid_plural "%d events" msgstr[0] "" msgstr[1] "" #, c-format msgid "%d todo" msgid_plural "%d todos" msgstr[0] "" msgstr[1] "" #, c-format msgid "%d skipped" msgstr "" msgid "Some items could not be imported, see log file ?" msgstr "" msgid "Warning: could not create temporary log file, Aborting..." msgstr "" msgid "Warning: could not open temporary log file, Aborting..." msgstr "" msgid "No log file to display!" msgstr "" #, c-format msgid "Warning: could not erase temporary log file %s, Aborting..." msgstr "" msgid "Invalid delay" msgstr "" #, c-format msgid "" "\n" "WARNING: it seems that another calcurse instance is already running.\n" "If this is not the case, please remove the following lock file: \n" "\"%s\"\n" "and restart calcurse.\n" msgstr "" msgid "" "#\n" "# Calcurse keys configuration file\n" "#\n" "# This file sets the keybindings used by Calcurse.\n" "# Lines beginning with \"#\" are comments, and ignored by Calcurse.\n" "# To assign a keybinding to an action, this file must contain a line\n" "# with the following syntax:\n" "#\n" "# ACTION KEY1 KEY2 ... KEYn\n" "#\n" "# Where ACTION is what will be performed when KEY1, KEY2, ..., or KEYn\n" "# will be pressed.\n" "#\n" "# To define bindings which use the CONTROL key, prefix the key with 'C-'.\n" "# The escape, space bar and horizontal Tab key can be specified using\n" "# the 'ESC', 'SPC' and 'TAB' keyword, respectively.\n" "# Arrow keys can also be specified with the UP, DWN, LFT, RGT keywords.\n" "# Last, Home and End keys can be assigned using 'KEY_HOME' and 'KEY_END'\n" "# keywords.\n" "#\n" "# A description of what each ACTION keyword is used for is available\n" "# from calcurse online configuration menu.\n" msgstr "" msgid "FATAL ERROR: could not create default keys file." msgstr "" msgid "FATAL ERROR: key value out of bounds" msgstr "" msgid "Cancel the ongoing action." msgstr "" msgid "Select the highlighted item." msgstr "" msgid "Print general information about calcurse's authors, license, etc." msgstr "" msgid "Display hints whenever some help screens are available." msgstr "" msgid "Exit from the current menu, or quit calcurse." msgstr "" msgid "Save calcurse data." msgstr "" msgid "Copy the item that is currently selected." msgstr "" msgid "Paste an item at the current position." msgstr "" msgid "Select next panel in calcurse main screen." msgstr "" msgid "Import data from an external file." msgstr "" msgid "Export data to a new file format." msgstr "" msgid "Select the day to go to." msgstr "" msgid "Show next possible actions inside status bar." msgstr "" msgid "Enter the configuration menu." msgstr "" msgid "Redraw calcurse's screen." msgstr "" msgid "Add an appointment, whichever panel is currently selected." msgstr "" msgid "Add a todo item, whichever panel is currently selected." msgstr "" msgid "" "Move to previous day in calendar, whichever panel is currently selected." msgstr "" msgid "Move to next day in calendar, whichever panel is currently selected." msgstr "" msgid "" "Move to previous week in calendar, whichever panel is currently selected" msgstr "" msgid "Move to next week in calendar, whichever panel is currently selected." msgstr "" msgid "" "Move to previous month in calendar, whichever panel is currently selected" msgstr "" msgid "Move to next month in calendar, whichever panel is currently selected." msgstr "" msgid "" "Move to previous year in calendar, whichever panel is currently selected" msgstr "" msgid "Move to next year in calendar, whichever panel is currently selected." msgstr "" msgid "Scroll window down (e.g. when displaying text inside a popup window)." msgstr "" msgid "Scroll window up (e.g. when displaying text inside a popup window)." msgstr "" msgid "Go to today, whichever panel is selected." msgstr "" msgid "Move to the right." msgstr "" msgid "Move to the left." msgstr "" msgid "Move down." msgstr "" msgid "Move up." msgstr "" msgid "" "Select the first day of the current week when inside the calendar panel." msgstr "" msgid "Select the last day of the current week when inside the calendar panel." msgstr "" msgid "Add an item to the currently selected panel." msgstr "" msgid "Delete the currently selected item." msgstr "" msgid "Edit the currently seleted item." msgstr "" msgid "Display the currently selected item inside a popup window." msgstr "" msgid "Flag the currently selected item as important." msgstr "" msgid "Repeat an item" msgstr "" msgid "Pipe the currently selected item to an external program." msgstr "" msgid "Attach (or edit if one exists) a note to the currently selected item" msgstr "" msgid "View the note attached to the currently selected item." msgstr "" msgid "Raise a task priority inside the todo panel." msgstr "" msgid "Lower a task priority inside the todo panel." msgstr "" msgid "FATAL ERROR: null file pointer." msgstr "" #, c-format msgid "When adding default key for \"%s\", \"%s\" was already assigned!" msgstr "" msgid "xmalloc: zero size" msgstr "" msgid "xmalloc: out of memory" msgstr "" msgid "xcalloc: zero size" msgstr "" msgid "xcalloc: overflow" msgstr "" msgid "xcalloc: out of memory" msgstr "" msgid "xrealloc: zero size" msgstr "" msgid "xrealloc: overflow" msgstr "" msgid "xrealloc: out of memory" msgstr "" msgid "xfree: null pointer" msgstr "" msgid "could not allocate memory to store block info" msgstr "" msgid "Block not found" msgstr "" #, c-format msgid "overflow at %s" msgstr "" #, c-format msgid "dbg_free: null pointer at %s" msgstr "" #, c-format msgid "block seems already freed at %s" msgstr "" #, c-format msgid "corrupt block header at %s" msgstr "" #, c-format msgid "corrupt block end at %s, (end = %u, should be %d)" msgstr "" msgid "---==== MEMORY BLOCK ====----------------\n" msgstr "" #, c-format msgid " id: %u\n" msgstr "" #, c-format msgid " size: %u\n" msgstr "" #, c-format msgid " allocated in: %s\n" msgstr "" msgid "-----------------------------------------\n" msgstr "" msgid "+------------------------------+\n" msgstr "" msgid "| calcurse memory usage report |\n" msgstr "" #, c-format msgid " number of calls: %u\n" msgstr "" #, c-format msgid " allocated blocks: %u\n" msgstr "" #, c-format msgid " unfreed blocks: %u\n" msgstr "" #, c-format msgid "Warning: could not open %s, Aborting..." msgstr "" msgid "error while launching command: could not fork" msgstr "" msgid "error while launching command" msgstr "" msgid "(if set to YES, notify-bar will be displayed)" msgstr "" msgid "(Format of the date to be displayed inside notify-bar)" msgstr "" msgid "(Format of the time to be displayed inside notify-bar)" msgstr "" msgid "" "(Warn user if an appointment is within next 'notify-bar_warning' seconds)" msgstr "" msgid "(Command used to notify user of an upcoming appointment)" msgstr "" msgid "(Notify all appointments instead of flagged ones only)" msgstr "" msgid "(Run in background to get notifications after exiting)" msgstr "" msgid "(Log activity when running in background)" msgstr "" msgid "Enter the time format (see 'man 3 strftime' for possible formats) " msgstr "" msgid "Enter the number of seconds (0 not to be warned before an appointment)" msgstr "" msgid "Enter the notification command " msgstr "" msgid "notification options" msgstr "" msgid "incoherent repetition type" msgstr "" msgid "unknown repetition type" msgstr "" msgid "unknown character" msgstr "" msgid "date error in event" msgstr "" msgid "event not found" msgstr "" msgid "appointment not found" msgstr "" msgid "syntax error in item date" msgstr "" #, c-format msgid "Could not remove calcurse lock file: %s\n" msgstr "" #, c-format msgid "Error setting signal #%d : %s\n" msgstr "" msgid "no note attached" msgstr "" msgid "no such todo" msgstr "" msgid "todo not found" msgstr "" msgid "/!\\ INTERNAL ERROR /!\\" msgstr "" msgid "Please report the following bug:" msgstr "" msgid "[yn]" msgstr "" msgid "Press any key to continue..." msgstr "" msgid "failure in mktime" msgstr "" msgid "error in mktime" msgstr "" msgid "could not convert string" msgstr "" msgid "out of range" msgstr "" msgid "yes" msgstr "" msgid "no" msgstr "" msgid "option not defined" msgstr "" #, c-format msgid "temporary file \"%s\" could not be created" msgstr "" #, c-format msgid "Error when closing file at %s" msgstr "" msgid "No note file found\n" msgstr "" msgid "January" msgstr "" msgid "February" msgstr "" msgid "March" msgstr "" msgid "April" msgstr "" msgid "May" msgstr "" msgid "June" msgstr "" msgid "July" msgstr "" msgid "August" msgstr "" msgid "September" msgstr "" msgid "October" msgstr "" msgid "November" msgstr "" msgid "December" msgstr "" msgid "Sun" msgstr "" msgid "Mon" msgstr "" msgid "Tue" msgstr "" msgid "Wed" msgstr "" msgid "Thu" msgstr "" msgid "Fri" msgstr "" msgid "Sat" msgstr "" msgid "mm/dd/yyyy" msgstr "" msgid "dd/mm/yyyy" msgstr "" msgid "yyyy/mm/dd" msgstr "" msgid "yyyy-mm-dd" msgstr "" msgid "Calendar" msgstr "" msgid "Appointments" msgstr "" msgid "ToDo" msgstr "" msgid "Quit" msgstr "" msgid "Save" msgstr "" msgid "Copy" msgstr "" msgid "Paste" msgstr "" msgid "Chg Win" msgstr "" msgid "Import" msgstr "" msgid "Export" msgstr "" msgid "Go to" msgstr "" msgid "Config" msgstr "" msgid "Redraw" msgstr "" msgid "Add Appt" msgstr "" msgid "Add Todo" msgstr "" msgid "-1 Day" msgstr "" msgid "+1 Day" msgstr "" msgid "-1 Week" msgstr "" msgid "+1 Week" msgstr "" msgid "-1 Month" msgstr "" msgid "+1 Month" msgstr "" msgid "-1 Year" msgstr "" msgid "+1 Year" msgstr "" msgid "Today" msgstr "" msgid "Nxt View" msgstr "" msgid "Prv View" msgstr "" msgid "beg Week" msgstr "" msgid "end Week" msgstr "" msgid "Add Item" msgstr "" msgid "Del Item" msgstr "" msgid "Edit Itm" msgstr "" msgid "View" msgstr "" msgid "Pipe" msgstr "" msgid "Flag Itm" msgstr "" msgid "Repeat" msgstr "" msgid "EditNote" msgstr "" msgid "ViewNote" msgstr "" msgid "Prio.+" msgstr "" msgid "Prio.-" msgstr "" msgid "OtherCmd" msgstr "" msgid "unknown panel" msgstr "" msgid "Usage: calcurse-upgrade [-h|-v|--config ]" msgstr "" msgid "unrecognized option:" msgstr "" msgid "Configuration file not found:" msgstr "" msgid "Pre-3.0.0 configuration file format detected..." msgstr "" msgid "Create temporary backup of the configuration file..." msgstr "" msgid "Old backup file found:" msgstr "" msgid "" "\n" "If a previous conversion did not complete, please try to restore your\n" "configuration from this backup and then remove the backup file." msgstr "" msgid "done" msgstr "" msgid "Old temporary file found:" msgstr "" msgid "" "\n" "If a previous conversion did not complete, please try to remove this file " "and\n" "start over with a backup of your old configuration file." msgstr "" msgid "Upgrade configuration directives..." msgstr "" msgid "Remove temporary backup..." msgstr "" calcurse-3.1.4/po/stamp-po0000644000175000001440000000001212105444504012326 00000000000000timestamp calcurse-3.1.4/po/de.gmo0000644000175000001440000023430212105444503011751 00000000000000 (!(r*K,+x+,,*55T6h6:|666667X.7:: ::,::8 ;<D;6;6;);)<6C<4z<6<I<0=E=DM=5=B=9 >GE>->@> >)?60?g?|??!?????*?*?&@-@6@>@F@]@b@k@t@7}@:@@,GG G G H4H+EH/qHH'HDH%IL MM#MCM cMqM0zMMMMP-PPPPPQ!Q1Q)RS'S%GS3mSSS(S&ST#7T#[T4T*TTTTTHU#JW nWzW7W:W(X()XRXoXtX XX XPX\!\ *\4\*=\h\T|\V\I(]4r]]B]^- ^DN^<^(^ ^_&5_\_#|__)__F `P`p`B```a#aaa-aaaa! d"/d Rd%_d0d$dd;d7eVeoeeee ee.e fff&f;f)Afkfqfvf}f"f+f'i,i)j GjVUj1jjjvjblglpllll l,l)l>l;mAmEmIm Pm ^pDipFpEpE;qHqIqHrH]rrrrXr-v6v?vWvkvrv{vvvvvDyy yy&yz zz8/zhz @{*a{:{;{X|/\|||||$|}A&}h}o} v} }}},}}}}~~p'~ ǃۃ ECE*LwHنG >-Hv5~0Lt>  8,&1#XN|ː<''CO=CёGG]$Dʓ=FM4g(ŗɗۗ#ޗ/٘ ݛ6ҝ ۝9;'[7C5<9v~>>Š8=BINSX ]jء+ ;G$Y1~-ˢ)#&<"c$ ̣ 0;RW`p-!ܤ)!Ik%٥6:T'ۦ 0A U bo  %Χ$9<Tب%>(\  ǩ ٩ ! 3A Yf,{( /CZm !ƫz$G 2ڻ%9>Oѽ#8Rc0z@=3B:v&?5<NGF 1?<<|RA UN<E ':3;n ! *%*P{ 87QO7 8'3,[ %R" -)Gq?& 4 #%.F'$L/g/0!&'A.i+"6-<js | ' GT5f5.-+/[-b (T ) 5 B P8\chay854j@R4#J(n&% -9 gD(+ =^#{ -7.? n z*m* .K>L#B%$!=_' 4  159ox ~ *$h7%gCkZ_t285RX\`/gJLL@KHJ"JmI %0 %(Ndu~7  '%1 W d rD $5=;gy02M'm+H! (+4`h/p $           $ >  :JGI5.=I> 6 ',4;aWd5 g Gt 0'K $lU+D7XEB=9WI@=Z ^hqhw7!9"R"V"o")t""4####&-( )):)>R)*):)D)<*8@*Ky****]+W,s,x,,,,, ,,,, ,&,- 8-/Y- --&-7-.4&.+[.%.(.*.,/2./a/x/#// /// /0(0)B0@l0(0#00!1(41-]1#111 1(2")2L2 k25222(23 (333F3"K3n3333"3 33 4*4C4&T4 {444@45(5F5]5!}5%55056 16<6 S6^6r666666677017b71x777778828D8`8t88 8 8!8& epoS~(.d\|z{kTT4jHKLK&{sk oj5Y+};bhItux_ !@J "2B)w8p?s@<6v ,"6VUGZf3*DSL3gAmY*va$[?Bq%];dNc.')bER,^[ W/5gUCe<zi#ORNA]cHyD y7/}P I_CXGXa+7J'Ml:i|0rP~VwE# !F rFW1lm>2-9%=`0=O:-fqt>^$ x(Q`nZnh4\9M1Qu8  Copyright (c) 2004-2013 calcurse Development Team All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Send your feedback or comments to : misc@calcurse.org Calcurse home page : http://calcurse.org Copyright (c) 2004-2013 calcurse Development Team. This is free software; see the source for copying conditions. For more information, type '?' from within Calcurse, or read the manpage. If a previous conversion did not complete, please try to remove this file and start over with a backup of your old configuration file. If a previous conversion did not complete, please try to restore your configuration from this backup and then remove the backup file. Miscellaneous: -h, --help print this help and exit. -v, --version print calcurse version and exit. --status display the status of running instances of calcurse. --read-only Don't save configuration nor appointments/todos. Use with care. Files: -c , --calendar specify the calendar to use (has precedence over '-D'). -D , --directory specify the data directory to use. If not specified, the default directory is ~/.calcurse Non-interactive: -a, --appointment print events and appointments for current day and exit. -d , --day print events and appointments for or upcoming days and exit. To specify both a starting date and a range, use the '--startday' and the '--range' option. -g, --gc run the garbage collector for note files and exit. -i , --import import the icalendar data contained in . -n, --next print next appointment within upcoming 24 hours and exit. Also given is the remaining time before this next appointment. -r[num], --range[=num] print events and appointments for the [num] number of days and exit. If no [num] is given, a range of 1 day is considered. -s[date], --startday[=date] print events and appointments from [date] and exit. If no [date] is given, the current day is considered. -S, --search= search for the given regular expression within events, appointments, and todos description. -t[num], --todo[=num] print todo list and exit. If the optional number [num] is given, then only todos having a priority equal to [num] will be returned. The priority number must be between 1 (highest) and 9 (lowest). It is also possible to specify '0' for the priority, in which case only completed tasks will be shown. -x[format], --export[=format] export user data to the specified format. Events, appointments and todos are converted and echoed to stdout. Two possible formats are available: 'ical' and 'pcal'. If the optional argument format is not given, ical format is selected by default. note: redirect standard output to export data to a file, by issuing a command such as: calcurse --export > calcurse.dat Too many errors while reading configuration file! Please backup your keys file, remove it from directory, and launch calcurse again. WARNING: it seems that another calcurse instance is already running. If this is not the case, please remove the following lock file: "%s" and restart calcurse. id: %u size: %u Welcome to Calcurse. This is the main help screen. unfreed blocks: %u allocated in: %s number of calls: %u allocated blocks: %u "%s" assigned multiple times!# # Calcurse keys configuration file # # This file sets the keybindings used by Calcurse. # Lines beginning with "#" are comments, and ignored by Calcurse. # To assign a keybinding to an action, this file must contain a line # with the following syntax: # # ACTION KEY1 KEY2 ... KEYn # # Where ACTION is what will be performed when KEY1, KEY2, ..., or KEYn # will be pressed. # # To define bindings which use the CONTROL key, prefix the key with 'C-'. # The escape, space bar and horizontal Tab key can be specified using # the 'ESC', 'SPC' and 'TAB' keyword, respectively. # Arrow keys can also be specified with the UP, DWN, LFT, RGT keywords. # Last, Home and End keys can be assigned using 'KEY_HOME' and 'KEY_END' # keywords. # # A description of what each ACTION keyword is used for is available # from calcurse online configuration menu. %d app%d apps%d event%d events%d skipped%d todo%d todos%s does not exist, create it now [y or n] ? %s successfully created (Command used to notify user of an upcoming appointment)(Format of the date to be displayed in non-interactive mode)(Format of the date to be displayed inside notify-bar)(Format of the time to be displayed inside notify-bar)(Format to be used when entering a date: (Log activity when running in background)(Notify all appointments instead of flagged ones only)(Press '^P' or '^N' to move up or down, 'Q' to quit)(Run in background to get notifications after exiting)(Warn user if an appointment is within next 'notify-bar_warning' seconds)(currently using %s)(d)aily(if not null, automatically save data every 'periodic_save' minutes)(if set to YES, automatic save is done when quitting)(if set to YES, confirmation is required before deleting an event)(if set to YES, confirmation is required before quitting)(if set to YES, messages about loaded and saved data will be displayed)(if set to YES, notify-bar will be displayed)(if set to YES, progress bar will be displayed when saving data)(m)onthly(run the garbage collector when quitting)(specifies the first day of week in the calendar view)(terminal's default)(w)eekly(y)early+------------------------------+ +1 Day+1 Month+1 Week+1 Year----------------------------------------- ---==== MEMORY BLOCK ====---------------- -1 Day-1 Month-1 Week-1 Year/!\ INTERNAL ERROR /!\Add Add ApptAdd ItemAdd TodoAdd a todo item, whichever panel is currently selected.Add an appointment, whichever panel is currently selected.Add an item in either the ToDo or Appointment list, depending on which panel is selected when you press '%s'. To enter a new item in the TODO list, you will need first to enter the description of this new item. Then you will be asked to specify the todo priority. This priority is represented by a number going from 9 for the lowest priority, to 1 for the highest one. It is still possible to change the item priority afterwards, by using the '%s' and '%s' keys inside the todo panel. If the APPOINTMENT panel is selected while pressing '%s', you will be able to enter either a new appointment or a new all-day long event. To enter a new event, press [ENTER] instead of the item start time, and just fill in the event description. To enter a new appointment to be added in the APPOINTMENT list, you will need to enter successively the time at which the appointment begins, the appointment length (either by specifying the end time in [hh:mm] or the duration in [+hh:mm], [+xxdxxhxxm] or [+mm] format), and the description of the event. The day at which occurs the event or appointment is the day currently selected in the calendar, so you need to move to the desired day before pressing '%s'. Notes: o if an appointment lasts for such a long time that it continues on the next days, this event will be indicated on all the corresponding days, and the beginning or ending hour will be replaced by '..' if the event does not begin or end on the day. o if you only press [ENTER] at the APPOINTMENT or TODO event description prompt, without any description, no item will be added. o do not forget to save the calendar data to retrieve the new event next time you launch Calcurse.Add an item to the currently selected panel.Add keyAppointment :AppointmentsAprilArgument for '-x' should be either 'ical' or 'pcal' Argument format for -r and --range is: 'n' Argument format for -s and --startday is: '%s' Argument is not valid Argument to the '-d' flag is not valid Attach (or edit if one exists) a note to the currently selected itemAttach a note to any type of item, or edit an already existing note. This feature is useful if you do not have enough space to store all of your item description, or if you would like to add sub-tasks to an already existing todo item for example. Before pressing the '%s' key, you first need to highlight the item you want the note to be attached to. Then you will be driven to an external editor to edit your note. This editor is chosen the following way: o if the 'VISUAL' environment variable is set, then this will be the default editor to be called. o if 'VISUAL' is not set, then the 'EDITOR' environment variable will be used as the default editor. o if none of the above environment variables is set, then '/usr/bin/vi' will be used. Once the item note is edited and saved, quit your favorite editor. You will then go back to Calcurse, and the '>' sign will appear in front of the highlighted item, meaning there is a note attached to it.AugustBackgroundBlock not foundCalcurse %s - text-based organizer Calcurse - text-based organizerCalcurse helpCalendarCan not handle more than one regular expression.Cancel the ongoing action.Cannot daemonize, aborting Change the priority of the currently selected item in the ToDo list. Priorities are represented by the number appearing in front of the todo description. This number goes from 9 for the lowest priority to 1 for the highest priority. Todo having higher priorities are placed first (at the top) inside the todo panel. If you want to raise the priority of a todo item, you need to press '%s'. In doing so, the number in front of this item will decrease, meaning its priority increases. The item position inside the todo panel may change, depending on the priority of the items above it. At the opposite, to lower a todo priority, press '%s'. The todo position may also change depending on the priority of the items below.Chg WinChoose the file used to export calcurse data:ColorConfigConfig Configuration file not found:CopyCopy and Paste Copy and paste the currently selected item. This is useful to quickly copy an item from one date to another. To do so, one must first highlight the item that needs to be copied, then press '%s' to copy. Once the new date is chosen in the calendar, the appointment panel must be selected and the '%s' key must be pressed to paste the item. The item will appear in the appointment panel, assigned to the newly selected date. Copy the item that is currently selected.Could not access "%s": %s Could not change working directory: %s Could not compile regular expression.Could not detach from the controlling terminal: %s Could not fork: %s Could not read key labelCould not remove calcurse lock file: %s Could not remove daemon lock file: %s Could not set lock file Could not stop calcurse daemon: %s Could not stop daemon properly: %s Create temporary backup of the configuration file...Data files found. Data will be loaded now.DecemberDel ItemDel keyDelete Delete an element in the ToDo or Appointment list. Depending on which panel is selected when you press the delete key, the hilighted item of either the ToDo or Appointment list will be removed from this list. If the item to be deleted is recurrent, you will be asked if you wish to suppress all of the item occurences or just the one you selected. If the general option 'confirm_delete' is set to 'YES', then you will be asked for confirmation before deleting the selected event. Do not forget to save the calendar data to retrieve the modifications next time you launch Calcurse.Delete the currently selected item.DescriptionDisplacement keys Display hints whenever some help screens are available.Display the currently selected item inside a popup window.Do you really want to delete this item ?Do you really want to delete this task ?Do you really want to quit ?DownERROR setting first day of weekEdit Item Edit ItmEdit the currently seleted item.Edit the item which is currently selected. Depending on the item type (appointment, event, or todo), and if it is repeated or not, you will be asked to choose one of the item properties to modify. An item property is one of the following: the start time, the end time, the description, or the item repetition. Once you have chosen the property you want to modify, you will be shown its actual value, and you will be able to change it as you like. Notes: o if you choose to edit the item repetition properties, you will be asked to re-enter all of the repetition characteristics (repetition type, frequence, and ending date). Moreover, the previous data concerning the deleted occurences will be lost. o do not forget to save the calendar data to retrieve the modified properties next time you launch Calcurse.Edit: EditNoteEditNote End timeEnter an option number to change its valueEnter description :Enter end time ([hh:mm] or [hhmm]) or duration ([+hh:mm], [+xxxdxxhxxm] or [+mm]) : Enter new end time ([hh:mm], [hhmm]) or duration ([+hh:mm], [+xxxdxxhxxm] or [+mm]) : Enter start time ([hh:mm] or [hhmm]), leave blank for an all-day event : Enter the ToDo priority [1 (highest) - 9 (lowest)] :Enter the configuration menu.Enter the date format (see 'man 3 strftime' for possible formats) Enter the date format: Enter the day to go to [ENTER for today] : %sEnter the delay, in minutes, between automatic saves (0 to disable) Enter the ending date: [%s] or '0' for an endless repetitionEnter the file name to import data from:Enter the new ToDo description :Enter the new ToDo item : Enter the new ending date: [%s] or '0'Enter the new item description:Enter the new repetition frequence:Enter the new repetition type:Enter the new time ([hh:mm] or [hhmm]) : Enter the notification command Enter the number of seconds (0 not to be warned before an appointment)Enter the repetition frequence:Enter the repetition type:Enter the time format (see 'man 3 strftime' for possible formats) Error reading key: "%s"Error setting signal #%d : %s Error when closing file at %sError: both calcurse (pid: %d) and its daemon (pid: %d) seem to be running at the same time! Please check manually and restart calcurse. Event :ExitExit from the current menu, or quit calcurse.ExportExport Export calcurse data (appointments, events and todos). This leads to the export submenu, from which you can choose between two different export formats: 'ical' and 'pcal'. Choosing one of those formats lets you export calcurse data to icalendar or pcal format. You first need to specify the file to which the data will be exported. By default, this file is: ~/calcurse.ics for an ical export, and: ~/calcurse.txt for a pcal export. Calcurse data are exported in the following order: events, appointments, todos. Export data to a new file format.Export to (i)cal or (p)cal format?Exporting...FATAL ERROR: could not create %s: %s FATAL ERROR: could not create default keys file.FATAL ERROR: key value out of boundsFATAL ERROR: null file pointer.FATAL ERROR: the input file cannot be accessed, Aborting...FATAL ERROR: wrong import modeFailed to build message Failed to close "%s" - %s Failed to open "%s", - %s Failed to print message "%s" FebruaryFlag Item Flag ItmFlag the currently selected item as important.ForegroundFriGeneralGeneric keybindings Go toGo to today, whichever panel is selected.Goto HelpImportImport Import data from an external file.Import data from an icalendar file. You will be asked to enter the file name from which to load ical items. At the end of the import process, and if the general option 'system_dialogs' is set to 'yes', a report indicating how many items were imported is shown. This report contains the total number of lines read, the number of appointments, events and todo items which were successfully imported, together with the number of items for which problems occured and that were skipped, if any. If one or more items could not be imported, one has the possibility to read the import process report in order to identify which problems occured. In this report is shown one item per line, with the line in the input stream at which this item begins, together with the description of why the item could not be imported. Import process report: %04d lines read Internal error while displaying progress barInternal error: line too longInvalid delayInvalid end time/duration, should be [hh:mm], [hhmm], [+hh:mm], [+xxxdxxhxxm] or [+mm]Invalid time: start time must be before end time!JanuaryJulyJump to a specific day in the calendar. Using this command, you do not need to travel to that day using the displacement keys inside the calendar panel. If you hit [ENTER] without specifying any date, Calcurse checks the system current date and you will be taken to that date. Notice that pressing '%s', whatever panel is selected, will select current day in the calendar.JuneKey infoKey label not recognizedKeysLayoutLeftLoading...Lower a task priority inside the todo panel.Mail bug reports to . Mail feature requests and suggestions to . MarchMayMonMondayMove around inside calcurse screens. The following scheme summarizes how to get around: move up move to previous week %s move left ^ move to previous day | %s <-- + --> %s | move right v move to next day %s move to next week move down Moreover, while inside the calendar panel, the '%s' key moves to the first day of the week, and the '%s' key selects the last day of the week. Move down.Move to next day in calendar, whichever panel is currently selected.Move to next month in calendar, whichever panel is currently selected.Move to next week in calendar, whichever panel is currently selected.Move to next year in calendar, whichever panel is currently selected.Move to previous day in calendar, whichever panel is currently selected.Move to previous month in calendar, whichever panel is currently selectedMove to previous week in calendar, whichever panel is currently selectedMove to previous year in calendar, whichever panel is currently selectedMove to the left.Move to the right.Move up.Moving around: Press '%s' or '%s' to scroll text upward or downward inside help screens, if necessary. Exit help: When finished, press '%s' to exit help and go back to the main Calcurse screen. Help topic: At the bottom of this screen you can see a panel with different fields, represented by a letter and a short title. This panel contains all the available actions you can perform when using Calcurse. By pressing one of the letters appearing in this panel, you will be shown a short description of the corresponding action. At the top right side of the description screen are indicated the user-defined key bindings that lead to the action. Credits: Press '%s' for credits.Next KeyNo colorNo log file to display!No note file found NotifyNovemberNxt ViewOctoberOld backup file found:Old temporary file found:Open the configuration submenu. From this submenu, you can select between color, layout, notification and general options, and you can also configure your keybindings. The color submenu lets you choose the color theme. The layout submenu lets you choose the Calcurse screen layout, in other words where to place the three different panels on the screen. The general options submenu brings a screen with the different options which modifies the way Calcurse interacts with the user. The notify submenu allows you to change the notify-bar settings. The keys submenu lets you define your own key bindings. Do not forget to save the calendar data to retrieve your configuration next time you launch Calcurse.Option '-S' must be used with either '-d', '-r', '-s', '-a' or '-t' OtherCmdOtherCmd PastePaste an item at the current position.PipePipe Pipe item to external command:Pipe the currently selected item to an external program.Pipe the selected item to an external program. Press the '%s' key to pipe the currently selected appointment or todo entry to an external program. You will be driven back to calcurse as soon as the program exits. Please report the following bug:Possible argument format are: '%s' or 'n' Possible formats are [%s] or '0' for an endless repetitionPossible formats are [%s] or '0' for an endless repetition.Pre-3.0.0 configuration file format detected, please upgrade running `calcurse-upgrade`.Pre-3.0.0 configuration file format detected...Press [ENTER] to continuePress [ENTER] to continue.Press [Enter] to continuePress any key to continue...Press the key you want to assign to:Prev KeyPrint general information about calcurse's authors, license, etc.Prio.+Prio.-Priority Problems accessing data file ...Prv ViewQuitRaise a task priority inside the todo panel.RedrawRedraw calcurse's screen.Remove temporary backup...RepeatRepeat Repeat an event or an appointment. You must first select the item to be repeated by moving inside the appointment panel. Then pressing '%s' will lead you to a set of three questions, with which you will be able to specify the repetition characteristics: o type: you can choose between a daily, weekly, monthly or yearly repetition by pressing 'D', 'W', 'M' or 'Y' respectively. o frequence: this indicates how often the item shall be repeated. For example, if you want to remember an anniversary, choose a 'yearly' repetition with a frequence of '1', which means it must be repeated every year. Another example: if you go to the restaurant every two days, choose a 'daily' repetition with a frequence of '2'. o ending date: this specifies when to stop repeating the selected event or appointment. To indicate an endless repetition, enter '0' and the item will be repeated forever. Notes: o repeated items are marked with an '*' inside the appointment panel, to be easily recognizable from non-repeated ones. o the 'Repeat' and 'Delete' command can be mixed to create complicated configurations, as it is possible to delete only one occurence of a repeated item.Repeat an itemRepetitionRightSatSaveSave Save calcurse data.Save calcurse data. Data are splitted into four different files which contain : / ~/.calcurse/conf -> user configuration | (layout, color, general options) | ~/.calcurse/apts -> data related to the appointments | ~/.calcurse/todo -> data related to the todo list \ ~/.calcurse/keys -> user-defined key bindings In the config menu, you can choose to save the Calcurse data automatically before quitting.Saving...Scroll window down (e.g. when displaying text inside a popup window).Scroll window up (e.g. when displaying text inside a popup window).SelectSelect next panel in calcurse main screen.Select the day to go to.Select the first day of the current week when inside the calendar panel.Select the highlighted item.Select the last day of the current week when inside the calendar panel.SeptemberShow next possible actions inside status bar.SidebarSome actions do not have any associated key bindings!Some items could not be imported, see log file ?Some of the keybindings apply whatever panel is selected. They are called generic keybinding. Here is the list of all the generic key bindings, together with their corresponding action: '%s' : Redraw function -> redraws calcurse panels, this is useful if you resize your terminal screen or when garbage appears inside the display '%s' : Add Appointment -> add an appointment or an event '%s' : Add ToDo -> add a todo '%s' : -1 Day -> move to previous day '%s' : +1 Day -> move to next day '%s' : -1 Week -> move to previous week '%s' : +1 Week -> move to next week '%s' : -1 Month -> move to previous month '%s' : +1 Month -> move to next month '%s' : -1 Year -> move to previous year '%s' : +1 Year -> move to next year '%s' : Goto today -> move to current day The '%s' and '%s' keys are used to scroll text upward or downward when inside specific screens such the help screens for example. They are also used when the calendar screen is selected to switch between the available views (monthly and weekly calendar views).Sorry, colors are not supported by your terminal (Press [ENTER] to continue)Sorry, the date you entered is older than the item start time.Start timeSunSundaySwitch between panels. The panel currently in use has its border colorized. Some actions are possible only if the right panel is selected. For example, if you want to add a task in the TODO list, you need first to press the '%s' key to get the TODO panel selected. Then you can press '%s' to add your item. Notice that at the bottom of the screen the list of possible actions change while pressing '%s', so you always know what action can be performed on the selected panel.Switch between status bar help pages. Because the terminal screen is too narrow to display all of the available commands, you need to press '%s' to see the next set of commands together with their keybindings. Once the last status bar page is reached, pressing '%s' another time leads you back to the first page.Tab The data files were successfully savedThe data were successfully exportedThe day you entered is not valid (should be between 01/01/1902 and 12/31/2037)The entered date is not valid.The file cannot be accessed, please enter another file name.The frequence you entered is not valid.The ical file seems to be malformed. The end of item was not found.There were some errors when loading keys file, see log file ?This configuration screen is used to change the width of the side bar. The side bar is the part of the screen which contains two panels: the calendar and, depending on the chosen layout, either the todo list or the appointment list. The side bar width can be up to 50% of the total screen width, but can't be smaller than This item has a note attached to it. Delete (i)tem or just its (n)ote ?This item has a note attached to it. Delete (t)odo or just its (n)ote ?This item is already a repeated one.This item is recurrent. Delete (a)ll occurences or just this (o)ne ?This key is already in use for %s, please choose another one.This key is not yet recognized by calcurse, please choose another one.ThuTo do :ToDoTodayToggle an appointment's 'important' flag or a todo's 'completed' flag. If a todo is flagged as completed, its priority number will be replaced by an 'X' sign. Completed tasks will no longer appear in exported data or when using the '-t' command line flag (unless specifying '0' as the priority number, in which case only completed tasks will be shown). If an appointment is flagged as important, an exclamation mark appears in front of it, and you will be warned if time gets closed to the appointment start time. To customize the way one gets notified, the configuration submenu lets you choose the command launched to warn user of an upcoming appointment, and how long before it he gets notified.Too many errors while reading keys file, aborting...Try 'calcurse -h' for more information. TueUndefined option!UpUpgrade configuration directives...Usage: calcurse [-g|-h|-v] [-an] [-t[num]] [-i] [-x[format]] [-d |] [-s[date]] [-r[range]] [-c] [-D] [-S] [--status] [--read-only] Usage: calcurse-upgrade [-h|-v|--config ]ViewView View a note which was previously attached to an item (an item which owns a note has a '>' sign in front of it). This command only permits to view the note, not to edit it (to do so, use the 'EditNote' command, by pressing the '%s' key). Once you highlighted an item with a note attached to it, and the '%s' key was pressed, you will be driven to an external pager to view that note. The default pager is chosen the following way: o if the 'PAGER' environment variable is set, then this will be the default viewer to be called. o if the above environment variable is not set, then '/usr/bin/less' will be used. As for editing a note, quit the pager and you will be driven back to Calcurse.View the item you select in either the Todo or Appointment panel. This is usefull when an event description is longer than the available space to display it. If that is the case, the description will be shortened and its end replaced by '...'. To be able to read the entire description, just press '%s' and a popup window will appear, containing the whole event. Press any key to close the popup window and go back to the main Calcurse screen.View the note attached to the currently selected item.ViewNoteViewNote Warning: could not create temporary log file, Aborting...Warning: could not erase temporary log file %s, Aborting...Warning: could not open %s, Aborting...Warning: could not open temporary log file, Aborting...Warning: ical header malformed or wrong version number. Aborting...WedWelcome to Calcurse. Missing data files were created.When adding default key for "%s", "%s" was already assigned!Width +Width -With this configuration menu, one can choose where panels will be displayed inside calcurse screen. It is possible to choose between eight different configurations. In the configuration representations, letters correspond to: 'c' -> calendar panel 'a' -> appointment panel 't' -> todo panel You entered an invalid start time, should be [hh:mm] or [hhmm]You entered an invalid time, should be [hh:mm] or [hhmm][ao][dwmy][in][ip][tn][yn]aborting... appointment has no start time.appointment not foundawakened at %s beg Weekblock seems already freed at %scalcurse is not running calcurse is running (pid %d) calcurse is running in background (pid %d) color themecompleted tasks: configuration variable unknown: "%s"corrupt block end at %s, (end = %u, should be %d)corrupt block header at %scould not allocate memory to store block infocould not compute duration (no end time).could not convert stringcould not get entire item description.could not retrieve event end time.could not retrieve event start time.could not retrieve item summary.date error in appointmentdate error in eventdate error in the event dbg_free: null pointer at %sdd/mm/yyyydescription malformed.doneend Weekerror in mktimeerror loading next appointment error while launching commanderror while launching command: could not forkerror while sending notification event date is not defined.event not foundfailed to open appointment filefailed to open configuration filefailed to open key filefailed to open todo filefailure in mktimegeneral optionsincoherent repetition typeinvalid configuration directive: "%s"item could not be identified.item duration malformed.item has a negative duration.item priority is not acceptable (must be between 1 and 9).key bindings: %skeys configurationlaunching notification at %s for: "%s" layout configurationmm/dd/yyyynext appointment: nono event nor appointment foundno note attachedno such appointmentno such todono such typenotification optionsnull pointeroption not definedout of memoryout of rangeoverflow at %srecurrence exception dates malformed.recurrence frequence not found.recurrence frequence not recognized.recurrence rule malformed.sleeping at %s for %d second sleeping at %s for %d seconds started at %s starting interactive mode... syntax error in item datesyntax error in item identifiersyntax error in item repetitionsyntax error in item time or durationsyntax error in the item datetemporary file "%s" could not be createdterminated at %s with signal %d to do: todo not foundundefinedunknown characterunknown colorunknown export typeunknown ical typeunknown import typeunknown item typeunknown panelunknown repetition typeunknwon typeunrecognized option:wrong configuration variable format for "%s"wrong export modewrong format in the appointment or eventwrong item typexcalloc: out of memoryxcalloc: overflowxcalloc: zero sizexfree: null pointerxmalloc: out of memoryxmalloc: zero sizexrealloc: out of memoryxrealloc: overflowxrealloc: zero sizeyesyyyy-mm-ddyyyy/mm/dd| calcurse memory usage report | Project-Id-Version: calcurse Report-Msgid-Bugs-To: bugs@calcurse.org POT-Creation-Date: 2013-02-09 14:04+0100 PO-Revision-Date: 2012-11-26 16:43+0000 Last-Translator: delix Language-Team: German (http://www.transifex.com/projects/p/calcurse/language/de/) Language: de MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); Copyright (c) 2004-2013 calcurse Development Team Alle Rechte vorbehalten. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Feedback oder Kommentare an: misc@calcurse.org Calcurse Homepage: http://calcurse.org Copyright (c) 2004-2013 calcurse Development Team. Dies ist freie Software; vgl. den Quellcode zu den Kopierbedingungen. Für nähere Informationen bitte '?' drücken oder die manpage lesen! Falls eine vorige Konvertierung fehlschlug, bitte versuchen Sie, diese Datei zu entfernen und mit einem Backup Ihrer alten Konfigurationsdatei neu zu starten. Falls eine vorige Konvertierung fehlschlug, bitte versuchen Sie, die Konfiguration von diesem Backup wiederherzustellen und die Backup- Datei anschließend zu entfernen. Diverses: -h, --help Gibt diese Hilfe aus und verlässt das Programm. -v, --version Gibt die Programmversion aus und verlässt das Programm. --status Zeige den Status laufender calcurse-Instanzen. --read-only Konfiguration und Termine/Aufgaben nicht speichern. Mit Vorsicht verwenden. Datei: -c , --calendar Gibt den zu verwendenden Kalender an. (Inkompatibel zu -D) -D , --directory Gibt das zu verwendende Arbeitsverzeichnis an; wenn nichts angegeben wird ist es ~/.calcurse/ Nicht interaktiv: -a, --appointment Gibt die Ereignisse und Termine für den aktuellen Tag aus und beendet das Programm. -d , --day Gibt alle Termine für dieses oder die nächsten Tage aus und beendet das Programm. Um die Termine sowohl für das als auch die darauf folgenden Tage auszugeben bitte die Optionen '--startday' und '--range' benutzen. -g, --gc Die automatische Speicherbereinigung für Notizen starten. -i , --import Importiert in calendar die angegebene im iCal Format -n, --next Gibt den Termin innerhalb der nächsten 24 Stunden aus, der als nächstes stattfindet und beendet das Programm. Zusätzlich wird die verbleibende Zeit bis zum Beginn des Termins angezeigt. -r[Nr], --range[=Nr] Gibt die Ereignisse und Termine für [Nr] Tage aus und beendet das Programm. Ist keine [Nr] angegeben wird 1 Tag ausgegeben. -s[Datum], --startday[=Datum] Gibt die Ereignisse und Termine für [Datum] aus und beendet das Programm. Ist kein [Datum] angegeben wird der aktuelle Tag ausgegeben. -S, --search= Suche nach in den Beschreibungen von Ereignissen, Terminen und Aufgaben. -t[Nr], --todo[=Nr] Gibt die Aufgabenliste aus und beendet das Programm. Wird das optionale Argument Nummer [Nr] verwendet, werden nur die Aufgaben angezeigt, die die angegebene Priorität besitzen. Die Priorität muss zwischen 1 (höchste) und 9 (niedrigste) liegen. Für erledigte Aufgaben kann die Priorität 0 angegeben werden. -x[format], --export[=format] Exportiert die Daten in das angegebene [Format]. Ereignisse, Termine und Aufgaben werden nach stdout ausgegeben. Zwei Formate sind möglich: ical und pcal. Ist das Format nicht angegeben wird im ical Format ausgegeben. Sie können die Ausgabe in eine Datei umleiten. Beispiel: calcurse --export > calcurse.dat Zu viele Fehler beim Lesen der Konfigurationsdatei! Bitte die Einstellungsdatei der Tastaturkürzel sichern, diese aus dem Verzeichnis löschen und calcurse neu starten. WARNUNG Scheinbar läuft eine weitere Instanz von calcurse schon. Wenn das nicht der Fall ist, bitte die Sperrdatei löschen: "%s" und calcurse neu starten. id: %u Größe: %u Willkommen zu calcurse. Dies ist Hauptseite der Hilfe. belegte Blöcke: %u alloziiert bei: %s Anzahl Aufrufe: %u alloziierte Blöcke: %u "%s" ist mehrfach zugeordnet# # Calcurse-Tastenkonfiguration # # Diese Datei definiert die Tastenkürzel für Calcurse. # Mit "#" beginnende Zeilen sind Kommentare und werden ignoriert. # Um eine Taste einer Aktion zuzuweisen, muss folgende Syntax # verwendet werden: # # AKTION TASTE1 TASTE2 ... TASTEn # # Wobei AKTION ausgeführt wird, wenn TASTE1, TASTE2, ... oder TASTEn # gedrückt wird. # # Um die STRG-Taste zu verwenden, kann der Taste 'C-' vorangestellt werden. # Die Escape-, Leer- und Tab-Tasten können durch die Schlüsselwörter # 'ESC', 'SPC' und 'TAB' verwendet werden. # Pfeiltasten entsprechend mit UP, DWN, LFT, RGT. # 'KEY_HOME' und 'KEY_END' entsprechen den Pos1- und Ende-Tasten. # # Eine Beschreibung jedes AKTION-Schlüsselwortes findet man im # Online-Konfigurationsmenü von calcurse. %d Termin%d Termine%d Ereignis%d Ereignisse%d übersprungen%d Aufgabe%d Aufgaben%s existiert nicht, jetzt erzeugen [y oder n] ? %s erfolgreich erzeugt (Befehl um Benutzer auf einen bevorstehenden Termin hinzuweisen)(Datumsformatierung innerhalb der nicht-interaktiven Ansicht)(Datumsformat innerhalb der Benachrichtigungszeile)(Uhrzeitformatierung innerhalb der Benachrichtigungszeile)(Format für die Eingabe eines Datums)(Aufzeichnen von Aktivitäten, wenn im Hintergrund ausgeführt)(Benachrichtige alle Termine, anstelle nur markierte)(^P oder ^N drücken zum hoch/runter bewegen, Q zum Beenden)(Im Hintergrund laufen, um Benachrichtigungen zu bekommen nach Beenden)(Nutzer auf einen Termin innerhalb der nächsten n Sekunden hinweisen)(verwende momentan %s)(t)äglich(Wenn nicht '0' eingegeben ist wird alle N Minuten gespeichert)(Ist JA gewählt, wird beim Beenden automatisch gespeichert)(Ist JA gewählt, ist eine Bestätigung erforderlich, um ein Ereignis zu löschen)(Ist JA gewählt, ist eine Bestätigung erforderlich zum Beenden)(Ist JA gewählt, werden Nachrichten über geladene und gespeicherte Daten angezeigt)(Ist JA gewählt, wird die Benachrichtigungszeile angezeigt)(Ist JA gewählt, werden Fortschrittsbalken beim Speichern angezeigt)(m)onatlich(automatische Speicherbereinigung beim Beenden ausführen)(lege den ersten Tag der Woche in der Kalenderansicht fest)(Standartwert des Terminals)(w)öchentlich(j)ährlich+------------------------------+ +1 Tag+1 Monat+1 Woche+1 Jahr----------------------------------------- ---==== SPEICHERBLOCK ===---------------- -1 Tag-1 Monat-1 Woche-1 JahrINTERNER FEHLERHinzufügen Neuer TerminNeueintragNeue AufgabeErstelle Aufgabe, je nach aktuell ausgewähltem Fenster.Erstelle Termin, je nach aktuell ausgewähltem Fenster.Ein Element zur Aufgaben- oder Terminliste hinzufügen, abhängig davon, welcher Bereich ausgewählt ist, wenn Sie '%s' drücken. Um eine neues Element zur Aufgabenliste hinzuzufügen, müssen Sie zunächst die Beschreibung des neuen Elements eingeben. Daraufhin werden Sie aufgefordert, eine Priorität festzulegen. Diese Priorität wird durch eine Ziffer zwischen 1 (höchste Priorität) und 9 (niedrigste Priorität) repräsentiert. Es ist möglich, die Priorität im Nachhinein mithilfe der '%s'- und '%s'-Tasten nochmals zu ändern. Wenn der Terminbereich beim Drücken von '%s' aktiviert ist, können Sie einen neuen Termin oder ein neues Ereignis erstellen. Um ein Ereignis zu erstellen, drücken Sie [EINGABE] anstelle einer Startzeit und füllen Sie anschließend nur die Beschreibung aus. Um einen neuen Termin zu erstellen, müssen Sie zunächst die Startzeit, die Termindauer (entweder durch Festlegen einer Endzeit im [hh:mm]- oder einer Dauer im [+hh:mm]-, [+xxdxxhxxm]- or [+mm]-Format), sowie die Beschreibung des Elements eingeben. Der Tag, an welchem das Ergeignis oder der Termin stattfindet, ist immer der aktuell ausgewählte. Daher muss der gewünschte Tag selektiert werden, bevor mit '%s' das neue Element erstellt wird. Hinweise: o Wenn ein Termin über das Ende des Tages hinweg dauert, wird dies mit '..' in der Start-/Endzeit markiert. o Wenn keine Beschreibung eingegeben wird, wird das Erstellen eines neuen Elements abgebrochen. o Vergessen Sie nicht, die Kalenderdaten zu speichern, damit diese beim nächsten Start von Calcurse erhalten bleiben.Füge ein Item zum aktuell ausgewählten Fenster hinzu.Neue TasteTermin:TermineAprilArgument für -x muss entweder 'ical' oder 'pcal' sein. Das Format für -r (--range) ist: 'n'. Das Format für -s und --startday ist: '%s' Ein Argument ist nicht gültig. Argument von '-d' ist nicht gültig. Notiz an aktuell ausgewähltes Item anhängen (oder existierende Notiz bearbeiten)Eine Notiz an ein beliebiges Element anhängen oder bearbeiten. Dieses Feature ist nützlich, wenn der Platz der Beschreibung nicht ausreicht, oder wenn beispielsweise Teilaufgaben zu einer existierenden Aufgabe hinzugefügt werden sollen. Vor dem Betätigen der '%s'-Taste, muss zunächst das gewünschte Element ausgewählt werden. Anschließend wird automatisch ein Editor gestartet, in dem die Notiz bearbeitet werden kann. Die Wahl des Editors erfolgt wie folgt: o wenn die 'VISUAL'-Umgebungsvariable gesetzt ist, wird der dort festgelegte Editor verwendet. o ist 'VISUAL' nicht gesetzt, wird die 'EDITOR'-Umgebungsvariable herangezogen. o ist keine dieser beiden Variablen gesetzt, wird automatisch '/usr/bin/vi' verwendet. Speichern Sie nach Abschluss der Bearbeitung und beenden Sie den Editor. Sie gelangen anschließend wieder zurück in Calcurse, wo '>' vor dem entsprechenden Element als Markierung für eine Notiz erscheint.AugustHintergrundBlock nicht gefundenCalcurse %s - textbasierender Terminkalender Calcurse - textbasierender Terminkalendercalcurse HilfeKalenderMehr als ein Regulärer Ausdruck kann nicht verarbeitet werden.Aktuelle Aktion abbrechen.Kann nicht als Dienst laufen. Abbruch Die Priorität des aktuell gewählten Elements in der Aufgabenliste ändern. Prioritäten werden durch Ziffern zwischen 1 (höchste Priorität) und 9 (niedrigste Priorität) repräsentiert. Aufgaben mit höherer Priorität erscheinen im Aufgabenbereich weiter oben. Mit '%s' kann die Priorität einer Elements erhöht werden. Dadurch wird die Ziffer vor dem Element um eins erniedrigt, was einer Erhöhung der Priorität entspricht. Die Position des Elements innerhalb des Aufgabenbereiches kann sich dadurch eventuell ändern. Analog kann '%s' verwendet werden, um die Priorität zu verringern. Auch hier kann sich die Position des Elements eventuell ändern.WechselnWählen Sie die Datei in die exportiert werden soll:FarbeEinstellungEinstellungen Konfigurationsdatei nicht gefunden:KopierenKopieren und Einfügen Ausschneiden und Einfügen des aktuell markierten Eintrags. Dies ist hilfreich um schnell einen Eintrag auf ein anderes Datum zu verschieben. Um es zu benutzen muss zuerst der Eintrag, der verschoben werden soll, hervorgehoben werden, dann %s drücken zum Ausschneiden. Wenn das neue Datum im Kalender gewählt ist zum Terminfenster wechseln und %s drücken um den Eintrag einzufügen. Der Eintrag erscheint wieder im Terminfenster, allerdings (nur !) am neu gewählten Datum. Das aktuell ausgewählte Item kopieren.Kein Zugriff auf "%s": %s Kann das Arbeitsverzeichnis nicht wechseln: %s Kann den Regulären Ausdruck nicht verarbeiten.Kann das Programm nicht vom Terminal lösen: %s Kann Befehl nicht ausführen: %s Kann die Tastenbezeichnung nicht lesenKann die Sperrdatei nicht löschen: %s Kann Sperrdatei des Dienst nicht löschen: %s Kann keine Sperrdatei setzen Kann den calcurse dienst nicht beenden: %s Kann den Dienst nicht beenden: %s Erstelle temporäres Backup der Konfigurationsdatei...Benutzerdaten gefunden. Daten werden geladen.DezemberLöschenLösche TasteLöschen Ein Element aus der Aufgaben- oder Terminliste entfernen. Beim Drücken der [Entf]-Taste wird abhängig vom aktuell gewählten Bereich entweder die momentan selektierte Aufgabe oder der momentan selektierte Termin entfernt. Falls das zu entfernende Element ein wiederkehrendes Element ist, werden Sie gefragt, ob alle Termine entfernt werden sollen, oder nur der tatsächlich ausgewählte. Wenn die Option 'confirm_delete' aktiviert ist, werden Sie zu einer zusätzlichen Bestätigung aufgefordert, bevor der Termin entfernt wird. Vergessen Sie nicht, die Kalenderdaten zu speichern, damit diese beim nächsten Start von Calcurse erhalten bleiben.Entferne das aktuell ausgewählte Item.BeschreibungErsetzungstasten Zeige Hinweise, wenn Hilfebilschirme verfügbar sind.Zeige das aktuell ausgewählte Item in einem Fenster.Möchten Sie diesen Eintrag wirklich löschen?Möchten Sie diese Aufgabe wirklich löschen?Möchten Sie wirklich das Programm beenden?RunterFEHLER beim Einstellen des ersten Wochentags.Bearbeiten Eintrag bearb.Bearbeite das aktuell ausgewählte Item.Das aktuell ausgewählte Element bearbeiten. Abhängig vom Elementtyp (Termin, Ereignis oder Aufgabe) und davon, ob es sich um ein wiederkehrendes Element handelt, werden Sie aufgefordert, eine zu bearbeitende Element-Eigenschaft zu wählen: den Starttermin, den Endtermin, die Beschreibung oder die Wiederholung. Sobald die Eigenschaft ausgewählt ist, wird ihr aktueller Wert gezeigt, der daraufhin wie gewünscht angepasst werden kann. Hinweise: o Bei Anpassungen der Wiederholung müssen alle Charakteristiken der Wiederholung neu eingegeben werden (Art der Wiederholung, Wiederholung und Enddatum). Des Weiteren gehen vorige Informationen zu gelöschten wiederkehrenden Terminen verloren. o Vergessen Sie nicht, die Kalenderdaten zu speichern, damit diese beim nächsten Start von Calcurse erhalten bleiben.Bearbeiten:Notiz bearb.Notiz bearb. End-UhrzeitNummer eingeben um den Wert zu ändern [Q um zu beenden]Beschreibung eingeben:End-Uhrzeit (Format [hh:mm] oder [hhmm]) oder Dauer ([+hh:mm], [+xxxdxxhxxm] oder [+mm]) eingeben :Neue End-Uhrzeit (Format [hh:mm] oder [hhmm]) oder Dauer ([+hh:mm], [+xxxdxxhxxm] oder [+mm]) eingeben :Start-Uhrzeit eingeben (Format [hh:mm] oder [hhmm]); leer lassen für ein ganztägiges Ereignis :Priorität der Aufgabe [1 (höchste) - 9 (niedrigste)] :Öffne das Konfigurationsmenü.Geben Sie das Datumsformat an (vgl. 'man 3 strftime')Datumsformat eingeben:Zu welchem Tag soll gesprungen werden? [EINGABE für heute] : %sZeitraum für die automatische Speicherung in Minuten eingeben (0 zum Ausschalten)Ende der Wiederholung: [%s] oder '0' für unendlich.Dateiname zum Importieren eingeben:Neue Beschreibung der Aufgabe eingeben: Neue Aufgabe eingeben: Neues Enddatum eingeben: [%s] oder '0'Geben Sie eine neue Beschreibung ein:Neue Wiederholung eingeben:Neuen Wiederholungstyp eingeben:Neue Uhrzeit eingeben ([hh:mm] oder [hhmm]) :Befehl für die BenachrichtigungGeben Sie die Zeit in Sekunden ein (0 um keine Hinweis zu erhalten).Geben Sie das Wiederholungsintervall an:Wiederholungstyp eingeben:Zeitformat eingeben (vgl. 'man 3 strftime')Fehler beim Lesen der Taste "%s"Fehler bei Signal: #%d : %s Fehler beim schließen der Datei %sFehler: calcurse (PID %d) und der Dienst (PID %d) scheinen zur gleichen Zeit zu laufen! Bitte überprüfen Sie das und starten calcurse neu. Ereignis:BeendenVerlasse aktuelles Menü oder beende calcurse.ExportierenExportieren Exportieren von calcurse Daten (Termine, Ereignisse und Aufgaben). Der Befehl führt in das Export Untermenü, hier kann entschieden werden zwischen zwei Exportformaten: ical und pcal. Sie müssen die Datei angeben, in welche Sie die Daten exportieren möchten. Als Standard ist dies: Für das ical (iCalendar) Format: ~/calcurse.ics Für das pcal Format: ~/calcurse.txt Die calcurse Daten werden in folgender Sortierung exportiert: Ereignisse, Termine, Aufgaben. Exportiere Daten in ein neues Dateiformat.In (i)cal- oder (p)cal-Format exportieren?Exportiere...SCHWERER FEHLER Konnte %s nicht erstellen: %s SCHWERER FEHLER: konnte Default-Tastaturkonfigurationsdatei nicht erzeugen.SCHWERER FEHLER: Tastenwert außerhalb des gültigen BereichesSCHWERER FEHLER: Null-Datei-Zeiger.SCHWERER FEHLER Eingabedatei kann nicht gelesen werden. Abbruch...SCHWERER FEHLER Falsches ExportformatFehler beim Erstellen der Nachricht Fehler beim Schließen "%s" - %s Fehler beim öffnen "%s", - %s Fehler beim Drucken der Nachricht "%s" FebruarEigenschaft EigenschaftDas aktuell ausgewählte Item als wichtig markieren.Vordergrund FrAllgemeinAllgemeingültige Tasten Gehe zuGehe zum heutigen Tag, je nach ausgewähltem Fenster.Gehe zu HilfeImportierenImportieren Importiere Daten von einer externen Datei.Daten von einer iCal Datei importieren. calcurse erwartet ein Dateinamen, von dem die iCal Daten geladen werden sollen. Am Ende des Imports wird eine Zusammenfassung angezeigt, wenn nicht 'system_dialogs' auf 'Ja' gesetzt ist. Die Anzahl der erfolgreich importierten Termine, Ereignisse und Aufgaben wird angezeigt und die Anzahl der fehlerhaften Einträge,wenn es Fehler gab. Wenn eine oder mehr Einträge nicht gelesen werden konnten, dann kann in der Log nachgesehen werden welche Fehler aufgetreten sind. Die Log zeigt einen Eintrag pro Zeile, mit der Zeilennummer der Quelldatei, an der der Eintrag beginnt, mit der Beschreibung warum der Eintrag nicht importiert wurde. Importstatus: %04d Zeilen eingelesenInterner Fehler beim Darstellen des FortschrittsbalkensINTERNER FEHLER Die Zeile ist zu langUngültige VerzögerungUngültige End-Uhrzeit/Dauer; sollte im Format [hh:mm], [hhmm], [+hh:mm], [+xxxdxxhxxm] oder [+mm] seinUngültige Zeitangabe: Der Startzeitpunkt muss vor dem Ende liegen!JanuarJuliSpringen zu einem Tag im Kalender. Mit diesem Kommando springen Sie direkt zu einem Datum, ohne die entsprechenden Tasten in der Kalenderanzeige verwenden zu müssen. Wenn Sie [EINGABE] betätigen ohne einen Tag anzugeben, ermittelt calcurse das aktuelle Systemdatum und wählt automatisch diesen Tag aus. Beachte, dass die Taste %s unabhängig von der aktiven Anzeige immer zum aktuellen Tag im Kalender springt.JuniTasten InformationenTastenbezeichnung nicht bekanntTastenLayoutLinksLade...Verringere Aufgaben-Priorität im Aufgabenfenster.Bitte melden Sie Programmfehler an . Bitte melden Sie Vorschläge an . MärzMai MoMontagBewegen in calcurse-Menüs. Das folgende Schema erläutert, wie das Bewegen in Menüs funktioniert: nach oben gehe zu voriger Woche %s nach links ^ gehe zu vorigem Tag | %s <-- + --> %s | nach rechts v gehe zu nächstem Tag %s gehe zu nächster Woche nach unten Innerhalb des Kalenderbereiches kann außerdem die '%s'-Taste verwendet werden, um zum ersten, sowie die '%s'-Taste um zum letzten Tag der Woche zu springen. Gehe nach unten.Gehe zum nächsten Tag im Kalender, je nach aktuell ausgewähltem Fenster.Gehe zum nächsten Monat im Kalender, je nach aktuell ausgewähltem Fenster.Gehe zur nächsten Woche im Kalender, je nach aktuell ausgewähltem Fenster.Gehe zum nächsten Jahr im Kalender, je nach aktuell ausgewähltem Fenster.Gehe zum vorigen Tag im Kalender, je nach aktuell ausgewähltem Fenster.Gehe zum vorigen Monat im Kalender, je nach aktuell ausgewähltem Fenster.Gehe zur vorigen Woche im Kalender, je nach aktuell ausgewähltem Fenster.Gehe zum vorigen Jahr im Kalender, je nach aktuell ausgewähltem Fenster.Gehe nach links.Gehe nach rechts.Nach oben.Navigieren: Benutzen Sie %s oder %s um den Text in der Hilfe aufwärts oder abwärts zu bewegen, falls erforderlich. Hilfe verlassen: Wenn Sie die Hilfe beenden möchten, drücken Sie %s. Hilfe-Kapitel: Unten auf diesem Fenster sehen Sie einen Bereich mit unterschiedlichen Feldern, die durch Kürzel und eine Kurzbeschreibung gekennzeichnet sind. Dieser Bereich enthält alle verfügbaren Aktionen, die innerhalb von calcurse ausführt werden können. Durch den Aufruf eines der Kürzel erhalten Sie eine kurze Beschreibung des dazugehörigen Befehls. Autoren: Betätigen Sie %s um die Autoren von calcurse zu sehen.Nächste TasteKeine FarbeKeine Logdatei zum ansehen vorhanden!Notiz nicht gefunden BenachrichtigungNovemberWeiterOktoberAlte Backup-Datei gefunden:Alte temporäre Datei gefunden:Das Konfigurationsmenü öffnen. In diesem Untermenü können Sie zwischen Farb-, Layout-, Benachrichtigungs-, allgemeinen Einstellungen und Tastenkürzeln wählen. In den Farbeinstellungen kann das Farbschema geändert werden. In den Layouteinstellungen kann festgelegt werden, wie die drei verschiedenen Bereiche auf dem Bildschirm angeordnet werden sollen. In den allgemeinen Einstellungen gibt es Optionen, die zur Anpassung der Interaktion zwischen Calcurse und dem Benutzer dienen. In den Benachrichtigungseinstellungen können Einstellungen für die Benachrichtigungsleiste modifiziert werden. Im Tastenmenü können Tastenkürzel festgelegt werden. Vergessen Sie nicht, die Kalenderdaten zu speichern, damit diese beim nächsten Start von Calcurse erhalten bleiben.Die Option -S braucht entweder -d, -r, -s, -a oder -t. Zus. BefehleWeitere Befehle EinfügenItem an aktueller Position einfügen.WeiterleitenWeiterleiten Leite an externen Befehl weiter:Das aktuell ausgewählte Item in ein externes Programm weiterleiten.Leite das ausgewählte Item an ein externes Programm weiter. Drücken Sie die '%s'-Taste, um das aktuell ausgewählte Item an ein externes Programm weiterzuleiten. Sie kehren in calcurse zurück, sobald das Programm terminiert. Bitte den Programmfehler melden:Mögliche Formate sind: %s oder 'n' Mögliche Eingaben sind [%s] oder '0' für unendlich.Mögliche Formate sind [%s] oder '0' für Endloswiederholung.Prä-3.0.0-Konfigurationsdateiformat entdeckt, bitte aktualisieren Sie calcurse mit `calcurse-upgrade`.Prä-3.0.0-Konfigurationsdateiformat entdeckt...[EINGABE]-Taste um fortzufahren[EINGABE] um fortzufahren.[EINGABE]-Taste um fortzufahrenEine beliebige Taste um fortzufahren...Taste drücken, die zugewiesen werden soll:Vorherige TasteZeige generelle Informationen über die calcurse-Authoren, -Lizenz, etc.Prio.+Prio.-Priorität Probleme beim Zugriff auf Benutzerdaten ...ZurückBeendenErhöhe Aufgaben-Priorität im Aufgabenfenster.Neu aufbauenZeichne den calcurse-Bildschirm neu.Entferne temporäres Backup...WiederholenWiederholen Ein Ereignis oder Termin wiederholen. Zunächst muss das zu wiederholende Element im Terminbereich ausgewählt werden. Beim Drücken von '%s' können anschließend drei Charakteristiken der Wiederholung festgesetzt werden: o Art: Wahl zwischen täglicher ('D'), wöchentlicher ('W'), monatlicher ('M') oder jährlicher ('Y') Wiederholung. o Wiederholung: Wie häufig die Wiederholung stattfinden soll. Für eine Geburtstagserinnerung sollte beispielsweise jährliche Wiederholung mit einer Wiederholung von '1' verwendet werden. Wenn zum Beispiel alle zwei Tage ein Restaurantbesuch geplant ist, eignet sich eine tägliche Wiederholung mit einer Wiederholung von '2'. o Enddatum: Legt fest, wann die Wiederholung des Elements stoppen soll. Für eine Endloswiederholung kann '0' verwendet werden. Hinweise: o Wiederkehrende Elemente werden durch ein '*' im Terminbereich gekennzeichnet, um diese leicht unterscheiden zu können. o 'Wiederholen' und 'Löschen' können zusammen verwendet werden, um Ausnahmen bei der Wiederholung festzulegen.Ein Item wiederholenWiederholungRechts SaSpeichernSpeichern Speichere calcurse-Daten.Daten in calcurse speichern.Die Daten werden in vier verschiedenen Dateien abgelegt : / ~/.calcurse/conf -> die Benutzereinstellungen | (Layout, Farbe, allg. Optionen) | ~/.calcurse/apts -> die Daten zu den Terminen | ~/.calcurse/todo -> die Daten zu den Aufgaben \ ~/.calcurse/keys -> Benutzerdefinierte Tastenkürzel Im Einstellungsmenü können Sie eine Option wählen, welche die Calcurse-Daten automatisch vor dem Verlassen des Programms speichert.Speichere...Scrolle Fenster nach unten (z.B. beim Anzeigen von Text in einem Fenster).Scrolle Fenster nach oben (z.B. beim Anzeigen von Text in einem Fenster).AuswahlWähle nächstes Fenster im calcurse-Hauptbildschirm.Wähle den Tag, zu dem gesprungen werden soll.Wähle den ersten Tag der aktuellen Woche im Kalenderfenster.Wähle das hervorgehobene Item.Wähle den letzten Tag der aktuellen Woche im Kalenderfenster.SeptemberZeige nächste mögliche Aktionen in der Statusleiste.SeitenleisteEinige Aktionen haben keine Tastenzuordnung!Einige Einträge wurden nicht Importiert, Logdatei ansehen?Einige Tastenkürzel können überall verwendet werden. Diese werden als generische Tastenkürzel bezeichnet. Es folgt eine Liste aller generischen Tastenkürzel mit den jeweils zugehörigen Aktionen: '%s' : Neu zeichnen -> alle Fenster neu zeichnen lassen - z.B. nach Anpassung der Fenstergröße oder wenn seltsame Zeichen erscheinen '%s' : Neuer Termin -> Termin oder Ereignis erstellen '%s' : Neue Aufgabe -> Aufgabe erstellen '%s' : -1 Tag -> springe zu vorigem Tag '%s' : +1 Tag -> springe zu nächstem Tag '%s' : -1 Woche -> springe zu voriger Woche '%s' : +1 Woche -> springe zu nächster Woche '%s' : -1 Monat -> springe zu vorigem Monat '%s' : +1 Monat -> springe zu nächstem Monat '%s' : -1 Jahr -> springe zu vorigem Jahr '%s' : +1 Jahr -> springe zu nächstem Jahr '%s' : Aktueller Tag -> springe zu aktuellem Tag Die '%s'- und '%s'-Tasten können verwendet werden, um nach oben oder unten zu scrollen (beispielsweise im Hilfe-Menü). Sie können im Kalenderbereich auch genutzt werden, um zwischen verschiedenen Ansichten (Monats- oder Wochenübersicht) zu wechseln.Farben werden von diesem Terminal nicht unterstützt. ([EINGABE]-Taste um fortzufahren)Das eingegebene Datum liegt vor dem Anfangszeitpunkt.Start-Uhrzeit SoSonntagZwischen den Anzeigen wechseln. Der Rahmen der aktuell gewählten Anzeige wird farbig hervorgehoben. Einige Aktionen sind nur möglich, wenn die richtige Anzeige gewählt wurde. Wenn Sie beispielsweise eine Aufgabe in die Aufgabenliste einfügen wollen, müssen Sie die %s Taste betätigen, um die Aufgabenanzeige hervorzuheben. Erst dann können Sie mit %s einen neuen Eintrag hinzufügen. Beachten Sie, dass sich im unteren Teil des Bildschirms die Liste der möglichen Aktionen verändert, wenn Sie die %s Taste betätigen. So sehen Sie, welche Aktionen auf der gewählten Anzeige durchgeführt werden können.Zwischen den einzelnen Hilfsseiten in der Statusleiste springen. Da der Terminalbildschirm nicht ausreicht, um alle verfügbaren Befehle anzuzeigen, kann '%s' verwendet werden, um die nächsten Befehle mit den zugehörigen Tastenkürzeln zu zeigen. Auf der letzten Seite angelangt, springt '%s' wieder zurück zur ersten Seite.Tabulator Die Benutzerdaten wurden erfolgreich gespeichertDie Daten wurden erfolgreich exportiertDer eingegebene Tag ist ungültig (nicht zwischen 01/01/1902 und12/31/2037)Das eingegebene Datum ist ungültig.Auf die Datei kann nicht zugegriffen werden, bitte einen anderen Dateinamen eingeben.Das eingegebene Wiederholung ist ungültig.Die ICal Datei ist fehlerhaft. Keine Enddatum des Eintrags gefunden.Einige Fehler beim Lesen der 'keys'-Datei, Log ansehen?In diesem Menü kann die Breite der Seitenleiste geändert werden. Die Seitenleiste ist der Teil des Bildschirms, der zwei Teile enthält: Den Kalender und, je nach Layout, entweder die Aufgaben-Liste oder die Termin-Liste. Die Seitenleiste kann bis zu 50% der Bildschirmbreite einnehmen, kann jedoch nicht kleiner sein als Der Termin hat eine Notiz. (i) Termin oder (n) nur Notiz löschen?Notiz vorhanden. (t) Aufgabe oder (n) nur die Notiz löschen?Es handelt sich bereits um einen wiederkehrenden Eintrag.Wiederkehrender Termin, (a)lle Termine oder nur diesen (e)inen löschen ?Diese Taste ist schon mit %s belegt, bitte andere Taste wählen.Diese Taste kennt calcurse nicht, bitte andere Taste wählen. DoAufgaben:AufgabenHeuteDas 'wichtig'-Flag eines Termins oder das 'abgeschlossen'-Flag einer Aufgabe an-/ausschalten. Wenn eine Aufgabe als abgeschlossen markiert ist, wird deren Priorität durch ein 'X' ersetzt. Abgeschlossene Aufgaben erscheinen weder in exportierten Daten, noch beim Verwenden des '-t'-Kommandozeilenarguments (außer wenn dort '0' als Priorität angegeben wird). Wenn ein Termin als wichtig markiert wird, erscheint ein Ausrufezeichen vor diesem und Sie werden kurz vor Start des Termines gewarnt. Um die Art und Vorlaufzeit der Benachrichtigung anzupassen, können die Benachrichtigungseinstellungen verwendet werden.Zu viele Fehler beim Lesen der 'keys'-Datei, Abbruch...Geben Sie 'calcurse -h' ein, für weitere Informationen. DiUnbestimmte Einstellung!HochAktualisiere Konfigurationsanweisungen...Verwendung: calcurse [-g|-h|-v] [-an] [-t[num]] [-i] [-x[format]] [-d |] [-s[date]] [-r[range]] [-c] [-D] [-S] [--status] [--read-only] Verwendung: calcurse-upgrade [-h|-v|--config ]AnsichtAnsicht Ansehen einer Notiz, die zuvor an einen Eintrag angehängt wurde (ein Eintrag mit Notiz ist mit einem '>' Zeichen davor markiert). Dieser Befehl erlaubt nur das Ansehen einer Notiz, nicht das Bearbeiten (Zum Bearbeiten muss 'Notiz bearbeiten' benutzt werden, wenn die Taste %s gedrückt wird). Wenn ein Eintrag mit angehängter Notiz markiert ist und die %s Taste gedrückt wird, dann erscheint ein Pager zum Anzeigen der Notiz. Der Standard-Pager wird gesetzt mit: o Wenn die 'PAGER' Umgebungsvariable gesetzt ist, dann wird dieser zum Betrachten der Notiz benutzt. o Wenn die Variable nicht gesetzt ist, dann wird als Standard der Pager /usr/bin/less benutzt. Um eine Notiz zu bearbeiten den Pager beenden und man kommt zurück zu calcurseEinen gewählten Eintrag einzusehen, im Aufgaben- oder Terminbereich. Dieses kann nützlich sein, wenn eine Ereignisbeschreibung länger als der verfügbare Platz auf dem Terminal ist. Ist dies der Fall, wird die Beschreibung gekürzt und der Rest durch '...' ersetzt. Um den Rest dieser Beschreibung einzusehen, benutzen Sie die %s Taste. Ein Fenster erscheint, welches das ganze Ereignis enthält. Betätigen Sie eine beliebige Taste um das Fenster zu schließen und zum Hauptfenster des Programms zurückzukehren.Notiz zum aktuell ausgewählten Item ansehen.Notiz anz.Notiz WARNUNG Kann keine temporäre Logdatei anlegen. Abbruch...WARNUNG Kann temporäre Logdatei %s nicht löschen. Abbruch...WARNUNG: Kann %s nicht öffnen. Abbruch...WARNUNG Kann temporäre Logdatei nicht öffnen. Abbruch...WARNUNG ICal Kopf fehlerhaft oder falsche Versionsnummer. Abbruch... MiWillkommen zu calcurse. Fehlende Dateien werden erzeugt.Beim Hinzufügen einer Default-Taste für "%s" war "%s" bereits zugewiesen!Breite +Breite -In diesem Konfigurationsmenü kann eingestellt werden, wie die Fenster in calcurse angeordnet sind. Es kann gewählt werden zwischen acht Alternativen. Legende: c -> Kalenderfenster a -> Terminfenster t -> Aufgabenfenster Sie haben eine ungültige Start-Uhrzeit eingegeben, sollte im Format [hh:mm] oder [hhmm] seinSie haben eine ungültige Uhrzeit eingegeben, sollte im Format [hh:mm] oder [hhmm] sein[ae][twmj][in][ip][an][jn]abbrechen... Termin hat keine Startzeit.Termin nicht gefundenAufgeweckt als %s WochenanfangBlock scheint schon bei %s freigegebencalcurse ist nicht gestartet calcurse ist gestartet (PID %d) calcurse ist im Hintergrund gestartet (PID %d) FarbtabelleBeendete Aufgaben: Konfigurationsvariable unbekannt: "%s"Korruptes Block-Ende bei %s (Ende = %u, sollte %d sein)Korrupter Block-Header bei %skonnte kein Speicher für die Block-Info alloziierenKann Dauer nicht berechnen (keine Endzeit).Kann die Zeichenkette nicht umwandelnKann nicht die ganze Beschreibung lesen.Kann die Endzeit des Ereignis nicht lesen.Kann die Startzeit des Ereignis nicht lesen.Kann die Zusammenfassung des Eintrags nicht lesen.Datumsfehler im TerminDatumsfehler im EreignisFehlerhafte Zeit für das Ereignis dbg_free: Null-Zeiger bei %stt/mm/jjjjBeschreibung Fehlerhaft.fertigWochenendeFehler in mktimeFehler beim Laden des nächsten Termins Fehler beim Ausführen einer BefehlszeileFehler beim Ausführen einer Befehlszeile: Kann nicht AusführenFehler beim senden der Benachrichtigung Ereignisdatum ist nicht eingegeben.Ereignis nicht gefundenkonnte Termin-Datei nicht öffnenkonnte Konfigurationsdatei nicht öffnenKonnte Tasenkonfigurationsdatei nicht öffnenkonnte Aufgaben-Datei nicht öffnenFehlfunktion in mktimeAllgemeine EinstellungenUnzusammenhängende WiederholungUngültige Konfigurationsanweisung: "%s"Element kann nicht erkannt werden.Dauer des Eintrags fehlerhaft.Eintrag hat eine negative Dauer.Priorität des Eintrags muss zwischen 1 und 9 liegen.Tastenzuordnungen: %sTasteneinstellungStartbenachrichtigung auf %s für: "%s" Layout Einstellungenmm/tt/jjjjNächster Termin: neinKein Ereignis oder Termin gefundenKeine Notiz angehängtTermin nicht gefundenKeine Aufgabe gefundenTyp nicht gefundenEinstellungen der BenachrichtigungNull-ZeigerOption nicht definiertHauptspeicher reicht nicht ausAußerhalb des BereichesÜberlauf bei %sAusnahmen des Wiederholungstyp falsch.Wiederholungstyp nicht gefunden.Wiederholungstyp nicht bekannt.Wiederholungstyp falsch.schlafe bei %s für %d Sekunde schlafe bei %s für %d Sekunden Gestartet als %s Starte interaktiven Modus... Eingabefehler im DatumSyntaxfehler im Item-BezeichnerSyntaxfehler in Item-WiederholungSyntaxfehler in Item-Zeit oder -DauerEingabefehler im Datumseintragtemporäre Datei "%s" kann nicht erstellt werdenBeendet (%s) mit Signal %d Aufgaben: Aufgabe nicht gefundenunbestimmtUnbekanntes ZeichenUnbekannte FarbeUnbekanntes ExportformatUnbekannter ICal TypUnbekanntes ImportformatUnbekannte Positionunbekannte AnsichtUnbekannter WiederholungstypUnbekannter Typunbekannte Option:falsches Konfigurationsvariablenformat für "%s"Falsches ExportformatFalsches Format für den Termin oder das EreignisFalscher Typ des Eintragsxcalloc: Speicher ist vollxcalloc: Überlaufxcalloc: Länge 0xfree: Null-Zeigerxmalloc: Speicher ist vollxmalloc: Länge 0xrealloc: Speicher ist vollxrealloc: Überlaufxrealloc: Länge 0jajjjj-mm-ttjjjj/mm/tt| calcurse memory usage report | calcurse-3.1.4/po/de.po0000644000175000001440000024415612105444503011615 00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Free Software Foundation, Inc. # This file is distributed under the same license as the PACKAGE package. # # Translators: # , 2012. # Lukas Fleischer , 2011-2012. msgid "" msgstr "" "Project-Id-Version: calcurse\n" "Report-Msgid-Bugs-To: bugs@calcurse.org\n" "POT-Creation-Date: 2013-02-09 14:04+0100\n" "PO-Revision-Date: 2012-11-26 16:43+0000\n" "Last-Translator: delix \n" "Language-Team: German (http://www.transifex.com/projects/p/calcurse/language/" "de/)\n" "Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" msgid "null pointer" msgstr "Null-Zeiger" msgid "date error in appointment" msgstr "Datumsfehler im Termin" msgid "no such appointment" msgstr "Termin nicht gefunden" msgid "" "Usage: calcurse [-g|-h|-v] [-an] [-t[num]] [-i] [-x[format]]\n" " [-d |] [-s[date]] [-r[range]]\n" " [-c] [-D] [-S] [--status]\n" " [--read-only]\n" msgstr "" "Verwendung: calcurse [-g|-h|-v] [-an] [-t[num]] [-i] [-x[format]]\n" " [-d |] [-s[date]] [-r[range]]\n" " [-c] [-D] [-S] [--status]\n" " [--read-only]\n" msgid "Try 'calcurse -h' for more information.\n" msgstr "Geben Sie 'calcurse -h' ein, für weitere Informationen.\n" msgid "" "\n" "Copyright (c) 2004-2013 calcurse Development Team.\n" "This is free software; see the source for copying conditions.\n" msgstr "" "\n" "Copyright (c) 2004-2013 calcurse Development Team.\n" "Dies ist freie Software; vgl. den Quellcode zu den Kopierbedingungen.\n" #, c-format msgid "Calcurse %s - text-based organizer\n" msgstr "Calcurse %s - textbasierender Terminkalender\n" msgid "" "\n" "For more information, type '?' from within Calcurse, or read the manpage.\n" msgstr "" "\n" "Für nähere Informationen bitte '?' drücken oder die manpage lesen!\n" msgid "Mail feature requests and suggestions to .\n" msgstr "Bitte melden Sie Vorschläge an .\n" msgid "Mail bug reports to .\n" msgstr "Bitte melden Sie Programmfehler an .\n" msgid "" "\n" "Miscellaneous:\n" " -h, --help\n" "\tprint this help and exit.\n" "\n" " -v, --version\n" "\tprint calcurse version and exit.\n" "\n" " --status\n" "\tdisplay the status of running instances of calcurse.\n" "\n" " --read-only\n" "\tDon't save configuration nor appointments/todos. Use with care.\n" "\n" "Files:\n" " -c , --calendar \n" "\tspecify the calendar to use (has precedence over '-D').\n" "\n" " -D , --directory \n" "\tspecify the data directory to use.\n" "\tIf not specified, the default directory is ~/.calcurse\n" "\n" "Non-interactive:\n" " -a, --appointment\n" " \tprint events and appointments for current day and exit.\n" "\n" " -d , --day \n" "\tprint events and appointments for or upcoming days and\n" "\texit. To specify both a starting date and a range, use the\n" "\t'--startday' and the '--range' option.\n" "\n" " -g, --gc\n" "\trun the garbage collector for note files and exit. \n" "\n" " -i , --import \n" "\timport the icalendar data contained in . \n" "\n" " -n, --next\n" "\tprint next appointment within upcoming 24 hours and exit. Also given\n" "\tis the remaining time before this next appointment.\n" "\n" " -r[num], --range[=num]\n" "\tprint events and appointments for the [num] number of days\n" "\tand exit. If no [num] is given, a range of 1 day is considered.\n" "\n" " -s[date], --startday[=date]\n" "\tprint events and appointments from [date] and exit.\n" "\tIf no [date] is given, the current day is considered.\n" "\n" " -S, --search=\n" "\tsearch for the given regular expression within events, appointments,\n" "\tand todos description.\n" "\n" " -t[num], --todo[=num]\n" "\tprint todo list and exit. If the optional number [num] is given,\n" "\tthen only todos having a priority equal to [num] will be returned.\n" "\tThe priority number must be between 1 (highest) and 9 (lowest).\n" "\tIt is also possible to specify '0' for the priority, in which case\n" "\tonly completed tasks will be shown.\n" "\n" " -x[format], --export[=format]\n" "\texport user data to the specified format. Events, appointments and\n" "\ttodos are converted and echoed to stdout.\n" "\tTwo possible formats are available: 'ical' and 'pcal'.\n" "\tIf the optional argument format is not given, ical format is\n" "\tselected by default.\n" "\tnote: redirect standard output to export data to a file,\n" "\tby issuing a command such as: calcurse --export > calcurse.dat\n" msgstr "" "\n" "Diverses:\n" " -h, --help\n" "\tGibt diese Hilfe aus und verlässt das Programm.\n" "\n" " -v, --version\n" "\tGibt die Programmversion aus und verlässt das Programm.\n" "\n" " --status\n" "\tZeige den Status laufender calcurse-Instanzen.\n" "\n" " --read-only\n" "\tKonfiguration und Termine/Aufgaben nicht speichern. Mit Vorsicht " "verwenden.\n" "\n" "Datei:\n" " -c , --calendar \n" "\tGibt den zu verwendenden Kalender an.\n" "\t(Inkompatibel zu -D)\n" "\n" " -D , --directory \n" "\tGibt das zu verwendende Arbeitsverzeichnis an; \n" "wenn nichts angegeben wird ist es ~/.calcurse/ \n" "\n" "Nicht interaktiv:\n" " -a, --appointment\n" "\tGibt die Ereignisse und Termine für den aktuellen Tag aus und beendet " "das Programm.\n" "\n" " -d , --day \n" "\tGibt alle Termine für dieses oder die nächsten Tage aus und" "\tbeendet das Programm. Um die Termine sowohl für das als auch die " "darauf folgenden Tage auszugeben bitte die Optionen '--startday' und '--" "range' benutzen.\n" "\n" " -g, --gc\n" "\tDie automatische Speicherbereinigung für Notizen starten. \n" "\n" " -i , --import \n" "\tImportiert in calendar die angegebene im iCal Format\n" "\n" " -n, --next\n" "\tGibt den Termin innerhalb der nächsten 24 Stunden aus, der als nächstes\n" "\tstattfindet und beendet das Programm. Zusätzlich wird die verbleibende\n" "\tZeit bis zum Beginn des Termins angezeigt.\n" "\n" " -r[Nr], --range[=Nr]\n" "\tGibt die Ereignisse und Termine für [Nr] Tage aus und beendet das " "Programm.\n" "\tIst keine [Nr] angegeben wird 1 Tag ausgegeben.\n" "\n" " -s[Datum], --startday[=Datum]\n" "\tGibt die Ereignisse und Termine für [Datum] aus und beendet das Programm.\n" "\tIst kein [Datum] angegeben wird der aktuelle Tag ausgegeben.\n" "\n" " -S, --search=\n" "\tSuche nach in den Beschreibungen von Ereignissen,\n" "\tTerminen und Aufgaben.\n" "\n" " -t[Nr], --todo[=Nr]\n" "\tGibt die Aufgabenliste aus und beendet das Programm. Wird das optionale\n" "\tArgument Nummer [Nr] verwendet, werden nur die Aufgaben angezeigt, die\n" "\tdie angegebene Priorität besitzen.\n" "\tDie Priorität muss zwischen 1 (höchste) und 9 (niedrigste) liegen.\n" "\tFür erledigte Aufgaben kann die Priorität 0 angegeben werden.\n" "\n" " -x[format], --export[=format]\n" "\tExportiert die Daten in das angegebene [Format]. Ereignisse,\n" "\tTermine und Aufgaben werden nach stdout ausgegeben.\n" "\tZwei Formate sind möglich: ical und pcal.\n" "\tIst das Format nicht angegeben wird im ical Format ausgegeben.\n" "\tSie können die Ausgabe in eine Datei umleiten.\n" "\tBeispiel: calcurse --export > calcurse.dat\n" "\n" #, c-format msgid "" "Error: both calcurse (pid: %d) and its daemon (pid: %d)\n" "seem to be running at the same time!\n" "Please check manually and restart calcurse.\n" msgstr "" "Fehler: calcurse (PID %d) und der Dienst (PID %d)\n" "scheinen zur gleichen Zeit zu laufen!\n" "Bitte überprüfen Sie das und starten calcurse neu.\n" #, c-format msgid "calcurse is running (pid %d)\n" msgstr "calcurse ist gestartet (PID %d)\n" #, c-format msgid "calcurse is running in background (pid %d)\n" msgstr "calcurse ist im Hintergrund gestartet (PID %d)\n" msgid "calcurse is not running\n" msgstr "calcurse ist nicht gestartet\n" msgid "to do:\n" msgstr "Aufgaben:\n" msgid "completed tasks:\n" msgstr "Beendete Aufgaben:\n" msgid "next appointment:\n" msgstr "Nächster Termin:\n" msgid "Argument to the '-d' flag is not valid\n" msgstr "Argument von '-d' ist nicht gültig.\n" #, c-format msgid "Possible argument format are: '%s' or 'n'\n" msgstr "Mögliche Formate sind: %s oder 'n'\n" msgid "Argument is not valid\n" msgstr "Ein Argument ist nicht gültig.\n" #, c-format msgid "Argument format for -s and --startday is: '%s'\n" msgstr "Das Format für -s und --startday ist: '%s'\n" msgid "Argument format for -r and --range is: 'n'\n" msgstr "Das Format für -r (--range) ist: 'n'.\n" msgid "Can not handle more than one regular expression." msgstr "Mehr als ein Regulärer Ausdruck kann nicht verarbeitet werden." msgid "Could not compile regular expression." msgstr "Kann den Regulären Ausdruck nicht verarbeiten." msgid "Argument for '-x' should be either 'ical' or 'pcal'\n" msgstr "Argument für -x muss entweder 'ical' oder 'pcal' sein.\n" msgid "Option '-S' must be used with either '-d', '-r', '-s', '-a' or '-t'\n" msgstr "Die Option -S braucht entweder -d, -r, -s, -a oder -t.\n" msgid "To do :" msgstr "Aufgaben:" msgid "Export to (i)cal or (p)cal format?" msgstr "In (i)cal- oder (p)cal-Format exportieren?" msgid "[ip]" msgstr "[ip]" msgid "Do you really want to quit ?" msgstr "Möchten Sie wirklich das Programm beenden?" msgid "ERROR setting first day of week" msgstr "FEHLER beim Einstellen des ersten Wochentags." msgid "" "The day you entered is not valid (should be between 01/01/1902 and " "12/31/2037)" msgstr "" "Der eingegebene Tag ist ungültig (nicht zwischen 01/01/1902 und12/31/2037)" msgid "Press [ENTER] to continue" msgstr "[EINGABE]-Taste um fortzufahren" #, c-format msgid "Enter the day to go to [ENTER for today] : %s" msgstr "Zu welchem Tag soll gesprungen werden? [EINGABE für heute] : %s" msgid "unknown color" msgstr "Unbekannte Farbe" msgid "failed to open configuration file" msgstr "konnte Konfigurationsdatei nicht öffnen" #, c-format msgid "invalid configuration directive: \"%s\"" msgstr "Ungültige Konfigurationsanweisung: \"%s\"" msgid "" "Pre-3.0.0 configuration file format detected, please upgrade running " "`calcurse-upgrade`." msgstr "" "Prä-3.0.0-Konfigurationsdateiformat entdeckt, bitte aktualisieren Sie " "calcurse mit `calcurse-upgrade`." #, c-format msgid "configuration variable unknown: \"%s\"" msgstr "Konfigurationsvariable unbekannt: \"%s\"" #, c-format msgid "wrong configuration variable format for \"%s\"" msgstr "falsches Konfigurationsvariablenformat für \"%s\"" msgid "Exit" msgstr "Beenden" msgid "General" msgstr "Allgemein" msgid "Layout" msgstr "Layout" msgid "Sidebar" msgstr "Seitenleiste" msgid "Color" msgstr "Farbe" msgid "Notify" msgstr "Benachrichtigung" msgid "Keys" msgstr "Tasten" msgid "Select" msgstr "Auswahl" msgid "Up" msgstr "Hoch" msgid "Down" msgstr "Runter" msgid "Left" msgstr "Links" msgid "Right" msgstr "Rechts" msgid "Help" msgstr "Hilfe" msgid "layout configuration" msgstr "Layout Einstellungen" msgid "" "With this configuration menu, one can choose where panels will be\n" "displayed inside calcurse screen. \n" "It is possible to choose between eight different configurations.\n" "\n" "In the configuration representations, letters correspond to:\n" "\n" " 'c' -> calendar panel\n" "\n" " 'a' -> appointment panel\n" "\n" " 't' -> todo panel\n" "\n" msgstr "" "In diesem Konfigurationsmenü kann eingestellt werden, wie die Fenster\n" "in calcurse angeordnet sind.\n" "Es kann gewählt werden zwischen acht Alternativen.\n" "\n" "Legende:\n" "\tc -> Kalenderfenster\n" "\n" "\ta -> Terminfenster\n" "\n" "\tt -> Aufgabenfenster\n" "\n" msgid "Width +" msgstr "Breite +" msgid "Width -" msgstr "Breite -" #, no-c-format msgid "" "This configuration screen is used to change the width of the side bar.\n" "The side bar is the part of the screen which contains two panels:\n" "the calendar and, depending on the chosen layout, either the todo list\n" "or the appointment list.\n" "\n" "The side bar width can be up to 50% of the total screen width, but\n" "can't be smaller than " msgstr "" "In diesem Menü kann die Breite der Seitenleiste geändert werden.\n" "Die Seitenleiste ist der Teil des Bildschirms, der zwei Teile enthält:\n" "Den Kalender und, je nach Layout, entweder die Aufgaben-Liste oder die\n" "Termin-Liste.\n" "\n" "Die Seitenleiste kann bis zu 50% der Bildschirmbreite einnehmen, kann\n" "jedoch nicht kleiner sein als " msgid "No color" msgstr "Keine Farbe" msgid "Foreground" msgstr "Vordergrund" msgid "Background" msgstr "Hintergrund" msgid "(terminal's default)" msgstr "(Standartwert des Terminals)" msgid "color theme" msgstr "Farbtabelle" msgid "(if set to YES, automatic save is done when quitting)" msgstr "(Ist JA gewählt, wird beim Beenden automatisch gespeichert)" msgid "(run the garbage collector when quitting)" msgstr "(automatische Speicherbereinigung beim Beenden ausführen)" msgid "(if not null, automatically save data every 'periodic_save' minutes)" msgstr "(Wenn nicht '0' eingegeben ist wird alle N Minuten gespeichert)" msgid "(if set to YES, confirmation is required before quitting)" msgstr "(Ist JA gewählt, ist eine Bestätigung erforderlich zum Beenden)" msgid "(if set to YES, confirmation is required before deleting an event)" msgstr "" "(Ist JA gewählt, ist eine Bestätigung erforderlich, um ein Ereignis zu " "löschen)" msgid "(if set to YES, messages about loaded and saved data will be displayed)" msgstr "" "(Ist JA gewählt, werden Nachrichten über geladene und gespeicherte Daten " "angezeigt)" msgid "(if set to YES, progress bar will be displayed when saving data)" msgstr "(Ist JA gewählt, werden Fortschrittsbalken beim Speichern angezeigt)" msgid "Monday" msgstr "Montag" msgid "Sunday" msgstr "Sonntag" msgid "(specifies the first day of week in the calendar view)" msgstr "(lege den ersten Tag der Woche in der Kalenderansicht fest)" msgid "(Format of the date to be displayed in non-interactive mode)" msgstr "(Datumsformatierung innerhalb der nicht-interaktiven Ansicht)" msgid "(Format to be used when entering a date: " msgstr "(Format für die Eingabe eines Datums)" msgid "Enter an option number to change its value" msgstr "Nummer eingeben um den Wert zu ändern [Q um zu beenden]" msgid "(Press '^P' or '^N' to move up or down, 'Q' to quit)" msgstr "(^P oder ^N drücken zum hoch/runter bewegen, Q zum Beenden)" msgid "Enter the date format (see 'man 3 strftime' for possible formats) " msgstr "Geben Sie das Datumsformat an (vgl. 'man 3 strftime')" msgid "Enter the date format: " msgstr "Datumsformat eingeben:" msgid "Enter the delay, in minutes, between automatic saves (0 to disable) " msgstr "" "Zeitraum für die automatische Speicherung in Minuten eingeben\n" "(0 zum Ausschalten)" msgid "general options" msgstr "Allgemeine Einstellungen" msgid "Undefined option!" msgstr "Unbestimmte Einstellung!" msgid "undefined" msgstr "unbestimmt" msgid "Key info" msgstr "Tasten Informationen" msgid "Add key" msgstr "Neue Taste" msgid "Del key" msgstr "Lösche Taste" msgid "Prev Key" msgstr "Vorherige Taste" msgid "Next Key" msgstr "Nächste Taste" msgid "keys configuration" msgstr "Tasteneinstellung" msgid "Press the key you want to assign to:" msgstr "Taste drücken, die zugewiesen werden soll:" msgid "This key is not yet recognized by calcurse, please choose another one." msgstr "Diese Taste kennt calcurse nicht, bitte andere Taste wählen." #, c-format msgid "This key is already in use for %s, please choose another one." msgstr "Diese Taste ist schon mit %s belegt, bitte andere Taste wählen." msgid "Some actions do not have any associated key bindings!" msgstr "Einige Aktionen haben keine Tastenzuordnung!" msgid "" "Sorry, colors are not supported by your terminal\n" "(Press [ENTER] to continue)" msgstr "" "Farben werden von diesem Terminal nicht unterstützt.\n" "([EINGABE]-Taste um fortzufahren)" msgid "unknown item type" msgstr "Unbekannte Position" msgid "Event :" msgstr "Ereignis:" msgid "Appointment :" msgstr "Termin:" msgid "unknwon type" msgstr "Unbekannter Typ" #, c-format msgid "Could not stop daemon properly: %s\n" msgstr "Kann den Dienst nicht beenden: %s\n" #, c-format msgid "terminated at %s with signal %d\n" msgstr "Beendet (%s) mit Signal %d\n" #, c-format msgid "Could not remove daemon lock file: %s\n" msgstr "Kann Sperrdatei des Dienst nicht löschen: %s\n" #, c-format msgid "Could not fork: %s\n" msgstr "Kann Befehl nicht ausführen: %s\n" #, c-format msgid "Could not detach from the controlling terminal: %s\n" msgstr "Kann das Programm nicht vom Terminal lösen: %s\n" #, c-format msgid "Could not change working directory: %s\n" msgstr "Kann das Arbeitsverzeichnis nicht wechseln: %s\n" msgid "Cannot daemonize, aborting\n" msgstr "Kann nicht als Dienst laufen. Abbruch\n" msgid "Could not set lock file\n" msgstr "Kann keine Sperrdatei setzen\n" #, c-format msgid "Could not access \"%s\": %s\n" msgstr "Kein Zugriff auf \"%s\": %s\n" #, c-format msgid "started at %s\n" msgstr "Gestartet als %s\n" msgid "error loading next appointment\n" msgstr "Fehler beim Laden des nächsten Termins\n" #, c-format msgid "launching notification at %s for: \"%s\"\n" msgstr "Startbenachrichtigung auf %s für: \"%s\"\n" msgid "error while sending notification\n" msgstr "Fehler beim senden der Benachrichtigung\n" #, c-format msgid "sleeping at %s for %d second\n" msgid_plural "sleeping at %s for %d seconds\n" msgstr[0] "schlafe bei %s für %d Sekunde\n" msgstr[1] "schlafe bei %s für %d Sekunden\n" #, c-format msgid "awakened at %s\n" msgstr "Aufgeweckt als %s\n" #, c-format msgid "Could not stop calcurse daemon: %s\n" msgstr "Kann den calcurse dienst nicht beenden: %s\n" msgid "date error in the event\n" msgstr "Fehlerhafte Zeit für das Ereignis\n" msgid "Internal error: line too long" msgstr "INTERNER FEHLER Die Zeile ist zu lang" msgid "out of memory" msgstr "Hauptspeicher reicht nicht aus" #, c-format msgid "key bindings: %s" msgstr "Tastenzuordnungen: %s" msgid "Calcurse help" msgstr "calcurse Hilfe" msgid " Welcome to Calcurse. This is the main help screen.\n" msgstr " Willkommen zu calcurse. Dies ist Hauptseite der Hilfe.\n" #, c-format msgid "" "Moving around: Press '%s' or '%s' to scroll text upward or downward\n" " inside help screens, if necessary.\n" "\n" " Exit help: When finished, press '%s' to exit help and go back to\n" " the main Calcurse screen.\n" "\n" " Help topic: At the bottom of this screen you can see a panel with\n" " different fields, represented by a letter and a short\n" " title. This panel contains all the available actions\n" " you can perform when using Calcurse.\n" " By pressing one of the letters appearing in this\n" " panel, you will be shown a short description of the\n" " corresponding action. At the top right side of the\n" " description screen are indicated the user-defined key\n" " bindings that lead to the action.\n" "\n" " Credits: Press '%s' for credits." msgstr "" "Navigieren: Benutzen Sie %s oder %s um den Text in der Hilfe\n" " aufwärts oder abwärts zu bewegen, falls erforderlich.\n" "\n" "Hilfe verlassen: Wenn Sie die Hilfe beenden möchten, drücken Sie %s.\n" "\n" "Hilfe-Kapitel: Unten auf diesem Fenster sehen Sie einen Bereich mit\n" " unterschiedlichen Feldern, die durch Kürzel und eine\n" " Kurzbeschreibung gekennzeichnet sind. Dieser Bereich\n" " enthält alle verfügbaren Aktionen, die innerhalb von\n" " calcurse ausführt werden können. Durch den Aufruf eines\n" " der Kürzel erhalten Sie eine kurze Beschreibung des\n" " dazugehörigen Befehls.\n" "\n" "Autoren: Betätigen Sie %s um die Autoren von calcurse zu sehen." msgid "Save\n" msgstr "Speichern\n" #, c-format msgid "" "Save calcurse data.\n" "Data are splitted into four different files which contain :\n" "\n" " / ~/.calcurse/conf -> user configuration\n" " | (layout, color, general options)\n" " | ~/.calcurse/apts -> data related to the appointments\n" " | ~/.calcurse/todo -> data related to the todo list\n" " \\ ~/.calcurse/keys -> user-defined key bindings\n" "\n" "In the config menu, you can choose to save the Calcurse data\n" "automatically before quitting." msgstr "" "Daten in calcurse speichern.Die Daten werden in vier verschiedenen Dateien " "abgelegt :\n" "\n" " / ~/.calcurse/conf -> die Benutzereinstellungen\n" " | (Layout, Farbe, allg. Optionen)\n" " | ~/.calcurse/apts -> die Daten zu den Terminen\n" "\t| ~/.calcurse/todo -> die Daten zu den Aufgaben\n" "\t \\ ~/.calcurse/keys -> Benutzerdefinierte Tastenkürzel\n" "\n" "Im Einstellungsmenü können Sie eine Option wählen, welche die\n" "Calcurse-Daten automatisch vor dem Verlassen des Programms speichert." msgid "Import\n" msgstr "Importieren\n" #, c-format msgid "" "Import data from an icalendar file.\n" "You will be asked to enter the file name from which to load ical\n" "items. At the end of the import process, and if the general option\n" "'system_dialogs' is set to 'yes', a report indicating how many items\n" "were imported is shown.\n" "This report contains the total number of lines read, the number of\n" "appointments, events and todo items which were successfully imported,\n" "together with the number of items for which problems occured and that\n" "were skipped, if any.\n" "\n" "If one or more items could not be imported, one has the possibility to\n" "read the import process report in order to identify which problems\n" "occured.\n" "In this report is shown one item per line, with the line in the input\n" "stream at which this item begins, together with the description of why\n" "the item could not be imported.\n" msgstr "" "Daten von einer iCal Datei importieren.\n" "calcurse erwartet ein Dateinamen, von dem die iCal Daten geladen\n" "werden sollen. Am Ende des Imports wird eine Zusammenfassung\n" "angezeigt, wenn nicht 'system_dialogs' auf 'Ja' gesetzt ist.\n" "Die Anzahl der erfolgreich importierten Termine, Ereignisse und\n" "Aufgaben wird angezeigt und die Anzahl der fehlerhaften Einträge,wenn es " "Fehler gab.\n" "\n" "Wenn eine oder mehr Einträge nicht gelesen werden konnten, dann\n" "kann in der Log nachgesehen werden welche Fehler aufgetreten sind.\n" "Die Log zeigt einen Eintrag pro Zeile, mit der Zeilennummer der\n" "Quelldatei, an der der Eintrag beginnt, mit der Beschreibung warum\n" "der Eintrag nicht importiert wurde.\n" msgid "Export\n" msgstr "Exportieren\n" #, c-format msgid "" "Export calcurse data (appointments, events and todos).\n" "This leads to the export submenu, from which you can choose between\n" "two different export formats: 'ical' and 'pcal'. Choosing one of\n" "those formats lets you export calcurse data to icalendar or pcal\n" "format.\n" "\n" "You first need to specify the file to which the data will be exported.\n" "By default, this file is:\n" "\n" " ~/calcurse.ics\n" "\n" "for an ical export, and:\n" "\n" " ~/calcurse.txt\n" "\n" "for a pcal export.\n" "\n" "Calcurse data are exported in the following order:\n" " events, appointments, todos.\n" msgstr "" "Exportieren von calcurse Daten (Termine, Ereignisse und Aufgaben).\n" "Der Befehl führt in das Export Untermenü, hier kann entschieden werden\n" "zwischen zwei Exportformaten: ical und pcal.\n" "\n" "Sie müssen die Datei angeben, in welche Sie die Daten exportieren möchten.\n" "Als Standard ist dies:\n" "\n" "Für das ical (iCalendar) Format:\n" "\n" " ~/calcurse.ics\n" "\n" "Für das pcal Format:\n" "\n" " ~/calcurse.txt\n" "\n" "Die calcurse Daten werden in folgender Sortierung exportiert:\n" " Ereignisse, Termine, Aufgaben.\n" msgid "Displacement keys\n" msgstr "Ersetzungstasten\n" #, c-format msgid "" "Move around inside calcurse screens.\n" "The following scheme summarizes how to get around:\n" "\n" " move up\n" " move to previous week\n" "\n" " %s\n" " move left ^ \n" " move to previous day |\n" " %s\n" " <-- + -->\n" " %s\n" " | move right\n" " v move to next day\n" " %s\n" "\n" " move to next week\n" " move down\n" "\n" "Moreover, while inside the calendar panel, the '%s' key moves\n" "to the first day of the week, and the '%s' key selects the last day of\n" "the week.\n" msgstr "" "Bewegen in calcurse-Menüs.\n" "Das folgende Schema erläutert, wie das Bewegen in Menüs funktioniert:\n" "\n" " nach oben\n" " gehe zu voriger Woche\n" "\n" " %s\n" " nach links ^ \n" " gehe zu vorigem Tag |\n" " %s\n" " <-- + -->\n" " %s\n" " | nach rechts\n" " v gehe zu nächstem Tag\n" " %s\n" "\n" " gehe zu nächster Woche\n" " nach unten\n" "\n" "Innerhalb des Kalenderbereiches kann außerdem die '%s'-Taste verwendet\n" "werden, um zum ersten, sowie die '%s'-Taste um zum letzten Tag der\n" "Woche zu springen.\n" msgid "View\n" msgstr "Ansicht\n" #, c-format msgid "" "View the item you select in either the Todo or Appointment panel.\n" "\n" "This is usefull when an event description is longer than the available\n" "space to display it. If that is the case, the description will be\n" "shortened and its end replaced by '...'. To be able to read the entire\n" "description, just press '%s' and a popup window will appear, containing\n" "the whole event.\n" "\n" "Press any key to close the popup window and go back to the main\n" "Calcurse screen." msgstr "" "Einen gewählten Eintrag einzusehen, im Aufgaben- oder Terminbereich.\n" "\n" "Dieses kann nützlich sein, wenn eine Ereignisbeschreibung länger als der\n" "verfügbare Platz auf dem Terminal ist. Ist dies der Fall, wird die\n" "Beschreibung gekürzt und der Rest durch '...' ersetzt. Um den Rest dieser\n" "Beschreibung einzusehen, benutzen Sie die %s Taste. Ein Fenster erscheint,\n" "welches das ganze Ereignis enthält.\n" "\n" "Betätigen Sie eine beliebige Taste um das Fenster zu schließen und zum\n" "Hauptfenster des Programms zurückzukehren." msgid "Pipe\n" msgstr "Weiterleiten\n" #, c-format msgid "" "Pipe the selected item to an external program.\n" "\n" "Press the '%s' key to pipe the currently selected appointment or\n" "todo entry to an external program.\n" "\n" "You will be driven back to calcurse as soon as the program exits.\n" msgstr "" "Leite das ausgewählte Item an ein externes Programm weiter.\n" "\n" "Drücken Sie die '%s'-Taste, um das aktuell ausgewählte Item an ein\n" "externes Programm weiterzuleiten.\n" "\n" "Sie kehren in calcurse zurück, sobald das Programm terminiert.\n" msgid "Tab\n" msgstr "Tabulator\n" #, c-format msgid "" "Switch between panels.\n" "The panel currently in use has its border colorized.\n" "\n" "Some actions are possible only if the right panel is selected.\n" "For example, if you want to add a task in the TODO list, you need first\n" "to press the '%s' key to get the TODO panel selected. Then you can\n" "press '%s' to add your item.\n" "\n" "Notice that at the bottom of the screen the list of possible actions\n" "change while pressing '%s', so you always know what action can be\n" "performed on the selected panel." msgstr "" "Zwischen den Anzeigen wechseln.\n" "Der Rahmen der aktuell gewählten Anzeige wird farbig hervorgehoben.\n" "\n" "Einige Aktionen sind nur möglich, wenn die richtige Anzeige gewählt wurde.\n" "Wenn Sie beispielsweise eine Aufgabe in die Aufgabenliste einfügen wollen,\n" "müssen Sie die %s Taste betätigen, um die Aufgabenanzeige hervorzuheben.\n" "Erst dann können Sie mit %s einen neuen Eintrag hinzufügen.\n" "\n" "Beachten Sie, dass sich im unteren Teil des Bildschirms die Liste der " "möglichen\n" "Aktionen verändert, wenn Sie die %s Taste betätigen. So sehen Sie, welche\n" "Aktionen auf der gewählten Anzeige durchgeführt werden können." msgid "Goto\n" msgstr "Gehe zu\n" #, c-format msgid "" "Jump to a specific day in the calendar.\n" "\n" "Using this command, you do not need to travel to that day using\n" "the displacement keys inside the calendar panel.\n" "If you hit [ENTER] without specifying any date, Calcurse checks the\n" "system current date and you will be taken to that date.\n" "\n" "Notice that pressing '%s', whatever panel is\n" "selected, will select current day in the calendar." msgstr "" "Springen zu einem Tag im Kalender.\n" "\n" "Mit diesem Kommando springen Sie direkt zu einem Datum, ohne die\n" "entsprechenden Tasten in der Kalenderanzeige verwenden zu müssen.\n" "Wenn Sie [EINGABE] betätigen ohne einen Tag anzugeben, ermittelt\n" "calcurse das aktuelle Systemdatum und wählt automatisch diesen Tag aus.\n" "Beachte, dass die Taste %s unabhängig von der aktiven Anzeige immer\n" "zum aktuellen Tag im Kalender springt." msgid "Delete\n" msgstr "Löschen\n" #, c-format msgid "" "Delete an element in the ToDo or Appointment list.\n" "\n" "Depending on which panel is selected when you press the delete key,\n" "the hilighted item of either the ToDo or Appointment list will be \n" "removed from this list.\n" "\n" "If the item to be deleted is recurrent, you will be asked if you\n" "wish to suppress all of the item occurences or just the one you\n" "selected.\n" "\n" "If the general option 'confirm_delete' is set to 'YES', then you will\n" "be asked for confirmation before deleting the selected event.\n" "Do not forget to save the calendar data to retrieve the modifications\n" "next time you launch Calcurse." msgstr "" "Ein Element aus der Aufgaben- oder Terminliste entfernen.\n" "\n" "Beim Drücken der [Entf]-Taste wird abhängig vom aktuell gewählten\n" "Bereich entweder die momentan selektierte Aufgabe oder der momentan\n" "selektierte Termin entfernt.\n" "\n" "Falls das zu entfernende Element ein wiederkehrendes Element ist,\n" "werden Sie gefragt, ob alle Termine entfernt werden sollen, oder nur\n" "der tatsächlich ausgewählte.\n" "\n" "Wenn die Option 'confirm_delete' aktiviert ist, werden Sie zu einer\n" "zusätzlichen Bestätigung aufgefordert, bevor der Termin entfernt wird.\n" "Vergessen Sie nicht, die Kalenderdaten zu speichern, damit diese beim\n" "nächsten Start von Calcurse erhalten bleiben." msgid "Add\n" msgstr "Hinzufügen\n" #, c-format msgid "" "Add an item in either the ToDo or Appointment list, depending on which\n" "panel is selected when you press '%s'.\n" "\n" "To enter a new item in the TODO list, you will need first to enter the\n" "description of this new item. Then you will be asked to specify the todo\n" "priority. This priority is represented by a number going from 9 for the\n" "lowest priority, to 1 for the highest one. It is still possible to\n" "change the item priority afterwards, by using the '%s' and '%s' keys\n" "inside the todo panel.\n" "\n" "If the APPOINTMENT panel is selected while pressing '%s', you will be\n" "able to enter either a new appointment or a new all-day long event.\n" "To enter a new event, press [ENTER] instead of the item start time, and\n" "just fill in the event description.\n" "To enter a new appointment to be added in the APPOINTMENT list, you\n" "will need to enter successively the time at which the appointment\n" "begins, the appointment length (either by specifying the end time in\n" "[hh:mm] or the duration in [+hh:mm], [+xxdxxhxxm] or [+mm] format), \n" "and the description of the event.\n" "\n" "The day at which occurs the event or appointment is the day currently\n" "selected in the calendar, so you need to move to the desired day before\n" "pressing '%s'.\n" "\n" "Notes:\n" " o if an appointment lasts for such a long time that it continues\n" " on the next days, this event will be indicated on all the\n" " corresponding days, and the beginning or ending hour will be\n" " replaced by '..' if the event does not begin or end on the day.\n" " o if you only press [ENTER] at the APPOINTMENT or TODO event\n" " description prompt, without any description, no item will be\n" " added.\n" " o do not forget to save the calendar data to retrieve the new\n" " event next time you launch Calcurse." msgstr "" "Ein Element zur Aufgaben- oder Terminliste hinzufügen, abhängig davon,\n" "welcher Bereich ausgewählt ist, wenn Sie '%s' drücken.\n" "\n" "Um eine neues Element zur Aufgabenliste hinzuzufügen, müssen Sie\n" "zunächst die Beschreibung des neuen Elements eingeben. Daraufhin werden\n" "Sie aufgefordert, eine Priorität festzulegen. Diese Priorität wird durch\n" "eine Ziffer zwischen 1 (höchste Priorität) und 9 (niedrigste Priorität)\n" "repräsentiert. Es ist möglich, die Priorität im Nachhinein mithilfe der\n" "'%s'- und '%s'-Tasten nochmals zu ändern.\n" "Wenn der Terminbereich beim Drücken von '%s' aktiviert ist, können Sie\n" "einen neuen Termin oder ein neues Ereignis erstellen. Um ein Ereignis zu\n" "erstellen, drücken Sie [EINGABE] anstelle einer Startzeit und füllen Sie\n" "anschließend nur die Beschreibung aus.\n" "Um einen neuen Termin zu erstellen, müssen Sie zunächst die Startzeit,\n" "die Termindauer (entweder durch Festlegen einer Endzeit im [hh:mm]- oder\n" "einer Dauer im [+hh:mm]-, [+xxdxxhxxm]- or [+mm]-Format), sowie die\n" "Beschreibung des Elements eingeben.\n" "\n" "Der Tag, an welchem das Ergeignis oder der Termin stattfindet, ist immer\n" "der aktuell ausgewählte. Daher muss der gewünschte Tag selektiert\n" "werden, bevor mit '%s' das neue Element erstellt wird.\n" "\n" "Hinweise:\n" " o Wenn ein Termin über das Ende des Tages hinweg dauert, wird\n" " dies mit '..' in der Start-/Endzeit markiert.\n" " o Wenn keine Beschreibung eingegeben wird, wird das Erstellen\n" " eines neuen Elements abgebrochen.\n" " o Vergessen Sie nicht, die Kalenderdaten zu speichern, damit diese\n" " beim nächsten Start von Calcurse erhalten bleiben." msgid "Copy and Paste\n" msgstr "Kopieren und Einfügen\n" #, c-format msgid "" "Copy and paste the currently selected item. This is useful to quickly\n" "copy an item from one date to another. To do so, one must first\n" "highlight the item that needs to be copied, then press '%s' to copy.\n" "Once the new date is chosen in the calendar, the appointment panel must\n" "be selected and the '%s' key must be pressed to paste the item. The item\n" "will appear in the appointment panel, assigned to the newly selected\n" "date.\n" "\n" msgstr "" "Ausschneiden und Einfügen des aktuell markierten Eintrags. Dies ist\n" "hilfreich um schnell einen Eintrag auf ein anderes Datum zu verschieben. Um " "es zu benutzen muss zuerst der Eintrag, der verschoben werden soll, " "hervorgehoben werden, dann %s drücken zum Ausschneiden. Wenn das neue Datum " "im Kalender gewählt ist zum Terminfenster wechseln und %s drücken um den " "Eintrag einzufügen. Der Eintrag erscheint wieder im Terminfenster, " "allerdings (nur !) am neu gewählten Datum.\n" msgid "Edit Item\n" msgstr "Bearbeiten\n" #, c-format msgid "" "Edit the item which is currently selected.\n" "Depending on the item type (appointment, event, or todo), and if it is\n" "repeated or not, you will be asked to choose one of the item properties\n" "to modify. An item property is one of the following: the start time, the\n" "end time, the description, or the item repetition.\n" "Once you have chosen the property you want to modify, you will be shown\n" "its actual value, and you will be able to change it as you like.\n" "\n" "Notes:\n" " o if you choose to edit the item repetition properties, you will\n" " be asked to re-enter all of the repetition characteristics\n" " (repetition type, frequence, and ending date). Moreover, the\n" " previous data concerning the deleted occurences will be lost.\n" " o do not forget to save the calendar data to retrieve the\n" " modified properties next time you launch Calcurse." msgstr "" "Das aktuell ausgewählte Element bearbeiten.\n" "Abhängig vom Elementtyp (Termin, Ereignis oder Aufgabe) und davon, ob\n" "es sich um ein wiederkehrendes Element handelt, werden Sie aufgefordert,\n" "eine zu bearbeitende Element-Eigenschaft zu wählen: den Starttermin, \n" "den Endtermin, die Beschreibung oder die Wiederholung.\n" "Sobald die Eigenschaft ausgewählt ist, wird ihr aktueller Wert gezeigt,\n" "der daraufhin wie gewünscht angepasst werden kann.\n" "\n" "Hinweise:\n" " o Bei Anpassungen der Wiederholung müssen alle Charakteristiken der\n" " Wiederholung neu eingegeben werden (Art der Wiederholung,\n" " Wiederholung und Enddatum). Des Weiteren gehen vorige\n" " Informationen zu gelöschten wiederkehrenden Terminen verloren.\n" " o Vergessen Sie nicht, die Kalenderdaten zu speichern, damit diese\n" " beim nächsten Start von Calcurse erhalten bleiben." msgid "EditNote\n" msgstr "Notiz bearb.\n" #, c-format msgid "" "Attach a note to any type of item, or edit an already existing note.\n" "This feature is useful if you do not have enough space to store all\n" "of your item description, or if you would like to add sub-tasks to an\n" "already existing todo item for example.\n" "Before pressing the '%s' key, you first need to highlight the item you\n" "want the note to be attached to. Then you will be driven to an\n" "external editor to edit your note. This editor is chosen the following\n" "way:\n" " o if the 'VISUAL' environment variable is set, then this will be\n" " the default editor to be called.\n" " o if 'VISUAL' is not set, then the 'EDITOR' environment variable\n" " will be used as the default editor.\n" " o if none of the above environment variables is set, then\n" " '/usr/bin/vi' will be used.\n" "\n" "Once the item note is edited and saved, quit your favorite editor.\n" "You will then go back to Calcurse, and the '>' sign will appear in front\n" "of the highlighted item, meaning there is a note attached to it." msgstr "" "Eine Notiz an ein beliebiges Element anhängen oder bearbeiten.\n" "Dieses Feature ist nützlich, wenn der Platz der Beschreibung nicht\n" "ausreicht, oder wenn beispielsweise Teilaufgaben zu einer existierenden\n" "Aufgabe hinzugefügt werden sollen.\n" "Vor dem Betätigen der '%s'-Taste, muss zunächst das gewünschte Element\n" "ausgewählt werden. Anschließend wird automatisch ein Editor gestartet,\n" "in dem die Notiz bearbeitet werden kann. Die Wahl des Editors erfolgt\n" "wie folgt:\n" " o wenn die 'VISUAL'-Umgebungsvariable gesetzt ist, wird der dort\n" " festgelegte Editor verwendet.\n" " o ist 'VISUAL' nicht gesetzt, wird die 'EDITOR'-Umgebungsvariable\n" " herangezogen.\n" " o ist keine dieser beiden Variablen gesetzt, wird automatisch\n" " '/usr/bin/vi' verwendet.\n" "\n" "Speichern Sie nach Abschluss der Bearbeitung und beenden Sie den Editor.\n" "Sie gelangen anschließend wieder zurück in Calcurse, wo '>' vor dem\n" "entsprechenden Element als Markierung für eine Notiz erscheint." msgid "ViewNote\n" msgstr "Notiz\n" #, c-format msgid "" "View a note which was previously attached to an item (an item which\n" "owns a note has a '>' sign in front of it).\n" "This command only permits to view the note, not to edit it (to do so,\n" "use the 'EditNote' command, by pressing the '%s' key).\n" "Once you highlighted an item with a note attached to it, and the '%s' key\n" "was pressed, you will be driven to an external pager to view that note.\n" "The default pager is chosen the following way:\n" " o if the 'PAGER' environment variable is set, then this will be\n" " the default viewer to be called.\n" " o if the above environment variable is not set, then\n" " '/usr/bin/less' will be used.\n" "As for editing a note, quit the pager and you will be driven back to\n" "Calcurse." msgstr "" "Ansehen einer Notiz, die zuvor an einen Eintrag angehängt wurde (ein\n" "Eintrag mit Notiz ist mit einem '>' Zeichen davor markiert).\n" "Dieser Befehl erlaubt nur das Ansehen einer Notiz, nicht das Bearbeiten\n" "(Zum Bearbeiten muss 'Notiz bearbeiten' benutzt werden, wenn die Taste\n" "%s gedrückt wird).\n" "Wenn ein Eintrag mit angehängter Notiz markiert ist und die %s Taste\n" "gedrückt wird, dann erscheint ein Pager zum Anzeigen der Notiz.\n" "Der Standard-Pager wird gesetzt mit:\n" " o Wenn die 'PAGER' Umgebungsvariable gesetzt ist, dann wird dieser\n" " zum Betrachten der Notiz benutzt.\n" " o Wenn die Variable nicht gesetzt ist, dann wird als Standard der " "Pager\n" " /usr/bin/less benutzt.\n" "\n" "Um eine Notiz zu bearbeiten den Pager beenden und man kommt zurück\n" "zu calcurse" msgid "Priority\n" msgstr "Priorität\n" #, c-format msgid "" "Change the priority of the currently selected item in the ToDo list.\n" "Priorities are represented by the number appearing in front of the\n" "todo description. This number goes from 9 for the lowest priority to\n" "1 for the highest priority.\n" "Todo having higher priorities are placed first (at the top) inside the\n" "todo panel.\n" "\n" "If you want to raise the priority of a todo item, you need to press '%s'.\n" "In doing so, the number in front of this item will decrease, meaning its\n" "priority increases. The item position inside the todo panel may change,\n" "depending on the priority of the items above it.\n" "\n" "At the opposite, to lower a todo priority, press '%s'. The todo position\n" "may also change depending on the priority of the items below." msgstr "" "Die Priorität des aktuell gewählten Elements in der Aufgabenliste ändern.\n" "Prioritäten werden durch Ziffern zwischen 1 (höchste Priorität) und 9\n" "(niedrigste Priorität) repräsentiert. Aufgaben mit höherer Priorität\n" "erscheinen im Aufgabenbereich weiter oben.\n" "\n" "Mit '%s' kann die Priorität einer Elements erhöht werden. Dadurch wird\n" "die Ziffer vor dem Element um eins erniedrigt, was einer Erhöhung der\n" "Priorität entspricht. Die Position des Elements innerhalb des\n" "Aufgabenbereiches kann sich dadurch eventuell ändern.\n" "\n" "Analog kann '%s' verwendet werden, um die Priorität zu verringern. Auch\n" "hier kann sich die Position des Elements eventuell ändern." msgid "Repeat\n" msgstr "Wiederholen\n" #, c-format msgid "" "Repeat an event or an appointment.\n" "You must first select the item to be repeated by moving inside the\n" "appointment panel. Then pressing '%s' will lead you to a set of three\n" "questions, with which you will be able to specify the repetition\n" "characteristics:\n" "\n" " o type: you can choose between a daily, weekly, monthly or\n" " yearly repetition by pressing 'D', 'W', 'M' or 'Y'\n" " respectively.\n" "\n" " o frequence: this indicates how often the item shall be repeated.\n" " For example, if you want to remember an anniversary,\n" " choose a 'yearly' repetition with a frequence of '1',\n" " which means it must be repeated every year. Another\n" " example: if you go to the restaurant every two days,\n" " choose a 'daily' repetition with a frequence of '2'.\n" "\n" " o ending date: this specifies when to stop repeating the selected\n" " event or appointment. To indicate an endless \n" " repetition, enter '0' and the item will be repeated\n" " forever.\n" "\n" "Notes:\n" " o repeated items are marked with an '*' inside the appointment\n" " panel, to be easily recognizable from non-repeated ones.\n" " o the 'Repeat' and 'Delete' command can be mixed to create\n" " complicated configurations, as it is possible to delete only\n" " one occurence of a repeated item." msgstr "" "Ein Ereignis oder Termin wiederholen.\n" "Zunächst muss das zu wiederholende Element im Terminbereich ausgewählt\n" "werden. Beim Drücken von '%s' können anschließend drei Charakteristiken\n" "der Wiederholung festgesetzt werden:\n" "\n" " o Art: Wahl zwischen täglicher ('D'), wöchentlicher ('W'),\n" " monatlicher ('M') oder jährlicher ('Y') Wiederholung.\n" "\n" " o Wiederholung: Wie häufig die Wiederholung stattfinden soll.\n" " Für eine Geburtstagserinnerung sollte beispielsweise\n" " jährliche Wiederholung mit einer Wiederholung von '1'\n" " verwendet werden. Wenn zum Beispiel alle zwei Tage\n" " ein Restaurantbesuch geplant ist, eignet sich eine\n" " tägliche Wiederholung mit einer Wiederholung von '2'.\n" "\n" " o Enddatum: Legt fest, wann die Wiederholung des Elements stoppen\n" " soll. Für eine Endloswiederholung kann '0' verwendet\n" " werden.\n" "\n" "Hinweise:\n" " o Wiederkehrende Elemente werden durch ein '*' im Terminbereich\n" " gekennzeichnet, um diese leicht unterscheiden zu können.\n" " o 'Wiederholen' und 'Löschen' können zusammen verwendet werden,\n" " um Ausnahmen bei der Wiederholung festzulegen." msgid "Flag Item\n" msgstr "Eigenschaft\n" #, c-format msgid "" "Toggle an appointment's 'important' flag or a todo's 'completed' flag.\n" "If a todo is flagged as completed, its priority number will be replaced\n" "by an 'X' sign. Completed tasks will no longer appear in exported data\n" "or when using the '-t' command line flag (unless specifying '0' as the\n" "priority number, in which case only completed tasks will be shown).\n" "\n" "If an appointment is flagged as important, an exclamation mark appears\n" "in front of it, and you will be warned if time gets closed to the\n" "appointment start time.\n" "To customize the way one gets notified, the configuration submenu lets\n" "you choose the command launched to warn user of an upcoming appointment,\n" "and how long before it he gets notified." msgstr "" "Das 'wichtig'-Flag eines Termins oder das 'abgeschlossen'-Flag einer\n" "Aufgabe an-/ausschalten.\n" "Wenn eine Aufgabe als abgeschlossen markiert ist, wird deren Priorität\n" "durch ein 'X' ersetzt. Abgeschlossene Aufgaben erscheinen weder in\n" "exportierten Daten, noch beim Verwenden des '-t'-Kommandozeilenarguments\n" "(außer wenn dort '0' als Priorität angegeben wird).\n" "\n" "Wenn ein Termin als wichtig markiert wird, erscheint ein Ausrufezeichen\n" "vor diesem und Sie werden kurz vor Start des Termines gewarnt.\n" "Um die Art und Vorlaufzeit der Benachrichtigung anzupassen, können die\n" "Benachrichtigungseinstellungen verwendet werden." msgid "Config\n" msgstr "Einstellungen\n" #, c-format msgid "" "Open the configuration submenu.\n" "From this submenu, you can select between color, layout, notification\n" "and general options, and you can also configure your keybindings.\n" "\n" "The color submenu lets you choose the color theme.\n" "The layout submenu lets you choose the Calcurse screen layout, in other\n" "words where to place the three different panels on the screen.\n" "The general options submenu brings a screen with the different options\n" "which modifies the way Calcurse interacts with the user.\n" "The notify submenu allows you to change the notify-bar settings.\n" "The keys submenu lets you define your own key bindings.\n" "\n" "Do not forget to save the calendar data to retrieve your configuration\n" "next time you launch Calcurse." msgstr "" "Das Konfigurationsmenü öffnen.\n" "In diesem Untermenü können Sie zwischen Farb-, Layout-,\n" "Benachrichtigungs-, allgemeinen Einstellungen und Tastenkürzeln wählen.\n" "\n" "In den Farbeinstellungen kann das Farbschema geändert werden.\n" "In den Layouteinstellungen kann festgelegt werden, wie die drei\n" "verschiedenen Bereiche auf dem Bildschirm angeordnet werden sollen.\n" "In den allgemeinen Einstellungen gibt es Optionen, die zur Anpassung\n" "der Interaktion zwischen Calcurse und dem Benutzer dienen.\n" "In den Benachrichtigungseinstellungen können Einstellungen für die\n" "Benachrichtigungsleiste modifiziert werden.\n" "Im Tastenmenü können Tastenkürzel festgelegt werden.\n" "\n" "Vergessen Sie nicht, die Kalenderdaten zu speichern, damit diese beim\n" "nächsten Start von Calcurse erhalten bleiben." msgid "Generic keybindings\n" msgstr "Allgemeingültige Tasten\n" #, c-format msgid "" "Some of the keybindings apply whatever panel is selected. They are\n" "called generic keybinding.\n" "Here is the list of all the generic key bindings, together with their\n" "corresponding action:\n" "\n" " '%s' : Redraw function -> redraws calcurse panels, this is useful if\n" " you resize your terminal screen or when\n" " garbage appears inside the display\n" " '%s' : Add Appointment -> add an appointment or an event\n" " '%s' : Add ToDo -> add a todo\n" " '%s' : -1 Day -> move to previous day\n" " '%s' : +1 Day -> move to next day\n" " '%s' : -1 Week -> move to previous week\n" " '%s' : +1 Week -> move to next week\n" " '%s' : -1 Month -> move to previous month\n" " '%s' : +1 Month -> move to next month\n" " '%s' : -1 Year -> move to previous year\n" " '%s' : +1 Year -> move to next year\n" " '%s' : Goto today -> move to current day\n" "\n" "The '%s' and '%s' keys are used to scroll text upward or downward\n" "when inside specific screens such the help screens for example.\n" "They are also used when the calendar screen is selected to switch\n" "between the available views (monthly and weekly calendar views)." msgstr "" "Einige Tastenkürzel können überall verwendet werden. Diese werden\n" "als generische Tastenkürzel bezeichnet.\n" "Es folgt eine Liste aller generischen Tastenkürzel mit den jeweils\n" "zugehörigen Aktionen:\n" "\n" " '%s' : Neu zeichnen -> alle Fenster neu zeichnen lassen - z.B.\n" " nach Anpassung der Fenstergröße oder wenn\n" " seltsame Zeichen erscheinen\n" " '%s' : Neuer Termin -> Termin oder Ereignis erstellen\n" " '%s' : Neue Aufgabe -> Aufgabe erstellen\n" " '%s' : -1 Tag -> springe zu vorigem Tag\n" " '%s' : +1 Tag -> springe zu nächstem Tag\n" " '%s' : -1 Woche -> springe zu voriger Woche\n" " '%s' : +1 Woche -> springe zu nächster Woche\n" " '%s' : -1 Monat -> springe zu vorigem Monat\n" " '%s' : +1 Monat -> springe zu nächstem Monat\n" " '%s' : -1 Jahr -> springe zu vorigem Jahr\n" " '%s' : +1 Jahr -> springe zu nächstem Jahr\n" " '%s' : Aktueller Tag -> springe zu aktuellem Tag\n" "\n" "Die '%s'- und '%s'-Tasten können verwendet werden, um nach oben oder\n" "unten zu scrollen (beispielsweise im Hilfe-Menü). Sie können im\n" "Kalenderbereich auch genutzt werden, um zwischen verschiedenen Ansichten\n" "(Monats- oder Wochenübersicht) zu wechseln." msgid "OtherCmd\n" msgstr "Weitere Befehle\n" #, c-format msgid "" "Switch between status bar help pages.\n" "Because the terminal screen is too narrow to display all of the\n" "available commands, you need to press '%s' to see the next set of\n" "commands together with their keybindings.\n" "Once the last status bar page is reached, pressing '%s' another time\n" "leads you back to the first page." msgstr "" "Zwischen den einzelnen Hilfsseiten in der Statusleiste springen.\n" "Da der Terminalbildschirm nicht ausreicht, um alle verfügbaren\n" "Befehle anzuzeigen, kann '%s' verwendet werden, um die nächsten\n" "Befehle mit den zugehörigen Tastenkürzeln zu zeigen.\n" "Auf der letzten Seite angelangt, springt '%s' wieder zurück zur\n" "ersten Seite." msgid "Calcurse - text-based organizer" msgstr "Calcurse - textbasierender Terminkalender" #, c-format msgid "" "\n" "Copyright (c) 2004-2013 calcurse Development Team\n" "All rights reserved.\n" "\n" "Redistribution and use in source and binary forms, with or without\n" "modification, are permitted provided that the following conditions\n" "are met:\n" "\n" "\t- Redistributions of source code must retain the above\n" "\t copyright notice, this list of conditions and the\n" "\t following disclaimer.\n" "\n" "\t- Redistributions in binary form must reproduce the above\n" "\t copyright notice, this list of conditions and the\n" "\t following disclaimer in the documentation and/or other\n" "\t materials provided with the distribution.\n" "\n" "\n" "Send your feedback or comments to : misc@calcurse.org\n" "Calcurse home page : http://calcurse.org" msgstr "" "\n" "Copyright (c) 2004-2013 calcurse Development Team\n" "Alle Rechte vorbehalten.\n" "\n" "Redistribution and use in source and binary forms, with or without\n" "modification, are permitted provided that the following conditions\n" "are met:\n" "\n" "\t- Redistributions of source code must retain the above\n" "\t copyright notice, this list of conditions and the\n" "\t following disclaimer.\n" "\n" "\t- Redistributions in binary form must reproduce the above\n" "\t copyright notice, this list of conditions and the\n" "\t following disclaimer in the documentation and/or other\n" "\t materials provided with the distribution.\n" "\n" "\n" "Feedback oder Kommentare an: misc@calcurse.org\n" "Calcurse Homepage: http://calcurse.org" msgid "unknown ical type" msgstr "Unbekannter ICal Typ" msgid "recurrence frequence not found." msgstr "Wiederholungstyp nicht gefunden." msgid "recurrence frequence not recognized." msgstr "Wiederholungstyp nicht bekannt." msgid "recurrence rule malformed." msgstr "Wiederholungstyp falsch." msgid "recurrence exception dates malformed." msgstr "Ausnahmen des Wiederholungstyp falsch." msgid "could not get entire item description." msgstr "Kann nicht die ganze Beschreibung lesen." msgid "description malformed." msgstr "Beschreibung Fehlerhaft." msgid "appointment has no start time." msgstr "Termin hat keine Startzeit." msgid "could not compute duration (no end time)." msgstr "Kann Dauer nicht berechnen (keine Endzeit)." msgid "item has a negative duration." msgstr "Eintrag hat eine negative Dauer." msgid "event date is not defined." msgstr "Ereignisdatum ist nicht eingegeben." msgid "item could not be identified." msgstr "Element kann nicht erkannt werden." msgid "could not retrieve item summary." msgstr "Kann die Zusammenfassung des Eintrags nicht lesen." msgid "could not retrieve event start time." msgstr "Kann die Startzeit des Ereignis nicht lesen." msgid "could not retrieve event end time." msgstr "Kann die Endzeit des Ereignis nicht lesen." msgid "item duration malformed." msgstr "Dauer des Eintrags fehlerhaft." msgid "The ical file seems to be malformed. The end of item was not found." msgstr "Die ICal Datei ist fehlerhaft. Keine Enddatum des Eintrags gefunden." msgid "item priority is not acceptable (must be between 1 and 9)." msgstr "Priorität des Eintrags muss zwischen 1 und 9 liegen." msgid "Warning: ical header malformed or wrong version number. Aborting..." msgstr "WARNUNG ICal Kopf fehlerhaft oder falsche Versionsnummer. Abbruch..." msgid "Enter the new time ([hh:mm] or [hhmm]) : " msgstr "Neue Uhrzeit eingeben ([hh:mm] oder [hhmm]) :" msgid "Press [Enter] to continue" msgstr "[EINGABE]-Taste um fortzufahren" msgid "You entered an invalid time, should be [hh:mm] or [hhmm]" msgstr "" "Sie haben eine ungültige Uhrzeit eingegeben, sollte im Format [hh:mm] oder " "[hhmm] sein" msgid "" "Enter new end time ([hh:mm], [hhmm]) or duration ([+hh:mm], [+xxxdxxhxxm] or " "[+mm]) : " msgstr "" "Neue End-Uhrzeit (Format [hh:mm] oder [hhmm]) oder Dauer ([+hh:mm], " "[+xxxdxxhxxm] oder [+mm]) eingeben :" msgid "Invalid time: start time must be before end time!" msgstr "Ungültige Zeitangabe: Der Startzeitpunkt muss vor dem Ende liegen!" msgid "Enter the new item description:" msgstr "Geben Sie eine neue Beschreibung ein:" msgid "Enter the new repetition type:" msgstr "Neuen Wiederholungstyp eingeben:" msgid "(d)aily" msgstr "(t)äglich" msgid "(w)eekly" msgstr "(w)öchentlich" msgid "(m)onthly" msgstr "(m)onatlich" msgid "(y)early" msgstr "(j)ährlich" #, c-format msgid "(currently using %s)" msgstr "(verwende momentan %s)" msgid "[dwmy]" msgstr "[twmj]" msgid "The frequence you entered is not valid." msgstr "Das eingegebene Wiederholung ist ungültig." msgid "The entered date is not valid." msgstr "Das eingegebene Datum ist ungültig." #, c-format msgid "Possible formats are [%s] or '0' for an endless repetition." msgstr "Mögliche Formate sind [%s] oder '0' für Endloswiederholung." msgid "Enter the new repetition frequence:" msgstr "Neue Wiederholung eingeben:" #, c-format msgid "Enter the new ending date: [%s] or '0'" msgstr "Neues Enddatum eingeben: [%s] oder '0'" msgid "Description" msgstr "Beschreibung" msgid "Repetition" msgstr "Wiederholung" msgid "Edit: " msgstr "Bearbeiten:" msgid "Start time" msgstr "Start-Uhrzeit" msgid "End time" msgstr "End-Uhrzeit" msgid "Pipe item to external command:" msgstr "Leite an externen Befehl weiter:" msgid "" "Enter start time ([hh:mm] or [hhmm]), leave blank for an all-day event : " msgstr "" "Start-Uhrzeit eingeben (Format [hh:mm] oder [hhmm]); leer lassen für ein " "ganztägiges Ereignis :" msgid "" "Enter end time ([hh:mm] or [hhmm]) or duration ([+hh:mm], [+xxxdxxhxxm] or " "[+mm]) : " msgstr "" "End-Uhrzeit (Format [hh:mm] oder [hhmm]) oder Dauer ([+hh:mm], [+xxxdxxhxxm] " "oder [+mm]) eingeben :" msgid "Enter description :" msgstr "Beschreibung eingeben:" msgid "You entered an invalid start time, should be [hh:mm] or [hhmm]" msgstr "" "Sie haben eine ungültige Start-Uhrzeit eingegeben, sollte im Format [hh:mm] " "oder [hhmm] sein" msgid "" "Invalid end time/duration, should be [hh:mm], [hhmm], [+hh:mm], " "[+xxxdxxhxxm] or [+mm]" msgstr "" "Ungültige End-Uhrzeit/Dauer; sollte im Format [hh:mm], [hhmm], [+hh:mm], " "[+xxxdxxhxxm] oder [+mm] sein" msgid "Do you really want to delete this item ?" msgstr "Möchten Sie diesen Eintrag wirklich löschen?" msgid "This item is recurrent. Delete (a)ll occurences or just this (o)ne ?" msgstr "" "Wiederkehrender Termin, (a)lle Termine oder nur diesen (e)inen löschen ?" msgid "[ao]" msgstr "[ae]" msgid "This item has a note attached to it. Delete (i)tem or just its (n)ote ?" msgstr "Der Termin hat eine Notiz. (i) Termin oder (n) nur Notiz löschen?" msgid "[in]" msgstr "[in]" msgid "no such type" msgstr "Typ nicht gefunden" msgid "Enter the new ToDo item : " msgstr "Neue Aufgabe eingeben: " msgid "Enter the ToDo priority [1 (highest) - 9 (lowest)] :" msgstr "Priorität der Aufgabe [1 (höchste) - 9 (niedrigste)] :" msgid "Do you really want to delete this task ?" msgstr "Möchten Sie diese Aufgabe wirklich löschen?" msgid "This item has a note attached to it. Delete (t)odo or just its (n)ote ?" msgstr "Notiz vorhanden. (t) Aufgabe oder (n) nur die Notiz löschen?" msgid "[tn]" msgstr "[an]" msgid "Enter the new ToDo description :" msgstr "Neue Beschreibung der Aufgabe eingeben: " msgid "Enter the repetition type:" msgstr "Wiederholungstyp eingeben:" msgid "Enter the repetition frequence:" msgstr "Geben Sie das Wiederholungsintervall an:" #, c-format msgid "Enter the ending date: [%s] or '0' for an endless repetition" msgstr "Ende der Wiederholung: [%s] oder '0' für unendlich." #, c-format msgid "Possible formats are [%s] or '0' for an endless repetition" msgstr "Mögliche Eingaben sind [%s] oder '0' für unendlich." msgid "This item is already a repeated one." msgstr "Es handelt sich bereits um einen wiederkehrenden Eintrag." msgid "Press [ENTER] to continue." msgstr "[EINGABE] um fortzufahren." msgid "Sorry, the date you entered is older than the item start time." msgstr "Das eingegebene Datum liegt vor dem Anfangszeitpunkt." msgid "wrong item type" msgstr "Falscher Typ des Eintrags" msgid "Saving..." msgstr "Speichere..." msgid "Loading..." msgstr "Lade..." msgid "Exporting..." msgstr "Exportiere..." msgid "Internal error while displaying progress bar" msgstr "Interner Fehler beim Darstellen des Fortschrittsbalkens" msgid "Choose the file used to export calcurse data:" msgstr "Wählen Sie die Datei in die exportiert werden soll:" msgid "The file cannot be accessed, please enter another file name." msgstr "" "Auf die Datei kann nicht zugegriffen werden, bitte einen anderen Dateinamen " "eingeben." #, c-format msgid "Failed to open \"%s\", - %s\n" msgstr "Fehler beim öffnen \"%s\", - %s\n" msgid "Failed to build message\n" msgstr "Fehler beim Erstellen der Nachricht\n" #, c-format msgid "Failed to print message \"%s\"\n" msgstr "Fehler beim Drucken der Nachricht \"%s\"\n" #, c-format msgid "Failed to close \"%s\" - %s\n" msgstr "Fehler beim Schließen \"%s\" - %s\n" #, c-format msgid "%s does not exist, create it now [y or n] ? " msgstr "%s existiert nicht, jetzt erzeugen [y oder n] ? " msgid "aborting...\n" msgstr "abbrechen...\n" #, c-format msgid "%s successfully created\n" msgstr "%s erfolgreich erzeugt\n" msgid "starting interactive mode...\n" msgstr "Starte interaktiven Modus...\n" msgid "Problems accessing data file ..." msgstr "Probleme beim Zugriff auf Benutzerdaten ..." msgid "The data files were successfully saved" msgstr "Die Benutzerdaten wurden erfolgreich gespeichert" msgid "failed to open appointment file" msgstr "konnte Termin-Datei nicht öffnen" msgid "syntax error in the item date" msgstr "Eingabefehler im Datumseintrag" msgid "no event nor appointment found" msgstr "Kein Ereignis oder Termin gefunden" msgid "syntax error in item time or duration" msgstr "Syntaxfehler in Item-Zeit oder -Dauer" msgid "syntax error in item identifier" msgstr "Syntaxfehler im Item-Bezeichner" msgid "wrong format in the appointment or event" msgstr "Falsches Format für den Termin oder das Ereignis" msgid "syntax error in item repetition" msgstr "Syntaxfehler in Item-Wiederholung" msgid "failed to open todo file" msgstr "konnte Aufgaben-Datei nicht öffnen" msgid "failed to open key file" msgstr "Konnte Tasenkonfigurationsdatei nicht öffnen" msgid "" "\n" "Too many errors while reading configuration file!\n" "Please backup your keys file, remove it from directory, and launch calcurse " "again.\n" msgstr "" "\n" "Zu viele Fehler beim Lesen der Konfigurationsdatei!\n" "Bitte die Einstellungsdatei der Tastaturkürzel sichern, diese aus dem\n" "Verzeichnis löschen und calcurse neu starten.\n" msgid "Could not read key label" msgstr "Kann die Tastenbezeichnung nicht lesen" msgid "Key label not recognized" msgstr "Tastenbezeichnung nicht bekannt" #, c-format msgid "Error reading key: \"%s\"" msgstr "Fehler beim Lesen der Taste \"%s\"" #, c-format msgid "\"%s\" assigned multiple times!" msgstr "\"%s\" ist mehrfach zugeordnet" msgid "There were some errors when loading keys file, see log file ?" msgstr "Einige Fehler beim Lesen der 'keys'-Datei, Log ansehen?" msgid "Too many errors while reading keys file, aborting..." msgstr "Zu viele Fehler beim Lesen der 'keys'-Datei, Abbruch..." #, c-format msgid "FATAL ERROR: could not create %s: %s\n" msgstr "SCHWERER FEHLER Konnte %s nicht erstellen: %s\n" msgid "Welcome to Calcurse. Missing data files were created." msgstr "Willkommen zu calcurse. Fehlende Dateien werden erzeugt." msgid "Data files found. Data will be loaded now." msgstr "Benutzerdaten gefunden. Daten werden geladen." msgid "The data were successfully exported" msgstr "Die Daten wurden erfolgreich exportiert" msgid "unknown export type" msgstr "Unbekanntes Exportformat" msgid "wrong export mode" msgstr "Falsches Exportformat" msgid "Enter the file name to import data from:" msgstr "Dateiname zum Importieren eingeben:" #, c-format msgid "Import process report: %04d lines read " msgstr "Importstatus: %04d Zeilen eingelesen" msgid "unknown import type" msgstr "Unbekanntes Importformat" msgid "FATAL ERROR: the input file cannot be accessed, Aborting..." msgstr "SCHWERER FEHLER Eingabedatei kann nicht gelesen werden. Abbruch..." msgid "FATAL ERROR: wrong import mode" msgstr "SCHWERER FEHLER Falsches Exportformat" #, c-format msgid "%d app" msgid_plural "%d apps" msgstr[0] "%d Termin" msgstr[1] "%d Termine" #, c-format msgid "%d event" msgid_plural "%d events" msgstr[0] "%d Ereignis" msgstr[1] "%d Ereignisse" #, c-format msgid "%d todo" msgid_plural "%d todos" msgstr[0] "%d Aufgabe" msgstr[1] "%d Aufgaben" #, c-format msgid "%d skipped" msgstr "%d übersprungen" msgid "Some items could not be imported, see log file ?" msgstr "Einige Einträge wurden nicht Importiert, Logdatei ansehen?" msgid "Warning: could not create temporary log file, Aborting..." msgstr "WARNUNG Kann keine temporäre Logdatei anlegen. Abbruch..." msgid "Warning: could not open temporary log file, Aborting..." msgstr "WARNUNG Kann temporäre Logdatei nicht öffnen. Abbruch..." msgid "No log file to display!" msgstr "Keine Logdatei zum ansehen vorhanden!" #, c-format msgid "Warning: could not erase temporary log file %s, Aborting..." msgstr "WARNUNG Kann temporäre Logdatei %s nicht löschen. Abbruch..." msgid "Invalid delay" msgstr "Ungültige Verzögerung" #, c-format msgid "" "\n" "WARNING: it seems that another calcurse instance is already running.\n" "If this is not the case, please remove the following lock file: \n" "\"%s\"\n" "and restart calcurse.\n" msgstr "" "\n" "WARNUNG Scheinbar läuft eine weitere Instanz von calcurse schon.\n" "Wenn das nicht der Fall ist, bitte die Sperrdatei löschen:\n" "\"%s\"\n" "und calcurse neu starten.\n" msgid "" "#\n" "# Calcurse keys configuration file\n" "#\n" "# This file sets the keybindings used by Calcurse.\n" "# Lines beginning with \"#\" are comments, and ignored by Calcurse.\n" "# To assign a keybinding to an action, this file must contain a line\n" "# with the following syntax:\n" "#\n" "# ACTION KEY1 KEY2 ... KEYn\n" "#\n" "# Where ACTION is what will be performed when KEY1, KEY2, ..., or KEYn\n" "# will be pressed.\n" "#\n" "# To define bindings which use the CONTROL key, prefix the key with 'C-'.\n" "# The escape, space bar and horizontal Tab key can be specified using\n" "# the 'ESC', 'SPC' and 'TAB' keyword, respectively.\n" "# Arrow keys can also be specified with the UP, DWN, LFT, RGT keywords.\n" "# Last, Home and End keys can be assigned using 'KEY_HOME' and 'KEY_END'\n" "# keywords.\n" "#\n" "# A description of what each ACTION keyword is used for is available\n" "# from calcurse online configuration menu.\n" msgstr "" "#\n" "# Calcurse-Tastenkonfiguration\n" "#\n" "# Diese Datei definiert die Tastenkürzel für Calcurse.\n" "# Mit \"#\" beginnende Zeilen sind Kommentare und werden ignoriert.\n" "# Um eine Taste einer Aktion zuzuweisen, muss folgende Syntax\n" "# verwendet werden:\n" "#\n" "# AKTION TASTE1 TASTE2 ... TASTEn\n" "#\n" "# Wobei AKTION ausgeführt wird, wenn TASTE1, TASTE2, ... oder TASTEn\n" "# gedrückt wird.\n" "#\n" "# Um die STRG-Taste zu verwenden, kann der Taste 'C-' vorangestellt werden.\n" "# Die Escape-, Leer- und Tab-Tasten können durch die Schlüsselwörter\n" "# 'ESC', 'SPC' und 'TAB' verwendet werden.\n" "# Pfeiltasten entsprechend mit UP, DWN, LFT, RGT.\n" "# 'KEY_HOME' und 'KEY_END' entsprechen den Pos1- und Ende-Tasten.\n" "#\n" "# Eine Beschreibung jedes AKTION-Schlüsselwortes findet man im\n" "# Online-Konfigurationsmenü von calcurse.\n" msgid "FATAL ERROR: could not create default keys file." msgstr "" "SCHWERER FEHLER: konnte Default-Tastaturkonfigurationsdatei nicht erzeugen." msgid "FATAL ERROR: key value out of bounds" msgstr "SCHWERER FEHLER: Tastenwert außerhalb des gültigen Bereiches" msgid "Cancel the ongoing action." msgstr "Aktuelle Aktion abbrechen." msgid "Select the highlighted item." msgstr "Wähle das hervorgehobene Item." msgid "Print general information about calcurse's authors, license, etc." msgstr "" "Zeige generelle Informationen über die calcurse-Authoren, -Lizenz, etc." msgid "Display hints whenever some help screens are available." msgstr "Zeige Hinweise, wenn Hilfebilschirme verfügbar sind." msgid "Exit from the current menu, or quit calcurse." msgstr "Verlasse aktuelles Menü oder beende calcurse." msgid "Save calcurse data." msgstr "Speichere calcurse-Daten." msgid "Copy the item that is currently selected." msgstr "Das aktuell ausgewählte Item kopieren." msgid "Paste an item at the current position." msgstr "Item an aktueller Position einfügen." msgid "Select next panel in calcurse main screen." msgstr "Wähle nächstes Fenster im calcurse-Hauptbildschirm." msgid "Import data from an external file." msgstr "Importiere Daten von einer externen Datei." msgid "Export data to a new file format." msgstr "Exportiere Daten in ein neues Dateiformat." msgid "Select the day to go to." msgstr "Wähle den Tag, zu dem gesprungen werden soll." msgid "Show next possible actions inside status bar." msgstr "Zeige nächste mögliche Aktionen in der Statusleiste." msgid "Enter the configuration menu." msgstr "Öffne das Konfigurationsmenü." msgid "Redraw calcurse's screen." msgstr "Zeichne den calcurse-Bildschirm neu." msgid "Add an appointment, whichever panel is currently selected." msgstr "Erstelle Termin, je nach aktuell ausgewähltem Fenster." msgid "Add a todo item, whichever panel is currently selected." msgstr "Erstelle Aufgabe, je nach aktuell ausgewähltem Fenster." msgid "" "Move to previous day in calendar, whichever panel is currently selected." msgstr "" "Gehe zum vorigen Tag im Kalender, je nach aktuell ausgewähltem Fenster." msgid "Move to next day in calendar, whichever panel is currently selected." msgstr "" "Gehe zum nächsten Tag im Kalender, je nach aktuell ausgewähltem Fenster." msgid "" "Move to previous week in calendar, whichever panel is currently selected" msgstr "" "Gehe zur vorigen Woche im Kalender, je nach aktuell ausgewähltem Fenster." msgid "Move to next week in calendar, whichever panel is currently selected." msgstr "" "Gehe zur nächsten Woche im Kalender, je nach aktuell ausgewähltem Fenster." msgid "" "Move to previous month in calendar, whichever panel is currently selected" msgstr "" "Gehe zum vorigen Monat im Kalender, je nach aktuell ausgewähltem Fenster." msgid "Move to next month in calendar, whichever panel is currently selected." msgstr "" "Gehe zum nächsten Monat im Kalender, je nach aktuell ausgewähltem Fenster." msgid "" "Move to previous year in calendar, whichever panel is currently selected" msgstr "" "Gehe zum vorigen Jahr im Kalender, je nach aktuell ausgewähltem Fenster." msgid "Move to next year in calendar, whichever panel is currently selected." msgstr "" "Gehe zum nächsten Jahr im Kalender, je nach aktuell ausgewähltem Fenster." msgid "Scroll window down (e.g. when displaying text inside a popup window)." msgstr "" "Scrolle Fenster nach unten (z.B. beim Anzeigen von Text in einem Fenster)." msgid "Scroll window up (e.g. when displaying text inside a popup window)." msgstr "" "Scrolle Fenster nach oben (z.B. beim Anzeigen von Text in einem Fenster)." msgid "Go to today, whichever panel is selected." msgstr "Gehe zum heutigen Tag, je nach ausgewähltem Fenster." msgid "Move to the right." msgstr "Gehe nach rechts." msgid "Move to the left." msgstr "Gehe nach links." msgid "Move down." msgstr "Gehe nach unten." msgid "Move up." msgstr "Nach oben." msgid "" "Select the first day of the current week when inside the calendar panel." msgstr "Wähle den ersten Tag der aktuellen Woche im Kalenderfenster." msgid "Select the last day of the current week when inside the calendar panel." msgstr "Wähle den letzten Tag der aktuellen Woche im Kalenderfenster." msgid "Add an item to the currently selected panel." msgstr "Füge ein Item zum aktuell ausgewählten Fenster hinzu." msgid "Delete the currently selected item." msgstr "Entferne das aktuell ausgewählte Item." msgid "Edit the currently seleted item." msgstr "Bearbeite das aktuell ausgewählte Item." msgid "Display the currently selected item inside a popup window." msgstr "Zeige das aktuell ausgewählte Item in einem Fenster." msgid "Flag the currently selected item as important." msgstr "Das aktuell ausgewählte Item als wichtig markieren." msgid "Repeat an item" msgstr "Ein Item wiederholen" msgid "Pipe the currently selected item to an external program." msgstr "Das aktuell ausgewählte Item in ein externes Programm weiterleiten." msgid "Attach (or edit if one exists) a note to the currently selected item" msgstr "" "Notiz an aktuell ausgewähltes Item anhängen (oder existierende Notiz " "bearbeiten)" msgid "View the note attached to the currently selected item." msgstr "Notiz zum aktuell ausgewählten Item ansehen." msgid "Raise a task priority inside the todo panel." msgstr "Erhöhe Aufgaben-Priorität im Aufgabenfenster." msgid "Lower a task priority inside the todo panel." msgstr "Verringere Aufgaben-Priorität im Aufgabenfenster." msgid "FATAL ERROR: null file pointer." msgstr "SCHWERER FEHLER: Null-Datei-Zeiger." #, c-format msgid "When adding default key for \"%s\", \"%s\" was already assigned!" msgstr "" "Beim Hinzufügen einer Default-Taste für \"%s\" war \"%s\" bereits zugewiesen!" msgid "xmalloc: zero size" msgstr "xmalloc: Länge 0" msgid "xmalloc: out of memory" msgstr "xmalloc: Speicher ist voll" msgid "xcalloc: zero size" msgstr "xcalloc: Länge 0" msgid "xcalloc: overflow" msgstr "xcalloc: Überlauf" msgid "xcalloc: out of memory" msgstr "xcalloc: Speicher ist voll" msgid "xrealloc: zero size" msgstr "xrealloc: Länge 0" msgid "xrealloc: overflow" msgstr "xrealloc: Überlauf" msgid "xrealloc: out of memory" msgstr "xrealloc: Speicher ist voll" msgid "xfree: null pointer" msgstr "xfree: Null-Zeiger" msgid "could not allocate memory to store block info" msgstr "konnte kein Speicher für die Block-Info alloziieren" msgid "Block not found" msgstr "Block nicht gefunden" #, c-format msgid "overflow at %s" msgstr "Überlauf bei %s" #, c-format msgid "dbg_free: null pointer at %s" msgstr "dbg_free: Null-Zeiger bei %s" #, c-format msgid "block seems already freed at %s" msgstr "Block scheint schon bei %s freigegeben" #, c-format msgid "corrupt block header at %s" msgstr "Korrupter Block-Header bei %s" #, c-format msgid "corrupt block end at %s, (end = %u, should be %d)" msgstr "Korruptes Block-Ende bei %s (Ende = %u, sollte %d sein)" msgid "---==== MEMORY BLOCK ====----------------\n" msgstr "---==== SPEICHERBLOCK ===----------------\n" #, c-format msgid " id: %u\n" msgstr " id: %u\n" #, c-format msgid " size: %u\n" msgstr " Größe: %u\n" #, c-format msgid " allocated in: %s\n" msgstr "alloziiert bei: %s\n" msgid "-----------------------------------------\n" msgstr "-----------------------------------------\n" msgid "+------------------------------+\n" msgstr "+------------------------------+\n" msgid "| calcurse memory usage report |\n" msgstr "| calcurse memory usage report |\n" #, c-format msgid " number of calls: %u\n" msgstr " Anzahl Aufrufe: %u\n" #, c-format msgid " allocated blocks: %u\n" msgstr "alloziierte Blöcke: %u\n" #, c-format msgid " unfreed blocks: %u\n" msgstr " belegte Blöcke: %u\n" #, c-format msgid "Warning: could not open %s, Aborting..." msgstr "WARNUNG: Kann %s nicht öffnen. Abbruch..." msgid "error while launching command: could not fork" msgstr "Fehler beim Ausführen einer Befehlszeile: Kann nicht Ausführen" msgid "error while launching command" msgstr "Fehler beim Ausführen einer Befehlszeile" msgid "(if set to YES, notify-bar will be displayed)" msgstr "(Ist JA gewählt, wird die Benachrichtigungszeile angezeigt)" msgid "(Format of the date to be displayed inside notify-bar)" msgstr "(Datumsformat innerhalb der Benachrichtigungszeile)" msgid "(Format of the time to be displayed inside notify-bar)" msgstr "(Uhrzeitformatierung innerhalb der Benachrichtigungszeile)" msgid "" "(Warn user if an appointment is within next 'notify-bar_warning' seconds)" msgstr "(Nutzer auf einen Termin innerhalb der nächsten n Sekunden hinweisen)" msgid "(Command used to notify user of an upcoming appointment)" msgstr "(Befehl um Benutzer auf einen bevorstehenden Termin hinzuweisen)" msgid "(Notify all appointments instead of flagged ones only)" msgstr "(Benachrichtige alle Termine, anstelle nur markierte)" msgid "(Run in background to get notifications after exiting)" msgstr "" "(Im Hintergrund laufen, um Benachrichtigungen zu bekommen nach Beenden)" msgid "(Log activity when running in background)" msgstr "(Aufzeichnen von Aktivitäten, wenn im Hintergrund ausgeführt)" msgid "Enter the time format (see 'man 3 strftime' for possible formats) " msgstr "Zeitformat eingeben (vgl. 'man 3 strftime')" msgid "Enter the number of seconds (0 not to be warned before an appointment)" msgstr "Geben Sie die Zeit in Sekunden ein (0 um keine Hinweis zu erhalten)." msgid "Enter the notification command " msgstr "Befehl für die Benachrichtigung" msgid "notification options" msgstr "Einstellungen der Benachrichtigung" msgid "incoherent repetition type" msgstr "Unzusammenhängende Wiederholung" msgid "unknown repetition type" msgstr "Unbekannter Wiederholungstyp" msgid "unknown character" msgstr "Unbekanntes Zeichen" msgid "date error in event" msgstr "Datumsfehler im Ereignis" msgid "event not found" msgstr "Ereignis nicht gefunden" msgid "appointment not found" msgstr "Termin nicht gefunden" msgid "syntax error in item date" msgstr "Eingabefehler im Datum" #, c-format msgid "Could not remove calcurse lock file: %s\n" msgstr "Kann die Sperrdatei nicht löschen: %s\n" #, c-format msgid "Error setting signal #%d : %s\n" msgstr "Fehler bei Signal: #%d : %s\n" msgid "no note attached" msgstr "Keine Notiz angehängt" msgid "no such todo" msgstr "Keine Aufgabe gefunden" msgid "todo not found" msgstr "Aufgabe nicht gefunden" msgid "/!\\ INTERNAL ERROR /!\\" msgstr "INTERNER FEHLER" msgid "Please report the following bug:" msgstr "Bitte den Programmfehler melden:" msgid "[yn]" msgstr "[jn]" msgid "Press any key to continue..." msgstr "Eine beliebige Taste um fortzufahren..." msgid "failure in mktime" msgstr "Fehlfunktion in mktime" msgid "error in mktime" msgstr "Fehler in mktime" msgid "could not convert string" msgstr "Kann die Zeichenkette nicht umwandeln" msgid "out of range" msgstr "Außerhalb des Bereiches" msgid "yes" msgstr "ja" msgid "no" msgstr "nein" msgid "option not defined" msgstr "Option nicht definiert" #, c-format msgid "temporary file \"%s\" could not be created" msgstr "temporäre Datei \"%s\" kann nicht erstellt werden" #, c-format msgid "Error when closing file at %s" msgstr "Fehler beim schließen der Datei %s" msgid "No note file found\n" msgstr "Notiz nicht gefunden\n" msgid "January" msgstr "Januar" msgid "February" msgstr "Februar" msgid "March" msgstr "März" msgid "April" msgstr "April" msgid "May" msgstr "Mai" msgid "June" msgstr "Juni" msgid "July" msgstr "Juli" msgid "August" msgstr "August" msgid "September" msgstr "September" msgid "October" msgstr "Oktober" msgid "November" msgstr "November" msgid "December" msgstr "Dezember" msgid "Sun" msgstr " So" msgid "Mon" msgstr " Mo" msgid "Tue" msgstr " Di" msgid "Wed" msgstr " Mi" msgid "Thu" msgstr " Do" msgid "Fri" msgstr " Fr" msgid "Sat" msgstr " Sa" msgid "mm/dd/yyyy" msgstr "mm/tt/jjjj" msgid "dd/mm/yyyy" msgstr "tt/mm/jjjj" msgid "yyyy/mm/dd" msgstr "jjjj/mm/tt" msgid "yyyy-mm-dd" msgstr "jjjj-mm-tt" msgid "Calendar" msgstr "Kalender" msgid "Appointments" msgstr "Termine" msgid "ToDo" msgstr "Aufgaben" msgid "Quit" msgstr "Beenden" msgid "Save" msgstr "Speichern" msgid "Copy" msgstr "Kopieren" msgid "Paste" msgstr "Einfügen" msgid "Chg Win" msgstr "Wechseln" msgid "Import" msgstr "Importieren" msgid "Export" msgstr "Exportieren" msgid "Go to" msgstr "Gehe zu" msgid "Config" msgstr "Einstellung" msgid "Redraw" msgstr "Neu aufbauen" msgid "Add Appt" msgstr "Neuer Termin" msgid "Add Todo" msgstr "Neue Aufgabe" msgid "-1 Day" msgstr "-1 Tag" msgid "+1 Day" msgstr "+1 Tag" msgid "-1 Week" msgstr "-1 Woche" msgid "+1 Week" msgstr "+1 Woche" msgid "-1 Month" msgstr "-1 Monat" msgid "+1 Month" msgstr "+1 Monat" msgid "-1 Year" msgstr "-1 Jahr" msgid "+1 Year" msgstr "+1 Jahr" msgid "Today" msgstr "Heute" msgid "Nxt View" msgstr "Weiter" msgid "Prv View" msgstr "Zurück" msgid "beg Week" msgstr "Wochenanfang" msgid "end Week" msgstr "Wochenende" msgid "Add Item" msgstr "Neueintrag" msgid "Del Item" msgstr "Löschen" msgid "Edit Itm" msgstr "Eintrag bearb." msgid "View" msgstr "Ansicht" msgid "Pipe" msgstr "Weiterleiten" msgid "Flag Itm" msgstr "Eigenschaft" msgid "Repeat" msgstr "Wiederholen" msgid "EditNote" msgstr "Notiz bearb." msgid "ViewNote" msgstr "Notiz anz." msgid "Prio.+" msgstr "Prio.+" msgid "Prio.-" msgstr "Prio.-" msgid "OtherCmd" msgstr "Zus. Befehle" msgid "unknown panel" msgstr "unbekannte Ansicht" msgid "Usage: calcurse-upgrade [-h|-v|--config ]" msgstr "Verwendung: calcurse-upgrade [-h|-v|--config ]" msgid "unrecognized option:" msgstr "unbekannte Option:" msgid "Configuration file not found:" msgstr "Konfigurationsdatei nicht gefunden:" msgid "Pre-3.0.0 configuration file format detected..." msgstr "Prä-3.0.0-Konfigurationsdateiformat entdeckt..." msgid "Create temporary backup of the configuration file..." msgstr "Erstelle temporäres Backup der Konfigurationsdatei..." msgid "Old backup file found:" msgstr "Alte Backup-Datei gefunden:" msgid "" "\n" "If a previous conversion did not complete, please try to restore your\n" "configuration from this backup and then remove the backup file." msgstr "" "\n" "Falls eine vorige Konvertierung fehlschlug, bitte versuchen Sie, die\n" "Konfiguration von diesem Backup wiederherzustellen und die Backup-\n" "Datei anschließend zu entfernen." msgid "done" msgstr "fertig" msgid "Old temporary file found:" msgstr "Alte temporäre Datei gefunden:" msgid "" "\n" "If a previous conversion did not complete, please try to remove this file " "and\n" "start over with a backup of your old configuration file." msgstr "" "\n" "Falls eine vorige Konvertierung fehlschlug, bitte versuchen Sie, diese\n" "Datei zu entfernen und mit einem Backup Ihrer alten Konfigurationsdatei\n" "neu zu starten." msgid "Upgrade configuration directives..." msgstr "Aktualisiere Konfigurationsanweisungen..." msgid "Remove temporary backup..." msgstr "Entferne temporäres Backup..." calcurse-3.1.4/po/fr.gmo0000644000175000001440000022727112105444503011777 00000000000000w,' 'r)K*`**o++,,:,,-'->-U-Xs-00 00, 1718P1<16161)42)^2624262I+3u33D353B 49P4G4-4@5 A5)K56u5555!5556 6*6*@6k6r6{666666676:657,=,> 4> B>O>4U>+>/>>'>D%?j?BC ICTC#dCC CC0CC D'DF-G.G4G;GCGaG'|G%G3GGH(+H&TH{H#H#H4H*I__`` ` ` !cD,cFqcEcEcHDdIdHdH eie{eeXehhii.i5i>iGiOifiiDCll ll&llll8l+m n*$n:On;nXn/oOoiooo$ooAo+p2p 9p Cpdpmp,rpppppppp[v jvuv{vvvvv txE~xCxy*y:yHSyyGy z- z9z5Az0wzzL7> 8&#N?<'C=VCG؅G $hD=҆FW[chn4*(_#/Ŋɍ6 Ǐ9я; 'G7oC5<%bj>r’ǒ ْ̒'G`+~ $ȓ1-:)h&"Ҕ$ ;Ui ƕϕߕ-!Km!ږ -%Hn:×'"J _j} Ę јޘ   !.%=c$<Ù-Gg%(˚  ,6 HVj|  ț՛,()Rbyɜܜ  *!5W PUƥۥK>[n#Ȫת 1I\a6==3(q?ZڬU5M`٭: NK\LOCEj:M/ }&A! #!.PX`h*n+űͱձݱ 37R.%T j x81ú9/-LJziŻ/ 5C1T- 8 4$kY6 &!#H4l05+#8O7%.1DGL k$n LC,I+v.# 1 (3 < G5TM K]^yV@/>p.,+(/T("W&( ONp%(,; , "8-K*d)D*$)Nn* 2   'H9Q  +6O"2MBLQ!k  ?GI< jKwKRPbOOVSS ,LTc &## H0y ,-93$+,PD}Io :|$%$$',L y\ . *5@= ~!* q  $8j$k E "OWr*W M:W=? mNT    N q  = . l  `I4PmQvW6Q%XI_S  )HG.19 F K*U?6 K EV.A[ iBmR  ay ~         . )'!Q!/o!!!)!B!'4"I\"6"1"=#:M#=#7#!# $%A$)g$ $$$$$,$)%<-%)j%,%%.%/&58&*n&&& &,&$'":'#]'L'''/(4( Q(\(t((x(((( (( ( ))7)Q)/n)*)+)#)>*X* i*-*,*5*:+,V+1+!+ +++,,$,?,Q,l,,, ,,7, -3*-^-"y----"-.#.=.U.m. q. |.1.A rnJ_ \HY [F=@R3nOiy&K%VM 1TF;tv:qY|y2tK>dL*Hb"NC"[1Sl ao+has^O SiRX5E7#ejB<fC c4 ]\p)Du:}6k@$7/*IsWUkpvj{]dqL`9W>`'~!{/h=Z#|AJDmIxw, 2bZm8z;oc.+Q!^%g'~ &$MVP-(B9T6NzruP54wGx-Q8fX?0}g_(<lGU,e ?3)0.E Copyright (c) 2004-2013 calcurse Development Team All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Send your feedback or comments to : misc@calcurse.org Calcurse home page : http://calcurse.org Copyright (c) 2004-2013 calcurse Development Team. This is free software; see the source for copying conditions. For more information, type '?' from within Calcurse, or read the manpage. If a previous conversion did not complete, please try to remove this file and start over with a backup of your old configuration file. If a previous conversion did not complete, please try to restore your configuration from this backup and then remove the backup file. Too many errors while reading configuration file! Please backup your keys file, remove it from directory, and launch calcurse again. WARNING: it seems that another calcurse instance is already running. If this is not the case, please remove the following lock file: "%s" and restart calcurse. id: %u size: %u Welcome to Calcurse. This is the main help screen. unfreed blocks: %u allocated in: %s number of calls: %u allocated blocks: %u "%s" assigned multiple times!# # Calcurse keys configuration file # # This file sets the keybindings used by Calcurse. # Lines beginning with "#" are comments, and ignored by Calcurse. # To assign a keybinding to an action, this file must contain a line # with the following syntax: # # ACTION KEY1 KEY2 ... KEYn # # Where ACTION is what will be performed when KEY1, KEY2, ..., or KEYn # will be pressed. # # To define bindings which use the CONTROL key, prefix the key with 'C-'. # The escape, space bar and horizontal Tab key can be specified using # the 'ESC', 'SPC' and 'TAB' keyword, respectively. # Arrow keys can also be specified with the UP, DWN, LFT, RGT keywords. # Last, Home and End keys can be assigned using 'KEY_HOME' and 'KEY_END' # keywords. # # A description of what each ACTION keyword is used for is available # from calcurse online configuration menu. %d app%d apps%d event%d events%d skipped%d todo%d todos%s does not exist, create it now [y or n] ? %s successfully created (Command used to notify user of an upcoming appointment)(Format of the date to be displayed in non-interactive mode)(Format of the date to be displayed inside notify-bar)(Format of the time to be displayed inside notify-bar)(Format to be used when entering a date: (Log activity when running in background)(Notify all appointments instead of flagged ones only)(Press '^P' or '^N' to move up or down, 'Q' to quit)(Run in background to get notifications after exiting)(Warn user if an appointment is within next 'notify-bar_warning' seconds)(currently using %s)(d)aily(if not null, automatically save data every 'periodic_save' minutes)(if set to YES, automatic save is done when quitting)(if set to YES, confirmation is required before deleting an event)(if set to YES, confirmation is required before quitting)(if set to YES, messages about loaded and saved data will be displayed)(if set to YES, notify-bar will be displayed)(if set to YES, progress bar will be displayed when saving data)(m)onthly(run the garbage collector when quitting)(specifies the first day of week in the calendar view)(terminal's default)(w)eekly(y)early+------------------------------+ +1 Day+1 Month+1 Week+1 Year----------------------------------------- ---==== MEMORY BLOCK ====---------------- -1 Day-1 Month-1 Week-1 Year/!\ INTERNAL ERROR /!\Add Add ApptAdd ItemAdd TodoAdd a todo item, whichever panel is currently selected.Add an appointment, whichever panel is currently selected.Add an item in either the ToDo or Appointment list, depending on which panel is selected when you press '%s'. To enter a new item in the TODO list, you will need first to enter the description of this new item. Then you will be asked to specify the todo priority. This priority is represented by a number going from 9 for the lowest priority, to 1 for the highest one. It is still possible to change the item priority afterwards, by using the '%s' and '%s' keys inside the todo panel. If the APPOINTMENT panel is selected while pressing '%s', you will be able to enter either a new appointment or a new all-day long event. To enter a new event, press [ENTER] instead of the item start time, and just fill in the event description. To enter a new appointment to be added in the APPOINTMENT list, you will need to enter successively the time at which the appointment begins, the appointment length (either by specifying the end time in [hh:mm] or the duration in [+hh:mm], [+xxdxxhxxm] or [+mm] format), and the description of the event. The day at which occurs the event or appointment is the day currently selected in the calendar, so you need to move to the desired day before pressing '%s'. Notes: o if an appointment lasts for such a long time that it continues on the next days, this event will be indicated on all the corresponding days, and the beginning or ending hour will be replaced by '..' if the event does not begin or end on the day. o if you only press [ENTER] at the APPOINTMENT or TODO event description prompt, without any description, no item will be added. o do not forget to save the calendar data to retrieve the new event next time you launch Calcurse.Add an item to the currently selected panel.Add keyAppointment :AppointmentsAprilArgument for '-x' should be either 'ical' or 'pcal' Argument format for -r and --range is: 'n' Argument format for -s and --startday is: '%s' Argument is not valid Argument to the '-d' flag is not valid Attach (or edit if one exists) a note to the currently selected itemAttach a note to any type of item, or edit an already existing note. This feature is useful if you do not have enough space to store all of your item description, or if you would like to add sub-tasks to an already existing todo item for example. Before pressing the '%s' key, you first need to highlight the item you want the note to be attached to. Then you will be driven to an external editor to edit your note. This editor is chosen the following way: o if the 'VISUAL' environment variable is set, then this will be the default editor to be called. o if 'VISUAL' is not set, then the 'EDITOR' environment variable will be used as the default editor. o if none of the above environment variables is set, then '/usr/bin/vi' will be used. Once the item note is edited and saved, quit your favorite editor. You will then go back to Calcurse, and the '>' sign will appear in front of the highlighted item, meaning there is a note attached to it.AugustBackgroundBlock not foundCalcurse %s - text-based organizer Calcurse - text-based organizerCalcurse helpCalendarCan not handle more than one regular expression.Cancel the ongoing action.Cannot daemonize, aborting Change the priority of the currently selected item in the ToDo list. Priorities are represented by the number appearing in front of the todo description. This number goes from 9 for the lowest priority to 1 for the highest priority. Todo having higher priorities are placed first (at the top) inside the todo panel. If you want to raise the priority of a todo item, you need to press '%s'. In doing so, the number in front of this item will decrease, meaning its priority increases. The item position inside the todo panel may change, depending on the priority of the items above it. At the opposite, to lower a todo priority, press '%s'. The todo position may also change depending on the priority of the items below.Chg WinChoose the file used to export calcurse data:ColorConfigConfig Configuration file not found:Could not access "%s": %s Could not change working directory: %s Could not compile regular expression.Could not detach from the controlling terminal: %s Could not fork: %s Could not read key labelCould not remove calcurse lock file: %s Could not remove daemon lock file: %s Could not set lock file Could not stop calcurse daemon: %s Could not stop daemon properly: %s Create temporary backup of the configuration file...Data files found. Data will be loaded now.DecemberDel ItemDel keyDelete Delete an element in the ToDo or Appointment list. Depending on which panel is selected when you press the delete key, the hilighted item of either the ToDo or Appointment list will be removed from this list. If the item to be deleted is recurrent, you will be asked if you wish to suppress all of the item occurences or just the one you selected. If the general option 'confirm_delete' is set to 'YES', then you will be asked for confirmation before deleting the selected event. Do not forget to save the calendar data to retrieve the modifications next time you launch Calcurse.Delete the currently selected item.DescriptionDisplacement keys Display hints whenever some help screens are available.Display the currently selected item inside a popup window.Do you really want to delete this item ?Do you really want to delete this task ?Do you really want to quit ?DownERROR setting first day of weekEdit Item Edit ItmEdit the currently seleted item.Edit the item which is currently selected. Depending on the item type (appointment, event, or todo), and if it is repeated or not, you will be asked to choose one of the item properties to modify. An item property is one of the following: the start time, the end time, the description, or the item repetition. Once you have chosen the property you want to modify, you will be shown its actual value, and you will be able to change it as you like. Notes: o if you choose to edit the item repetition properties, you will be asked to re-enter all of the repetition characteristics (repetition type, frequence, and ending date). Moreover, the previous data concerning the deleted occurences will be lost. o do not forget to save the calendar data to retrieve the modified properties next time you launch Calcurse.Edit: EditNoteEditNote End timeEnter an option number to change its valueEnter description :Enter the ToDo priority [1 (highest) - 9 (lowest)] :Enter the configuration menu.Enter the date format (see 'man 3 strftime' for possible formats) Enter the date format: Enter the day to go to [ENTER for today] : %sEnter the delay, in minutes, between automatic saves (0 to disable) Enter the ending date: [%s] or '0' for an endless repetitionEnter the file name to import data from:Enter the new ToDo description :Enter the new ToDo item : Enter the new ending date: [%s] or '0'Enter the new item description:Enter the new repetition frequence:Enter the new repetition type:Enter the notification command Enter the number of seconds (0 not to be warned before an appointment)Enter the repetition frequence:Enter the repetition type:Enter the time format (see 'man 3 strftime' for possible formats) Error reading key: "%s"Error setting signal #%d : %s Error when closing file at %sError: both calcurse (pid: %d) and its daemon (pid: %d) seem to be running at the same time! Please check manually and restart calcurse. Event :ExitExit from the current menu, or quit calcurse.ExportExport Export calcurse data (appointments, events and todos). This leads to the export submenu, from which you can choose between two different export formats: 'ical' and 'pcal'. Choosing one of those formats lets you export calcurse data to icalendar or pcal format. You first need to specify the file to which the data will be exported. By default, this file is: ~/calcurse.ics for an ical export, and: ~/calcurse.txt for a pcal export. Calcurse data are exported in the following order: events, appointments, todos. Export data to a new file format.Exporting...FATAL ERROR: could not create %s: %s FATAL ERROR: could not create default keys file.FATAL ERROR: key value out of boundsFATAL ERROR: null file pointer.FATAL ERROR: the input file cannot be accessed, Aborting...FATAL ERROR: wrong import modeFailed to build message Failed to close "%s" - %s Failed to open "%s", - %s Failed to print message "%s" FebruaryFlag Item Flag ItmFlag the currently selected item as important.ForegroundFriGeneralGeneric keybindings Go toGo to today, whichever panel is selected.Goto HelpImportImport Import data from an external file.Import data from an icalendar file. You will be asked to enter the file name from which to load ical items. At the end of the import process, and if the general option 'system_dialogs' is set to 'yes', a report indicating how many items were imported is shown. This report contains the total number of lines read, the number of appointments, events and todo items which were successfully imported, together with the number of items for which problems occured and that were skipped, if any. If one or more items could not be imported, one has the possibility to read the import process report in order to identify which problems occured. In this report is shown one item per line, with the line in the input stream at which this item begins, together with the description of why the item could not be imported. Import process report: %04d lines read Internal error while displaying progress barInternal error: line too longInvalid delayInvalid time: start time must be before end time!JanuaryJulyJump to a specific day in the calendar. Using this command, you do not need to travel to that day using the displacement keys inside the calendar panel. If you hit [ENTER] without specifying any date, Calcurse checks the system current date and you will be taken to that date. Notice that pressing '%s', whatever panel is selected, will select current day in the calendar.JuneKey infoKey label not recognizedKeysLayoutLeftLoading...Lower a task priority inside the todo panel.Mail bug reports to . Mail feature requests and suggestions to . MarchMayMonMondayMove around inside calcurse screens. The following scheme summarizes how to get around: move up move to previous week %s move left ^ move to previous day | %s <-- + --> %s | move right v move to next day %s move to next week move down Moreover, while inside the calendar panel, the '%s' key moves to the first day of the week, and the '%s' key selects the last day of the week. Move down.Move to next day in calendar, whichever panel is currently selected.Move to next month in calendar, whichever panel is currently selected.Move to next week in calendar, whichever panel is currently selected.Move to next year in calendar, whichever panel is currently selected.Move to previous day in calendar, whichever panel is currently selected.Move to previous month in calendar, whichever panel is currently selectedMove to previous week in calendar, whichever panel is currently selectedMove to previous year in calendar, whichever panel is currently selectedMove to the left.Move to the right.Move up.Moving around: Press '%s' or '%s' to scroll text upward or downward inside help screens, if necessary. Exit help: When finished, press '%s' to exit help and go back to the main Calcurse screen. Help topic: At the bottom of this screen you can see a panel with different fields, represented by a letter and a short title. This panel contains all the available actions you can perform when using Calcurse. By pressing one of the letters appearing in this panel, you will be shown a short description of the corresponding action. At the top right side of the description screen are indicated the user-defined key bindings that lead to the action. Credits: Press '%s' for credits.Next KeyNo colorNo log file to display!No note file found NotifyNovemberNxt ViewOctoberOld backup file found:Old temporary file found:Open the configuration submenu. From this submenu, you can select between color, layout, notification and general options, and you can also configure your keybindings. The color submenu lets you choose the color theme. The layout submenu lets you choose the Calcurse screen layout, in other words where to place the three different panels on the screen. The general options submenu brings a screen with the different options which modifies the way Calcurse interacts with the user. The notify submenu allows you to change the notify-bar settings. The keys submenu lets you define your own key bindings. Do not forget to save the calendar data to retrieve your configuration next time you launch Calcurse.Option '-S' must be used with either '-d', '-r', '-s', '-a' or '-t' OtherCmdOtherCmd PastePaste an item at the current position.PipePipe Pipe item to external command:Pipe the currently selected item to an external program.Pipe the selected item to an external program. Press the '%s' key to pipe the currently selected appointment or todo entry to an external program. You will be driven back to calcurse as soon as the program exits. Please report the following bug:Possible argument format are: '%s' or 'n' Possible formats are [%s] or '0' for an endless repetitionPossible formats are [%s] or '0' for an endless repetition.Pre-3.0.0 configuration file format detected, please upgrade running `calcurse-upgrade`.Pre-3.0.0 configuration file format detected...Press [ENTER] to continuePress [ENTER] to continue.Press [Enter] to continuePress any key to continue...Press the key you want to assign to:Prev KeyPrint general information about calcurse's authors, license, etc.Prio.+Prio.-Priority Problems accessing data file ...Prv ViewQuitRaise a task priority inside the todo panel.RedrawRedraw calcurse's screen.Remove temporary backup...RepeatRepeat Repeat an event or an appointment. You must first select the item to be repeated by moving inside the appointment panel. Then pressing '%s' will lead you to a set of three questions, with which you will be able to specify the repetition characteristics: o type: you can choose between a daily, weekly, monthly or yearly repetition by pressing 'D', 'W', 'M' or 'Y' respectively. o frequence: this indicates how often the item shall be repeated. For example, if you want to remember an anniversary, choose a 'yearly' repetition with a frequence of '1', which means it must be repeated every year. Another example: if you go to the restaurant every two days, choose a 'daily' repetition with a frequence of '2'. o ending date: this specifies when to stop repeating the selected event or appointment. To indicate an endless repetition, enter '0' and the item will be repeated forever. Notes: o repeated items are marked with an '*' inside the appointment panel, to be easily recognizable from non-repeated ones. o the 'Repeat' and 'Delete' command can be mixed to create complicated configurations, as it is possible to delete only one occurence of a repeated item.Repeat an itemRepetitionRightSatSaveSave Save calcurse data.Save calcurse data. Data are splitted into four different files which contain : / ~/.calcurse/conf -> user configuration | (layout, color, general options) | ~/.calcurse/apts -> data related to the appointments | ~/.calcurse/todo -> data related to the todo list \ ~/.calcurse/keys -> user-defined key bindings In the config menu, you can choose to save the Calcurse data automatically before quitting.Saving...Scroll window down (e.g. when displaying text inside a popup window).Scroll window up (e.g. when displaying text inside a popup window).SelectSelect next panel in calcurse main screen.Select the day to go to.Select the first day of the current week when inside the calendar panel.Select the highlighted item.Select the last day of the current week when inside the calendar panel.SeptemberShow next possible actions inside status bar.SidebarSome actions do not have any associated key bindings!Some items could not be imported, see log file ?Some of the keybindings apply whatever panel is selected. They are called generic keybinding. Here is the list of all the generic key bindings, together with their corresponding action: '%s' : Redraw function -> redraws calcurse panels, this is useful if you resize your terminal screen or when garbage appears inside the display '%s' : Add Appointment -> add an appointment or an event '%s' : Add ToDo -> add a todo '%s' : -1 Day -> move to previous day '%s' : +1 Day -> move to next day '%s' : -1 Week -> move to previous week '%s' : +1 Week -> move to next week '%s' : -1 Month -> move to previous month '%s' : +1 Month -> move to next month '%s' : -1 Year -> move to previous year '%s' : +1 Year -> move to next year '%s' : Goto today -> move to current day The '%s' and '%s' keys are used to scroll text upward or downward when inside specific screens such the help screens for example. They are also used when the calendar screen is selected to switch between the available views (monthly and weekly calendar views).Sorry, colors are not supported by your terminal (Press [ENTER] to continue)Sorry, the date you entered is older than the item start time.Start timeSunSundaySwitch between panels. The panel currently in use has its border colorized. Some actions are possible only if the right panel is selected. For example, if you want to add a task in the TODO list, you need first to press the '%s' key to get the TODO panel selected. Then you can press '%s' to add your item. Notice that at the bottom of the screen the list of possible actions change while pressing '%s', so you always know what action can be performed on the selected panel.Switch between status bar help pages. Because the terminal screen is too narrow to display all of the available commands, you need to press '%s' to see the next set of commands together with their keybindings. Once the last status bar page is reached, pressing '%s' another time leads you back to the first page.Tab The data files were successfully savedThe data were successfully exportedThe day you entered is not valid (should be between 01/01/1902 and 12/31/2037)The entered date is not valid.The file cannot be accessed, please enter another file name.The frequence you entered is not valid.The ical file seems to be malformed. The end of item was not found.There were some errors when loading keys file, see log file ?This configuration screen is used to change the width of the side bar. The side bar is the part of the screen which contains two panels: the calendar and, depending on the chosen layout, either the todo list or the appointment list. The side bar width can be up to 50% of the total screen width, but can't be smaller than This item has a note attached to it. Delete (i)tem or just its (n)ote ?This item has a note attached to it. Delete (t)odo or just its (n)ote ?This item is already a repeated one.This item is recurrent. Delete (a)ll occurences or just this (o)ne ?This key is already in use for %s, please choose another one.This key is not yet recognized by calcurse, please choose another one.ThuTo do :ToDoTodayToggle an appointment's 'important' flag or a todo's 'completed' flag. If a todo is flagged as completed, its priority number will be replaced by an 'X' sign. Completed tasks will no longer appear in exported data or when using the '-t' command line flag (unless specifying '0' as the priority number, in which case only completed tasks will be shown). If an appointment is flagged as important, an exclamation mark appears in front of it, and you will be warned if time gets closed to the appointment start time. To customize the way one gets notified, the configuration submenu lets you choose the command launched to warn user of an upcoming appointment, and how long before it he gets notified.Too many errors while reading keys file, aborting...Try 'calcurse -h' for more information. TueUndefined option!UpUpgrade configuration directives...Usage: calcurse-upgrade [-h|-v|--config ]ViewView View a note which was previously attached to an item (an item which owns a note has a '>' sign in front of it). This command only permits to view the note, not to edit it (to do so, use the 'EditNote' command, by pressing the '%s' key). Once you highlighted an item with a note attached to it, and the '%s' key was pressed, you will be driven to an external pager to view that note. The default pager is chosen the following way: o if the 'PAGER' environment variable is set, then this will be the default viewer to be called. o if the above environment variable is not set, then '/usr/bin/less' will be used. As for editing a note, quit the pager and you will be driven back to Calcurse.View the item you select in either the Todo or Appointment panel. This is usefull when an event description is longer than the available space to display it. If that is the case, the description will be shortened and its end replaced by '...'. To be able to read the entire description, just press '%s' and a popup window will appear, containing the whole event. Press any key to close the popup window and go back to the main Calcurse screen.View the note attached to the currently selected item.ViewNoteViewNote Warning: could not create temporary log file, Aborting...Warning: could not erase temporary log file %s, Aborting...Warning: could not open %s, Aborting...Warning: could not open temporary log file, Aborting...Warning: ical header malformed or wrong version number. Aborting...WedWelcome to Calcurse. Missing data files were created.When adding default key for "%s", "%s" was already assigned!Width +Width -With this configuration menu, one can choose where panels will be displayed inside calcurse screen. It is possible to choose between eight different configurations. In the configuration representations, letters correspond to: 'c' -> calendar panel 'a' -> appointment panel 't' -> todo panel [ao][dwmy][in][tn][yn]aborting... appointment has no start time.appointment not foundawakened at %s beg Weekblock seems already freed at %scalcurse is not running calcurse is running (pid %d) calcurse is running in background (pid %d) color themecompleted tasks: configuration variable unknown: "%s"corrupt block end at %s, (end = %u, should be %d)corrupt block header at %scould not allocate memory to store block infocould not compute duration (no end time).could not convert stringcould not get entire item description.could not retrieve event end time.could not retrieve event start time.could not retrieve item summary.date error in appointmentdate error in eventdate error in the event dbg_free: null pointer at %sdd/mm/yyyydescription malformed.doneend Weekerror in mktimeerror loading next appointment error while launching commanderror while launching command: could not forkerror while sending notification event date is not defined.event not foundfailed to open appointment filefailed to open configuration filefailed to open key filefailed to open todo filefailure in mktimegeneral optionsincoherent repetition typeinvalid configuration directive: "%s"item could not be identified.item duration malformed.item has a negative duration.item priority is not acceptable (must be between 1 and 9).key bindings: %skeys configurationlaunching notification at %s for: "%s" layout configurationmm/dd/yyyynext appointment: nono event nor appointment foundno note attachedno such appointmentno such todono such typenotification optionsnull pointeroption not definedout of memoryout of rangeoverflow at %srecurrence exception dates malformed.recurrence frequence not found.recurrence frequence not recognized.recurrence rule malformed.sleeping at %s for %d second sleeping at %s for %d seconds started at %s starting interactive mode... syntax error in item datesyntax error in item identifiersyntax error in item repetitionsyntax error in item time or durationsyntax error in the item datetemporary file "%s" could not be createdterminated at %s with signal %d to do: todo not foundundefinedunknown characterunknown colorunknown export typeunknown ical typeunknown import typeunknown item typeunknown panelunknown repetition typeunknwon typeunrecognized option:wrong configuration variable format for "%s"wrong export modewrong format in the appointment or eventwrong item typexcalloc: out of memoryxcalloc: overflowxcalloc: zero sizexfree: null pointerxmalloc: out of memoryxmalloc: zero sizexrealloc: out of memoryxrealloc: overflowxrealloc: zero sizeyesyyyy-mm-ddyyyy/mm/dd| calcurse memory usage report | Project-Id-Version: calcurse Report-Msgid-Bugs-To: bugs@calcurse.org POT-Creation-Date: 2013-02-09 14:04+0100 PO-Revision-Date: 2012-11-23 21:51+0000 Last-Translator: Lukas Fleischer Language-Team: French (http://www.transifex.com/projects/p/calcurse/language/fr/) Language: fr MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n > 1); Copyright (c) 2004-2012 Équipe de développement de calcurse Tous droits réservés. La redistribution et l'utilisation sous forme de source et d'exécutable, avec ou sans modification, sont autorisées si les conditions suivantes sont remplies : - Les redistributions du code source doivent conserver la notice de copyright ci-dessus, cette liste de conditions et la renonciation suivante. - Les redistributions sous forme binaire doivent reproduire la notice de copyright ci-dessus, cette liste de conditions et la renonciation suivante dans la documentation et / ou d'autres matériaux fournis avec la distribution. Envoyez vos réactions ou commentaires à : misc@calcurse.org Page d'accueil de Calcurse : http://calcurse.org Copyright (c) 2004-2012 Équipe de développement de calcurse. Ceci est un logiciel libre ; consultez le code source pour connaître les conditions légales d'utilisation. Pour plus d'informations, tapez '?' dans Calcurse, ou lisez la page de manuel. Si une conversion précédente ne s'est pas terminée, veuillez essayer de supprimer ce fichier et recommencer avec une sauvegarde de votre ancien fichier de configuration. Si une précédente conversion n'a pas fonctionné, vous pouvez essayer de réparer votre configuration à partir de cette sauvegarde, puis de supprimer la sauvegarde. Trop d'erreurs à la lecture du fichier de configuration ! Veuillez faire une sauvegarde votre fichier de raccourcis, et le supprimer du répertoire, puis relancer calcurse. ATTENTION : il semble qu'une autre instance de calcurse soit en cours d'exécution. Si ce n'est pas le cas, veuillez supprimer le fichier de verrouillage suivant : "%s" et relancer calcurse. id : %u taille : %u Bienvenue dans Calcurse. Vous êtes dans l'écran d'aide principal. blocs non libérés : %u alloué en : %s nombre d'appels : %u blocs alloués : %u "%s" est assignée plusieurs fois !# # Fichier de configuration des raccourcis de Calcurse # # Ce fichier définie les raccourcis clavier utilisés par Calcurse. # Les lignes débutant par "#" sont des commentaires ignorés par Calcurse. # Pour assigner un raccourci clavier à une action, ce fichier doit contenir une ligne # qui respecte la syntaxe suivante : # # ACTION TOUCHE1 TOUCHE2 ... TOUCHEn # # Où ACTION désigne la commande à exécuter lorsque TOUCHE1, TOUCHE2, ..., ou TOUCHEn # est pressée. # # Pour définir un raccourci utilisant la touche CONTRÔLE, préfixer la touche avec 'C-'. # Les touches échap, espace et tabulation horizontale peuvent être spécifiées en utilisant # les mots clefs respectifs ESC, SPC et TAB. # Les touches fléchées peuvent aussi être spécifiées avec les mots clefs UP, DWN, LFT, RGT. # Enfin les touches Début et Fin peuvent être assignées en utilisant les mots clefs KEY_HOME et KEY_END. # # Une description de ce que chaque ACTION fait est disponible # dans le menu de configuration de calcurse. %d app%d apps%d événement%d événements%d ignorés%d tâche%d tâches%s n'existe pas, le créer maintenant [y ou n] ? %s correctement créé (Commande utilisée pour prévenir l'utilisateur d'un rendez-vous sur le point de commencer)(Format de la date à afficher en mode non-interactif)(Format de la date à afficher dans la barre de notification)(Format de l'heure à afficher dans la barre de notification)(Format utilisé pour saisir une date : (Enregistrer l'activité lors de l'exécution en arrière-plan)(Signaler tous les rendez-vous au lieu de se restreindre à ceux marqués comme important)(Utiliser '^P' ou '^N' pour se déplacer vers le haut ou le bas, et 'Q' pour quitter)(Lancer en arrière-plan pour obtenir les notifications après avoir quitter)(Alerte l'utilisateur si un rendez-vous se produit les prochaines 'notify-bar_warning' secondes)(actuellement : %s)quotidien (d)(enregistre automatiquement toutes les 'periodic_save' minutes, si non nul)(si fixé à OUI, une sauvegarde est automatiquement effectuée en quittant)(si fixé à OUI, il est nécessaire de confirmer avant d'effacer un élément)(si fixé à OUI, il est nécessaire de confirmer avant de quitter)(si fixé à OUI, les messages concernant le chargement et l'enregistrement des données seront affichés)(si fixé à OUI, la barre de notification sera affichée)(si fixé à OUI, la barre sera affichée lors de la sauvegarde des données)(m)ensuel(lance le ramasse-miettes en quittant)(indique le premier jour de la semaine dans la vue de calendrier)(valeurs par défaut du terminal)hebdomadaire (w)annuel (y)+------------------------------+ +1 Jour+1 Mois+1 Sem.+1 An----------------------------------------- ---==== BLOC MÉMOIRE ====---------------- -1 Jour-1 Mois-1 Sem.-1 An/!\ ERREUR INTERNE /!\Ajouter Ajt rdvAjouterAjt tâcheAjouter une tâche, quel que soit le panneau actif.Ajouter un rendez-vous, quel que soit le panneau actif.Ajouter un élément à la liste des rendez-vous ou des tâches, en fonction du panneau sélectionné au moment ou vous pressez '%s'. Pour ajouter un nouvel élément à la liste des TÂCHES, vous devez d'abord saisir la description de ce nouvel élément. Il vous sera alors demandé d'indiquer sa priorité. Cette priorité est representée par un nombre compris entre 9 pour la plus basse, et 1 pour la plus haute. Il est toujours possible de modifier la priorité de l'élément par la suite, en utilisant les touches '%s' et '%s' dans le panneau des tâches. Si le panneau des RENDEZ-VOUS est sélectionné lorsque '%s' est pressée, vous pourrez saisir soit un nouveau rendez-vous soit un événement couvrant en jour entier. Pour ajouter un nouvel événement, pressez [ENTRÉE] au lieu de la date de début de l'élément, et remplissez uniquement la description de l'événement. Pour ajouter un nouveau rendez-vous à la liste des RENDEZ-VOUS, vous devrez saisir successivement le moment auquel il débute, sa durée (soit en indiquant l'heure de fin au format [hh:mm] soit sa durée avec [+hh:mm], [+xxdxxhxxm] ou [+mm]), et sa description. Le jour où se déroulera l'événement ou le rendez-vous correspond au jour actuellement sélectionné dans le calendrier, c'est pourquoi vous devez vous déplacer au jour désiré avant de presser '%s'. Remarques : o Si un rendez-vous s'étend sur plusieurs jours, cet événement sera indiqué sur tous les jours correspondants, et l'heure de début ou de fin seront remplacées par '...' si l'événement ne commence ni ne se finit ce jour là ; o Si vous appuyez simplement sur [ENTRÉE] lorsque la description du RENDEZ-VOUS ou de la TÂCHE est demandée, aucun élément ne sera ajouté ; o N'oublier de sauvegarder les données du calendrier pour récupérer le nouvel événement au prochain lancement de Calcurse.Ajouter un élément au panneau sélectionné.Ajouter une raccourciRendez-vous :Rendez-vousAvrilL'argument pour '-x' doit être soit 'ical' soit 'pcal' La syntaxe des arguments -r et --range est : 'n' Le format de l'argument pour -s ou --startday est : '%s' L'argument n'est pas valide L'argument de l'option '-d' n'est pas valide Joindre (ou modifier si elle existe) une note à l'élément sélectionnéJoindre une note à n'importe quel type d'élément, ou modifier une note existante. Cette fonctionnalité est utile si vous n'avez pas suffisamment de place pour stocker la description de l'élément, ou par exemple si vous voulez associer des sous-tâches à une tâche déjà existante. Avant d'appuyer sur la touche '%s', vous devez au préalable sélectionner l'élément auquel vous voulez associer une note. Ensuite, un éditeur externe s'ouvrira, dans lequel vous pourrez écrire votre note. L'éditeur est choisi de la manière suivante : o si la variable d'environnement 'VISUAL' est renseignée, alors l'éditeur par défaut sera appelé ; o si 'VISUAL' n'est pas renseignée, alors l'éditeur par défaut sera celui indiqué par la variable d'environnement 'EDITOR' ; o si aucune de ces variables n'est renseignée, alors '/usr/bin/vi' sera utilisé. Une fois la note de l'élément écrite et enregistrée, quittez votre éditeur favori. Vous serez ramené dans Calcurse, et le signe '>' apparaîtra alors devant l'élément en surbrillance, signifant qu'une note y est jointe.AoûtArrière planBloc introuvableCalcurse %s - organiseur personnel en mode texte Calcurse - organiseur personnel en mode texteAide de calcurseCalendrierImpossible d'utiliser plus d'une expression régulière.Annuler l'action en cours.Impossible de lancer le démon, annulation en cours Changer la priorité de l'élément sélectionné dans la liste de tâches. Les priorités sont représentées par un nombre placé devant la description de la tâche. Ce nombre est compris entre 9 pour la priorité la plus basse et 1 pour la plus haute. Les tâches ayant la plus forte priorité sont placées en premier (en haut) dans le panneau des tâches. Si vous voulez augmenter la priorité d'une tâche, vous devez appuyer sur '%s'. Ceci diminuera le nombre placé devant la tâche, indiquant ainsi une augmentation de la priorité. La position de l'élément dans le panneau des tâches pourra changer, en fonction de la priorité des éléments qui sont placés au dessus de lui. A l'inverse, pour diminuer une priorité, appuyez sur '%s'. La position de l'élément pourra également changer en fonction de la priorité des éléments placés en dessous de lui.Chg.Fen.Choisir le fichier vers lequel exporter les données :CouleurConfigurerConfig. Fichier de configuration introuvable :Impossible d'accéder à "%s" : %s impossible de changer le repertoire de travail : %s Impossible de compiler l'expression régulière.Impossible de se détacher du terminal appelant : %s Impossible de forker : %s Impossible de lire le libellé de la toucheImpossible d'effacer le fichier verrou de calcurse : %s Impossible de retirer le fichier verrou du démon : %s Impossible de vérouiller le fichier Impossible d'arrêter le démon calcurse : %s Impossible d'arrêter le démon normalement : %s Création d'une sauvegarde temporaire du fichier de configuration...Fichiers de données trouvés. Les données seront chargées immédiatement.DécembreSupprimerSupprimerSupprimer Supprimer un élément de la liste des tâches ou des rendez-vous. Selon le panneau sélectionné lorsque vous pressez la touche supprimer, l'élément en surbrillance sera supprimé de la liste correspondante. Si l'élément à supprimer est répétitif, il vous sera demandé si vous désirez supprimer toutes ses occurences ou seulement celle-ci. Si l'option générale 'confirm_delete' est activée, alors il vous sera demandé de confirmer la suppression de l'élément sélectionné. N'oubliez pas d'enregistrer les données du calendrier pour récupérer votre configuration au prochain lancement de Calcurse.Supprimer l'élément sélectionné.DescriptionTouches de déplacement Afficher des notes chaque fois que certains écrans d'aide sont disponibles.Afficher l'élément sélectionner dans une fenêtre indépendante.Voulez-vous vraiment effacer cet élément ?Voulez-vous vraiment effacer cette tâche ?Voulez-vous vraiment quitter ?BasERREUR de saisie du premier jour de la semaineModif. élém. ModifierModifier l'élément sélectionné.Modifier l'élément sélectionné. Suivant le type de l'élément(rendez-vous, événement ou tâche), et suivant si celui-ci est répété ou non, il vous sera demandé de choisir une des propriétés de cet élément pour la modifier. La propriété de l'élément peut être : l'heure de début, l'heure de fin, la description, ou la répétition de l'élément. Une fois que vous aurez choisi la propriété à modifier de l'élément, sa valeur actuelle sera affichée, et vous pourrez modifier celle-ci comme vous le voulez. Remarques : o si vous choisissez d'éditer les propriétés de répétition de l'élément, il vous sera demandé d'entrer à nouveau toutes les caractéristiques de celle-ci (type, fréquence, date de fin) ; De plus, les données concernant les occurrences supprimées seront perdues ; o n'oubliez pas de sauvegarder les données du calendrier pour retrouver vos modifications de propriété au prochain lancement de calcurse.Modifier :EditNoteModifNote Heure de finSaisir le numéro d'une option pour changer sa valeurSaisir la description :Saisir la priorité de la tâche [1 (plus important) - 9 (moins important)] :Ouvrir le menu de configuration.Saisir le format de date (voir 'man 3 strftime' pour les formats possibles)Saisir le format de date : Saisir le jour auquel vous souhaitez vous rendre [ou simplement ENTRÉE pour aujourd'hui] : %sSaisir le délai, en minutes, entre deux sauvegardes automatiques (0 pour désactiver)Saisir la date de fin : [%s] ou '0' pour répéter indéfinimentSaisir le nom du fichier depuis lequel importer les données :Saisir la nouvelle description de la tâche : Saisir la nouvelle tâche : Saisir la nouvelle date de fin : [%s] ou '0'Saisir la description du nouvel élément :Saisir la nouvelle fréquence de répétition :Saisir le nouveau type de répétition :Saisir la commande de notificationSaisir le nombre de secondes (0 pour désactiver l'alerte qui précéde un rendez-vous)Saisir la fréquence de répétition :Saisir le type de répétition :Saisir le format de l'heure (voir 'man 3 strftime' pour les formats possibles)Erreur de lecture de la touche : "%s"Erreur d'affectation du signal #%d : %s Erreur lors de la fermeture du fichier à %sErreur : calcurse (PID : %d) et son démon (PID : %d) semblent s'exécuter en même temps ! Veuillez verifier manuellement et relancer calcurse. Evénement :QuitterFermer le menu courant, ou quitter calcurse.ExporterExporter Exporter les données de calcurse (rendez-vous, événements et tâches). Ceci ouvre le sous-menu d'exportation, dans lequel vous pouvez choisir entre deux formats d'exportation différents : "ical et "pcal". En choisissant l'un de ces formats vous pouvez exporter les données de calcurse vers les formats icalendar ou pcal. Vous devez d'abord spécifier le fichier vers lequel les données seront exportées. Par défaut, c'est le fichier : ~/calcurse.ics pour un export ical, et : ~/calcurse.txt pour un export pcal. Les données de calcurse sont exportées en suivant l'ordre : événements, rendez-vous, tâches. Exporter les données vers un nouveau format de fichier.Exportation…ERREUR FATALE : impossible de créer %s : %s ERREUR FATALE : impossible de créer le fichier de raccourcis par défaut.ERREUR FATALE : valeur de clef hors limiteERREUR FATALE : pointeur de fichier nul.ERREUR FATALE : le fichier d'entrée n'a pu être ouvert, abandon...ERREUR FATALE : mode d'importation erronéImpossible de construire le message Impossible de fermer "%s" - %s Impossible d'ouvrir "%s", - %s Echec lors de l'affichage du message "%s" FévrierMarquerElem. Marq rdvMarquer l'élément sélectionné comme important.Premier planVenGénéralRaccourcis clavier génériques Aller àAller à la date du jour, quel que soit le panneau actif.Aller à AideImporterImporter Importer les données d'un fichier externe.Importer les données d'un fichier icalendar. Il vous sera demandé d'entrer le nom du fichier à partir duquel seront chargés les éléments ical. À la fin du processus d'importation, et si l'option générale 'system_dialogs' est définie à 'oui', un rapport indiquera combien d'éléments ont été importés. Ce rapport contient le nombre total de lignes lues, le nombre de rendez-vous, d'événements et de tâches importés avec succès, ainsi que le nombre d'éléments pour lequels un problème a été rencontré et qui ont été ignorés, s'il y a lieu. Si un ou plusieurs éléments n'ont pas pu être importés, il est possible de lire le rapport du processus d'importation pour identifier les problèmes qui ce sont produit. Dans ce rapport est présenté un élément par ligne, avec la ligne dans le flux d'entrée avec laquelle cet élément commence, ainsi que le motif pour lequel l'élément n'a pas pu être importé. Rapport du processus d'importation : %04d lignes lues Une erreur interne s'est produite durant l'affichage de la barre de progressionErreur interne : ligne trop longueDélai invalideHeure invalide : l'heure de début doit être antérieure à l'heure de fin !JanvierJuilletAller à un jour spécifique du calendrier. Grâce à cette commande, vous n'avez pas besoin de parcourir tout le calendrier en utilisant les touches de déplacement. Si vous appuyez sur [ENTRÉE], sans préciser une la date, Calcurse vérifie la date système actuelle et vous positionne à cette date. Notez qu'en appuyant sur '%s', quelle que soit le panneau sélectionné, la date du jour sera choisie dans le calendrier.JuinInformations de raccourciLibellé de la touche non reconnuRaccourcisÉcranGaucheChargement…Diminuer la priorité d'une tâche dans le panneau des tâches.Les rapports de bug sont à envoyer en anglais à . Vous pouvez envoyer vos remarques et suggestions à . MarsMaiLunLundiSe déplacer dans les écrans de calcurse. Le schéma suivant résume la façon de se déplacer : vers le haut aller à la semaine précédente %s ^ | vers la gauche %s <-- + --> %s vers la droite aller au jour | aller au jour précédent v suivant %s aller à la semaine suivante vers le bas De plus, à l'intérieur du calendrier, la touche '%s' déplace vers le premier jour de la semaine, et la touche '%s' sélectionne le dernier jour de la semaine. Vers le bas.Se déplacer au jour suivant du calendrier, quel que soit le panneau actif.Se déplacer au mois suivant du calendrier, quel que soit le panneau actif.Se déplacer à la semaine suivante du calendrier, quel que soit le panneau actif.Se déplacer à l'année suivante du calendrier, quel que soit le panneau actif.Se déplacer au jour précédent du calendrier, quel que soit le panneau actif.Se déplacer au mois précédent du calendrier, quel que soit le panneau actif.Se déplacer à la semaine précédente du calendrier, quel que soit le panneau actif.Se déplacer à l'année précédent du calendrier, quel que soit le panneau actif.Vers la gauche.Vers la droite.Vers le haut.Se déplacer : Presser '%s' ou '%s' pour faire défiler le texte vers le haut ou le bas de l'écran d'aide, si nécessaire. Quitter l'aide : Une fois terminé, presser '%s' pour quitter l'aide et revenir à l'écran principal de Calcurse. Rubriques d'aide : Au bas de cet écran vous pouvez voir un panneau avec des champs différents, représenté par une lettre et un titre court. Ce panneau contient toutes les actions disponibles que vous pouvez effectuer avec Calcurse. En appuyant sur une des lettres qui apparaissent dans ce panneau, vous verrez s'afficher une brève description de l'action correspondante. Sur le côté supérieur droit de l'écran de description sont indiqués les raccourcis définis par l'utilisateur. Crédits : Presser '%s' pour afficher les crédits.SuivantPas de couleurAucun journal à afficher !Fichier de note introuvable NotifierNovembreVoir Suiv.OctobreAncien fichier de sauvegarde trouvé :Ancien fichier temporaire trouvé :Ouvrir le sous-menu de configuration. Depuis ce sous-menu, vous pouvez choisir entre les options de couleur, mise en page, notification et les options générales ; et vous pouvez aussi configurer les raccourcis clavier. Le sous-menu couleur permet de choisir le thème de couleur. Le sous-menu mise en page permet de choisir la disposition des dives panneaux de Calcurse à l'écran. Le sous-menu des options générales fournie les diverses options qui modifient les interactions de Calcurse avec l'utilisateur. Le sous-menu notifier permet de modifier les paramètres de la barre de notification. Le sous-menu raccourcis permet de définir vos propres raccourcis clavier. N'oubliez pas d'enregistrer les données du calendrier pour récupérer votre configuration au prochain lancement de Calcurse.L'option '-S' doit être utilisée avec '-d', '-r', '-d', '-a', ou '-t' AutresAutreComm. CollerColler un élément à la position actuelle.TubeTube Passer un élément à une commande externe :Passer l'élément sélectionné à un programme externe.Passer l'élément sélectionné à un programme externe. Presser la touche '%s' pour passer le rendez-vous ou la tâche sélectionné à un programme externe. Vous serez redirigé vers calcurse lorsque l'exécution du programme sera terminée. Merci de reporter le bogue suivant :Format possible de l'argument : '%s' ou 'n' Les formats autorisés sont [%s] ou '0' pour répéter indéfinimentLes formats possibles sont [%s] ou '0' pour une répétition non bornée.Format de fichier de configuration pre-3.0.0 détecté, veuillez mettre à jour en lançant `calcurse-upgrade`.Format de fichier de configuration pre-3.0.0 détécté...Appuyer sur [ENTRÉE] pour continuerAppuyer sur [ENTRÉE] pour continuer.Appuyer sur [ENTRÉE] pour continuerPresser une touche pour continuer...Pressez la touche que vous voulez assigner :PrécédentAfficher les informations générales à propos des auteurs de calcurse, de la licence, etc.Prio.+Prio.-Priorité Problème d'accès aux fichiers de données…Voir Prec.QuitterAugmenter la priorité d'une tâche dans le panneau des tâches.RafraîchirRafraîchir l'écran de calcurse.Suppression de la sauvegarde temporaire...RépéterRépeter Répéter un événement ou un rendez-vous. Vous devez commencer par sélectionner un élément à répéter en vous déplacant dans le panneau de rendez-vous. Pressez alors '%s' ce qui affichera une série de trois questions, pour lequelles vos réponses détermineront les caractéristiques de la répétition : o type : vous pouvez choisir entre une répétition quotidienne, hebdomadaire, mensuelle ou annuelle en pressant respectivement 'D', 'W', 'M' ou 'Y' ; o fréquence : indique combien de fois l'élément doit être répété. Par exemple, si vous voulez vous souvenir d'un anniversaire, choisissez une répétition 'annuelle' avec une fréquence de '1', ce qui signifie qu'il sera répété chaque année. Autre exemple : si vous allez au restaurant tous les deux jours, choisissez une répétition 'quotidienne' avec une fréquence de '2' ; o date de fin : indique quand interrompre la répétition de l'événement ou du rendez-vous sélectionné. Pour indiquer une répétition non bornée, entrer '0' et l'élément sera répété continuellement. Remarques : o les éléments répétés sont marqués d'un '*' dans le panneau des rendez-vous, pour les distinguer aisément de ceux qui ne le sont pas ; o les commandes 'Répéter' et 'Supprimer' peuvent être mélangées pour créer des configurations complexes, car il est possible de supprimer une seule occurrence d'un élément répété.Répéter un élémentRépétitionDroiteSamEnregistrerEnreg. Enregistre les données de calcurse.Enregistrer des données de calcurse. Les données sont enregistrées dans quatre fichiers distincts qui contiennent : / ~/.calcurse/conf -> configuration de l'utilisateur | (agencement, couleur, options générales) | ~/.calcurse/apts -> données relatives aux rendez-vous | ~/.calcurse/todo -> données relatives aux tâches \ ~/.calcurse/keys -> configuration des raccourcis Dans le menu de configuration, vous pouvez choisir d'enregistrer les données de calcurse automatiquement avant de quitter.Enregistrement…Faire défiler l'écran vers le bas (p. ex. lors de l'affichage du texte dans une fenêtre indépendante).Faire défiler l'écran vers le haut (p. ex. lors de l'affichage du texte dans une fenêtre indépendante).SélectionnerSélectionner le panneau suivant dans l'écran général de calcurse.Sélectionner le jour à afficher.Sélectionner le premier jour de la semaine en cours lors de l'affichage du calendrier.Sélectionner l'élément en surbrillance.Sélectionner le dernier jour de la semaine en cours lors de l'affichage du calendrier.SeptembreAfficher l'action suivante possible dans la barre d'état.Barre latéraleCertaines actions n'ont pas de raccourcis clavier associés !Certains éléments n'ont pu être importés, voir le journal ?Certains raccourcis clavier sont valides quel que soit le panneau sélectionné. Ces raccourcis sont dit génériques. Ci-dessous est reproduite la liste des raccourcis clavier génériques, ainsi que les actions associées : '%s' : Rafraîchir -> redessiner l'écran de calcurse. Utile en cas de redimensionnement du terminal, ou lorsque l'affichage est corrompu. '%s' : Ajouter rendez-vous -> ajouter un rendez-vous ou un événement. '%s' : Ajouter tâche -> ajouter une nouvelle tâche. '%s' : Jour précédent -> se déplacer vers le jour précédent. '%s' : Jour suivant -> se déplacer vers le jour suivant. '%s' : Semaine précédente -> se déplacer vers la semaine précédente. '%s' : Semaine suivante -> se déplacer vers la semaine suivante. '%s' : Mois précédent -> se déplacer vers le mois précédent. '%s' : Mois suivant -> se déplacer vers le mois suivant. '%s' : Année précédente -> se déplacer vers l'année précédente. '%s' : Année suivante -> se déplacer vers l'année suivante. '%s' : Aujourd'hui -> se déplacer vers le jour courant. Les touches '%s' et '%s' sont utilisées pour faire défiler le texte dans certains écrans, par exemple l'écran d'aide. Elles sont également utilisées lorsque l'écran du calendrier est sélectionné, pour changer entre vue mensuelle et vue hebdomadaire du calendrier.Désolé, les couleurs ne sont pas prises en charge par votre terminal (Appuyer sur [ENTRÉE] pour continuer)Désolé, la date saisie est antérieure à la date de début de l'élément !Heure de débutDimDimancheBasculer entre les panneaux. Le panneau en cours d'utilisation est bordé de couleur. Certaines actions sont possibles seulement si le bon panneau est sélectionné. Par exemple, si vous voulez ajouter une tâche à la liste des TÂCHES, vous devez au préalable presser la touche '%s' pour sélectionner le panneau des TÂCHES. Puis vous pouvez presser la touche '%s' pour ajouter l'élément. Notez qu'au bas de l'écran la liste des actions possibles change lorsque vous appuyez sur '%s', ainsi vous savez à tout moment quelles actions sont réalisables dans le panneau sélectionné.Faire défiler les pages d'aide de la barre d'état. Puisque le terminal est trop étroit pour afficher toutes les commandes disponibles, vous devez appuyer sur '%s' pour voir la prochaine série de commandes et leurs raccourcis clavier. Une fois la dernière page de la barre d'état affichée, appuyer sur '%s' encore une fois pour être ramener à la première page.Tab Les fichiers de données ont été correctement enregistréesLes données ont été correctement exportéesLe jour que vous avez saisi n'est pas valide (il devrait être compris entre le 01/01/1902 et le 31/12/2037)La date saisie n'est pas valide.Le fichier ne peut être ouvert, veuillez saisir un autre nom de fichier.La fréquence que vous avez saisie n'est pas valide.Le fichier ical semble mal formé. La fin de l'élément n'a pas été trouvée.Des erreurs se sont produites lors du chargement du fichier de raccourcis. Voulez-vous consulter le journal ?Cet écran de configuration sert à changer la largeur de la barre latérale. La barre latérale est la partie de l'écran qui contient deux panneaux : le calendier et, en fonction de l'agencement choisi, soit la liste des tâches soit la liste des rendez-vous. La barre latérale peut couvrir jusqu'à 50% de la largeur de l'écran, mais ne peut pas être plus petite que Une note est associée à cet élément. Effacer l'(é)lément ou seulement la (n)ote ?Une note est jointe à cette tâche. Effacer la (t)âche ou seulement la (n)ote ?Cet élément est déjà répétitif.Cet élément est répétitif. Effacer (t)outes les occurences ou seulement (c)elle-ci ?Cette touche est déjà utilisée pour %s, veuillez en choisir une autre.Cette touche n'est pas encore reconnue par calcurse, veuillez en choisir une autre.JeuÀ faire :TâchesAujourd.Marquer un rendez-vous ou une tâche avec un drapeau 'important' ou 'terminé'. Si une tâche est marquée comme terminée, son numéro de priorité sera remplacé par un signe 'X'. Les tâches terminées n'apparaîtront plus dans les données exportées ou lorsque vous utilisez l'option '-t' en ligne de commande (sauf à indiquer '0' comme numéro de priorité, auquel cas seules les tâches terminées seront affichées). Si un rendez-vous est signalé comme important, un point d'exclamation apparaît en face de lui, et vous serez averti lorsque le rendez-vous débute. Pour personnaliser la façon de recevoir la notification, le sous-menu de configuration vous permet de choisir la commande lancée pour avertir l'utilisateur d'un rendez-vous à venir, et combien de temps avant il lui est notifié.Trop d'erreurs durant la lecture du fichier de raccourcis, annulation...Taper 'calcurse -h' pour plus d'informations. MarOption inconnue !HautMise à jour des instructions de configuration...Utilisation : calcurse-upgrade [-h|-v|--config ]VoirAfficher Consulter une note précédement attachée à un élément (un élément ayant une note est précédé du signe '>'). Cette commande permet seulement de consulter la note, pas de la modifier (pour cela, utilisez la commande 'EditNote', en pressant la touche '%s'). Lorsque vous avez sélectionné un élément ayant une note, et que vous pressez la touche '%s', vous êtes conduit vers un pager externe pour voir la note. Le pager par défaut est choisi de la manière suivante : o si la variable d'environnement 'PAGER' et définie, alors ce sera la visionneuse par défaut qui sera appelée ; o si cette même variable d'environnement n'est pas définie, alors '/usr/bin/less' sera utilisé. Comme pour la modification d'une note, quitter le pager et vous serez ramenés à calcurse.Voir l'élément que vous sélectionnez soit dans le panneau de la liste des tâches soit dans le panneau de la liste des rendez-vous. Ceci est utile quand la description d'un événement est plus longue que l'espace disponible pour l'afficher. Si tel est le cas, la description sera raccourcie et sa fin remplacée par '...'. Pour pouvoir lire toute la description, appuyez simplement sur '%s' et une fenêtre indépendante apparaîtra, contenant tout l'événement. Appuyez sur n'importe quelle touche pour fermer la fenêtre et revenir à l'écran principal de Calcurse.Consulter la note jointe à l'élément sélectionné.VoirNoteVoirNote Attention : impossible de créer un journal temporaire, abandon en cours...Attention : impossible d'effacer le journal temporaire %s, Abandon...Attention : impossible d'ouvrir %s, abandon...Attention : impossible d'ouvrir le journal temporaire, abandon...Attention : l'en-tête ical est mal formé ou le numéro de version est mauvais. Abandon…MerBienvenue dans Calcurse. Les fichiers manquants ont été créés.Pendant l'ajout de la touche par défaut pour "%s", "%s" était déjà assignée !Largeur +Largeur -Dans ce menu de configuration, on peut choisir où les panneaux seront affiché sur l'écran de calcurse. Il est possible de choisir parmi huit configurations différentes. Dans les représentations des configurations, les lettres correspondent à : 'c' -> calendrier 'a' -> panneau des rendez-vous 't' -> panneau des tâches [tc][dwmy][en][tn][on]annulation… rendez-vous sans date de début.rendez-vous introuvableréveillé à %s Déb Sem.le bloc semble déjà libéré à l'adresse %scalcurse n'est pas en cours d'exécution Calcurse est lancé (PID %d) calcurse s'exécute est arrière-plan (PID %d) thème de couleurtâches terminées : variable de configuration inconnue : "%s"fin de bloc corrompu à l'adresse %s, (fin = %u, devrait être %d)début de bloc corrompu à l'adresse %simpossible d'allouer de la mémoire pour stocker les informations du blocimpossible de calculer la durée (pas de date de fin).impossible de convertir la chaîne de caractèresimpossible de trouver la description entière de l'élément.impossible de récupérer l'heure de fin de l'événement.impossible de récupérer l'heure de début de l'événement.impossible de récupérer le résumé de l'événement.erreur de date sur ce rendez-vousdate erronée dans l'événementerreur dans la date de l'événement dbg_free : pointeur nulle à l'adresse %sdd/mm/yyyydescription mal formée.faitFin Sem.erreur dans mktimeerreur de chargement du rendez-vous suivant erreur durant le lancement de la commandeerreur pendant le lancement de la commande : fork impossibleerreur durant l'envoi de la notification la date de l'événement n'est pas définie.événement introuvableimpossible d'ouvrir le fichier des rendez-vousimpossible d'ouvrir le fichier de configurationimpossible d'ouvrir le fichier des raccourcis clavierimpossible d'ouvrir le fichier des tâcheserreur fatale dans mktimeoptions généralestype de répétition incohérentinstruction de configuration invalide : "%s"l'élément n'a pu être identifié.durée de l'élément mal formée.l'élément a une durée négative.La priorité de l'élément est illégale (doit être compris entre 1 et 9).raccourcis claviers : %sConfiguration des raccourcislancement de la notification à %s pour : "%s" Configuration de l'affichagemm/dd/yyyyprochain rendez-vous : nonaucun événement ni rendez-vous trouvéaucune note jointerendez-vous inconnutâche inconnuetype inconnuoptions de notificationPointeur nuloption non définiedépassement de mémoireen dehors de l'intervalledébordement à l'adresse %sdates d'exception de répétition mal formées.la fréquence de répétition introuvable.la fréquence de répétition non reconnue.règle de répétition mal formée.endormi à %s pour %d seconde endormi à %s pour %d secondes démarré à %s lancement du mode interactif… erreur de syntaxe dans la date de l'élémenterreur de syntaxe dans le nom de l'élémenterreur de syntaxe pour la répétition de l'élémenterreur de syntaxe pour l'heure ou la durée de l'élémenterreur de syntaxe sur la date de l'élémentle fichier temporaire "%s" n'a pas pu être créearrêté à %s avec le signal %d à faire : tâche introuvableinconnuecaractère inconnucouleur inconnuetype d'exportation inconnutype ical inconnutype d'importation inconnutype d'élément inconnupanneau inconnutype de répétition inconnutype inconnuoption non reconnue :format de variable de configuration incorrect pour "%s"mode d'exportation incorrectformat incorrect du rendez-vous ou de l'événementtype d'élément incorrectxcalloc : dépassement de mémoirexcalloc : débordementxcalloc : taille nullexfree : pointeur nulxmalloc : dépassement de mémoirexmalloc : taille nullexrealloc : dépassement de mémoirexrealloc : débordementxrealloc : taille nulleouiyyyy-mm-ddyyyy/mm/dd| rapport de consommation mémoire de calcurse | calcurse-3.1.4/po/es.gmo0000644000175000001440000002055012105444503011766 00000000000000kt K! :m ,  8 6' 6^ I 5 B 9X -      ' 9 @ #K o  -   *   ( (9 b   4 B 5P#pFB^fk r 1  '/8Rm   L>B&#<',$TDy(5 ;H[^|ND`%::9VGAF;a:  ")90?pw0+ B28;? {*($H9S,%,),V$G&Rjsy D  & 2>DIM \fn}'+) /9AE M ZHeE.('"PCs/)Q c g { /    E !!.!1!Q!e!Q)eU3HDg&#f:ZOc5-P6I^7d,iG</4a%W'T2E>KF8kABbJ9h.+=Mj _] " \@L *1?N;[CXS0V`!RY$(  For more information, type '?' from within Calcurse, or read the manpage. Welcome to Calcurse. This is the main help screen. %s does not exist, create it now [y or n] ? %s successfully created (Command used to notify user of an upcoming appointment)(Format of the date to be displayed inside notify-bar)(Format of the time to be displayed inside notify-bar)(Warn user if an appointment is within next 'notify-bar_warning' seconds)(if set to YES, automatic save is done when quitting)(if set to YES, confirmation is required before deleting an event)(if set to YES, confirmation is required before quitting)(if set to YES, notify-bar will be displayed)(terminal's default)Add ApptAdd ItemAdd TodoAppointment :AppointmentsAprilArgument to the '-d' flag is not valid AugustBackgroundCalcurse %s - text-based organizer Calcurse - text-based organizerCalendarChoose the file used to export calcurse data:ColorConfigData files found. Data will be loaded now.DecemberDel ItemDo you really want to delete this item ?Do you really want to delete this task ?Do you really want to quit ?Edit ItmEnter description :Enter the ToDo priority [1 (highest) - 9 (lowest)] :Enter the date format (see 'man 3 strftime' for possible formats) Enter the new ToDo description :Enter the new ToDo item : Enter the new item description:Enter the new repetition frequence:Enter the notification command Enter the number of seconds (0 not to be warned before an appointment)Enter the repetition frequence:Enter the time format (see 'man 3 strftime' for possible formats) Event :ExitExportExporting...FebruaryFlag ItmForegroundFriGeneralGo toHelpInvalid time: start time must be before end time!JanuaryJulyJuneLayoutLoading...MarchMayMonNotifyNovemberOctoberOtherCmdPress [ENTER] to continuePress [ENTER] to continue.Press [Enter] to continuePress any key to continue...Problems accessing data file ...QuitRedrawRepeatSatSaveSaving...SeptemberSorry, colors are not supported by your terminal (Press [ENTER] to continue)Sorry, the date you entered is older than the item start time.SunThe data files were successfully savedThe data were successfully exportedThe entered date is not valid.The file cannot be accessed, please enter another file name.The frequence you entered is not valid.This item is already a repeated one.This item is recurrent. Delete (a)ll occurences or just this (o)ne ?ThuTo do :ToDoTry 'calcurse -h' for more information. TueViewWedWelcome to Calcurse. Missing data files were created.aborting... next appointment: nostarting interactive mode... to do: yesProject-Id-Version: calcurse Report-Msgid-Bugs-To: bugs@calcurse.org POT-Creation-Date: 2013-02-09 14:04+0100 PO-Revision-Date: 2012-11-23 21:51+0000 Last-Translator: Lukas Fleischer Language-Team: LANGUAGE Language: es MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); Para mas informacion, pulsa '?' dentro de Calcurse, o lee la pagina del man. Bienvenid@ a Calcurse. Esta es la pantalla de ayuda inicial. %s no existe, crearlo ahora [y o n] ?%s creado con exito (Comando usado para notificar al usuario una cita proxima)(Formato de la fecha dentro de la barra de notificaciones)(Formato de la hora dentro de la barra de notificaciones)(Alarma de cita en los proximos 'alarma_barra-notificaciones' segundos)(si se fija en SI, se guardan automaticamente los datos al salir)(si se fija en SI, se requiere confirmacion antes de borrar un evento)(si se fija en SI, se requiere confirmacion antes de salir)(si se fija en SI, se mostrara la barra de notificaciones)(el del terminal por defecto)Añadir CitaAñadir elementoAñadir tareaCita :Citas y eventosAbrilEl argumento pasado a la opcion -d no es valido AgostoColor del fondo Calcurse %s - organizador basado en modo texto Calcurse - organizador basado en modo textoCalendarioElige el archivo que se usara para exportar los datos de Calcurse:ColorConfigArchivos de datos encontrados. Ahora se cargaran los datos.DiciembreBorrar elemento¿Seguro que quieres borrar este elemento?¿Seguro que quieres borrar esta tarea ?¿Estas seguro de que quieres salir?Editar elementoIntroduce la descripcion :Introduce la prioridad de la tarea [1 (la mas alta) - 9 (la mas baja)] :Introduce el formato de la fecha (ver 'man 3 strftime' para los formatos posibles) Introduce la descripcion de la nueva tarea :Introduce una nueva tarea pendiente :Introduce la descripcion del nuevo elemento:Introduce la nueva frecuencia de repeticion:Introduce el comando de notificacionIntroduce el numero de segundos (con 0 no se avisara antes de una cita)Introduce la frecuencia de repeticion:Introduce el formato de la hora (ver 'man 3 strftime' para los formatos posibles) Evento :SalirExportarExportando...FebreroMarcar elementoColor del textoVieGeneralIr aAyudaHora no valida: La hora de inicio debe ser anterior a la hora final!EneroJulioJunioDisposicionCargando...MarzoMayoLunNotificacionesNoviembreOctubreOtros comandosPulsa [INTRO] para continuarPulsa [INTRO] para continuar.Pulsa [INTRO] para continuarPulsa cualquier tecla para continuar...Problemas al acceder al fichero de datos...SalirRedibujarRepetirSabGuardarGuardando...SeptiembreLo siento, tu terminal no soporta colores (Pulsa [INTRO] para continuar)La fecha que has introducido es anterior a la de inicio del elemento.DomLos archivos de datos se han salvado con exitoLos datos se han exportado correctamenteLa fecha introducida no es valida.El archivo no es accesible, por favor elige otro nombre de archivo.La frecuencia que has introducido no es valida.Este elemento es ya un elemento repetido.Este evento es recurrente. ¿ Borrar todas las recurrencias (a) o solo esta (o) ?JueTareas pendientes :Tareas pendientesPrueba con 'calcurse -h' para mas informacion. MarVistaMieBienvenid@ a Calcurse. Se crearon los archivos de datos que faltaban.abortando... Proxima cita: noarrancando modo interactivo... Tareas pendientes: sicalcurse-3.1.4/po/Rules-quot0000644000175000001440000000337612105444401012662 00000000000000# Special Makefile rules for English message catalogs with quotation marks. DISTFILES.common.extra1 = quot.sed boldquot.sed en@quot.header en@boldquot.header insert-header.sin Rules-quot .SUFFIXES: .insert-header .po-update-en en@quot.po-create: $(MAKE) en@quot.po-update en@boldquot.po-create: $(MAKE) en@boldquot.po-update en@quot.po-update: en@quot.po-update-en en@boldquot.po-update: en@boldquot.po-update-en .insert-header.po-update-en: @lang=`echo $@ | sed -e 's/\.po-update-en$$//'`; \ if test "$(PACKAGE)" = "gettext"; then PATH=`pwd`/../src:$$PATH; GETTEXTLIBDIR=`cd $(top_srcdir)/src && pwd`; export GETTEXTLIBDIR; fi; \ tmpdir=`pwd`; \ echo "$$lang:"; \ ll=`echo $$lang | sed -e 's/@.*//'`; \ LC_ALL=C; export LC_ALL; \ cd $(srcdir); \ if $(MSGINIT) -i $(DOMAIN).pot --no-translator -l $$ll -o - 2>/dev/null | sed -f $$tmpdir/$$lang.insert-header | $(MSGCONV) -t UTF-8 | $(MSGFILTER) sed -f `echo $$lang | sed -e 's/.*@//'`.sed 2>/dev/null > $$tmpdir/$$lang.new.po; then \ if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \ rm -f $$tmpdir/$$lang.new.po; \ else \ if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \ :; \ else \ echo "creation of $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \ exit 1; \ fi; \ fi; \ else \ echo "creation of $$lang.po failed!" 1>&2; \ rm -f $$tmpdir/$$lang.new.po; \ fi en@quot.insert-header: insert-header.sin sed -e '/^#/d' -e 's/HEADER/en@quot.header/g' $(srcdir)/insert-header.sin > en@quot.insert-header en@boldquot.insert-header: insert-header.sin sed -e '/^#/d' -e 's/HEADER/en@boldquot.header/g' $(srcdir)/insert-header.sin > en@boldquot.insert-header mostlyclean: mostlyclean-quot mostlyclean-quot: rm -f *.insert-header calcurse-3.1.4/po/quot.sed0000644000175000001440000000023112105444402012330 00000000000000s/"\([^"]*\)"/“\1”/g s/`\([^`']*\)'/‘\1’/g s/ '\([^`']*\)' / ‘\1’ /g s/ '\([^`']*\)'$/ ‘\1’/g s/^'\([^`']*\)' /‘\1’ /g s/“”/""/g calcurse-3.1.4/po/ru.gmo0000644000175000001440000027622312105444504012020 00000000000000 (!(r*K,+x+,,*55T6h6:|666667X.7:: ::,::8 ;<D;6;6;);)<6C<4z<6<I<0=E=DM=5=B=9 >GE>->@> >)?60?g?|??!?????*?*?&@-@6@>@F@]@b@k@t@7}@:@@,GG G G H4H+EH/qHH'HDH%IL MM#MCM cMqM0zMMMMP-PPPPPQ!Q1Q)RS'S%GS3mSSS(S&ST#7T#[T4T*TTTTTHU#JW nWzW7W:W(X()XRXoXtX XX XPX\!\ *\4\*=\h\T|\V\I(]4r]]B]^- ^DN^<^(^ ^_&5_\_#|__)__F `P`p`B```a#aaa-aaaa! d"/d Rd%_d0d$dd;d7eVeoeeee ee.e fff&f;f)Afkfqfvf}f"f+f'i,i)j GjVUj1jjjvjblglpllll l,l)l>l;mAmEmIm Pm ^pDipFpEpE;qHqIqHrH]rrrrXr-v6v?vWvkvrv{vvvvvDyy yy&yz zz8/zhz @{*a{:{;{X|/\|||||$|}A&}h}o} v} }}},}}}}~~p'~ ǃۃ ECE*LwHنG >-Hv5~0Lt>  8,&1#XN|ː<''CO=CёGG]$Dʓ=FM4g(ŗɗۗ#ޗ/٘ ݛ6ҝ ۝9;'[7C5<9v~>>Š8=BINSX ]jء+ ;G$Y1~-ˢ)#&<"c$ ̣ 0;RW`p-!ܤ)!Ik%٥6:T'ۦ 0A U bo  %Χ$9<Tب%>(\  ǩ ٩ ! 3A Yf,{( /CZm !ƫr x| ´rKe*:($M5d#;'a6]W]N)E:znTWQOCHo.\_[KsK +E!Y { **  (1HZnVZ DA"d 5:> ]0~2 9FZ6j2l5cW ? 4 :FbD ONoZY,s8@3LNBWd6<'/"H \T#4B#f|1I (>U^q}}aEd(h&<Oc}Y1) 7/'+W75l+^/o.*6Y; >y 63L 0N $  } SB 1 ( ) 2 N ] | E    * $ T3     I _ =l\M!Uwi x7$  -8NLMiS\chm km~oi\mo4qk   F#$4%$/Z$$ $ $$G$d%'t%s)***>**(i*)*L* +q+#,D-`d-b-(.S.!/8/P/+g/E//l/ _0 m0{0B0 0 0N061$G1>l1 11<1 :*: ?:L: Q:[:o::d=p|=r=`>Oo>>>n>5m?t?@i)@@P@f@`AeWGcG!H?HDHIH4KN5N8PNUN'NhOBpOnOf"PP{Ru S2SScUTgT!U &U1U:UIUVYK6ZZ0Z Z0ZZB[\(\3:\n`38clccncsdQydnd:eezeTHffffph]hXi _ijioitiyi~iAi iij)jIj"gjAjj%jDk1Skk-kvk>ElJl[lU+mNm%m'm(nGndn&wnnnnEn:"on]oEo2p"Ep3hp?p3p-q>q#Uq0yq%q?qIrZZrNr(s-s4Ms+ss!ss2s%t#?tctt)tt*tu!1uSuJbu8u>u;%vavv@v):w9dw5wSw)(xFRx-xxxx#y7y.Wy"y,y*y#z2%zXz"vzWz.z@ {,a{{{{{{{| |3|G|K|^|!q|& epoS~(.d\|z{kTT4jHKLK&{sk oj5Y+};bhItux_ !@J "2B)w8p?s@<6v ,"6VUGZf3*DSL3gAmY*va$[?Bq%];dNc.')bER,^[ W/5gUCe<zi#ORNA]cHyD y7/}P I_CXGXa+7J'Ml:i|0rP~VwE# !F rFW1lm>2-9%=`0=O:-fqt>^$ x(Q`nZnh4\9M1Qu8  Copyright (c) 2004-2013 calcurse Development Team All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Send your feedback or comments to : misc@calcurse.org Calcurse home page : http://calcurse.org Copyright (c) 2004-2013 calcurse Development Team. This is free software; see the source for copying conditions. For more information, type '?' from within Calcurse, or read the manpage. If a previous conversion did not complete, please try to remove this file and start over with a backup of your old configuration file. If a previous conversion did not complete, please try to restore your configuration from this backup and then remove the backup file. Miscellaneous: -h, --help print this help and exit. -v, --version print calcurse version and exit. --status display the status of running instances of calcurse. --read-only Don't save configuration nor appointments/todos. Use with care. Files: -c , --calendar specify the calendar to use (has precedence over '-D'). -D , --directory specify the data directory to use. If not specified, the default directory is ~/.calcurse Non-interactive: -a, --appointment print events and appointments for current day and exit. -d , --day print events and appointments for or upcoming days and exit. To specify both a starting date and a range, use the '--startday' and the '--range' option. -g, --gc run the garbage collector for note files and exit. -i , --import import the icalendar data contained in . -n, --next print next appointment within upcoming 24 hours and exit. Also given is the remaining time before this next appointment. -r[num], --range[=num] print events and appointments for the [num] number of days and exit. If no [num] is given, a range of 1 day is considered. -s[date], --startday[=date] print events and appointments from [date] and exit. If no [date] is given, the current day is considered. -S, --search= search for the given regular expression within events, appointments, and todos description. -t[num], --todo[=num] print todo list and exit. If the optional number [num] is given, then only todos having a priority equal to [num] will be returned. The priority number must be between 1 (highest) and 9 (lowest). It is also possible to specify '0' for the priority, in which case only completed tasks will be shown. -x[format], --export[=format] export user data to the specified format. Events, appointments and todos are converted and echoed to stdout. Two possible formats are available: 'ical' and 'pcal'. If the optional argument format is not given, ical format is selected by default. note: redirect standard output to export data to a file, by issuing a command such as: calcurse --export > calcurse.dat Too many errors while reading configuration file! Please backup your keys file, remove it from directory, and launch calcurse again. WARNING: it seems that another calcurse instance is already running. If this is not the case, please remove the following lock file: "%s" and restart calcurse. id: %u size: %u Welcome to Calcurse. This is the main help screen. unfreed blocks: %u allocated in: %s number of calls: %u allocated blocks: %u "%s" assigned multiple times!# # Calcurse keys configuration file # # This file sets the keybindings used by Calcurse. # Lines beginning with "#" are comments, and ignored by Calcurse. # To assign a keybinding to an action, this file must contain a line # with the following syntax: # # ACTION KEY1 KEY2 ... KEYn # # Where ACTION is what will be performed when KEY1, KEY2, ..., or KEYn # will be pressed. # # To define bindings which use the CONTROL key, prefix the key with 'C-'. # The escape, space bar and horizontal Tab key can be specified using # the 'ESC', 'SPC' and 'TAB' keyword, respectively. # Arrow keys can also be specified with the UP, DWN, LFT, RGT keywords. # Last, Home and End keys can be assigned using 'KEY_HOME' and 'KEY_END' # keywords. # # A description of what each ACTION keyword is used for is available # from calcurse online configuration menu. %d app%d apps%d event%d events%d skipped%d todo%d todos%s does not exist, create it now [y or n] ? %s successfully created (Command used to notify user of an upcoming appointment)(Format of the date to be displayed in non-interactive mode)(Format of the date to be displayed inside notify-bar)(Format of the time to be displayed inside notify-bar)(Format to be used when entering a date: (Log activity when running in background)(Notify all appointments instead of flagged ones only)(Press '^P' or '^N' to move up or down, 'Q' to quit)(Run in background to get notifications after exiting)(Warn user if an appointment is within next 'notify-bar_warning' seconds)(currently using %s)(d)aily(if not null, automatically save data every 'periodic_save' minutes)(if set to YES, automatic save is done when quitting)(if set to YES, confirmation is required before deleting an event)(if set to YES, confirmation is required before quitting)(if set to YES, messages about loaded and saved data will be displayed)(if set to YES, notify-bar will be displayed)(if set to YES, progress bar will be displayed when saving data)(m)onthly(run the garbage collector when quitting)(specifies the first day of week in the calendar view)(terminal's default)(w)eekly(y)early+------------------------------+ +1 Day+1 Month+1 Week+1 Year----------------------------------------- ---==== MEMORY BLOCK ====---------------- -1 Day-1 Month-1 Week-1 Year/!\ INTERNAL ERROR /!\Add Add ApptAdd ItemAdd TodoAdd a todo item, whichever panel is currently selected.Add an appointment, whichever panel is currently selected.Add an item in either the ToDo or Appointment list, depending on which panel is selected when you press '%s'. To enter a new item in the TODO list, you will need first to enter the description of this new item. Then you will be asked to specify the todo priority. This priority is represented by a number going from 9 for the lowest priority, to 1 for the highest one. It is still possible to change the item priority afterwards, by using the '%s' and '%s' keys inside the todo panel. If the APPOINTMENT panel is selected while pressing '%s', you will be able to enter either a new appointment or a new all-day long event. To enter a new event, press [ENTER] instead of the item start time, and just fill in the event description. To enter a new appointment to be added in the APPOINTMENT list, you will need to enter successively the time at which the appointment begins, the appointment length (either by specifying the end time in [hh:mm] or the duration in [+hh:mm], [+xxdxxhxxm] or [+mm] format), and the description of the event. The day at which occurs the event or appointment is the day currently selected in the calendar, so you need to move to the desired day before pressing '%s'. Notes: o if an appointment lasts for such a long time that it continues on the next days, this event will be indicated on all the corresponding days, and the beginning or ending hour will be replaced by '..' if the event does not begin or end on the day. o if you only press [ENTER] at the APPOINTMENT or TODO event description prompt, without any description, no item will be added. o do not forget to save the calendar data to retrieve the new event next time you launch Calcurse.Add an item to the currently selected panel.Add keyAppointment :AppointmentsAprilArgument for '-x' should be either 'ical' or 'pcal' Argument format for -r and --range is: 'n' Argument format for -s and --startday is: '%s' Argument is not valid Argument to the '-d' flag is not valid Attach (or edit if one exists) a note to the currently selected itemAttach a note to any type of item, or edit an already existing note. This feature is useful if you do not have enough space to store all of your item description, or if you would like to add sub-tasks to an already existing todo item for example. Before pressing the '%s' key, you first need to highlight the item you want the note to be attached to. Then you will be driven to an external editor to edit your note. This editor is chosen the following way: o if the 'VISUAL' environment variable is set, then this will be the default editor to be called. o if 'VISUAL' is not set, then the 'EDITOR' environment variable will be used as the default editor. o if none of the above environment variables is set, then '/usr/bin/vi' will be used. Once the item note is edited and saved, quit your favorite editor. You will then go back to Calcurse, and the '>' sign will appear in front of the highlighted item, meaning there is a note attached to it.AugustBackgroundBlock not foundCalcurse %s - text-based organizer Calcurse - text-based organizerCalcurse helpCalendarCan not handle more than one regular expression.Cancel the ongoing action.Cannot daemonize, aborting Change the priority of the currently selected item in the ToDo list. Priorities are represented by the number appearing in front of the todo description. This number goes from 9 for the lowest priority to 1 for the highest priority. Todo having higher priorities are placed first (at the top) inside the todo panel. If you want to raise the priority of a todo item, you need to press '%s'. In doing so, the number in front of this item will decrease, meaning its priority increases. The item position inside the todo panel may change, depending on the priority of the items above it. At the opposite, to lower a todo priority, press '%s'. The todo position may also change depending on the priority of the items below.Chg WinChoose the file used to export calcurse data:ColorConfigConfig Configuration file not found:CopyCopy and Paste Copy and paste the currently selected item. This is useful to quickly copy an item from one date to another. To do so, one must first highlight the item that needs to be copied, then press '%s' to copy. Once the new date is chosen in the calendar, the appointment panel must be selected and the '%s' key must be pressed to paste the item. The item will appear in the appointment panel, assigned to the newly selected date. Copy the item that is currently selected.Could not access "%s": %s Could not change working directory: %s Could not compile regular expression.Could not detach from the controlling terminal: %s Could not fork: %s Could not read key labelCould not remove calcurse lock file: %s Could not remove daemon lock file: %s Could not set lock file Could not stop calcurse daemon: %s Could not stop daemon properly: %s Create temporary backup of the configuration file...Data files found. Data will be loaded now.DecemberDel ItemDel keyDelete Delete an element in the ToDo or Appointment list. Depending on which panel is selected when you press the delete key, the hilighted item of either the ToDo or Appointment list will be removed from this list. If the item to be deleted is recurrent, you will be asked if you wish to suppress all of the item occurences or just the one you selected. If the general option 'confirm_delete' is set to 'YES', then you will be asked for confirmation before deleting the selected event. Do not forget to save the calendar data to retrieve the modifications next time you launch Calcurse.Delete the currently selected item.DescriptionDisplacement keys Display hints whenever some help screens are available.Display the currently selected item inside a popup window.Do you really want to delete this item ?Do you really want to delete this task ?Do you really want to quit ?DownERROR setting first day of weekEdit Item Edit ItmEdit the currently seleted item.Edit the item which is currently selected. Depending on the item type (appointment, event, or todo), and if it is repeated or not, you will be asked to choose one of the item properties to modify. An item property is one of the following: the start time, the end time, the description, or the item repetition. Once you have chosen the property you want to modify, you will be shown its actual value, and you will be able to change it as you like. Notes: o if you choose to edit the item repetition properties, you will be asked to re-enter all of the repetition characteristics (repetition type, frequence, and ending date). Moreover, the previous data concerning the deleted occurences will be lost. o do not forget to save the calendar data to retrieve the modified properties next time you launch Calcurse.Edit: EditNoteEditNote End timeEnter an option number to change its valueEnter description :Enter end time ([hh:mm] or [hhmm]) or duration ([+hh:mm], [+xxxdxxhxxm] or [+mm]) : Enter new end time ([hh:mm], [hhmm]) or duration ([+hh:mm], [+xxxdxxhxxm] or [+mm]) : Enter start time ([hh:mm] or [hhmm]), leave blank for an all-day event : Enter the ToDo priority [1 (highest) - 9 (lowest)] :Enter the configuration menu.Enter the date format (see 'man 3 strftime' for possible formats) Enter the date format: Enter the day to go to [ENTER for today] : %sEnter the delay, in minutes, between automatic saves (0 to disable) Enter the ending date: [%s] or '0' for an endless repetitionEnter the file name to import data from:Enter the new ToDo description :Enter the new ToDo item : Enter the new ending date: [%s] or '0'Enter the new item description:Enter the new repetition frequence:Enter the new repetition type:Enter the new time ([hh:mm] or [hhmm]) : Enter the notification command Enter the number of seconds (0 not to be warned before an appointment)Enter the repetition frequence:Enter the repetition type:Enter the time format (see 'man 3 strftime' for possible formats) Error reading key: "%s"Error setting signal #%d : %s Error when closing file at %sError: both calcurse (pid: %d) and its daemon (pid: %d) seem to be running at the same time! Please check manually and restart calcurse. Event :ExitExit from the current menu, or quit calcurse.ExportExport Export calcurse data (appointments, events and todos). This leads to the export submenu, from which you can choose between two different export formats: 'ical' and 'pcal'. Choosing one of those formats lets you export calcurse data to icalendar or pcal format. You first need to specify the file to which the data will be exported. By default, this file is: ~/calcurse.ics for an ical export, and: ~/calcurse.txt for a pcal export. Calcurse data are exported in the following order: events, appointments, todos. Export data to a new file format.Export to (i)cal or (p)cal format?Exporting...FATAL ERROR: could not create %s: %s FATAL ERROR: could not create default keys file.FATAL ERROR: key value out of boundsFATAL ERROR: null file pointer.FATAL ERROR: the input file cannot be accessed, Aborting...FATAL ERROR: wrong import modeFailed to build message Failed to close "%s" - %s Failed to open "%s", - %s Failed to print message "%s" FebruaryFlag Item Flag ItmFlag the currently selected item as important.ForegroundFriGeneralGeneric keybindings Go toGo to today, whichever panel is selected.Goto HelpImportImport Import data from an external file.Import data from an icalendar file. You will be asked to enter the file name from which to load ical items. At the end of the import process, and if the general option 'system_dialogs' is set to 'yes', a report indicating how many items were imported is shown. This report contains the total number of lines read, the number of appointments, events and todo items which were successfully imported, together with the number of items for which problems occured and that were skipped, if any. If one or more items could not be imported, one has the possibility to read the import process report in order to identify which problems occured. In this report is shown one item per line, with the line in the input stream at which this item begins, together with the description of why the item could not be imported. Import process report: %04d lines read Internal error while displaying progress barInternal error: line too longInvalid delayInvalid end time/duration, should be [hh:mm], [hhmm], [+hh:mm], [+xxxdxxhxxm] or [+mm]Invalid time: start time must be before end time!JanuaryJulyJump to a specific day in the calendar. Using this command, you do not need to travel to that day using the displacement keys inside the calendar panel. If you hit [ENTER] without specifying any date, Calcurse checks the system current date and you will be taken to that date. Notice that pressing '%s', whatever panel is selected, will select current day in the calendar.JuneKey infoKey label not recognizedKeysLayoutLeftLoading...Lower a task priority inside the todo panel.Mail bug reports to . Mail feature requests and suggestions to . MarchMayMonMondayMove around inside calcurse screens. The following scheme summarizes how to get around: move up move to previous week %s move left ^ move to previous day | %s <-- + --> %s | move right v move to next day %s move to next week move down Moreover, while inside the calendar panel, the '%s' key moves to the first day of the week, and the '%s' key selects the last day of the week. Move down.Move to next day in calendar, whichever panel is currently selected.Move to next month in calendar, whichever panel is currently selected.Move to next week in calendar, whichever panel is currently selected.Move to next year in calendar, whichever panel is currently selected.Move to previous day in calendar, whichever panel is currently selected.Move to previous month in calendar, whichever panel is currently selectedMove to previous week in calendar, whichever panel is currently selectedMove to previous year in calendar, whichever panel is currently selectedMove to the left.Move to the right.Move up.Moving around: Press '%s' or '%s' to scroll text upward or downward inside help screens, if necessary. Exit help: When finished, press '%s' to exit help and go back to the main Calcurse screen. Help topic: At the bottom of this screen you can see a panel with different fields, represented by a letter and a short title. This panel contains all the available actions you can perform when using Calcurse. By pressing one of the letters appearing in this panel, you will be shown a short description of the corresponding action. At the top right side of the description screen are indicated the user-defined key bindings that lead to the action. Credits: Press '%s' for credits.Next KeyNo colorNo log file to display!No note file found NotifyNovemberNxt ViewOctoberOld backup file found:Old temporary file found:Open the configuration submenu. From this submenu, you can select between color, layout, notification and general options, and you can also configure your keybindings. The color submenu lets you choose the color theme. The layout submenu lets you choose the Calcurse screen layout, in other words where to place the three different panels on the screen. The general options submenu brings a screen with the different options which modifies the way Calcurse interacts with the user. The notify submenu allows you to change the notify-bar settings. The keys submenu lets you define your own key bindings. Do not forget to save the calendar data to retrieve your configuration next time you launch Calcurse.Option '-S' must be used with either '-d', '-r', '-s', '-a' or '-t' OtherCmdOtherCmd PastePaste an item at the current position.PipePipe Pipe item to external command:Pipe the currently selected item to an external program.Pipe the selected item to an external program. Press the '%s' key to pipe the currently selected appointment or todo entry to an external program. You will be driven back to calcurse as soon as the program exits. Please report the following bug:Possible argument format are: '%s' or 'n' Possible formats are [%s] or '0' for an endless repetitionPossible formats are [%s] or '0' for an endless repetition.Pre-3.0.0 configuration file format detected, please upgrade running `calcurse-upgrade`.Pre-3.0.0 configuration file format detected...Press [ENTER] to continuePress [ENTER] to continue.Press [Enter] to continuePress any key to continue...Press the key you want to assign to:Prev KeyPrint general information about calcurse's authors, license, etc.Prio.+Prio.-Priority Problems accessing data file ...Prv ViewQuitRaise a task priority inside the todo panel.RedrawRedraw calcurse's screen.Remove temporary backup...RepeatRepeat Repeat an event or an appointment. You must first select the item to be repeated by moving inside the appointment panel. Then pressing '%s' will lead you to a set of three questions, with which you will be able to specify the repetition characteristics: o type: you can choose between a daily, weekly, monthly or yearly repetition by pressing 'D', 'W', 'M' or 'Y' respectively. o frequence: this indicates how often the item shall be repeated. For example, if you want to remember an anniversary, choose a 'yearly' repetition with a frequence of '1', which means it must be repeated every year. Another example: if you go to the restaurant every two days, choose a 'daily' repetition with a frequence of '2'. o ending date: this specifies when to stop repeating the selected event or appointment. To indicate an endless repetition, enter '0' and the item will be repeated forever. Notes: o repeated items are marked with an '*' inside the appointment panel, to be easily recognizable from non-repeated ones. o the 'Repeat' and 'Delete' command can be mixed to create complicated configurations, as it is possible to delete only one occurence of a repeated item.Repeat an itemRepetitionRightSatSaveSave Save calcurse data.Save calcurse data. Data are splitted into four different files which contain : / ~/.calcurse/conf -> user configuration | (layout, color, general options) | ~/.calcurse/apts -> data related to the appointments | ~/.calcurse/todo -> data related to the todo list \ ~/.calcurse/keys -> user-defined key bindings In the config menu, you can choose to save the Calcurse data automatically before quitting.Saving...Scroll window down (e.g. when displaying text inside a popup window).Scroll window up (e.g. when displaying text inside a popup window).SelectSelect next panel in calcurse main screen.Select the day to go to.Select the first day of the current week when inside the calendar panel.Select the highlighted item.Select the last day of the current week when inside the calendar panel.SeptemberShow next possible actions inside status bar.SidebarSome actions do not have any associated key bindings!Some items could not be imported, see log file ?Some of the keybindings apply whatever panel is selected. They are called generic keybinding. Here is the list of all the generic key bindings, together with their corresponding action: '%s' : Redraw function -> redraws calcurse panels, this is useful if you resize your terminal screen or when garbage appears inside the display '%s' : Add Appointment -> add an appointment or an event '%s' : Add ToDo -> add a todo '%s' : -1 Day -> move to previous day '%s' : +1 Day -> move to next day '%s' : -1 Week -> move to previous week '%s' : +1 Week -> move to next week '%s' : -1 Month -> move to previous month '%s' : +1 Month -> move to next month '%s' : -1 Year -> move to previous year '%s' : +1 Year -> move to next year '%s' : Goto today -> move to current day The '%s' and '%s' keys are used to scroll text upward or downward when inside specific screens such the help screens for example. They are also used when the calendar screen is selected to switch between the available views (monthly and weekly calendar views).Sorry, colors are not supported by your terminal (Press [ENTER] to continue)Sorry, the date you entered is older than the item start time.Start timeSunSundaySwitch between panels. The panel currently in use has its border colorized. Some actions are possible only if the right panel is selected. For example, if you want to add a task in the TODO list, you need first to press the '%s' key to get the TODO panel selected. Then you can press '%s' to add your item. Notice that at the bottom of the screen the list of possible actions change while pressing '%s', so you always know what action can be performed on the selected panel.Switch between status bar help pages. Because the terminal screen is too narrow to display all of the available commands, you need to press '%s' to see the next set of commands together with their keybindings. Once the last status bar page is reached, pressing '%s' another time leads you back to the first page.Tab The data files were successfully savedThe data were successfully exportedThe day you entered is not valid (should be between 01/01/1902 and 12/31/2037)The entered date is not valid.The file cannot be accessed, please enter another file name.The frequence you entered is not valid.The ical file seems to be malformed. The end of item was not found.There were some errors when loading keys file, see log file ?This configuration screen is used to change the width of the side bar. The side bar is the part of the screen which contains two panels: the calendar and, depending on the chosen layout, either the todo list or the appointment list. The side bar width can be up to 50% of the total screen width, but can't be smaller than This item has a note attached to it. Delete (i)tem or just its (n)ote ?This item has a note attached to it. Delete (t)odo or just its (n)ote ?This item is already a repeated one.This item is recurrent. Delete (a)ll occurences or just this (o)ne ?This key is already in use for %s, please choose another one.This key is not yet recognized by calcurse, please choose another one.ThuTo do :ToDoTodayToggle an appointment's 'important' flag or a todo's 'completed' flag. If a todo is flagged as completed, its priority number will be replaced by an 'X' sign. Completed tasks will no longer appear in exported data or when using the '-t' command line flag (unless specifying '0' as the priority number, in which case only completed tasks will be shown). If an appointment is flagged as important, an exclamation mark appears in front of it, and you will be warned if time gets closed to the appointment start time. To customize the way one gets notified, the configuration submenu lets you choose the command launched to warn user of an upcoming appointment, and how long before it he gets notified.Too many errors while reading keys file, aborting...Try 'calcurse -h' for more information. TueUndefined option!UpUpgrade configuration directives...Usage: calcurse [-g|-h|-v] [-an] [-t[num]] [-i] [-x[format]] [-d |] [-s[date]] [-r[range]] [-c] [-D] [-S] [--status] [--read-only] Usage: calcurse-upgrade [-h|-v|--config ]ViewView View a note which was previously attached to an item (an item which owns a note has a '>' sign in front of it). This command only permits to view the note, not to edit it (to do so, use the 'EditNote' command, by pressing the '%s' key). Once you highlighted an item with a note attached to it, and the '%s' key was pressed, you will be driven to an external pager to view that note. The default pager is chosen the following way: o if the 'PAGER' environment variable is set, then this will be the default viewer to be called. o if the above environment variable is not set, then '/usr/bin/less' will be used. As for editing a note, quit the pager and you will be driven back to Calcurse.View the item you select in either the Todo or Appointment panel. This is usefull when an event description is longer than the available space to display it. If that is the case, the description will be shortened and its end replaced by '...'. To be able to read the entire description, just press '%s' and a popup window will appear, containing the whole event. Press any key to close the popup window and go back to the main Calcurse screen.View the note attached to the currently selected item.ViewNoteViewNote Warning: could not create temporary log file, Aborting...Warning: could not erase temporary log file %s, Aborting...Warning: could not open %s, Aborting...Warning: could not open temporary log file, Aborting...Warning: ical header malformed or wrong version number. Aborting...WedWelcome to Calcurse. Missing data files were created.When adding default key for "%s", "%s" was already assigned!Width +Width -With this configuration menu, one can choose where panels will be displayed inside calcurse screen. It is possible to choose between eight different configurations. In the configuration representations, letters correspond to: 'c' -> calendar panel 'a' -> appointment panel 't' -> todo panel You entered an invalid start time, should be [hh:mm] or [hhmm]You entered an invalid time, should be [hh:mm] or [hhmm][ao][dwmy][in][ip][tn][yn]aborting... appointment has no start time.appointment not foundawakened at %s beg Weekblock seems already freed at %scalcurse is not running calcurse is running (pid %d) calcurse is running in background (pid %d) color themecompleted tasks: configuration variable unknown: "%s"corrupt block end at %s, (end = %u, should be %d)corrupt block header at %scould not allocate memory to store block infocould not compute duration (no end time).could not convert stringcould not get entire item description.could not retrieve event end time.could not retrieve event start time.could not retrieve item summary.date error in appointmentdate error in eventdate error in the event dbg_free: null pointer at %sdd/mm/yyyydescription malformed.doneend Weekerror in mktimeerror loading next appointment error while launching commanderror while launching command: could not forkerror while sending notification event date is not defined.event not foundfailed to open appointment filefailed to open configuration filefailed to open key filefailed to open todo filefailure in mktimegeneral optionsincoherent repetition typeinvalid configuration directive: "%s"item could not be identified.item duration malformed.item has a negative duration.item priority is not acceptable (must be between 1 and 9).key bindings: %skeys configurationlaunching notification at %s for: "%s" layout configurationmm/dd/yyyynext appointment: nono event nor appointment foundno note attachedno such appointmentno such todono such typenotification optionsnull pointeroption not definedout of memoryout of rangeoverflow at %srecurrence exception dates malformed.recurrence frequence not found.recurrence frequence not recognized.recurrence rule malformed.sleeping at %s for %d second sleeping at %s for %d seconds started at %s starting interactive mode... syntax error in item datesyntax error in item identifiersyntax error in item repetitionsyntax error in item time or durationsyntax error in the item datetemporary file "%s" could not be createdterminated at %s with signal %d to do: todo not foundundefinedunknown characterunknown colorunknown export typeunknown ical typeunknown import typeunknown item typeunknown panelunknown repetition typeunknwon typeunrecognized option:wrong configuration variable format for "%s"wrong export modewrong format in the appointment or eventwrong item typexcalloc: out of memoryxcalloc: overflowxcalloc: zero sizexfree: null pointerxmalloc: out of memoryxmalloc: zero sizexrealloc: out of memoryxrealloc: overflowxrealloc: zero sizeyesyyyy-mm-ddyyyy/mm/dd| calcurse memory usage report | Project-Id-Version: calcurse Report-Msgid-Bugs-To: bugs@calcurse.org POT-Creation-Date: 2013-02-09 14:04+0100 PO-Revision-Date: 2012-11-27 08:22+0000 Last-Translator: Aleksey Mekhonoshin Language-Team: Russian (http://www.transifex.com/projects/p/calcurse/language/ru/) Language: ru MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2); Copyright (c) 2004-2011 calcurse Development Team All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: »- Redistributions of source code must retain the above » copyright notice, this list of conditions and the » following disclaimer. »- Redistributions in binary form must reproduce the above » copyright notice, this list of conditions and the » following disclaimer in the documentation and/or other » materials provided with the distribution. Присылайте отзывы на : misc@calcurse.org Домашняя страница Calcurse : http://calcurse.org Copyright (c) 2004-2013 calcurse Development Team. This is free software; see the source for copying conditions. Для получения справки, нажмите '?' в Calcurse или смотрите man-страницу. Если предыдущая конвертация не завершилась, удалите файл и попробуйте снова, используя архивный файл с предыдущей конфигурацией. Если предыдущая конвертация не завершилась, восстановите вашу конфигурацию из этого архивного файла, затем его удалив. Разное: -h, --help показать справку. -v, --version показать версию calcurse. --status показать статус calcurse. --read-only Не сохр. настройки, задачи и дела (будьте внимательны). Файлы: -c , --calendar использование файла календаря (приоритетен перед ключом '-D'). -D , --directory использование конкретной директории. Директория по-умолчанию ~/.calcurse Не интерактивные: -a, --appointment показать события и задачи на текущий день. -d , --day показать события и задачи на дату или на кол-во грядущих дней. Для одновременного использования '--startday' и '--range'. -g, --gc запустить сборщик мусора для файлов заметок. -i , --import импортировать данные icalendar в файл . -n, --next показать след. задачу и время до неё в пределах 24 часов. -r[num], --range[=num] показать события и задачи на [num] дней. По-умолчанию значение [num] равно одному дню. -s[date], --startday[=date] показать события и задачи на указанную дату [date]. По-умолчанию значение [date] равно текущему дню. -S, --search= поиск регулярных выражений внутри описания событий, задач и дел. -t[num], --todo[=num] Показать список дел. Если задано [num], будут показаны дела, имеющие приоритет равный значению [num]. Значение приоритета находится между 1 (высокий) и 9 (низкий). Установка значения равного '0', покажет только завершённые дела. -x[format], --export[=format] экспорт данных пользователя. События, задачи и дела будут конвертированы, а пользователь уведомлён об этом. Сущ. два формата для экспорта: 'ical' and 'pcal'. Форматом по-умолчанию является ical. Примечание: перенаправление потока экспорта данных в файл, возможно след. образом: calcurse --export > calcurse.dat Для доп. информации нажмите '?' из-под Calcurse, или читайте man-ы. Найденные ошибки, а так же пожелания шлите на : . Обнаружены ошибки при чтении файла настроек! Сделайте копию keys-файла, удалите его из каталога и запустите calcurse снова. ВНИМАНИЕ: calcurse уже запущен. Если это не так, удалите заблокированный файл: "%s" и перезапустите calcurse. id: %u size: %u Добро пожаловать в Calcurse. Это главный экран справки. unfreed blocks: %u allocated in: %s number of calls: %u allocated blocks: %u "%s" определено множество времён!# #Конфигурационный файл горячих клавиш calcurse # #Файл задаёт привязку действий к клавишам Calcurse. #Линии, начинающиеся с "#", есть комментарии и игнорируются Calcurse. #Для привязки горячей клавиши к действию, в файл необходимо написать строку, #используя следующий синтаксис: # # ДЕЙСТВИЕ КЛАВ.1 КЛАВ.2 ... КЛАВ.N # #Где ДЕЙСТВИЕ - это ЧТО должно происходить при нажатии на клавиши КЛАВ.1, # ..., или КЛАВ.N # #Для использования связки Ctrl + "горячая клавиша", используйте префикс 'C-'. #Escape, пробел, клавиша табуляции - обозначаются 'ESC', 'SPC' и 'TAB' #соответственно. #Клавиши стрелок обозначаются как UP, DWN, LFT, RGT. #Последнее, клавиши Home и End имеют обозначение 'KEY_HOME' #и 'KEY_END'. # #Описание каждой используемой клавиши ДЕЙСТВИЕ доступно #из меню настроек calcurse %d app%d apps%d apps%d событие%d события%d события%d пропущен%d дело%d дела%d дела%s не существует, создать его [y/n]? %s создание завершено (Команда уведомляет пользователя о грядущем событии)Формат даты отображается в неинтерактивном режиме(Формат даты выводится внутри окна уведомления)(Формат времени выводится внутри окна уведомления)Формат для ввода даты: (Лог активен во время фонового режима)(Извещать обо всех задачах, вместо тех, которые помечены для извещения)'^P' или '^N' - вверх/вниз, 'Q' - выхода(Запустить в фоновом режиме, для возможности получать уведомления)(Предупреждать пользователя о событии за 'notify-bar_warning' секунд)(используется %s)(d)ежедневно(N/0) Автосохранение каждые N минут. (для отмены '0')(yes/no) Автосохранение при выходе из программы(yes/no) Подтверждение удаления событий(yes/no) Подтверждение выхода из программы(yes/no) Отображение уведомления о загрузке и сохранении данных(Если выбрано yes, будет выводится окно уведомления)(yes/no) Отображение полосы загрузки сохранения данных(m)ежемесячно(yes/no) запустить сборщик мусора при выходе(указание первого дня недели в календаре)(цвета терминала)(w)еженедельно(y)ежегодно+------------------------------+ День +Месяц +Неделя +Год +----------------------------------------- ---==== MEMORY BLOCK ====---------------- День -Месяц -Неделя -Год -/!\ INTERNAL ERROR /!\Добавить Доб.ЗадачуДоб.ЗаписьДоб.ДелоДобавить Дело. Может быть выбрана любая панель.Добавить Задачу. Может быть выбрана любая панель.Добавить запись в список Дел или список Задач. Зависит от выбранной при помощи клав. '%s' панели. Для добавления нового дела, необходимо сначала ввести его описание. Далее будет предложено назначить приоритет дела. Приоритет - это значение между 9 (низкий) и 1 (высокий). Изменение приоритета впоследствии возможно с помощью клав. '%s' и '%s' при активной панели Дел. При выборе с помощью клав. '%s' панели Задач, возможно создать новую задачу или новое "событие на весь день". Для ввода нового события, нажмите [ENTER] вместо указания времени начала, а далее (по необходимости) составьте описание события. Для ввода новой задачи, которая добавится в список Задач, необходимо указать время начала задачи, время окончания (можно задать конкретно время в формате [чч:мм] или продолжительность в формате [+чч:мм], [+xxdxxhxxm], [+мм]), а далее составить (по необходимости) описание задачи. День, в котором намечаются задачи и события - текущий выбранный в календаре день. Выберите нужный вам день перед нажатием клавиши '%s'. Примечание: o Если продолжительность задачи более суток, она будет выводиться в последующих днях. В промежуточных между начальным и конечным днями, время начала и окончания задачи будет выглядеть как '..'. o При нажатии [ENTER] во время просьбы ввести описание задачи или дела, они не будут созданы. o Не забывайте сохранять данные, чтобы работать с ними при следующих запусках программы.Добавить запись в выбранную панель.Добавить клавишуЗадача: ЗадачиАпрельАргумент для '-x': 'ical' либо 'pcal' Формат аргумента для -r и --range: 'n' Формат аргумента для -s и --startday: '%s' Аргумент неверен Аргумент ключа '-d' неверен Привязать (или задать, если не существует) заметку для выбранной записиПрикрепить заметку к любому типу записи или изменить уже имеющуюся. Используется в случае длинного описания - когда на описание не хватает места. Либо, например, для добавления какой либо информации к уже имеющимся делам. До нажатия на клавишу '%s', нужно выделить запись, к которой необходимо добавить заметку. Нажатие запустит внешний редактор в котором будет возможно создать заметку. Редактор выбирается следующим образом: o если переменная 'VISUAL' задана, то используется ипользуется редактор по-умолчанию. o если переменная 'VISUAL' не задана, то используется значение переменной 'EDITOR'. o если не заданы обе переменных, то используется '/usr/bin/vi'. Когда запись будет создана, можно выходить из выбранного редактора. Вы вернётесь в экран Calcurse, где можно будет увидеть, что запись, к которой была добавлена заметка, помечена знаком '>'.АвгустЗадний фонBlock not foundCalcurse %s - текстовый органайзер Calcurse - текстовый органайзерСправкаКалендарьНевозможно обработать более одного регулярного выражения.Отмена постоянного действия.Невозможно демонизировать процесс. Завершение Установить приоритет для выбранной записи в списке дел. Приоритеты представлены числами, стоящими перед описанием дела. Число 9 сообщает, что приоритет записи низкий, а число 1, что приоритет высокий. Запись с высоким приоритетом находится выше по списку, чем запись с более низким приоритетом. Если необходимо увеличить приоритет записи, нажимайте клавишу '%s'. Значение перед описанием дела будет уменьшаться, тем самым повышая приоритет. Позиция записи внутри списка дел, может быть выбрана путём изменения приоритетов. Наоборот, для понижения приоритета, нажимайте клавишу '%s'. Запись, в таком случае, будет опускаться ниже по списку дел.ПанельВыберите файл для экспорта данных:ЦветаНастройкиНастройка: Файл конфигурации не найден:Копир.Копир. и Встав. Копировать и вставить выделенную запись. Позволяет быстро скопировать запись из одной даты в другую. Чтобы сделать это выделите необходимую запись и нажмите '%s' для копирования. Когда новая дата в календаре будет выбрана, перейдите на панель задач и нажмите '%s' - запись будет вставлена. Она также появится в панеле задач и ей будет присвоена новая, выбранная для неё дата. Копировать выделенную запись (пункт?)Нет доступа "%s": %s Невозможно выбрать рабочую директориюг: %s Невозможно скомпилировать регулярное выражение.Невозможно прервать с управляющего терминала: %s Невозможно разделить: %s Невозможно распознать клавишуНевозможно удалить занятый файл: %s Невозможно удалить демон: %s Невозможно выбрать заблокированный файл Невозможно остановить демон calcurse: %s Невозможно остановить демон должным образом: %s Создать временную архивную копию файла конфигурации...Данные найдены и будут загруженыДекабрьУд.ЗаписьУдалить клавишуУдалить Удаление записи в списках дел и задач. В зависимости от текущей панели, нажатие клавиши 'Удалить', приведёт к удалению выделенной записи дела или задачи из соответствующего списка. Если удаляемая запись имеет повторения, вам будет предложено выбрать: удалить все записи либо только выделенную вами. Если в настройках 'confirm_delete' помечен как 'yes', потребуется подтвердить удаление выбранного события. Не забывайте сохранять данные для того, чтобы восстановить их при следующей загрузке Calcurse.Удалить выбранную запись.ОписаниеНазначение клавиш Показать справку, если таковая имеется.Просмотреть выбранную запись во всплывающем окне.Удалить?Удалить эту запись?Вы уверены, что хотите выйти?ВнизОШИБКА настройки первого дня неделиИзм. запись Изм.ЗаписьИзменить выбранную запись.Изменение выбранной записи. В зависимости от типа (задача, событие или дело) и повторяется ли запись или нет, вам будет предложено сделать те или иные изменения. Изменения относятся к таким параметрам как: начально время, конечное время, описание или повторение. При выборе изменяемого параметра, вам будет показано актуальное значение этого параметра. Измените его, если это необходимо. Примечание: o если изменению подлежит повторяющаяся запись, необходимо будет заново задать все параметры, относящиеся к повторению: (тип повторения, частоту, время окончания). Кроме того, прошлые данные об удалённых событиях будут утеряны. o не забывайте сохранять данные для того, чтобы восстановить их при следующей загрузке Calcurse.Редактировать:Изм.ЗаметкуИзм.Заметку Конечное времяВведите номер настройки для изменения её параметраОписание: Окончание ([чч:мм], [ччмм]) или задержка ([+чч:мм], [+хххДххЧххМ] или [+мм]): Окончание ([чч:мм], [ччмм]) или задержка ([+чч:мм], [+хххДххЧххМ] или [+мм]): Начало ([чч:мм] или [ччмм]). Оставьте пустым если событие займёт весь день: Приоритет дела [1 (высокий) - 9 (низкий)] :Войти в меню настроек.Задайте формат даты (см. 'man 3 strftime' для возможных форматов)Задайте формат даты: Переход на N-ый день [ENTER для текущего дня] : %sВведите задержку между автосохранениями (в минутах) или 0 для отмены Конечная дата: [%s] или '0' для окончания повторенияИмя файла для импорта: Описание дела: Дело: Новая дата окончания: [%s] или '0'Описание: Новая частота повторения:Введите тип повторения:Новое время ([чч:мм] или [ччмм]): Введите команду уведомления Введите количество секунд (0 - отмена оповещения до события)Количество повторений: Назначить тип повторения:Задайте формат времени (см. 'man 3 strftime' для возможных форматов) Ошибка чтения клавиши: "%s"Сигнал ошибки настройки #%d : %s Ошибка во время закрытия файла %sОшибка: calcurse (pid: %d) и его демон (pid: %d) запущены одновременно! Пожалуйста, проверьте это и перезапустите calcurse. Событие: ВыходВыйти из текущего меню или из calcurseЭкспортЭкспорт Экспорт данных (задачи, события и дела). В меню экспорта вам будет предложен выбор из двух форматов экспортных файлов: 'ical' и 'pcal'. Выберите формат для icalendar или для pcal. Сперва укажите файл, в который будет производиться экспорт. По-умолчанию, это файлы: ~/calcurse.ics для ical, и: ~/cacurse.txt для pcal. Calcurse экспортирует такие данные как: события, задачи, дела. Экспортировать данные в файл.Формат экспорта (i)cal или (p)cal?Экспорт...ФАТАЛЬНАЯ ОШИБКА: невозможно создать %s: %s FATAL ERROR: could not create default keys file.FATAL ERROR: key value out of boundsFATAL ERROR: null file pointer.ФАТАЛЬНАЯ ОШИБКА: входящий файл не может быть добавлен. Завершение...ФАТАЛЬНАЯ ОШИБКА: неправильный режим импортаОшибка создания сообщения Ошибка закрытия "%s" - %s Ошибка открытия "%s", - %s Ошибка вывода сообщения "%s" ФевральОтметить запись ФлагПометить выбранную запись как важную.Передний фонПтОсновныеОсн. комбинации клавиш ПереходТекущая дата. Может быть выбрана любая панель.Перейти СправкаИмпортИмпорт Импортированть данные с внешнего файла.Импорт данных из файла icalendar. Вам будет предложено указать файл, из которого потребуется импортировать ical записи. По окончании процесса импорта и при условии, что настройка 'skip_system_dialogs' помечена как 'no', на экран будет выведен отчёт о количестве импортированных записях. Отчёт содержит итог о прочитанных строках, количестве задач, событий и дел которые были успешно импортированы. В тоже время, отчёт несёт информацию о количестве записей, которые были пропущены, с которыми возникли проблемы и др. Если одна или больше записей не были импортированы, есть возможность просмотреть отчёт и определить возникшую проблему. Информация в отчёте выводится построчно. В каждой строке находится запись и описание того, почему она не смогла быть импортирована. Отчёт импорта: прочитано %04d строкВнутренняя ошибка во время вывода полосы загрузкиВнутренняя ошибка: слишком длинная строкаНеверная задержкаНеверно указано конечное время/задержка, должно быть [+чч:мм], [+хххДххЧххМ] или [+мм]Неверное время: время начала должно идти до времени концаЯнварьИюльПереход к определённому дню в календаре. Используя переход, вам не нужно будет пользоваться клавишами перемещения внутри панели календаря. При нажатии [ENTER] без заданного дня, Calcurse проверит текущую дату и перейдёт на неё. Вне зависимости от текущей панели, нажатие клавиши '%s', выдедет текущую дату в календаре.ИюньИнфо клавишиКлавиша не опознанаКлавишиРасполож.ВлевоЗагрузка...Понизить приоритет дела внутри списка дел.Найденные ошибки высылайте на . Найденные ошибки или ваши идеи, присылайте на . МартМайПнПнНавигация внутри экрана Calcurse. Следуйте указаниям схемы: вверх предыдущая неделя %s влево ^ предыдущий день | %s <-- + --> %s | вправо v следующий день %s следующая неделя вниз Кроме того в панели календаря, клавиша '%s' перемещает к первому дню недели, а клавиша '%s' к последнему дню недели. ВнизСледующий день календаря. Может быть выбрана любая панель.Следующий месяц календаря. Может быть выбрана любая панель.Следующая неделя календаря. Может быть выбрана любая панель.Следующий год календаря. Может быть выбрана любая панель.Предыдущий день календаря. Может быть выбрана любая панель.Предыдущий месяц календаря. Может быть выбрана любая панель.Предыдущая неделя календаря. Может быть выбрана любая панель.Предыдущий год календаря. Может быть выбрана любая панель.ВлевоВправоВверхПеремещение: Нажмите '%s' или '%s' при необходимости листать текст. Выйти: Нажмите '%s' чтобы выйти из меню справки и вернуться в главный экран Calcurse. Справка: Внизу экрана находится панель с областью, в которой расположены символы и соответствующие им названия. Эта панель содержит действия, которые можно выполнять внутри органайзера Calcurse. По нажатию на клавишу символа, представленного в этой панели, будет показано короткое описание действия для данной клавиши. О программе: Нажмите '%s' для информации о программе.След. клавишаЦвет отсутствуетНет log-файла для отображения!Файл с заметкой не найден УведомлениеНоябрьСлед.ОктябрьПредыдущий файл архивной копии найден:Обнаружен предыдущий файл временного хранения данных:Открыть экран настроек. В этом экране доступны следущие категории: цвета, панель уведомления, основные настройки, настройки клавиш. Категория 'Цвета' позволяет выбрать цветовую схему. Категория 'Располож.' позволяет настроить месторасположение панелей на экране Calcurse. Категория 'Основные' позволяет изменить настройки, определяющие поведение Calcurse. Категория 'Уведомление' позволяет изменить настройки окна уведомления. Категория 'Клавиши' позволяет настроить горячие клавиши. Обязательно сохраните данные, чтобы заданные настройки восстановились при следующей загрузке Calcurse.Ключ '-S' должен использоваться с любым из след.: '-d'. '-r', '-s', '-a', '-t' ...... ВставитьВставить запись в текущую позициюПрограммный канал (pipe)Программный канал (pipe) Программный канал (pipe) во внешнюю команду:Открыть программный канал (pipe) выбранной записи с внешней программой.Программный канал (pipe) выбранной записи к внешней программе. Нажмите клав. '%s' чтобы связать выбранную задачу или дело с внешней программой. Вы снова окажитесь в calcurse по окончанию выполнения программы. Сообщите об ошибке:Возможный формат аргумента: '%s' или 'n' Возможные форматы [%s] или '0' для окончания повторения[%s] или '0'- возможные форматы для окончания повторения.Обнаружен конфгурационный файл версии ниже 3.0.0. Обновите, пожалуйста, запустив `calcurse-upgrade`.Обнаружен файл конфигурации ниже версии 3.0.0...Нажмите [ENTER]Нажмите [ENTER].Нажмите [Enter]Нажмите любую клавишу...Нажмите клавишу, чтобы привязать её к:Пред. клавишаПросмотреть основную информацию об авторах, лицензии и т.п.Приор. +Приор. -Приоритет Проблемы с доступом к файлу данных...Пред.ВыходПовысить приоритет дела внутри панели дел.ОбновитьОбновить экран calcurseУдалить временный архивный файл...ПовторПовторить: Повторение событий или задач. Внутри панели задач, необходимо выбрать запись, которая будет повторяться. Нажмите на клавишу '%s' чтобы задать настройки для повторения. Параметров повторения три: o Тип: выбор между ежедневным, еженедельным, ежемесячным или ежегодным повторениями. Выберите нажатием на 'D', 'W', 'M', или 'Y' o Частота: указание как часто запись будет повторяться. Например, чтобы запомнить годовщину, выберите тип 'ежегодно', а частоту установите равной '1'. Запись будет повторяться раз в год. Другой пример: если вы ужинаете в ресторане раз в два дня, выберите тип 'ежедневно', а частоту повторения равной '2'. o Окончание: необходимо для прекращения повторения события или задачи. Установите значение окончания повторения равным '0' и запись будет повторяться бесконечно. Примечание: o повторяемая запись помечается '*' внутри панели задач для того, чтобы отличаться от неповторяемых записей. o при удалении повторяемая записи, необходимо выбрать цель удаления: только эту повторяющуюся запись или все повторения целиком.Повторить записьПовторениеВправоСбСохр.Сохранить Сохр. данные calcurseСохранения данных. Данные каждого типа располагаются в след. файлах: / ~/.calcurse/conf -> пользовательские настройки | (располож., цвета, основ. настр.) | ~/.calcurse/apts -> данные, связанные с задачами | ~/.calcurse/todo -> данные, связанные со списком дел \ ~/.calcurse/keys -> настройки соответствия клавиш В меню настроек вы можете выбрать автосохранение данных Calcurse при выходе из программы.Сохранение...Прокрутить окно вниз (прим.: показ текста внутри всплыв. окна).Прокрутить окно вверх (прим.: показ текста внутри всплыв. окна).ВыбратьВыбрать след. панель на главном экране calcurseВыбрать день для перехода на него.Выбрать первый день текущей недели внутри панели календаря.Выбрать подсвеченную запись.Выбрать последний день текущей недели внутри панели календаря.СентябрьОтобразить в полосе статуса ещё одни возможные действия. ОбрамлениеНекоторые действия не привязаны к клавишам!Некоторые записи не были импортированы. Открыть log-файл?Некоторые значения клавиш не зависят от текущей панели. Они называются Основными клавишами. Далее список всех основных клавиш вместе с обозначением их действия: '%s' : Обновление -> обновляет экран Calcurse. Это полезно при изменении размера терминала или уборки "мусора" c экрана.. '%s' : Доб. задачу -> добавить нов. задачу или событие '%s' : Доб. дело -> добавить нов. дело '%s' : -1 День -> на день назад '%s' : +1 День -> на день вперёд '%s' : -1 Неделя -> на неделю назад '%s' : +1 Неделя -> на неделю вперёд '%s' : -1 Месяц -> на месяц назад '%s' : +1 Месяц -> на месяц вперёд '%s' : -1 Год -> на год назад '%s' : +1 Год -> на год вперёд '%s' : Переход -> на текущий день Клавиши ''%s' и '%s' используются для прокрутки текста вверх или вниз внутри определённого экрана, например экран справки. Так же они используются в панеле календаря для переключения между двумя его видами (вид недели и вид месяца).Цвета не поддерживаются вашим терминалом (Нажмите [ENTER])Заданная дата не соответствует времени начала записи.Начальное времяВсВсПереключение между панелями. Обрамление текущей панели выделяется другим цветом. Некоторые действия возможны только при нахождении на нужной панели. Например, если требуется добавить запись в список дел, необходимо, нажатием клавиши '%s', выбрать панель Дела. Тогда станет возможным добавления новой записи (клав.'%s'). Внизу экрана находится перечень возможных действия, который меняется при выборе той или иной панели (клав.'%s'). Так вы всегда будете знать, какие действия доступны для текущей панели.Переход к следующей странице команд. В связи с тем, что экран терминала не позволяет отобразить все команды, необходимо нажать клавишу '%s' чтобы увидеть другие команды и привязанные к ним клавиши. Когда текущая страница списка команд является последней, нажмите клавишу '%s' чтобы вернуться на первую страницу.Таб. Файл данных успешно сохранёнДанные успешно экспортированыВведённый день должен быть между 01/01/1902 и 12/31/2037Неверно введена дата.Файл не может быть добавлен, попробуйте другое имя файла.Неверно введена частота повторения.Файл ical скорее всего повреждён. Не найдено окончание записи.Возникли ошибки при загрузке keys-файла. Смотреть log-файл ?В этом меню настроек регулируется ширина сторон. Экран состоит из двух сторон, одна из которых содержит две панели: панель календаря и, взависимости от настроек расположения, панель задач либо панель дел. Ширина сторон может занимать 50% от общего экрана, но она не может быть меньше изначальной Эта запись содержит заметку. Удалить (i)запись или только (n)заметку ?К делу прикреплена записка. Удалить (t)дело или только (n)записку ?Эта запись уже повторяется.Эта запись имеет повторения. Удалить (a)все подобные записи или только (o)эту ?Эта клавиша уже используется для %s, попробуйте другую.Эта клавиша ещё не распознаётся calcurse, попробуйте другую.ЧтДело: ДелаСегодняУстановка флагов 'important' для задач и 'completed' для дел. Если дело выполнено, его приоритет становится равен 'X'. Выполненные дела не будут больше появляться как в экспортирумых данных, так и при использовании ключа '-t' в командной строке (если не указан '0' как приоритет. В этом случае выводятся только выполненные дела). Если задача помечена как важная, слева от неё ставится символ восклицательного знака. Вы будете уведомлены о наступлении времени начала задачи. Меню настроек предоставляет выбор команды запуска уведомления о наступающем времени начала задачи, а так же возможность задать промежуток между задачей и временем уведомления о ней.Обнаружены ошибки при чтении keys-файла, отмена...Выполните 'calcurse -h' для получения справки. ВтНеопределённая настройка!ВверхОбновление конфигурации...Команда: calcurse [-g|-h|-v] [-an] [-t[num]] [-i] [-x[format]] [-d |] [-s[date]] [-r[range]] [-c | -D] [-S] [--status] [--read-only] Использовать: calcurse-upgrade [-h|-v|--config ]СмотретьСмотреть Просмотреть заметку, заранее прикреплённую к записи (записи, имеющие заметки, помечаются знаком '>'). Эта команда даст возможность лишь просмотреть заметку, но не изменить её (для этого используйте команду 'Изм.Заметку' (клав. '%s')). При выборе записи с прикреплённой заметкой и нажатии на клавишу '%s', будет запущен просмотрщик заметок. Просмотрщик выбирается след. образом: o если переменная 'PAGER' задана, то используется просмотрщик по-умолчанию. o если переменная не задана, испольуется '/usr/bin/less'. Как и в случае с изменением заметки, выход из просмотрщика вернёт вас к экрану Calcurse.Позволит вам просмотреть выбранную запись в списке дел или на панели задач. Вы сможете посмотреть длинное описание события, которое не помещается в панели. Обычно описание, не помещающееся в панели, обрезается, заканчиваясь троеточием '...'. При необходимости просмотра описания события целиком, просто нажмите '%s'. Нажмите любую клавишу чтобы закрыть окно и вернуться в главный экран Calcurse.Просмотр вложенной записки.См.ЗаметкуСм.Заметку: Внимание: невозможно создать временный log-файл. Завершение...Внимание: невозможно очистить временный log-файл %s. Завершение...Внимание: невозможно открыть %s, Завершение...Внимание: невозможно открыть временный log-файл. Завершение...Внимание: заголовок ical повреждён или неправильный номер версии. Завершение...СрДобро пожаловать в Calcurse. Отсутствующие файлы данных будут созданы.При назначении клав. "%s", "%s" уже была назначена!Ширина +Ширина -В этом меню настроек можно выбрать место расположение панелей, отображаемых на экране Calcurse. Возможен выбор из нескольких вариантов. Каждой из панелей соответствует своя буква: 'c' -> панель календаря 'a' -> панель задач 't' -> панель списка дел Неверно указано начальное время, должно быть [чч:мм] или [ччмм]Неверно указано время, должно быть [чч:мм] или [ччмм][ао][днмг][в][ip][tn][yn]завершение... задача не имеет начального времени.задача не найденапробуждение %s Нач.неделиblock seems already freed at %scalcurse не запущен calcurse запущен (pid: %d) calcurse запущен в фоновом режиме (pid: %d) Цветовая схемаВыполненные задачи: неизвестная настройка переменной: "%s"corrupt block end at %s, (end = %u, should be %d)corrupt block header at %scould not allocate memory to store block infoневозможно вычислить продолжительность (нет времени окончания).невозможно конвертировать строкуневозможно получить описание полностью.невозможно восстановить время окончания события.невозможно восстановить время начала события.невозможно восстановить суммарные записи.ошибка даты в задачеошибка даты в событииошибка даты в событии dbg_free: null pointer at %sдд/мм/ггггописание повреждено.завершеноКон.неделиошибка в mktimeошибка при загрузке следующей задачи ошибка во время запуска командыошибка во время запуска команды: невозможно разделиться (fork)ошибка во время отправки уведомления дата события не определена.событие не найденоошибка открытия файла задачошибка отрытия файла конфигурацииошибка открытия файла ключаошибка открытия todo-файлаошибка в mktimeОсновные настройкибессвязный тип повторенияinvalid configuration directive: "%s"значение не может быть распознано.значение продолжительности повреждено.значение имеет отрицательную продолжительность.Значение приоритета должно быть между 1 и 9.привязки к клавише: '%s'Настройка клавишзапуск уведомления %s для: "%s" Настройки расположениямм/дд/ггггСледующая задача: noсобытия и задачи не найденызаписка отсутствуетзадача отсутствуетдело не найденоотсутствие типанастройки уведомленияпустой указательпараметр не установленнехватка памятипревышен диапазонoverflow at %sрекурентные соотношения дат повреждены.частота повторений не найдена.частота повторений не распознана.рекурентные правила повреждены.спящий режим %s на %d сек. спящий режим %s на %d сек. спящий режим %s на %d сек. запуск в %s запускается интерактивный режим... опечатка в записи датыопечатка в записи опознавателяопечатка в записи повторенияопечатка в записи даты или продолжительностиопечатка в записе датывременный файл "%s" не может быть созданзавершено %s с сигналом %d Список дел: дело не найденонеопределенонеизвестный символнеизвестный цветнеизвестный тип экспортанеизвестный тип icalнеизвестный тип импортанеизвестный тип записинеизвестная панельнеизвестный тип повторениянеизвестный типнеизвестная опция:неверный формат переменной конфигурации для "%s"ошибочный режим экспортаневерный формат события или задачинеправильный тип записиxcalloc: out of memoryxcalloc: overflowxcalloc: zero sizexfree: null pointerxmalloc: out of memoryxmalloc: zero sizexrealloc: out of memoryxrealloc: overflowxrealloc: zero sizeyesгггг-мм-ддгггг/мм/дд| calcurse memory usage report | calcurse-3.1.4/po/Makefile.in.in0000644000175000001440000003024112105444402013321 00000000000000# Makefile for PO directory in any package using GNU gettext. # Copyright (C) 1995-1997, 2000-2004 by Ulrich Drepper # # This file can be copied and used freely without restrictions. It can # be used in projects which are not available under the GNU General Public # License but which still want to provide support for the GNU gettext # functionality. # Please note that the actual code of GNU gettext is covered by the GNU # General Public License and is *not* in the public domain. # # Origin: gettext-0.14 PACKAGE = @PACKAGE@ VERSION = @VERSION@ SHELL = /bin/sh @SET_MAKE@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ prefix = @prefix@ exec_prefix = @exec_prefix@ datarootdir = @datarootdir@ datadir = @datadir@ localedir = $(datadir)/locale gettextsrcdir = $(datadir)/gettext/po INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ MKINSTALLDIRS = @MKINSTALLDIRS@ mkinstalldirs = $(SHELL) $(MKINSTALLDIRS) GMSGFMT = @GMSGFMT@ MSGFMT = @MSGFMT@ XGETTEXT = @XGETTEXT@ MSGMERGE = msgmerge MSGMERGE_UPDATE = @MSGMERGE@ --update MSGINIT = msginit MSGCONV = msgconv MSGFILTER = msgfilter POFILES = @POFILES@ GMOFILES = @GMOFILES@ UPDATEPOFILES = @UPDATEPOFILES@ DUMMYPOFILES = @DUMMYPOFILES@ DISTFILES.common = Makefile.in.in remove-potcdate.sin \ $(DISTFILES.common.extra1) $(DISTFILES.common.extra2) $(DISTFILES.common.extra3) DISTFILES = $(DISTFILES.common) Makevars POTFILES.in $(DOMAIN).pot stamp-po \ $(POFILES) $(GMOFILES) \ $(DISTFILES.extra1) $(DISTFILES.extra2) $(DISTFILES.extra3) POTFILES = \ CATALOGS = @CATALOGS@ # Makevars gets inserted here. (Don't remove this line!) .SUFFIXES: .SUFFIXES: .po .gmo .mo .sed .sin .nop .po-create .po-update .po.mo: @echo "$(MSGFMT) -c -o $@ $<"; \ $(MSGFMT) -c -o t-$@ $< && mv t-$@ $@ .po.gmo: @lang=`echo $* | sed -e 's,.*/,,'`; \ test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ echo "$${cdcmd}rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics -o $${lang}.gmo $${lang}.po"; \ cd $(srcdir) && rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics -o t-$${lang}.gmo $${lang}.po && mv t-$${lang}.gmo $${lang}.gmo .sin.sed: sed -e '/^#/d' $< > t-$@ mv t-$@ $@ all: all-@USE_NLS@ all-yes: stamp-po all-no: # stamp-po is a timestamp denoting the last time at which the CATALOGS have # been loosely updated. Its purpose is that when a developer or translator # checks out the package via CVS, and the $(DOMAIN).pot file is not in CVS, # "make" will update the $(DOMAIN).pot and the $(CATALOGS), but subsequent # invocations of "make" will do nothing. This timestamp would not be necessary # if updating the $(CATALOGS) would always touch them; however, the rule for # $(POFILES) has been designed to not touch files that don't need to be # changed. stamp-po: $(srcdir)/$(DOMAIN).pot test -z "$(GMOFILES)" || $(MAKE) $(GMOFILES) @echo "touch stamp-po" @echo timestamp > stamp-poT @mv stamp-poT stamp-po # Note: Target 'all' must not depend on target '$(DOMAIN).pot-update', # otherwise packages like GCC can not be built if only parts of the source # have been downloaded. # This target rebuilds $(DOMAIN).pot; it is an expensive operation. # Note that $(DOMAIN).pot is not touched if it doesn't need to be changed. $(DOMAIN).pot-update: $(POTFILES) $(srcdir)/POTFILES.in remove-potcdate.sed $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \ --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) \ --files-from=$(srcdir)/POTFILES.in \ --copyright-holder='$(COPYRIGHT_HOLDER)' \ --msgid-bugs-address='$(MSGID_BUGS_ADDRESS)' test ! -f $(DOMAIN).po || { \ if test -f $(srcdir)/$(DOMAIN).pot; then \ sed -f remove-potcdate.sed < $(srcdir)/$(DOMAIN).pot > $(DOMAIN).1po && \ sed -f remove-potcdate.sed < $(DOMAIN).po > $(DOMAIN).2po && \ if cmp $(DOMAIN).1po $(DOMAIN).2po >/dev/null 2>&1; then \ rm -f $(DOMAIN).1po $(DOMAIN).2po $(DOMAIN).po; \ else \ rm -f $(DOMAIN).1po $(DOMAIN).2po $(srcdir)/$(DOMAIN).pot && \ mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \ fi; \ else \ mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \ fi; \ } # This rule has no dependencies: we don't need to update $(DOMAIN).pot at # every "make" invocation, only create it when it is missing. # Only "make $(DOMAIN).pot-update" or "make dist" will force an update. $(srcdir)/$(DOMAIN).pot: $(MAKE) $(DOMAIN).pot-update # This target rebuilds a PO file if $(DOMAIN).pot has changed. # Note that a PO file is not touched if it doesn't need to be changed. $(POFILES): $(srcdir)/$(DOMAIN).pot @lang=`echo $@ | sed -e 's,.*/,,' -e 's/\.po$$//'`; \ if test -f "$(srcdir)/$${lang}.po"; then \ test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ echo "$${cdcmd}$(MSGMERGE_UPDATE) $${lang}.po $(DOMAIN).pot"; \ cd $(srcdir) && $(MSGMERGE_UPDATE) $${lang}.po $(DOMAIN).pot; \ else \ $(MAKE) $${lang}.po-create; \ fi install: install-exec install-data install-exec: install-data: install-data-@USE_NLS@ if test "$(PACKAGE)" = "gettext-tools"; then \ $(mkinstalldirs) $(DESTDIR)$(gettextsrcdir); \ for file in $(DISTFILES.common) Makevars.template; do \ $(INSTALL_DATA) $(srcdir)/$$file \ $(DESTDIR)$(gettextsrcdir)/$$file; \ done; \ for file in Makevars; do \ rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \ done; \ else \ : ; \ fi install-data-no: all install-data-yes: all $(mkinstalldirs) $(DESTDIR)$(datadir) @catalogs='$(CATALOGS)'; \ for cat in $$catalogs; do \ cat=`basename $$cat`; \ lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ dir=$(localedir)/$$lang/LC_MESSAGES; \ $(mkinstalldirs) $(DESTDIR)$$dir; \ if test -r $$cat; then realcat=$$cat; else realcat=$(srcdir)/$$cat; fi; \ $(INSTALL_DATA) $$realcat $(DESTDIR)$$dir/$(DOMAIN).mo; \ echo "installing $$realcat as $(DESTDIR)$$dir/$(DOMAIN).mo"; \ for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \ if test -n "$$lc"; then \ if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \ link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \ mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \ for file in *; do \ if test -f $$file; then \ ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \ fi; \ done); \ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ else \ if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \ :; \ else \ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \ mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ fi; \ fi; \ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ ln -s ../LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \ ln $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \ cp -p $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ echo "installing $$realcat link as $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo"; \ fi; \ done; \ done install-strip: install installdirs: installdirs-exec installdirs-data installdirs-exec: installdirs-data: installdirs-data-@USE_NLS@ if test "$(PACKAGE)" = "gettext-tools"; then \ $(mkinstalldirs) $(DESTDIR)$(gettextsrcdir); \ else \ : ; \ fi installdirs-data-no: installdirs-data-yes: $(mkinstalldirs) $(DESTDIR)$(datadir) @catalogs='$(CATALOGS)'; \ for cat in $$catalogs; do \ cat=`basename $$cat`; \ lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ dir=$(localedir)/$$lang/LC_MESSAGES; \ $(mkinstalldirs) $(DESTDIR)$$dir; \ for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \ if test -n "$$lc"; then \ if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \ link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \ mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \ for file in *; do \ if test -f $$file; then \ ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \ fi; \ done); \ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ else \ if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \ :; \ else \ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \ mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ fi; \ fi; \ fi; \ done; \ done # Define this as empty until I found a useful application. installcheck: uninstall: uninstall-exec uninstall-data uninstall-exec: uninstall-data: uninstall-data-@USE_NLS@ if test "$(PACKAGE)" = "gettext-tools"; then \ for file in $(DISTFILES.common) Makevars.template; do \ rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \ done; \ else \ : ; \ fi uninstall-data-no: uninstall-data-yes: catalogs='$(CATALOGS)'; \ for cat in $$catalogs; do \ cat=`basename $$cat`; \ lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ for lc in LC_MESSAGES $(EXTRA_LOCALE_CATEGORIES); do \ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ done; \ done check: all info dvi ps pdf html tags TAGS ctags CTAGS ID: mostlyclean: rm -f remove-potcdate.sed rm -f stamp-poT rm -f core core.* $(DOMAIN).po $(DOMAIN).1po $(DOMAIN).2po *.new.po rm -fr *.o clean: mostlyclean distclean: clean rm -f Makefile Makefile.in POTFILES *.mo maintainer-clean: distclean @echo "This command is intended for maintainers to use;" @echo "it deletes files that may require special tools to rebuild." rm -f stamp-po $(GMOFILES) distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) dist distdir: $(MAKE) update-po @$(MAKE) dist2 # This is a separate target because 'update-po' must be executed before. dist2: $(DISTFILES) dists="$(DISTFILES)"; \ if test "$(PACKAGE)" = "gettext-tools"; then \ dists="$$dists Makevars.template"; \ fi; \ if test -f $(srcdir)/ChangeLog; then \ dists="$$dists ChangeLog"; \ fi; \ for i in 0 1 2 3 4 5 6 7 8 9; do \ if test -f $(srcdir)/ChangeLog.$$i; then \ dists="$$dists ChangeLog.$$i"; \ fi; \ done; \ if test -f $(srcdir)/LINGUAS; then dists="$$dists LINGUAS"; fi; \ for file in $$dists; do \ if test -f $$file; then \ cp -p $$file $(distdir); \ else \ cp -p $(srcdir)/$$file $(distdir); \ fi; \ done update-po: Makefile $(MAKE) $(DOMAIN).pot-update test -z "$(UPDATEPOFILES)" || $(MAKE) $(UPDATEPOFILES) $(MAKE) update-gmo # General rule for creating PO files. .nop.po-create: @lang=`echo $@ | sed -e 's/\.po-create$$//'`; \ echo "File $$lang.po does not exist. If you are a translator, you can create it through 'msginit'." 1>&2; \ exit 1 # General rule for updating PO files. .nop.po-update: @lang=`echo $@ | sed -e 's/\.po-update$$//'`; \ if test "$(PACKAGE)" = "gettext-tools"; then PATH=`pwd`/../src:$$PATH; fi; \ tmpdir=`pwd`; \ echo "$$lang:"; \ test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ echo "$${cdcmd}$(MSGMERGE) $$lang.po $(DOMAIN).pot -o $$lang.new.po"; \ cd $(srcdir); \ if $(MSGMERGE) $$lang.po $(DOMAIN).pot -o $$tmpdir/$$lang.new.po; then \ if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \ rm -f $$tmpdir/$$lang.new.po; \ else \ if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \ :; \ else \ echo "msgmerge for $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \ exit 1; \ fi; \ fi; \ else \ echo "msgmerge for $$lang.po failed!" 1>&2; \ rm -f $$tmpdir/$$lang.new.po; \ fi $(DUMMYPOFILES): update-gmo: Makefile $(GMOFILES) @: Makefile: Makefile.in.in $(top_builddir)/config.status @POMAKEFILEDEPS@ cd $(top_builddir) \ && CONFIG_FILES=$(subdir)/$@.in CONFIG_HEADERS= \ $(SHELL) ./config.status force: # Tell versions [3.59,3.63) of GNU make not to export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: calcurse-3.1.4/po/nl.po0000644000175000001440000015246412105444503011636 00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Free Software Foundation, Inc. # This file is distributed under the same license as the PACKAGE package. # # Translators: # Lukas Fleischer , 2011. # , 2012. msgid "" msgstr "" "Project-Id-Version: calcurse\n" "Report-Msgid-Bugs-To: bugs@calcurse.org\n" "POT-Creation-Date: 2013-02-09 14:04+0100\n" "PO-Revision-Date: 2012-11-23 21:51+0000\n" "Last-Translator: Lukas Fleischer \n" "Language-Team: Dutch (http://www.transifex.com/projects/p/calcurse/language/" "nl/)\n" "Language: nl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" msgid "null pointer" msgstr "" msgid "date error in appointment" msgstr "gegevensfout in de afspraak" msgid "no such appointment" msgstr "" msgid "" "Usage: calcurse [-g|-h|-v] [-an] [-t[num]] [-i] [-x[format]]\n" " [-d |] [-s[date]] [-r[range]]\n" " [-c] [-D] [-S] [--status]\n" " [--read-only]\n" msgstr "" msgid "Try 'calcurse -h' for more information.\n" msgstr "Gebruik 'calcurse -h', voor meer informatie.\n" msgid "" "\n" "Copyright (c) 2004-2013 calcurse Development Team.\n" "This is free software; see the source for copying conditions.\n" msgstr "" #, c-format msgid "Calcurse %s - text-based organizer\n" msgstr "Calcurse %s - tekst-gebaseerde organizer\n" msgid "" "\n" "For more information, type '?' from within Calcurse, or read the manpage.\n" msgstr "" "\n" "Typ '?' in Calcurse voor meer informatie, of lees de man-pagina.\n" msgid "Mail feature requests and suggestions to .\n" msgstr "" msgid "Mail bug reports to .\n" msgstr "" msgid "" "\n" "Miscellaneous:\n" " -h, --help\n" "\tprint this help and exit.\n" "\n" " -v, --version\n" "\tprint calcurse version and exit.\n" "\n" " --status\n" "\tdisplay the status of running instances of calcurse.\n" "\n" " --read-only\n" "\tDon't save configuration nor appointments/todos. Use with care.\n" "\n" "Files:\n" " -c , --calendar \n" "\tspecify the calendar to use (has precedence over '-D').\n" "\n" " -D , --directory \n" "\tspecify the data directory to use.\n" "\tIf not specified, the default directory is ~/.calcurse\n" "\n" "Non-interactive:\n" " -a, --appointment\n" " \tprint events and appointments for current day and exit.\n" "\n" " -d , --day \n" "\tprint events and appointments for or upcoming days and\n" "\texit. To specify both a starting date and a range, use the\n" "\t'--startday' and the '--range' option.\n" "\n" " -g, --gc\n" "\trun the garbage collector for note files and exit. \n" "\n" " -i , --import \n" "\timport the icalendar data contained in . \n" "\n" " -n, --next\n" "\tprint next appointment within upcoming 24 hours and exit. Also given\n" "\tis the remaining time before this next appointment.\n" "\n" " -r[num], --range[=num]\n" "\tprint events and appointments for the [num] number of days\n" "\tand exit. If no [num] is given, a range of 1 day is considered.\n" "\n" " -s[date], --startday[=date]\n" "\tprint events and appointments from [date] and exit.\n" "\tIf no [date] is given, the current day is considered.\n" "\n" " -S, --search=\n" "\tsearch for the given regular expression within events, appointments,\n" "\tand todos description.\n" "\n" " -t[num], --todo[=num]\n" "\tprint todo list and exit. If the optional number [num] is given,\n" "\tthen only todos having a priority equal to [num] will be returned.\n" "\tThe priority number must be between 1 (highest) and 9 (lowest).\n" "\tIt is also possible to specify '0' for the priority, in which case\n" "\tonly completed tasks will be shown.\n" "\n" " -x[format], --export[=format]\n" "\texport user data to the specified format. Events, appointments and\n" "\ttodos are converted and echoed to stdout.\n" "\tTwo possible formats are available: 'ical' and 'pcal'.\n" "\tIf the optional argument format is not given, ical format is\n" "\tselected by default.\n" "\tnote: redirect standard output to export data to a file,\n" "\tby issuing a command such as: calcurse --export > calcurse.dat\n" msgstr "" #, c-format msgid "" "Error: both calcurse (pid: %d) and its daemon (pid: %d)\n" "seem to be running at the same time!\n" "Please check manually and restart calcurse.\n" msgstr "" #, c-format msgid "calcurse is running (pid %d)\n" msgstr "calcurse draait (pid%d)\n" #, c-format msgid "calcurse is running in background (pid %d)\n" msgstr "calcurse draait op de achtergrond (pid%d)\n" msgid "calcurse is not running\n" msgstr "calcurse is niet actief\n" msgid "to do:\n" msgstr "Taken:\n" msgid "completed tasks:\n" msgstr "afgewerkte taken:\n" msgid "next appointment:\n" msgstr "Volgende afspraak :\n" msgid "Argument to the '-d' flag is not valid\n" msgstr "Argument van '-d' is niet geldig.\n" #, c-format msgid "Possible argument format are: '%s' or 'n'\n" msgstr "" msgid "Argument is not valid\n" msgstr "Argument is niet geldig.\n" #, c-format msgid "Argument format for -s and --startday is: '%s'\n" msgstr "" msgid "Argument format for -r and --range is: 'n'\n" msgstr "Argument formaat voor -r en --range is: 'n'\n" msgid "Can not handle more than one regular expression." msgstr "Kan niet meer dan een reguliere expressie behandelen." msgid "Could not compile regular expression." msgstr "Kan de reguliere expressie niet compileren." msgid "Argument for '-x' should be either 'ical' or 'pcal'\n" msgstr "Argument voor '-x' moet of 'ical' of 'pcal' zijn\n" msgid "Option '-S' must be used with either '-d', '-r', '-s', '-a' or '-t'\n" msgstr "" "Optie '-S' moet met een van volgende worden gebruikt '-d', '-r', '-s', '-" "a','-' of '-t'\n" msgid "To do :" msgstr "Taken :" msgid "Export to (i)cal or (p)cal format?" msgstr "" msgid "[ip]" msgstr "" msgid "Do you really want to quit ?" msgstr "Wilt u werkelijk het programma verlaten?" msgid "ERROR setting first day of week" msgstr "FOUT in het instellen van de eerste dag van de week" msgid "" "The day you entered is not valid (should be between 01/01/1902 and " "12/31/2037)" msgstr "" "De ingevoerde datum is ongeldig (voer datum tussen 01/01/1902 en 12/31/2037) " "in" msgid "Press [ENTER] to continue" msgstr "Druk op [ENTER] om door te gaan)" #, c-format msgid "Enter the day to go to [ENTER for today] : %s" msgstr "" msgid "unknown color" msgstr "Onbekende kleur" msgid "failed to open configuration file" msgstr "" #, c-format msgid "invalid configuration directive: \"%s\"" msgstr "" msgid "" "Pre-3.0.0 configuration file format detected, please upgrade running " "`calcurse-upgrade`." msgstr "" #, c-format msgid "configuration variable unknown: \"%s\"" msgstr "" #, c-format msgid "wrong configuration variable format for \"%s\"" msgstr "" msgid "Exit" msgstr "Einde" msgid "General" msgstr "Algemeen" msgid "Layout" msgstr "Layout" msgid "Sidebar" msgstr "Zijbalk" msgid "Color" msgstr "Kleur" msgid "Notify" msgstr "Info" msgid "Keys" msgstr "Toetsen" msgid "Select" msgstr "Selecteer" msgid "Up" msgstr "Omhoog" msgid "Down" msgstr "Omlaag" msgid "Left" msgstr "Links" msgid "Right" msgstr "Rechts" msgid "Help" msgstr "Hulp" msgid "layout configuration" msgstr "layout configuratie" msgid "" "With this configuration menu, one can choose where panels will be\n" "displayed inside calcurse screen. \n" "It is possible to choose between eight different configurations.\n" "\n" "In the configuration representations, letters correspond to:\n" "\n" " 'c' -> calendar panel\n" "\n" " 'a' -> appointment panel\n" "\n" " 't' -> todo panel\n" "\n" msgstr "" msgid "Width +" msgstr "Breedte +" msgid "Width -" msgstr "Breedte -" #, no-c-format msgid "" "This configuration screen is used to change the width of the side bar.\n" "The side bar is the part of the screen which contains two panels:\n" "the calendar and, depending on the chosen layout, either the todo list\n" "or the appointment list.\n" "\n" "The side bar width can be up to 50% of the total screen width, but\n" "can't be smaller than " msgstr "" msgid "No color" msgstr "Geen kleur" msgid "Foreground" msgstr "Voorgrond" msgid "Background" msgstr "Achtergrond" msgid "(terminal's default)" msgstr "standaard van terminal" msgid "color theme" msgstr "Kleurthema" msgid "(if set to YES, automatic save is done when quitting)" msgstr "(Bij JA, wordt er automatisch opgeslagen bij einde programma)" msgid "(run the garbage collector when quitting)" msgstr "" msgid "(if not null, automatically save data every 'periodic_save' minutes)" msgstr "" msgid "(if set to YES, confirmation is required before quitting)" msgstr "(Bij JA, wordt er een bevestiging gevraagd bij eindigen programma" msgid "(if set to YES, confirmation is required before deleting an event)" msgstr "(Bij JA, is een bevestiging nodig voor het wissen van een gebeurtenis)" msgid "(if set to YES, messages about loaded and saved data will be displayed)" msgstr "" msgid "(if set to YES, progress bar will be displayed when saving data)" msgstr "" msgid "Monday" msgstr "" msgid "Sunday" msgstr "" msgid "(specifies the first day of week in the calendar view)" msgstr "" msgid "(Format of the date to be displayed in non-interactive mode)" msgstr "(Formaat van de datum in niet-interactieve modus)" msgid "(Format to be used when entering a date: " msgstr "Het te gebruiken formaat bij datuminvoer: " msgid "Enter an option number to change its value" msgstr "Voer een nummer in om de waarde te veranderen" msgid "(Press '^P' or '^N' to move up or down, 'Q' to quit)" msgstr "" "(Druk '^P' of '^N' om omhoog of omlaag te bewegen, 'Q' om af te sluiten)" msgid "Enter the date format (see 'man 3 strftime' for possible formats) " msgstr "Geef het formaat van de datum (zie 'man 3 strftime')" msgid "Enter the date format: " msgstr "" msgid "Enter the delay, in minutes, between automatic saves (0 to disable) " msgstr "" "Voer het tijdsinterval in minuten voor automatisch opslaan (0 om dit uit te " "schakelen)" msgid "general options" msgstr "Algemene opties" msgid "Undefined option!" msgstr "Niet gekende optie!" msgid "undefined" msgstr "Ongekend" msgid "Key info" msgstr "Toets informatie" msgid "Add key" msgstr "Voeg toets toe" msgid "Del key" msgstr "Verwijder toets" msgid "Prev Key" msgstr "Vorig toets" msgid "Next Key" msgstr "Volgend toets" msgid "keys configuration" msgstr "Toetsinstellingen" msgid "Press the key you want to assign to:" msgstr "Druk de toets die u wilt toewijzen:" msgid "This key is not yet recognized by calcurse, please choose another one." msgstr "Deze toets wordt nog niet door Calcurse herkend, kies een andere aub." #, c-format msgid "This key is already in use for %s, please choose another one." msgstr "Deze toets is al in gebruik voor %s, kies aub een andere." msgid "Some actions do not have any associated key bindings!" msgstr "" msgid "" "Sorry, colors are not supported by your terminal\n" "(Press [ENTER] to continue)" msgstr "" "Helaas wordt kleur niet door uw terminal ondersteund.\n" "(druk op [ENTER] om door te gaan)" msgid "unknown item type" msgstr "ongekend type item" msgid "Event :" msgstr "Gebeurtenis :" msgid "Appointment :" msgstr "Afspraak :" msgid "unknwon type" msgstr "ongekend type" #, c-format msgid "Could not stop daemon properly: %s\n" msgstr "Kon de deamon niet stoppen: %s\n" #, c-format msgid "terminated at %s with signal %d\n" msgstr "gestopt bij %s met signaal %d\n" #, c-format msgid "Could not remove daemon lock file: %s\n" msgstr "" #, c-format msgid "Could not fork: %s\n" msgstr "" #, c-format msgid "Could not detach from the controlling terminal: %s\n" msgstr "Kon niet van de control terminal loskoppelen: %s\n" #, c-format msgid "Could not change working directory: %s\n" msgstr "" msgid "Cannot daemonize, aborting\n" msgstr "" msgid "Could not set lock file\n" msgstr "" #, c-format msgid "Could not access \"%s\": %s\n" msgstr "Geen toegang tot \"%s\": %s\n" #, c-format msgid "started at %s\n" msgstr "" msgid "error loading next appointment\n" msgstr "fout bij laden van volgende afspraak\n" #, c-format msgid "launching notification at %s for: \"%s\"\n" msgstr "" msgid "error while sending notification\n" msgstr "fout bij verzenden notificatie\n" #, c-format msgid "sleeping at %s for %d second\n" msgid_plural "sleeping at %s for %d seconds\n" msgstr[0] "" msgstr[1] "" #, c-format msgid "awakened at %s\n" msgstr "" #, c-format msgid "Could not stop calcurse daemon: %s\n" msgstr "" msgid "date error in the event\n" msgstr "" msgid "Internal error: line too long" msgstr "Interne fout: lijn te lang" msgid "out of memory" msgstr "" #, c-format msgid "key bindings: %s" msgstr "" msgid "Calcurse help" msgstr "Calcurse help" msgid " Welcome to Calcurse. This is the main help screen.\n" msgstr " Welkom in Calcurse. Dit is het centrale hulpscherm.\n" #, c-format msgid "" "Moving around: Press '%s' or '%s' to scroll text upward or downward\n" " inside help screens, if necessary.\n" "\n" " Exit help: When finished, press '%s' to exit help and go back to\n" " the main Calcurse screen.\n" "\n" " Help topic: At the bottom of this screen you can see a panel with\n" " different fields, represented by a letter and a short\n" " title. This panel contains all the available actions\n" " you can perform when using Calcurse.\n" " By pressing one of the letters appearing in this\n" " panel, you will be shown a short description of the\n" " corresponding action. At the top right side of the\n" " description screen are indicated the user-defined key\n" " bindings that lead to the action.\n" "\n" " Credits: Press '%s' for credits." msgstr "" msgid "Save\n" msgstr "" #, c-format msgid "" "Save calcurse data.\n" "Data are splitted into four different files which contain :\n" "\n" " / ~/.calcurse/conf -> user configuration\n" " | (layout, color, general options)\n" " | ~/.calcurse/apts -> data related to the appointments\n" " | ~/.calcurse/todo -> data related to the todo list\n" " \\ ~/.calcurse/keys -> user-defined key bindings\n" "\n" "In the config menu, you can choose to save the Calcurse data\n" "automatically before quitting." msgstr "" msgid "Import\n" msgstr "" #, c-format msgid "" "Import data from an icalendar file.\n" "You will be asked to enter the file name from which to load ical\n" "items. At the end of the import process, and if the general option\n" "'system_dialogs' is set to 'yes', a report indicating how many items\n" "were imported is shown.\n" "This report contains the total number of lines read, the number of\n" "appointments, events and todo items which were successfully imported,\n" "together with the number of items for which problems occured and that\n" "were skipped, if any.\n" "\n" "If one or more items could not be imported, one has the possibility to\n" "read the import process report in order to identify which problems\n" "occured.\n" "In this report is shown one item per line, with the line in the input\n" "stream at which this item begins, together with the description of why\n" "the item could not be imported.\n" msgstr "" msgid "Export\n" msgstr "Exporteer\n" #, c-format msgid "" "Export calcurse data (appointments, events and todos).\n" "This leads to the export submenu, from which you can choose between\n" "two different export formats: 'ical' and 'pcal'. Choosing one of\n" "those formats lets you export calcurse data to icalendar or pcal\n" "format.\n" "\n" "You first need to specify the file to which the data will be exported.\n" "By default, this file is:\n" "\n" " ~/calcurse.ics\n" "\n" "for an ical export, and:\n" "\n" " ~/calcurse.txt\n" "\n" "for a pcal export.\n" "\n" "Calcurse data are exported in the following order:\n" " events, appointments, todos.\n" msgstr "" msgid "Displacement keys\n" msgstr "" #, c-format msgid "" "Move around inside calcurse screens.\n" "The following scheme summarizes how to get around:\n" "\n" " move up\n" " move to previous week\n" "\n" " %s\n" " move left ^ \n" " move to previous day |\n" " %s\n" " <-- + -->\n" " %s\n" " | move right\n" " v move to next day\n" " %s\n" "\n" " move to next week\n" " move down\n" "\n" "Moreover, while inside the calendar panel, the '%s' key moves\n" "to the first day of the week, and the '%s' key selects the last day of\n" "the week.\n" msgstr "" msgid "View\n" msgstr "" #, c-format msgid "" "View the item you select in either the Todo or Appointment panel.\n" "\n" "This is usefull when an event description is longer than the available\n" "space to display it. If that is the case, the description will be\n" "shortened and its end replaced by '...'. To be able to read the entire\n" "description, just press '%s' and a popup window will appear, containing\n" "the whole event.\n" "\n" "Press any key to close the popup window and go back to the main\n" "Calcurse screen." msgstr "" msgid "Pipe\n" msgstr "" #, c-format msgid "" "Pipe the selected item to an external program.\n" "\n" "Press the '%s' key to pipe the currently selected appointment or\n" "todo entry to an external program.\n" "\n" "You will be driven back to calcurse as soon as the program exits.\n" msgstr "" msgid "Tab\n" msgstr "" #, c-format msgid "" "Switch between panels.\n" "The panel currently in use has its border colorized.\n" "\n" "Some actions are possible only if the right panel is selected.\n" "For example, if you want to add a task in the TODO list, you need first\n" "to press the '%s' key to get the TODO panel selected. Then you can\n" "press '%s' to add your item.\n" "\n" "Notice that at the bottom of the screen the list of possible actions\n" "change while pressing '%s', so you always know what action can be\n" "performed on the selected panel." msgstr "" msgid "Goto\n" msgstr "" #, c-format msgid "" "Jump to a specific day in the calendar.\n" "\n" "Using this command, you do not need to travel to that day using\n" "the displacement keys inside the calendar panel.\n" "If you hit [ENTER] without specifying any date, Calcurse checks the\n" "system current date and you will be taken to that date.\n" "\n" "Notice that pressing '%s', whatever panel is\n" "selected, will select current day in the calendar." msgstr "" msgid "Delete\n" msgstr "" #, c-format msgid "" "Delete an element in the ToDo or Appointment list.\n" "\n" "Depending on which panel is selected when you press the delete key,\n" "the hilighted item of either the ToDo or Appointment list will be \n" "removed from this list.\n" "\n" "If the item to be deleted is recurrent, you will be asked if you\n" "wish to suppress all of the item occurences or just the one you\n" "selected.\n" "\n" "If the general option 'confirm_delete' is set to 'YES', then you will\n" "be asked for confirmation before deleting the selected event.\n" "Do not forget to save the calendar data to retrieve the modifications\n" "next time you launch Calcurse." msgstr "" msgid "Add\n" msgstr "" #, c-format msgid "" "Add an item in either the ToDo or Appointment list, depending on which\n" "panel is selected when you press '%s'.\n" "\n" "To enter a new item in the TODO list, you will need first to enter the\n" "description of this new item. Then you will be asked to specify the todo\n" "priority. This priority is represented by a number going from 9 for the\n" "lowest priority, to 1 for the highest one. It is still possible to\n" "change the item priority afterwards, by using the '%s' and '%s' keys\n" "inside the todo panel.\n" "\n" "If the APPOINTMENT panel is selected while pressing '%s', you will be\n" "able to enter either a new appointment or a new all-day long event.\n" "To enter a new event, press [ENTER] instead of the item start time, and\n" "just fill in the event description.\n" "To enter a new appointment to be added in the APPOINTMENT list, you\n" "will need to enter successively the time at which the appointment\n" "begins, the appointment length (either by specifying the end time in\n" "[hh:mm] or the duration in [+hh:mm], [+xxdxxhxxm] or [+mm] format), \n" "and the description of the event.\n" "\n" "The day at which occurs the event or appointment is the day currently\n" "selected in the calendar, so you need to move to the desired day before\n" "pressing '%s'.\n" "\n" "Notes:\n" " o if an appointment lasts for such a long time that it continues\n" " on the next days, this event will be indicated on all the\n" " corresponding days, and the beginning or ending hour will be\n" " replaced by '..' if the event does not begin or end on the day.\n" " o if you only press [ENTER] at the APPOINTMENT or TODO event\n" " description prompt, without any description, no item will be\n" " added.\n" " o do not forget to save the calendar data to retrieve the new\n" " event next time you launch Calcurse." msgstr "" msgid "Copy and Paste\n" msgstr "" #, c-format msgid "" "Copy and paste the currently selected item. This is useful to quickly\n" "copy an item from one date to another. To do so, one must first\n" "highlight the item that needs to be copied, then press '%s' to copy.\n" "Once the new date is chosen in the calendar, the appointment panel must\n" "be selected and the '%s' key must be pressed to paste the item. The item\n" "will appear in the appointment panel, assigned to the newly selected\n" "date.\n" "\n" msgstr "" msgid "Edit Item\n" msgstr "Wijzig item\n" #, c-format msgid "" "Edit the item which is currently selected.\n" "Depending on the item type (appointment, event, or todo), and if it is\n" "repeated or not, you will be asked to choose one of the item properties\n" "to modify. An item property is one of the following: the start time, the\n" "end time, the description, or the item repetition.\n" "Once you have chosen the property you want to modify, you will be shown\n" "its actual value, and you will be able to change it as you like.\n" "\n" "Notes:\n" " o if you choose to edit the item repetition properties, you will\n" " be asked to re-enter all of the repetition characteristics\n" " (repetition type, frequence, and ending date). Moreover, the\n" " previous data concerning the deleted occurences will be lost.\n" " o do not forget to save the calendar data to retrieve the\n" " modified properties next time you launch Calcurse." msgstr "" msgid "EditNote\n" msgstr "" #, c-format msgid "" "Attach a note to any type of item, or edit an already existing note.\n" "This feature is useful if you do not have enough space to store all\n" "of your item description, or if you would like to add sub-tasks to an\n" "already existing todo item for example.\n" "Before pressing the '%s' key, you first need to highlight the item you\n" "want the note to be attached to. Then you will be driven to an\n" "external editor to edit your note. This editor is chosen the following\n" "way:\n" " o if the 'VISUAL' environment variable is set, then this will be\n" " the default editor to be called.\n" " o if 'VISUAL' is not set, then the 'EDITOR' environment variable\n" " will be used as the default editor.\n" " o if none of the above environment variables is set, then\n" " '/usr/bin/vi' will be used.\n" "\n" "Once the item note is edited and saved, quit your favorite editor.\n" "You will then go back to Calcurse, and the '>' sign will appear in front\n" "of the highlighted item, meaning there is a note attached to it." msgstr "" msgid "ViewNote\n" msgstr "" #, c-format msgid "" "View a note which was previously attached to an item (an item which\n" "owns a note has a '>' sign in front of it).\n" "This command only permits to view the note, not to edit it (to do so,\n" "use the 'EditNote' command, by pressing the '%s' key).\n" "Once you highlighted an item with a note attached to it, and the '%s' key\n" "was pressed, you will be driven to an external pager to view that note.\n" "The default pager is chosen the following way:\n" " o if the 'PAGER' environment variable is set, then this will be\n" " the default viewer to be called.\n" " o if the above environment variable is not set, then\n" " '/usr/bin/less' will be used.\n" "As for editing a note, quit the pager and you will be driven back to\n" "Calcurse." msgstr "" msgid "Priority\n" msgstr "" #, c-format msgid "" "Change the priority of the currently selected item in the ToDo list.\n" "Priorities are represented by the number appearing in front of the\n" "todo description. This number goes from 9 for the lowest priority to\n" "1 for the highest priority.\n" "Todo having higher priorities are placed first (at the top) inside the\n" "todo panel.\n" "\n" "If you want to raise the priority of a todo item, you need to press '%s'.\n" "In doing so, the number in front of this item will decrease, meaning its\n" "priority increases. The item position inside the todo panel may change,\n" "depending on the priority of the items above it.\n" "\n" "At the opposite, to lower a todo priority, press '%s'. The todo position\n" "may also change depending on the priority of the items below." msgstr "" msgid "Repeat\n" msgstr "" #, c-format msgid "" "Repeat an event or an appointment.\n" "You must first select the item to be repeated by moving inside the\n" "appointment panel. Then pressing '%s' will lead you to a set of three\n" "questions, with which you will be able to specify the repetition\n" "characteristics:\n" "\n" " o type: you can choose between a daily, weekly, monthly or\n" " yearly repetition by pressing 'D', 'W', 'M' or 'Y'\n" " respectively.\n" "\n" " o frequence: this indicates how often the item shall be repeated.\n" " For example, if you want to remember an anniversary,\n" " choose a 'yearly' repetition with a frequence of '1',\n" " which means it must be repeated every year. Another\n" " example: if you go to the restaurant every two days,\n" " choose a 'daily' repetition with a frequence of '2'.\n" "\n" " o ending date: this specifies when to stop repeating the selected\n" " event or appointment. To indicate an endless \n" " repetition, enter '0' and the item will be repeated\n" " forever.\n" "\n" "Notes:\n" " o repeated items are marked with an '*' inside the appointment\n" " panel, to be easily recognizable from non-repeated ones.\n" " o the 'Repeat' and 'Delete' command can be mixed to create\n" " complicated configurations, as it is possible to delete only\n" " one occurence of a repeated item." msgstr "" msgid "Flag Item\n" msgstr "" #, c-format msgid "" "Toggle an appointment's 'important' flag or a todo's 'completed' flag.\n" "If a todo is flagged as completed, its priority number will be replaced\n" "by an 'X' sign. Completed tasks will no longer appear in exported data\n" "or when using the '-t' command line flag (unless specifying '0' as the\n" "priority number, in which case only completed tasks will be shown).\n" "\n" "If an appointment is flagged as important, an exclamation mark appears\n" "in front of it, and you will be warned if time gets closed to the\n" "appointment start time.\n" "To customize the way one gets notified, the configuration submenu lets\n" "you choose the command launched to warn user of an upcoming appointment,\n" "and how long before it he gets notified." msgstr "" msgid "Config\n" msgstr "" #, c-format msgid "" "Open the configuration submenu.\n" "From this submenu, you can select between color, layout, notification\n" "and general options, and you can also configure your keybindings.\n" "\n" "The color submenu lets you choose the color theme.\n" "The layout submenu lets you choose the Calcurse screen layout, in other\n" "words where to place the three different panels on the screen.\n" "The general options submenu brings a screen with the different options\n" "which modifies the way Calcurse interacts with the user.\n" "The notify submenu allows you to change the notify-bar settings.\n" "The keys submenu lets you define your own key bindings.\n" "\n" "Do not forget to save the calendar data to retrieve your configuration\n" "next time you launch Calcurse." msgstr "" msgid "Generic keybindings\n" msgstr "Algemene sneltoets\n" #, c-format msgid "" "Some of the keybindings apply whatever panel is selected. They are\n" "called generic keybinding.\n" "Here is the list of all the generic key bindings, together with their\n" "corresponding action:\n" "\n" " '%s' : Redraw function -> redraws calcurse panels, this is useful if\n" " you resize your terminal screen or when\n" " garbage appears inside the display\n" " '%s' : Add Appointment -> add an appointment or an event\n" " '%s' : Add ToDo -> add a todo\n" " '%s' : -1 Day -> move to previous day\n" " '%s' : +1 Day -> move to next day\n" " '%s' : -1 Week -> move to previous week\n" " '%s' : +1 Week -> move to next week\n" " '%s' : -1 Month -> move to previous month\n" " '%s' : +1 Month -> move to next month\n" " '%s' : -1 Year -> move to previous year\n" " '%s' : +1 Year -> move to next year\n" " '%s' : Goto today -> move to current day\n" "\n" "The '%s' and '%s' keys are used to scroll text upward or downward\n" "when inside specific screens such the help screens for example.\n" "They are also used when the calendar screen is selected to switch\n" "between the available views (monthly and weekly calendar views)." msgstr "" msgid "OtherCmd\n" msgstr "" #, c-format msgid "" "Switch between status bar help pages.\n" "Because the terminal screen is too narrow to display all of the\n" "available commands, you need to press '%s' to see the next set of\n" "commands together with their keybindings.\n" "Once the last status bar page is reached, pressing '%s' another time\n" "leads you back to the first page." msgstr "" msgid "Calcurse - text-based organizer" msgstr "Calcurse - tekst-gebaseerde organizer" #, c-format msgid "" "\n" "Copyright (c) 2004-2013 calcurse Development Team\n" "All rights reserved.\n" "\n" "Redistribution and use in source and binary forms, with or without\n" "modification, are permitted provided that the following conditions\n" "are met:\n" "\n" "\t- Redistributions of source code must retain the above\n" "\t copyright notice, this list of conditions and the\n" "\t following disclaimer.\n" "\n" "\t- Redistributions in binary form must reproduce the above\n" "\t copyright notice, this list of conditions and the\n" "\t following disclaimer in the documentation and/or other\n" "\t materials provided with the distribution.\n" "\n" "\n" "Send your feedback or comments to : misc@calcurse.org\n" "Calcurse home page : http://calcurse.org" msgstr "" msgid "unknown ical type" msgstr "onbekend ical type" msgid "recurrence frequence not found." msgstr "herhalingsfrequentie niet gevonden." msgid "recurrence frequence not recognized." msgstr "herhalingsfrequentie niet herkend" msgid "recurrence rule malformed." msgstr "herhalingsregel onjuist" msgid "recurrence exception dates malformed." msgstr "herhaling exceptie datum onjuist" msgid "could not get entire item description." msgstr "onvolledige item omschrijving" msgid "description malformed." msgstr "omschrijving beschadigd" msgid "appointment has no start time." msgstr "afspraak heeft geen begintijd." msgid "could not compute duration (no end time)." msgstr "kan tijdsduur niet berekenen (geen eindtijd)." msgid "item has a negative duration." msgstr "item heeft een negatieve tijdsduur" msgid "event date is not defined." msgstr "datum van de gebeurtenis is niet gespecifieerd" msgid "item could not be identified." msgstr "item onbekend" msgid "could not retrieve item summary." msgstr "kan item onderwerp niet ophalen" msgid "could not retrieve event start time." msgstr "kan begintijd van gebeurtenis niet ophalen" msgid "could not retrieve event end time." msgstr "kan eindtijd van gebeurtenis niet ophalen" msgid "item duration malformed." msgstr "item tijdsduur onjuist" msgid "The ical file seems to be malformed. The end of item was not found." msgstr "Ical-bestand oogt onjuist. Het einde van item niet gevonden." msgid "item priority is not acceptable (must be between 1 and 9)." msgstr "Prioriteit van item is onjuist (kies nr tussen 1 en 9)" msgid "Warning: ical header malformed or wrong version number. Aborting..." msgstr "Pas op: ical header onjuist of verkeerde versie. Stoppen..." msgid "Enter the new time ([hh:mm] or [hhmm]) : " msgstr "" msgid "Press [Enter] to continue" msgstr "Druk op [Enter] om door te gaan)" msgid "You entered an invalid time, should be [hh:mm] or [hhmm]" msgstr "" msgid "" "Enter new end time ([hh:mm], [hhmm]) or duration ([+hh:mm], [+xxxdxxhxxm] or " "[+mm]) : " msgstr "" msgid "Invalid time: start time must be before end time!" msgstr "Ongeldige tijd: aanvangstijd moet voor eindtijd zijn!" msgid "Enter the new item description:" msgstr "Voer een nieuwe beschrijving in:" msgid "Enter the new repetition type:" msgstr "" msgid "(d)aily" msgstr "(d)agelijks" msgid "(w)eekly" msgstr "(w)ekelijks" msgid "(m)onthly" msgstr "(m)aandelijks" msgid "(y)early" msgstr "(y)aarlijks" #, c-format msgid "(currently using %s)" msgstr "" msgid "[dwmy]" msgstr "[dwmy]" msgid "The frequence you entered is not valid." msgstr "Het ingevoerde interval is ongeldig." msgid "The entered date is not valid." msgstr "De ingevoerde datum is ongeldig." #, c-format msgid "Possible formats are [%s] or '0' for an endless repetition." msgstr "" msgid "Enter the new repetition frequence:" msgstr "Voer herhalingsinterval in:" #, c-format msgid "Enter the new ending date: [%s] or '0'" msgstr "" msgid "Description" msgstr "" msgid "Repetition" msgstr "" msgid "Edit: " msgstr "Wijzig:" msgid "Start time" msgstr "" msgid "End time" msgstr "" msgid "Pipe item to external command:" msgstr "" msgid "" "Enter start time ([hh:mm] or [hhmm]), leave blank for an all-day event : " msgstr "" msgid "" "Enter end time ([hh:mm] or [hhmm]) or duration ([+hh:mm], [+xxxdxxhxxm] or " "[+mm]) : " msgstr "" msgid "Enter description :" msgstr "Voer beschrijving in :" msgid "You entered an invalid start time, should be [hh:mm] or [hhmm]" msgstr "" msgid "" "Invalid end time/duration, should be [hh:mm], [hhmm], [+hh:mm], " "[+xxxdxxhxxm] or [+mm]" msgstr "" msgid "Do you really want to delete this item ?" msgstr "Wilt u werkelijk dit item wissen ?" msgid "This item is recurrent. Delete (a)ll occurences or just this (o)ne ?" msgstr "" "Dit is een herhalende afspraak. (a)lle afspraken of alleen (o) deze wissen ?" msgid "[ao]" msgstr "" msgid "This item has a note attached to it. Delete (i)tem or just its (n)ote ?" msgstr "" "Dit item heeft een bijgesloten noot. (i)tem wissen of alleen de (n)oot?" msgid "[in]" msgstr "" msgid "no such type" msgstr "" msgid "Enter the new ToDo item : " msgstr "Voer de nieuwe taak in : " msgid "Enter the ToDo priority [1 (highest) - 9 (lowest)] :" msgstr "Geef taakprioriteit [1 (hoogste) - 9 (laagste)] :" msgid "Do you really want to delete this task ?" msgstr "Wilt u werkelijk deze taak wissen ?" msgid "This item has a note attached to it. Delete (t)odo or just its (n)ote ?" msgstr "Dit item heeft een noot bijgesloten. Wis (t)aak of alleen de (n)oot?" msgid "[tn]" msgstr "" msgid "Enter the new ToDo description :" msgstr "Voer de nieuwe taakbeschrijving in : " msgid "Enter the repetition type:" msgstr "" msgid "Enter the repetition frequence:" msgstr "Geef de herhalingsinterval:" #, c-format msgid "Enter the ending date: [%s] or '0' for an endless repetition" msgstr "Geef einddatum: [%s] of '0' voor oneindige herhaling" #, c-format msgid "Possible formats are [%s] or '0' for an endless repetition" msgstr "Mogelijk formaat is: [%s] of '0' voor oneindig." msgid "This item is already a repeated one." msgstr "Dit item wordt al herhaald." msgid "Press [ENTER] to continue." msgstr "[ENTER]-toets om door te gaan." msgid "Sorry, the date you entered is older than the item start time." msgstr "Sorry, de ingevoerde datum is ouder dan de aanvangstijd." msgid "wrong item type" msgstr "" msgid "Saving..." msgstr "Opslaan..." msgid "Loading..." msgstr "Laden..." msgid "Exporting..." msgstr "Exporteren..." msgid "Internal error while displaying progress bar" msgstr "Interne fout bij het tonen van de voortgangsbalk" msgid "Choose the file used to export calcurse data:" msgstr "Kies het bestand om calcurse data naar te exporteren:" msgid "The file cannot be accessed, please enter another file name." msgstr "Het bestand is ontoegankelijk, kies een andere bestandsnaam." #, c-format msgid "Failed to open \"%s\", - %s\n" msgstr "Fout bij openen \"%s\", - %s\n" msgid "Failed to build message\n" msgstr "" #, c-format msgid "Failed to print message \"%s\"\n" msgstr "" #, c-format msgid "Failed to close \"%s\" - %s\n" msgstr "Fout bij sluiten \"%s\" - %s\n" #, c-format msgid "%s does not exist, create it now [y or n] ? " msgstr "%s bestaat niet, nu aanmaken [j of n] ? " msgid "aborting...\n" msgstr "afbreken...\n" #, c-format msgid "%s successfully created\n" msgstr "%s met succes aangemaakt\n" msgid "starting interactive mode...\n" msgstr "interactieve modus gestart...\n" msgid "Problems accessing data file ..." msgstr "Probleem bij benaderen databestand ..." msgid "The data files were successfully saved" msgstr "De databestanden zijn met succes opgeslagen" msgid "failed to open appointment file" msgstr "Afsprakenbestand niet kunnen openen" msgid "syntax error in the item date" msgstr "" msgid "no event nor appointment found" msgstr "Geen gebeurtenis of afspraak gevonden" msgid "syntax error in item time or duration" msgstr "syntaxfout in itemtijd of duurtijd van het item" msgid "syntax error in item identifier" msgstr "" msgid "wrong format in the appointment or event" msgstr "fout formaat in de afspraak of gebeurtenis" msgid "syntax error in item repetition" msgstr "syntaxfout in de herhaling van het item" msgid "failed to open todo file" msgstr "kon het todo-bestand niet openen" msgid "failed to open key file" msgstr "" msgid "" "\n" "Too many errors while reading configuration file!\n" "Please backup your keys file, remove it from directory, and launch calcurse " "again.\n" msgstr "" "\n" "Teveel fouten tijdens het lezen van het configuratiebestand!\n" "Maak een backup van het sneltoetsenbestand, verwijder het van de map en " "start calcurse opnieuw op.\n" msgid "Could not read key label" msgstr "" msgid "Key label not recognized" msgstr "" #, c-format msgid "Error reading key: \"%s\"" msgstr "" #, c-format msgid "\"%s\" assigned multiple times!" msgstr "\"%s\" meer dan eens toegewezen!" msgid "There were some errors when loading keys file, see log file ?" msgstr "" "Er waren fouten tijdens het laden van het sneltoetsenbestand, zie log file?" msgid "Too many errors while reading keys file, aborting..." msgstr "" "Teveel fouten bij het laden van het sneltoetsenbestand, wordt afgebroken ..." #, c-format msgid "FATAL ERROR: could not create %s: %s\n" msgstr "FATALE FOUT: kan %s niet aanmaken: %s\n" msgid "Welcome to Calcurse. Missing data files were created." msgstr "Welkom bij Calcurse. De missende databestanden zijn aangemaakt." msgid "Data files found. Data will be loaded now." msgstr "Databestanden gevonden. Data wordt geladen." msgid "The data were successfully exported" msgstr "De data is met succes geëxporteerd" msgid "unknown export type" msgstr "onbekend exporttype" msgid "wrong export mode" msgstr "foute exportmodus" msgid "Enter the file name to import data from:" msgstr "Kies het bestand voor het importeren van data:" #, c-format msgid "Import process report: %04d lines read " msgstr "Import proces rapport: %04d gelezen regels" msgid "unknown import type" msgstr "onbekend type om te importeren" msgid "FATAL ERROR: the input file cannot be accessed, Aborting..." msgstr "FATALE FOUT: invoerbestand niet toegankelijk, Afbreken..." msgid "FATAL ERROR: wrong import mode" msgstr "FATALE FOUT: foute import modus" #, c-format msgid "%d app" msgid_plural "%d apps" msgstr[0] "" msgstr[1] "" #, c-format msgid "%d event" msgid_plural "%d events" msgstr[0] "" msgstr[1] "" #, c-format msgid "%d todo" msgid_plural "%d todos" msgstr[0] "" msgstr[1] "" #, c-format msgid "%d skipped" msgstr "" msgid "Some items could not be imported, see log file ?" msgstr "Enkele items konden niet geïmporteerd worden, log zien?" msgid "Warning: could not create temporary log file, Aborting..." msgstr "" msgid "Warning: could not open temporary log file, Aborting..." msgstr "Pas op: kan tijdelijk logbestand niet openen, Stoppen..." msgid "No log file to display!" msgstr "" #, c-format msgid "Warning: could not erase temporary log file %s, Aborting..." msgstr "" "Waarschuwing: kon het tijdelijke logbestand %s niet verwijderen. Afbreken ..." msgid "Invalid delay" msgstr "" #, c-format msgid "" "\n" "WARNING: it seems that another calcurse instance is already running.\n" "If this is not the case, please remove the following lock file: \n" "\"%s\"\n" "and restart calcurse.\n" msgstr "" msgid "" "#\n" "# Calcurse keys configuration file\n" "#\n" "# This file sets the keybindings used by Calcurse.\n" "# Lines beginning with \"#\" are comments, and ignored by Calcurse.\n" "# To assign a keybinding to an action, this file must contain a line\n" "# with the following syntax:\n" "#\n" "# ACTION KEY1 KEY2 ... KEYn\n" "#\n" "# Where ACTION is what will be performed when KEY1, KEY2, ..., or KEYn\n" "# will be pressed.\n" "#\n" "# To define bindings which use the CONTROL key, prefix the key with 'C-'.\n" "# The escape, space bar and horizontal Tab key can be specified using\n" "# the 'ESC', 'SPC' and 'TAB' keyword, respectively.\n" "# Arrow keys can also be specified with the UP, DWN, LFT, RGT keywords.\n" "# Last, Home and End keys can be assigned using 'KEY_HOME' and 'KEY_END'\n" "# keywords.\n" "#\n" "# A description of what each ACTION keyword is used for is available\n" "# from calcurse online configuration menu.\n" msgstr "" msgid "FATAL ERROR: could not create default keys file." msgstr "" msgid "FATAL ERROR: key value out of bounds" msgstr "" msgid "Cancel the ongoing action." msgstr "" msgid "Select the highlighted item." msgstr "Selecteer het gemarkeerde bestand" msgid "Print general information about calcurse's authors, license, etc." msgstr "Geef algemene informatie van de auteurs, licentie, etc. weer." msgid "Display hints whenever some help screens are available." msgstr "" msgid "Exit from the current menu, or quit calcurse." msgstr "Verlaat het huidige menu, of verlaat Calcurse." msgid "Save calcurse data." msgstr "" msgid "Copy the item that is currently selected." msgstr "" msgid "Paste an item at the current position." msgstr "" msgid "Select next panel in calcurse main screen." msgstr "" msgid "Import data from an external file." msgstr "Importeer gegevens uit een extern bestand." msgid "Export data to a new file format." msgstr "Exporteer gegevens naar een nieuw bestandsformaat" msgid "Select the day to go to." msgstr "Secteer een datum om naartoe te gaan" msgid "Show next possible actions inside status bar." msgstr "" msgid "Enter the configuration menu." msgstr "Ga naar het configuratiemenu." msgid "Redraw calcurse's screen." msgstr "Ververs het scherm" msgid "Add an appointment, whichever panel is currently selected." msgstr "" msgid "Add a todo item, whichever panel is currently selected." msgstr "" msgid "" "Move to previous day in calendar, whichever panel is currently selected." msgstr "" msgid "Move to next day in calendar, whichever panel is currently selected." msgstr "" msgid "" "Move to previous week in calendar, whichever panel is currently selected" msgstr "" msgid "Move to next week in calendar, whichever panel is currently selected." msgstr "" msgid "" "Move to previous month in calendar, whichever panel is currently selected" msgstr "" msgid "Move to next month in calendar, whichever panel is currently selected." msgstr "" msgid "" "Move to previous year in calendar, whichever panel is currently selected" msgstr "" msgid "Move to next year in calendar, whichever panel is currently selected." msgstr "" msgid "Scroll window down (e.g. when displaying text inside a popup window)." msgstr "" msgid "Scroll window up (e.g. when displaying text inside a popup window)." msgstr "" msgid "Go to today, whichever panel is selected." msgstr "" msgid "Move to the right." msgstr "Ga naar rechts." msgid "Move to the left." msgstr "Ga naar links." msgid "Move down." msgstr "Ga omlaag" msgid "Move up." msgstr "Ga omhoog" msgid "" "Select the first day of the current week when inside the calendar panel." msgstr "" msgid "Select the last day of the current week when inside the calendar panel." msgstr "" msgid "Add an item to the currently selected panel." msgstr "" msgid "Delete the currently selected item." msgstr "Verwijder huidig geselecteerde item" msgid "Edit the currently seleted item." msgstr "Wijzig huidig geselecteerde item" msgid "Display the currently selected item inside a popup window." msgstr "Geef het huidig geselecteerde item weer in een popup" msgid "Flag the currently selected item as important." msgstr "Markeer het huidig bestand als belangrijk" msgid "Repeat an item" msgstr "Herhaal item" msgid "Pipe the currently selected item to an external program." msgstr "" msgid "Attach (or edit if one exists) a note to the currently selected item" msgstr "" "Voeg een noot toe aan het huidig geselecteerde item (of wijzig dit indien " "bestaande)" msgid "View the note attached to the currently selected item." msgstr "Bekijk de noot toegevoegd aan het huidig geselecteerde item" msgid "Raise a task priority inside the todo panel." msgstr "" msgid "Lower a task priority inside the todo panel." msgstr "" msgid "FATAL ERROR: null file pointer." msgstr "" #, c-format msgid "When adding default key for \"%s\", \"%s\" was already assigned!" msgstr "" msgid "xmalloc: zero size" msgstr "" msgid "xmalloc: out of memory" msgstr "" msgid "xcalloc: zero size" msgstr "" msgid "xcalloc: overflow" msgstr "" msgid "xcalloc: out of memory" msgstr "" msgid "xrealloc: zero size" msgstr "" msgid "xrealloc: overflow" msgstr "" msgid "xrealloc: out of memory" msgstr "" msgid "xfree: null pointer" msgstr "" msgid "could not allocate memory to store block info" msgstr "" msgid "Block not found" msgstr "" #, c-format msgid "overflow at %s" msgstr "" #, c-format msgid "dbg_free: null pointer at %s" msgstr "" #, c-format msgid "block seems already freed at %s" msgstr "" #, c-format msgid "corrupt block header at %s" msgstr "" #, c-format msgid "corrupt block end at %s, (end = %u, should be %d)" msgstr "" msgid "---==== MEMORY BLOCK ====----------------\n" msgstr "" #, c-format msgid " id: %u\n" msgstr "" #, c-format msgid " size: %u\n" msgstr "" #, c-format msgid " allocated in: %s\n" msgstr "" msgid "-----------------------------------------\n" msgstr "-----------------------------------------\n" msgid "+------------------------------+\n" msgstr "+------------------------------+\n" msgid "| calcurse memory usage report |\n" msgstr "" #, c-format msgid " number of calls: %u\n" msgstr "" #, c-format msgid " allocated blocks: %u\n" msgstr "" #, c-format msgid " unfreed blocks: %u\n" msgstr "" #, c-format msgid "Warning: could not open %s, Aborting..." msgstr "Pas op: bestand %s niet te openen. Stoppen..." msgid "error while launching command: could not fork" msgstr "" msgid "error while launching command" msgstr "fout bij uitvoeren commando" msgid "(if set to YES, notify-bar will be displayed)" msgstr "(Bij JA, wordt de informatiebalk weergegeven)" msgid "(Format of the date to be displayed inside notify-bar)" msgstr "(Formaat van de datum in de informatiebalk.)" msgid "(Format of the time to be displayed inside notify-bar)" msgstr "(Formaat van de tijd in de informatiebalk.)" msgid "" "(Warn user if an appointment is within next 'notify-bar_warning' seconds)" msgstr "" "Meldt gebruiker dat er een afspraak binnen 'informatiebalk_waarschuwing' " "seconden is" msgid "(Command used to notify user of an upcoming appointment)" msgstr "(Commando dat melding geeft van op handen zijnde afspraak)" msgid "(Notify all appointments instead of flagged ones only)" msgstr "" msgid "(Run in background to get notifications after exiting)" msgstr "" msgid "(Log activity when running in background)" msgstr "" msgid "Enter the time format (see 'man 3 strftime' for possible formats) " msgstr "Geef het formaat van de tijd (zie 'man 3 strftime')" msgid "Enter the number of seconds (0 not to be warned before an appointment)" msgstr "Geef het aantal seconden (0 voor geen waarschuwing voor een afspraak)." msgid "Enter the notification command " msgstr "Geef het meldingscommando " msgid "notification options" msgstr "notificatie-opties" msgid "incoherent repetition type" msgstr "Herhalingstype is niet coherent" msgid "unknown repetition type" msgstr "" msgid "unknown character" msgstr "onbekend karakter" msgid "date error in event" msgstr "datumfout in gebeurtenis" msgid "event not found" msgstr "Gebeurtenis niet gevonden" msgid "appointment not found" msgstr "afspraak niet gevonden" msgid "syntax error in item date" msgstr "syntaxfout in datum van item" #, c-format msgid "Could not remove calcurse lock file: %s\n" msgstr "" #, c-format msgid "Error setting signal #%d : %s\n" msgstr "" msgid "no note attached" msgstr "geen noot bijgevoegd" msgid "no such todo" msgstr "Er is zo geen todo" msgid "todo not found" msgstr "todo niet gevonden" msgid "/!\\ INTERNAL ERROR /!\\" msgstr "/!\\ INTERNE FOUT /!\\" msgid "Please report the following bug:" msgstr "Rapporteer aub de volgende fout:" msgid "[yn]" msgstr "" msgid "Press any key to continue..." msgstr "Druk op een toets om door te gaan..." msgid "failure in mktime" msgstr "fout in mktime" msgid "error in mktime" msgstr "fout in mktime" msgid "could not convert string" msgstr "kon de data niet converteren" msgid "out of range" msgstr "buiten bereik" msgid "yes" msgstr "ja" msgid "no" msgstr "nee" msgid "option not defined" msgstr "" #, c-format msgid "temporary file \"%s\" could not be created" msgstr "" #, c-format msgid "Error when closing file at %s" msgstr "" msgid "No note file found\n" msgstr "Noot-bestand niet gevonden\n" msgid "January" msgstr "januari" msgid "February" msgstr "februari" msgid "March" msgstr "maart" msgid "April" msgstr "april" msgid "May" msgstr "mei" msgid "June" msgstr "juni" msgid "July" msgstr "juli" msgid "August" msgstr "augustus" msgid "September" msgstr "september" msgid "October" msgstr "oktober" msgid "November" msgstr "november" msgid "December" msgstr "december" msgid "Sun" msgstr " zo" msgid "Mon" msgstr " ma" msgid "Tue" msgstr " di" msgid "Wed" msgstr " wo" msgid "Thu" msgstr " do" msgid "Fri" msgstr " vr" msgid "Sat" msgstr " za" msgid "mm/dd/yyyy" msgstr "" msgid "dd/mm/yyyy" msgstr "" msgid "yyyy/mm/dd" msgstr "" msgid "yyyy-mm-dd" msgstr "" msgid "Calendar" msgstr "Kalender" msgid "Appointments" msgstr "Afspraken" msgid "ToDo" msgstr "Taken" msgid "Quit" msgstr "Einde" msgid "Save" msgstr "Opslaan" msgid "Copy" msgstr "" msgid "Paste" msgstr "Plak" msgid "Chg Win" msgstr "" msgid "Import" msgstr "Import" msgid "Export" msgstr "Export" msgid "Go to" msgstr "Ga naar" msgid "Config" msgstr "Config" msgid "Redraw" msgstr "Ververs" msgid "Add Appt" msgstr "Nieuw Afspr" msgid "Add Todo" msgstr "Nieuw Taak" msgid "-1 Day" msgstr "-1 Dag" msgid "+1 Day" msgstr "+1 Dag" msgid "-1 Week" msgstr "-1 Week" msgid "+1 Week" msgstr "+1 Week" msgid "-1 Month" msgstr "" msgid "+1 Month" msgstr "" msgid "-1 Year" msgstr "" msgid "+1 Year" msgstr "" msgid "Today" msgstr "Vandaag" msgid "Nxt View" msgstr "" msgid "Prv View" msgstr "" msgid "beg Week" msgstr "beg Week" msgid "end Week" msgstr "eind Week" msgid "Add Item" msgstr "Nieuw Itm" msgid "Del Item" msgstr "Wis Item" msgid "Edit Itm" msgstr "Wzg Itm" msgid "View" msgstr "Bekijken" msgid "Pipe" msgstr "" msgid "Flag Itm" msgstr "Vlag Itm" msgid "Repeat" msgstr "Herhalen" msgid "EditNote" msgstr "WzgNoot" msgid "ViewNote" msgstr "BekijkNoot" msgid "Prio.+" msgstr "Prio.+" msgid "Prio.-" msgstr "rio.-" msgid "OtherCmd" msgstr "AnderCmd" msgid "unknown panel" msgstr "" msgid "Usage: calcurse-upgrade [-h|-v|--config ]" msgstr "" msgid "unrecognized option:" msgstr "" msgid "Configuration file not found:" msgstr "Configuratiebestand niet gevonden:" msgid "Pre-3.0.0 configuration file format detected..." msgstr "" msgid "Create temporary backup of the configuration file..." msgstr "" msgid "Old backup file found:" msgstr "" msgid "" "\n" "If a previous conversion did not complete, please try to restore your\n" "configuration from this backup and then remove the backup file." msgstr "" msgid "done" msgstr "klaar" msgid "Old temporary file found:" msgstr "" msgid "" "\n" "If a previous conversion did not complete, please try to remove this file " "and\n" "start over with a backup of your old configuration file." msgstr "" msgid "Upgrade configuration directives..." msgstr "" msgid "Remove temporary backup..." msgstr "" calcurse-3.1.4/po/en.gmo0000644000175000001440000001073012105444503011760 00000000000000EDalK:=,x5B97q z '#*$OX(a(    ! & . 3 8 ? J P T X a i       L Q &U |   (    5   ' / `3 K : , H 5a B 9   +8'>f#m*((.Wt  'A ^  M&!%-(2[_d5h 89 5.=A;+24?"3 1' C( 7> %6:-)0/*B$E&,!@<#D For more information, type '?' from within Calcurse, or read the manpage. Welcome to Calcurse. This is the main help screen. %s does not exist, create it now [y or n] ? %s successfully created (if set to YES, automatic save is done when quitting)(if set to YES, confirmation is required before deleting an event)(if set to YES, confirmation is required before quitting)Add ItemAppointment :AppointmentsAprilArgument to the '-d' flag is not valid AugustCalcurse %s - text-based organizer Calcurse - text-based organizerCalendarColorConfigData files found. Data will be loaded now.DecemberDel ItemDo you really want to delete this item ?Do you really want to delete this task ?Do you really want to quit ?Enter description :Enter the new ToDo item : Event :ExitFebruaryFriGeneralHelpJanuaryJulyJuneLayoutLoading...MarchMayMonNovemberOctoberPress [ENTER] to continuePress [Enter] to continuePress any key to continue...Problems accessing data file ...QuitRedrawSatSaveSaving...SeptemberSorry, colors are not supported by your terminal (Press [ENTER] to continue)SunThe data files were successfully savedThuTo do :ToDoTry 'calcurse -h' for more information. TueViewWedWelcome to Calcurse. Missing data files were created.aborting... nostarting interactive mode... to do: yesProject-Id-Version: calcurse 1.4 Report-Msgid-Bugs-To: bugs@calcurse.org POT-Creation-Date: 2013-02-09 14:04+0100 PO-Revision-Date: 2006-07-03 00:05+0100 Last-Translator: Neil Williams Language-Team: English/GB Language: en MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit For more information, type '?' from within Calcurse, or read the manpage. Welcome to Calcurse. This is the main help screen. %s does not exist, create it now [y or n] ? %s successfully created (if set to YES, automatic save is done when quitting)(if set to YES, confirmation is required before deleting an event)(if set to YES, confirmation is required before quitting)Add ItemAppointment :AppointmentsAprilArgument to the '-d' flag is not valid AugustCalcurse %s - text-based organizer Calcurse - text-based organizerCalendarColourConfigData files found. Data will be loaded now.DecemberDel ItemDo you really want to delete this item ?Do you really want to delete this task ?Do you really want to quit ?Enter description :Enter the new ToDo item : Event :ExitFebruaryFriGeneralHelpJanuaryJulyJuneLayoutLoading...MarchMayMonNovemberOctoberPress [ENTER] to continuePress [Enter] to continuePress any key to continue...Problems accessing data file ...QuitRedrawSatSaveSaving...SeptemberSorry, colours are not supported by your terminal (Press [ENTER] to continue)SunThe data files were successfully savedThuTo do :ToDoTry 'calcurse -h' for more information. TueViewWedWelcome to Calcurse. Missing data files were created.aborting... nostarting interactive mode... to do: yescalcurse-3.1.4/po/pt_BR.gmo0000644000175000001440000024323012105444504012370 00000000000000 (!(r*K,+x+,,*55T6h6:|666667X.7:: ::,::8 ;<D;6;6;);)<6C<4z<6<I<0=E=DM=5=B=9 >GE>->@> >)?60?g?|??!?????*?*?&@-@6@>@F@]@b@k@t@7}@:@@,GG G G H4H+EH/qHH'HDH%IL MM#MCM cMqM0zMMMMP-PPPPPQ!Q1Q)RS'S%GS3mSSS(S&ST#7T#[T4T*TTTTTHU#JW nWzW7W:W(X()XRXoXtX XX XPX\!\ *\4\*=\h\T|\V\I(]4r]]B]^- ^DN^<^(^ ^_&5_\_#|__)__F `P`p`B```a#aaa-aaaa! d"/d Rd%_d0d$dd;d7eVeoeeee ee.e fff&f;f)Afkfqfvf}f"f+f'i,i)j GjVUj1jjjvjblglpllll l,l)l>l;mAmEmIm Pm ^pDipFpEpE;qHqIqHrH]rrrrXr-v6v?vWvkvrv{vvvvvDyy yy&yz zz8/zhz @{*a{:{;{X|/\|||||$|}A&}h}o} v} }}},}}}}~~p'~ ǃۃ ECE*LwHنG >-Hv5~0Lt>  8,&1#XN|ː<''CO=CёGG]$Dʓ=FM4g(ŗɗۗ#ޗ/٘ ݛ6ҝ ۝9;'[7C5<9v~>>Š8=BINSX ]jء+ ;G$Y1~-ˢ)#&<"c$ ̣ 0;RW`p-!ܤ)!Ik%٥6:T'ۦ 0A U bo  %Χ$9<Tب%>(\  ǩ ٩ ! 3A Yf,{( /CZm !ƫ]w BA Oi{˾&/BF7@D+GAs>JD?Z MSN[ISH>W3#<>` ,  )*>ip x  JGY60 ? MZ1`/34HFx+' 9P1oCE48?*Gry.Y$8/9*P){<<,2L37@,5 >KT% A49v*,&., [h$qDM Vb9wbg.UB!/MQ3H@8?y("(+..Z%-%N'R zQ& 3P# i*.. ,@-+n%E'.!N p%  7"&,J1Q -j6>/u"iOC[ a!k 67J!lsx |3WX'ZWW3XZW? '  #.$6&[Z?   & 0  6 W  ` )n 6  # 4 A(>jb;  H!i */ I_f m*y 8 4<ED S_gkrz HG ,:7rYX_>h 6=")ZL!D!!""> "K$%-%%&K(&!t&I&(&M 'FW'U'Q(QF))N)9*H;*****b*:.0<.m.q..'..2////22455H5NZ505J5O%6u6Hy6C6 7 7`7Q{8B8999!9&9+9 09%>9d99 9"9"9&98: ?:K:.a:=:$:G:?;;#{;;;7;6<,J<w<<<< <<= ==-%=%S=Gy==#=>+>.H>&w>'>>>S>*:?!e? ? ?=? @@*-@X@ q@|@@(@@@@AA ,A:APAfAvA1A,A-A$B:DBBBB(B'B0CLC.iCCCC CCC! D+D!EDgDD DDD:DE'9EaEuEEEEEEFF8FOF SF ^F.iF& epoS~(.d\|z{kTT4jHKLK&{sk oj5Y+};bhItux_ !@J "2B)w8p?s@<6v ,"6VUGZf3*DSL3gAmY*va$[?Bq%];dNc.')bER,^[ W/5gUCe<zi#ORNA]cHyD y7/}P I_CXGXa+7J'Ml:i|0rP~VwE# !F rFW1lm>2-9%=`0=O:-fqt>^$ x(Q`nZnh4\9M1Qu8  Copyright (c) 2004-2013 calcurse Development Team All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Send your feedback or comments to : misc@calcurse.org Calcurse home page : http://calcurse.org Copyright (c) 2004-2013 calcurse Development Team. This is free software; see the source for copying conditions. For more information, type '?' from within Calcurse, or read the manpage. If a previous conversion did not complete, please try to remove this file and start over with a backup of your old configuration file. If a previous conversion did not complete, please try to restore your configuration from this backup and then remove the backup file. Miscellaneous: -h, --help print this help and exit. -v, --version print calcurse version and exit. --status display the status of running instances of calcurse. --read-only Don't save configuration nor appointments/todos. Use with care. Files: -c , --calendar specify the calendar to use (has precedence over '-D'). -D , --directory specify the data directory to use. If not specified, the default directory is ~/.calcurse Non-interactive: -a, --appointment print events and appointments for current day and exit. -d , --day print events and appointments for or upcoming days and exit. To specify both a starting date and a range, use the '--startday' and the '--range' option. -g, --gc run the garbage collector for note files and exit. -i , --import import the icalendar data contained in . -n, --next print next appointment within upcoming 24 hours and exit. Also given is the remaining time before this next appointment. -r[num], --range[=num] print events and appointments for the [num] number of days and exit. If no [num] is given, a range of 1 day is considered. -s[date], --startday[=date] print events and appointments from [date] and exit. If no [date] is given, the current day is considered. -S, --search= search for the given regular expression within events, appointments, and todos description. -t[num], --todo[=num] print todo list and exit. If the optional number [num] is given, then only todos having a priority equal to [num] will be returned. The priority number must be between 1 (highest) and 9 (lowest). It is also possible to specify '0' for the priority, in which case only completed tasks will be shown. -x[format], --export[=format] export user data to the specified format. Events, appointments and todos are converted and echoed to stdout. Two possible formats are available: 'ical' and 'pcal'. If the optional argument format is not given, ical format is selected by default. note: redirect standard output to export data to a file, by issuing a command such as: calcurse --export > calcurse.dat Too many errors while reading configuration file! Please backup your keys file, remove it from directory, and launch calcurse again. WARNING: it seems that another calcurse instance is already running. If this is not the case, please remove the following lock file: "%s" and restart calcurse. id: %u size: %u Welcome to Calcurse. This is the main help screen. unfreed blocks: %u allocated in: %s number of calls: %u allocated blocks: %u "%s" assigned multiple times!# # Calcurse keys configuration file # # This file sets the keybindings used by Calcurse. # Lines beginning with "#" are comments, and ignored by Calcurse. # To assign a keybinding to an action, this file must contain a line # with the following syntax: # # ACTION KEY1 KEY2 ... KEYn # # Where ACTION is what will be performed when KEY1, KEY2, ..., or KEYn # will be pressed. # # To define bindings which use the CONTROL key, prefix the key with 'C-'. # The escape, space bar and horizontal Tab key can be specified using # the 'ESC', 'SPC' and 'TAB' keyword, respectively. # Arrow keys can also be specified with the UP, DWN, LFT, RGT keywords. # Last, Home and End keys can be assigned using 'KEY_HOME' and 'KEY_END' # keywords. # # A description of what each ACTION keyword is used for is available # from calcurse online configuration menu. %d app%d apps%d event%d events%d skipped%d todo%d todos%s does not exist, create it now [y or n] ? %s successfully created (Command used to notify user of an upcoming appointment)(Format of the date to be displayed in non-interactive mode)(Format of the date to be displayed inside notify-bar)(Format of the time to be displayed inside notify-bar)(Format to be used when entering a date: (Log activity when running in background)(Notify all appointments instead of flagged ones only)(Press '^P' or '^N' to move up or down, 'Q' to quit)(Run in background to get notifications after exiting)(Warn user if an appointment is within next 'notify-bar_warning' seconds)(currently using %s)(d)aily(if not null, automatically save data every 'periodic_save' minutes)(if set to YES, automatic save is done when quitting)(if set to YES, confirmation is required before deleting an event)(if set to YES, confirmation is required before quitting)(if set to YES, messages about loaded and saved data will be displayed)(if set to YES, notify-bar will be displayed)(if set to YES, progress bar will be displayed when saving data)(m)onthly(run the garbage collector when quitting)(specifies the first day of week in the calendar view)(terminal's default)(w)eekly(y)early+------------------------------+ +1 Day+1 Month+1 Week+1 Year----------------------------------------- ---==== MEMORY BLOCK ====---------------- -1 Day-1 Month-1 Week-1 Year/!\ INTERNAL ERROR /!\Add Add ApptAdd ItemAdd TodoAdd a todo item, whichever panel is currently selected.Add an appointment, whichever panel is currently selected.Add an item in either the ToDo or Appointment list, depending on which panel is selected when you press '%s'. To enter a new item in the TODO list, you will need first to enter the description of this new item. Then you will be asked to specify the todo priority. This priority is represented by a number going from 9 for the lowest priority, to 1 for the highest one. It is still possible to change the item priority afterwards, by using the '%s' and '%s' keys inside the todo panel. If the APPOINTMENT panel is selected while pressing '%s', you will be able to enter either a new appointment or a new all-day long event. To enter a new event, press [ENTER] instead of the item start time, and just fill in the event description. To enter a new appointment to be added in the APPOINTMENT list, you will need to enter successively the time at which the appointment begins, the appointment length (either by specifying the end time in [hh:mm] or the duration in [+hh:mm], [+xxdxxhxxm] or [+mm] format), and the description of the event. The day at which occurs the event or appointment is the day currently selected in the calendar, so you need to move to the desired day before pressing '%s'. Notes: o if an appointment lasts for such a long time that it continues on the next days, this event will be indicated on all the corresponding days, and the beginning or ending hour will be replaced by '..' if the event does not begin or end on the day. o if you only press [ENTER] at the APPOINTMENT or TODO event description prompt, without any description, no item will be added. o do not forget to save the calendar data to retrieve the new event next time you launch Calcurse.Add an item to the currently selected panel.Add keyAppointment :AppointmentsAprilArgument for '-x' should be either 'ical' or 'pcal' Argument format for -r and --range is: 'n' Argument format for -s and --startday is: '%s' Argument is not valid Argument to the '-d' flag is not valid Attach (or edit if one exists) a note to the currently selected itemAttach a note to any type of item, or edit an already existing note. This feature is useful if you do not have enough space to store all of your item description, or if you would like to add sub-tasks to an already existing todo item for example. Before pressing the '%s' key, you first need to highlight the item you want the note to be attached to. Then you will be driven to an external editor to edit your note. This editor is chosen the following way: o if the 'VISUAL' environment variable is set, then this will be the default editor to be called. o if 'VISUAL' is not set, then the 'EDITOR' environment variable will be used as the default editor. o if none of the above environment variables is set, then '/usr/bin/vi' will be used. Once the item note is edited and saved, quit your favorite editor. You will then go back to Calcurse, and the '>' sign will appear in front of the highlighted item, meaning there is a note attached to it.AugustBackgroundBlock not foundCalcurse %s - text-based organizer Calcurse - text-based organizerCalcurse helpCalendarCan not handle more than one regular expression.Cancel the ongoing action.Cannot daemonize, aborting Change the priority of the currently selected item in the ToDo list. Priorities are represented by the number appearing in front of the todo description. This number goes from 9 for the lowest priority to 1 for the highest priority. Todo having higher priorities are placed first (at the top) inside the todo panel. If you want to raise the priority of a todo item, you need to press '%s'. In doing so, the number in front of this item will decrease, meaning its priority increases. The item position inside the todo panel may change, depending on the priority of the items above it. At the opposite, to lower a todo priority, press '%s'. The todo position may also change depending on the priority of the items below.Chg WinChoose the file used to export calcurse data:ColorConfigConfig Configuration file not found:CopyCopy and Paste Copy and paste the currently selected item. This is useful to quickly copy an item from one date to another. To do so, one must first highlight the item that needs to be copied, then press '%s' to copy. Once the new date is chosen in the calendar, the appointment panel must be selected and the '%s' key must be pressed to paste the item. The item will appear in the appointment panel, assigned to the newly selected date. Copy the item that is currently selected.Could not access "%s": %s Could not change working directory: %s Could not compile regular expression.Could not detach from the controlling terminal: %s Could not fork: %s Could not read key labelCould not remove calcurse lock file: %s Could not remove daemon lock file: %s Could not set lock file Could not stop calcurse daemon: %s Could not stop daemon properly: %s Create temporary backup of the configuration file...Data files found. Data will be loaded now.DecemberDel ItemDel keyDelete Delete an element in the ToDo or Appointment list. Depending on which panel is selected when you press the delete key, the hilighted item of either the ToDo or Appointment list will be removed from this list. If the item to be deleted is recurrent, you will be asked if you wish to suppress all of the item occurences or just the one you selected. If the general option 'confirm_delete' is set to 'YES', then you will be asked for confirmation before deleting the selected event. Do not forget to save the calendar data to retrieve the modifications next time you launch Calcurse.Delete the currently selected item.DescriptionDisplacement keys Display hints whenever some help screens are available.Display the currently selected item inside a popup window.Do you really want to delete this item ?Do you really want to delete this task ?Do you really want to quit ?DownERROR setting first day of weekEdit Item Edit ItmEdit the currently seleted item.Edit the item which is currently selected. Depending on the item type (appointment, event, or todo), and if it is repeated or not, you will be asked to choose one of the item properties to modify. An item property is one of the following: the start time, the end time, the description, or the item repetition. Once you have chosen the property you want to modify, you will be shown its actual value, and you will be able to change it as you like. Notes: o if you choose to edit the item repetition properties, you will be asked to re-enter all of the repetition characteristics (repetition type, frequence, and ending date). Moreover, the previous data concerning the deleted occurences will be lost. o do not forget to save the calendar data to retrieve the modified properties next time you launch Calcurse.Edit: EditNoteEditNote End timeEnter an option number to change its valueEnter description :Enter end time ([hh:mm] or [hhmm]) or duration ([+hh:mm], [+xxxdxxhxxm] or [+mm]) : Enter new end time ([hh:mm], [hhmm]) or duration ([+hh:mm], [+xxxdxxhxxm] or [+mm]) : Enter start time ([hh:mm] or [hhmm]), leave blank for an all-day event : Enter the ToDo priority [1 (highest) - 9 (lowest)] :Enter the configuration menu.Enter the date format (see 'man 3 strftime' for possible formats) Enter the date format: Enter the day to go to [ENTER for today] : %sEnter the delay, in minutes, between automatic saves (0 to disable) Enter the ending date: [%s] or '0' for an endless repetitionEnter the file name to import data from:Enter the new ToDo description :Enter the new ToDo item : Enter the new ending date: [%s] or '0'Enter the new item description:Enter the new repetition frequence:Enter the new repetition type:Enter the new time ([hh:mm] or [hhmm]) : Enter the notification command Enter the number of seconds (0 not to be warned before an appointment)Enter the repetition frequence:Enter the repetition type:Enter the time format (see 'man 3 strftime' for possible formats) Error reading key: "%s"Error setting signal #%d : %s Error when closing file at %sError: both calcurse (pid: %d) and its daemon (pid: %d) seem to be running at the same time! Please check manually and restart calcurse. Event :ExitExit from the current menu, or quit calcurse.ExportExport Export calcurse data (appointments, events and todos). This leads to the export submenu, from which you can choose between two different export formats: 'ical' and 'pcal'. Choosing one of those formats lets you export calcurse data to icalendar or pcal format. You first need to specify the file to which the data will be exported. By default, this file is: ~/calcurse.ics for an ical export, and: ~/calcurse.txt for a pcal export. Calcurse data are exported in the following order: events, appointments, todos. Export data to a new file format.Export to (i)cal or (p)cal format?Exporting...FATAL ERROR: could not create %s: %s FATAL ERROR: could not create default keys file.FATAL ERROR: key value out of boundsFATAL ERROR: null file pointer.FATAL ERROR: the input file cannot be accessed, Aborting...FATAL ERROR: wrong import modeFailed to build message Failed to close "%s" - %s Failed to open "%s", - %s Failed to print message "%s" FebruaryFlag Item Flag ItmFlag the currently selected item as important.ForegroundFriGeneralGeneric keybindings Go toGo to today, whichever panel is selected.Goto HelpImportImport Import data from an external file.Import data from an icalendar file. You will be asked to enter the file name from which to load ical items. At the end of the import process, and if the general option 'system_dialogs' is set to 'yes', a report indicating how many items were imported is shown. This report contains the total number of lines read, the number of appointments, events and todo items which were successfully imported, together with the number of items for which problems occured and that were skipped, if any. If one or more items could not be imported, one has the possibility to read the import process report in order to identify which problems occured. In this report is shown one item per line, with the line in the input stream at which this item begins, together with the description of why the item could not be imported. Import process report: %04d lines read Internal error while displaying progress barInternal error: line too longInvalid delayInvalid end time/duration, should be [hh:mm], [hhmm], [+hh:mm], [+xxxdxxhxxm] or [+mm]Invalid time: start time must be before end time!JanuaryJulyJump to a specific day in the calendar. Using this command, you do not need to travel to that day using the displacement keys inside the calendar panel. If you hit [ENTER] without specifying any date, Calcurse checks the system current date and you will be taken to that date. Notice that pressing '%s', whatever panel is selected, will select current day in the calendar.JuneKey infoKey label not recognizedKeysLayoutLeftLoading...Lower a task priority inside the todo panel.Mail bug reports to . Mail feature requests and suggestions to . MarchMayMonMondayMove around inside calcurse screens. The following scheme summarizes how to get around: move up move to previous week %s move left ^ move to previous day | %s <-- + --> %s | move right v move to next day %s move to next week move down Moreover, while inside the calendar panel, the '%s' key moves to the first day of the week, and the '%s' key selects the last day of the week. Move down.Move to next day in calendar, whichever panel is currently selected.Move to next month in calendar, whichever panel is currently selected.Move to next week in calendar, whichever panel is currently selected.Move to next year in calendar, whichever panel is currently selected.Move to previous day in calendar, whichever panel is currently selected.Move to previous month in calendar, whichever panel is currently selectedMove to previous week in calendar, whichever panel is currently selectedMove to previous year in calendar, whichever panel is currently selectedMove to the left.Move to the right.Move up.Moving around: Press '%s' or '%s' to scroll text upward or downward inside help screens, if necessary. Exit help: When finished, press '%s' to exit help and go back to the main Calcurse screen. Help topic: At the bottom of this screen you can see a panel with different fields, represented by a letter and a short title. This panel contains all the available actions you can perform when using Calcurse. By pressing one of the letters appearing in this panel, you will be shown a short description of the corresponding action. At the top right side of the description screen are indicated the user-defined key bindings that lead to the action. Credits: Press '%s' for credits.Next KeyNo colorNo log file to display!No note file found NotifyNovemberNxt ViewOctoberOld backup file found:Old temporary file found:Open the configuration submenu. From this submenu, you can select between color, layout, notification and general options, and you can also configure your keybindings. The color submenu lets you choose the color theme. The layout submenu lets you choose the Calcurse screen layout, in other words where to place the three different panels on the screen. The general options submenu brings a screen with the different options which modifies the way Calcurse interacts with the user. The notify submenu allows you to change the notify-bar settings. The keys submenu lets you define your own key bindings. Do not forget to save the calendar data to retrieve your configuration next time you launch Calcurse.Option '-S' must be used with either '-d', '-r', '-s', '-a' or '-t' OtherCmdOtherCmd PastePaste an item at the current position.PipePipe Pipe item to external command:Pipe the currently selected item to an external program.Pipe the selected item to an external program. Press the '%s' key to pipe the currently selected appointment or todo entry to an external program. You will be driven back to calcurse as soon as the program exits. Please report the following bug:Possible argument format are: '%s' or 'n' Possible formats are [%s] or '0' for an endless repetitionPossible formats are [%s] or '0' for an endless repetition.Pre-3.0.0 configuration file format detected, please upgrade running `calcurse-upgrade`.Pre-3.0.0 configuration file format detected...Press [ENTER] to continuePress [ENTER] to continue.Press [Enter] to continuePress any key to continue...Press the key you want to assign to:Prev KeyPrint general information about calcurse's authors, license, etc.Prio.+Prio.-Priority Problems accessing data file ...Prv ViewQuitRaise a task priority inside the todo panel.RedrawRedraw calcurse's screen.Remove temporary backup...RepeatRepeat Repeat an event or an appointment. You must first select the item to be repeated by moving inside the appointment panel. Then pressing '%s' will lead you to a set of three questions, with which you will be able to specify the repetition characteristics: o type: you can choose between a daily, weekly, monthly or yearly repetition by pressing 'D', 'W', 'M' or 'Y' respectively. o frequence: this indicates how often the item shall be repeated. For example, if you want to remember an anniversary, choose a 'yearly' repetition with a frequence of '1', which means it must be repeated every year. Another example: if you go to the restaurant every two days, choose a 'daily' repetition with a frequence of '2'. o ending date: this specifies when to stop repeating the selected event or appointment. To indicate an endless repetition, enter '0' and the item will be repeated forever. Notes: o repeated items are marked with an '*' inside the appointment panel, to be easily recognizable from non-repeated ones. o the 'Repeat' and 'Delete' command can be mixed to create complicated configurations, as it is possible to delete only one occurence of a repeated item.Repeat an itemRepetitionRightSatSaveSave Save calcurse data.Save calcurse data. Data are splitted into four different files which contain : / ~/.calcurse/conf -> user configuration | (layout, color, general options) | ~/.calcurse/apts -> data related to the appointments | ~/.calcurse/todo -> data related to the todo list \ ~/.calcurse/keys -> user-defined key bindings In the config menu, you can choose to save the Calcurse data automatically before quitting.Saving...Scroll window down (e.g. when displaying text inside a popup window).Scroll window up (e.g. when displaying text inside a popup window).SelectSelect next panel in calcurse main screen.Select the day to go to.Select the first day of the current week when inside the calendar panel.Select the highlighted item.Select the last day of the current week when inside the calendar panel.SeptemberShow next possible actions inside status bar.SidebarSome actions do not have any associated key bindings!Some items could not be imported, see log file ?Some of the keybindings apply whatever panel is selected. They are called generic keybinding. Here is the list of all the generic key bindings, together with their corresponding action: '%s' : Redraw function -> redraws calcurse panels, this is useful if you resize your terminal screen or when garbage appears inside the display '%s' : Add Appointment -> add an appointment or an event '%s' : Add ToDo -> add a todo '%s' : -1 Day -> move to previous day '%s' : +1 Day -> move to next day '%s' : -1 Week -> move to previous week '%s' : +1 Week -> move to next week '%s' : -1 Month -> move to previous month '%s' : +1 Month -> move to next month '%s' : -1 Year -> move to previous year '%s' : +1 Year -> move to next year '%s' : Goto today -> move to current day The '%s' and '%s' keys are used to scroll text upward or downward when inside specific screens such the help screens for example. They are also used when the calendar screen is selected to switch between the available views (monthly and weekly calendar views).Sorry, colors are not supported by your terminal (Press [ENTER] to continue)Sorry, the date you entered is older than the item start time.Start timeSunSundaySwitch between panels. The panel currently in use has its border colorized. Some actions are possible only if the right panel is selected. For example, if you want to add a task in the TODO list, you need first to press the '%s' key to get the TODO panel selected. Then you can press '%s' to add your item. Notice that at the bottom of the screen the list of possible actions change while pressing '%s', so you always know what action can be performed on the selected panel.Switch between status bar help pages. Because the terminal screen is too narrow to display all of the available commands, you need to press '%s' to see the next set of commands together with their keybindings. Once the last status bar page is reached, pressing '%s' another time leads you back to the first page.Tab The data files were successfully savedThe data were successfully exportedThe day you entered is not valid (should be between 01/01/1902 and 12/31/2037)The entered date is not valid.The file cannot be accessed, please enter another file name.The frequence you entered is not valid.The ical file seems to be malformed. The end of item was not found.There were some errors when loading keys file, see log file ?This configuration screen is used to change the width of the side bar. The side bar is the part of the screen which contains two panels: the calendar and, depending on the chosen layout, either the todo list or the appointment list. The side bar width can be up to 50% of the total screen width, but can't be smaller than This item has a note attached to it. Delete (i)tem or just its (n)ote ?This item has a note attached to it. Delete (t)odo or just its (n)ote ?This item is already a repeated one.This item is recurrent. Delete (a)ll occurences or just this (o)ne ?This key is already in use for %s, please choose another one.This key is not yet recognized by calcurse, please choose another one.ThuTo do :ToDoTodayToggle an appointment's 'important' flag or a todo's 'completed' flag. If a todo is flagged as completed, its priority number will be replaced by an 'X' sign. Completed tasks will no longer appear in exported data or when using the '-t' command line flag (unless specifying '0' as the priority number, in which case only completed tasks will be shown). If an appointment is flagged as important, an exclamation mark appears in front of it, and you will be warned if time gets closed to the appointment start time. To customize the way one gets notified, the configuration submenu lets you choose the command launched to warn user of an upcoming appointment, and how long before it he gets notified.Too many errors while reading keys file, aborting...Try 'calcurse -h' for more information. TueUndefined option!UpUpgrade configuration directives...Usage: calcurse [-g|-h|-v] [-an] [-t[num]] [-i] [-x[format]] [-d |] [-s[date]] [-r[range]] [-c] [-D] [-S] [--status] [--read-only] Usage: calcurse-upgrade [-h|-v|--config ]ViewView View a note which was previously attached to an item (an item which owns a note has a '>' sign in front of it). This command only permits to view the note, not to edit it (to do so, use the 'EditNote' command, by pressing the '%s' key). Once you highlighted an item with a note attached to it, and the '%s' key was pressed, you will be driven to an external pager to view that note. The default pager is chosen the following way: o if the 'PAGER' environment variable is set, then this will be the default viewer to be called. o if the above environment variable is not set, then '/usr/bin/less' will be used. As for editing a note, quit the pager and you will be driven back to Calcurse.View the item you select in either the Todo or Appointment panel. This is usefull when an event description is longer than the available space to display it. If that is the case, the description will be shortened and its end replaced by '...'. To be able to read the entire description, just press '%s' and a popup window will appear, containing the whole event. Press any key to close the popup window and go back to the main Calcurse screen.View the note attached to the currently selected item.ViewNoteViewNote Warning: could not create temporary log file, Aborting...Warning: could not erase temporary log file %s, Aborting...Warning: could not open %s, Aborting...Warning: could not open temporary log file, Aborting...Warning: ical header malformed or wrong version number. Aborting...WedWelcome to Calcurse. Missing data files were created.When adding default key for "%s", "%s" was already assigned!Width +Width -With this configuration menu, one can choose where panels will be displayed inside calcurse screen. It is possible to choose between eight different configurations. In the configuration representations, letters correspond to: 'c' -> calendar panel 'a' -> appointment panel 't' -> todo panel You entered an invalid start time, should be [hh:mm] or [hhmm]You entered an invalid time, should be [hh:mm] or [hhmm][ao][dwmy][in][ip][tn][yn]aborting... appointment has no start time.appointment not foundawakened at %s beg Weekblock seems already freed at %scalcurse is not running calcurse is running (pid %d) calcurse is running in background (pid %d) color themecompleted tasks: configuration variable unknown: "%s"corrupt block end at %s, (end = %u, should be %d)corrupt block header at %scould not allocate memory to store block infocould not compute duration (no end time).could not convert stringcould not get entire item description.could not retrieve event end time.could not retrieve event start time.could not retrieve item summary.date error in appointmentdate error in eventdate error in the event dbg_free: null pointer at %sdd/mm/yyyydescription malformed.doneend Weekerror in mktimeerror loading next appointment error while launching commanderror while launching command: could not forkerror while sending notification event date is not defined.event not foundfailed to open appointment filefailed to open configuration filefailed to open key filefailed to open todo filefailure in mktimegeneral optionsincoherent repetition typeinvalid configuration directive: "%s"item could not be identified.item duration malformed.item has a negative duration.item priority is not acceptable (must be between 1 and 9).key bindings: %skeys configurationlaunching notification at %s for: "%s" layout configurationmm/dd/yyyynext appointment: nono event nor appointment foundno note attachedno such appointmentno such todono such typenotification optionsnull pointeroption not definedout of memoryout of rangeoverflow at %srecurrence exception dates malformed.recurrence frequence not found.recurrence frequence not recognized.recurrence rule malformed.sleeping at %s for %d second sleeping at %s for %d seconds started at %s starting interactive mode... syntax error in item datesyntax error in item identifiersyntax error in item repetitionsyntax error in item time or durationsyntax error in the item datetemporary file "%s" could not be createdterminated at %s with signal %d to do: todo not foundundefinedunknown characterunknown colorunknown export typeunknown ical typeunknown import typeunknown item typeunknown panelunknown repetition typeunknwon typeunrecognized option:wrong configuration variable format for "%s"wrong export modewrong format in the appointment or eventwrong item typexcalloc: out of memoryxcalloc: overflowxcalloc: zero sizexfree: null pointerxmalloc: out of memoryxmalloc: zero sizexrealloc: out of memoryxrealloc: overflowxrealloc: zero sizeyesyyyy-mm-ddyyyy/mm/dd| calcurse memory usage report | Project-Id-Version: calcurse Report-Msgid-Bugs-To: bugs@calcurse.org POT-Creation-Date: 2013-02-09 14:04+0100 PO-Revision-Date: 2012-11-24 04:59+0000 Last-Translator: Rafael Ferreira Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/calcurse/language/pt_BR/) Language: pt_BR MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n > 1); Copyright (c) 2004-2012 Equipe de Desenvolvimento do calcurse Todos os direitos reservados. A redistribuição e uso na forma de código-fonte e binário, com ou sem modificações, são permitidas na medida em que as seguintes condições sejam cumpridas: - As redistribuições de código-fonte devem reter os direitos de propriedade, a presente licença, esta lista de condições e a seguinte ressalva. - As redistribuições em forma binária devem reproduzir a presente licença, esta lista de condições e a seguinte ressalva na documentação e/ou outros materiais fornecidos com a distribuição. Envie seu feedback ou comentários para : misc@calcurse.org Homepage do Calcurse : http://calcurse.org Copyright (c) 2004-2012 Equipe de Desenvolvimento do calcurse. Este é um software livre; veja o código fonte para condições de cópia. Para maiores informações, pressione "?" estando dentro do Calcurse ou leia a página man. Se uma conversão anterior não completou, favor tente excluir este arquivo e começar do começo com um backup de seu arquivo de configuração antigo. Se uma conversão anterior não completou, favor tente restaurar sua configuração a partir deste backup e, então, exclua o arquivo backup. Miscelânea: -h, --help exibe esta mensagem de ajuda e sai. -v, --version exibe a versão do calcurse e sai. --status mostra o status de instâncias em execução do calcurse. --read-only não salva configuração nem agendamentos/tarefas. Use com cuidado. Arquivos: -c , --calendar especifica o de calendário a ser usado (precede '-D'). -D , --directory especifica o diretório de dados a ser usado. Se não for especificado, o diretório padrão do calcurse é ~/.calcurse Não-interativo: -a, --appointment exibe eventos e agendamentos para o dia atual e sai. -d , --day exibe eventos e agendamentos para dias próximos ou e sai. Para especificar ambas data de início e uma faixa, use a opção '--startday' e a '--range'. -g, --gc executa o coletor de lixo para arquivos de anotação e sai. -i , --import importa os dados de icalendar contidos no . -n, --next exibe próximo agendamento dentro das próximas 24 horas e sai. Também é dado o tempo restante até o próximo agendamento. -r[número], --range[=número] exibe eventos e agendamentos para o número [número] de dias e sai. Se nenhum [número] for dado, uma faixa de 1 dia é considerada. -s[data], --startday[=data] exibe eventos e agendamentos da [data] e sai. se nenhuma [data] for dado, o dia atual é considerado. -S, --search= pesquisa pela expressão regular dada dentro de descrições de eventos, agendamentos e tarefas. -t[número], --todo[=número] exibe lista de tarefas e sai. Se o número [número] opcional for dado, então somente tarefas contendo uma prioridade igual a [número] serão retornados. O número de prioridade deve estar entre 1 (maior) e 9 (menor). Também é possível especificar '0' como prioridade, caso este em que somente tarefas finalizadas serão exibidas. -x[formato], --export[=formato] exporta dados do usuário para o formato especificado. Eventos, agendamentos e tarefas são convertidos e enviados para a stdout. Dois formatos estão disponíveis: 'ical' e 'pcal'. Se o argumento opcional de formato não for dado, o formato ical é selecionado por padrão. nota: redireciona a saída padrão (stdout) para exportar os dados para um arquivo, simplesmente executando um comando como este: calcurse --export > calcurse.dat Muitos erros de leitura do arquivo de configuração! Favor faça backup de seus arquivos de teclas, exclua-o de seu diretório e carregue calcurse novamente. AVISO: para que outra instância de calcurse já está em execução. Se este não é o caso, favor excluir o seguinte arquivo de trava: "%s" e reinicie calcurse. id: %u tamanho: %u Bem-vindo ao Calcurse. Esta é a tela principal de ajuda. blocos não livres: %u alocado em: %s número de chamadas: %u blocos alocados: %u "%s" alocada múltiplas vezes!# # Calcurse - arquivo de configuração de teclas # # Este arquivo define as teclas de atalhos (keybindings) usadas pelo Calcurse. # Linhas iniciadas com "#" são comentários, e são ignoradas pelo Calcurse. # Para designar uma tecla de atalho para uma ação, o arquivo deve conter uma # linha com a seguinte sintaxe: # # AÇÃO TECLA1 TECLA2 ... TECLAn # # Onde AÇÃO é o que será executado quando TECLA1, TECLA2, ..., ou TECLAn # for pressionada. # # Para definir atalhos que usem a tecla CONTROL, insira antes 'C-' na tecla. # Para as teclas ESC, barra de espaço e Tab horizontal, podem ser# especificadas as palavras-chave 'ESC', 'SPC' e 'TAB', respectivamente. # Teclas de setas podem também ser especificadas com as palavras-chave UP, DWN,# LFT e RGT.# Por último, teclas Home e End podem ser designadas usando as palavras-chave # 'KEY_HOME' e 'KEY_END'.# # Uma descrição do como cada palavra-chave de AÇÃO é está disponível no menu # de configuração online do calcurse. %d agend.%d agends.%d evento%d eventos%d ignorado(s)%d tarefa%d tarefas%s não existe, criar agora [s ou n]? %s criado com sucesso (Comando usado para notificar usuário de um agendamento próximo)(formato da data a ser exibido no modo não interativo)(Formato da data a ser exibida dentro da barra de notificação)(Formato de horário a ser exibido dentro da barra de notificação)(formato a ser usado ao informar uma data: (Registra atividades quando estiver executando em plano de fundo)(Notifica todos agendamentos ao invés de somente os marcados)(Pressione "^P" ou "^N" para mover para cima ou para baixo, "Q" para sair)(Executa em plano de fundo para pegar notificações depois de sair)(Avisa o usuário se um agendamento ocorrerá nos próximos "notify-bar_warning" segundos)(atualmente usando %s)(d)iária(se não nulo, automaticamente salva os dados a cada "periodic_save" minutos)(se definida como SIM, salvamento automático será feito quando estiver de saída)(se definida como SIM, uma confirmação será necessária antes da exclusão de um evento)(se definida como SIM, uma confirmação será necessária antes de sair)(se definida como SIM, mensagens sobre dados carregados e salvados serão exibidos)(Se definida como SIM, a barra de notificação será exibida)(se definida como SIM, barra de progresso será exibida durante o salvamento dos dados)(m)ensal(executa o coletor de lixo ao sair)(especifica o primeiro dia da semana na visão de calendário)(padrão do terminal)(s)emanal(a)nual+-----------------------------------------+ +1 Dia+1 Mês+1 Semana+1 Ano---------------------------------------- ---==== BLOCO DE MEMÓRIA ====----------- -1 Dia-1 Mês-1 Semana-1 Ano/!\ ERRO INTERNO /!\Adicionar AdicAgendAdicItemAdiTarefaAdiciona um item de tarefa, seja qual for o painel atualmente selecionado.Adiciona um agendamento, seja qual for o painel atualmente selecionado.Adiciona um item para a lista de Tarefas ou de Agendamentos, dependendo de qual painel está selecionado quando você pressiona '%s'. Para entrar um novo item na lista de TAREFAS, você precisa primeiro entrar com a descrição deste novo item. Então, você será solicitado para especificar a prioridade da tarefa. Esta prioridade é representada por um número que vai de 9, como a menor prioridade, até 1, como a maior. Também é possível alterar a prioridade do item posteriormente, usando as teclas '%s' e '%s' dentro do painel de Tarefas. Se o painel de AGENDAMENTOS estiver selecionado quando se pressionar '%s', você poderá entrar com o novo agendamento ou um evento para dia inteiro. Para entrar com um novo evento, pressione [ENTER] ao invés do item de horário de início, e simplesmente preencha a descrição do evento. Para entrar com um novo agendamento a ser adicionado à lista de AGENDAMENTOS, será necessário que você entre sucessivamente com o horário no que o agendamento será iniciado, sua extensão (especificando o horário de término no formato [hh:mm] ou a duração, no formato [+hh:mm], [+xxdxxhxxm] ou [+mm]) e a descrição do evento. O dia em que o evento ou agendamento ocorrerá é o dia atualmente selecionado no calendário. Então, você deve mover para o dia desejado antes de pressionar '%s'. Notas: o se um agendamento durar por tanto tempo que chegar a continuar pelos próximos dias, este evento será indicado em todos os dias correspondentes, e os horários de início ou término serão substituídos por '..' se o evento não iniciar ou terminar no dia. o se você somente pressionar [ENTER] no prompt de descrição do evento de AGENDAMENTO ou TAREFA, sem qualquer descrição, nenhum item será adicionado. o não se esqueça de salvar os dados do calendário para obter o novo evento na próxima vez que você iniciar o Calcurse.Adiciona um item para o painel atualmente selecionado.AdicionarTeclaAgendamento :AgendamentosAbrilArgumento para "-x" deveria ser "ical" ou "pcal" Formato de argumento para -r e --range é: "n" Formato de argumento para -s e --startday é: '%s' Argumento não é válido Argumento para a sinalização "-d" não é válido Anexa (ou edita, se já existir) uma nota ao item atualmente selecionadoAnexa uma nota a qualquer tipo de item, ou edita qualquer nota existente. Este recurso é útil se você não tem espaço suficiente para armazenar toda descrição de seu item, o se você deseja adicionar sub-tarefas para um item de tarefa já existente, por exemplo. Antes de pressionar a tecla "%s", você primeiro precisa realçar o item ao qual você deseja que a nota seja anexada. O editor é escolhido das seguintes formas: o se a variável de ambiente "VISUAL" estiver definida, então este será o editor padrão a ser chamado. o se "VISUAL" não estiver definido, então a variável de ambiente "EDITOR" será usada como o editor padrão. o se nenhuma das variáveis de ambiente acima estiverem definidas, então "/usr/bin/vi" será usado Assim que a nota do item for editada e salvada, saia do seu editor favorito. Então, você voltará para o Calcurse, e o sinal ">" aparecerá na frente do item realçado, significando haver uma nota anexada a ele.AgostoPlano de fundoBloco não encontradoCalcurse %s - organizador baseado em texto Calcurse - Organizador baseado em textoAjuda do CalcurseCalendárioNão é possível utilizar mais de um expressão regular.Cancela a ação em andamento.Não foi possível executar em daemon, abortando Altera a prioridade do item atualmente selecionado na lista de Tarefas. Prioridades são representadas pelo número que aparece na frente da descrição da tarefa. O número vai desde 9 para a menor prioridade até 1 para a maior prioridade. As tarefas que tenham maior prioridade serão posicionadas primeiro (no topo) dentro do painel de Tarefas. Se você desejar aumentar a prioridade de um item de tarefa, você deverá pressionar "%s". Ao fazer isso, o número da prioridade deste item será reduzida, o que significa um aumento na sua prioridade. A posição do item dentro do painel de Tarefas pode mudar, dependendo da prioridade dos itens acima deste. E o contrário, para diminuir a prioridade de uma tarefa, pressione "%s". A posição da tarefa pode também alterar dependendo da prioridade dos demais itens abaixo deste.MudarJanEscolha o arquivo para o qual serão exportados os dados do calcurse:CorConfigConfig Arquivo de configuração não encontrado:CopiarCopiar e Colar Copia e cola o item atualmente selecionado. Isso é útil para rapidamente copiar um item de uma data para outra. Para isso, deve-se primeiro destacar o item que precisa ser copiado e, então, pressionar "%s" para copiar. Assim que a nova data tiver sido escolhida no calendário, o painel de agendamentos deve estar selecionado e a tecla "%s" deve ser pressionado para colar o item. O item vai aparecer o painel de agendamentos, atribuído à data selecionada. Copia o item que está selecionado no momento.Não foi possível acessar "%s": %s Não foi possível alterar o diretório de trabalho: %s Não foi possível compilar expressão regular.Não foi possível desanexar do terminal de controle: %s Não foi possível fazer bifurcação: %s Não foi possível ler o rótulo de teclaNão foi possível excluir arquivo de trava do Calcurse: %s Não foi possível excluir o arquivo de trava do daemon: %s Não foi possível definir arquivo de trava Não foi possível parar o daemon do calcurse: %s Não foi possível parar o daemon corretamente: %s cria backup temporário do arquivo de configuração...Arquivos de dados encontrados. Os dados serão carregados agora.DezembroExclItemExcluirTeclaExcluir Exclui um elemento da lista de Tarefas ou de Agendamentos. Dependendo do painel selecionado, quando você pressionar a tecla de remoção, o item selecionado de tanto a lista de Tarefas quanto de Agendamentos será excluído desta lista. Se o item a ser excluído é recorrente, você será perguntado se você deseja suprimir todas ocorrências deste item ou somente o item que você selecionou. Se a opção geral "confirm_delete" estiver definida para "SIM", a você será solicitada confirmação antes de excluir o evento selecionado. Não esqueça de salvar os dados do calendário para recuperar as modificações na próxima vez que iniciar Calcurse.Exclui o item atualmente selecionado.DescriçãoTeclas de deslocamento Exibe dicas quando algumas telas de ajuda estiverem disponíveis.Exibe o item atualmente selecionado em uma janela pop-up.Tem certeza que deseja excluir este item ?Você realmente deseja excluir esta tarefa ?Tem certeza que deseja sair ?BaixoERRO na configuração do primeiro dia do mêsEditar item EditItemEdita o item atualmente selecionado.Edita o item selecionado. Dependendo do tipo do item (agendamento, evento, ou tarefa), e se ele for repetido ou não, a você será solicitado que escolha uma das propriedades do item a modificar. Uma propriedade de item é uma das seguintes: o horário de início, o horário de término, a descrição, ou a repetição do item. Assim que você escolher a propriedade que você quer modificar, será exibido a você o valor atual, e você poderá alterá-lo como quiser. Notas: o Se você escolher editar as propriedades de repetição do item, a você será solicitado que entre novamente com todas as características de repetição (tipo de repetição, frequência e data do fim). Ademais, a data anterior referente às ocorrências excluídas será perdida. o Não esqueça de salvar os dados do calendário para recuperar as propriedades modificadas na próxima vez que iniciar Calcurse.Editar: EditNotaEditarNota Horário de términoEntre com o número de uma opção para alterar seu valorEntre com a descrição :Entre com a data de término ([hh:mm] ou [hhmm]) ou duração ([+hh:mm], [+xxxdxxhxxm] ou [+mm]) :Entre com novo horário de término ([hh:mm],[hhmm]) ou duração ([+hh:mm], [+xxxdxxhxxm] ou [+mm]) : Entre com a data de início ([hh:mm] ou [hhmm]), ou deixe em branco para dia inteiro:Entre com a prioridade da Tarefa [1 (mais alta) - 9 (mais baixa)]:Entra no menu de configurações.Entre com o formato da data (veja "man 3 strftime" para formatos possíveis) Entre com formato da data: Entre com o dia para ir para [ENTER para hoje] : %sEntre com a distância, em minutos, entre salvamentos (0 = desabilitar) Entre com a data final: [%s] ou "0" para uma repetição sem fimEntre com o nome do arquivo de onde serão importados os dados:Entre com a nova descrição da Tarefa :Entre com o novo item da Tarefa : Entre com a nova data final: [%s] ou '0'Entre com uma descrição para o novo item:Entre com uma nova frequência de repetição:Entre com o novo tipo de repetição:Entre com novo horário ([hh:mm] ou [hhmm]) :Entre com o comando de notificação Entre com o número de segundos (0 para não ser avisado antes do agendamento)Entre com a frequência de repetição:Entre com o tipo da repetição:Entre com o formato do horário (veja "man 3 strftime" para formatos possíveis) Erro na leitura da tecla: "%s"Erro na definição de sinal #%d : %s Erro em fechar arquivo em %sErro: ambos calcurse (pid: %d) e seu daemon (pid: %d) parecem estar em execução simultaneamente! Favor verifique manualmente e reinicie calcurse. Evento :SairSai deste menu, ou sai do calcurse.ExportarExportar Exporta dados do calcurse (agendamentos, eventos e tarefas). Esta opção leva ao submenu de exportação, no qual você pode escolher entre dois formatos diferentes de exportação: 'ical' e 'pcal'. Escolhendo um destes formatos, será exportado dados do calcurse para o formato icalendar ou pcal. Você primeiro precisa especificar o arquivo para o qual o arquivo será exportado. Por padrão, este arquivo será: ~/calcurse.ics para uma exportação em ical, e: ~/calcurse.txt para uma exportação em pcal. Dados de Calcurse são exportados na seguinte ordem: eventos, agendamentos, tarefas. Exporta dados para um novo formato de arquivo.Exportar para o formato (i)cal ou para (p)cal?Exportando...ERRO FATAL: não foi possível criar %s: %s ERRO FATAL: não foi possível criar arquivo de teclas padrões.ERRO FATAL: valor da tecla fora dos limitesERRO FATAL: ponteiro nulo de arquivo.ERRO FATAL: o arquivo de entrada não pode ser acessado. Abortando...ERRO FATAL: modo de importação erradoFalha na criação da mensagem Falha no fechamento de "%s" - %s Falha na abertura de "%s", - %s Falha na exibição da mensagem "%s" FevereiroSinalizar Item SinalItemSinaliza o item atualmente selecionado como importante.Primeiro planoSexGeralTeclas de Atalhos Genéricas IrParaIr para hoje, seja qual for o painel selecionado.Ir para AjudaImportarImportar Importa dados a partir de um arquivo externo.Importa dados de um arquivo icalendar. Você será solicitado a entrar com o nome de arquivo do qual serão carregados itens de ical. No final do processo de importação, e se a opção geral 'system_dialogs' estiver definida como 'yes', um relatório indicando quantos itens foram importados será mostrado. Este relatório conterá o número total de linhas lidas, o número de de agendamentos, eventos e tarefas que foram importados com sucesso, junto com o número de itens que apresentaram problemas e que foram ignorados, se houver algum. Se um ou mais itens não puder ser importados, é possível ler o relatório do processo de importação para que se identifique que problemas ocorreram. Neste relatório é exibido um item por linha, com a linha do fluxo de entrada em que este item começa, junto com a descrição do porquê o item não pôde ser importado. Relatório de processo importação: %04d linhas lidasErro interno enquanto exibia barra de progressoErro interno: linha muito compridaAtraso inválidoHorário de término/duração inválido/a, deveria ser [hh:mm], [hhmm], [+hh:mm], [+xxxdxxhxxm] ou [+mm]Horário inválido: horário de início deve ser antes do horário de término!JaneiroJulhoPula para um dia especificado no calendário. Ao usar este comando, você não precisará viajar até aquele dia usando as teclas de movimentação dentro do painel de calendário. Se você pressionar [ENTER] sem especificar qualquer data, Calcurse verifica a data atual do sistema e você será levado àquela data. Repare que ao pressionar "%s", não importa o painel que esteja selecionado, será selecionado o dia atual no calendário.JunhoInfoTeclaRótulo de tecla não reconhecidaTeclasLayoutEsquerdaCarregando...Reduz a prioridade de uma tarefa no painel de tarefas.Envie relatórios de erros para .\n Envie solicitações de recursos e sugestões para .\n MarçoMaioSegSegunda-feiraMovimenta pelas telas do calcurse. O seguinte esquema resume como funciona a movimentação: move para cima move para semana anterior %s move para esquerda ^ move para dia anterior | %s <-- + --> %s | move para direita v move para dia seguinte %s move para semana seguinte move para baixo Ademais, enquanto dentro do painel de calendário, a tecla "%s" move para o primeiro dia da semana, e a tecla "%s" seleciona o último dia da semana. Move para baixo.Move para o dia seguinte no calendário, seja qual for o painel atualmente selecionado.Move para o mês seguinte no calendário, seja qual for o painel atualmente selecionado.Move para a semana seguinte no calendário, seja qual for o painel atualmente selecionado.Move para o ano seguinte no calendário, seja qual for o painel atualmente selecionado.Move para o dia anterior no calendário, seja qual for o painel atualmente selecionado.Move para o mês anterior no calendário, seja qual for o painel atualmente selecionado.Move para a semana anterior no calendário, seja qual for o painel atualmente selecionado.Move para o ano anterior no calendário, seja qual for o painel atualmente selecionado.Move para a esquerda.Move para a direita.Move para cima. Movimentação: Pressione "%s" ou "%s" para rolar o texto para cima ou para baixo dentro da tela, se necessário. Sair da ajuda: Quando terminar, pressione "%s" para sair da ajuda e e voltar para a tela principal do Calcurse. Tópico de ajuda: Na parte de baixo desta tela você pode ver um painel com diferentes campos, representados por uma letra ou um nome curto. Este painel contém todas as ações disponíveis que você pode realizar quando está usando Calcurse. Ao pressionar uma das letras que aparecem neste painel, será exibido para você uma descrição curta da ação correspondente. Na parte superior-direita da tela de descrição estão indicadas as teclas de atalho definidas pelo usuário que levam a esta ação. Créditos: Pressione "%s" para acessar os créditos.Tecla SeguinteNenhuma corNenhum arquivo de log para ser exibido!Nenhuma nota encontrada NotificaçãoNovembroVisão SegOutubroArquivo de backup antigo encontrado:Arquivo temporário antigo encontrado:Abre os submenus de configuração. A partir deste submenu, você pode selecionar dentre várias cores, layout, notificações e opções em geral, e você pode até mesmo configurar suas teclas de atalhos. O submenu Cor permite que você escolha o tema de cores. O submenu Layout permite que você escolha o layout da tela do Calcurse. Em outras palavras, permite definir onde colocar três painéis diferentes na tela. O submenu de opções gerais, Geral, traz uma tela com opções diferentes, que modificam a forma como Calcurse interage com o usuário. O submenu Notificação permite que você altere as configurações da barra de notificação. O submenu Teclas permite que você defina seus próprios atalhos de teclado. Não esqueça de salvar os dados do calendário para restaurar sua configuração na próxima vez que você carregar Calcurse.Opção "-S" deve ser usada com "-d", "-r", "-s", "-a" ou "-t" OutroCmdOutroCmd ColarCola um item na posição atual.Redirec.Redirecionar Redirecionar o item para comando externo:Redirecia o item selecionado para um programa externo.Redireciona o item selecionado para um programa externo. Pressione a tecla '%s' para redirecionar a entrada de agendamento ou tarefa selecionada para um programa externo. Você será trazido de volta para o calcurse assim que o programa for finalizado. Por favor, reporte o seguinte erro:Possíveis formatos de argumentos são: '%s' ou 'n' Formatos possíveis são [%s] ou "0" para uma repetição sem fimFormatos possíveis são [%s] ou '0' para repetição sem fim.Formato de arquivo de configuração pré-3.0.0 detectado. Favor, atualize com `calcurse-upgrade`.Formato de arquivo de configuração pre-3.0.0 detectado...Pressione [ENTER] para continuarPressione [ENTER] para continuar.Pressione [Enter] para continuarPressione qualquer tecla para continuar...Pressione a tecla que você quer designar para:TeclaAnteriorImprime informações gerais sobre os autores do calcurse, licença, etc.Prio.+Prio.-Prioridade Problemas no acesso do arquivo de dados...Visão AntSairAumenta a prioridade de uma tarefa no painel de tarefas.RedesenharRedesenha a tela do calcurse.Excluir backup temporário...RepetirRepetir Repete um evento ou um agendamento. Primeiro você deve que selecionar o item a ser repetido movendo-o dentro do painel de Agendamentos. Então, ao pressionar "%s" você responderá um conjunto de três perguntas, com as quais você poderá especificar as caraterísticas da repetição: o tipo: você pode escolher entre uma repetição diária, semanal, mensal ou anual pressionando, "D", "W","M" ou "Y", respectivamente. o frequência: indica com qual frequência o item deve se repetir. Por exemplo, se você deseja sempre se lembrar de um aniversário, escolha uma repetição "anual" com uma frequência de "1", o que significa que deve repetir todo ano. Outro exemplo: se você vai ao restaurante a cada dois dias, escolha uma repetição "diária" com frequência de "2". o data final: especifica quando deve parar a repetição do evento ou agendamento selecionado. Para indicar uma repetição sem fim, entre com "0" e o item será repetido para sempre. Notas: o Itens repetidos são marcados com um "*" dentro do painel de Agendamentos, para ser facilmente diferenciável dos não repetidos. o Os comandos "Repetir" e "Excluir" podem ser combinados para para criar configurações complicadas, já que é possível excluir somente uma ocorrência de um item repetido.Repete um itemRepetiçãoDireitaSabSalvarSalvar Salva dados do calcurse.Salva dados do calcurse. Dados serão separados em quatro arquivos diferentes contendo: / ~/.calcurse/conf -> configuração do usuário | (layout, cores, opções gerais) | ~/.calcurse/apts -> dados relacionados a agendamentos | ~/.calcurse/todo -> dados relacionados a lista de tarefas \ ~/.calcurse/keys -> teclas de atalho do usuário No menu Config, você pode escolher salvar os dados do Calcurse automaticamente antes de cada saída.Salvando...Rola a tela para baixo (ex: quando exibindo texto em uma janela pop-up).Rola a tela para cima (ex: quando exibindo texto em uma janela pop-up).SelecionarSeleciona o próximo painel na tela principal do calcurse.Seleciona o dia para ir para.Seleciona o primeiro dia da semana atual quando se está dentro do painel do calendário.Seleciona o item realçado.Seleciona o último dia da semana atual quando se está dentro do painel do calendário.SetembroMostra próximas ações possíveis dentro da barra de status.BarraLateralAlgumas ações não têm teclas de atalho associadas!Alguns item não puderam ser importados. Ver arquivo de log ?Algumas das teclas de atalhos se aplicam a qualquer painel que esteja selecionado. Elas são chamadas teclas de atalhos genéricas. Aqui está a lista de todas as teclas de atalhos genéricas, junto com suas respectivas ações: '%s' : Redesenhar -> redesenha painéis do calcurse, sendo útil se você redimensionar a sua tela de terminal ou quando aparece lixo na visão do calcurse '%s' : AdicAgend -> adiciona um agendamento ou um evento '%s' : AdiTarefa -> adiciona uma tarefa '%s' : -1 Dia -> move para dia anterior '%s' : +1 Dia -> move para dia seguinte '%s' : -1 Semana -> move para semana anterior '%s' : +1 Semana -> move para semana seguinte '%s' : -1 Mês -> move para mês anterior '%s' : +1 Mês -> move para mês seguinte '%s' : -1 Ano -> move para ano anterior '%s' : +1 Ano -> move para ano seguinte '%s' : IrPara hoje -> move para o dia de hoje As teclas '%s' e '%s' são usadas para rolar texto para cima e para baixo quando se está dentro de telas específicas, como, por exemplo, as telas de ajuda. Elas também são usadas quando a tela de calendário está selecionada para se alternar entre as visões disponíveis (visão de calendário mensal ou semanal).Sinto muito, cores não são suportadas em seu terminal (Pressione [Enter] para continuar)Desculpe, a data que foi informou é mais antiga que a data inicial.Horário de inícioDomDomingoAlterna entre painéis. O painel em uso no momento tem a sua borda colorizada. Algumas ações são possíveis somente se o painel correto estiver selecionado. Por exemplo, se você quer adicionar uma tarefa na lista de TAREFAS, você precisa primeiro pressionar a tecla "%s" para que o painel de TAREFAS seja selecionado. Então, você poderá pressionar "%s" para adicionar seu item. Repare como na parte inferior da tela a lista de ações possíveis muda quando se pressiona "%s", de forma que você sempre saberá qual ação pode ser executada no painel selecionado.Alterna entre páginas de ajuda de barra de status. Porque a tela do terminal é muito estreita para exibir todos os comandos disponíveis, você tem que pressionar "%s" para ver o próximo conjunto de comandos junto com suas teclas de atalhos. Assim que se chegar à última página de barra de status, ao se pressionar "%s" mais uma vez levará você de volta para a primeira página.Guia Os arquivos de dados foram salvos com sucessoOs dados foram exportados com sucessoO dia informado não é válido (deveria ser entre 01/01/1902 e 12/31/2037)A data informada não é válida.O arquivo não pode ser acessado. Favor, entra com outro nome de arquivo.A frequência informada não é válida.O arquivo ical parece estar mal-formulada. O fim do item não foi encontrado.Ocorreram erros na leitura de arquivo de chaves, viu arquivos de log ?Esta tela de configuração será usada para alterar a largura da barra lateral, a qual é parte da tela que contém dois painéis: o calendário e, dependendo do layout escolhido, tanto a lista de tarefas quanto a lista de agendamentos. A largura da barra lateral pode ser até 50% da largura total da tela, mas não pode ser menor do que Este item tem uma anotação anexada a ele. Excluir o (i)tem ou somente a (n)ota?Este item possui uma nota anexada a ele. Excluir o (t)odo ou somente sua (n)ota ?Este é um item repetido.Este item é recorrente. Excluir (t)odas ocorrências ou somente (e)esta aqui?Essa tecla está sendo usada por %s, favor escolha outra.Essa tecla não é reconhecida ainda pelo calcurse, favor escolha outra.QuiTarefa :TarefasHojeAlterna estado de sinalização de "importante" de um agendamento ou de "finalizada" de uma tarefa. Se uma tarefa é sinalizada como finalizada, seu número de prioridade será substituído por um sinal "X". Tarefas finalizadas não vão mais aparecer nos dados exportados ou quando se estiver usando a opção de linha de comando "-t" (a não ser que tenha sido especificado "0" como o número de prioridade, caso este em que somente tarefas finalizadas serão exibidas). Se um agendamento é sinalizado como importante, uma exclamação vai aparecer na frente dele e você será avisado quando o horário de início do agendamento se aproximar. Para personalizar a forma de notificação, o submenu de configuração permite que você escolha o comando a ser executado para avisar o usuário de um agendamento próximo e quanto tempo até que ele seja notificado.Erros demais na leitura do arquivo de chaves, abortando...Tente "calcurse -h" para maiores informações. TerOpção indefinida!Cimaatualiza diretivas de configuração...Usage: calcurse [-g|-h|-v] [-an] [-t[num]] [-i] [-x[format]] [-d |] [-s[date]] [-r[range]] [-c] [-D] [-S] [--status] [--read-only] Uso: calcurse-upgrade [-h|-v|--config ]VerVer Vê uma nota que foi previamente anexada a um item (um item que possui uma nota tem um sinal ">" na sua frente). Este comando somente permite que se visualize a note, e não que se edite (para fazê-lo, use o comando "EditNote", pressionando a tecla "%s"). Assim que você tiver realçado um item contendo uma nota anexada, e a tecla "%s" for pressionada, você será levado para um paginador externo para ver aquela nota. O paginador padrão é escolhido das seguintes formas: o se a variávei de ambiente "PAGER" estiver definida, então esta será chamada como visualizador padrão. o Se a variável de ambiente acima não estiver definida, então "/usr/bin/less" será usado Quanto à edição de notas, saia do paginador e você será levado de volta ao Calcurse.Vê o item que você selecionou em tanto no painel de Tarefas quanto de Agendamentos. Isto é útil quando a descrição de um evento é maior do que o espaço disponível para exibi-lo. Se esse for o caso, a descrição será reduzida e seu final será substituído por "...". Para ler a descrição por inteiro, basta pressionar "%s" e uma janela de pop-up aparecerá, contendo o evento completo. Pressione qualquer tecla para fechar a janela pop-up e vá para a tela principal do Calcurse.Vê a nota anexada ao item atualmente selecionado.VerNotaVerNota Aviso: não foi possível criar arquivo temporário de log. Abortando...Aviso: não foi possível apagar o arquivo temporário de log %s. Abortando...Aviso: não foi possível abrir %s. Abortando...Aviso: não foi possível abrir o arquivo temporário de log. Abortando...Aviso: cabeçalho ical mal-formulado ou número de versão errado. Abortando...QuaBem-vindo ao Calcurse. Arquivos de dados não encontrados foram criados.Quando adicionava tecla padrão para "%s", "%s" já foi designada!Largura +Largura -Com esse menu de configuração, o usuário pode escolher onde os painéis serão exibidos dentro da tela do calcurse. É possível escolher entre oito configurações diferentes. Nas representações de configuração, letras correspondem a: "c" -> painel de Calendário "a" -> painel de Agendamentos "t" -> painel de Tarefas Você entrou com um horário de início inválida - deveria ser [hh:mm] ou [hhmm]Você entrou com horário inválido, deveria ser [hh:mm] ou [hhmm][te][dsma][in][ip][tn][sn]abortando... agendamento não tem hora de início.agendamento não encontradoAcordou em %s IniSemanabloco parece já estar livre em %scalcurse não está em execução calcurse está em execução (pid %d) calcurse está em execução em plano de fundo (pid %d) Tema de Cortarefas finalizadas: variável de configuração desconhecida: "%s"final de bloco corrompido em %s, (final = %u, deveria ser %d)cabeçalho do bloco corrompido em %snão foi possível alocar memória para armazenar informação do bloconão foi possível computar duração (falta hora de término).Não foi possível converter stringnão foi possível adquirir a descrição completa do item.não foi possível adquirir hora de término do evento.não foi possível adquirir hora de início do evento.não foi possível adquirir sumário do itemerro de data no agendamentoerro na data em eventoerro de data no evento dbg_free: ponteiro nulo em %sdd/mm/yyyydescrição mal-formulada.feitoFimSemanaerro no mktimeerro no carregamento do agendamento seguinte erro durante o lançamento do comandoerro durante o lançamento do comando: não foi possível realizar forkErro no envio de notificação data de evento não está definida.evento não encontradofalha na abertura do arquivo de agendamentofalha na abertura do arquivo de configuraçãofalha na abertura do arquivo de teclasfalha na abertura do arquivo de tarefasfalha no mktimeOpções Gerais(se definida como SIM, salvamento automático será feito quando estiver de saída)diretiva de configuração inválida: "%s"item não pôde ser identificado.duração de item mal-formulada.item tem uma duração negativa.prioridade de item não é aceitável (deve ser entre 1 e 9).atalhos: %sConfiguração das TeclasIniciando notificação em %s para : "%s" Configuração de layoutmm/dd/yyyypróximo agendamento: nãonenhum evento nem agendamento encontradonenhuma nota anexadaagendamento inexistentetarefa inexistentetipo inexistenteopções de notificaçãoponteiro nuloopção não definidamemória insuficientefora de alcanceestouro de capacidade em %sExceção de datas de recorrência mal-formulada.frequência de recorrência não encontrada.frequência de recorrência não reconhecida.regra de recorrência mal-formulada.Dormir em %s por %d segundo Dormir em %s por %d segundos Iniciado em %s iniciando modo interativo... erro de sintaxe no item dataerro de sintaxe no identificador do itemerro de sintaxe na repetição do item erro de sintaxe no horário ou duração do itemerro de sintaxe no item dataarquivo temporário "%s" não pôde ser criadoTerminado em %s com sinal %d tarefa: tarefa não encontradaindefinidacaractere desconhecidocor desconhecidatipo de exportação desconhecidotipo de ical desconhecidotipo de importação desconhecidatipo de item desconhecidopainel desconhecidotipo de repetição desconhecidatipo desconhecidoopção não reconhecida:formato incorreto de variável de configuração para "%s"modo de exportação erradoformato errado no agendamento ou eventotipo de item erradoxcalloc: sem memóriaxcalloc: estouro de capacidadexcalloc: tamanho zeroxfree: ponteiro nuloxmalloc: sem memóriaxmalloc: tamanho zeroxrealloc: sem memóriaxrealloc: estouro de capacidadexrealloc: tamanho zerosimyyyy-mm-ddyyyy/mm/dd| relatório de uso de memória do calcurse | calcurse-3.1.4/po/en.po0000644000175000001440000021266412105444503011626 00000000000000# English/GB translation of calcurse. # Copyright (C) 2006 Copyright (c) Frederic Culot # This file is distributed under the same license as the calcurse package. # Neil Williams , 2006. # , fuzzy # # msgid "" msgstr "" "Project-Id-Version: calcurse 1.4\n" "Report-Msgid-Bugs-To: bugs@calcurse.org\n" "POT-Creation-Date: 2013-02-09 14:04+0100\n" "PO-Revision-Date: 2006-07-03 00:05+0100\n" "Last-Translator: Neil Williams \n" "Language-Team: English/GB \n" "Language: en\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" msgid "null pointer" msgstr "" #, fuzzy msgid "date error in appointment" msgstr "Appointment :" #, fuzzy msgid "no such appointment" msgstr "Appointment :" #, fuzzy msgid "" "Usage: calcurse [-g|-h|-v] [-an] [-t[num]] [-i] [-x[format]]\n" " [-d |] [-s[date]] [-r[range]]\n" " [-c] [-D] [-S] [--status]\n" " [--read-only]\n" msgstr "Usage: calcurse [-h | -v] [-at] [-d date|num] [-c file]\n" msgid "Try 'calcurse -h' for more information.\n" msgstr "Try 'calcurse -h' for more information.\n" #, fuzzy msgid "" "\n" "Copyright (c) 2004-2013 calcurse Development Team.\n" "This is free software; see the source for copying conditions.\n" msgstr "" "\n" "Copyright (c) 2004-2006 Frederic Culot.\n" "This is free software; see the source for copying conditions.\n" #, c-format msgid "Calcurse %s - text-based organizer\n" msgstr "Calcurse %s - text-based organizer\n" msgid "" "\n" "For more information, type '?' from within Calcurse, or read the manpage.\n" msgstr "" "\n" "For more information, type '?' from within Calcurse, or read the manpage.\n" #, fuzzy msgid "Mail feature requests and suggestions to .\n" msgstr "Mail bug reports and suggestions to .\n" #, fuzzy msgid "Mail bug reports to .\n" msgstr "Mail bug reports and suggestions to .\n" #, fuzzy msgid "" "\n" "Miscellaneous:\n" " -h, --help\n" "\tprint this help and exit.\n" "\n" " -v, --version\n" "\tprint calcurse version and exit.\n" "\n" " --status\n" "\tdisplay the status of running instances of calcurse.\n" "\n" " --read-only\n" "\tDon't save configuration nor appointments/todos. Use with care.\n" "\n" "Files:\n" " -c , --calendar \n" "\tspecify the calendar to use (has precedence over '-D').\n" "\n" " -D , --directory \n" "\tspecify the data directory to use.\n" "\tIf not specified, the default directory is ~/.calcurse\n" "\n" "Non-interactive:\n" " -a, --appointment\n" " \tprint events and appointments for current day and exit.\n" "\n" " -d , --day \n" "\tprint events and appointments for or upcoming days and\n" "\texit. To specify both a starting date and a range, use the\n" "\t'--startday' and the '--range' option.\n" "\n" " -g, --gc\n" "\trun the garbage collector for note files and exit. \n" "\n" " -i , --import \n" "\timport the icalendar data contained in . \n" "\n" " -n, --next\n" "\tprint next appointment within upcoming 24 hours and exit. Also given\n" "\tis the remaining time before this next appointment.\n" "\n" " -r[num], --range[=num]\n" "\tprint events and appointments for the [num] number of days\n" "\tand exit. If no [num] is given, a range of 1 day is considered.\n" "\n" " -s[date], --startday[=date]\n" "\tprint events and appointments from [date] and exit.\n" "\tIf no [date] is given, the current day is considered.\n" "\n" " -S, --search=\n" "\tsearch for the given regular expression within events, appointments,\n" "\tand todos description.\n" "\n" " -t[num], --todo[=num]\n" "\tprint todo list and exit. If the optional number [num] is given,\n" "\tthen only todos having a priority equal to [num] will be returned.\n" "\tThe priority number must be between 1 (highest) and 9 (lowest).\n" "\tIt is also possible to specify '0' for the priority, in which case\n" "\tonly completed tasks will be shown.\n" "\n" " -x[format], --export[=format]\n" "\texport user data to the specified format. Events, appointments and\n" "\ttodos are converted and echoed to stdout.\n" "\tTwo possible formats are available: 'ical' and 'pcal'.\n" "\tIf the optional argument format is not given, ical format is\n" "\tselected by default.\n" "\tnote: redirect standard output to export data to a file,\n" "\tby issuing a command such as: calcurse --export > calcurse.dat\n" msgstr "" "\n" "Miscellaneous:\n" " -h\t\tprint this help and exit.\n" " -v\t\tprint calcurse version and exit.\n" "\n" "Options:\n" " -c \tspecify the calendar to use.\n" "\n" "Non-interactive:\n" " -a \t\tprint events and appointments for current day and exit.\n" " -d \tprint events and appointments for or upcoming\n" "\t\tdays and exit.\n" " -t\t\tprint todo list and exit.\n" "\n" "For more information, type '?' from within Calcurse, or read the manpage.\n" "Mail bug reports and suggestions to .\n" #, c-format msgid "" "Error: both calcurse (pid: %d) and its daemon (pid: %d)\n" "seem to be running at the same time!\n" "Please check manually and restart calcurse.\n" msgstr "" #, c-format msgid "calcurse is running (pid %d)\n" msgstr "" #, c-format msgid "calcurse is running in background (pid %d)\n" msgstr "" msgid "calcurse is not running\n" msgstr "" msgid "to do:\n" msgstr "to do:\n" msgid "completed tasks:\n" msgstr "" #, fuzzy msgid "next appointment:\n" msgstr "Appointment :" msgid "Argument to the '-d' flag is not valid\n" msgstr "Argument to the '-d' flag is not valid\n" #, fuzzy, c-format msgid "Possible argument format are: '%s' or 'n'\n" msgstr "Possible argument formats are : 'mm/dd/yyyy' or 'n'\n" #, fuzzy msgid "Argument is not valid\n" msgstr "Argument to the '-d' flag is not valid\n" #, c-format msgid "Argument format for -s and --startday is: '%s'\n" msgstr "" msgid "Argument format for -r and --range is: 'n'\n" msgstr "" msgid "Can not handle more than one regular expression." msgstr "" msgid "Could not compile regular expression." msgstr "" msgid "Argument for '-x' should be either 'ical' or 'pcal'\n" msgstr "" msgid "Option '-S' must be used with either '-d', '-r', '-s', '-a' or '-t'\n" msgstr "" msgid "To do :" msgstr "To do :" msgid "Export to (i)cal or (p)cal format?" msgstr "" msgid "[ip]" msgstr "" msgid "Do you really want to quit ?" msgstr "Do you really want to quit ?" msgid "ERROR setting first day of week" msgstr "" msgid "" "The day you entered is not valid (should be between 01/01/1902 and " "12/31/2037)" msgstr "" msgid "Press [ENTER] to continue" msgstr "Press [ENTER] to continue" #, fuzzy, c-format msgid "Enter the day to go to [ENTER for today] : %s" msgstr "Enter the day to go to [ENTER for today] : dd/mm/yyyy" #, fuzzy msgid "unknown color" msgstr "Colour" #, fuzzy msgid "failed to open configuration file" msgstr "Failed to open config file" #, c-format msgid "invalid configuration directive: \"%s\"" msgstr "" msgid "" "Pre-3.0.0 configuration file format detected, please upgrade running " "`calcurse-upgrade`." msgstr "" #, fuzzy, c-format msgid "configuration variable unknown: \"%s\"" msgstr "FATAL ERROR in fill_config_var: wrong configuration variable format.\n" #, fuzzy, c-format msgid "wrong configuration variable format for \"%s\"" msgstr "FATAL ERROR in fill_config_var: wrong configuration variable format.\n" msgid "Exit" msgstr "Exit" msgid "General" msgstr "General" msgid "Layout" msgstr "Layout" msgid "Sidebar" msgstr "" msgid "Color" msgstr "Colour" msgid "Notify" msgstr "" msgid "Keys" msgstr "" msgid "Select" msgstr "" msgid "Up" msgstr "" #, fuzzy msgid "Down" msgstr "Up/Down" msgid "Left" msgstr "" msgid "Right" msgstr "" msgid "Help" msgstr "Help" #, fuzzy msgid "layout configuration" msgstr "CalCurse %s | general options" msgid "" "With this configuration menu, one can choose where panels will be\n" "displayed inside calcurse screen. \n" "It is possible to choose between eight different configurations.\n" "\n" "In the configuration representations, letters correspond to:\n" "\n" " 'c' -> calendar panel\n" "\n" " 'a' -> appointment panel\n" "\n" " 't' -> todo panel\n" "\n" msgstr "" msgid "Width +" msgstr "" msgid "Width -" msgstr "" #, no-c-format msgid "" "This configuration screen is used to change the width of the side bar.\n" "The side bar is the part of the screen which contains two panels:\n" "the calendar and, depending on the chosen layout, either the todo list\n" "or the appointment list.\n" "\n" "The side bar width can be up to 50% of the total screen width, but\n" "can't be smaller than " msgstr "" #, fuzzy msgid "No color" msgstr "Colour" msgid "Foreground" msgstr "" msgid "Background" msgstr "" msgid "(terminal's default)" msgstr "" #, fuzzy msgid "color theme" msgstr "CalCurse %s | help" msgid "(if set to YES, automatic save is done when quitting)" msgstr "(if set to YES, automatic save is done when quitting)" msgid "(run the garbage collector when quitting)" msgstr "" msgid "(if not null, automatically save data every 'periodic_save' minutes)" msgstr "" msgid "(if set to YES, confirmation is required before quitting)" msgstr "(if set to YES, confirmation is required before quitting)" msgid "(if set to YES, confirmation is required before deleting an event)" msgstr "(if set to YES, confirmation is required before deleting an event)" #, fuzzy msgid "(if set to YES, messages about loaded and saved data will be displayed)" msgstr "" "(if set to YES, messages about loaded and saved data will not be displayed)" #, fuzzy msgid "(if set to YES, progress bar will be displayed when saving data)" msgstr "(if set to YES, progress bar will not be displayed when saving data)" msgid "Monday" msgstr "" msgid "Sunday" msgstr "" msgid "(specifies the first day of week in the calendar view)" msgstr "" msgid "(Format of the date to be displayed in non-interactive mode)" msgstr "" msgid "(Format to be used when entering a date: " msgstr "" #, fuzzy msgid "Enter an option number to change its value" msgstr "Enter an option number to change its value [Q to quit] " msgid "(Press '^P' or '^N' to move up or down, 'Q' to quit)" msgstr "" msgid "Enter the date format (see 'man 3 strftime' for possible formats) " msgstr "" #, fuzzy msgid "Enter the date format: " msgstr "Enter the new ToDo item : " msgid "Enter the delay, in minutes, between automatic saves (0 to disable) " msgstr "" #, fuzzy msgid "general options" msgstr "CalCurse %s | general options" msgid "Undefined option!" msgstr "" msgid "undefined" msgstr "" msgid "Key info" msgstr "" #, fuzzy msgid "Add key" msgstr "Add Item" #, fuzzy msgid "Del key" msgstr "Del Item" msgid "Prev Key" msgstr "" msgid "Next Key" msgstr "" #, fuzzy msgid "keys configuration" msgstr "CalCurse %s | general options" msgid "Press the key you want to assign to:" msgstr "" msgid "This key is not yet recognized by calcurse, please choose another one." msgstr "" #, c-format msgid "This key is already in use for %s, please choose another one." msgstr "" msgid "Some actions do not have any associated key bindings!" msgstr "" msgid "" "Sorry, colors are not supported by your terminal\n" "(Press [ENTER] to continue)" msgstr "" "Sorry, colours are not supported by your terminal\n" "(Press [ENTER] to continue)" msgid "unknown item type" msgstr "" msgid "Event :" msgstr "Event :" msgid "Appointment :" msgstr "Appointment :" #, fuzzy msgid "unknwon type" msgstr "FATAL ERROR in todo_delete_bynum: no such todo\n" #, fuzzy, c-format msgid "Could not stop daemon properly: %s\n" msgstr "Enter description :" #, c-format msgid "terminated at %s with signal %d\n" msgstr "" #, fuzzy, c-format msgid "Could not remove daemon lock file: %s\n" msgstr "Enter description :" #, fuzzy, c-format msgid "Could not fork: %s\n" msgstr "Enter description :" #, c-format msgid "Could not detach from the controlling terminal: %s\n" msgstr "" #, fuzzy, c-format msgid "Could not change working directory: %s\n" msgstr "Enter description :" msgid "Cannot daemonize, aborting\n" msgstr "" #, fuzzy msgid "Could not set lock file\n" msgstr "Enter description :" #, fuzzy, c-format msgid "Could not access \"%s\": %s\n" msgstr "FATAL ERROR in todo_delete_bynum: no such todo\n" #, c-format msgid "started at %s\n" msgstr "" #, fuzzy msgid "error loading next appointment\n" msgstr "Appointment :" #, c-format msgid "launching notification at %s for: \"%s\"\n" msgstr "" msgid "error while sending notification\n" msgstr "" #, c-format msgid "sleeping at %s for %d second\n" msgid_plural "sleeping at %s for %d seconds\n" msgstr[0] "" msgstr[1] "" #, c-format msgid "awakened at %s\n" msgstr "" #, fuzzy, c-format msgid "Could not stop calcurse daemon: %s\n" msgstr "Enter description :" #, fuzzy msgid "date error in the event\n" msgstr "FATAL ERROR in event_scan: date error in the event\n" msgid "Internal error: line too long" msgstr "" msgid "out of memory" msgstr "" #, c-format msgid "key bindings: %s" msgstr "" #, fuzzy msgid "Calcurse help" msgstr "CalCurse %s | help" msgid " Welcome to Calcurse. This is the main help screen.\n" msgstr " Welcome to Calcurse. This is the main help screen.\n" #, fuzzy, c-format msgid "" "Moving around: Press '%s' or '%s' to scroll text upward or downward\n" " inside help screens, if necessary.\n" "\n" " Exit help: When finished, press '%s' to exit help and go back to\n" " the main Calcurse screen.\n" "\n" " Help topic: At the bottom of this screen you can see a panel with\n" " different fields, represented by a letter and a short\n" " title. This panel contains all the available actions\n" " you can perform when using Calcurse.\n" " By pressing one of the letters appearing in this\n" " panel, you will be shown a short description of the\n" " corresponding action. At the top right side of the\n" " description screen are indicated the user-defined key\n" " bindings that lead to the action.\n" "\n" " Credits: Press '%s' for credits." msgstr "" " Moving around: Press CTRL-P or CTRL-N to scroll text upward or\n" " downward inside help screens, if necessary.\n" "\n" " Exit help: When finished, press 'Q' to exit help and go back\n" " to the main Calcurse screen.\n" "\n" " Help topic: At the bottom of this screen you can see a panel\n" " with different fields, represented by a letter and\n" " a short title. This panel contains all the available\n" " actions you can perform when using Calcurse.\n" " By pressing one of the letters appearing in this\n" " panel, you will be shown a short description of the\n" " corresponding action.\n" "\n" " Credits: Press '@' for credits." #, fuzzy msgid "Save\n" msgstr "Save:\n" #, fuzzy, c-format msgid "" "Save calcurse data.\n" "Data are splitted into four different files which contain :\n" "\n" " / ~/.calcurse/conf -> user configuration\n" " | (layout, color, general options)\n" " | ~/.calcurse/apts -> data related to the appointments\n" " | ~/.calcurse/todo -> data related to the todo list\n" " \\ ~/.calcurse/keys -> user-defined key bindings\n" "\n" "In the config menu, you can choose to save the Calcurse data\n" "automatically before quitting." msgstr "" "Pressing 'S' saves the Calcurse data.\n" "\n" "The data is splitted into three different files which contains :\n" "\n" " / ~/.calcurse/conf -> the user configuration\n" " | (layout, colour, general options)\n" " | ~/.calcurse/apts -> the data related to the appointments\n" " \\ ~/.calcurse/todo -> the data related to the todo list\n" "\n" "In the config menu, you can choose to save the Calcurse data\n" "automatically before quitting." msgid "Import\n" msgstr "" #, c-format msgid "" "Import data from an icalendar file.\n" "You will be asked to enter the file name from which to load ical\n" "items. At the end of the import process, and if the general option\n" "'system_dialogs' is set to 'yes', a report indicating how many items\n" "were imported is shown.\n" "This report contains the total number of lines read, the number of\n" "appointments, events and todo items which were successfully imported,\n" "together with the number of items for which problems occured and that\n" "were skipped, if any.\n" "\n" "If one or more items could not be imported, one has the possibility to\n" "read the import process report in order to identify which problems\n" "occured.\n" "In this report is shown one item per line, with the line in the input\n" "stream at which this item begins, together with the description of why\n" "the item could not be imported.\n" msgstr "" #, fuzzy msgid "Export\n" msgstr "aborting...\n" #, c-format msgid "" "Export calcurse data (appointments, events and todos).\n" "This leads to the export submenu, from which you can choose between\n" "two different export formats: 'ical' and 'pcal'. Choosing one of\n" "those formats lets you export calcurse data to icalendar or pcal\n" "format.\n" "\n" "You first need to specify the file to which the data will be exported.\n" "By default, this file is:\n" "\n" " ~/calcurse.ics\n" "\n" "for an ical export, and:\n" "\n" " ~/calcurse.txt\n" "\n" "for a pcal export.\n" "\n" "Calcurse data are exported in the following order:\n" " events, appointments, todos.\n" msgstr "" #, fuzzy msgid "Displacement keys\n" msgstr "Displacement keys:\n" #, c-format msgid "" "Move around inside calcurse screens.\n" "The following scheme summarizes how to get around:\n" "\n" " move up\n" " move to previous week\n" "\n" " %s\n" " move left ^ \n" " move to previous day |\n" " %s\n" " <-- + -->\n" " %s\n" " | move right\n" " v move to next day\n" " %s\n" "\n" " move to next week\n" " move down\n" "\n" "Moreover, while inside the calendar panel, the '%s' key moves\n" "to the first day of the week, and the '%s' key selects the last day of\n" "the week.\n" msgstr "" #, fuzzy msgid "View\n" msgstr "View:\n" #, fuzzy, c-format msgid "" "View the item you select in either the Todo or Appointment panel.\n" "\n" "This is usefull when an event description is longer than the available\n" "space to display it. If that is the case, the description will be\n" "shortened and its end replaced by '...'. To be able to read the entire\n" "description, just press '%s' and a popup window will appear, containing\n" "the whole event.\n" "\n" "Press any key to close the popup window and go back to the main\n" "Calcurse screen." msgstr "" "Pressing 'V' allows you to view the item you select in either the ToDo\n" "or Appointment panel.\n" "\n" "This is usefull when an event description is longer than the available\n" "space to display it. If that is the case, the description will be\n" "shortened and its end replaced by '...'. To be able to read the entire\n" "description, just press 'V' and a popup window will appear, containing\n" "the whole event.\n" "\n" "Press any key to close the popup window and go back to the main\n" "Calcurse screen." msgid "Pipe\n" msgstr "" #, c-format msgid "" "Pipe the selected item to an external program.\n" "\n" "Press the '%s' key to pipe the currently selected appointment or\n" "todo entry to an external program.\n" "\n" "You will be driven back to calcurse as soon as the program exits.\n" msgstr "" #, fuzzy msgid "Tab\n" msgstr "Tab:\n" #, fuzzy, c-format msgid "" "Switch between panels.\n" "The panel currently in use has its border colorized.\n" "\n" "Some actions are possible only if the right panel is selected.\n" "For example, if you want to add a task in the TODO list, you need first\n" "to press the '%s' key to get the TODO panel selected. Then you can\n" "press '%s' to add your item.\n" "\n" "Notice that at the bottom of the screen the list of possible actions\n" "change while pressing '%s', so you always know what action can be\n" "performed on the selected panel." msgstr "" "Pressing 'Tab' allows you to switch between panels.\n" "The panel currently in use has its border in colour.\n" "\n" "Some actions are possible only if the right panel is selected.\n" "For example, if you want to add a task in the TODO list, you need first\n" "to press the 'Tab' key to get the TODO panel selected. Then you can\n" "press 'A' to add your item.\n" "\n" "Notice that at the bottom of the screen the list of possible actions\n" "change while pressing 'Tab', so you always know what action can be\n" "performed on the selected panel." #, fuzzy msgid "Goto\n" msgstr "Goto:\n" #, fuzzy, c-format msgid "" "Jump to a specific day in the calendar.\n" "\n" "Using this command, you do not need to travel to that day using\n" "the displacement keys inside the calendar panel.\n" "If you hit [ENTER] without specifying any date, Calcurse checks the\n" "system current date and you will be taken to that date.\n" "\n" "Notice that pressing '%s', whatever panel is\n" "selected, will select current day in the calendar." msgstr "" "Pressing 'G' allows you to jump to a specific day in the calendar.\n" "\n" "Using this command, you do not need to travel to that day using\n" "the displacement keys inside the calendar panel.\n" "If you hit [ENTER] without specifying any date, Calcurse checks the\n" "system current date and you will be taken to that date." #, fuzzy msgid "Delete\n" msgstr "Delete:\n" #, fuzzy, c-format msgid "" "Delete an element in the ToDo or Appointment list.\n" "\n" "Depending on which panel is selected when you press the delete key,\n" "the hilighted item of either the ToDo or Appointment list will be \n" "removed from this list.\n" "\n" "If the item to be deleted is recurrent, you will be asked if you\n" "wish to suppress all of the item occurences or just the one you\n" "selected.\n" "\n" "If the general option 'confirm_delete' is set to 'YES', then you will\n" "be asked for confirmation before deleting the selected event.\n" "Do not forget to save the calendar data to retrieve the modifications\n" "next time you launch Calcurse." msgstr "" "Pressing 'D' deletes an element in the ToDo or Appointment list.\n" "\n" "Depending on which panel is selected when you press the delete key,\n" "the highlighted item of either the ToDo or Appointment list will be \n" "removed from this list.\n" "\n" "If the general option 'confirm_delete' is set to 'YES', then you will\n" "be asked for confirmation before deleting the selected event.\n" "Do not forget to save the calendar data to retrieve the modifications\n" "next time you launch Calcurse." #, fuzzy msgid "Add\n" msgstr "Add:\n" #, fuzzy, c-format msgid "" "Add an item in either the ToDo or Appointment list, depending on which\n" "panel is selected when you press '%s'.\n" "\n" "To enter a new item in the TODO list, you will need first to enter the\n" "description of this new item. Then you will be asked to specify the todo\n" "priority. This priority is represented by a number going from 9 for the\n" "lowest priority, to 1 for the highest one. It is still possible to\n" "change the item priority afterwards, by using the '%s' and '%s' keys\n" "inside the todo panel.\n" "\n" "If the APPOINTMENT panel is selected while pressing '%s', you will be\n" "able to enter either a new appointment or a new all-day long event.\n" "To enter a new event, press [ENTER] instead of the item start time, and\n" "just fill in the event description.\n" "To enter a new appointment to be added in the APPOINTMENT list, you\n" "will need to enter successively the time at which the appointment\n" "begins, the appointment length (either by specifying the end time in\n" "[hh:mm] or the duration in [+hh:mm], [+xxdxxhxxm] or [+mm] format), \n" "and the description of the event.\n" "\n" "The day at which occurs the event or appointment is the day currently\n" "selected in the calendar, so you need to move to the desired day before\n" "pressing '%s'.\n" "\n" "Notes:\n" " o if an appointment lasts for such a long time that it continues\n" " on the next days, this event will be indicated on all the\n" " corresponding days, and the beginning or ending hour will be\n" " replaced by '..' if the event does not begin or end on the day.\n" " o if you only press [ENTER] at the APPOINTMENT or TODO event\n" " description prompt, without any description, no item will be\n" " added.\n" " o do not forget to save the calendar data to retrieve the new\n" " event next time you launch Calcurse." msgstr "" "Pressing 'A' allows you to add an item in either the ToDo or Appointment\n" "list, depending on which panel is selected when you press 'A'.\n" "\n" "To enter a new item in the TODO list, you only need to enter the\n" "description of this new item.\n" "\n" "If the APPOINTMENT panel is selected while pressing 'A', you will be\n" "able to enter either a new appointment or a new all-day long event.\n" "To enter a new event, press [ENTER] instead of the item start time, and\n" "just fill in the event description.\n" "To enter a new appointment to be added in the APPOINTMENT list, you\n" "will need to enter successively the time at which the appointment\n" "begins, the appointment length (either by specifying the duration in\n" "minutes, or the end time in [hh:mm] or [h:mm] format), and the\n" "description of the event.\n" "\n" "The day at which occurs the event or appointment is the day currently\n" "selected in the calendar, so you need to move to the desired day before\n" "pressing 'A'.\n" "\n" "Notes:\n" " o if an appointment lasts for such a long time that it continues\n" " into the next days, this event will be indicated on all the\n" " corresponding days, and the beginning or ending hour will be\n" " replaced by '..' if the event does not begin or end on the day.\n" " o if you only press [ENTER] at the APPOINTMENT or TODO event\n" " description prompt, without any description, no item will be\n" " added.\n" " o do not forget to save the calendar data to retrieve the new\n" " event next time you launch Calcurse." msgid "Copy and Paste\n" msgstr "" #, c-format msgid "" "Copy and paste the currently selected item. This is useful to quickly\n" "copy an item from one date to another. To do so, one must first\n" "highlight the item that needs to be copied, then press '%s' to copy.\n" "Once the new date is chosen in the calendar, the appointment panel must\n" "be selected and the '%s' key must be pressed to paste the item. The item\n" "will appear in the appointment panel, assigned to the newly selected\n" "date.\n" "\n" msgstr "" #, fuzzy msgid "Edit Item\n" msgstr "Add Item" #, c-format msgid "" "Edit the item which is currently selected.\n" "Depending on the item type (appointment, event, or todo), and if it is\n" "repeated or not, you will be asked to choose one of the item properties\n" "to modify. An item property is one of the following: the start time, the\n" "end time, the description, or the item repetition.\n" "Once you have chosen the property you want to modify, you will be shown\n" "its actual value, and you will be able to change it as you like.\n" "\n" "Notes:\n" " o if you choose to edit the item repetition properties, you will\n" " be asked to re-enter all of the repetition characteristics\n" " (repetition type, frequence, and ending date). Moreover, the\n" " previous data concerning the deleted occurences will be lost.\n" " o do not forget to save the calendar data to retrieve the\n" " modified properties next time you launch Calcurse." msgstr "" #, fuzzy msgid "EditNote\n" msgstr "Add Item" #, c-format msgid "" "Attach a note to any type of item, or edit an already existing note.\n" "This feature is useful if you do not have enough space to store all\n" "of your item description, or if you would like to add sub-tasks to an\n" "already existing todo item for example.\n" "Before pressing the '%s' key, you first need to highlight the item you\n" "want the note to be attached to. Then you will be driven to an\n" "external editor to edit your note. This editor is chosen the following\n" "way:\n" " o if the 'VISUAL' environment variable is set, then this will be\n" " the default editor to be called.\n" " o if 'VISUAL' is not set, then the 'EDITOR' environment variable\n" " will be used as the default editor.\n" " o if none of the above environment variables is set, then\n" " '/usr/bin/vi' will be used.\n" "\n" "Once the item note is edited and saved, quit your favorite editor.\n" "You will then go back to Calcurse, and the '>' sign will appear in front\n" "of the highlighted item, meaning there is a note attached to it." msgstr "" #, fuzzy msgid "ViewNote\n" msgstr "View:\n" #, c-format msgid "" "View a note which was previously attached to an item (an item which\n" "owns a note has a '>' sign in front of it).\n" "This command only permits to view the note, not to edit it (to do so,\n" "use the 'EditNote' command, by pressing the '%s' key).\n" "Once you highlighted an item with a note attached to it, and the '%s' key\n" "was pressed, you will be driven to an external pager to view that note.\n" "The default pager is chosen the following way:\n" " o if the 'PAGER' environment variable is set, then this will be\n" " the default viewer to be called.\n" " o if the above environment variable is not set, then\n" " '/usr/bin/less' will be used.\n" "As for editing a note, quit the pager and you will be driven back to\n" "Calcurse." msgstr "" msgid "Priority\n" msgstr "" #, c-format msgid "" "Change the priority of the currently selected item in the ToDo list.\n" "Priorities are represented by the number appearing in front of the\n" "todo description. This number goes from 9 for the lowest priority to\n" "1 for the highest priority.\n" "Todo having higher priorities are placed first (at the top) inside the\n" "todo panel.\n" "\n" "If you want to raise the priority of a todo item, you need to press '%s'.\n" "In doing so, the number in front of this item will decrease, meaning its\n" "priority increases. The item position inside the todo panel may change,\n" "depending on the priority of the items above it.\n" "\n" "At the opposite, to lower a todo priority, press '%s'. The todo position\n" "may also change depending on the priority of the items below." msgstr "" #, fuzzy msgid "Repeat\n" msgstr "Redraw:\n" #, c-format msgid "" "Repeat an event or an appointment.\n" "You must first select the item to be repeated by moving inside the\n" "appointment panel. Then pressing '%s' will lead you to a set of three\n" "questions, with which you will be able to specify the repetition\n" "characteristics:\n" "\n" " o type: you can choose between a daily, weekly, monthly or\n" " yearly repetition by pressing 'D', 'W', 'M' or 'Y'\n" " respectively.\n" "\n" " o frequence: this indicates how often the item shall be repeated.\n" " For example, if you want to remember an anniversary,\n" " choose a 'yearly' repetition with a frequence of '1',\n" " which means it must be repeated every year. Another\n" " example: if you go to the restaurant every two days,\n" " choose a 'daily' repetition with a frequence of '2'.\n" "\n" " o ending date: this specifies when to stop repeating the selected\n" " event or appointment. To indicate an endless \n" " repetition, enter '0' and the item will be repeated\n" " forever.\n" "\n" "Notes:\n" " o repeated items are marked with an '*' inside the appointment\n" " panel, to be easily recognizable from non-repeated ones.\n" " o the 'Repeat' and 'Delete' command can be mixed to create\n" " complicated configurations, as it is possible to delete only\n" " one occurence of a repeated item." msgstr "" #, fuzzy msgid "Flag Item\n" msgstr "Add Item" #, c-format msgid "" "Toggle an appointment's 'important' flag or a todo's 'completed' flag.\n" "If a todo is flagged as completed, its priority number will be replaced\n" "by an 'X' sign. Completed tasks will no longer appear in exported data\n" "or when using the '-t' command line flag (unless specifying '0' as the\n" "priority number, in which case only completed tasks will be shown).\n" "\n" "If an appointment is flagged as important, an exclamation mark appears\n" "in front of it, and you will be warned if time gets closed to the\n" "appointment start time.\n" "To customize the way one gets notified, the configuration submenu lets\n" "you choose the command launched to warn user of an upcoming appointment,\n" "and how long before it he gets notified." msgstr "" #, fuzzy msgid "Config\n" msgstr "Config:\n" #, fuzzy, c-format msgid "" "Open the configuration submenu.\n" "From this submenu, you can select between color, layout, notification\n" "and general options, and you can also configure your keybindings.\n" "\n" "The color submenu lets you choose the color theme.\n" "The layout submenu lets you choose the Calcurse screen layout, in other\n" "words where to place the three different panels on the screen.\n" "The general options submenu brings a screen with the different options\n" "which modifies the way Calcurse interacts with the user.\n" "The notify submenu allows you to change the notify-bar settings.\n" "The keys submenu lets you define your own key bindings.\n" "\n" "Do not forget to save the calendar data to retrieve your configuration\n" "next time you launch Calcurse." msgstr "" "Pressing 'C' leads to the configuration submenu, from which you can\n" "select between colour, layout, and general options.\n" "\n" "The colour submenu lets you choose the colour theme.\n" "\n" "The layout submenu lets you choose the Calcurse screen layout, in other\n" "words where to place the three different panels on the screen.\n" "\n" "The general options submenu brings a screen with the different options\n" "which modifies the way Calcurse interacts with the user.\n" "\n" "Do not forget to save the calendar data to retrieve your configuration\n" "next time you launch Calcurse." msgid "Generic keybindings\n" msgstr "" #, c-format msgid "" "Some of the keybindings apply whatever panel is selected. They are\n" "called generic keybinding.\n" "Here is the list of all the generic key bindings, together with their\n" "corresponding action:\n" "\n" " '%s' : Redraw function -> redraws calcurse panels, this is useful if\n" " you resize your terminal screen or when\n" " garbage appears inside the display\n" " '%s' : Add Appointment -> add an appointment or an event\n" " '%s' : Add ToDo -> add a todo\n" " '%s' : -1 Day -> move to previous day\n" " '%s' : +1 Day -> move to next day\n" " '%s' : -1 Week -> move to previous week\n" " '%s' : +1 Week -> move to next week\n" " '%s' : -1 Month -> move to previous month\n" " '%s' : +1 Month -> move to next month\n" " '%s' : -1 Year -> move to previous year\n" " '%s' : +1 Year -> move to next year\n" " '%s' : Goto today -> move to current day\n" "\n" "The '%s' and '%s' keys are used to scroll text upward or downward\n" "when inside specific screens such the help screens for example.\n" "They are also used when the calendar screen is selected to switch\n" "between the available views (monthly and weekly calendar views)." msgstr "" msgid "OtherCmd\n" msgstr "" #, c-format msgid "" "Switch between status bar help pages.\n" "Because the terminal screen is too narrow to display all of the\n" "available commands, you need to press '%s' to see the next set of\n" "commands together with their keybindings.\n" "Once the last status bar page is reached, pressing '%s' another time\n" "leads you back to the first page." msgstr "" msgid "Calcurse - text-based organizer" msgstr "Calcurse - text-based organizer" #, c-format msgid "" "\n" "Copyright (c) 2004-2013 calcurse Development Team\n" "All rights reserved.\n" "\n" "Redistribution and use in source and binary forms, with or without\n" "modification, are permitted provided that the following conditions\n" "are met:\n" "\n" "\t- Redistributions of source code must retain the above\n" "\t copyright notice, this list of conditions and the\n" "\t following disclaimer.\n" "\n" "\t- Redistributions in binary form must reproduce the above\n" "\t copyright notice, this list of conditions and the\n" "\t following disclaimer in the documentation and/or other\n" "\t materials provided with the distribution.\n" "\n" "\n" "Send your feedback or comments to : misc@calcurse.org\n" "Calcurse home page : http://calcurse.org" msgstr "" #, fuzzy msgid "unknown ical type" msgstr "FATAL ERROR in todo_delete_bynum: no such todo\n" msgid "recurrence frequence not found." msgstr "" msgid "recurrence frequence not recognized." msgstr "" msgid "recurrence rule malformed." msgstr "" msgid "recurrence exception dates malformed." msgstr "" #, fuzzy msgid "could not get entire item description." msgstr "Enter description :" msgid "description malformed." msgstr "" msgid "appointment has no start time." msgstr "" msgid "could not compute duration (no end time)." msgstr "" msgid "item has a negative duration." msgstr "" #, fuzzy msgid "event date is not defined." msgstr "The day you entered is not valid" msgid "item could not be identified." msgstr "" #, fuzzy msgid "could not retrieve item summary." msgstr "Enter description :" msgid "could not retrieve event start time." msgstr "" msgid "could not retrieve event end time." msgstr "" msgid "item duration malformed." msgstr "" msgid "The ical file seems to be malformed. The end of item was not found." msgstr "" msgid "item priority is not acceptable (must be between 1 and 9)." msgstr "" msgid "Warning: ical header malformed or wrong version number. Aborting..." msgstr "" #, fuzzy msgid "Enter the new time ([hh:mm] or [hhmm]) : " msgstr "Enter end time ([hh:mm] or [h:mm]) or duration (in minutes) : " msgid "Press [Enter] to continue" msgstr "Press [Enter] to continue" #, fuzzy msgid "You entered an invalid time, should be [hh:mm] or [hhmm]" msgstr "You entered an invalid start time, should be [h:mm] or [hh:mm]" #, fuzzy msgid "" "Enter new end time ([hh:mm], [hhmm]) or duration ([+hh:mm], [+xxxdxxhxxm] or " "[+mm]) : " msgstr "Enter end time ([hh:mm] or [h:mm]) or duration (in minutes) : " msgid "Invalid time: start time must be before end time!" msgstr "" #, fuzzy msgid "Enter the new item description:" msgstr "Enter description :" #, fuzzy msgid "Enter the new repetition type:" msgstr "Enter description :" msgid "(d)aily" msgstr "" msgid "(w)eekly" msgstr "" msgid "(m)onthly" msgstr "" msgid "(y)early" msgstr "" #, c-format msgid "(currently using %s)" msgstr "" msgid "[dwmy]" msgstr "" #, fuzzy msgid "The frequence you entered is not valid." msgstr "The day you entered is not valid" #, fuzzy msgid "The entered date is not valid." msgstr "The day you entered is not valid" #, fuzzy, c-format msgid "Possible formats are [%s] or '0' for an endless repetition." msgstr "Possible argument formats are : 'mm/dd/yyyy' or 'n'\n" msgid "Enter the new repetition frequence:" msgstr "" #, fuzzy, c-format msgid "Enter the new ending date: [%s] or '0'" msgstr "Possible argument formats are : 'mm/dd/yyyy' or 'n'\n" #, fuzzy msgid "Description" msgstr "Enter description :" msgid "Repetition" msgstr "" #, fuzzy msgid "Edit: " msgstr "Add Item" msgid "Start time" msgstr "" msgid "End time" msgstr "" msgid "Pipe item to external command:" msgstr "" #, fuzzy msgid "" "Enter start time ([hh:mm] or [hhmm]), leave blank for an all-day event : " msgstr "" "Enter start time ([hh:mm] or [h:mm]), leave blank for an all-day event : " #, fuzzy msgid "" "Enter end time ([hh:mm] or [hhmm]) or duration ([+hh:mm], [+xxxdxxhxxm] or " "[+mm]) : " msgstr "Enter end time ([hh:mm] or [h:mm]) or duration (in minutes) : " msgid "Enter description :" msgstr "Enter description :" #, fuzzy msgid "You entered an invalid start time, should be [hh:mm] or [hhmm]" msgstr "You entered an invalid start time, should be [h:mm] or [hh:mm]" #, fuzzy msgid "" "Invalid end time/duration, should be [hh:mm], [hhmm], [+hh:mm], " "[+xxxdxxhxxm] or [+mm]" msgstr "You entered an invalid end time, should be [h:mm] or [hh:mm] or [mm]" msgid "Do you really want to delete this item ?" msgstr "Do you really want to delete this item ?" msgid "This item is recurrent. Delete (a)ll occurences or just this (o)ne ?" msgstr "" msgid "[ao]" msgstr "" msgid "This item has a note attached to it. Delete (i)tem or just its (n)ote ?" msgstr "" msgid "[in]" msgstr "" msgid "no such type" msgstr "" msgid "Enter the new ToDo item : " msgstr "Enter the new ToDo item : " msgid "Enter the ToDo priority [1 (highest) - 9 (lowest)] :" msgstr "" msgid "Do you really want to delete this task ?" msgstr "Do you really want to delete this task ?" msgid "This item has a note attached to it. Delete (t)odo or just its (n)ote ?" msgstr "" msgid "[tn]" msgstr "" #, fuzzy msgid "Enter the new ToDo description :" msgstr "Enter the new ToDo item : " #, fuzzy msgid "Enter the repetition type:" msgstr "Enter description :" msgid "Enter the repetition frequence:" msgstr "" #, fuzzy, c-format msgid "Enter the ending date: [%s] or '0' for an endless repetition" msgstr "Possible argument formats are : 'mm/dd/yyyy' or 'n'\n" #, fuzzy, c-format msgid "Possible formats are [%s] or '0' for an endless repetition" msgstr "Possible argument formats are : 'mm/dd/yyyy' or 'n'\n" msgid "This item is already a repeated one." msgstr "" #, fuzzy msgid "Press [ENTER] to continue." msgstr "Press [ENTER] to continue" msgid "Sorry, the date you entered is older than the item start time." msgstr "" msgid "wrong item type" msgstr "" msgid "Saving..." msgstr "Saving..." msgid "Loading..." msgstr "Loading..." #, fuzzy msgid "Exporting..." msgstr "aborting...\n" msgid "Internal error while displaying progress bar" msgstr "" msgid "Choose the file used to export calcurse data:" msgstr "" msgid "The file cannot be accessed, please enter another file name." msgstr "" #, fuzzy, c-format msgid "Failed to open \"%s\", - %s\n" msgstr "Failed to open todo file" msgid "Failed to build message\n" msgstr "" #, c-format msgid "Failed to print message \"%s\"\n" msgstr "" #, c-format msgid "Failed to close \"%s\" - %s\n" msgstr "" #, c-format msgid "%s does not exist, create it now [y or n] ? " msgstr "%s does not exist, create it now [y or n] ? " msgid "aborting...\n" msgstr "aborting...\n" #, c-format msgid "%s successfully created\n" msgstr "%s successfully created\n" msgid "starting interactive mode...\n" msgstr "starting interactive mode...\n" msgid "Problems accessing data file ..." msgstr "Problems accessing data file ..." msgid "The data files were successfully saved" msgstr "The data files were successfully saved" #, fuzzy msgid "failed to open appointment file" msgstr "Failed to open config file" #, fuzzy msgid "syntax error in the item date" msgstr "FATAL ERROR in load_app: syntax error in the item date\n" #, fuzzy msgid "no event nor appointment found" msgstr "FATAL ERROR in load_app: no event nor appointment found\n" #, fuzzy msgid "syntax error in item time or duration" msgstr "FATAL ERROR in load_app: syntax error in the item date\n" #, fuzzy msgid "syntax error in item identifier" msgstr "FATAL ERROR in load_app: syntax error in the item date\n" #, fuzzy msgid "wrong format in the appointment or event" msgstr "FATAL ERROR in load_app: wrong format in the appointment or event\n" #, fuzzy msgid "syntax error in item repetition" msgstr "FATAL ERROR in load_app: syntax error in the item date\n" #, fuzzy msgid "failed to open todo file" msgstr "Failed to open todo file" #, fuzzy msgid "failed to open key file" msgstr "Failed to open todo file" msgid "" "\n" "Too many errors while reading configuration file!\n" "Please backup your keys file, remove it from directory, and launch calcurse " "again.\n" msgstr "" msgid "Could not read key label" msgstr "" msgid "Key label not recognized" msgstr "" #, c-format msgid "Error reading key: \"%s\"" msgstr "" #, c-format msgid "\"%s\" assigned multiple times!" msgstr "" msgid "There were some errors when loading keys file, see log file ?" msgstr "" msgid "Too many errors while reading keys file, aborting..." msgstr "" #, fuzzy, c-format msgid "FATAL ERROR: could not create %s: %s\n" msgstr "FATAL ERROR in todo_delete_bynum: no such todo\n" msgid "Welcome to Calcurse. Missing data files were created." msgstr "Welcome to Calcurse. Missing data files were created." msgid "Data files found. Data will be loaded now." msgstr "Data files found. Data will be loaded now." #, fuzzy msgid "The data were successfully exported" msgstr "The data files were successfully saved" msgid "unknown export type" msgstr "" msgid "wrong export mode" msgstr "" msgid "Enter the file name to import data from:" msgstr "" #, c-format msgid "Import process report: %04d lines read " msgstr "" msgid "unknown import type" msgstr "" msgid "FATAL ERROR: the input file cannot be accessed, Aborting..." msgstr "" #, fuzzy msgid "FATAL ERROR: wrong import mode" msgstr "FATAL ERROR in todo_delete_bynum: no such todo\n" #, c-format msgid "%d app" msgid_plural "%d apps" msgstr[0] "" msgstr[1] "" #, c-format msgid "%d event" msgid_plural "%d events" msgstr[0] "" msgstr[1] "" #, c-format msgid "%d todo" msgid_plural "%d todos" msgstr[0] "" msgstr[1] "" #, c-format msgid "%d skipped" msgstr "" msgid "Some items could not be imported, see log file ?" msgstr "" msgid "Warning: could not create temporary log file, Aborting..." msgstr "" msgid "Warning: could not open temporary log file, Aborting..." msgstr "" msgid "No log file to display!" msgstr "" #, c-format msgid "Warning: could not erase temporary log file %s, Aborting..." msgstr "" msgid "Invalid delay" msgstr "" #, c-format msgid "" "\n" "WARNING: it seems that another calcurse instance is already running.\n" "If this is not the case, please remove the following lock file: \n" "\"%s\"\n" "and restart calcurse.\n" msgstr "" msgid "" "#\n" "# Calcurse keys configuration file\n" "#\n" "# This file sets the keybindings used by Calcurse.\n" "# Lines beginning with \"#\" are comments, and ignored by Calcurse.\n" "# To assign a keybinding to an action, this file must contain a line\n" "# with the following syntax:\n" "#\n" "# ACTION KEY1 KEY2 ... KEYn\n" "#\n" "# Where ACTION is what will be performed when KEY1, KEY2, ..., or KEYn\n" "# will be pressed.\n" "#\n" "# To define bindings which use the CONTROL key, prefix the key with 'C-'.\n" "# The escape, space bar and horizontal Tab key can be specified using\n" "# the 'ESC', 'SPC' and 'TAB' keyword, respectively.\n" "# Arrow keys can also be specified with the UP, DWN, LFT, RGT keywords.\n" "# Last, Home and End keys can be assigned using 'KEY_HOME' and 'KEY_END'\n" "# keywords.\n" "#\n" "# A description of what each ACTION keyword is used for is available\n" "# from calcurse online configuration menu.\n" msgstr "" #, fuzzy msgid "FATAL ERROR: could not create default keys file." msgstr "FATAL ERROR in todo_delete_bynum: no such todo\n" #, fuzzy msgid "FATAL ERROR: key value out of bounds" msgstr "FATAL ERROR in update_windows: no window selected\n" msgid "Cancel the ongoing action." msgstr "" msgid "Select the highlighted item." msgstr "" msgid "Print general information about calcurse's authors, license, etc." msgstr "" msgid "Display hints whenever some help screens are available." msgstr "" msgid "Exit from the current menu, or quit calcurse." msgstr "" msgid "Save calcurse data." msgstr "" msgid "Copy the item that is currently selected." msgstr "" msgid "Paste an item at the current position." msgstr "" msgid "Select next panel in calcurse main screen." msgstr "" msgid "Import data from an external file." msgstr "" msgid "Export data to a new file format." msgstr "" msgid "Select the day to go to." msgstr "" msgid "Show next possible actions inside status bar." msgstr "" #, fuzzy msgid "Enter the configuration menu." msgstr "CalCurse %s | general options" msgid "Redraw calcurse's screen." msgstr "" msgid "Add an appointment, whichever panel is currently selected." msgstr "" msgid "Add a todo item, whichever panel is currently selected." msgstr "" msgid "" "Move to previous day in calendar, whichever panel is currently selected." msgstr "" msgid "Move to next day in calendar, whichever panel is currently selected." msgstr "" msgid "" "Move to previous week in calendar, whichever panel is currently selected" msgstr "" msgid "Move to next week in calendar, whichever panel is currently selected." msgstr "" msgid "" "Move to previous month in calendar, whichever panel is currently selected" msgstr "" msgid "Move to next month in calendar, whichever panel is currently selected." msgstr "" msgid "" "Move to previous year in calendar, whichever panel is currently selected" msgstr "" msgid "Move to next year in calendar, whichever panel is currently selected." msgstr "" msgid "Scroll window down (e.g. when displaying text inside a popup window)." msgstr "" msgid "Scroll window up (e.g. when displaying text inside a popup window)." msgstr "" msgid "Go to today, whichever panel is selected." msgstr "" msgid "Move to the right." msgstr "" msgid "Move to the left." msgstr "" msgid "Move down." msgstr "" msgid "Move up." msgstr "" msgid "" "Select the first day of the current week when inside the calendar panel." msgstr "" msgid "Select the last day of the current week when inside the calendar panel." msgstr "" msgid "Add an item to the currently selected panel." msgstr "" msgid "Delete the currently selected item." msgstr "" msgid "Edit the currently seleted item." msgstr "" msgid "Display the currently selected item inside a popup window." msgstr "" msgid "Flag the currently selected item as important." msgstr "" msgid "Repeat an item" msgstr "" msgid "Pipe the currently selected item to an external program." msgstr "" msgid "Attach (or edit if one exists) a note to the currently selected item" msgstr "" msgid "View the note attached to the currently selected item." msgstr "" msgid "Raise a task priority inside the todo panel." msgstr "" msgid "Lower a task priority inside the todo panel." msgstr "" #, fuzzy msgid "FATAL ERROR: null file pointer." msgstr "FATAL ERROR in todo_delete_bynum: no such todo\n" #, c-format msgid "When adding default key for \"%s\", \"%s\" was already assigned!" msgstr "" msgid "xmalloc: zero size" msgstr "" msgid "xmalloc: out of memory" msgstr "" msgid "xcalloc: zero size" msgstr "" msgid "xcalloc: overflow" msgstr "" msgid "xcalloc: out of memory" msgstr "" msgid "xrealloc: zero size" msgstr "" msgid "xrealloc: overflow" msgstr "" msgid "xrealloc: out of memory" msgstr "" msgid "xfree: null pointer" msgstr "" msgid "could not allocate memory to store block info" msgstr "" #, fuzzy msgid "Block not found" msgstr "Appointment :" #, c-format msgid "overflow at %s" msgstr "" #, c-format msgid "dbg_free: null pointer at %s" msgstr "" #, c-format msgid "block seems already freed at %s" msgstr "" #, c-format msgid "corrupt block header at %s" msgstr "" #, c-format msgid "corrupt block end at %s, (end = %u, should be %d)" msgstr "" msgid "---==== MEMORY BLOCK ====----------------\n" msgstr "" #, c-format msgid " id: %u\n" msgstr "" #, c-format msgid " size: %u\n" msgstr "" #, c-format msgid " allocated in: %s\n" msgstr "" msgid "-----------------------------------------\n" msgstr "" msgid "+------------------------------+\n" msgstr "" msgid "| calcurse memory usage report |\n" msgstr "" #, c-format msgid " number of calls: %u\n" msgstr "" #, c-format msgid " allocated blocks: %u\n" msgstr "" #, c-format msgid " unfreed blocks: %u\n" msgstr "" #, c-format msgid "Warning: could not open %s, Aborting..." msgstr "" #, fuzzy msgid "error while launching command: could not fork" msgstr "FATAL ERROR in todo_delete_bynum: no such todo\n" msgid "error while launching command" msgstr "" #, fuzzy msgid "(if set to YES, notify-bar will be displayed)" msgstr "(if set to YES, progress bar will not be displayed when saving data)" msgid "(Format of the date to be displayed inside notify-bar)" msgstr "" msgid "(Format of the time to be displayed inside notify-bar)" msgstr "" msgid "" "(Warn user if an appointment is within next 'notify-bar_warning' seconds)" msgstr "" msgid "(Command used to notify user of an upcoming appointment)" msgstr "" msgid "(Notify all appointments instead of flagged ones only)" msgstr "" msgid "(Run in background to get notifications after exiting)" msgstr "" msgid "(Log activity when running in background)" msgstr "" msgid "Enter the time format (see 'man 3 strftime' for possible formats) " msgstr "" msgid "Enter the number of seconds (0 not to be warned before an appointment)" msgstr "" msgid "Enter the notification command " msgstr "" msgid "notification options" msgstr "" msgid "incoherent repetition type" msgstr "" msgid "unknown repetition type" msgstr "" msgid "unknown character" msgstr "" msgid "date error in event" msgstr "" msgid "event not found" msgstr "" #, fuzzy msgid "appointment not found" msgstr "Appointment :" #, fuzzy msgid "syntax error in item date" msgstr "FATAL ERROR in load_app: syntax error in the item date\n" #, fuzzy, c-format msgid "Could not remove calcurse lock file: %s\n" msgstr "Enter description :" #, c-format msgid "Error setting signal #%d : %s\n" msgstr "" msgid "no note attached" msgstr "" msgid "no such todo" msgstr "" msgid "todo not found" msgstr "" msgid "/!\\ INTERNAL ERROR /!\\" msgstr "" msgid "Please report the following bug:" msgstr "" msgid "[yn]" msgstr "" msgid "Press any key to continue..." msgstr "Press any key to continue..." msgid "failure in mktime" msgstr "" msgid "error in mktime" msgstr "" #, fuzzy msgid "could not convert string" msgstr "FATAL ERROR in todo_delete_bynum: no such todo\n" msgid "out of range" msgstr "" msgid "yes" msgstr "yes" msgid "no" msgstr "no" msgid "option not defined" msgstr "" #, c-format msgid "temporary file \"%s\" could not be created" msgstr "" #, c-format msgid "Error when closing file at %s" msgstr "" msgid "No note file found\n" msgstr "" msgid "January" msgstr "January" msgid "February" msgstr "February" msgid "March" msgstr "March" msgid "April" msgstr "April" msgid "May" msgstr "May" msgid "June" msgstr "June" msgid "July" msgstr "July" msgid "August" msgstr "August" msgid "September" msgstr "September" msgid "October" msgstr "October" msgid "November" msgstr "November" msgid "December" msgstr "December" msgid "Sun" msgstr "Sun" msgid "Mon" msgstr "Mon" msgid "Tue" msgstr "Tue" msgid "Wed" msgstr "Wed" msgid "Thu" msgstr "Thu" msgid "Fri" msgstr "Fri" msgid "Sat" msgstr "Sat" msgid "mm/dd/yyyy" msgstr "" msgid "dd/mm/yyyy" msgstr "" msgid "yyyy/mm/dd" msgstr "" msgid "yyyy-mm-dd" msgstr "" msgid "Calendar" msgstr "Calendar" msgid "Appointments" msgstr "Appointments" msgid "ToDo" msgstr "ToDo" msgid "Quit" msgstr "Quit" msgid "Save" msgstr "Save" msgid "Copy" msgstr "" msgid "Paste" msgstr "" #, fuzzy msgid "Chg Win" msgstr "Chg View" msgid "Import" msgstr "" msgid "Export" msgstr "" #, fuzzy msgid "Go to" msgstr "Goto:\n" msgid "Config" msgstr "Config" msgid "Redraw" msgstr "Redraw" #, fuzzy msgid "Add Appt" msgstr "Add Item" msgid "Add Todo" msgstr "" #, fuzzy msgid "-1 Day" msgstr "-/+1 Day" #, fuzzy msgid "+1 Day" msgstr "-/+1 Day" #, fuzzy msgid "-1 Week" msgstr "-/+1 Week" #, fuzzy msgid "+1 Week" msgstr "-/+1 Week" msgid "-1 Month" msgstr "" msgid "+1 Month" msgstr "" msgid "-1 Year" msgstr "" msgid "+1 Year" msgstr "" msgid "Today" msgstr "" #, fuzzy msgid "Nxt View" msgstr "View" #, fuzzy msgid "Prv View" msgstr "View" #, fuzzy msgid "beg Week" msgstr "-/+1 Week" #, fuzzy msgid "end Week" msgstr "-/+1 Week" msgid "Add Item" msgstr "Add Item" msgid "Del Item" msgstr "Del Item" #, fuzzy msgid "Edit Itm" msgstr "Add Item" msgid "View" msgstr "View" msgid "Pipe" msgstr "" #, fuzzy msgid "Flag Itm" msgstr "Del Item" msgid "Repeat" msgstr "" #, fuzzy msgid "EditNote" msgstr "Add Item" #, fuzzy msgid "ViewNote" msgstr "View" msgid "Prio.+" msgstr "" msgid "Prio.-" msgstr "" msgid "OtherCmd" msgstr "" msgid "unknown panel" msgstr "" msgid "Usage: calcurse-upgrade [-h|-v|--config ]" msgstr "" msgid "unrecognized option:" msgstr "" #, fuzzy msgid "Configuration file not found:" msgstr "FATAL ERROR in fill_config_var: wrong configuration variable format.\n" #, fuzzy msgid "Pre-3.0.0 configuration file format detected..." msgstr "FATAL ERROR in fill_config_var: wrong configuration variable format.\n" #, fuzzy msgid "Create temporary backup of the configuration file..." msgstr "Failed to open config file" msgid "Old backup file found:" msgstr "" msgid "" "\n" "If a previous conversion did not complete, please try to restore your\n" "configuration from this backup and then remove the backup file." msgstr "" msgid "done" msgstr "" msgid "Old temporary file found:" msgstr "" msgid "" "\n" "If a previous conversion did not complete, please try to remove this file " "and\n" "start over with a backup of your old configuration file." msgstr "" msgid "Upgrade configuration directives..." msgstr "" msgid "Remove temporary backup..." msgstr "" #~ msgid "Appointment" #~ msgstr "Appointment" #, fuzzy #~ msgid "missing colors in config file" #~ msgstr "Failed to open config file" #~ msgid "auto_save = " #~ msgstr "auto_save = " #, fuzzy #~ msgid "periodic_save = " #~ msgstr "auto_save = " #~ msgid "confirm_quit = " #~ msgstr "confirm_quit = " #~ msgid "confirm_delete = " #~ msgstr "confirm_delete = " #~ msgid "skip_system_dialogs = " #~ msgstr "skip_system_dialogues = " #~ msgid "skip_progress_bar = " #~ msgstr "skip_progress_bar = " #~ msgid "week_begins_on_monday = " #~ msgstr "week_begins_on_monday = " #~ msgid "" #~ "(if set to YES, monday is the first day of the week, else it is sunday)" #~ msgstr "" #~ "(if set to YES, monday is the first day of the week, otherwise it is " #~ "sunday)" #, fuzzy #~ msgid "Week" #~ msgstr "-/+1 Week" #, fuzzy #~ msgid "could not find any key file." #~ msgstr "FATAL ERROR in todo_delete_bynum: no such todo\n" #, fuzzy #~ msgid "could not remove note" #~ msgstr "Enter description :" #~ msgid "Enter an option number to change its value [Q to quit] " #~ msgstr "Enter an option number to change its value [Q to quit] " #, fuzzy #~ msgid "CalCurse %s | notify-bar options" #~ msgstr "CalCurse %s | general options" #, fuzzy #~ msgid "" #~ "\n" #~ "Copyright (c) 2004-2008 Frederic Culot\n" #~ "\n" #~ "This program is free software; you can redistribute it and/or modify\n" #~ "it under the terms of the GNU General Public License as published by\n" #~ "the Free Software Foundation; either version 2 of the License, or\n" #~ "(at your option) any later version.\n" #~ "\n" #~ "This program is distributed in the hope that it will be useful,\n" #~ "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" #~ "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" #~ "GNU General Public License for more details.\n" #~ "\n" #~ "\n" #~ "Send your feedback or comments to : misc@calcurse.org\n" #~ "Calcurse home page : http://calcurse.org" #~ msgstr "" #~ "Copyright (c) 2004-2006 Frederic Culot\n" #~ "\n" #~ "This program is free software; you can redistribute it and/or modify\n" #~ "it under the terms of the GNU General Public License as published by\n" #~ "the Free Software Foundation; either version 2 of the License, or\n" #~ "(at your option) any later version.\n" #~ "\n" #~ "This program is distributed in the hope that it will be useful,\n" #~ "but WITHOUT ANY WARRANTY; without even the implied warranty of\n" #~ "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" #~ "GNU General Public License for more details.\n" #~ "\n" #~ "\n" #~ "Send your feedback or comments to : misc@calcurse.org\n" #~ "Calcurse home page : http://calcurse.org" #~ msgid "Pick the desired layout on next screen [press ENTER]" #~ msgstr "Pick the desired layout on next screen [press ENTER]" #, fuzzy #~ msgid "('A'= Appointment panel, 'C'= calendar panel, 'T'= todo panel)" #~ msgstr "('A'= Appointment panel, 'c'= calendar panel, 't'= todo panel)" #, fuzzy #~ msgid "FATAL ERROR in apoint_delete: no such type\n" #~ msgstr "FATAL ERROR in todo_delete_bynum: no such todo\n" #~ msgid "FATAL ERROR in apoint_scan: date error in the appointment\n" #~ msgstr "FATAL ERROR in apoint_scan: date error in the appointment\n" #, fuzzy #~ msgid "FATAL ERROR in apoint_get: no such item\n" #~ msgstr "FATAL ERROR in todo_delete_bynum: no such todo\n" #, fuzzy #~ msgid "FATAL ERROR in apoint_delete_bynum: no such appointment" #~ msgstr "FATAL ERROR in apoint_delete_bynum: no such appointment\n" #, fuzzy #~ msgid "FATAL ERROR in apoint_switch_notify: no such appointment" #~ msgstr "FATAL ERROR in apoint_delete_bynum: no such appointment\n" #, fuzzy #~ msgid "FATAL ERROR in custom_load_color: wrong color number.\n" #~ msgstr "" #~ "FATAL ERROR in fill_config_var: wrong configuration variable format.\n" #, fuzzy #~ msgid "FATAL ERROR in custom_load_color: wrong color name.\n" #~ msgstr "FATAL ERROR in load_app: wrong format in the appointment or event\n" #, fuzzy #~ msgid "" #~ "FATAL ERROR in custom_load_color: wrong configuration variable format.\n" #~ msgstr "" #~ "FATAL ERROR in fill_config_var: wrong configuration variable format.\n" #, fuzzy #~ msgid "FATAL ERROR in custom_color_theme_name: unknown color\n" #~ msgstr "FATAL ERROR in todo_delete_bynum: no such todo\n" #, fuzzy #~ msgid "FATAL ERROR in day_popup_item: unknown item type\n" #~ msgstr "FATAL ERROR in todo_delete_bynum: no such todo\n" #, fuzzy #~ msgid "FATAL ERROR in event_get: no such item\n" #~ msgstr "FATAL ERROR in event_delete_bynum: no such event\n" #~ msgid "FATAL ERROR in event_delete_bynum: no such event\n" #~ msgstr "FATAL ERROR in event_delete_bynum: no such event\n" #, fuzzy #~ msgid "FATAL ERROR in foreach_date_dump: incoherent repetition type\n" #~ msgstr "FATAL ERROR in todo_delete_bynum: no such todo\n" #, fuzzy #~ msgid "" #~ "FATAL ERROR in pcal_export_recur_events: incoherent repetition type\n" #~ msgstr "FATAL ERROR in event_delete_bynum: no such event\n" #, fuzzy #~ msgid "" #~ "FATAL ERROR in pcal_export_recur_apoints: incoherent repetition type\n" #~ msgstr "FATAL ERROR in apoint_delete_bynum: no such appointment\n" #, fuzzy #~ msgid "FATAL ERROR in io_export_data: wrong export mode\n" #~ msgstr "FATAL ERROR in todo_delete_bynum: no such todo\n" #, fuzzy #~ msgid "FATAL ERROR in io_export_data: unknown export type\n" #~ msgstr "FATAL ERROR in todo_delete_bynum: no such todo\n" #, fuzzy #~ msgid "FATAL ERROR in io_import_data: unknown import type" #~ msgstr "FATAL ERROR in todo_delete_bynum: no such todo\n" #, fuzzy #~ msgid "FATAL ERROR in launch_cmd: could not launch user command" #~ msgstr "FATAL ERROR in todo_delete_bynum: no such todo\n" #, fuzzy #~ msgid "FATAL ERROR in recur_def2char: unknown recur type\n" #~ msgstr "FATAL ERROR in todo_delete_bynum: no such todo\n" #, fuzzy #~ msgid "FATAL ERROR in recur_char2def: unknown char\n" #~ msgstr "FATAL ERROR in todo_delete_bynum: no such todo\n" #, fuzzy #~ msgid "FATAL ERROR in recur_event_scan: date error in the event\n" #~ msgstr "FATAL ERROR in event_scan: date error in the event\n" #, fuzzy #~ msgid "FATAL ERROR in recur_item_inday: unknown item type\n" #~ msgstr "FATAL ERROR in todo_delete_bynum: no such todo\n" #, fuzzy #~ msgid "FATAL ERROR in recur_event_erase: no such event\n" #~ msgstr "FATAL ERROR in event_delete_bynum: no such event\n" #, fuzzy #~ msgid "FATAL ERROR in recur_apoint_erase: no such appointment\n" #~ msgstr "FATAL ERROR in apoint_delete_bynum: no such appointment\n" #, fuzzy #~ msgid "FATAL ERROR in recur_repeat_item: wrong item type\n" #~ msgstr "FATAL ERROR in todo_delete_bynum: no such todo\n" #, fuzzy #~ msgid "FATAL ERROR in recur_exc_scan: syntax error in the item date\n" #~ msgstr "FATAL ERROR in load_app: syntax error in the item date\n" #, fuzzy #~ msgid "FATAL ERROR in recur_get_apoint: no such item\n" #~ msgstr "FATAL ERROR in apoint_delete_bynum: no such appointment\n" #, fuzzy #~ msgid "FATAL ERROR in recur_get_event: no such item\n" #~ msgstr "FATAL ERROR in event_delete_bynum: no such event\n" #, fuzzy #~ msgid "FATAL ERROR in recur_apoint_switch_notify: no such item\n" #~ msgstr "FATAL ERROR in apoint_delete_bynum: no such appointment\n" #, fuzzy #~ msgid "FATAL ERROR in todo_delete_note_bynum: no note attached\n" #~ msgstr "FATAL ERROR in todo_delete_bynum: no such todo\n" #, fuzzy #~ msgid "FATAL ERROR in todo_delete_note_bynum: no such todo\n" #~ msgstr "FATAL ERROR in todo_delete_bynum: no such todo\n" #~ msgid "FATAL ERROR in todo_delete_bynum: no such todo\n" #~ msgstr "FATAL ERROR in todo_delete_bynum: no such todo\n" #, fuzzy #~ msgid "FATAL ERROR in todo_get_position: todo not found\n" #~ msgstr "FATAL ERROR in todo_delete_bynum: no such todo\n" #, fuzzy #~ msgid "FATAL ERROR in todo_chg_priority: no such action\n" #~ msgstr "FATAL ERROR in todo_delete_bynum: no such todo\n" #~ msgid "FATAL ERROR in date2sec: failure in mktime\n" #~ msgstr "FATAL ERROR in date2sec: failure in mktime\n" #, fuzzy #~ msgid "FATAL ERROR in date_sec_change: failure in mktime\n" #~ msgstr "FATAL ERROR in date2sec: failure in mktime\n" #, fuzzy #~ msgid "FATAL ERROR in other_status_page: unknown panel\n" #~ msgstr "FATAL ERROR in todo_delete_bynum: no such todo\n" #, fuzzy #~ msgid "FATAL ERROR in mystrtol: number is out of range" #~ msgstr "FATAL ERROR in update_windows: no window selected\n" #~ msgid "option not defined - Problem in print_option_incolor()" #~ msgstr "option not defined - Problem in print_option_incolor()" #, fuzzy #~ msgid "FATAL ERROR in erase_note: could not remove note\n" #~ msgstr "FATAL ERROR in todo_delete_bynum: no such todo\n" #, fuzzy #~ msgid "FATAL ERROR in wins_update: no window selected\n" #~ msgstr "FATAL ERROR in update_windows: no window selected\n" #, fuzzy #~ msgid "" #~ "You can use either 'H','J','K','L' or the arrow keys '<','v','^','>'\n" #~ "to move into the calendar.\n" #~ "\n" #~ "The following scheme explains how :\n" #~ "\n" #~ " move to previous week\n" #~ " K ^ \n" #~ " move to previous day H < > L move to next day\n" #~ " J v \n" #~ " move to next week\n" #~ "\n" #~ "Moreover, while inside the calendar panel, the '0' (zero) key moves\n" #~ "to the first day of the week, and the '$' key selects the last day of\n" #~ "the week.\n" #~ "\n" #~ "When the Appointment or ToDo panel is selected, the up and down keys\n" #~ "(respectively K or up arrow, and J or down arrow) allows you to select\n" #~ "an item from those lists." #~ msgstr "" #~ "You can use either 'H','J','K','L' or the arrow keys '<','v','^','>'\n" #~ "to move into the calendar.\n" #~ "\n" #~ "The following scheme explains how :\n" #~ "\n" #~ " move to previous week\n" #~ " K ^ \n" #~ " move to previous day H < > L move to next day\n" #~ " J v \n" #~ " move to next week\n" #~ "\n" #~ "When the Appointment or ToDo panel is selected, the up and down keys\n" #~ "(respectively K or up arrow, and J or down arrow) allows you to select\n" #~ "an item from those lists." #~ msgid "CalCurse %s | help" #~ msgstr "CalCurse %s | help" #, fuzzy #~ msgid "FATAL ERROR in wins_prop: property unknown\n" #~ msgstr "FATAL ERROR in todo_delete_bynum: no such todo\n" #~ msgid "The day you entered is not valid" #~ msgstr "The day you entered is not valid" #~ msgid "" #~ "Please resize your terminal screen\n" #~ "(to at least 80x24),\n" #~ "and restart calcurse.\n" #~ msgstr "" #~ "Please resize your terminal screen\n" #~ "(to at least 80x24),\n" #~ "and restart calcurse.\n" #, fuzzy #~ msgid "FATAL ERROR in update_time_in_date: failure in mktime\n" #~ msgstr "FATAL ERROR in date2sec: failure in mktime\n" #~ msgid "Pick the number corresponding to the color scheme (Q to exit) :" #~ msgstr "Pick the number corresponding to the colour scheme (Q to exit) :" #~ msgid "([>0<] for black & white)" #~ msgstr "([>0<] for black & white)" #~ msgid "-- Press 'N' for next page --" #~ msgstr "-- Press 'N' for next page --" #~ msgid "-- Press 'P' for previous page --" #~ msgstr "-- Press 'P' for previous page --" #~ msgid " |Ac| |At| |cA| |tA|" #~ msgstr " |Ac| |At| |cA| |tA|" #~ msgid "[1]|At| [2]|Ac| [3]|tA| [4]|cA|" #~ msgstr "[1]|At| [2]|Ac| [3]|tA| [4]|cA|" #~ msgid "Redraw:\n" #~ msgstr "Redraw:\n" #, fuzzy #~ msgid "" #~ "Pressing CTRL-L redraws the Calcurse panels.\n" #~ "\n" #~ "You might want to use this function when you resize your terminal\n" #~ "screen for example, and you want Calcurse to take into account the new\n" #~ "size of the terminal.\n" #~ "\n" #~ "This function can also be useful when garbage appears in the display,\n" #~ "and you want to clean it." #~ msgstr "" #~ "Pressing 'R' redraws the Calcurse panels.\n" #~ "\n" #~ "You might want to use this function when you resize your terminal\n" #~ "screen for example, and you want Calcurse to take into account the new\n" #~ "size of the terminal.\n" #~ "\n" #~ "This function can also be useful when garbage appears in the display,\n" #~ "and you want to clear it." #~ msgid "GoTo" #~ msgstr "GoTo" calcurse-3.1.4/po/en@boldquot.header0000644000175000001440000000247112105444401014300 00000000000000# All this catalog "translates" are quotation characters. # The msgids must be ASCII and therefore cannot contain real quotation # characters, only substitutes like grave accent (0x60), apostrophe (0x27) # and double quote (0x22). These substitutes look strange; see # http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html # # This catalog translates grave accent (0x60) and apostrophe (0x27) to # left single quotation mark (U+2018) and right single quotation mark (U+2019). # It also translates pairs of apostrophe (0x27) to # left single quotation mark (U+2018) and right single quotation mark (U+2019) # and pairs of quotation mark (0x22) to # left double quotation mark (U+201C) and right double quotation mark (U+201D). # # When output to an UTF-8 terminal, the quotation characters appear perfectly. # When output to an ISO-8859-1 terminal, the single quotation marks are # transliterated to apostrophes (by iconv in glibc 2.2 or newer) or to # grave/acute accent (by libiconv), and the double quotation marks are # transliterated to 0x22. # When output to an ASCII terminal, the single quotation marks are # transliterated to apostrophes, and the double quotation marks are # transliterated to 0x22. # # This catalog furthermore displays the text between the quotation marks in # bold face, assuming the VT100/XTerm escape sequences. # calcurse-3.1.4/po/ru.po0000644000175000001440000030613712105444503011651 00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Free Software Foundation, Inc. # This file is distributed under the same license as the PACKAGE package. # # Translators: # Aleksey , 2011, 2012. # Aleksey Mekhonoshin , 2012. # Lukas Fleischer , 2011. msgid "" msgstr "" "Project-Id-Version: calcurse\n" "Report-Msgid-Bugs-To: bugs@calcurse.org\n" "POT-Creation-Date: 2013-02-09 14:04+0100\n" "PO-Revision-Date: 2012-11-27 08:22+0000\n" "Last-Translator: Aleksey Mekhonoshin \n" "Language-Team: Russian (http://www.transifex.com/projects/p/calcurse/" "language/ru/)\n" "Language: ru\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" msgid "null pointer" msgstr "пустой указатель" msgid "date error in appointment" msgstr "ошибка даты в задаче" msgid "no such appointment" msgstr "задача отсутствует" msgid "" "Usage: calcurse [-g|-h|-v] [-an] [-t[num]] [-i] [-x[format]]\n" " [-d |] [-s[date]] [-r[range]]\n" " [-c] [-D] [-S] [--status]\n" " [--read-only]\n" msgstr "" "Команда: calcurse [-g|-h|-v] [-an] [-t[num]] [-i] [-x[format]]\n" " [-d |] [-s[date]] [-r[range]]\n" " [-c | -D] [-S] [--status]\n" " [--read-only]\n" msgid "Try 'calcurse -h' for more information.\n" msgstr "Выполните 'calcurse -h' для получения справки.\n" msgid "" "\n" "Copyright (c) 2004-2013 calcurse Development Team.\n" "This is free software; see the source for copying conditions.\n" msgstr "" "\n" "Copyright (c) 2004-2013 calcurse Development Team.\n" "This is free software; see the source for copying conditions.\n" #, c-format msgid "Calcurse %s - text-based organizer\n" msgstr "Calcurse %s - текстовый органайзер\n" msgid "" "\n" "For more information, type '?' from within Calcurse, or read the manpage.\n" msgstr "" "\n" "Для получения справки, нажмите '?' в Calcurse или смотрите man-страницу.\n" msgid "Mail feature requests and suggestions to .\n" msgstr "Найденные ошибки или ваши идеи, присылайте на .\n" msgid "Mail bug reports to .\n" msgstr "Найденные ошибки высылайте на .\n" msgid "" "\n" "Miscellaneous:\n" " -h, --help\n" "\tprint this help and exit.\n" "\n" " -v, --version\n" "\tprint calcurse version and exit.\n" "\n" " --status\n" "\tdisplay the status of running instances of calcurse.\n" "\n" " --read-only\n" "\tDon't save configuration nor appointments/todos. Use with care.\n" "\n" "Files:\n" " -c , --calendar \n" "\tspecify the calendar to use (has precedence over '-D').\n" "\n" " -D , --directory \n" "\tspecify the data directory to use.\n" "\tIf not specified, the default directory is ~/.calcurse\n" "\n" "Non-interactive:\n" " -a, --appointment\n" " \tprint events and appointments for current day and exit.\n" "\n" " -d , --day \n" "\tprint events and appointments for or upcoming days and\n" "\texit. To specify both a starting date and a range, use the\n" "\t'--startday' and the '--range' option.\n" "\n" " -g, --gc\n" "\trun the garbage collector for note files and exit. \n" "\n" " -i , --import \n" "\timport the icalendar data contained in . \n" "\n" " -n, --next\n" "\tprint next appointment within upcoming 24 hours and exit. Also given\n" "\tis the remaining time before this next appointment.\n" "\n" " -r[num], --range[=num]\n" "\tprint events and appointments for the [num] number of days\n" "\tand exit. If no [num] is given, a range of 1 day is considered.\n" "\n" " -s[date], --startday[=date]\n" "\tprint events and appointments from [date] and exit.\n" "\tIf no [date] is given, the current day is considered.\n" "\n" " -S, --search=\n" "\tsearch for the given regular expression within events, appointments,\n" "\tand todos description.\n" "\n" " -t[num], --todo[=num]\n" "\tprint todo list and exit. If the optional number [num] is given,\n" "\tthen only todos having a priority equal to [num] will be returned.\n" "\tThe priority number must be between 1 (highest) and 9 (lowest).\n" "\tIt is also possible to specify '0' for the priority, in which case\n" "\tonly completed tasks will be shown.\n" "\n" " -x[format], --export[=format]\n" "\texport user data to the specified format. Events, appointments and\n" "\ttodos are converted and echoed to stdout.\n" "\tTwo possible formats are available: 'ical' and 'pcal'.\n" "\tIf the optional argument format is not given, ical format is\n" "\tselected by default.\n" "\tnote: redirect standard output to export data to a file,\n" "\tby issuing a command such as: calcurse --export > calcurse.dat\n" msgstr "" "\n" "Разное: \n" "-h, --help\n" "показать справку. \n" "\n" "-v, --version\n" "показать версию calcurse. \n" "\n" "--status\n" "показать статус calcurse.\n" "\n" "--read-only\n" "Не сохр. настройки, задачи и дела (будьте внимательны).\n" "\n" "Файлы:\n" "-c , --calendar использование файла календаря " "(приоритетен перед ключом '-D').\n" "\n" "-D , --directory использование конкретной директории. Директория " "по-умолчанию ~/.calcurse\n" "\n" "Не интерактивные:\n" "-a, --appointment\n" "показать события и задачи на текущий день.\n" "\n" "-d , --day \n" "показать события и задачи на дату или на кол-во грядущих дней. " "Для одновременного использования '--startday' и '--range'.\n" "\n" "-g, --gc\n" "запустить сборщик мусора для файлов заметок.\n" "\n" "-i , --import \n" "импортировать данные icalendar в файл .\n" "\n" "-n, --next\n" "показать след. задачу и время до неё в пределах 24 часов.\n" "\n" "-r[num], --range[=num]\n" "показать события и задачи на [num] дней. По-умолчанию значение [num] равно " "одному дню.\n" "\n" "-s[date], --startday[=date]\n" "показать события и задачи на указанную дату [date]. По-умолчанию значение " "[date] равно текущему дню.\n" "\n" "-S, --search=\n" "поиск регулярных выражений внутри описания событий, задач и дел.\n" "\n" "-t[num], --todo[=num]\n" "Показать список дел. Если задано [num], будут показаны дела, имеющие " "приоритет равный значению [num]. Значение приоритета находится между 1 " "(высокий) и 9 (низкий). Установка значения равного '0', покажет только " "завершённые дела.\n" "\n" "-x[format], --export[=format]\n" "экспорт данных пользователя. События, задачи и дела будут конвертированы, а " "пользователь уведомлён об этом. Сущ. два формата для экспорта: 'ical' and " "'pcal'. Форматом по-умолчанию является ical. \n" "Примечание: перенаправление потока экспорта данных в файл, возможно след. " "образом: calcurse --export > calcurse.dat Для доп. информации нажмите '?' из-" "под Calcurse, или читайте man-ы. Найденные ошибки, а так же пожелания шлите " "на : .\n" #, c-format msgid "" "Error: both calcurse (pid: %d) and its daemon (pid: %d)\n" "seem to be running at the same time!\n" "Please check manually and restart calcurse.\n" msgstr "" "Ошибка: calcurse (pid: %d) и его демон (pid: %d)\n" "запущены одновременно!\n" "Пожалуйста, проверьте это и перезапустите calcurse.\n" #, c-format msgid "calcurse is running (pid %d)\n" msgstr "calcurse запущен (pid: %d)\n" #, c-format msgid "calcurse is running in background (pid %d)\n" msgstr "calcurse запущен в фоновом режиме (pid: %d)\n" msgid "calcurse is not running\n" msgstr "calcurse не запущен\n" msgid "to do:\n" msgstr "Список дел:\n" msgid "completed tasks:\n" msgstr "Выполненные задачи:\n" msgid "next appointment:\n" msgstr "Следующая задача:\n" msgid "Argument to the '-d' flag is not valid\n" msgstr "Аргумент ключа '-d' неверен\n" #, c-format msgid "Possible argument format are: '%s' or 'n'\n" msgstr "Возможный формат аргумента: '%s' или 'n'\n" msgid "Argument is not valid\n" msgstr "Аргумент неверен\n" #, c-format msgid "Argument format for -s and --startday is: '%s'\n" msgstr "Формат аргумента для -s и --startday: '%s'\n" msgid "Argument format for -r and --range is: 'n'\n" msgstr "Формат аргумента для -r и --range: 'n'\n" msgid "Can not handle more than one regular expression." msgstr "Невозможно обработать более одного регулярного выражения." msgid "Could not compile regular expression." msgstr "Невозможно скомпилировать регулярное выражение." msgid "Argument for '-x' should be either 'ical' or 'pcal'\n" msgstr "Аргумент для '-x': 'ical' либо 'pcal'\n" msgid "Option '-S' must be used with either '-d', '-r', '-s', '-a' or '-t'\n" msgstr "" "Ключ '-S' должен использоваться с любым из след.: '-d'. '-r', '-s', '-a', '-" "t'\n" msgid "To do :" msgstr "Дело: " msgid "Export to (i)cal or (p)cal format?" msgstr "Формат экспорта (i)cal или (p)cal?" msgid "[ip]" msgstr "[ip]" msgid "Do you really want to quit ?" msgstr "Вы уверены, что хотите выйти?" msgid "ERROR setting first day of week" msgstr "ОШИБКА настройки первого дня недели" msgid "" "The day you entered is not valid (should be between 01/01/1902 and " "12/31/2037)" msgstr "Введённый день должен быть между 01/01/1902 и 12/31/2037" msgid "Press [ENTER] to continue" msgstr "Нажмите [ENTER]" #, c-format msgid "Enter the day to go to [ENTER for today] : %s" msgstr "Переход на N-ый день [ENTER для текущего дня] : %s" msgid "unknown color" msgstr "неизвестный цвет" msgid "failed to open configuration file" msgstr "ошибка отрытия файла конфигурации" #, c-format msgid "invalid configuration directive: \"%s\"" msgstr "invalid configuration directive: \"%s\"" msgid "" "Pre-3.0.0 configuration file format detected, please upgrade running " "`calcurse-upgrade`." msgstr "" "Обнаружен конфгурационный файл версии ниже 3.0.0. Обновите, пожалуйста, " "запустив `calcurse-upgrade`." #, c-format msgid "configuration variable unknown: \"%s\"" msgstr "неизвестная настройка переменной: \"%s\"" #, c-format msgid "wrong configuration variable format for \"%s\"" msgstr "неверный формат переменной конфигурации для \"%s\"" msgid "Exit" msgstr "Выход" msgid "General" msgstr "Основные" msgid "Layout" msgstr "Располож." msgid "Sidebar" msgstr "Обрамление" msgid "Color" msgstr "Цвета" msgid "Notify" msgstr "Уведомление" msgid "Keys" msgstr "Клавиши" msgid "Select" msgstr "Выбрать" msgid "Up" msgstr "Вверх" msgid "Down" msgstr "Вниз" msgid "Left" msgstr "Влево" msgid "Right" msgstr "Вправо" msgid "Help" msgstr "Справка" msgid "layout configuration" msgstr "Настройки расположения" msgid "" "With this configuration menu, one can choose where panels will be\n" "displayed inside calcurse screen. \n" "It is possible to choose between eight different configurations.\n" "\n" "In the configuration representations, letters correspond to:\n" "\n" " 'c' -> calendar panel\n" "\n" " 'a' -> appointment panel\n" "\n" " 't' -> todo panel\n" "\n" msgstr "" "В этом меню настроек можно выбрать место расположение панелей,\n" "отображаемых на экране Calcurse. \n" "Возможен выбор из нескольких вариантов.\n" "\n" "Каждой из панелей соответствует своя буква:\n" "\n" " 'c' -> панель календаря\n" "\n" " 'a' -> панель задач\n" "\n" " 't' -> панель списка дел\n" "\n" msgid "Width +" msgstr "Ширина +" msgid "Width -" msgstr "Ширина -" #, no-c-format msgid "" "This configuration screen is used to change the width of the side bar.\n" "The side bar is the part of the screen which contains two panels:\n" "the calendar and, depending on the chosen layout, either the todo list\n" "or the appointment list.\n" "\n" "The side bar width can be up to 50% of the total screen width, but\n" "can't be smaller than " msgstr "" "В этом меню настроек регулируется ширина сторон.\n" "Экран состоит из двух сторон, одна из которых содержит\n" "две панели: панель календаря и, взависимости от настроек\n" "расположения, панель задач либо панель дел.\n" "\n" "Ширина сторон может занимать 50% от общего экрана,\n" "но она не может быть меньше изначальной " msgid "No color" msgstr "Цвет отсутствует" msgid "Foreground" msgstr "Передний фон" msgid "Background" msgstr "Задний фон" msgid "(terminal's default)" msgstr "(цвета терминала)" msgid "color theme" msgstr "Цветовая схема" msgid "(if set to YES, automatic save is done when quitting)" msgstr "(yes/no) Автосохранение при выходе из программы" msgid "(run the garbage collector when quitting)" msgstr "(yes/no) запустить сборщик мусора при выходе" msgid "(if not null, automatically save data every 'periodic_save' minutes)" msgstr "(N/0) Автосохранение каждые N минут. (для отмены '0')" msgid "(if set to YES, confirmation is required before quitting)" msgstr "(yes/no) Подтверждение выхода из программы" msgid "(if set to YES, confirmation is required before deleting an event)" msgstr "(yes/no) Подтверждение удаления событий" msgid "(if set to YES, messages about loaded and saved data will be displayed)" msgstr "(yes/no) Отображение уведомления о загрузке и сохранении данных" msgid "(if set to YES, progress bar will be displayed when saving data)" msgstr "(yes/no) Отображение полосы загрузки сохранения данных" msgid "Monday" msgstr "Пн" msgid "Sunday" msgstr "Вс" msgid "(specifies the first day of week in the calendar view)" msgstr "(указание первого дня недели в календаре)" msgid "(Format of the date to be displayed in non-interactive mode)" msgstr "Формат даты отображается в неинтерактивном режиме" msgid "(Format to be used when entering a date: " msgstr "Формат для ввода даты: " msgid "Enter an option number to change its value" msgstr "Введите номер настройки для изменения её параметра" msgid "(Press '^P' or '^N' to move up or down, 'Q' to quit)" msgstr "'^P' или '^N' - вверх/вниз, 'Q' - выхода" msgid "Enter the date format (see 'man 3 strftime' for possible formats) " msgstr "Задайте формат даты (см. 'man 3 strftime' для возможных форматов)" msgid "Enter the date format: " msgstr "Задайте формат даты: " msgid "Enter the delay, in minutes, between automatic saves (0 to disable) " msgstr "Введите задержку между автосохранениями (в минутах) или 0 для отмены " msgid "general options" msgstr "Основные настройки" msgid "Undefined option!" msgstr "Неопределённая настройка!" msgid "undefined" msgstr "неопределено" msgid "Key info" msgstr "Инфо клавиши" msgid "Add key" msgstr "Добавить клавишу" msgid "Del key" msgstr "Удалить клавишу" msgid "Prev Key" msgstr "Пред. клавиша" msgid "Next Key" msgstr "След. клавиша" msgid "keys configuration" msgstr "Настройка клавиш" msgid "Press the key you want to assign to:" msgstr "Нажмите клавишу, чтобы привязать её к:" msgid "This key is not yet recognized by calcurse, please choose another one." msgstr "Эта клавиша ещё не распознаётся calcurse, попробуйте другую." #, c-format msgid "This key is already in use for %s, please choose another one." msgstr "Эта клавиша уже используется для %s, попробуйте другую." msgid "Some actions do not have any associated key bindings!" msgstr "Некоторые действия не привязаны к клавишам!" msgid "" "Sorry, colors are not supported by your terminal\n" "(Press [ENTER] to continue)" msgstr "Цвета не поддерживаются вашим терминалом (Нажмите [ENTER])" msgid "unknown item type" msgstr "неизвестный тип записи" msgid "Event :" msgstr "Событие: " msgid "Appointment :" msgstr "Задача: " msgid "unknwon type" msgstr "неизвестный тип" #, c-format msgid "Could not stop daemon properly: %s\n" msgstr "Невозможно остановить демон должным образом: %s\n" #, c-format msgid "terminated at %s with signal %d\n" msgstr "завершено %s с сигналом %d\n" #, c-format msgid "Could not remove daemon lock file: %s\n" msgstr "Невозможно удалить демон: %s\n" #, c-format msgid "Could not fork: %s\n" msgstr "Невозможно разделить: %s\n" #, c-format msgid "Could not detach from the controlling terminal: %s\n" msgstr "Невозможно прервать с управляющего терминала: %s\n" #, c-format msgid "Could not change working directory: %s\n" msgstr "Невозможно выбрать рабочую директориюг: %s\n" msgid "Cannot daemonize, aborting\n" msgstr "Невозможно демонизировать процесс. Завершение\n" msgid "Could not set lock file\n" msgstr "Невозможно выбрать заблокированный файл\n" #, c-format msgid "Could not access \"%s\": %s\n" msgstr "Нет доступа \"%s\": %s\n" #, c-format msgid "started at %s\n" msgstr "запуск в %s\n" msgid "error loading next appointment\n" msgstr "ошибка при загрузке следующей задачи\n" #, c-format msgid "launching notification at %s for: \"%s\"\n" msgstr "запуск уведомления %s для: \"%s\"\n" msgid "error while sending notification\n" msgstr "ошибка во время отправки уведомления\n" #, c-format msgid "sleeping at %s for %d second\n" msgid_plural "sleeping at %s for %d seconds\n" msgstr[0] "спящий режим %s на %d сек.\n" msgstr[1] "спящий режим %s на %d сек.\n" msgstr[2] "спящий режим %s на %d сек.\n" #, c-format msgid "awakened at %s\n" msgstr "пробуждение %s\n" #, c-format msgid "Could not stop calcurse daemon: %s\n" msgstr "Невозможно остановить демон calcurse: %s\n" msgid "date error in the event\n" msgstr "ошибка даты в событии\n" msgid "Internal error: line too long" msgstr "Внутренняя ошибка: слишком длинная строка" msgid "out of memory" msgstr "нехватка памяти" #, c-format msgid "key bindings: %s" msgstr "привязки к клавише: '%s'" msgid "Calcurse help" msgstr "Справка" msgid " Welcome to Calcurse. This is the main help screen.\n" msgstr " Добро пожаловать в Calcurse. Это главный экран справки.\n" #, c-format msgid "" "Moving around: Press '%s' or '%s' to scroll text upward or downward\n" " inside help screens, if necessary.\n" "\n" " Exit help: When finished, press '%s' to exit help and go back to\n" " the main Calcurse screen.\n" "\n" " Help topic: At the bottom of this screen you can see a panel with\n" " different fields, represented by a letter and a short\n" " title. This panel contains all the available actions\n" " you can perform when using Calcurse.\n" " By pressing one of the letters appearing in this\n" " panel, you will be shown a short description of the\n" " corresponding action. At the top right side of the\n" " description screen are indicated the user-defined key\n" " bindings that lead to the action.\n" "\n" " Credits: Press '%s' for credits." msgstr "" "Перемещение: \t\tНажмите '%s' или '%s' при необходимости\n" " листать текст.\n" "\n" " Выйти:\t \tНажмите '%s' чтобы выйти из меню справки и\n" " вернуться в главный экран Calcurse.\n" "\n" " Справка: \t\tВнизу экрана находится панель с областью, в которой\n" " расположены символы и соответствующие им названия. Эта\n" " панель содержит действия, которые можно выполнять внутри \n" " органайзера Calcurse.\n" " По нажатию на клавишу символа, представленного в этой\n" " панели, будет показано короткое описание действия для\n" " данной клавиши.\n" "\n" "О программе: \tНажмите '%s' для информации о программе." msgid "Save\n" msgstr "Сохранить\n" #, c-format msgid "" "Save calcurse data.\n" "Data are splitted into four different files which contain :\n" "\n" " / ~/.calcurse/conf -> user configuration\n" " | (layout, color, general options)\n" " | ~/.calcurse/apts -> data related to the appointments\n" " | ~/.calcurse/todo -> data related to the todo list\n" " \\ ~/.calcurse/keys -> user-defined key bindings\n" "\n" "In the config menu, you can choose to save the Calcurse data\n" "automatically before quitting." msgstr "" "Сохранения данных.\n" "\n" "Данные каждого типа располагаются в след. файлах:\n" "\n" " / ~/.calcurse/conf -> пользовательские настройки\n" " | (располож., цвета, основ. настр.)\n" " | ~/.calcurse/apts -> данные, связанные с задачами\n" " | ~/.calcurse/todo -> данные, связанные со списком дел\n" " \\ ~/.calcurse/keys -> настройки соответствия клавиш\n" "\n" "В меню настроек вы можете выбрать автосохранение данных Calcurse\n" "при выходе из программы." msgid "Import\n" msgstr "Импорт\n" #, c-format msgid "" "Import data from an icalendar file.\n" "You will be asked to enter the file name from which to load ical\n" "items. At the end of the import process, and if the general option\n" "'system_dialogs' is set to 'yes', a report indicating how many items\n" "were imported is shown.\n" "This report contains the total number of lines read, the number of\n" "appointments, events and todo items which were successfully imported,\n" "together with the number of items for which problems occured and that\n" "were skipped, if any.\n" "\n" "If one or more items could not be imported, one has the possibility to\n" "read the import process report in order to identify which problems\n" "occured.\n" "In this report is shown one item per line, with the line in the input\n" "stream at which this item begins, together with the description of why\n" "the item could not be imported.\n" msgstr "" "Импорт данных из файла icalendar.\n" "Вам будет предложено указать файл, из которого потребуется импортировать\n" "ical записи. По окончании процесса импорта и при условии, что настройка\n" "'skip_system_dialogs' помечена как 'no', на экран будет выведен отчёт о\n" "количестве импортированных записях.\n" "Отчёт содержит итог о прочитанных строках, количестве задач, событий и дел\n" "которые были успешно импортированы. В тоже время, отчёт несёт информацию о\n" "количестве записей, которые были пропущены, с которыми возникли проблемы\n" "и др.\n" "\n" "Если одна или больше записей не были импортированы, есть возможность\n" "просмотреть отчёт и определить возникшую проблему.\n" "Информация в отчёте выводится построчно. В каждой строке находится\n" "запись и описание того, почему она не смогла быть импортирована.\n" msgid "Export\n" msgstr "Экспорт\n" #, c-format msgid "" "Export calcurse data (appointments, events and todos).\n" "This leads to the export submenu, from which you can choose between\n" "two different export formats: 'ical' and 'pcal'. Choosing one of\n" "those formats lets you export calcurse data to icalendar or pcal\n" "format.\n" "\n" "You first need to specify the file to which the data will be exported.\n" "By default, this file is:\n" "\n" " ~/calcurse.ics\n" "\n" "for an ical export, and:\n" "\n" " ~/calcurse.txt\n" "\n" "for a pcal export.\n" "\n" "Calcurse data are exported in the following order:\n" " events, appointments, todos.\n" msgstr "" "Экспорт данных (задачи, события и дела).\n" "В меню экспорта вам будет предложен выбор из двух\n" "форматов экспортных файлов: 'ical' и 'pcal'.\n" "Выберите формат для icalendar или для pcal.\n" "\n" "Сперва укажите файл, в который будет производиться экспорт.\n" "По-умолчанию, это файлы:\n" "\n" "\t\t~/calcurse.ics\n" "\n" "для ical, и:\n" "\t\t~/cacurse.txt\n" "\n" "для pcal.\n" "\n" "Calcurse экспортирует такие данные как:\n" " события, задачи, дела.\n" msgid "Displacement keys\n" msgstr "Назначение клавиш\n" #, c-format msgid "" "Move around inside calcurse screens.\n" "The following scheme summarizes how to get around:\n" "\n" " move up\n" " move to previous week\n" "\n" " %s\n" " move left ^ \n" " move to previous day |\n" " %s\n" " <-- + -->\n" " %s\n" " | move right\n" " v move to next day\n" " %s\n" "\n" " move to next week\n" " move down\n" "\n" "Moreover, while inside the calendar panel, the '%s' key moves\n" "to the first day of the week, and the '%s' key selects the last day of\n" "the week.\n" msgstr "" "Навигация внутри экрана Calcurse.\n" "Следуйте указаниям схемы:\n" "\n" " вверх\n" " предыдущая неделя\n" "\n" " %s\n" " влево ^ \n" " предыдущий день |\n" " %s\n" " <-- + -->\n" " %s\n" " | вправо\n" " v следующий день\n" " %s\n" "\n" " следующая неделя\n" " \tвниз\n" "\n" "Кроме того в панели календаря, клавиша '%s' перемещает\n" "к первому дню недели, а клавиша '%s' к последнему\n" "дню недели.\n" msgid "View\n" msgstr "Смотреть\n" #, c-format msgid "" "View the item you select in either the Todo or Appointment panel.\n" "\n" "This is usefull when an event description is longer than the available\n" "space to display it. If that is the case, the description will be\n" "shortened and its end replaced by '...'. To be able to read the entire\n" "description, just press '%s' and a popup window will appear, containing\n" "the whole event.\n" "\n" "Press any key to close the popup window and go back to the main\n" "Calcurse screen." msgstr "" "Позволит вам просмотреть выбранную запись в списке дел или на панели задач.\n" "\n" "Вы сможете посмотреть длинное описание события, которое не помещается\n" "в панели. Обычно описание, не помещающееся в панели, обрезается,\n" "заканчиваясь троеточием '...'. При необходимости просмотра описания \n" "события целиком, просто нажмите '%s'.\n" "\n" "Нажмите любую клавишу чтобы закрыть окно и вернуться в главный\n" "экран Calcurse." msgid "Pipe\n" msgstr "Программный канал (pipe)\n" #, c-format msgid "" "Pipe the selected item to an external program.\n" "\n" "Press the '%s' key to pipe the currently selected appointment or\n" "todo entry to an external program.\n" "\n" "You will be driven back to calcurse as soon as the program exits.\n" msgstr "" "Программный канал (pipe) выбранной записи к внешней программе.\n" "\n" "Нажмите клав. '%s' чтобы связать выбранную задачу или дело\n" "с внешней программой.\n" "\n" "Вы снова окажитесь в calcurse по окончанию выполнения программы.\n" msgid "Tab\n" msgstr "Таб.\n" #, c-format msgid "" "Switch between panels.\n" "The panel currently in use has its border colorized.\n" "\n" "Some actions are possible only if the right panel is selected.\n" "For example, if you want to add a task in the TODO list, you need first\n" "to press the '%s' key to get the TODO panel selected. Then you can\n" "press '%s' to add your item.\n" "\n" "Notice that at the bottom of the screen the list of possible actions\n" "change while pressing '%s', so you always know what action can be\n" "performed on the selected panel." msgstr "" "Переключение между панелями.\n" "Обрамление текущей панели выделяется другим цветом.\n" "\n" "Некоторые действия возможны только при нахождении на нужной панели.\n" "Например, если требуется добавить запись в список дел, необходимо,\n" "нажатием клавиши '%s', выбрать панель Дела. Тогда станет возможным\n" "добавления новой записи (клав.'%s').\n" "\n" "Внизу экрана находится перечень возможных действия, который меняется\n" "при выборе той или иной панели (клав.'%s'). Так вы всегда будете знать,\n" "какие действия доступны для текущей панели." msgid "Goto\n" msgstr "Перейти\n" #, c-format msgid "" "Jump to a specific day in the calendar.\n" "\n" "Using this command, you do not need to travel to that day using\n" "the displacement keys inside the calendar panel.\n" "If you hit [ENTER] without specifying any date, Calcurse checks the\n" "system current date and you will be taken to that date.\n" "\n" "Notice that pressing '%s', whatever panel is\n" "selected, will select current day in the calendar." msgstr "" "Переход к определённому дню в календаре.\n" "\n" "Используя переход, вам не нужно будет пользоваться\n" "клавишами перемещения внутри панели календаря.\n" "При нажатии [ENTER] без заданного дня, Calcurse\n" "проверит текущую дату и перейдёт на неё.\n" "\n" "Вне зависимости от текущей панели, нажатие клавиши '%s', выдедет текущую " "дату в календаре." msgid "Delete\n" msgstr "Удалить\n" #, c-format msgid "" "Delete an element in the ToDo or Appointment list.\n" "\n" "Depending on which panel is selected when you press the delete key,\n" "the hilighted item of either the ToDo or Appointment list will be \n" "removed from this list.\n" "\n" "If the item to be deleted is recurrent, you will be asked if you\n" "wish to suppress all of the item occurences or just the one you\n" "selected.\n" "\n" "If the general option 'confirm_delete' is set to 'YES', then you will\n" "be asked for confirmation before deleting the selected event.\n" "Do not forget to save the calendar data to retrieve the modifications\n" "next time you launch Calcurse." msgstr "" "Удаление записи в списках дел и задач.\n" "\n" "В зависимости от текущей панели, нажатие клавиши\n" "'Удалить', приведёт к удалению выделенной записи\n" "дела или задачи из соответствующего списка.\n" "\n" "Если удаляемая запись имеет повторения, вам\n" "будет предложено выбрать: удалить все записи\n" "либо только выделенную вами.\n" "\n" "Если в настройках 'confirm_delete' помечен как 'yes',\n" "потребуется подтвердить удаление выбранного события.\n" "Не забывайте сохранять данные для того, чтобы восстановить\n" "их при следующей загрузке Calcurse." msgid "Add\n" msgstr "Добавить\n" #, c-format msgid "" "Add an item in either the ToDo or Appointment list, depending on which\n" "panel is selected when you press '%s'.\n" "\n" "To enter a new item in the TODO list, you will need first to enter the\n" "description of this new item. Then you will be asked to specify the todo\n" "priority. This priority is represented by a number going from 9 for the\n" "lowest priority, to 1 for the highest one. It is still possible to\n" "change the item priority afterwards, by using the '%s' and '%s' keys\n" "inside the todo panel.\n" "\n" "If the APPOINTMENT panel is selected while pressing '%s', you will be\n" "able to enter either a new appointment or a new all-day long event.\n" "To enter a new event, press [ENTER] instead of the item start time, and\n" "just fill in the event description.\n" "To enter a new appointment to be added in the APPOINTMENT list, you\n" "will need to enter successively the time at which the appointment\n" "begins, the appointment length (either by specifying the end time in\n" "[hh:mm] or the duration in [+hh:mm], [+xxdxxhxxm] or [+mm] format), \n" "and the description of the event.\n" "\n" "The day at which occurs the event or appointment is the day currently\n" "selected in the calendar, so you need to move to the desired day before\n" "pressing '%s'.\n" "\n" "Notes:\n" " o if an appointment lasts for such a long time that it continues\n" " on the next days, this event will be indicated on all the\n" " corresponding days, and the beginning or ending hour will be\n" " replaced by '..' if the event does not begin or end on the day.\n" " o if you only press [ENTER] at the APPOINTMENT or TODO event\n" " description prompt, without any description, no item will be\n" " added.\n" " o do not forget to save the calendar data to retrieve the new\n" " event next time you launch Calcurse." msgstr "" "Добавить запись в список Дел или список Задач. Зависит от выбранной при " "помощи клав. '%s' панели.\n" "\n" "Для добавления нового дела, необходимо сначала ввести\n" "его описание. Далее будет предложено назначить приоритет\n" "дела. Приоритет - это значение между 9 (низкий) и 1 (высокий).\n" "Изменение приоритета впоследствии возможно с помощью клав. '%s' и '%s' при " "активной панели Дел.\n" "\n" "При выборе с помощью клав. '%s' панели Задач, возможно создать новую задачу " "или новое \"событие на весь день\".\n" "Для ввода нового события, нажмите [ENTER] вместо указания времени начала, а " "далее (по необходимости) составьте описание события.\n" "Для ввода новой задачи, которая добавится в список Задач, необходимо указать " "время начала задачи, время окончания (можно задать конкретно время в формате " "[чч:мм] или продолжительность в формате [+чч:мм], [+xxdxxhxxm], [+мм]), а " "далее составить (по необходимости) описание задачи.\n" "\n" "День, в котором намечаются задачи и события - текущий выбранный в календаре " "день. Выберите нужный вам день перед нажатием клавиши '%s'.\n" "\n" "\n" "Примечание:\n" " o Если продолжительность задачи более суток, она будет выводиться в " "последующих днях. В промежуточных между начальным и конечным днями, время " "начала и окончания задачи будет выглядеть как '..'. \n" " o При нажатии [ENTER] во время просьбы ввести описание задачи или дела, " "они не будут созданы.\n" " o Не забывайте сохранять данные, чтобы работать с ними при следующих " "запусках программы." msgid "Copy and Paste\n" msgstr "Копир. и Встав.\n" #, c-format msgid "" "Copy and paste the currently selected item. This is useful to quickly\n" "copy an item from one date to another. To do so, one must first\n" "highlight the item that needs to be copied, then press '%s' to copy.\n" "Once the new date is chosen in the calendar, the appointment panel must\n" "be selected and the '%s' key must be pressed to paste the item. The item\n" "will appear in the appointment panel, assigned to the newly selected\n" "date.\n" "\n" msgstr "" "Копировать и вставить выделенную запись. Позволяет быстро\n" "скопировать запись из одной даты в другую. Чтобы сделать это\n" "выделите необходимую запись и нажмите '%s' для копирования.\n" "Когда новая дата в календаре будет выбрана, перейдите на панель\n" "задач и нажмите '%s' - запись будет вставлена. Она также появится в панеле " "задач и ей будет присвоена новая, выбранная для неё дата.\n" "\n" msgid "Edit Item\n" msgstr "Изм. запись\n" #, c-format msgid "" "Edit the item which is currently selected.\n" "Depending on the item type (appointment, event, or todo), and if it is\n" "repeated or not, you will be asked to choose one of the item properties\n" "to modify. An item property is one of the following: the start time, the\n" "end time, the description, or the item repetition.\n" "Once you have chosen the property you want to modify, you will be shown\n" "its actual value, and you will be able to change it as you like.\n" "\n" "Notes:\n" " o if you choose to edit the item repetition properties, you will\n" " be asked to re-enter all of the repetition characteristics\n" " (repetition type, frequence, and ending date). Moreover, the\n" " previous data concerning the deleted occurences will be lost.\n" " o do not forget to save the calendar data to retrieve the\n" " modified properties next time you launch Calcurse." msgstr "" "Изменение выбранной записи.\n" "В зависимости от типа (задача, событие или дело) и повторяется ли запись\n" "или нет, вам будет предложено сделать те или иные изменения.\n" "Изменения относятся к таким параметрам как: начально время, конечное\n" "время, описание или повторение.\n" "При выборе изменяемого параметра, вам будет показано актуальное значение\n" "этого параметра. Измените его, если это необходимо.\n" "\n" "Примечание:\n" " o если изменению подлежит повторяющаяся запись, необходимо\n" " будет заново задать все параметры, относящиеся к повторению:\n" " (тип повторения, частоту, время окончания). Кроме того,\n" " прошлые данные об удалённых событиях будут утеряны.\n" " o не забывайте сохранять данные для того, чтобы восстановить\n" " их при следующей загрузке Calcurse." msgid "EditNote\n" msgstr "Изм.Заметку\n" #, c-format msgid "" "Attach a note to any type of item, or edit an already existing note.\n" "This feature is useful if you do not have enough space to store all\n" "of your item description, or if you would like to add sub-tasks to an\n" "already existing todo item for example.\n" "Before pressing the '%s' key, you first need to highlight the item you\n" "want the note to be attached to. Then you will be driven to an\n" "external editor to edit your note. This editor is chosen the following\n" "way:\n" " o if the 'VISUAL' environment variable is set, then this will be\n" " the default editor to be called.\n" " o if 'VISUAL' is not set, then the 'EDITOR' environment variable\n" " will be used as the default editor.\n" " o if none of the above environment variables is set, then\n" " '/usr/bin/vi' will be used.\n" "\n" "Once the item note is edited and saved, quit your favorite editor.\n" "You will then go back to Calcurse, and the '>' sign will appear in front\n" "of the highlighted item, meaning there is a note attached to it." msgstr "" "Прикрепить заметку к любому типу записи или изменить уже имеющуюся.\n" "Используется в случае длинного описания - когда на описание не хватает\n" "места. Либо, например, для добавления какой либо информации к уже\n" "имеющимся делам.\n" "До нажатия на клавишу '%s', нужно выделить запись, к которой необходимо\n" "добавить заметку. Нажатие запустит внешний редактор в котором будет\n" "возможно создать заметку. Редактор выбирается следующим\n" "образом:\n" " o если переменная 'VISUAL' задана, то используется\n" " ипользуется редактор по-умолчанию.\n" " o если переменная 'VISUAL' не задана, то используется\n" " значение переменной 'EDITOR'.\n" " o если не заданы обе переменных, то используется\n" " '/usr/bin/vi'.\n" "\n" "Когда запись будет создана, можно выходить из выбранного редактора.\n" "Вы вернётесь в экран Calcurse, где можно будет увидеть, что запись,\n" "к которой была добавлена заметка, помечена знаком '>'." msgid "ViewNote\n" msgstr "См.Заметку:\n" #, c-format msgid "" "View a note which was previously attached to an item (an item which\n" "owns a note has a '>' sign in front of it).\n" "This command only permits to view the note, not to edit it (to do so,\n" "use the 'EditNote' command, by pressing the '%s' key).\n" "Once you highlighted an item with a note attached to it, and the '%s' key\n" "was pressed, you will be driven to an external pager to view that note.\n" "The default pager is chosen the following way:\n" " o if the 'PAGER' environment variable is set, then this will be\n" " the default viewer to be called.\n" " o if the above environment variable is not set, then\n" " '/usr/bin/less' will be used.\n" "As for editing a note, quit the pager and you will be driven back to\n" "Calcurse." msgstr "" "Просмотреть заметку, заранее прикреплённую к записи (записи, имеющие\n" "заметки, помечаются знаком '>').\n" "Эта команда даст возможность лишь просмотреть заметку, но не изменить\n" "её (для этого используйте команду 'Изм.Заметку' (клав. '%s')).\n" "При выборе записи с прикреплённой заметкой и нажатии на клавишу '%s',\n" "будет запущен просмотрщик заметок.\n" "Просмотрщик выбирается след. образом:\n" " o если переменная 'PAGER' задана, то\n" " используется просмотрщик по-умолчанию.\n" " o если переменная не задана, испольуется\n" " '/usr/bin/less'.\n" "Как и в случае с изменением заметки, выход из просмотрщика\n" "вернёт вас к экрану Calcurse." msgid "Priority\n" msgstr "Приоритет\n" #, c-format msgid "" "Change the priority of the currently selected item in the ToDo list.\n" "Priorities are represented by the number appearing in front of the\n" "todo description. This number goes from 9 for the lowest priority to\n" "1 for the highest priority.\n" "Todo having higher priorities are placed first (at the top) inside the\n" "todo panel.\n" "\n" "If you want to raise the priority of a todo item, you need to press '%s'.\n" "In doing so, the number in front of this item will decrease, meaning its\n" "priority increases. The item position inside the todo panel may change,\n" "depending on the priority of the items above it.\n" "\n" "At the opposite, to lower a todo priority, press '%s'. The todo position\n" "may also change depending on the priority of the items below." msgstr "" "Установить приоритет для выбранной записи в списке дел.\n" "Приоритеты представлены числами, стоящими перед описанием\n" "дела. Число 9 сообщает, что приоритет записи низкий, а\n" "число 1, что приоритет высокий.\n" "Запись с высоким приоритетом находится выше по списку, чем запись с более " "низким приоритетом.\n" "\n" "Если необходимо увеличить приоритет записи, нажимайте клавишу '%s'.\n" "Значение перед описанием дела будет уменьшаться, тем самым повышая\n" "приоритет. Позиция записи внутри списка дел, может быть выбрана\n" "путём изменения приоритетов.\n" "\n" "Наоборот, для понижения приоритета, нажимайте клавишу '%s'. Запись,\n" "в таком случае, будет опускаться ниже по списку дел." msgid "Repeat\n" msgstr "Повторить:\n" #, c-format msgid "" "Repeat an event or an appointment.\n" "You must first select the item to be repeated by moving inside the\n" "appointment panel. Then pressing '%s' will lead you to a set of three\n" "questions, with which you will be able to specify the repetition\n" "characteristics:\n" "\n" " o type: you can choose between a daily, weekly, monthly or\n" " yearly repetition by pressing 'D', 'W', 'M' or 'Y'\n" " respectively.\n" "\n" " o frequence: this indicates how often the item shall be repeated.\n" " For example, if you want to remember an anniversary,\n" " choose a 'yearly' repetition with a frequence of '1',\n" " which means it must be repeated every year. Another\n" " example: if you go to the restaurant every two days,\n" " choose a 'daily' repetition with a frequence of '2'.\n" "\n" " o ending date: this specifies when to stop repeating the selected\n" " event or appointment. To indicate an endless \n" " repetition, enter '0' and the item will be repeated\n" " forever.\n" "\n" "Notes:\n" " o repeated items are marked with an '*' inside the appointment\n" " panel, to be easily recognizable from non-repeated ones.\n" " o the 'Repeat' and 'Delete' command can be mixed to create\n" " complicated configurations, as it is possible to delete only\n" " one occurence of a repeated item." msgstr "" "Повторение событий или задач.\n" "Внутри панели задач, необходимо выбрать запись, которая будет\n" "повторяться. Нажмите на клавишу '%s' чтобы задать настройки для\n" "повторения. Параметров повторения три:\n" "\n" " o Тип: \tвыбор между ежедневным, еженедельным, ежемесячным\n" " или ежегодным повторениями. Выберите нажатием на 'D',\n" " 'W', 'M', или 'Y'\n" "\n" " o Частота: \tуказание как часто запись будет повторяться.\n" " Например, чтобы запомнить годовщину, выберите\n" " тип 'ежегодно', а частоту установите равной '1'.\n" " Запись будет повторяться раз в год. Другой пример:\n" " если вы ужинаете в ресторане раз в два дня, выберите\n" " тип 'ежедневно', а частоту повторения равной '2'.\n" "\n" " o Окончание: \tнеобходимо для прекращения повторения события или\n" " задачи. Установите значение окончания повторения\n" " равным '0' и запись будет повторяться\n" " бесконечно.\n" "\n" "\t Примечание:\n" " o повторяемая запись помечается '*' внутри панели задач для\n" " того, чтобы отличаться от неповторяемых записей.\n" " o при удалении повторяемая записи, необходимо выбрать\n" " цель удаления: только эту повторяющуюся запись или все\n" " повторения целиком." msgid "Flag Item\n" msgstr "Отметить запись\n" #, c-format msgid "" "Toggle an appointment's 'important' flag or a todo's 'completed' flag.\n" "If a todo is flagged as completed, its priority number will be replaced\n" "by an 'X' sign. Completed tasks will no longer appear in exported data\n" "or when using the '-t' command line flag (unless specifying '0' as the\n" "priority number, in which case only completed tasks will be shown).\n" "\n" "If an appointment is flagged as important, an exclamation mark appears\n" "in front of it, and you will be warned if time gets closed to the\n" "appointment start time.\n" "To customize the way one gets notified, the configuration submenu lets\n" "you choose the command launched to warn user of an upcoming appointment,\n" "and how long before it he gets notified." msgstr "" "Установка флагов 'important' для задач и 'completed' для дел.\n" "Если дело выполнено, его приоритет становится равен 'X'.\n" "Выполненные дела не будут больше появляться как в экспортирумых данных,\n" "так и при использовании ключа '-t' в командной строке (если не указан\n" "'0' как приоритет. В этом случае выводятся только выполненные дела).\n" "\n" "Если задача помечена как важная, слева от неё ставится символ\n" "восклицательного знака. Вы будете уведомлены о наступлении времени\n" "начала задачи.\n" "Меню настроек предоставляет выбор команды запуска уведомления о\n" "наступающем времени начала задачи, а так же возможность задать\n" "промежуток между задачей и временем уведомления о ней." msgid "Config\n" msgstr "Настройка:\n" #, c-format msgid "" "Open the configuration submenu.\n" "From this submenu, you can select between color, layout, notification\n" "and general options, and you can also configure your keybindings.\n" "\n" "The color submenu lets you choose the color theme.\n" "The layout submenu lets you choose the Calcurse screen layout, in other\n" "words where to place the three different panels on the screen.\n" "The general options submenu brings a screen with the different options\n" "which modifies the way Calcurse interacts with the user.\n" "The notify submenu allows you to change the notify-bar settings.\n" "The keys submenu lets you define your own key bindings.\n" "\n" "Do not forget to save the calendar data to retrieve your configuration\n" "next time you launch Calcurse." msgstr "" "Открыть экран настроек.\n" "В этом экране доступны следущие категории: цвета, панель\n" "уведомления, основные настройки, настройки клавиш.\n" "\n" "Категория 'Цвета' позволяет выбрать цветовую схему.\n" "Категория 'Располож.' позволяет настроить месторасположение\n" "панелей на экране Calcurse.\n" "Категория 'Основные' позволяет изменить настройки,\n" "определяющие поведение Calcurse.\n" "Категория 'Уведомление' позволяет изменить настройки окна уведомления.\n" "Категория 'Клавиши' позволяет настроить горячие клавиши.\n" "\n" "Обязательно сохраните данные, чтобы заданные настройки\n" "восстановились при следующей загрузке Calcurse." msgid "Generic keybindings\n" msgstr "Осн. комбинации клавиш\n" #, c-format msgid "" "Some of the keybindings apply whatever panel is selected. They are\n" "called generic keybinding.\n" "Here is the list of all the generic key bindings, together with their\n" "corresponding action:\n" "\n" " '%s' : Redraw function -> redraws calcurse panels, this is useful if\n" " you resize your terminal screen or when\n" " garbage appears inside the display\n" " '%s' : Add Appointment -> add an appointment or an event\n" " '%s' : Add ToDo -> add a todo\n" " '%s' : -1 Day -> move to previous day\n" " '%s' : +1 Day -> move to next day\n" " '%s' : -1 Week -> move to previous week\n" " '%s' : +1 Week -> move to next week\n" " '%s' : -1 Month -> move to previous month\n" " '%s' : +1 Month -> move to next month\n" " '%s' : -1 Year -> move to previous year\n" " '%s' : +1 Year -> move to next year\n" " '%s' : Goto today -> move to current day\n" "\n" "The '%s' and '%s' keys are used to scroll text upward or downward\n" "when inside specific screens such the help screens for example.\n" "They are also used when the calendar screen is selected to switch\n" "between the available views (monthly and weekly calendar views)." msgstr "" "Некоторые значения клавиш не зависят от текущей панели. Они называются " "Основными клавишами.\n" "Далее список всех основных клавиш вместе с обозначением их действия:\n" "\n" "'%s' : Обновление -> обновляет экран Calcurse. Это полезно при изменении " "размера терминала или уборки \"мусора\" c экрана..\n" "'%s' : Доб. задачу -> добавить нов. задачу или событие\n" "'%s' : Доб. дело -> добавить нов. дело\n" "'%s' : -1 День -> на день назад\n" "'%s' : +1 День -> на день вперёд\n" "'%s' : -1 Неделя -> на неделю назад\n" "'%s' : +1 Неделя -> на неделю вперёд\n" "'%s' : -1 Месяц -> на месяц назад\n" "'%s' : +1 Месяц -> на месяц вперёд\n" "'%s' : -1 Год -> на год назад\n" "'%s' : +1 Год -> на год вперёд\n" "'%s' : Переход -> на текущий день\n" "\n" "Клавиши ''%s' и '%s' используются для прокрутки текста вверх или вниз внутри " "определённого экрана, например экран справки.\n" "Так же они используются в панеле календаря для переключения между двумя его " "видами (вид недели и вид месяца)." msgid "OtherCmd\n" msgstr "...\n" #, c-format msgid "" "Switch between status bar help pages.\n" "Because the terminal screen is too narrow to display all of the\n" "available commands, you need to press '%s' to see the next set of\n" "commands together with their keybindings.\n" "Once the last status bar page is reached, pressing '%s' another time\n" "leads you back to the first page." msgstr "" "Переход к следующей странице команд.\n" "В связи с тем, что экран терминала не позволяет отобразить\n" "все команды, необходимо нажать клавишу '%s' чтобы увидеть\n" "другие команды и привязанные к ним клавиши.\n" "Когда текущая страница списка команд является последней, нажмите\n" "клавишу '%s' чтобы вернуться на первую страницу." msgid "Calcurse - text-based organizer" msgstr "Calcurse - текстовый органайзер" #, c-format msgid "" "\n" "Copyright (c) 2004-2013 calcurse Development Team\n" "All rights reserved.\n" "\n" "Redistribution and use in source and binary forms, with or without\n" "modification, are permitted provided that the following conditions\n" "are met:\n" "\n" "\t- Redistributions of source code must retain the above\n" "\t copyright notice, this list of conditions and the\n" "\t following disclaimer.\n" "\n" "\t- Redistributions in binary form must reproduce the above\n" "\t copyright notice, this list of conditions and the\n" "\t following disclaimer in the documentation and/or other\n" "\t materials provided with the distribution.\n" "\n" "\n" "Send your feedback or comments to : misc@calcurse.org\n" "Calcurse home page : http://calcurse.org" msgstr "" "\n" "Copyright (c) 2004-2011 calcurse Development Team\n" "All rights reserved.\n" "\n" "Redistribution and use in source and binary forms, with or without\n" "modification, are permitted provided that the following conditions\n" "are met:\n" "\n" "»- Redistributions of " "source code must retain the above\n" "» copyright notice, " "this list of conditions and the\n" "» following " "disclaimer.\n" "\n" "»- Redistributions in " "binary form must reproduce the above\n" "» copyright notice, " "this list of conditions and the\n" "» following " "disclaimer in the documentation and/or other\n" "» materials provided " "with the distribution.\n" "\n" "\n" "Присылайте отзывы на : misc@calcurse.org\n" "Домашняя страница Calcurse : http://calcurse.org" msgid "unknown ical type" msgstr "неизвестный тип ical" msgid "recurrence frequence not found." msgstr "частота повторений не найдена." msgid "recurrence frequence not recognized." msgstr "частота повторений не распознана." msgid "recurrence rule malformed." msgstr "рекурентные правила повреждены." msgid "recurrence exception dates malformed." msgstr "рекурентные соотношения дат повреждены." msgid "could not get entire item description." msgstr "невозможно получить описание полностью." msgid "description malformed." msgstr "описание повреждено." msgid "appointment has no start time." msgstr "задача не имеет начального времени." msgid "could not compute duration (no end time)." msgstr "невозможно вычислить продолжительность (нет времени окончания)." msgid "item has a negative duration." msgstr "значение имеет отрицательную продолжительность." msgid "event date is not defined." msgstr "дата события не определена." msgid "item could not be identified." msgstr "значение не может быть распознано." msgid "could not retrieve item summary." msgstr "невозможно восстановить суммарные записи." msgid "could not retrieve event start time." msgstr "невозможно восстановить время начала события." msgid "could not retrieve event end time." msgstr "невозможно восстановить время окончания события." msgid "item duration malformed." msgstr "значение продолжительности повреждено." msgid "The ical file seems to be malformed. The end of item was not found." msgstr "Файл ical скорее всего повреждён. Не найдено окончание записи." msgid "item priority is not acceptable (must be between 1 and 9)." msgstr "Значение приоритета должно быть между 1 и 9." msgid "Warning: ical header malformed or wrong version number. Aborting..." msgstr "" "Внимание: заголовок ical повреждён или неправильный номер версии. " "Завершение..." msgid "Enter the new time ([hh:mm] or [hhmm]) : " msgstr "Новое время ([чч:мм] или [ччмм]): " msgid "Press [Enter] to continue" msgstr "Нажмите [Enter]" msgid "You entered an invalid time, should be [hh:mm] or [hhmm]" msgstr "Неверно указано время, должно быть [чч:мм] или [ччмм]" msgid "" "Enter new end time ([hh:mm], [hhmm]) or duration ([+hh:mm], [+xxxdxxhxxm] or " "[+mm]) : " msgstr "" "Окончание ([чч:мм], [ччмм]) или задержка ([+чч:мм], [+хххДххЧххМ] или " "[+мм]): " msgid "Invalid time: start time must be before end time!" msgstr "Неверное время: время начала должно идти до времени конца" msgid "Enter the new item description:" msgstr "Описание: " msgid "Enter the new repetition type:" msgstr "Введите тип повторения:" msgid "(d)aily" msgstr "(d)ежедневно" msgid "(w)eekly" msgstr "(w)еженедельно" msgid "(m)onthly" msgstr "(m)ежемесячно" msgid "(y)early" msgstr "(y)ежегодно" #, c-format msgid "(currently using %s)" msgstr "(используется %s)" msgid "[dwmy]" msgstr "[днмг]" msgid "The frequence you entered is not valid." msgstr "Неверно введена частота повторения." msgid "The entered date is not valid." msgstr "Неверно введена дата." #, c-format msgid "Possible formats are [%s] or '0' for an endless repetition." msgstr "[%s] или '0'- возможные форматы для окончания повторения." msgid "Enter the new repetition frequence:" msgstr "Новая частота повторения:" #, c-format msgid "Enter the new ending date: [%s] or '0'" msgstr "Новая дата окончания: [%s] или '0'" msgid "Description" msgstr "Описание" msgid "Repetition" msgstr "Повторение" msgid "Edit: " msgstr "Редактировать:" msgid "Start time" msgstr "Начальное время" msgid "End time" msgstr "Конечное время" msgid "Pipe item to external command:" msgstr "Программный канал (pipe) во внешнюю команду:" msgid "" "Enter start time ([hh:mm] or [hhmm]), leave blank for an all-day event : " msgstr "" "Начало ([чч:мм] или [ччмм]). Оставьте пустым если событие займёт весь день: " msgid "" "Enter end time ([hh:mm] or [hhmm]) or duration ([+hh:mm], [+xxxdxxhxxm] or " "[+mm]) : " msgstr "" "Окончание ([чч:мм], [ччмм]) или задержка ([+чч:мм], [+хххДххЧххМ] или " "[+мм]): " msgid "Enter description :" msgstr "Описание: " msgid "You entered an invalid start time, should be [hh:mm] or [hhmm]" msgstr "Неверно указано начальное время, должно быть [чч:мм] или [ччмм]" msgid "" "Invalid end time/duration, should be [hh:mm], [hhmm], [+hh:mm], " "[+xxxdxxhxxm] or [+mm]" msgstr "" "Неверно указано конечное время/задержка, должно быть [+чч:мм], [+хххДххЧххМ] " "или [+мм]" msgid "Do you really want to delete this item ?" msgstr "Удалить?" msgid "This item is recurrent. Delete (a)ll occurences or just this (o)ne ?" msgstr "" "Эта запись имеет повторения. Удалить (a)все подобные записи или только " "(o)эту ?" msgid "[ao]" msgstr "[ао]" msgid "This item has a note attached to it. Delete (i)tem or just its (n)ote ?" msgstr "Эта запись содержит заметку. Удалить (i)запись или только (n)заметку ?" msgid "[in]" msgstr "[в]" msgid "no such type" msgstr "отсутствие типа" msgid "Enter the new ToDo item : " msgstr "Дело: " msgid "Enter the ToDo priority [1 (highest) - 9 (lowest)] :" msgstr "Приоритет дела [1 (высокий) - 9 (низкий)] :" msgid "Do you really want to delete this task ?" msgstr "Удалить эту запись?" msgid "This item has a note attached to it. Delete (t)odo or just its (n)ote ?" msgstr "К делу прикреплена записка. Удалить (t)дело или только (n)записку ?" msgid "[tn]" msgstr "[tn]" msgid "Enter the new ToDo description :" msgstr "Описание дела: " msgid "Enter the repetition type:" msgstr "Назначить тип повторения:" msgid "Enter the repetition frequence:" msgstr "Количество повторений: " #, c-format msgid "Enter the ending date: [%s] or '0' for an endless repetition" msgstr "Конечная дата: [%s] или '0' для окончания повторения" #, c-format msgid "Possible formats are [%s] or '0' for an endless repetition" msgstr "Возможные форматы [%s] или '0' для окончания повторения" msgid "This item is already a repeated one." msgstr "Эта запись уже повторяется." msgid "Press [ENTER] to continue." msgstr "Нажмите [ENTER]." msgid "Sorry, the date you entered is older than the item start time." msgstr "Заданная дата не соответствует времени начала записи." msgid "wrong item type" msgstr "неправильный тип записи" msgid "Saving..." msgstr "Сохранение..." msgid "Loading..." msgstr "Загрузка..." msgid "Exporting..." msgstr "Экспорт..." msgid "Internal error while displaying progress bar" msgstr "Внутренняя ошибка во время вывода полосы загрузки" msgid "Choose the file used to export calcurse data:" msgstr "Выберите файл для экспорта данных:" msgid "The file cannot be accessed, please enter another file name." msgstr "Файл не может быть добавлен, попробуйте другое имя файла." #, c-format msgid "Failed to open \"%s\", - %s\n" msgstr "Ошибка открытия \"%s\", - %s\n" msgid "Failed to build message\n" msgstr "Ошибка создания сообщения\n" #, c-format msgid "Failed to print message \"%s\"\n" msgstr "Ошибка вывода сообщения \"%s\"\n" #, c-format msgid "Failed to close \"%s\" - %s\n" msgstr "Ошибка закрытия \"%s\" - %s\n" #, c-format msgid "%s does not exist, create it now [y or n] ? " msgstr "%s не существует, создать его [y/n]? " msgid "aborting...\n" msgstr "завершение...\n" #, c-format msgid "%s successfully created\n" msgstr "%s создание завершено\n" msgid "starting interactive mode...\n" msgstr "запускается интерактивный режим...\n" msgid "Problems accessing data file ..." msgstr "Проблемы с доступом к файлу данных..." msgid "The data files were successfully saved" msgstr "Файл данных успешно сохранён" msgid "failed to open appointment file" msgstr "ошибка открытия файла задач" msgid "syntax error in the item date" msgstr "опечатка в записе даты" msgid "no event nor appointment found" msgstr "события и задачи не найдены" msgid "syntax error in item time or duration" msgstr "опечатка в записи даты или продолжительности" msgid "syntax error in item identifier" msgstr "опечатка в записи опознавателя" msgid "wrong format in the appointment or event" msgstr "неверный формат события или задачи" msgid "syntax error in item repetition" msgstr "опечатка в записи повторения" msgid "failed to open todo file" msgstr "ошибка открытия todo-файла" msgid "failed to open key file" msgstr "ошибка открытия файла ключа" msgid "" "\n" "Too many errors while reading configuration file!\n" "Please backup your keys file, remove it from directory, and launch calcurse " "again.\n" msgstr "" "\n" "Обнаружены ошибки при чтении файла настроек!\n" "Сделайте копию keys-файла, удалите его из каталога и запустите calcurse " "снова.\n" msgid "Could not read key label" msgstr "Невозможно распознать клавишу" msgid "Key label not recognized" msgstr "Клавиша не опознана" #, c-format msgid "Error reading key: \"%s\"" msgstr "Ошибка чтения клавиши: \"%s\"" #, c-format msgid "\"%s\" assigned multiple times!" msgstr "\"%s\" определено множество времён!" msgid "There were some errors when loading keys file, see log file ?" msgstr "Возникли ошибки при загрузке keys-файла. Смотреть log-файл ?" msgid "Too many errors while reading keys file, aborting..." msgstr "Обнаружены ошибки при чтении keys-файла, отмена..." #, c-format msgid "FATAL ERROR: could not create %s: %s\n" msgstr "ФАТАЛЬНАЯ ОШИБКА: невозможно создать %s: %s\n" msgid "Welcome to Calcurse. Missing data files were created." msgstr "Добро пожаловать в Calcurse. Отсутствующие файлы данных будут созданы." msgid "Data files found. Data will be loaded now." msgstr "Данные найдены и будут загружены" msgid "The data were successfully exported" msgstr "Данные успешно экспортированы" msgid "unknown export type" msgstr "неизвестный тип экспорта" msgid "wrong export mode" msgstr "ошибочный режим экспорта" msgid "Enter the file name to import data from:" msgstr "Имя файла для импорта: " #, c-format msgid "Import process report: %04d lines read " msgstr "Отчёт импорта: прочитано %04d строк" msgid "unknown import type" msgstr "неизвестный тип импорта" msgid "FATAL ERROR: the input file cannot be accessed, Aborting..." msgstr "ФАТАЛЬНАЯ ОШИБКА: входящий файл не может быть добавлен. Завершение..." msgid "FATAL ERROR: wrong import mode" msgstr "ФАТАЛЬНАЯ ОШИБКА: неправильный режим импорта" #, c-format msgid "%d app" msgid_plural "%d apps" msgstr[0] "%d app" msgstr[1] "%d apps" msgstr[2] "%d apps" #, c-format msgid "%d event" msgid_plural "%d events" msgstr[0] "%d событие" msgstr[1] "%d события" msgstr[2] "%d события" #, c-format msgid "%d todo" msgid_plural "%d todos" msgstr[0] "%d дело" msgstr[1] "%d дела" msgstr[2] "%d дела" #, c-format msgid "%d skipped" msgstr "%d пропущен" msgid "Some items could not be imported, see log file ?" msgstr "Некоторые записи не были импортированы. Открыть log-файл?" msgid "Warning: could not create temporary log file, Aborting..." msgstr "Внимание: невозможно создать временный log-файл. Завершение..." msgid "Warning: could not open temporary log file, Aborting..." msgstr "Внимание: невозможно открыть временный log-файл. Завершение..." msgid "No log file to display!" msgstr "Нет log-файла для отображения!" #, c-format msgid "Warning: could not erase temporary log file %s, Aborting..." msgstr "Внимание: невозможно очистить временный log-файл %s. Завершение..." msgid "Invalid delay" msgstr "Неверная задержка" #, c-format msgid "" "\n" "WARNING: it seems that another calcurse instance is already running.\n" "If this is not the case, please remove the following lock file: \n" "\"%s\"\n" "and restart calcurse.\n" msgstr "" "\n" "ВНИМАНИЕ: calcurse уже запущен.\n" "Если это не так, удалите заблокированный файл: \n" "\"%s\"\n" "и перезапустите calcurse.\n" msgid "" "#\n" "# Calcurse keys configuration file\n" "#\n" "# This file sets the keybindings used by Calcurse.\n" "# Lines beginning with \"#\" are comments, and ignored by Calcurse.\n" "# To assign a keybinding to an action, this file must contain a line\n" "# with the following syntax:\n" "#\n" "# ACTION KEY1 KEY2 ... KEYn\n" "#\n" "# Where ACTION is what will be performed when KEY1, KEY2, ..., or KEYn\n" "# will be pressed.\n" "#\n" "# To define bindings which use the CONTROL key, prefix the key with 'C-'.\n" "# The escape, space bar and horizontal Tab key can be specified using\n" "# the 'ESC', 'SPC' and 'TAB' keyword, respectively.\n" "# Arrow keys can also be specified with the UP, DWN, LFT, RGT keywords.\n" "# Last, Home and End keys can be assigned using 'KEY_HOME' and 'KEY_END'\n" "# keywords.\n" "#\n" "# A description of what each ACTION keyword is used for is available\n" "# from calcurse online configuration menu.\n" msgstr "" "#\n" "#Конфигурационный файл горячих клавиш calcurse\n" "#\n" "#Файл задаёт привязку действий к клавишам Calcurse.\n" "#Линии, начинающиеся с \"#\", есть комментарии и игнорируются Calcurse.\n" "#Для привязки горячей клавиши к действию, в файл необходимо написать " "строку,\n" "#используя следующий синтаксис:\n" "#\n" "#\tДЕЙСТВИЕ КЛАВ.1 КЛАВ.2 ... КЛАВ.N\n" "#\n" "#Где ДЕЙСТВИЕ - это ЧТО должно происходить при нажатии на клавиши КЛАВ.1, \n" "# ..., или КЛАВ.N\n" "#\n" "#Для использования связки Ctrl + \"горячая клавиша\", используйте префикс " "'C-'.\n" "#Escape, пробел, клавиша табуляции - обозначаются 'ESC', 'SPC' и 'TAB'\n" "#соответственно.\n" "#Клавиши стрелок обозначаются как UP, DWN, LFT, RGT.\n" "#Последнее, клавиши Home и End имеют обозначение 'KEY_HOME'\n" "#и 'KEY_END'.\n" "#\n" "#Описание каждой используемой клавиши ДЕЙСТВИЕ доступно\n" "#из меню настроек calcurse\n" msgid "FATAL ERROR: could not create default keys file." msgstr "FATAL ERROR: could not create default keys file." msgid "FATAL ERROR: key value out of bounds" msgstr "FATAL ERROR: key value out of bounds" msgid "Cancel the ongoing action." msgstr "Отмена постоянного действия." msgid "Select the highlighted item." msgstr "Выбрать подсвеченную запись." msgid "Print general information about calcurse's authors, license, etc." msgstr "Просмотреть основную информацию об авторах, лицензии и т.п." msgid "Display hints whenever some help screens are available." msgstr "Показать справку, если таковая имеется." msgid "Exit from the current menu, or quit calcurse." msgstr "Выйти из текущего меню или из calcurse" msgid "Save calcurse data." msgstr "Сохр. данные calcurse" msgid "Copy the item that is currently selected." msgstr "Копировать выделенную запись (пункт?)" msgid "Paste an item at the current position." msgstr "Вставить запись в текущую позицию" msgid "Select next panel in calcurse main screen." msgstr "Выбрать след. панель на главном экране calcurse" msgid "Import data from an external file." msgstr "Импортированть данные с внешнего файла." msgid "Export data to a new file format." msgstr "Экспортировать данные в файл." msgid "Select the day to go to." msgstr "Выбрать день для перехода на него." msgid "Show next possible actions inside status bar." msgstr "Отобразить в полосе статуса ещё одни возможные действия. " msgid "Enter the configuration menu." msgstr "Войти в меню настроек." msgid "Redraw calcurse's screen." msgstr "Обновить экран calcurse" msgid "Add an appointment, whichever panel is currently selected." msgstr "Добавить Задачу. Может быть выбрана любая панель." msgid "Add a todo item, whichever panel is currently selected." msgstr "Добавить Дело. Может быть выбрана любая панель." msgid "" "Move to previous day in calendar, whichever panel is currently selected." msgstr "Предыдущий день календаря. Может быть выбрана любая панель." msgid "Move to next day in calendar, whichever panel is currently selected." msgstr "Следующий день календаря. Может быть выбрана любая панель." msgid "" "Move to previous week in calendar, whichever panel is currently selected" msgstr "Предыдущая неделя календаря. Может быть выбрана любая панель." msgid "Move to next week in calendar, whichever panel is currently selected." msgstr "Следующая неделя календаря. Может быть выбрана любая панель." msgid "" "Move to previous month in calendar, whichever panel is currently selected" msgstr "Предыдущий месяц календаря. Может быть выбрана любая панель." msgid "Move to next month in calendar, whichever panel is currently selected." msgstr "Следующий месяц календаря. Может быть выбрана любая панель." msgid "" "Move to previous year in calendar, whichever panel is currently selected" msgstr "Предыдущий год календаря. Может быть выбрана любая панель." msgid "Move to next year in calendar, whichever panel is currently selected." msgstr "Следующий год календаря. Может быть выбрана любая панель." msgid "Scroll window down (e.g. when displaying text inside a popup window)." msgstr "Прокрутить окно вниз (прим.: показ текста внутри всплыв. окна)." msgid "Scroll window up (e.g. when displaying text inside a popup window)." msgstr "Прокрутить окно вверх (прим.: показ текста внутри всплыв. окна)." msgid "Go to today, whichever panel is selected." msgstr "Текущая дата. Может быть выбрана любая панель." msgid "Move to the right." msgstr "Вправо" msgid "Move to the left." msgstr "Влево" msgid "Move down." msgstr "Вниз" msgid "Move up." msgstr "Вверх" msgid "" "Select the first day of the current week when inside the calendar panel." msgstr "Выбрать первый день текущей недели внутри панели календаря." msgid "Select the last day of the current week when inside the calendar panel." msgstr "Выбрать последний день текущей недели внутри панели календаря." msgid "Add an item to the currently selected panel." msgstr "Добавить запись в выбранную панель." msgid "Delete the currently selected item." msgstr "Удалить выбранную запись." msgid "Edit the currently seleted item." msgstr "Изменить выбранную запись." msgid "Display the currently selected item inside a popup window." msgstr "Просмотреть выбранную запись во всплывающем окне." msgid "Flag the currently selected item as important." msgstr "Пометить выбранную запись как важную." msgid "Repeat an item" msgstr "Повторить запись" msgid "Pipe the currently selected item to an external program." msgstr "" "Открыть программный канал (pipe) выбранной записи с внешней программой." msgid "Attach (or edit if one exists) a note to the currently selected item" msgstr "" "Привязать (или задать, если не существует) заметку для выбранной записи" msgid "View the note attached to the currently selected item." msgstr "Просмотр вложенной записки." msgid "Raise a task priority inside the todo panel." msgstr "Повысить приоритет дела внутри панели дел." msgid "Lower a task priority inside the todo panel." msgstr "Понизить приоритет дела внутри списка дел." msgid "FATAL ERROR: null file pointer." msgstr "FATAL ERROR: null file pointer." #, c-format msgid "When adding default key for \"%s\", \"%s\" was already assigned!" msgstr "При назначении клав. \"%s\", \"%s\" уже была назначена!" msgid "xmalloc: zero size" msgstr "xmalloc: zero size" msgid "xmalloc: out of memory" msgstr "xmalloc: out of memory" msgid "xcalloc: zero size" msgstr "xcalloc: zero size" msgid "xcalloc: overflow" msgstr "xcalloc: overflow" msgid "xcalloc: out of memory" msgstr "xcalloc: out of memory" msgid "xrealloc: zero size" msgstr "xrealloc: zero size" msgid "xrealloc: overflow" msgstr "xrealloc: overflow" msgid "xrealloc: out of memory" msgstr "xrealloc: out of memory" msgid "xfree: null pointer" msgstr "xfree: null pointer" msgid "could not allocate memory to store block info" msgstr "could not allocate memory to store block info" msgid "Block not found" msgstr "Block not found" #, c-format msgid "overflow at %s" msgstr "overflow at %s" #, c-format msgid "dbg_free: null pointer at %s" msgstr "dbg_free: null pointer at %s" #, c-format msgid "block seems already freed at %s" msgstr "block seems already freed at %s" #, c-format msgid "corrupt block header at %s" msgstr "corrupt block header at %s" #, c-format msgid "corrupt block end at %s, (end = %u, should be %d)" msgstr "corrupt block end at %s, (end = %u, should be %d)" msgid "---==== MEMORY BLOCK ====----------------\n" msgstr "---==== MEMORY BLOCK ====----------------\n" #, c-format msgid " id: %u\n" msgstr " id: %u\n" #, c-format msgid " size: %u\n" msgstr " size: %u\n" #, c-format msgid " allocated in: %s\n" msgstr " allocated in: %s\n" msgid "-----------------------------------------\n" msgstr "-----------------------------------------\n" msgid "+------------------------------+\n" msgstr "+------------------------------+\n" msgid "| calcurse memory usage report |\n" msgstr "| calcurse memory usage report |\n" #, c-format msgid " number of calls: %u\n" msgstr " number of calls: %u\n" #, c-format msgid " allocated blocks: %u\n" msgstr " allocated blocks: %u\n" #, c-format msgid " unfreed blocks: %u\n" msgstr " unfreed blocks: %u\n" #, c-format msgid "Warning: could not open %s, Aborting..." msgstr "Внимание: невозможно открыть %s, Завершение..." msgid "error while launching command: could not fork" msgstr "ошибка во время запуска команды: невозможно разделиться (fork)" msgid "error while launching command" msgstr "ошибка во время запуска команды" msgid "(if set to YES, notify-bar will be displayed)" msgstr "(Если выбрано yes, будет выводится окно уведомления)" msgid "(Format of the date to be displayed inside notify-bar)" msgstr "(Формат даты выводится внутри окна уведомления)" msgid "(Format of the time to be displayed inside notify-bar)" msgstr "(Формат времени выводится внутри окна уведомления)" msgid "" "(Warn user if an appointment is within next 'notify-bar_warning' seconds)" msgstr "(Предупреждать пользователя о событии за 'notify-bar_warning' секунд)" msgid "(Command used to notify user of an upcoming appointment)" msgstr "(Команда уведомляет пользователя о грядущем событии)" msgid "(Notify all appointments instead of flagged ones only)" msgstr "" "(Извещать обо всех задачах, вместо тех, которые помечены для извещения)" msgid "(Run in background to get notifications after exiting)" msgstr "(Запустить в фоновом режиме, для возможности получать уведомления)" msgid "(Log activity when running in background)" msgstr "(Лог активен во время фонового режима)" msgid "Enter the time format (see 'man 3 strftime' for possible formats) " msgstr "Задайте формат времени (см. 'man 3 strftime' для возможных форматов) " msgid "Enter the number of seconds (0 not to be warned before an appointment)" msgstr "Введите количество секунд (0 - отмена оповещения до события)" msgid "Enter the notification command " msgstr "Введите команду уведомления " msgid "notification options" msgstr "настройки уведомления" msgid "incoherent repetition type" msgstr "бессвязный тип повторения" msgid "unknown repetition type" msgstr "неизвестный тип повторения" msgid "unknown character" msgstr "неизвестный символ" msgid "date error in event" msgstr "ошибка даты в событии" msgid "event not found" msgstr "событие не найдено" msgid "appointment not found" msgstr "задача не найдена" msgid "syntax error in item date" msgstr "опечатка в записи даты" #, c-format msgid "Could not remove calcurse lock file: %s\n" msgstr "Невозможно удалить занятый файл: %s\n" #, c-format msgid "Error setting signal #%d : %s\n" msgstr "Сигнал ошибки настройки #%d : %s\n" msgid "no note attached" msgstr "записка отсутствует" msgid "no such todo" msgstr "дело не найдено" msgid "todo not found" msgstr "дело не найдено" msgid "/!\\ INTERNAL ERROR /!\\" msgstr "/!\\ INTERNAL ERROR /!\\" msgid "Please report the following bug:" msgstr "Сообщите об ошибке:" msgid "[yn]" msgstr "[yn]" msgid "Press any key to continue..." msgstr "Нажмите любую клавишу..." msgid "failure in mktime" msgstr "ошибка в mktime" msgid "error in mktime" msgstr "ошибка в mktime" msgid "could not convert string" msgstr "невозможно конвертировать строку" msgid "out of range" msgstr "превышен диапазон" msgid "yes" msgstr "yes" msgid "no" msgstr "no" msgid "option not defined" msgstr "параметр не установлен" #, c-format msgid "temporary file \"%s\" could not be created" msgstr "временный файл \"%s\" не может быть создан" #, c-format msgid "Error when closing file at %s" msgstr "Ошибка во время закрытия файла %s" msgid "No note file found\n" msgstr "Файл с заметкой не найден\n" msgid "January" msgstr "Январь" msgid "February" msgstr "Февраль" msgid "March" msgstr "Март" msgid "April" msgstr "Апрель" msgid "May" msgstr "Май" msgid "June" msgstr "Июнь" msgid "July" msgstr "Июль" msgid "August" msgstr "Август" msgid "September" msgstr "Сентябрь" msgid "October" msgstr "Октябрь" msgid "November" msgstr "Ноябрь" msgid "December" msgstr "Декабрь" msgid "Sun" msgstr "Вс" msgid "Mon" msgstr "Пн" msgid "Tue" msgstr "Вт" msgid "Wed" msgstr "Ср" msgid "Thu" msgstr "Чт" msgid "Fri" msgstr "Пт" msgid "Sat" msgstr "Сб" msgid "mm/dd/yyyy" msgstr "мм/дд/гггг" msgid "dd/mm/yyyy" msgstr "дд/мм/гггг" msgid "yyyy/mm/dd" msgstr "гггг/мм/дд" msgid "yyyy-mm-dd" msgstr "гггг-мм-дд" msgid "Calendar" msgstr "Календарь" msgid "Appointments" msgstr "Задачи" msgid "ToDo" msgstr "Дела" msgid "Quit" msgstr "Выход" msgid "Save" msgstr "Сохр." msgid "Copy" msgstr "Копир." msgid "Paste" msgstr "Вставить" msgid "Chg Win" msgstr "Панель" msgid "Import" msgstr "Импорт" msgid "Export" msgstr "Экспорт" msgid "Go to" msgstr "Переход" msgid "Config" msgstr "Настройки" msgid "Redraw" msgstr "Обновить" msgid "Add Appt" msgstr "Доб.Задачу" msgid "Add Todo" msgstr "Доб.Дело" msgid "-1 Day" msgstr "День -" msgid "+1 Day" msgstr "День +" msgid "-1 Week" msgstr "Неделя -" msgid "+1 Week" msgstr "Неделя +" msgid "-1 Month" msgstr "Месяц -" msgid "+1 Month" msgstr "Месяц +" msgid "-1 Year" msgstr "Год -" msgid "+1 Year" msgstr "Год +" msgid "Today" msgstr "Сегодня" msgid "Nxt View" msgstr "След." msgid "Prv View" msgstr "Пред." msgid "beg Week" msgstr "Нач.недели" msgid "end Week" msgstr "Кон.недели" msgid "Add Item" msgstr "Доб.Запись" msgid "Del Item" msgstr "Уд.Запись" msgid "Edit Itm" msgstr "Изм.Запись" msgid "View" msgstr "Смотреть" msgid "Pipe" msgstr "Программный канал (pipe)" msgid "Flag Itm" msgstr "Флаг" msgid "Repeat" msgstr "Повтор" msgid "EditNote" msgstr "Изм.Заметку" msgid "ViewNote" msgstr "См.Заметку" msgid "Prio.+" msgstr "Приор. +" msgid "Prio.-" msgstr "Приор. -" msgid "OtherCmd" msgstr "..." msgid "unknown panel" msgstr "неизвестная панель" msgid "Usage: calcurse-upgrade [-h|-v|--config ]" msgstr "Использовать: calcurse-upgrade [-h|-v|--config ]" msgid "unrecognized option:" msgstr "неизвестная опция:" msgid "Configuration file not found:" msgstr "Файл конфигурации не найден:" msgid "Pre-3.0.0 configuration file format detected..." msgstr "Обнаружен файл конфигурации ниже версии 3.0.0..." msgid "Create temporary backup of the configuration file..." msgstr "Создать временную архивную копию файла конфигурации..." msgid "Old backup file found:" msgstr "Предыдущий файл архивной копии найден:" msgid "" "\n" "If a previous conversion did not complete, please try to restore your\n" "configuration from this backup and then remove the backup file." msgstr "" "\n" "Если предыдущая конвертация не завершилась, восстановите вашу конфигурацию " "из этого архивного файла, затем его удалив." msgid "done" msgstr "завершено" msgid "Old temporary file found:" msgstr "Обнаружен предыдущий файл временного хранения данных:" msgid "" "\n" "If a previous conversion did not complete, please try to remove this file " "and\n" "start over with a backup of your old configuration file." msgstr "" "\n" "Если предыдущая конвертация не завершилась, удалите файл и попробуйте снова, " "используя архивный файл с предыдущей конфигурацией." msgid "Upgrade configuration directives..." msgstr "Обновление конфигурации..." msgid "Remove temporary backup..." msgstr "Удалить временный архивный файл..." calcurse-3.1.4/po/nl.gmo0000644000175000001440000005223512105444503011775 00000000000000o K:,"8;<t66)4II~5B9I- ! *>EMdmv  4+ ' DH # 0-+Y_f%3#*HQZ#b:((05 U` i*4 B, Do < ( !;!V!#v!!F!"B!"d"l"-q"""!" "%";#?#^#y###.# ####$$ $"$'6$,^$$1$$$$$$$% %%%% %+%=%P%Y%b%k%%%%D%%% %: &G&a&|&&$&&A&#'*' 1'R'W'^'x''''' '''' ''0'L'(>t((&(#(N)Q)<p)')C)=*GW*G*$*D +=Q+F+++++4+(",K,O,a,d,6i,,;,',7 -CE--5---- --..%.>.+\. ..)..&."/$3/ X/y////////!0<0W0g00000001:21m111111 11 1% 202$P2u2222%2 3/373 F3P3 b3p3333 33(344B56;66(6'7:A71|7,7+7*8H28T{8 8=8F9Aa9-9 99 9 :!:0:7:*?:j:q:y: : : :: : ::1:, ;8;"R;Tu;; ;);% < /<=<5F<5|<<<"<<+<1)=[=+{====#=4="">#E>(i>>3> >> >? ?-?A?1X??4?V?44@.i@%@@ @@AF0AwA3A AA.A B B1B NB&\B9BBBBCC)'C QC[C_ChC|CCC*C*C0CD52DhDpDuDzDDDDDDDD DDD D D DEE$E-EX5EEE E/E EF -F$NF#sF F=FFF&FGG#G6G ?GLGSGWG _G jG$tG!G GG8GWH8^HH+H#HOH ;I<\I$I<IKIGGJDJJLJ9=KEwKKKKKLK-$LRLVLjLqL;zL LML-M8=M;vMM?M M N N NN=NTN]NvN*N NN-NO#O)AO*kOOOOOP PP%"PHPdP.PP#P PQ!Q1Q QQ_Q"vQ6QQQQ R%R5RJR]R pR ~R#R!RRRS'9S/aSSSSSSSS TTq9RP\Ao`:F/)'J0lX+v6d"w_% *(zV4 . OH3[G!;MEsIp= }S75^?xu aNZ c${Y  For more information, type '?' from within Calcurse, or read the manpage. Too many errors while reading configuration file! Please backup your keys file, remove it from directory, and launch calcurse again. Welcome to Calcurse. This is the main help screen. "%s" assigned multiple times!%s does not exist, create it now [y or n] ? %s successfully created (Command used to notify user of an upcoming appointment)(Format of the date to be displayed in non-interactive mode)(Format of the date to be displayed inside notify-bar)(Format of the time to be displayed inside notify-bar)(Format to be used when entering a date: (Press '^P' or '^N' to move up or down, 'Q' to quit)(Warn user if an appointment is within next 'notify-bar_warning' seconds)(d)aily(if set to YES, automatic save is done when quitting)(if set to YES, confirmation is required before deleting an event)(if set to YES, confirmation is required before quitting)(if set to YES, notify-bar will be displayed)(m)onthly(terminal's default)(w)eekly(y)early+------------------------------+ +1 Day+1 Week----------------------------------------- -1 Day-1 Week/!\ INTERNAL ERROR /!\Add ApptAdd ItemAdd TodoAdd keyAppointment :AppointmentsAprilArgument for '-x' should be either 'ical' or 'pcal' Argument format for -r and --range is: 'n' Argument is not valid Argument to the '-d' flag is not valid Attach (or edit if one exists) a note to the currently selected itemAugustBackgroundCalcurse %s - text-based organizer Calcurse - text-based organizerCalcurse helpCalendarCan not handle more than one regular expression.Choose the file used to export calcurse data:ColorConfigConfiguration file not found:Could not access "%s": %s Could not compile regular expression.Could not detach from the controlling terminal: %s Could not stop daemon properly: %s Data files found. Data will be loaded now.DecemberDel ItemDel keyDelete the currently selected item.Display the currently selected item inside a popup window.Do you really want to delete this item ?Do you really want to delete this task ?Do you really want to quit ?DownERROR setting first day of weekEdit Item Edit ItmEdit the currently seleted item.Edit: EditNoteEnter an option number to change its valueEnter description :Enter the ToDo priority [1 (highest) - 9 (lowest)] :Enter the configuration menu.Enter the date format (see 'man 3 strftime' for possible formats) Enter the delay, in minutes, between automatic saves (0 to disable) Enter the ending date: [%s] or '0' for an endless repetitionEnter the file name to import data from:Enter the new ToDo description :Enter the new ToDo item : Enter the new item description:Enter the new repetition frequence:Enter the notification command Enter the number of seconds (0 not to be warned before an appointment)Enter the repetition frequence:Enter the time format (see 'man 3 strftime' for possible formats) Event :ExitExit from the current menu, or quit calcurse.ExportExport Export data to a new file format.Exporting...FATAL ERROR: could not create %s: %s FATAL ERROR: the input file cannot be accessed, Aborting...FATAL ERROR: wrong import modeFailed to close "%s" - %s Failed to open "%s", - %s FebruaryFlag ItmFlag the currently selected item as important.ForegroundFriGeneralGeneric keybindings Go toHelpImportImport data from an external file.Import process report: %04d lines read Internal error while displaying progress barInternal error: line too longInvalid time: start time must be before end time!JanuaryJulyJuneKey infoKeysLayoutLeftLoading...MarchMayMonMove down.Move to the left.Move to the right.Move up.Next KeyNo colorNo note file found NotifyNovemberOctoberOption '-S' must be used with either '-d', '-r', '-s', '-a' or '-t' OtherCmdPastePlease report the following bug:Possible formats are [%s] or '0' for an endless repetitionPress [ENTER] to continuePress [ENTER] to continue.Press [Enter] to continuePress any key to continue...Press the key you want to assign to:Prev KeyPrint general information about calcurse's authors, license, etc.Prio.+Prio.-Problems accessing data file ...QuitRedrawRedraw calcurse's screen.RepeatRepeat an itemRightSatSaveSaving...SelectSelect the day to go to.Select the highlighted item.SeptemberSidebarSome items could not be imported, see log file ?Sorry, colors are not supported by your terminal (Press [ENTER] to continue)Sorry, the date you entered is older than the item start time.SunThe data files were successfully savedThe data were successfully exportedThe day you entered is not valid (should be between 01/01/1902 and 12/31/2037)The entered date is not valid.The file cannot be accessed, please enter another file name.The frequence you entered is not valid.The ical file seems to be malformed. The end of item was not found.There were some errors when loading keys file, see log file ?This item has a note attached to it. Delete (i)tem or just its (n)ote ?This item has a note attached to it. Delete (t)odo or just its (n)ote ?This item is already a repeated one.This item is recurrent. Delete (a)ll occurences or just this (o)ne ?This key is already in use for %s, please choose another one.This key is not yet recognized by calcurse, please choose another one.ThuTo do :ToDoTodayToo many errors while reading keys file, aborting...Try 'calcurse -h' for more information. TueUndefined option!UpViewView the note attached to the currently selected item.ViewNoteWarning: could not erase temporary log file %s, Aborting...Warning: could not open %s, Aborting...Warning: could not open temporary log file, Aborting...Warning: ical header malformed or wrong version number. Aborting...WedWelcome to Calcurse. Missing data files were created.Width +Width -[dwmy]aborting... appointment has no start time.appointment not foundbeg Weekcalcurse is not running calcurse is running (pid %d) calcurse is running in background (pid %d) color themecompleted tasks: could not compute duration (no end time).could not convert stringcould not get entire item description.could not retrieve event end time.could not retrieve event start time.could not retrieve item summary.date error in appointmentdate error in eventdescription malformed.doneend Weekerror in mktimeerror loading next appointment error while launching commanderror while sending notification event date is not defined.event not foundfailed to open appointment filefailed to open todo filefailure in mktimegeneral optionsincoherent repetition typeitem could not be identified.item duration malformed.item has a negative duration.item priority is not acceptable (must be between 1 and 9).keys configurationlayout configurationnext appointment: nono event nor appointment foundno note attachedno such todonotification optionsout of rangerecurrence exception dates malformed.recurrence frequence not found.recurrence frequence not recognized.recurrence rule malformed.starting interactive mode... syntax error in item datesyntax error in item repetitionsyntax error in item time or durationterminated at %s with signal %d to do: todo not foundundefinedunknown characterunknown colorunknown export typeunknown ical typeunknown import typeunknown item typeunknwon typewrong export modewrong format in the appointment or eventyesProject-Id-Version: calcurse Report-Msgid-Bugs-To: bugs@calcurse.org POT-Creation-Date: 2013-02-09 14:04+0100 PO-Revision-Date: 2012-11-23 21:51+0000 Last-Translator: Lukas Fleischer Language-Team: Dutch (http://www.transifex.com/projects/p/calcurse/language/nl/) Language: nl MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); Typ '?' in Calcurse voor meer informatie, of lees de man-pagina. Teveel fouten tijdens het lezen van het configuratiebestand! Maak een backup van het sneltoetsenbestand, verwijder het van de map en start calcurse opnieuw op. Welkom in Calcurse. Dit is het centrale hulpscherm. "%s" meer dan eens toegewezen!%s bestaat niet, nu aanmaken [j of n] ? %s met succes aangemaakt (Commando dat melding geeft van op handen zijnde afspraak)(Formaat van de datum in niet-interactieve modus)(Formaat van de datum in de informatiebalk.)(Formaat van de tijd in de informatiebalk.)Het te gebruiken formaat bij datuminvoer: (Druk '^P' of '^N' om omhoog of omlaag te bewegen, 'Q' om af te sluiten)Meldt gebruiker dat er een afspraak binnen 'informatiebalk_waarschuwing' seconden is(d)agelijks(Bij JA, wordt er automatisch opgeslagen bij einde programma)(Bij JA, is een bevestiging nodig voor het wissen van een gebeurtenis)(Bij JA, wordt er een bevestiging gevraagd bij eindigen programma(Bij JA, wordt de informatiebalk weergegeven)(m)aandelijksstandaard van terminal(w)ekelijks(y)aarlijks+------------------------------+ +1 Dag+1 Week----------------------------------------- -1 Dag-1 Week/!\ INTERNE FOUT /!\Nieuw AfsprNieuw ItmNieuw TaakVoeg toets toeAfspraak :AfsprakenaprilArgument voor '-x' moet of 'ical' of 'pcal' zijn Argument formaat voor -r en --range is: 'n' Argument is niet geldig. Argument van '-d' is niet geldig. Voeg een noot toe aan het huidig geselecteerde item (of wijzig dit indien bestaande)augustusAchtergrondCalcurse %s - tekst-gebaseerde organizer Calcurse - tekst-gebaseerde organizerCalcurse helpKalenderKan niet meer dan een reguliere expressie behandelen.Kies het bestand om calcurse data naar te exporteren:KleurConfigConfiguratiebestand niet gevonden:Geen toegang tot "%s": %s Kan de reguliere expressie niet compileren.Kon niet van de control terminal loskoppelen: %s Kon de deamon niet stoppen: %s Databestanden gevonden. Data wordt geladen.decemberWis ItemVerwijder toetsVerwijder huidig geselecteerde itemGeef het huidig geselecteerde item weer in een popupWilt u werkelijk dit item wissen ?Wilt u werkelijk deze taak wissen ?Wilt u werkelijk het programma verlaten?OmlaagFOUT in het instellen van de eerste dag van de weekWijzig item Wzg ItmWijzig huidig geselecteerde itemWijzig:WzgNootVoer een nummer in om de waarde te veranderenVoer beschrijving in :Geef taakprioriteit [1 (hoogste) - 9 (laagste)] :Ga naar het configuratiemenu.Geef het formaat van de datum (zie 'man 3 strftime')Voer het tijdsinterval in minuten voor automatisch opslaan (0 om dit uit te schakelen)Geef einddatum: [%s] of '0' voor oneindige herhalingKies het bestand voor het importeren van data:Voer de nieuwe taakbeschrijving in : Voer de nieuwe taak in : Voer een nieuwe beschrijving in:Voer herhalingsinterval in:Geef het meldingscommando Geef het aantal seconden (0 voor geen waarschuwing voor een afspraak).Geef de herhalingsinterval:Geef het formaat van de tijd (zie 'man 3 strftime')Gebeurtenis :EindeVerlaat het huidige menu, of verlaat Calcurse.ExportExporteer Exporteer gegevens naar een nieuw bestandsformaatExporteren...FATALE FOUT: kan %s niet aanmaken: %s FATALE FOUT: invoerbestand niet toegankelijk, Afbreken...FATALE FOUT: foute import modusFout bij sluiten "%s" - %s Fout bij openen "%s", - %s februariVlag ItmMarkeer het huidig bestand als belangrijkVoorgrond vrAlgemeenAlgemene sneltoets Ga naarHulpImportImporteer gegevens uit een extern bestand.Import proces rapport: %04d gelezen regelsInterne fout bij het tonen van de voortgangsbalkInterne fout: lijn te langOngeldige tijd: aanvangstijd moet voor eindtijd zijn!januarijulijuniToets informatieToetsenLayoutLinksLaden...maartmei maGa omlaagGa naar links.Ga naar rechts.Ga omhoogVolgend toetsGeen kleurNoot-bestand niet gevonden InfonovemberoktoberOptie '-S' moet met een van volgende worden gebruikt '-d', '-r', '-s', '-a','-' of '-t' AnderCmdPlakRapporteer aub de volgende fout:Mogelijk formaat is: [%s] of '0' voor oneindig.Druk op [ENTER] om door te gaan)[ENTER]-toets om door te gaan.Druk op [Enter] om door te gaan)Druk op een toets om door te gaan...Druk de toets die u wilt toewijzen:Vorig toetsGeef algemene informatie van de auteurs, licentie, etc. weer.Prio.+rio.-Probleem bij benaderen databestand ...EindeVerversVervers het schermHerhalenHerhaal itemRechts zaOpslaanOpslaan...SelecteerSecteer een datum om naartoe te gaanSelecteer het gemarkeerde bestandseptemberZijbalkEnkele items konden niet geïmporteerd worden, log zien?Helaas wordt kleur niet door uw terminal ondersteund. (druk op [ENTER] om door te gaan)Sorry, de ingevoerde datum is ouder dan de aanvangstijd. zoDe databestanden zijn met succes opgeslagenDe data is met succes geëxporteerdDe ingevoerde datum is ongeldig (voer datum tussen 01/01/1902 en 12/31/2037) inDe ingevoerde datum is ongeldig.Het bestand is ontoegankelijk, kies een andere bestandsnaam.Het ingevoerde interval is ongeldig.Ical-bestand oogt onjuist. Het einde van item niet gevonden.Er waren fouten tijdens het laden van het sneltoetsenbestand, zie log file?Dit item heeft een bijgesloten noot. (i)tem wissen of alleen de (n)oot?Dit item heeft een noot bijgesloten. Wis (t)aak of alleen de (n)oot?Dit item wordt al herhaald.Dit is een herhalende afspraak. (a)lle afspraken of alleen (o) deze wissen ?Deze toets is al in gebruik voor %s, kies aub een andere.Deze toets wordt nog niet door Calcurse herkend, kies een andere aub. doTaken :TakenVandaagTeveel fouten bij het laden van het sneltoetsenbestand, wordt afgebroken ...Gebruik 'calcurse -h', voor meer informatie. diNiet gekende optie!OmhoogBekijkenBekijk de noot toegevoegd aan het huidig geselecteerde itemBekijkNootWaarschuwing: kon het tijdelijke logbestand %s niet verwijderen. Afbreken ...Pas op: bestand %s niet te openen. Stoppen...Pas op: kan tijdelijk logbestand niet openen, Stoppen...Pas op: ical header onjuist of verkeerde versie. Stoppen... woWelkom bij Calcurse. De missende databestanden zijn aangemaakt.Breedte +Breedte -[dwmy]afbreken... afspraak heeft geen begintijd.afspraak niet gevondenbeg Weekcalcurse is niet actief calcurse draait (pid%d) calcurse draait op de achtergrond (pid%d) Kleurthemaafgewerkte taken: kan tijdsduur niet berekenen (geen eindtijd).kon de data niet converterenonvolledige item omschrijvingkan eindtijd van gebeurtenis niet ophalenkan begintijd van gebeurtenis niet ophalenkan item onderwerp niet ophalengegevensfout in de afspraakdatumfout in gebeurtenisomschrijving beschadigdklaareind Weekfout in mktimefout bij laden van volgende afspraak fout bij uitvoeren commandofout bij verzenden notificatie datum van de gebeurtenis is niet gespecifieerdGebeurtenis niet gevondenAfsprakenbestand niet kunnen openenkon het todo-bestand niet openenfout in mktimeAlgemene optiesHerhalingstype is niet coherentitem onbekenditem tijdsduur onjuistitem heeft een negatieve tijdsduurPrioriteit van item is onjuist (kies nr tussen 1 en 9)Toetsinstellingenlayout configuratieVolgende afspraak : neeGeen gebeurtenis of afspraak gevondengeen noot bijgevoegdEr is zo geen todonotificatie-optiesbuiten bereikherhaling exceptie datum onjuistherhalingsfrequentie niet gevonden.herhalingsfrequentie niet herkendherhalingsregel onjuistinteractieve modus gestart... syntaxfout in datum van itemsyntaxfout in de herhaling van het itemsyntaxfout in itemtijd of duurtijd van het itemgestopt bij %s met signaal %d Taken: todo niet gevondenOngekendonbekend karakterOnbekende kleuronbekend exporttypeonbekend ical typeonbekend type om te importerenongekend type itemongekend typefoute exportmodusfout formaat in de afspraak of gebeurtenisjacalcurse-3.1.4/ABOUT-NLS0000644000175000001440000015111612105444376011477 00000000000000Notes on the Free Translation Project ************************************* Free software is going international! The Free Translation Project is a way to get maintainers of free software, translators, and users all together, so that will gradually become able to speak many languages. A few packages already provide translations for their messages. If you found this `ABOUT-NLS' file inside a distribution, you may assume that the distributed package does use GNU `gettext' internally, itself available at your nearest GNU archive site. But you do _not_ need to install GNU `gettext' prior to configuring, installing or using this package with messages translated. Installers will find here some useful hints. These notes also explain how users should proceed for getting the programs to use the available translations. They tell how people wanting to contribute and work at translations should contact the appropriate team. When reporting bugs in the `intl/' directory or bugs which may be related to internationalization, you should tell about the version of `gettext' which is used. The information can be found in the `intl/VERSION' file, in internationalized packages. Quick configuration advice ========================== If you want to exploit the full power of internationalization, you should configure it using ./configure --with-included-gettext to force usage of internationalizing routines provided within this package, despite the existence of internationalizing capabilities in the operating system where this package is being installed. So far, only the `gettext' implementation in the GNU C library version 2 provides as many features (such as locale alias, message inheritance, automatic charset conversion or plural form handling) as the implementation here. It is also not possible to offer this additional functionality on top of a `catgets' implementation. Future versions of GNU `gettext' will very likely convey even more functionality. So it might be a good idea to change to GNU `gettext' as soon as possible. So you need _not_ provide this option if you are using GNU libc 2 or you have installed a recent copy of the GNU gettext package with the included `libintl'. INSTALL Matters =============== Some packages are "localizable" when properly installed; the programs they contain can be made to speak your own native language. Most such packages use GNU `gettext'. Other packages have their own ways to internationalization, predating GNU `gettext'. By default, this package will be installed to allow translation of messages. It will automatically detect whether the system already provides the GNU `gettext' functions. If not, the GNU `gettext' own library will be used. This library is wholly contained within this package, usually in the `intl/' subdirectory, so prior installation of the GNU `gettext' package is _not_ required. Installers may use special options at configuration time for changing the default behaviour. The commands: ./configure --with-included-gettext ./configure --disable-nls will respectively bypass any pre-existing `gettext' to use the internationalizing routines provided within this package, or else, _totally_ disable translation of messages. When you already have GNU `gettext' installed on your system and run configure without an option for your new package, `configure' will probably detect the previously built and installed `libintl.a' file and will decide to use this. This might be not what is desirable. You should use the more recent version of the GNU `gettext' library. I.e. if the file `intl/VERSION' shows that the library which comes with this package is more recent, you should use ./configure --with-included-gettext to prevent auto-detection. The configuration process will not test for the `catgets' function and therefore it will not be used. The reason is that even an emulation of `gettext' on top of `catgets' could not provide all the extensions of the GNU `gettext' library. Internationalized packages have usually many `po/LL.po' files, where LL gives an ISO 639 two-letter code identifying the language. Unless translations have been forbidden at `configure' time by using the `--disable-nls' switch, all available translations are installed together with the package. However, the environment variable `LINGUAS' may be set, prior to configuration, to limit the installed set. `LINGUAS' should then contain a space separated list of two-letter codes, stating which languages are allowed. Using This Package ================== As a user, if your language has been installed for this package, you only have to set the `LANG' environment variable to the appropriate `LL_CC' combination. Here `LL' is an ISO 639 two-letter language code, and `CC' is an ISO 3166 two-letter country code. For example, let's suppose that you speak German and live in Germany. At the shell prompt, merely execute `setenv LANG de_DE' (in `csh'), `export LANG; LANG=de_DE' (in `sh') or `export LANG=de_DE' (in `bash'). This can be done from your `.login' or `.profile' file, once and for all. You might think that the country code specification is redundant. But in fact, some languages have dialects in different countries. For example, `de_AT' is used for Austria, and `pt_BR' for Brazil. The country code serves to distinguish the dialects. The locale naming convention of `LL_CC', with `LL' denoting the language and `CC' denoting the country, is the one use on systems based on GNU libc. On other systems, some variations of this scheme are used, such as `LL' or `LL_CC.ENCODING'. You can get the list of locales supported by your system for your country by running the command `locale -a | grep '^LL''. Not all programs have translations for all languages. By default, an English message is shown in place of a nonexistent translation. If you understand other languages, you can set up a priority list of languages. This is done through a different environment variable, called `LANGUAGE'. GNU `gettext' gives preference to `LANGUAGE' over `LANG' for the purpose of message handling, but you still need to have `LANG' set to the primary language; this is required by other parts of the system libraries. For example, some Swedish users who would rather read translations in German than English for when Swedish is not available, set `LANGUAGE' to `sv:de' while leaving `LANG' to `sv_SE'. Special advice for Norwegian users: The language code for Norwegian bokma*l changed from `no' to `nb' recently (in 2003). During the transition period, while some message catalogs for this language are installed under `nb' and some older ones under `no', it's recommended for Norwegian users to set `LANGUAGE' to `nb:no' so that both newer and older translations are used. In the `LANGUAGE' environment variable, but not in the `LANG' environment variable, `LL_CC' combinations can be abbreviated as `LL' to denote the language's main dialect. For example, `de' is equivalent to `de_DE' (German as spoken in Germany), and `pt' to `pt_PT' (Portuguese as spoken in Portugal) in this context. Translating Teams ================= For the Free Translation Project to be a success, we need interested people who like their own language and write it well, and who are also able to synergize with other translators speaking the same language. Each translation team has its own mailing list. The up-to-date list of teams can be found at the Free Translation Project's homepage, `http://www.iro.umontreal.ca/contrib/po/HTML/', in the "National teams" area. If you'd like to volunteer to _work_ at translating messages, you should become a member of the translating team for your own language. The subscribing address is _not_ the same as the list itself, it has `-request' appended. For example, speakers of Swedish can send a message to `sv-request@li.org', having this message body: subscribe Keep in mind that team members are expected to participate _actively_ in translations, or at solving translational difficulties, rather than merely lurking around. If your team does not exist yet and you want to start one, or if you are unsure about what to do or how to get started, please write to `translation@iro.umontreal.ca' to reach the coordinator for all translator teams. The English team is special. It works at improving and uniformizing the terminology in use. Proven linguistic skill are praised more than programming skill, here. Available Packages ================== Languages are not equally supported in all packages. The following matrix shows the current state of internationalization, as of January 2004. The matrix shows, in regard of each package, for which languages PO files have been submitted to translation coordination, with a translation percentage of at least 50%. Ready PO files af am ar az be bg bs ca cs da de el en en_GB eo es +----------------------------------------------------+ a2ps | [] [] [] [] | aegis | () | ant-phone | () | anubis | | ap-utils | | aspell | [] | bash | [] [] [] [] | batchelor | | bfd | [] [] | binutils | [] [] | bison | [] [] [] | bluez-pin | [] [] [] | clisp | | clisp | [] [] [] | console-tools | [] [] | coreutils | [] [] [] [] | cpio | [] [] [] | darkstat | [] () [] | diffutils | [] [] [] [] [] [] [] | e2fsprogs | [] [] [] | enscript | [] [] [] [] | error | [] [] [] [] [] | fetchmail | [] () [] [] [] [] | fileutils | [] [] [] | findutils | [] [] [] [] [] [] [] | flex | [] [] [] [] | fslint | | gas | [] | gawk | [] [] [] [] | gbiff | [] | gcal | [] | gcc | [] [] | gettext | [] [] [] [] [] | gettext-examples | [] [] [] [] | gettext-runtime | [] [] [] [] [] | gettext-tools | [] [] [] | gimp-print | [] [] [] [] [] | gliv | | glunarclock | [] [] | gnubiff | [] | gnucash | [] () [] [] | gnucash-glossary | [] () [] | gnupg | [] () [] [] [] [] | gpe-aerial | [] | gpe-beam | [] [] | gpe-calendar | [] [] | gpe-clock | [] [] | gpe-conf | [] [] | gpe-contacts | [] [] | gpe-edit | [] | gpe-go | [] | gpe-login | [] [] | gpe-ownerinfo | [] [] | gpe-sketchbook | [] [] | gpe-su | [] [] | gpe-taskmanager | [] [] | gpe-timesheet | [] | gpe-today | [] [] | gpe-todo | [] [] | gphoto2 | [] [] [] [] | gprof | [] [] [] | gpsdrive | () () () | gramadoir | [] | grep | [] [] [] [] [] [] | gretl | [] | gtick | [] () | hello | [] [] [] [] [] [] | id-utils | [] [] | indent | [] [] [] [] | iso_3166 | [] [] [] [] [] [] [] [] [] [] | iso_3166_1 | [] [] [] [] [] [] | iso_3166_2 | | iso_3166_3 | [] | iso_4217 | [] [] [] [] | iso_639 | | jpilot | [] [] [] | jtag | | jwhois | [] | kbd | [] [] [] [] [] | latrine | () | ld | [] [] | libc | [] [] [] [] [] [] | libgpewidget | [] [] | libiconv | [] [] [] [] [] | lifelines | [] () | lilypond | [] | lingoteach | | lingoteach_lessons | () () | lynx | [] [] [] [] | m4 | [] [] [] [] | mailutils | [] [] | make | [] [] [] | man-db | [] () [] [] () | minicom | [] [] [] | mysecretdiary | [] [] [] | nano | [] () [] [] [] | nano_1_0 | [] () [] [] [] | opcodes | [] | parted | [] [] [] [] [] | ptx | [] [] [] [] [] | python | | radius | [] | recode | [] [] [] [] [] [] [] | rpm | [] [] | screem | | scrollkeeper | [] [] [] [] [] [] | sed | [] [] [] [] [] [] | sh-utils | [] [] [] | shared-mime-info | | sharutils | [] [] [] [] [] [] | silky | () | skencil | [] () [] | sketch | [] () [] | soundtracker | [] [] [] | sp | [] | tar | [] [] [] [] | texinfo | [] [] [] | textutils | [] [] [] [] | tin | () () | tp-robot | | tuxpaint | [] [] [] [] [] [] [] | unicode-han-tra... | | unicode-transla... | | util-linux | [] [] [] [] [] | vorbis-tools | [] [] [] [] | wastesedge | () | wdiff | [] [] [] [] | wget | [] [] [] [] [] [] | xchat | [] [] [] [] | xfree86_xkb_xml | [] [] | xpad | [] | +----------------------------------------------------+ af am ar az be bg bs ca cs da de el en en_GB eo es 4 0 0 1 9 4 1 40 41 60 78 17 1 5 13 68 et eu fa fi fr ga gl he hr hu id is it ja ko lg +-------------------------------------------------+ a2ps | [] [] [] () () | aegis | | ant-phone | [] | anubis | [] | ap-utils | [] | aspell | [] [] | bash | [] [] | batchelor | [] [] | bfd | [] | binutils | [] [] | bison | [] [] [] [] | bluez-pin | [] [] [] [] [] | clisp | | clisp | [] | console-tools | | coreutils | [] [] [] [] [] [] | cpio | [] [] [] [] | darkstat | () [] [] [] | diffutils | [] [] [] [] [] [] [] | e2fsprogs | | enscript | [] [] | error | [] [] [] [] | fetchmail | [] | fileutils | [] [] [] [] [] [] | findutils | [] [] [] [] [] [] [] [] [] [] [] | flex | [] [] [] | fslint | [] | gas | [] | gawk | [] [] [] | gbiff | [] | gcal | [] | gcc | [] | gettext | [] [] [] | gettext-examples | [] [] | gettext-runtime | [] [] [] [] [] | gettext-tools | [] [] [] | gimp-print | [] [] | gliv | () | glunarclock | [] [] [] [] | gnubiff | [] | gnucash | () [] | gnucash-glossary | [] | gnupg | [] [] [] [] [] [] [] | gpe-aerial | [] | gpe-beam | [] | gpe-calendar | [] [] [] | gpe-clock | [] | gpe-conf | [] | gpe-contacts | [] [] | gpe-edit | [] [] | gpe-go | [] | gpe-login | [] [] | gpe-ownerinfo | [] [] [] | gpe-sketchbook | [] | gpe-su | [] | gpe-taskmanager | [] | gpe-timesheet | [] [] [] | gpe-today | [] [] | gpe-todo | [] [] | gphoto2 | [] [] [] | gprof | [] [] | gpsdrive | () () () | gramadoir | [] [] | grep | [] [] [] [] [] [] [] [] [] [] [] | gretl | [] [] | gtick | [] [] [] | hello | [] [] [] [] [] [] [] [] [] [] [] [] [] | id-utils | [] [] [] [] | indent | [] [] [] [] [] [] [] [] [] | iso_3166 | [] [] [] [] [] [] [] | iso_3166_1 | [] [] [] [] [] | iso_3166_2 | | iso_3166_3 | | iso_4217 | [] [] [] [] [] [] | iso_639 | | jpilot | [] () | jtag | [] | jwhois | [] [] [] [] | kbd | [] | latrine | [] | ld | [] | libc | [] [] [] [] [] [] | libgpewidget | [] [] [] [] | libiconv | [] [] [] [] [] [] [] [] [] | lifelines | () | lilypond | [] | lingoteach | [] [] | lingoteach_lessons | | lynx | [] [] [] [] | m4 | [] [] [] [] | mailutils | | make | [] [] [] [] [] [] | man-db | () () | minicom | [] [] [] [] | mysecretdiary | [] [] | nano | [] [] [] [] | nano_1_0 | [] [] [] [] | opcodes | [] | parted | [] [] [] | ptx | [] [] [] [] [] [] [] | python | | radius | [] | recode | [] [] [] [] [] [] | rpm | [] [] | screem | | scrollkeeper | [] | sed | [] [] [] [] [] [] [] [] [] | sh-utils | [] [] [] [] [] [] [] | shared-mime-info | [] [] [] | sharutils | [] [] [] [] [] | silky | () [] () () | skencil | [] | sketch | [] | soundtracker | [] [] | sp | [] () | tar | [] [] [] [] [] [] [] [] [] | texinfo | [] [] [] [] | textutils | [] [] [] [] [] [] | tin | [] () | tp-robot | [] | tuxpaint | [] [] [] [] [] [] [] [] [] | unicode-han-tra... | | unicode-transla... | [] [] | util-linux | [] [] [] [] () [] | vorbis-tools | [] | wastesedge | () | wdiff | [] [] [] [] [] [] | wget | [] [] [] [] [] [] [] | xchat | [] [] [] | xfree86_xkb_xml | [] [] | xpad | [] [] | +-------------------------------------------------+ et eu fa fi fr ga gl he hr hu id is it ja ko lg 22 2 1 26 106 28 24 8 10 41 33 1 26 33 12 0 lt lv mk mn ms mt nb nl nn no nso pl pt pt_BR ro ru +-----------------------------------------------------+ a2ps | [] [] () () [] [] [] | aegis | () () () | ant-phone | [] [] | anubis | [] [] [] [] [] [] | ap-utils | [] () [] | aspell | [] | bash | [] [] [] | batchelor | [] | bfd | [] | binutils | [] | bison | [] [] [] [] [] | bluez-pin | [] [] [] | clisp | | clisp | [] | console-tools | [] | coreutils | [] [] | cpio | [] [] [] [] [] | darkstat | [] [] [] [] | diffutils | [] [] [] [] [] [] | e2fsprogs | [] | enscript | [] [] [] [] | error | [] [] [] | fetchmail | [] [] () [] | fileutils | [] [] [] | findutils | [] [] [] [] [] | flex | [] [] [] [] | fslint | [] [] | gas | | gawk | [] [] [] | gbiff | [] [] | gcal | | gcc | | gettext | [] [] [] | gettext-examples | [] [] [] | gettext-runtime | [] [] [] [] | gettext-tools | [] [] | gimp-print | [] | gliv | [] [] [] | glunarclock | [] [] [] [] | gnubiff | [] | gnucash | [] [] () [] | gnucash-glossary | [] [] | gnupg | [] | gpe-aerial | [] [] [] [] | gpe-beam | [] [] [] [] | gpe-calendar | [] [] [] [] | gpe-clock | [] [] [] [] | gpe-conf | [] [] [] [] | gpe-contacts | [] [] [] [] | gpe-edit | [] [] [] [] | gpe-go | [] [] [] | gpe-login | [] [] [] [] | gpe-ownerinfo | [] [] [] [] | gpe-sketchbook | [] [] [] [] | gpe-su | [] [] [] [] | gpe-taskmanager | [] [] [] [] | gpe-timesheet | [] [] [] [] | gpe-today | [] [] [] [] | gpe-todo | [] [] [] [] | gphoto2 | [] | gprof | [] [] | gpsdrive | () () [] | gramadoir | () [] | grep | [] [] [] [] [] | gretl | | gtick | [] [] [] | hello | [] [] [] [] [] [] [] [] [] [] | id-utils | [] [] [] [] | indent | [] [] [] [] | iso_3166 | [] [] [] | iso_3166_1 | [] [] | iso_3166_2 | | iso_3166_3 | [] | iso_4217 | [] [] [] [] [] [] [] [] | iso_639 | [] | jpilot | () () | jtag | | jwhois | [] [] [] [] () | kbd | [] [] [] | latrine | [] | ld | | libc | [] [] [] [] | libgpewidget | [] [] [] | libiconv | [] [] [] [] [] | lifelines | | lilypond | | lingoteach | | lingoteach_lessons | | lynx | [] [] [] | m4 | [] [] [] [] [] | mailutils | [] [] [] | make | [] [] [] [] | man-db | [] | minicom | [] [] [] [] | mysecretdiary | [] [] [] | nano | [] [] [] [] [] | nano_1_0 | [] [] [] [] [] [] | opcodes | [] [] | parted | [] [] [] [] | ptx | [] [] [] [] [] [] [] [] | python | | radius | [] [] | recode | [] [] [] [] | rpm | [] [] [] | screem | | scrollkeeper | [] [] [] [] [] | sed | [] [] [] | sh-utils | [] [] | shared-mime-info | [] [] | sharutils | [] [] | silky | () | skencil | [] [] | sketch | [] [] | soundtracker | | sp | | tar | [] [] [] [] [] [] | texinfo | [] [] [] [] | textutils | [] [] | tin | | tp-robot | [] | tuxpaint | [] [] [] [] [] [] [] [] | unicode-han-tra... | | unicode-transla... | | util-linux | [] [] [] | vorbis-tools | [] [] [] | wastesedge | | wdiff | [] [] [] [] [] | wget | [] [] [] | xchat | [] [] [] | xfree86_xkb_xml | [] [] | xpad | [] [] | +-----------------------------------------------------+ lt lv mk mn ms mt nb nl nn no nso pl pt pt_BR ro ru 1 2 0 3 12 0 10 69 6 7 1 40 26 36 76 63 sk sl sr sv ta th tr uk ven vi wa xh zh_CN zh_TW zu +-----------------------------------------------------+ a2ps | [] [] [] [] | 16 aegis | | 0 ant-phone | | 3 anubis | [] [] | 9 ap-utils | () | 3 aspell | | 4 bash | | 9 batchelor | | 3 bfd | [] [] | 6 binutils | [] [] [] | 8 bison | [] [] | 14 bluez-pin | [] [] [] | 14 clisp | | 0 clisp | | 5 console-tools | | 3 coreutils | [] [] [] [] | 16 cpio | [] [] | 14 darkstat | [] [] [] () () | 12 diffutils | [] [] [] | 23 e2fsprogs | [] [] | 6 enscript | [] [] | 12 error | [] [] [] | 15 fetchmail | [] [] | 11 fileutils | [] [] [] [] [] | 17 findutils | [] [] [] [] [] [] | 29 flex | [] [] | 13 fslint | | 3 gas | [] | 3 gawk | [] [] | 12 gbiff | | 4 gcal | [] [] | 4 gcc | [] | 4 gettext | [] [] [] [] [] | 16 gettext-examples | [] [] [] [] [] | 14 gettext-runtime | [] [] [] [] [] [] [] [] | 22 gettext-tools | [] [] [] [] [] [] | 14 gimp-print | [] [] | 10 gliv | | 3 glunarclock | [] [] [] | 13 gnubiff | | 3 gnucash | [] [] | 9 gnucash-glossary | [] [] [] | 8 gnupg | [] [] [] [] | 17 gpe-aerial | [] | 7 gpe-beam | [] | 8 gpe-calendar | [] [] [] [] | 13 gpe-clock | [] [] [] | 10 gpe-conf | [] [] | 9 gpe-contacts | [] [] [] | 11 gpe-edit | [] [] [] [] [] | 12 gpe-go | | 5 gpe-login | [] [] [] [] [] | 13 gpe-ownerinfo | [] [] [] [] | 13 gpe-sketchbook | [] [] | 9 gpe-su | [] [] [] | 10 gpe-taskmanager | [] [] [] | 10 gpe-timesheet | [] [] [] [] | 12 gpe-today | [] [] [] [] [] | 13 gpe-todo | [] [] [] [] | 12 gphoto2 | [] [] [] | 11 gprof | [] [] | 9 gpsdrive | [] [] | 3 gramadoir | [] | 5 grep | [] [] [] [] | 26 gretl | | 3 gtick | | 7 hello | [] [] [] [] [] | 34 id-utils | [] [] | 12 indent | [] [] [] [] | 21 iso_3166 | [] [] [] [] [] [] [] | 27 iso_3166_1 | [] [] [] | 16 iso_3166_2 | | 0 iso_3166_3 | | 2 iso_4217 | [] [] [] [] [] [] | 24 iso_639 | | 1 jpilot | [] [] [] [] [] | 9 jtag | [] | 2 jwhois | () [] [] | 11 kbd | [] [] | 11 latrine | | 2 ld | [] [] | 5 libc | [] [] [] [] | 20 libgpewidget | [] [] [] [] | 13 libiconv | [] [] [] [] [] [] [] [] | 27 lifelines | [] | 2 lilypond | [] | 3 lingoteach | | 2 lingoteach_lessons | () | 0 lynx | [] [] [] | 14 m4 | [] [] | 15 mailutils | | 5 make | [] [] [] | 16 man-db | [] | 5 minicom | | 11 mysecretdiary | [] [] | 10 nano | [] [] [] [] | 17 nano_1_0 | [] [] [] | 17 opcodes | [] [] | 6 parted | [] [] [] | 15 ptx | [] [] | 22 python | | 0 radius | | 4 recode | [] [] [] | 20 rpm | [] [] | 9 screem | [] [] | 2 scrollkeeper | [] [] [] | 15 sed | [] [] [] [] [] [] | 24 sh-utils | [] [] | 14 shared-mime-info | [] [] | 7 sharutils | [] [] [] [] | 17 silky | () | 3 skencil | [] | 6 sketch | [] | 6 soundtracker | [] [] | 7 sp | [] | 3 tar | [] [] [] [] [] | 24 texinfo | [] [] [] | 14 textutils | [] [] [] [] | 16 tin | | 1 tp-robot | | 2 tuxpaint | [] [] [] [] [] | 29 unicode-han-tra... | | 0 unicode-transla... | | 2 util-linux | [] [] | 15 vorbis-tools | | 8 wastesedge | | 0 wdiff | [] [] [] | 18 wget | [] [] [] [] [] [] [] [] | 24 xchat | [] [] [] [] [] | 15 xfree86_xkb_xml | [] [] [] [] [] | 11 xpad | | 5 +-----------------------------------------------------+ 63 teams sk sl sr sv ta th tr uk ven vi wa xh zh_CN zh_TW zu 131 domains 47 19 28 83 0 0 59 13 1 1 11 0 22 22 0 1373 Some counters in the preceding matrix are higher than the number of visible blocks let us expect. This is because a few extra PO files are used for implementing regional variants of languages, or language dialects. For a PO file in the matrix above to be effective, the package to which it applies should also have been internationalized and distributed as such by its maintainer. There might be an observable lag between the mere existence a PO file and its wide availability in a distribution. If January 2004 seems to be old, you may fetch a more recent copy of this `ABOUT-NLS' file on most GNU archive sites. The most up-to-date matrix with full percentage details can be found at `http://www.iro.umontreal.ca/contrib/po/HTML/matrix.html'. Using `gettext' in new packages =============================== If you are writing a freely available program and want to internationalize it you are welcome to use GNU `gettext' in your package. Of course you have to respect the GNU Library General Public License which covers the use of the GNU `gettext' library. This means in particular that even non-free programs can use `libintl' as a shared library, whereas only free software can use `libintl' as a static library or use modified versions of `libintl'. Once the sources are changed appropriately and the setup can handle the use of `gettext' the only thing missing are the translations. The Free Translation Project is also available for packages which are not developed inside the GNU project. Therefore the information given above applies also for every other Free Software Project. Contact `translation@iro.umontreal.ca' to make the `.pot' files available to the translation teams. calcurse-3.1.4/config.sub0000755000175000001440000010546712105444410012230 00000000000000#! /bin/sh # Configuration validation subroutine script. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, # 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, # 2011, 2012, 2013 Free Software Foundation, Inc. timestamp='2012-12-29' # This file 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 3 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, see . # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that # program. This Exception is an additional permission under section 7 # of the GNU General Public License, version 3 ("GPLv3"). # Please send patches with a ChangeLog entry to config-patches@gnu.org. # # Configuration subroutine to validate and canonicalize a configuration type. # Supply the specified configuration type as an argument. # If it is invalid, we print an error message on stderr and exit with code 1. # Otherwise, we print the canonical config type on stdout and succeed. # You can get the latest version of this script from: # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD # This file is supposed to be the same for all GNU packages # and recognize all the CPU types, system types and aliases # that are meaningful with *any* GNU software. # Each package is responsible for reporting which valid configurations # it does not support. The user should be able to distinguish # a failure to support a valid configuration from a meaningless # configuration. # The goal of this file is to map all the various variations of a given # machine specification into a single specification in the form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM # or in some cases, the newer four-part form: # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # It is wrong to echo any other type of specification. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] CPU-MFR-OPSYS $0 [OPTION] ALIAS Canonicalize a configuration name. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.sub ($timestamp) Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" exit 1 ;; *local*) # First pass through any local machine types. echo $1 exit ;; * ) break ;; esac done case $# in 0) echo "$me: missing argument$help" >&2 exit 1;; 1) ;; *) echo "$me: too many arguments$help" >&2 exit 1;; esac # Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). # Here we must recognize all the valid KERNEL-OS combinations. maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` case $maybe_os in nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ knetbsd*-gnu* | netbsd*-gnu* | \ kopensolaris*-gnu* | \ storm-chaos* | os2-emx* | rtmk-nova*) os=-$maybe_os basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` ;; android-linux) os=-linux-android basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown ;; *) basic_machine=`echo $1 | sed 's/-[^-]*$//'` if [ $basic_machine != $1 ] then os=`echo $1 | sed 's/.*-/-/'` else os=; fi ;; esac ### Let's recognize common machines as not being operating systems so ### that things like config.sub decstation-3100 work. We also ### recognize some manufacturers as not being operating systems, so we ### can provide default operating systems below. case $os in -sun*os*) # Prevent following clause from handling this invalid input. ;; -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ -apple | -axis | -knuth | -cray | -microblaze*) os= basic_machine=$1 ;; -bluegene*) os=-cnk ;; -sim | -cisco | -oki | -wec | -winbond) os= basic_machine=$1 ;; -scout) ;; -wrs) os=-vxworks basic_machine=$1 ;; -chorusos*) os=-chorusos basic_machine=$1 ;; -chorusrdb) os=-chorusrdb basic_machine=$1 ;; -hiux*) os=-hiuxwe2 ;; -sco6) os=-sco5v6 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco5) os=-sco3.2v5 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco4) os=-sco3.2v4 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2.[4-9]*) os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2v[4-9]*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco5v6*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco*) os=-sco3.2v2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -udk*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -isc) os=-isc2.2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -clix*) basic_machine=clipper-intergraph ;; -isc*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -lynx*178) os=-lynxos178 ;; -lynx*5) os=-lynxos5 ;; -lynx*) os=-lynxos ;; -ptx*) basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` ;; -windowsnt*) os=`echo $os | sed -e 's/windowsnt/winnt/'` ;; -psos*) os=-psos ;; -mint | -mint[0-9]*) basic_machine=m68k-atari os=-mint ;; esac # Decode aliases for certain CPU-COMPANY combinations. case $basic_machine in # Recognize the basic CPU types without company name. # Some are omitted here because they have special meanings below. 1750a | 580 \ | a29k \ | aarch64 | aarch64_be \ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ | am33_2.0 \ | arc \ | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \ | avr | avr32 \ | be32 | be64 \ | bfin \ | c4x | clipper \ | d10v | d30v | dlx | dsp16xx \ | epiphany \ | fido | fr30 | frv \ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ | hexagon \ | i370 | i860 | i960 | ia64 \ | ip2k | iq2000 \ | le32 | le64 \ | lm32 \ | m32c | m32r | m32rle | m68000 | m68k | m88k \ | maxq | mb | microblaze | microblazeel | mcore | mep | metag \ | mips | mipsbe | mipseb | mipsel | mipsle \ | mips16 \ | mips64 | mips64el \ | mips64octeon | mips64octeonel \ | mips64orion | mips64orionel \ | mips64r5900 | mips64r5900el \ | mips64vr | mips64vrel \ | mips64vr4100 | mips64vr4100el \ | mips64vr4300 | mips64vr4300el \ | mips64vr5000 | mips64vr5000el \ | mips64vr5900 | mips64vr5900el \ | mipsisa32 | mipsisa32el \ | mipsisa32r2 | mipsisa32r2el \ | mipsisa64 | mipsisa64el \ | mipsisa64r2 | mipsisa64r2el \ | mipsisa64sb1 | mipsisa64sb1el \ | mipsisa64sr71k | mipsisa64sr71kel \ | mipstx39 | mipstx39el \ | mn10200 | mn10300 \ | moxie \ | mt \ | msp430 \ | nds32 | nds32le | nds32be \ | nios | nios2 \ | ns16k | ns32k \ | open8 \ | or32 \ | pdp10 | pdp11 | pj | pjl \ | powerpc | powerpc64 | powerpc64le | powerpcle \ | pyramid \ | rl78 | rx \ | score \ | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ | sh64 | sh64le \ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ | spu \ | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ | ubicom32 \ | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \ | we32k \ | x86 | xc16x | xstormy16 | xtensa \ | z8k | z80) basic_machine=$basic_machine-unknown ;; c54x) basic_machine=tic54x-unknown ;; c55x) basic_machine=tic55x-unknown ;; c6x) basic_machine=tic6x-unknown ;; m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | picochip) basic_machine=$basic_machine-unknown os=-none ;; m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) ;; ms1) basic_machine=mt-unknown ;; strongarm | thumb | xscale) basic_machine=arm-unknown ;; xgate) basic_machine=$basic_machine-unknown os=-none ;; xscaleeb) basic_machine=armeb-unknown ;; xscaleel) basic_machine=armel-unknown ;; # We use `pc' rather than `unknown' # because (1) that's what they normally are, and # (2) the word "unknown" tends to confuse beginning users. i*86 | x86_64) basic_machine=$basic_machine-pc ;; # Object if more than one company name word. *-*-*) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; # Recognize the basic CPU types with company name. 580-* \ | a29k-* \ | aarch64-* | aarch64_be-* \ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ | avr-* | avr32-* \ | be32-* | be64-* \ | bfin-* | bs2000-* \ | c[123]* | c30-* | [cjt]90-* | c4x-* \ | clipper-* | craynv-* | cydra-* \ | d10v-* | d30v-* | dlx-* \ | elxsi-* \ | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ | h8300-* | h8500-* \ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ | hexagon-* \ | i*86-* | i860-* | i960-* | ia64-* \ | ip2k-* | iq2000-* \ | le32-* | le64-* \ | lm32-* \ | m32c-* | m32r-* | m32rle-* \ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \ | microblaze-* | microblazeel-* \ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ | mips16-* \ | mips64-* | mips64el-* \ | mips64octeon-* | mips64octeonel-* \ | mips64orion-* | mips64orionel-* \ | mips64r5900-* | mips64r5900el-* \ | mips64vr-* | mips64vrel-* \ | mips64vr4100-* | mips64vr4100el-* \ | mips64vr4300-* | mips64vr4300el-* \ | mips64vr5000-* | mips64vr5000el-* \ | mips64vr5900-* | mips64vr5900el-* \ | mipsisa32-* | mipsisa32el-* \ | mipsisa32r2-* | mipsisa32r2el-* \ | mipsisa64-* | mipsisa64el-* \ | mipsisa64r2-* | mipsisa64r2el-* \ | mipsisa64sb1-* | mipsisa64sb1el-* \ | mipsisa64sr71k-* | mipsisa64sr71kel-* \ | mipstx39-* | mipstx39el-* \ | mmix-* \ | mt-* \ | msp430-* \ | nds32-* | nds32le-* | nds32be-* \ | nios-* | nios2-* \ | none-* | np1-* | ns16k-* | ns32k-* \ | open8-* \ | orion-* \ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ | pyramid-* \ | rl78-* | romp-* | rs6000-* | rx-* \ | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ | sparclite-* \ | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \ | tahoe-* \ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ | tile*-* \ | tron-* \ | ubicom32-* \ | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \ | vax-* \ | we32k-* \ | x86-* | x86_64-* | xc16x-* | xps100-* \ | xstormy16-* | xtensa*-* \ | ymp-* \ | z8k-* | z80-*) ;; # Recognize the basic CPU types without company name, with glob match. xtensa*) basic_machine=$basic_machine-unknown ;; # Recognize the various machine names and aliases which stand # for a CPU type and a company and sometimes even an OS. 386bsd) basic_machine=i386-unknown os=-bsd ;; 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) basic_machine=m68000-att ;; 3b*) basic_machine=we32k-att ;; a29khif) basic_machine=a29k-amd os=-udi ;; abacus) basic_machine=abacus-unknown ;; adobe68k) basic_machine=m68010-adobe os=-scout ;; alliant | fx80) basic_machine=fx80-alliant ;; altos | altos3068) basic_machine=m68k-altos ;; am29k) basic_machine=a29k-none os=-bsd ;; amd64) basic_machine=x86_64-pc ;; amd64-*) basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; amdahl) basic_machine=580-amdahl os=-sysv ;; amiga | amiga-*) basic_machine=m68k-unknown ;; amigaos | amigados) basic_machine=m68k-unknown os=-amigaos ;; amigaunix | amix) basic_machine=m68k-unknown os=-sysv4 ;; apollo68) basic_machine=m68k-apollo os=-sysv ;; apollo68bsd) basic_machine=m68k-apollo os=-bsd ;; aros) basic_machine=i386-pc os=-aros ;; aux) basic_machine=m68k-apple os=-aux ;; balance) basic_machine=ns32k-sequent os=-dynix ;; blackfin) basic_machine=bfin-unknown os=-linux ;; blackfin-*) basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; bluegene*) basic_machine=powerpc-ibm os=-cnk ;; c54x-*) basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'` ;; c55x-*) basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'` ;; c6x-*) basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'` ;; c90) basic_machine=c90-cray os=-unicos ;; cegcc) basic_machine=arm-unknown os=-cegcc ;; convex-c1) basic_machine=c1-convex os=-bsd ;; convex-c2) basic_machine=c2-convex os=-bsd ;; convex-c32) basic_machine=c32-convex os=-bsd ;; convex-c34) basic_machine=c34-convex os=-bsd ;; convex-c38) basic_machine=c38-convex os=-bsd ;; cray | j90) basic_machine=j90-cray os=-unicos ;; craynv) basic_machine=craynv-cray os=-unicosmp ;; cr16 | cr16-*) basic_machine=cr16-unknown os=-elf ;; crds | unos) basic_machine=m68k-crds ;; crisv32 | crisv32-* | etraxfs*) basic_machine=crisv32-axis ;; cris | cris-* | etrax*) basic_machine=cris-axis ;; crx) basic_machine=crx-unknown os=-elf ;; da30 | da30-*) basic_machine=m68k-da30 ;; decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) basic_machine=mips-dec ;; decsystem10* | dec10*) basic_machine=pdp10-dec os=-tops10 ;; decsystem20* | dec20*) basic_machine=pdp10-dec os=-tops20 ;; delta | 3300 | motorola-3300 | motorola-delta \ | 3300-motorola | delta-motorola) basic_machine=m68k-motorola ;; delta88) basic_machine=m88k-motorola os=-sysv3 ;; dicos) basic_machine=i686-pc os=-dicos ;; djgpp) basic_machine=i586-pc os=-msdosdjgpp ;; dpx20 | dpx20-*) basic_machine=rs6000-bull os=-bosx ;; dpx2* | dpx2*-bull) basic_machine=m68k-bull os=-sysv3 ;; ebmon29k) basic_machine=a29k-amd os=-ebmon ;; elxsi) basic_machine=elxsi-elxsi os=-bsd ;; encore | umax | mmax) basic_machine=ns32k-encore ;; es1800 | OSE68k | ose68k | ose | OSE) basic_machine=m68k-ericsson os=-ose ;; fx2800) basic_machine=i860-alliant ;; genix) basic_machine=ns32k-ns ;; gmicro) basic_machine=tron-gmicro os=-sysv ;; go32) basic_machine=i386-pc os=-go32 ;; h3050r* | hiux*) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; h8300hms) basic_machine=h8300-hitachi os=-hms ;; h8300xray) basic_machine=h8300-hitachi os=-xray ;; h8500hms) basic_machine=h8500-hitachi os=-hms ;; harris) basic_machine=m88k-harris os=-sysv3 ;; hp300-*) basic_machine=m68k-hp ;; hp300bsd) basic_machine=m68k-hp os=-bsd ;; hp300hpux) basic_machine=m68k-hp os=-hpux ;; hp3k9[0-9][0-9] | hp9[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k2[0-9][0-9] | hp9k31[0-9]) basic_machine=m68000-hp ;; hp9k3[2-9][0-9]) basic_machine=m68k-hp ;; hp9k6[0-9][0-9] | hp6[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k7[0-79][0-9] | hp7[0-79][0-9]) basic_machine=hppa1.1-hp ;; hp9k78[0-9] | hp78[0-9]) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[0-9][13679] | hp8[0-9][13679]) basic_machine=hppa1.1-hp ;; hp9k8[0-9][0-9] | hp8[0-9][0-9]) basic_machine=hppa1.0-hp ;; hppa-next) os=-nextstep3 ;; hppaosf) basic_machine=hppa1.1-hp os=-osf ;; hppro) basic_machine=hppa1.1-hp os=-proelf ;; i370-ibm* | ibm*) basic_machine=i370-ibm ;; i*86v32) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv32 ;; i*86v4*) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv4 ;; i*86v) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv ;; i*86sol2) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-solaris2 ;; i386mach) basic_machine=i386-mach os=-mach ;; i386-vsta | vsta) basic_machine=i386-unknown os=-vsta ;; iris | iris4d) basic_machine=mips-sgi case $os in -irix*) ;; *) os=-irix4 ;; esac ;; isi68 | isi) basic_machine=m68k-isi os=-sysv ;; m68knommu) basic_machine=m68k-unknown os=-linux ;; m68knommu-*) basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; m88k-omron*) basic_machine=m88k-omron ;; magnum | m3230) basic_machine=mips-mips os=-sysv ;; merlin) basic_machine=ns32k-utek os=-sysv ;; microblaze*) basic_machine=microblaze-xilinx ;; mingw64) basic_machine=x86_64-pc os=-mingw64 ;; mingw32) basic_machine=i386-pc os=-mingw32 ;; mingw32ce) basic_machine=arm-unknown os=-mingw32ce ;; miniframe) basic_machine=m68000-convergent ;; *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) basic_machine=m68k-atari os=-mint ;; mips3*-*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` ;; mips3*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown ;; monitor) basic_machine=m68k-rom68k os=-coff ;; morphos) basic_machine=powerpc-unknown os=-morphos ;; msdos) basic_machine=i386-pc os=-msdos ;; ms1-*) basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` ;; msys) basic_machine=i386-pc os=-msys ;; mvs) basic_machine=i370-ibm os=-mvs ;; nacl) basic_machine=le32-unknown os=-nacl ;; ncr3000) basic_machine=i486-ncr os=-sysv4 ;; netbsd386) basic_machine=i386-unknown os=-netbsd ;; netwinder) basic_machine=armv4l-rebel os=-linux ;; news | news700 | news800 | news900) basic_machine=m68k-sony os=-newsos ;; news1000) basic_machine=m68030-sony os=-newsos ;; news-3600 | risc-news) basic_machine=mips-sony os=-newsos ;; necv70) basic_machine=v70-nec os=-sysv ;; next | m*-next ) basic_machine=m68k-next case $os in -nextstep* ) ;; -ns2*) os=-nextstep2 ;; *) os=-nextstep3 ;; esac ;; nh3000) basic_machine=m68k-harris os=-cxux ;; nh[45]000) basic_machine=m88k-harris os=-cxux ;; nindy960) basic_machine=i960-intel os=-nindy ;; mon960) basic_machine=i960-intel os=-mon960 ;; nonstopux) basic_machine=mips-compaq os=-nonstopux ;; np1) basic_machine=np1-gould ;; neo-tandem) basic_machine=neo-tandem ;; nse-tandem) basic_machine=nse-tandem ;; nsr-tandem) basic_machine=nsr-tandem ;; op50n-* | op60c-*) basic_machine=hppa1.1-oki os=-proelf ;; openrisc | openrisc-*) basic_machine=or32-unknown ;; os400) basic_machine=powerpc-ibm os=-os400 ;; OSE68000 | ose68000) basic_machine=m68000-ericsson os=-ose ;; os68k) basic_machine=m68k-none os=-os68k ;; pa-hitachi) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; paragon) basic_machine=i860-intel os=-osf ;; parisc) basic_machine=hppa-unknown os=-linux ;; parisc-*) basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; pbd) basic_machine=sparc-tti ;; pbb) basic_machine=m68k-tti ;; pc532 | pc532-*) basic_machine=ns32k-pc532 ;; pc98) basic_machine=i386-pc ;; pc98-*) basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium | p5 | k5 | k6 | nexgen | viac3) basic_machine=i586-pc ;; pentiumpro | p6 | 6x86 | athlon | athlon_*) basic_machine=i686-pc ;; pentiumii | pentium2 | pentiumiii | pentium3) basic_machine=i686-pc ;; pentium4) basic_machine=i786-pc ;; pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumpro-* | p6-* | 6x86-* | athlon-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium4-*) basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pn) basic_machine=pn-gould ;; power) basic_machine=power-ibm ;; ppc | ppcbe) basic_machine=powerpc-unknown ;; ppc-* | ppcbe-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppcle | powerpclittle | ppc-le | powerpc-little) basic_machine=powerpcle-unknown ;; ppcle-* | powerpclittle-*) basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64) basic_machine=powerpc64-unknown ;; ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64le | powerpc64little | ppc64-le | powerpc64-little) basic_machine=powerpc64le-unknown ;; ppc64le-* | powerpc64little-*) basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ps2) basic_machine=i386-ibm ;; pw32) basic_machine=i586-unknown os=-pw32 ;; rdos | rdos64) basic_machine=x86_64-pc os=-rdos ;; rdos32) basic_machine=i386-pc os=-rdos ;; rom68k) basic_machine=m68k-rom68k os=-coff ;; rm[46]00) basic_machine=mips-siemens ;; rtpc | rtpc-*) basic_machine=romp-ibm ;; s390 | s390-*) basic_machine=s390-ibm ;; s390x | s390x-*) basic_machine=s390x-ibm ;; sa29200) basic_machine=a29k-amd os=-udi ;; sb1) basic_machine=mipsisa64sb1-unknown ;; sb1el) basic_machine=mipsisa64sb1el-unknown ;; sde) basic_machine=mipsisa32-sde os=-elf ;; sei) basic_machine=mips-sei os=-seiux ;; sequent) basic_machine=i386-sequent ;; sh) basic_machine=sh-hitachi os=-hms ;; sh5el) basic_machine=sh5le-unknown ;; sh64) basic_machine=sh64-unknown ;; sparclite-wrs | simso-wrs) basic_machine=sparclite-wrs os=-vxworks ;; sps7) basic_machine=m68k-bull os=-sysv2 ;; spur) basic_machine=spur-unknown ;; st2000) basic_machine=m68k-tandem ;; stratus) basic_machine=i860-stratus os=-sysv4 ;; strongarm-* | thumb-*) basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'` ;; sun2) basic_machine=m68000-sun ;; sun2os3) basic_machine=m68000-sun os=-sunos3 ;; sun2os4) basic_machine=m68000-sun os=-sunos4 ;; sun3os3) basic_machine=m68k-sun os=-sunos3 ;; sun3os4) basic_machine=m68k-sun os=-sunos4 ;; sun4os3) basic_machine=sparc-sun os=-sunos3 ;; sun4os4) basic_machine=sparc-sun os=-sunos4 ;; sun4sol2) basic_machine=sparc-sun os=-solaris2 ;; sun3 | sun3-*) basic_machine=m68k-sun ;; sun4) basic_machine=sparc-sun ;; sun386 | sun386i | roadrunner) basic_machine=i386-sun ;; sv1) basic_machine=sv1-cray os=-unicos ;; symmetry) basic_machine=i386-sequent os=-dynix ;; t3e) basic_machine=alphaev5-cray os=-unicos ;; t90) basic_machine=t90-cray os=-unicos ;; tile*) basic_machine=$basic_machine-unknown os=-linux-gnu ;; tx39) basic_machine=mipstx39-unknown ;; tx39el) basic_machine=mipstx39el-unknown ;; toad1) basic_machine=pdp10-xkl os=-tops20 ;; tower | tower-32) basic_machine=m68k-ncr ;; tpf) basic_machine=s390x-ibm os=-tpf ;; udi29k) basic_machine=a29k-amd os=-udi ;; ultra3) basic_machine=a29k-nyu os=-sym1 ;; v810 | necv810) basic_machine=v810-nec os=-none ;; vaxv) basic_machine=vax-dec os=-sysv ;; vms) basic_machine=vax-dec os=-vms ;; vpp*|vx|vx-*) basic_machine=f301-fujitsu ;; vxworks960) basic_machine=i960-wrs os=-vxworks ;; vxworks68) basic_machine=m68k-wrs os=-vxworks ;; vxworks29k) basic_machine=a29k-wrs os=-vxworks ;; w65*) basic_machine=w65-wdc os=-none ;; w89k-*) basic_machine=hppa1.1-winbond os=-proelf ;; xbox) basic_machine=i686-pc os=-mingw32 ;; xps | xps100) basic_machine=xps100-honeywell ;; xscale-* | xscalee[bl]-*) basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'` ;; ymp) basic_machine=ymp-cray os=-unicos ;; z8k-*-coff) basic_machine=z8k-unknown os=-sim ;; z80-*-coff) basic_machine=z80-unknown os=-sim ;; none) basic_machine=none-none os=-none ;; # Here we handle the default manufacturer of certain CPU types. It is in # some cases the only manufacturer, in others, it is the most popular. w89k) basic_machine=hppa1.1-winbond ;; op50n) basic_machine=hppa1.1-oki ;; op60c) basic_machine=hppa1.1-oki ;; romp) basic_machine=romp-ibm ;; mmix) basic_machine=mmix-knuth ;; rs6000) basic_machine=rs6000-ibm ;; vax) basic_machine=vax-dec ;; pdp10) # there are many clones, so DEC is not a safe bet basic_machine=pdp10-unknown ;; pdp11) basic_machine=pdp11-dec ;; we32k) basic_machine=we32k-att ;; sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) basic_machine=sh-unknown ;; sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) basic_machine=sparc-sun ;; cydra) basic_machine=cydra-cydrome ;; orion) basic_machine=orion-highlevel ;; orion105) basic_machine=clipper-highlevel ;; mac | mpw | mac-mpw) basic_machine=m68k-apple ;; pmac | pmac-mpw) basic_machine=powerpc-apple ;; *-unknown) # Make sure to match an already-canonicalized machine name. ;; *) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; esac # Here we canonicalize certain aliases for manufacturers. case $basic_machine in *-digital*) basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` ;; *-commodore*) basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` ;; *) ;; esac # Decode manufacturer-specific aliases for certain operating systems. if [ x"$os" != x"" ] then case $os in # First match some system type aliases # that might get confused with valid system types. # -solaris* is a basic system type, with this one exception. -auroraux) os=-auroraux ;; -solaris1 | -solaris1.*) os=`echo $os | sed -e 's|solaris1|sunos4|'` ;; -solaris) os=-solaris2 ;; -svr4*) os=-sysv4 ;; -unixware*) os=-sysv4.2uw ;; -gnu/linux*) os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` ;; # First accept the basic system types. # The portable systems comes first. # Each alternative MUST END IN A *, to match a version number. # -sysv* is not here because it comes later, after sysvr4. -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ | -sym* | -kopensolaris* \ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ | -aos* | -aros* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ | -bitrig* | -openbsd* | -solidbsd* \ | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ | -chorusos* | -chorusrdb* | -cegcc* \ | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \ | -linux-newlib* | -linux-musl* | -linux-uclibc* \ | -uxpv* | -beos* | -mpeix* | -udk* \ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*) # Remember, each alternative MUST END IN *, to match a version number. ;; -qnx*) case $basic_machine in x86-* | i*86-*) ;; *) os=-nto$os ;; esac ;; -nto-qnx*) ;; -nto*) os=`echo $os | sed -e 's|nto|nto-qnx|'` ;; -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) ;; -mac*) os=`echo $os | sed -e 's|mac|macos|'` ;; -linux-dietlibc) os=-linux-dietlibc ;; -linux*) os=`echo $os | sed -e 's|linux|linux-gnu|'` ;; -sunos5*) os=`echo $os | sed -e 's|sunos5|solaris2|'` ;; -sunos6*) os=`echo $os | sed -e 's|sunos6|solaris3|'` ;; -opened*) os=-openedition ;; -os400*) os=-os400 ;; -wince*) os=-wince ;; -osfrose*) os=-osfrose ;; -osf*) os=-osf ;; -utek*) os=-bsd ;; -dynix*) os=-bsd ;; -acis*) os=-aos ;; -atheos*) os=-atheos ;; -syllable*) os=-syllable ;; -386bsd) os=-bsd ;; -ctix* | -uts*) os=-sysv ;; -nova*) os=-rtmk-nova ;; -ns2 ) os=-nextstep2 ;; -nsk*) os=-nsk ;; # Preserve the version number of sinix5. -sinix5.*) os=`echo $os | sed -e 's|sinix|sysv|'` ;; -sinix*) os=-sysv4 ;; -tpf*) os=-tpf ;; -triton*) os=-sysv3 ;; -oss*) os=-sysv3 ;; -svr4) os=-sysv4 ;; -svr3) os=-sysv3 ;; -sysvr4) os=-sysv4 ;; # This must come after -sysvr4. -sysv*) ;; -ose*) os=-ose ;; -es1800*) os=-ose ;; -xenix) os=-xenix ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) os=-mint ;; -aros*) os=-aros ;; -kaos*) os=-kaos ;; -zvmoe) os=-zvmoe ;; -dicos*) os=-dicos ;; -nacl*) ;; -none) ;; *) # Get rid of the `-' at the beginning of $os. os=`echo $os | sed 's/[^-]*-//'` echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 exit 1 ;; esac else # Here we handle the default operating systems that come with various machines. # The value should be what the vendor currently ships out the door with their # machine or put another way, the most popular os provided with the machine. # Note that if you're going to try to match "-MANUFACTURER" here (say, # "-sun"), then you have to tell the case statement up towards the top # that MANUFACTURER isn't an operating system. Otherwise, code above # will signal an error saying that MANUFACTURER isn't an operating # system, and we'll never get to this point. case $basic_machine in score-*) os=-elf ;; spu-*) os=-elf ;; *-acorn) os=-riscix1.2 ;; arm*-rebel) os=-linux ;; arm*-semi) os=-aout ;; c4x-* | tic4x-*) os=-coff ;; hexagon-*) os=-elf ;; tic54x-*) os=-coff ;; tic55x-*) os=-coff ;; tic6x-*) os=-coff ;; # This must come before the *-dec entry. pdp10-*) os=-tops20 ;; pdp11-*) os=-none ;; *-dec | vax-*) os=-ultrix4.2 ;; m68*-apollo) os=-domain ;; i386-sun) os=-sunos4.0.2 ;; m68000-sun) os=-sunos3 ;; m68*-cisco) os=-aout ;; mep-*) os=-elf ;; mips*-cisco) os=-elf ;; mips*-*) os=-elf ;; or32-*) os=-coff ;; *-tti) # must be before sparc entry or we get the wrong os. os=-sysv3 ;; sparc-* | *-sun) os=-sunos4.1.1 ;; *-be) os=-beos ;; *-haiku) os=-haiku ;; *-ibm) os=-aix ;; *-knuth) os=-mmixware ;; *-wec) os=-proelf ;; *-winbond) os=-proelf ;; *-oki) os=-proelf ;; *-hp) os=-hpux ;; *-hitachi) os=-hiux ;; i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) os=-sysv ;; *-cbm) os=-amigaos ;; *-dg) os=-dgux ;; *-dolphin) os=-sysv3 ;; m68k-ccur) os=-rtu ;; m88k-omron*) os=-luna ;; *-next ) os=-nextstep ;; *-sequent) os=-ptx ;; *-crds) os=-unos ;; *-ns) os=-genix ;; i370-*) os=-mvs ;; *-next) os=-nextstep3 ;; *-gould) os=-sysv ;; *-highlevel) os=-bsd ;; *-encore) os=-bsd ;; *-sgi) os=-irix ;; *-siemens) os=-sysv4 ;; *-masscomp) os=-rtu ;; f30[01]-fujitsu | f700-fujitsu) os=-uxpv ;; *-rom68k) os=-coff ;; *-*bug) os=-coff ;; *-apple) os=-macos ;; *-atari*) os=-mint ;; *) os=-none ;; esac fi # Here we handle the case where we know the os, and the CPU type, but not the # manufacturer. We pick the logical manufacturer. vendor=unknown case $basic_machine in *-unknown) case $os in -riscix*) vendor=acorn ;; -sunos*) vendor=sun ;; -cnk*|-aix*) vendor=ibm ;; -beos*) vendor=be ;; -hpux*) vendor=hp ;; -mpeix*) vendor=hp ;; -hiux*) vendor=hitachi ;; -unos*) vendor=crds ;; -dgux*) vendor=dg ;; -luna*) vendor=omron ;; -genix*) vendor=ns ;; -mvs* | -opened*) vendor=ibm ;; -os400*) vendor=ibm ;; -ptx*) vendor=sequent ;; -tpf*) vendor=ibm ;; -vxsim* | -vxworks* | -windiss*) vendor=wrs ;; -aux*) vendor=apple ;; -hms*) vendor=hitachi ;; -mpw* | -macos*) vendor=apple ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) vendor=atari ;; -vos*) vendor=stratus ;; esac basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` ;; esac echo $basic_machine$os exit # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: calcurse-3.1.4/test-driver0000755000175000001440000000761112105444411012434 00000000000000#! /bin/sh # test-driver - basic testsuite driver script. scriptversion=2012-06-27.10; # UTC # Copyright (C) 2011-2013 Free Software Foundation, Inc. # # 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, 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, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # This file is maintained in Automake, please report # bugs to or send patches to # . # Make unconditional expansion of undefined variables an error. This # helps a lot in preventing typo-related bugs. set -u usage_error () { echo "$0: $*" >&2 print_usage >&2 exit 2 } print_usage () { cat <$log_file 2>&1 estatus=$? if test $enable_hard_errors = no && test $estatus -eq 99; then estatus=1 fi case $estatus:$expect_failure in 0:yes) col=$red res=XPASS recheck=yes gcopy=yes;; 0:*) col=$grn res=PASS recheck=no gcopy=no;; 77:*) col=$blu res=SKIP recheck=no gcopy=yes;; 99:*) col=$mgn res=ERROR recheck=yes gcopy=yes;; *:yes) col=$lgn res=XFAIL recheck=no gcopy=yes;; *:*) col=$red res=FAIL recheck=yes gcopy=yes;; esac # Report outcome to console. echo "${col}${res}${std}: $test_name" # Register the test result, and other relevant metadata. echo ":test-result: $res" > $trs_file echo ":global-test-result: $res" >> $trs_file echo ":recheck: $recheck" >> $trs_file echo ":copy-in-global-log: $gcopy" >> $trs_file # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: calcurse-3.1.4/configure0000755000175000001440000077604212105444411012160 00000000000000#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.69 for calcurse 3.1.4. # # Report bugs to . # # # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. # # # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # Use a proper internal environment variable to ensure we don't fall # into an infinite loop, continuously re-executing ourselves. if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then _as_can_reexec=no; export _as_can_reexec; # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 as_fn_exit 255 fi # We don't want this to propagate to other subprocesses. { _as_can_reexec=; unset _as_can_reexec;} if test "x$CONFIG_SHELL" = x; then as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi " as_required="as_fn_return () { (exit \$1); } as_fn_success () { as_fn_return 0; } as_fn_failure () { as_fn_return 1; } as_fn_ret_success () { return 0; } as_fn_ret_failure () { return 1; } exitcode=0 as_fn_success || { exitcode=1; echo as_fn_success failed.; } as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : else exitcode=1; echo positional parameters were not saved. fi test x\$exitcode = x0 || exit 1 test -x / || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 test \$(( 1 + 1 )) = 2 || exit 1" if (eval "$as_required") 2>/dev/null; then : as_have_required=yes else as_have_required=no fi if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. as_found=: case $as_dir in #( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. as_shell=$as_dir/$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : CONFIG_SHELL=$as_shell as_have_required=yes if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : break 2 fi fi done;; esac as_found=false done $as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : CONFIG_SHELL=$SHELL as_have_required=yes fi; } IFS=$as_save_IFS if test "x$CONFIG_SHELL" != x; then : export CONFIG_SHELL # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi if test x$as_have_required = xno; then : $as_echo "$0: This script requires a shell more modern than all" $as_echo "$0: the shells that I found on your system." if test x${ZSH_VERSION+set} = xset ; then $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" $as_echo "$0: be upgraded to zsh 4.3.4 or later." else $as_echo "$0: Please tell bug-autoconf@gnu.org and bugs@calcurse.org $0: about your system, including any error possibly output $0: before this message. Then install a modern shell, or $0: manually run the script under such a shell if you do $0: have one." fi exit 1 fi fi fi SHELL=${CONFIG_SHELL-/bin/sh} export SHELL # Unset more variables known to interfere with behavior of common tools. CLICOLOR_FORCE= GREP_OPTIONS= unset CLICOLOR_FORCE GREP_OPTIONS ## --------------------- ## ## M4sh Shell Functions. ## ## --------------------- ## # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_lineno_1=$LINENO as_lineno_1a=$LINENO as_lineno_2=$LINENO as_lineno_2a=$LINENO eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # If we had to re-execute with $CONFIG_SHELL, we're ensured to have # already done that, so ensure we don't try to do so again and fall # in an infinite loop. This has already happened in practice. _as_can_reexec=no; export _as_can_reexec # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" test -n "$DJDIR" || exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` # # Initializations. # ac_default_prefix=/usr/local ac_clean_files= ac_config_libobj_dir=. LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= # Identity of this package. PACKAGE_NAME='calcurse' PACKAGE_TARNAME='calcurse' PACKAGE_VERSION='3.1.4' PACKAGE_STRING='calcurse 3.1.4' PACKAGE_BUGREPORT='bugs@calcurse.org' PACKAGE_URL='' ac_unique_file="src/calcurse.c" # Factoring default headers for most tests. ac_includes_default="\ #include #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_SYS_STAT_H # include #endif #ifdef STDC_HEADERS # include # include #else # ifdef HAVE_STDLIB_H # include # endif #endif #ifdef HAVE_STRING_H # if !defined STDC_HEADERS && defined HAVE_MEMORY_H # include # endif # include #endif #ifdef HAVE_STRINGS_H # include #endif #ifdef HAVE_INTTYPES_H # include #endif #ifdef HAVE_STDINT_H # include #endif #ifdef HAVE_UNISTD_H # include #endif" ac_subst_vars='am__EXEEXT_FALSE am__EXEEXT_TRUE LTLIBOBJS LIBOBJS CALCURSE_MEMORY_DEBUG_FALSE CALCURSE_MEMORY_DEBUG_TRUE HAVE_A2X_FALSE HAVE_A2X_TRUE HAVE_ASCIIDOC_FALSE HAVE_ASCIIDOC_TRUE A2X ASCIIDOC ENABLE_DOCS_FALSE ENABLE_DOCS_TRUE EGREP GREP CPP POSUB LTLIBINTL LIBINTL INTLLIBS LTLIBICONV LIBICONV host_os host_vendor host_cpu host build_os build_vendor build_cpu build am__fastdepCC_FALSE am__fastdepCC_TRUE CCDEPMODE am__nodep AMDEPBACKSLASH AMDEP_FALSE AMDEP_TRUE am__quote am__include DEPDIR OBJEXT EXEEXT ac_ct_CC CPPFLAGS LDFLAGS CFLAGS CC MSGMERGE XGETTEXT GMSGFMT MSGFMT USE_NLS MKINSTALLDIRS AM_BACKSLASH AM_DEFAULT_VERBOSITY AM_DEFAULT_V AM_V am__untar am__tar AMTAR am__leading_dot SET_MAKE AWK mkdir_p MKDIR_P INSTALL_STRIP_PROGRAM STRIP install_sh MAKEINFO AUTOHEADER AUTOMAKE AUTOCONF ACLOCAL VERSION PACKAGE CYGPATH_W am__isrc INSTALL_DATA INSTALL_SCRIPT INSTALL_PROGRAM target_alias host_alias build_alias LIBS ECHO_T ECHO_N ECHO_C DEFS mandir localedir libdir psdir pdfdir dvidir htmldir infodir docdir oldincludedir includedir localstatedir sharedstatedir sysconfdir datadir datarootdir libexecdir sbindir bindir program_transform_name prefix exec_prefix PACKAGE_URL PACKAGE_BUGREPORT PACKAGE_STRING PACKAGE_VERSION PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR SHELL' ac_subst_files='' ac_user_opts=' enable_option_checking enable_silent_rules enable_nls enable_dependency_tracking with_gnu_ld enable_rpath with_libiconv_prefix with_libintl_prefix enable_docs with_asciidoc enable_memory_debug ' ac_precious_vars='build_alias host_alias target_alias CC CFLAGS LDFLAGS LIBS CPPFLAGS CPP' # Initialize some variables set by options. ac_init_help= ac_init_version=false ac_unrecognized_opts= ac_unrecognized_sep= # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. # (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datarootdir='${prefix}/share' datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' pdfdir='${docdir}' psdir='${docdir}' libdir='${exec_prefix}/lib' localedir='${datarootdir}/locale' mandir='${datarootdir}/man' ac_prev= ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval $ac_prev=\$ac_option ac_prev= continue fi case $ac_option in *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; *=) ac_optarg= ;; *) ac_optarg=yes ;; esac # Accept the important Cygnus configure options, so we can diagnose typos. case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ | --dataroo | --dataro | --datar) ac_prev=datarootdir ;; -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) datarootdir=$ac_optarg ;; -disable-* | --disable-*) ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) docdir=$ac_optarg ;; -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ac_prev=dvidir ;; -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ac_prev=htmldir ;; -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ | --ht=*) htmldir=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localedir | --localedir | --localedi | --localed | --locale) ac_prev=localedir ;; -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) localedir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ac_prev=pdfdir ;; -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) pdfdir=$ac_optarg ;; -psdir | --psdir | --psdi | --psd | --ps) ac_prev=psdir ;; -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) psdir=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=no ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) as_fn_error $? "unrecognized option: \`$ac_option' Try \`$0 --help' for more information" ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. case $ac_envvar in #( '' | [0-9]* | *[!_$as_cr_alnum]* ) as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` as_fn_error $? "missing argument to $ac_option" fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi # Check all directory arguments for consistency. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir do eval ac_val=\$$ac_var # Remove trailing slashes. case $ac_val in */ ) ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` eval $ac_var=\$ac_val;; esac # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || as_fn_error $? "working directory cannot be determined" test "X$ac_ls_di" = "X$ac_pwd_ls_di" || as_fn_error $? "pwd does not report name of working directory" # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. ac_confdir=`$as_dirname -- "$as_myself" || $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` srcdir=$ac_confdir if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then srcdir=. fi # Remove unnecessary trailing slashes from srcdir. # Double slashes in file names in object file debugging info # mess up M-x gdb in Emacs. case $srcdir in */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; esac for ac_var in $ac_precious_vars; do eval ac_env_${ac_var}_set=\${${ac_var}+set} eval ac_env_${ac_var}_value=\$${ac_var} eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} eval ac_cv_env_${ac_var}_value=\$${ac_var} done # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures calcurse 3.1.4 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking ...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/calcurse] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF Program names: --program-prefix=PREFIX prepend PREFIX to installed program names --program-suffix=SUFFIX append SUFFIX to installed program names --program-transform-name=PROGRAM run sed PROGRAM on installed program names System types: --build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD] _ACEOF fi if test -n "$ac_init_help"; then case $ac_init_help in short | recursive ) echo "Configuration of calcurse 3.1.4:";; esac cat <<\_ACEOF Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --enable-silent-rules less verbose build output (undo: "make V=1") --disable-silent-rules verbose build output (undo: "make V=0") --disable-nls do not use Native Language Support --enable-dependency-tracking do not reject slow dependency extractors --disable-dependency-tracking speeds up one-time build --disable-rpath do not hardcode runtime library paths --disable-docs skip documentation --enable-memory-debug use memory debug functions Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-gnu-ld assume the C compiler uses GNU ld default=no --with-libiconv-prefix[=DIR] search for libiconv in DIR/include and DIR/lib --without-libiconv-prefix don't search for libiconv in includedir and libdir --with-libintl-prefix[=DIR] search for libintl in DIR/include and DIR/lib --without-libintl-prefix don't search for libintl in includedir and libdir --with-asciidoc use AsciiDoc to regenerate documentation Some influential environment variables: CC C compiler command CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory LIBS libraries to pass to the linker, e.g. -l CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory CPP C preprocessor Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to . _ACEOF ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d "$ac_dir" || { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } # Check for guested configure. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive elif test -f "$ac_srcdir/configure"; then echo && $SHELL "$ac_srcdir/configure" --help=recursive else $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF calcurse configure 3.1.4 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit fi ## ------------------------ ## ## Autoconf initialization. ## ## ------------------------ ## # ac_fn_c_try_compile LINENO # -------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_compile # ac_fn_c_try_link LINENO # ----------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_link # ac_fn_c_try_cpp LINENO # ---------------------- # Try to preprocess conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_cpp () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } > conftest.i && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_cpp # ac_fn_c_try_run LINENO # ---------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. Assumes # that executables *can* be run. ac_fn_c_try_run () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then : ac_retval=0 else $as_echo "$as_me: program exited with status $ac_status" >&5 $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=$ac_status fi rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_run # ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists, giving a warning if it cannot be compiled using # the include files in INCLUDES and setting the cache variable VAR # accordingly. ac_fn_c_check_header_mongrel () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if eval \${$3+:} false; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } else # Is the header compilable? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 $as_echo_n "checking $2 usability... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_header_compiler=yes else ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 $as_echo "$ac_header_compiler" >&6; } # Is the header present? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 $as_echo_n "checking $2 presence... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <$2> _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : ac_header_preproc=yes else ac_header_preproc=no fi rm -f conftest.err conftest.i conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 $as_echo "$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( yes:no: ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 $as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ;; no:yes:* ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 $as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 $as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 $as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 $as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ( $as_echo "## -------------------------------- ## ## Report this to bugs@calcurse.org ## ## -------------------------------- ##" ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else eval "$3=\$ac_header_compiler" fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_mongrel # ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists and can be compiled using the include files in # INCLUDES, setting the cache variable VAR accordingly. ac_fn_c_check_header_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_compile # ac_fn_c_check_func LINENO FUNC VAR # ---------------------------------- # Tests whether FUNC exists, setting the cache variable VAR accordingly ac_fn_c_check_func () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Define $2 to an innocuous variant, in case declares $2. For example, HP-UX 11i declares gettimeofday. */ #define $2 innocuous_$2 /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $2 (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef $2 /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char $2 (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_$2 || defined __stub___$2 choke me #endif int main () { return $2 (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_func cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by calcurse $as_me 3.1.4, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ _ACEOF exec 5>>config.log { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. $as_echo "PATH: $as_dir" done IFS=$as_save_IFS } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; 2) as_fn_append ac_configure_args1 " '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi as_fn_append ac_configure_args " '$ac_arg'" ;; esac done done { ac_configure_args0=; unset ac_configure_args0;} { ac_configure_args1=; unset ac_configure_args1;} # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { echo $as_echo "## ---------------- ## ## Cache variables. ## ## ---------------- ##" echo # The following way of writing the cache mishandles newlines in values, ( for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( *${as_nl}ac_space=\ *) sed -n \ "s/'\''/'\''\\\\'\'''\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ;; #( *) sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) echo $as_echo "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then $as_echo "## ------------------- ## ## File substitutions. ## ## ------------------- ##" echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then $as_echo "## ----------- ## ## confdefs.h. ## ## ----------- ##" echo cat confdefs.h echo fi test "$ac_signal" != 0 && $as_echo "$as_me: caught signal $ac_signal" $as_echo "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h $as_echo "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. cat >>confdefs.h <<_ACEOF #define PACKAGE_NAME "$PACKAGE_NAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_TARNAME "$PACKAGE_TARNAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_VERSION "$PACKAGE_VERSION" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_STRING "$PACKAGE_STRING" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_URL "$PACKAGE_URL" _ACEOF # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. ac_site_file1=NONE ac_site_file2=NONE if test -n "$CONFIG_SITE"; then # We do not want a PATH search for config.site. case $CONFIG_SITE in #(( -*) ac_site_file1=./$CONFIG_SITE;; */*) ac_site_file1=$CONFIG_SITE;; *) ac_site_file1=./$CONFIG_SITE;; esac elif test "x$prefix" != xNONE; then ac_site_file1=$prefix/share/config.site ac_site_file2=$prefix/etc/config.site else ac_site_file1=$ac_default_prefix/share/config.site ac_site_file2=$ac_default_prefix/etc/config.site fi for ac_site_file in "$ac_site_file1" "$ac_site_file2" do test "x$ac_site_file" = xNONE && continue if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 $as_echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "failed to load site script $ac_site_file See \`config.log' for more details" "$LINENO" 5; } fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special files # actually), so we avoid doing that. DJGPP emulates it as a regular file. if test /dev/null != "$cache_file" && test -f "$cache_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 $as_echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 $as_echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val=\$ac_cv_env_${ac_var}_value eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then # differences in whitespace do not lead to failure. ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 $as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 $as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 $as_echo "$as_me: former value: \`$ac_old_val'" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 $as_echo "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) as_fn_append ac_configure_args " '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 $as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 fi ## -------------------- ## ## Main body of script. ## ## -------------------- ## ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu am__api_version='1.13' ac_aux_dir= for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do if test -f "$ac_dir/install-sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install-sh -c" break elif test -f "$ac_dir/install.sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install.sh -c" break elif test -f "$ac_dir/shtool"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/shtool install -c" break fi done if test -z "$ac_aux_dir"; then as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 fi # These three variables are undocumented and unsupported, # and are intended to be withdrawn in a future Autoconf release. # They can cause serious problems if a builder's source tree is in a directory # whose full name contains unusual characters. ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. # Reject install programs that cannot install multiple files. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 $as_echo_n "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then if ${ac_cv_path_install+:} false; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. # Account for people who put trailing slashes in PATH elements. case $as_dir/ in #(( ./ | .// | /[cC]/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else rm -rf conftest.one conftest.two conftest.dir echo one > conftest.one echo two > conftest.two mkdir conftest.dir if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && test -s conftest.one && test -s conftest.two && test -s conftest.dir/conftest.one && test -s conftest.dir/conftest.two then ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" break 3 fi fi fi done done ;; esac done IFS=$as_save_IFS rm -rf conftest.one conftest.two conftest.dir fi if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. Don't cache a # value for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. INSTALL=$ac_install_sh fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 $as_echo "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 $as_echo_n "checking whether build environment is sane... " >&6; } # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[\\\"\#\$\&\'\`$am_lf]*) as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; esac case $srcdir in *[\\\"\#\$\&\'\`$am_lf\ \ ]*) as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;; esac # Do 'set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( am_has_slept=no for am_try in 1 2; do echo "timestamp, slept: $am_has_slept" > conftest.file set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$*" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi if test "$*" != "X $srcdir/configure conftest.file" \ && test "$*" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". as_fn_error $? "ls -t appears to fail. Make sure there is not a broken alias in your environment" "$LINENO" 5 fi if test "$2" = conftest.file || test $am_try -eq 2; then break fi # Just in case. sleep 1 am_has_slept=yes done test "$2" = conftest.file ) then # Ok. : else as_fn_error $? "newly created file is older than distributed files! Check your system clock" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } # If we didn't sleep, we still need to ensure time stamps of config.status and # generated files are strictly newer. am_sleep_pid= if grep 'slept: no' conftest.file >/dev/null 2>&1; then ( sleep 1 ) & am_sleep_pid=$! fi rm -f conftest.file test "$program_prefix" != NONE && program_transform_name="s&^&$program_prefix&;$program_transform_name" # Use a double $ so make ignores it. test "$program_suffix" != NONE && program_transform_name="s&\$&$program_suffix&;$program_transform_name" # Double any \ or $. # By default was `s,x,x', remove it if useless. ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` # expand $ac_aux_dir to an absolute path am_aux_dir=`cd $ac_aux_dir && pwd` if test x"${MISSING+set}" != xset; then case $am_aux_dir in *\ * | *\ *) MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; *) MISSING="\${SHELL} $am_aux_dir/missing" ;; esac fi # Use eval to expand $SHELL if eval "$MISSING --is-lightweight"; then am_missing_run="$MISSING " else am_missing_run= { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 $as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;} fi if test x"${install_sh}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi # Installed binaries are usually stripped using 'strip' when the user # run "make install-strip". However 'strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the 'STRIP' environment variable to overrule this program. if test "$cross_compiling" != no; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 $as_echo "$STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 $as_echo "$ac_ct_STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 $as_echo_n "checking for a thread-safe mkdir -p... " >&6; } if test -z "$MKDIR_P"; then if ${ac_cv_path_mkdir+:} false; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in mkdir gmkdir; do for ac_exec_ext in '' $ac_executable_extensions; do as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( 'mkdir (GNU coreutils) '* | \ 'mkdir (coreutils) '* | \ 'mkdir (fileutils) '4.1*) ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext break 3;; esac done done done IFS=$as_save_IFS fi test -d ./--version && rmdir ./--version if test "${ac_cv_path_mkdir+set}" = set; then MKDIR_P="$ac_cv_path_mkdir -p" else # As a last resort, use the slow shell script. Don't cache a # value for MKDIR_P within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. MKDIR_P="$ac_install_sh -d" fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 $as_echo "$MKDIR_P" >&6; } for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_AWK+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AWK="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 $as_echo "$AWK" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$AWK" && break done { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 $as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } set x ${MAKE-make} ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : $as_echo_n "(cached) " >&6 else cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF # GNU make sometimes prints "make[1]: Entering ...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; *) eval ac_cv_prog_make_${ac_make}_set=no;; esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } SET_MAKE= else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null # Check whether --enable-silent-rules was given. if test "${enable_silent_rules+set}" = set; then : enableval=$enable_silent_rules; fi case $enable_silent_rules in # ((( yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; *) AM_DEFAULT_VERBOSITY=1;; esac am_make=${MAKE-make} { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 $as_echo_n "checking whether $am_make supports nested variables... " >&6; } if ${am_cv_make_support_nested_variables+:} false; then : $as_echo_n "(cached) " >&6 else if $as_echo 'TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 am__doit: @$(TRUE) .PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then am_cv_make_support_nested_variables=yes else am_cv_make_support_nested_variables=no fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 $as_echo "$am_cv_make_support_nested_variables" >&6; } if test $am_cv_make_support_nested_variables = yes; then AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' else AM_V=$AM_DEFAULT_VERBOSITY AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY fi AM_BACKSLASH='\' if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." am__isrc=' -I$(srcdir)' # test to see if srcdir already configured if test -f $srcdir/config.status; then as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi # Define the identity of the package. PACKAGE='calcurse' VERSION='3.1.4' cat >>confdefs.h <<_ACEOF #define PACKAGE "$PACKAGE" _ACEOF cat >>confdefs.h <<_ACEOF #define VERSION "$VERSION" _ACEOF # Some tools Automake needs. ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} # For better backward compatibility. To be removed once Automake 1.9.x # dies out for good. For more background, see: # # mkdir_p='$(MKDIR_P)' # We need awk for the "check" target. The system "awk" is bad on # some platforms. # Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AMTAR='$${TAR-tar}' am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' #m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])]) MKINSTALLDIRS= if test -n "$ac_aux_dir"; then case "$ac_aux_dir" in /*) MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" ;; *) MKINSTALLDIRS="\$(top_builddir)/$ac_aux_dir/mkinstalldirs" ;; esac fi if test -z "$MKINSTALLDIRS"; then MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether NLS is requested" >&5 $as_echo_n "checking whether NLS is requested... " >&6; } # Check whether --enable-nls was given. if test "${enable_nls+set}" = set; then : enableval=$enable_nls; USE_NLS=$enableval else USE_NLS=yes fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5 $as_echo "$USE_NLS" >&6; } # Prepare PATH_SEPARATOR. # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then echo "#! /bin/sh" >conf$$.sh echo "exit 0" >>conf$$.sh chmod +x conf$$.sh if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conf$$.sh fi # Find out how to test for executable files. Don't use a zero-byte file, # as systems may use methods other than mode bits to determine executability. cat >conf$$.file <<_ASEOF #! /bin/sh exit 0 _ASEOF chmod +x conf$$.file if test -x conf$$.file >/dev/null 2>&1; then ac_executable_p="test -x" else ac_executable_p="test -f" fi rm -f conf$$.file # Extract the first word of "msgfmt", so it can be a program name with args. set dummy msgfmt; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_MSGFMT+:} false; then : $as_echo_n "(cached) " >&6 else case "$MSGFMT" in [\\/]* | ?:[\\/]*) ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path. ;; *) ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$ac_save_IFS" test -z "$ac_dir" && ac_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then if $ac_dir/$ac_word --statistics /dev/null >/dev/null 2>&1 && (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then ac_cv_path_MSGFMT="$ac_dir/$ac_word$ac_exec_ext" break 2 fi fi done done IFS="$ac_save_IFS" test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT=":" ;; esac fi MSGFMT="$ac_cv_path_MSGFMT" if test "$MSGFMT" != ":"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGFMT" >&5 $as_echo "$MSGFMT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Extract the first word of "gmsgfmt", so it can be a program name with args. set dummy gmsgfmt; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_GMSGFMT+:} false; then : $as_echo_n "(cached) " >&6 else case $GMSGFMT in [\\/]* | ?:[\\/]*) ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT" ;; esac fi GMSGFMT=$ac_cv_path_GMSGFMT if test -n "$GMSGFMT"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GMSGFMT" >&5 $as_echo "$GMSGFMT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Prepare PATH_SEPARATOR. # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then echo "#! /bin/sh" >conf$$.sh echo "exit 0" >>conf$$.sh chmod +x conf$$.sh if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conf$$.sh fi # Find out how to test for executable files. Don't use a zero-byte file, # as systems may use methods other than mode bits to determine executability. cat >conf$$.file <<_ASEOF #! /bin/sh exit 0 _ASEOF chmod +x conf$$.file if test -x conf$$.file >/dev/null 2>&1; then ac_executable_p="test -x" else ac_executable_p="test -f" fi rm -f conf$$.file # Extract the first word of "xgettext", so it can be a program name with args. set dummy xgettext; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_XGETTEXT+:} false; then : $as_echo_n "(cached) " >&6 else case "$XGETTEXT" in [\\/]* | ?:[\\/]*) ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path. ;; *) ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$ac_save_IFS" test -z "$ac_dir" && ac_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >/dev/null 2>&1 && (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then ac_cv_path_XGETTEXT="$ac_dir/$ac_word$ac_exec_ext" break 2 fi fi done done IFS="$ac_save_IFS" test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT=":" ;; esac fi XGETTEXT="$ac_cv_path_XGETTEXT" if test "$XGETTEXT" != ":"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XGETTEXT" >&5 $as_echo "$XGETTEXT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi rm -f messages.po # Prepare PATH_SEPARATOR. # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then echo "#! /bin/sh" >conf$$.sh echo "exit 0" >>conf$$.sh chmod +x conf$$.sh if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conf$$.sh fi # Find out how to test for executable files. Don't use a zero-byte file, # as systems may use methods other than mode bits to determine executability. cat >conf$$.file <<_ASEOF #! /bin/sh exit 0 _ASEOF chmod +x conf$$.file if test -x conf$$.file >/dev/null 2>&1; then ac_executable_p="test -x" else ac_executable_p="test -f" fi rm -f conf$$.file # Extract the first word of "msgmerge", so it can be a program name with args. set dummy msgmerge; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_MSGMERGE+:} false; then : $as_echo_n "(cached) " >&6 else case "$MSGMERGE" in [\\/]* | ?:[\\/]*) ac_cv_path_MSGMERGE="$MSGMERGE" # Let the user override the test with a path. ;; *) ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$ac_save_IFS" test -z "$ac_dir" && ac_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then if $ac_dir/$ac_word --update -q /dev/null /dev/null >/dev/null 2>&1; then ac_cv_path_MSGMERGE="$ac_dir/$ac_word$ac_exec_ext" break 2 fi fi done done IFS="$ac_save_IFS" test -z "$ac_cv_path_MSGMERGE" && ac_cv_path_MSGMERGE=":" ;; esac fi MSGMERGE="$ac_cv_path_MSGMERGE" if test "$MSGMERGE" != ":"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGMERGE" >&5 $as_echo "$MSGMERGE" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "$GMSGFMT" != ":"; then if $GMSGFMT --statistics /dev/null >/dev/null 2>&1 && (if $GMSGFMT --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then : ; else GMSGFMT=`echo "$GMSGFMT" | sed -e 's,^.*/,,'` { $as_echo "$as_me:${as_lineno-$LINENO}: result: found $GMSGFMT program is not GNU msgfmt; ignore it" >&5 $as_echo "found $GMSGFMT program is not GNU msgfmt; ignore it" >&6; } GMSGFMT=":" fi fi if test "$XGETTEXT" != ":"; then if $XGETTEXT --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >/dev/null 2>&1 && (if $XGETTEXT --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then : ; else { $as_echo "$as_me:${as_lineno-$LINENO}: result: found xgettext program is not GNU xgettext; ignore it" >&5 $as_echo "found xgettext program is not GNU xgettext; ignore it" >&6; } XGETTEXT=":" fi rm -f messages.po fi ac_config_commands="$ac_config_commands default-1" if test "X$prefix" = "XNONE"; then acl_final_prefix="$ac_default_prefix" else acl_final_prefix="$prefix" fi if test "X$exec_prefix" = "XNONE"; then acl_final_exec_prefix='${prefix}' else acl_final_exec_prefix="$exec_prefix" fi acl_save_prefix="$prefix" prefix="$acl_final_prefix" eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" prefix="$acl_save_prefix" DEPDIR="${am__leading_dot}deps" ac_config_commands="$ac_config_commands depfiles" am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo this is the am__doit target .PHONY: am__doit END # If we don't find an include directive, just comment out the code. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5 $as_echo_n "checking for style of include used by $am_make... " >&6; } am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # Ignore all kinds of additional output from 'make'. case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=include am__quote= _am_result=GNU ;; esac # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=.include am__quote="\"" _am_result=BSD ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5 $as_echo "$_am_result" >&6; } rm -f confinc confmf # Check whether --enable-dependency-tracking was given. if test "${enable_dependency_tracking+set}" = set; then : enableval=$enable_dependency_tracking; fi if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' am__nodep='_no' fi if test "x$enable_dependency_tracking" != xno; then AMDEP_TRUE= AMDEP_FALSE='#' else AMDEP_TRUE='#' AMDEP_FALSE= fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH See \`config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 $as_echo_n "checking whether the C compiler works... " >&6; } ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" ac_rmfiles= for ac_file in $ac_files do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; * ) ac_rmfiles="$ac_rmfiles $ac_file";; esac done rm -f $ac_rmfiles if { { ac_try="$ac_link_default" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link_default") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, # so that the user can short-circuit this test for compilers unknown to # Autoconf. for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi # We set ac_cv_exeext here because the later test for it is not # safe: cross compilers may not add the suffix if given an `-o' # argument, so we may need to know it at that point already. # Even if this section looks crufty: it has the advantage of # actually working. break;; * ) break;; esac done test "$ac_cv_exeext" = no && ac_cv_exeext= else ac_file='' fi if test -z "$ac_file"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "C compiler cannot create executables See \`config.log' for more details" "$LINENO" 5; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 $as_echo_n "checking for C compiler default output file name... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 $as_echo "$ac_file" >&6; } ac_exeext=$ac_cv_exeext rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 $as_echo_n "checking for suffix of executables... " >&6; } if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with # `rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` break;; * ) break;; esac done else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of executables: cannot compile and link See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest conftest$ac_cv_exeext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 $as_echo "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { FILE *f = fopen ("conftest.out", "w"); return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF ac_clean_files="$ac_clean_files conftest.out" # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 $as_echo_n "checking whether we are cross compiling... " >&6; } if test "$cross_compiling" != yes; then { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if { ac_try='./conftest$ac_cv_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details" "$LINENO" 5; } fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 $as_echo "$cross_compiling" >&6; } rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 $as_echo_n "checking for suffix of object files... " >&6; } if ${ac_cv_objext+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of object files: cannot compile See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 $as_echo "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 $as_echo_n "checking whether we are using the GNU C compiler... " >&6; } if ${ac_cv_c_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 $as_echo "$ac_cv_c_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 $as_echo_n "checking whether $CC accepts -g... " >&6; } if ${ac_cv_prog_cc_g+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes else CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 $as_echo "$ac_cv_prog_cc_g" >&6; } if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 $as_echo_n "checking for $CC option to accept ISO C89... " >&6; } if ${ac_cv_prog_cc_c89+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include struct stat; /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated as 'x'. The following induces an error, until -std is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something that's true only with -std. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) 'x' int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_c89=$ac_arg fi rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi # AC_CACHE_VAL case "x$ac_cv_prog_cc_c89" in x) { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 $as_echo "none needed" >&6; } ;; xno) { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 $as_echo "unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c89" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 $as_echo "$ac_cv_prog_cc_c89" >&6; } ;; esac if test "x$ac_cv_prog_cc_c89" != xno; then : fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu depcc="$CC" am_compiler_list= { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if ${am_cv_CC_dependencies_compiler_type+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CC_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CC_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CC_dependencies_compiler_type=none fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 $as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then am__fastdepCC_TRUE= am__fastdepCC_FALSE='#' else am__fastdepCC_TRUE='#' am__fastdepCC_FALSE= fi # Make sure we can run config.sub. $SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 $as_echo_n "checking build system type... " >&6; } if ${ac_cv_build+:} false; then : $as_echo_n "(cached) " >&6 else ac_build_alias=$build_alias test "x$ac_build_alias" = x && ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` test "x$ac_build_alias" = x && as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 $as_echo "$ac_cv_build" >&6; } case $ac_cv_build in *-*-*) ;; *) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; esac build=$ac_cv_build ac_save_IFS=$IFS; IFS='-' set x $ac_cv_build shift build_cpu=$1 build_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: build_os=$* IFS=$ac_save_IFS case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 $as_echo_n "checking host system type... " >&6; } if ${ac_cv_host+:} false; then : $as_echo_n "(cached) " >&6 else if test "x$host_alias" = x; then ac_cv_host=$ac_cv_build else ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 $as_echo "$ac_cv_host" >&6; } case $ac_cv_host in *-*-*) ;; *) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; esac host=$ac_cv_host ac_save_IFS=$IFS; IFS='-' set x $ac_cv_host shift host_cpu=$1 host_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: host_os=$* IFS=$ac_save_IFS case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac # Check whether --with-gnu-ld was given. if test "${with_gnu_ld+set}" = set; then : withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes else with_gnu_ld=no fi # Prepare PATH_SEPARATOR. # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then echo "#! /bin/sh" >conf$$.sh echo "exit 0" >>conf$$.sh chmod +x conf$$.sh if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conf$$.sh fi ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by GCC" >&5 $as_echo_n "checking for ld used by GCC... " >&6; } case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [\\/]* | [A-Za-z]:[\\/]*) re_direlt='/[^/][^/]*/\.\./' # Canonicalize the path of ld ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 $as_echo_n "checking for GNU ld... " >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 $as_echo_n "checking for non-GNU ld... " >&6; } fi if ${acl_cv_path_LD+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$LD"; then IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" for ac_dir in $PATH; do test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then acl_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some GNU ld's only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$acl_cv_path_LD" -v 2>&1 < /dev/null` in *GNU* | *'with BFD'*) test "$with_gnu_ld" != no && break ;; *) test "$with_gnu_ld" != yes && break ;; esac fi done IFS="$ac_save_ifs" else acl_cv_path_LD="$LD" # Let the user override the test with a path. fi fi LD="$acl_cv_path_LD" if test -n "$LD"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5 $as_echo "$LD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 $as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } if ${acl_cv_prog_gnu_ld+:} false; then : $as_echo_n "(cached) " >&6 else # I'd rather use --version here, but apparently some GNU ld's only accept -v. case `$LD -v 2>&1 &5 $as_echo "$acl_cv_prog_gnu_ld" >&6; } with_gnu_ld=$acl_cv_prog_gnu_ld { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shared library run path origin" >&5 $as_echo_n "checking for shared library run path origin... " >&6; } if ${acl_cv_rpath+:} false; then : $as_echo_n "(cached) " >&6 else CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh . ./conftest.sh rm -f ./conftest.sh acl_cv_rpath=done fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $acl_cv_rpath" >&5 $as_echo "$acl_cv_rpath" >&6; } wl="$acl_cv_wl" libext="$acl_cv_libext" shlibext="$acl_cv_shlibext" hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" hardcode_direct="$acl_cv_hardcode_direct" hardcode_minus_L="$acl_cv_hardcode_minus_L" # Check whether --enable-rpath was given. if test "${enable_rpath+set}" = set; then : enableval=$enable_rpath; : else enable_rpath=yes fi use_additional=yes acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" # Check whether --with-libiconv-prefix was given. if test "${with_libiconv_prefix+set}" = set; then : withval=$with_libiconv_prefix; if test "X$withval" = "Xno"; then use_additional=no else if test "X$withval" = "X"; then acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" else additional_includedir="$withval/include" additional_libdir="$withval/lib" fi fi fi LIBICONV= LTLIBICONV= INCICONV= rpathdirs= ltrpathdirs= names_already_handled= names_next_round='iconv ' while test -n "$names_next_round"; do names_this_round="$names_next_round" names_next_round= for name in $names_this_round; do already_handled= for n in $names_already_handled; do if test "$n" = "$name"; then already_handled=yes break fi done if test -z "$already_handled"; then names_already_handled="$names_already_handled $name" uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'` eval value=\"\$HAVE_LIB$uppername\" if test -n "$value"; then if test "$value" = yes; then eval value=\"\$LIB$uppername\" test -z "$value" || LIBICONV="${LIBICONV}${LIBICONV:+ }$value" eval value=\"\$LTLIB$uppername\" test -z "$value" || LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$value" else : fi else found_dir= found_la= found_so= found_a= if test $use_additional = yes; then if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext"; then found_dir="$additional_libdir" found_so="$additional_libdir/lib$name.$shlibext" if test -f "$additional_libdir/lib$name.la"; then found_la="$additional_libdir/lib$name.la" fi else if test -f "$additional_libdir/lib$name.$libext"; then found_dir="$additional_libdir" found_a="$additional_libdir/lib$name.$libext" if test -f "$additional_libdir/lib$name.la"; then found_la="$additional_libdir/lib$name.la" fi fi fi fi if test "X$found_dir" = "X"; then for x in $LDFLAGS $LTLIBICONV; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" case "$x" in -L*) dir=`echo "X$x" | sed -e 's/^X-L//'` if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext"; then found_dir="$dir" found_so="$dir/lib$name.$shlibext" if test -f "$dir/lib$name.la"; then found_la="$dir/lib$name.la" fi else if test -f "$dir/lib$name.$libext"; then found_dir="$dir" found_a="$dir/lib$name.$libext" if test -f "$dir/lib$name.la"; then found_la="$dir/lib$name.la" fi fi fi ;; esac if test "X$found_dir" != "X"; then break fi done fi if test "X$found_dir" != "X"; then LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$found_dir -l$name" if test "X$found_so" != "X"; then if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/lib"; then LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" else haveit= for x in $ltrpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $found_dir" fi if test "$hardcode_direct" = yes; then LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" else if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" haveit= for x in $rpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $found_dir" fi else haveit= for x in $LDFLAGS $LIBICONV; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir" fi if test "$hardcode_minus_L" != no; then LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" else LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name" fi fi fi fi else if test "X$found_a" != "X"; then LIBICONV="${LIBICONV}${LIBICONV:+ }$found_a" else LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir -l$name" fi fi additional_includedir= case "$found_dir" in */lib | */lib/) basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e 's,/lib/*$,,'` additional_includedir="$basedir/include" ;; esac if test "X$additional_includedir" != "X"; then if test "X$additional_includedir" != "X/usr/include"; then haveit= if test "X$additional_includedir" = "X/usr/local/include"; then if test -n "$GCC"; then case $host_os in linux*) haveit=yes;; esac fi fi if test -z "$haveit"; then for x in $CPPFLAGS $INCICONV; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-I$additional_includedir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_includedir"; then INCICONV="${INCICONV}${INCICONV:+ }-I$additional_includedir" fi fi fi fi fi if test -n "$found_la"; then save_libdir="$libdir" case "$found_la" in */* | *\\*) . "$found_la" ;; *) . "./$found_la" ;; esac libdir="$save_libdir" for dep in $dependency_libs; do case "$dep" in -L*) additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` if test "X$additional_libdir" != "X/usr/lib"; then haveit= if test "X$additional_libdir" = "X/usr/local/lib"; then if test -n "$GCC"; then case $host_os in linux*) haveit=yes;; esac fi fi if test -z "$haveit"; then haveit= for x in $LDFLAGS $LIBICONV; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_libdir"; then LIBICONV="${LIBICONV}${LIBICONV:+ }-L$additional_libdir" fi fi haveit= for x in $LDFLAGS $LTLIBICONV; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_libdir"; then LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$additional_libdir" fi fi fi fi ;; -R*) dir=`echo "X$dep" | sed -e 's/^X-R//'` if test "$enable_rpath" != no; then haveit= for x in $rpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $dir" fi haveit= for x in $ltrpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $dir" fi fi ;; -l*) names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` ;; *.la) names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` ;; *) LIBICONV="${LIBICONV}${LIBICONV:+ }$dep" LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$dep" ;; esac done fi else LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name" LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-l$name" fi fi fi done done if test "X$rpathdirs" != "X"; then if test -n "$hardcode_libdir_separator"; then alldirs= for found_dir in $rpathdirs; do alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir" done acl_save_libdir="$libdir" libdir="$alldirs" eval flag=\"$hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIBICONV="${LIBICONV}${LIBICONV:+ }$flag" else for found_dir in $rpathdirs; do acl_save_libdir="$libdir" libdir="$found_dir" eval flag=\"$hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIBICONV="${LIBICONV}${LIBICONV:+ }$flag" done fi fi if test "X$ltrpathdirs" != "X"; then for found_dir in $ltrpathdirs; do LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-R$found_dir" done fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether NLS is requested" >&5 $as_echo_n "checking whether NLS is requested... " >&6; } # Check whether --enable-nls was given. if test "${enable_nls+set}" = set; then : enableval=$enable_nls; USE_NLS=$enableval else USE_NLS=yes fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5 $as_echo "$USE_NLS" >&6; } LIBINTL= LTLIBINTL= POSUB= if test "$USE_NLS" = "yes"; then gt_use_preinstalled_gnugettext=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libc" >&5 $as_echo_n "checking for GNU gettext in libc... " >&6; } if ${gt_cv_func_gnugettext1_libc+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include extern int _nl_msg_cat_cntr; extern int *_nl_domain_bindings; int main () { bindtextdomain ("", ""); return (int) gettext ("") + _nl_msg_cat_cntr + *_nl_domain_bindings ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : gt_cv_func_gnugettext1_libc=yes else gt_cv_func_gnugettext1_libc=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_gnugettext1_libc" >&5 $as_echo "$gt_cv_func_gnugettext1_libc" >&6; } if test "$gt_cv_func_gnugettext1_libc" != "yes"; then am_save_CPPFLAGS="$CPPFLAGS" for element in $INCICONV; do haveit= for x in $CPPFLAGS; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X$element"; then haveit=yes break fi done if test -z "$haveit"; then CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" fi done { $as_echo "$as_me:${as_lineno-$LINENO}: checking for iconv" >&5 $as_echo_n "checking for iconv... " >&6; } if ${am_cv_func_iconv+:} false; then : $as_echo_n "(cached) " >&6 else am_cv_func_iconv="no, consider installing GNU libiconv" am_cv_lib_iconv=no cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main () { iconv_t cd = iconv_open("",""); iconv(cd,NULL,NULL,NULL,NULL); iconv_close(cd); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : am_cv_func_iconv=yes fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test "$am_cv_func_iconv" != yes; then am_save_LIBS="$LIBS" LIBS="$LIBS $LIBICONV" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main () { iconv_t cd = iconv_open("",""); iconv(cd,NULL,NULL,NULL,NULL); iconv_close(cd); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : am_cv_lib_iconv=yes am_cv_func_iconv=yes fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS="$am_save_LIBS" fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv" >&5 $as_echo "$am_cv_func_iconv" >&6; } if test "$am_cv_func_iconv" = yes; then $as_echo "#define HAVE_ICONV 1" >>confdefs.h fi if test "$am_cv_lib_iconv" = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libiconv" >&5 $as_echo_n "checking how to link with libiconv... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBICONV" >&5 $as_echo "$LIBICONV" >&6; } else CPPFLAGS="$am_save_CPPFLAGS" LIBICONV= LTLIBICONV= fi use_additional=yes acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" # Check whether --with-libintl-prefix was given. if test "${with_libintl_prefix+set}" = set; then : withval=$with_libintl_prefix; if test "X$withval" = "Xno"; then use_additional=no else if test "X$withval" = "X"; then acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" else additional_includedir="$withval/include" additional_libdir="$withval/lib" fi fi fi LIBINTL= LTLIBINTL= INCINTL= rpathdirs= ltrpathdirs= names_already_handled= names_next_round='intl ' while test -n "$names_next_round"; do names_this_round="$names_next_round" names_next_round= for name in $names_this_round; do already_handled= for n in $names_already_handled; do if test "$n" = "$name"; then already_handled=yes break fi done if test -z "$already_handled"; then names_already_handled="$names_already_handled $name" uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'` eval value=\"\$HAVE_LIB$uppername\" if test -n "$value"; then if test "$value" = yes; then eval value=\"\$LIB$uppername\" test -z "$value" || LIBINTL="${LIBINTL}${LIBINTL:+ }$value" eval value=\"\$LTLIB$uppername\" test -z "$value" || LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$value" else : fi else found_dir= found_la= found_so= found_a= if test $use_additional = yes; then if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext"; then found_dir="$additional_libdir" found_so="$additional_libdir/lib$name.$shlibext" if test -f "$additional_libdir/lib$name.la"; then found_la="$additional_libdir/lib$name.la" fi else if test -f "$additional_libdir/lib$name.$libext"; then found_dir="$additional_libdir" found_a="$additional_libdir/lib$name.$libext" if test -f "$additional_libdir/lib$name.la"; then found_la="$additional_libdir/lib$name.la" fi fi fi fi if test "X$found_dir" = "X"; then for x in $LDFLAGS $LTLIBINTL; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" case "$x" in -L*) dir=`echo "X$x" | sed -e 's/^X-L//'` if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext"; then found_dir="$dir" found_so="$dir/lib$name.$shlibext" if test -f "$dir/lib$name.la"; then found_la="$dir/lib$name.la" fi else if test -f "$dir/lib$name.$libext"; then found_dir="$dir" found_a="$dir/lib$name.$libext" if test -f "$dir/lib$name.la"; then found_la="$dir/lib$name.la" fi fi fi ;; esac if test "X$found_dir" != "X"; then break fi done fi if test "X$found_dir" != "X"; then LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$found_dir -l$name" if test "X$found_so" != "X"; then if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/lib"; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" else haveit= for x in $ltrpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $found_dir" fi if test "$hardcode_direct" = yes; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" else if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" haveit= for x in $rpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $found_dir" fi else haveit= for x in $LDFLAGS $LIBINTL; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir" fi if test "$hardcode_minus_L" != no; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" else LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name" fi fi fi fi else if test "X$found_a" != "X"; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_a" else LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir -l$name" fi fi additional_includedir= case "$found_dir" in */lib | */lib/) basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e 's,/lib/*$,,'` additional_includedir="$basedir/include" ;; esac if test "X$additional_includedir" != "X"; then if test "X$additional_includedir" != "X/usr/include"; then haveit= if test "X$additional_includedir" = "X/usr/local/include"; then if test -n "$GCC"; then case $host_os in linux*) haveit=yes;; esac fi fi if test -z "$haveit"; then for x in $CPPFLAGS $INCINTL; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-I$additional_includedir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_includedir"; then INCINTL="${INCINTL}${INCINTL:+ }-I$additional_includedir" fi fi fi fi fi if test -n "$found_la"; then save_libdir="$libdir" case "$found_la" in */* | *\\*) . "$found_la" ;; *) . "./$found_la" ;; esac libdir="$save_libdir" for dep in $dependency_libs; do case "$dep" in -L*) additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` if test "X$additional_libdir" != "X/usr/lib"; then haveit= if test "X$additional_libdir" = "X/usr/local/lib"; then if test -n "$GCC"; then case $host_os in linux*) haveit=yes;; esac fi fi if test -z "$haveit"; then haveit= for x in $LDFLAGS $LIBINTL; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_libdir"; then LIBINTL="${LIBINTL}${LIBINTL:+ }-L$additional_libdir" fi fi haveit= for x in $LDFLAGS $LTLIBINTL; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_libdir"; then LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$additional_libdir" fi fi fi fi ;; -R*) dir=`echo "X$dep" | sed -e 's/^X-R//'` if test "$enable_rpath" != no; then haveit= for x in $rpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $dir" fi haveit= for x in $ltrpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $dir" fi fi ;; -l*) names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` ;; *.la) names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` ;; *) LIBINTL="${LIBINTL}${LIBINTL:+ }$dep" LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$dep" ;; esac done fi else LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name" LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-l$name" fi fi fi done done if test "X$rpathdirs" != "X"; then if test -n "$hardcode_libdir_separator"; then alldirs= for found_dir in $rpathdirs; do alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir" done acl_save_libdir="$libdir" libdir="$alldirs" eval flag=\"$hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIBINTL="${LIBINTL}${LIBINTL:+ }$flag" else for found_dir in $rpathdirs; do acl_save_libdir="$libdir" libdir="$found_dir" eval flag=\"$hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIBINTL="${LIBINTL}${LIBINTL:+ }$flag" done fi fi if test "X$ltrpathdirs" != "X"; then for found_dir in $ltrpathdirs; do LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-R$found_dir" done fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libintl" >&5 $as_echo_n "checking for GNU gettext in libintl... " >&6; } if ${gt_cv_func_gnugettext1_libintl+:} false; then : $as_echo_n "(cached) " >&6 else gt_save_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $INCINTL" gt_save_LIBS="$LIBS" LIBS="$LIBS $LIBINTL" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include extern int _nl_msg_cat_cntr; extern #ifdef __cplusplus "C" #endif const char *_nl_expand_alias (); int main () { bindtextdomain ("", ""); return (int) gettext ("") + _nl_msg_cat_cntr + *_nl_expand_alias (0) ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : gt_cv_func_gnugettext1_libintl=yes else gt_cv_func_gnugettext1_libintl=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test "$gt_cv_func_gnugettext1_libintl" != yes && test -n "$LIBICONV"; then LIBS="$LIBS $LIBICONV" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include extern int _nl_msg_cat_cntr; extern #ifdef __cplusplus "C" #endif const char *_nl_expand_alias (); int main () { bindtextdomain ("", ""); return (int) gettext ("") + _nl_msg_cat_cntr + *_nl_expand_alias (0) ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : LIBINTL="$LIBINTL $LIBICONV" LTLIBINTL="$LTLIBINTL $LTLIBICONV" gt_cv_func_gnugettext1_libintl=yes fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi CPPFLAGS="$gt_save_CPPFLAGS" LIBS="$gt_save_LIBS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_gnugettext1_libintl" >&5 $as_echo "$gt_cv_func_gnugettext1_libintl" >&6; } fi if test "$gt_cv_func_gnugettext1_libc" = "yes" \ || { test "$gt_cv_func_gnugettext1_libintl" = "yes" \ && test "$PACKAGE" != gettext-runtime \ && test "$PACKAGE" != gettext-tools; }; then gt_use_preinstalled_gnugettext=yes else LIBINTL= LTLIBINTL= INCINTL= fi if test "$gt_use_preinstalled_gnugettext" = "yes" \ || test "$nls_cv_use_gnu_gettext" = "yes"; then $as_echo "#define ENABLE_NLS 1" >>confdefs.h else USE_NLS=no fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to use NLS" >&5 $as_echo_n "checking whether to use NLS... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5 $as_echo "$USE_NLS" >&6; } if test "$USE_NLS" = "yes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking where the gettext function comes from" >&5 $as_echo_n "checking where the gettext function comes from... " >&6; } if test "$gt_use_preinstalled_gnugettext" = "yes"; then if test "$gt_cv_func_gnugettext1_libintl" = "yes"; then gt_source="external libintl" else gt_source="libc" fi else gt_source="included intl directory" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_source" >&5 $as_echo "$gt_source" >&6; } fi if test "$USE_NLS" = "yes"; then if test "$gt_use_preinstalled_gnugettext" = "yes"; then if test "$gt_cv_func_gnugettext1_libintl" = "yes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libintl" >&5 $as_echo_n "checking how to link with libintl... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBINTL" >&5 $as_echo "$LIBINTL" >&6; } for element in $INCINTL; do haveit= for x in $CPPFLAGS; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X$element"; then haveit=yes break fi done if test -z "$haveit"; then CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" fi done fi $as_echo "#define HAVE_GETTEXT 1" >>confdefs.h $as_echo "#define HAVE_DCGETTEXT 1" >>confdefs.h fi POSUB=po fi INTLLIBS="$LIBINTL" ac_config_headers="$ac_config_headers config.h" #------------------------------------------------------------------------------- # Checks for system type #------------------------------------------------------------------------------- #------------------------------------------------------------------------------- # Checks for programs #------------------------------------------------------------------------------- ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH See \`config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 $as_echo_n "checking whether we are using the GNU C compiler... " >&6; } if ${ac_cv_c_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 $as_echo "$ac_cv_c_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 $as_echo_n "checking whether $CC accepts -g... " >&6; } if ${ac_cv_prog_cc_g+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes else CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 $as_echo "$ac_cv_prog_cc_g" >&6; } if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 $as_echo_n "checking for $CC option to accept ISO C89... " >&6; } if ${ac_cv_prog_cc_c89+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include struct stat; /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated as 'x'. The following induces an error, until -std is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something that's true only with -std. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) 'x' int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_c89=$ac_arg fi rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi # AC_CACHE_VAL case "x$ac_cv_prog_cc_c89" in x) { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 $as_echo "none needed" >&6; } ;; xno) { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 $as_echo "unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c89" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 $as_echo "$ac_cv_prog_cc_c89" >&6; } ;; esac if test "x$ac_cv_prog_cc_c89" != xno; then : fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu depcc="$CC" am_compiler_list= { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if ${am_cv_CC_dependencies_compiler_type+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CC_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CC_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CC_dependencies_compiler_type=none fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 $as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then am__fastdepCC_TRUE= am__fastdepCC_FALSE='#' else am__fastdepCC_TRUE='#' am__fastdepCC_FALSE= fi #------------------------------------------------------------------------------- # Checks for header files #------------------------------------------------------------------------------- ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 $as_echo_n "checking how to run the C preprocessor... " >&6; } # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if ${ac_cv_prog_CPP+:} false; then : $as_echo_n "(cached) " >&6 else # Double quotes because CPP needs to be expanded for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" do ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : break fi done ac_cv_prog_CPP=$CPP fi CPP=$ac_cv_prog_CPP else ac_cv_prog_CPP=$CPP fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 $as_echo "$CPP" >&6; } ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details" "$LINENO" 5; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 $as_echo_n "checking for grep that handles long lines and -e... " >&6; } if ${ac_cv_path_GREP+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$GREP"; then ac_path_GREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in grep ggrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_GREP" || continue # Check for GNU ac_path_GREP and select it if it is found. # Check for GNU $ac_path_GREP case `"$ac_path_GREP" --version 2>&1` in *GNU*) ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'GREP' >> "conftest.nl" "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_GREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_GREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_GREP"; then as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_GREP=$GREP fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 $as_echo "$ac_cv_path_GREP" >&6; } GREP="$ac_cv_path_GREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 $as_echo_n "checking for egrep... " >&6; } if ${ac_cv_path_EGREP+:} false; then : $as_echo_n "(cached) " >&6 else if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 then ac_cv_path_EGREP="$GREP -E" else if test -z "$EGREP"; then ac_path_EGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in egrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_EGREP" || continue # Check for GNU ac_path_EGREP and select it if it is found. # Check for GNU $ac_path_EGREP case `"$ac_path_EGREP" --version 2>&1` in *GNU*) ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'EGREP' >> "conftest.nl" "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_EGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_EGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_EGREP"; then as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_EGREP=$EGREP fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 $as_echo "$ac_cv_path_EGREP" >&6; } EGREP="$ac_cv_path_EGREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 $as_echo_n "checking for ANSI C header files... " >&6; } if ${ac_cv_header_stdc+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_header_stdc=yes else ac_cv_header_stdc=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "memchr" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "free" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. if test "$cross_compiling" = yes; then : : else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) \ (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) return 2; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : else ac_cv_header_stdc=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 $as_echo "$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then $as_echo "#define STDC_HEADERS 1" >>confdefs.h fi # On IRIX 5.3, sys/types and inttypes.h are conflicting. for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ inttypes.h stdint.h unistd.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default " if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in ctype.h getopt.h locale.h math.h signal.h stdio.h stdlib.h \ string.h sys/stat.h sys/types.h sys/wait.h time.h unistd.h \ fcntl.h paths.h errno.h limits.h regex.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done #------------------------------------------------------------------------------- # Checks for system libs #------------------------------------------------------------------------------- ac_fn_c_check_func "$LINENO" "initscr" "ac_cv_func_initscr" if test "x$ac_cv_func_initscr" = xyes; then : else available_ncurses="none" for lib in ncursesw ncurses do as_ac_Lib=`$as_echo "ac_cv_lib_$lib''_initscr" | $as_tr_sh` { $as_echo "$as_me:${as_lineno-$LINENO}: checking for initscr in -l$lib" >&5 $as_echo_n "checking for initscr in -l$lib... " >&6; } if eval \${$as_ac_Lib+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-l$lib $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char initscr (); int main () { return initscr (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : eval "$as_ac_Lib=yes" else eval "$as_ac_Lib=no" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi eval ac_res=\$$as_ac_Lib { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } if eval test \"x\$"$as_ac_Lib"\" = x"yes"; then : available_ncurses="$lib"; break fi done if test "$available_ncurses" = none; then as_fn_error $? "Either ncurses or ncursesw library is required to build calcurse!" "$LINENO" 5 elif test "$available_ncurses" = ncursesw; then for ac_header in ncursesw/ncurses.h do : ac_fn_c_check_header_mongrel "$LINENO" "ncursesw/ncurses.h" "ac_cv_header_ncursesw_ncurses_h" "$ac_includes_default" if test "x$ac_cv_header_ncursesw_ncurses_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_NCURSESW_NCURSES_H 1 _ACEOF else for ac_header in ncurses.h do : ac_fn_c_check_header_mongrel "$LINENO" "ncurses.h" "ac_cv_header_ncurses_h" "$ac_includes_default" if test "x$ac_cv_header_ncurses_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_NCURSES_H 1 _ACEOF else as_fn_error $? "Missing ncursesw header file" "$LINENO" 5 fi done fi done else for ac_header in ncurses/ncurses.h do : ac_fn_c_check_header_mongrel "$LINENO" "ncurses/ncurses.h" "ac_cv_header_ncurses_ncurses_h" "$ac_includes_default" if test "x$ac_cv_header_ncurses_ncurses_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_NCURSES_NCURSES_H 1 _ACEOF else for ac_header in ncurses.h do : ac_fn_c_check_header_mongrel "$LINENO" "ncurses.h" "ac_cv_header_ncurses_h" "$ac_includes_default" if test "x$ac_cv_header_ncurses_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_NCURSES_H 1 _ACEOF else as_fn_error $? "Missing ncurses header file" "$LINENO" 5 fi done fi done fi LIBS="$LIBS -l$available_ncurses" fi for ac_header in pthread.h do : ac_fn_c_check_header_mongrel "$LINENO" "pthread.h" "ac_cv_header_pthread_h" "$ac_includes_default" if test "x$ac_cv_header_pthread_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_PTHREAD_H 1 _ACEOF { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_create in -lpthread" >&5 $as_echo_n "checking for pthread_create in -lpthread... " >&6; } if ${ac_cv_lib_pthread_pthread_create+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lpthread $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char pthread_create (); int main () { return pthread_create (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_pthread_pthread_create=yes else ac_cv_lib_pthread_pthread_create=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pthread_pthread_create" >&5 $as_echo "$ac_cv_lib_pthread_pthread_create" >&6; } if test "x$ac_cv_lib_pthread_pthread_create" = xyes; then : LIBS="$LIBS -pthread" $as_echo "#define HAVE_LIBPTHREAD 1" >>confdefs.h else as_fn_error $? "The pthread library is required in order to build calcurse!" "$LINENO" 5 fi else as_fn_error $? "The pthread header is required in order to build calcurse!" "$LINENO" 5 fi done for ac_header in math.h do : ac_fn_c_check_header_mongrel "$LINENO" "math.h" "ac_cv_header_math_h" "$ac_includes_default" if test "x$ac_cv_header_math_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_MATH_H 1 _ACEOF { $as_echo "$as_me:${as_lineno-$LINENO}: checking for exp in -lm" >&5 $as_echo_n "checking for exp in -lm... " >&6; } if ${ac_cv_lib_m_exp+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lm $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char exp (); int main () { return exp (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_m_exp=yes else ac_cv_lib_m_exp=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_m_exp" >&5 $as_echo "$ac_cv_lib_m_exp" >&6; } if test "x$ac_cv_lib_m_exp" = xyes; then : LIBS="$LIBS -lm" $as_echo "#define HAVE_LIBMATH 1" >>confdefs.h else as_fn_error $? "The math library is required in order to build calcurse!" "$LINENO" 5 fi else as_fn_error $? "The math header is required in order to build calcurse!" "$LINENO" 5 fi done #------------------------------------------------------------------------------- # Check whether to build documentation #------------------------------------------------------------------------------- # Check whether --enable-docs was given. if test "${enable_docs+set}" = set; then : enableval=$enable_docs; enabledocs=$enableval else enabledocs=yes fi if test x"$enabledocs" != x"yes"; then enabledocs=no { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Skipping documentation!" >&5 $as_echo "$as_me: WARNING: Skipping documentation!" >&2;} fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to include documentation" >&5 $as_echo_n "checking whether to include documentation... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enabledocs" >&5 $as_echo "$enabledocs" >&6; } if test x"$enabledocs" = x"yes"; then ENABLE_DOCS_TRUE= ENABLE_DOCS_FALSE='#' else ENABLE_DOCS_TRUE='#' ENABLE_DOCS_FALSE= fi # Check whether --with-asciidoc was given. if test "${with_asciidoc+set}" = set; then : withval=$with_asciidoc; use_asciidoc=$withval else use_asciidoc="auto" fi if test x"$use_asciidoc" = x"auto"; then # Extract the first word of "asciidoc", so it can be a program name with args. set dummy asciidoc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_ASCIIDOC+:} false; then : $as_echo_n "(cached) " >&6 else case $ASCIIDOC in [\\/]* | ?:[\\/]*) ac_cv_path_ASCIIDOC="$ASCIIDOC" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_ASCIIDOC="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi ASCIIDOC=$ac_cv_path_ASCIIDOC if test -n "$ASCIIDOC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ASCIIDOC" >&5 $as_echo "$ASCIIDOC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test -z "$ASCIIDOC"; then have_asciidoc=no { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: AsciiDoc not found - cannot rebuild documentation!" >&5 $as_echo "$as_me: WARNING: AsciiDoc not found - cannot rebuild documentation!" >&2;} else have_asciidoc=yes fi # Extract the first word of "a2x", so it can be a program name with args. set dummy a2x; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_A2X+:} false; then : $as_echo_n "(cached) " >&6 else case $A2X in [\\/]* | ?:[\\/]*) ac_cv_path_A2X="$A2X" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_A2X="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi A2X=$ac_cv_path_A2X if test -n "$A2X"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $A2X" >&5 $as_echo "$A2X" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test -z "$A2X"; then have_a2x=no { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: a2x not found - cannot rebuild man pages!" >&5 $as_echo "$as_me: WARNING: a2x not found - cannot rebuild man pages!" >&2;} else have_a2x=yes fi elif test x"$use_asciidoc" = x"yes"; then # Extract the first word of "asciidoc", so it can be a program name with args. set dummy asciidoc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_ASCIIDOC+:} false; then : $as_echo_n "(cached) " >&6 else case $ASCIIDOC in [\\/]* | ?:[\\/]*) ac_cv_path_ASCIIDOC="$ASCIIDOC" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_ASCIIDOC="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi ASCIIDOC=$ac_cv_path_ASCIIDOC if test -n "$ASCIIDOC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ASCIIDOC" >&5 $as_echo "$ASCIIDOC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test -z "$ASCIIDOC"; then as_fn_error $? "AsciiDoc not found and \"--with-asciidoc\" specified!" "$LINENO" 5 fi # Extract the first word of "a2x", so it can be a program name with args. set dummy a2x; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_A2X+:} false; then : $as_echo_n "(cached) " >&6 else case $A2X in [\\/]* | ?:[\\/]*) ac_cv_path_A2X="$A2X" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_A2X="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi A2X=$ac_cv_path_A2X if test -n "$A2X"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $A2X" >&5 $as_echo "$A2X" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test -z "$A2X"; then as_fn_error $? "a2x not found and \"--with-asciidoc\" specified!" "$LINENO" 5 fi have_asciidoc=yes elif test x"$use_asciidoc" = x"no"; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Will not rebuild documentation!" >&5 $as_echo "$as_me: WARNING: Will not rebuild documentation!" >&2;} have_asciidoc=no have_a2x=no fi if test $have_asciidoc = yes; then HAVE_ASCIIDOC_TRUE= HAVE_ASCIIDOC_FALSE='#' else HAVE_ASCIIDOC_TRUE='#' HAVE_ASCIIDOC_FALSE= fi if test $have_a2x = yes; then HAVE_A2X_TRUE= HAVE_A2X_FALSE='#' else HAVE_A2X_TRUE='#' HAVE_A2X_FALSE= fi #------------------------------------------------------------------------------- # Compilation options #------------------------------------------------------------------------------- CFLAGS="$CFLAGS -Wall" # Check whether --enable-memory_debug was given. if test "${enable_memory_debug+set}" = set; then : enableval=$enable_memory_debug; memdebug=$enableval fi if test "$memdebug" != "yes"; then memdebug=no $as_echo "#define CALCURSE_MEMORY_DEBUG_DISABLED 1" >>confdefs.h else $as_echo "#define CALCURSE_MEMORY_DEBUG 1" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking if memory debug should be used" >&5 $as_echo_n "checking if memory debug should be used... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $memdebug" >&5 $as_echo "$memdebug" >&6; } if test x$memdebug = xyes; then CALCURSE_MEMORY_DEBUG_TRUE= CALCURSE_MEMORY_DEBUG_FALSE='#' else CALCURSE_MEMORY_DEBUG_TRUE='#' CALCURSE_MEMORY_DEBUG_FALSE= fi #------------------------------------------------------------------------------- # Create Makefiles #------------------------------------------------------------------------------- ac_config_files="$ac_config_files Makefile doc/Makefile src/Makefile test/Makefile scripts/Makefile po/Makefile.in po/Makefile" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. ( for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) # `set' does not quote correctly, so add quotes: double-quote # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) | sed ' /^ac_cv_env_/b end t clear :clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then if test "x$cache_file" != "x/dev/null"; then { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 $as_echo "$as_me: updating cache $cache_file" >&6;} if test ! -f "$cache_file" || test -h "$cache_file"; then cat confcache >"$cache_file" else case $cache_file in #( */* | ?:*) mv -f confcache "$cache_file"$$ && mv -f "$cache_file"$$ "$cache_file" ;; #( *) mv -f confcache "$cache_file" ;; esac fi fi else { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' DEFS=-DHAVE_CONFIG_H ac_libobjs= ac_ltlibobjs= U= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`$as_echo "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs { $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 $as_echo_n "checking that generated files are newer than configure... " >&6; } if test -n "$am_sleep_pid"; then # Hide warnings about reused PIDs. wait $am_sleep_pid 2>/dev/null fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5 $as_echo "done" >&6; } if test -n "$EXEEXT"; then am__EXEEXT_TRUE= am__EXEEXT_FALSE='#' else am__EXEEXT_TRUE='#' am__EXEEXT_FALSE= fi if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then as_fn_error $? "conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${ENABLE_DOCS_TRUE}" && test -z "${ENABLE_DOCS_FALSE}"; then as_fn_error $? "conditional \"ENABLE_DOCS\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_ASCIIDOC_TRUE}" && test -z "${HAVE_ASCIIDOC_FALSE}"; then as_fn_error $? "conditional \"HAVE_ASCIIDOC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HAVE_A2X_TRUE}" && test -z "${HAVE_A2X_FALSE}"; then as_fn_error $? "conditional \"HAVE_A2X\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${CALCURSE_MEMORY_DEBUG_TRUE}" && test -z "${CALCURSE_MEMORY_DEBUG_FALSE}"; then as_fn_error $? "conditional \"CALCURSE_MEMORY_DEBUG\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi : "${CONFIG_STATUS=./config.status}" ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 $as_echo "$as_me: creating $CONFIG_STATUS" >&6;} as_write_fail=0 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 ## ----------------------------------- ## ## Main body of $CONFIG_STATUS script. ## ## ----------------------------------- ## _ASEOF test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Save the log message, to keep $0 and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by calcurse $as_me 3.1.4, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF case $ac_config_files in *" "*) set x $ac_config_files; shift; ac_config_files=$*;; esac case $ac_config_headers in *" "*) set x $ac_config_headers; shift; ac_config_headers=$*;; esac cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" config_headers="$ac_config_headers" config_commands="$ac_config_commands" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ \`$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. Usage: $0 [OPTION]... [TAG]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit --config print configuration, then exit -q, --quiet, --silent do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE --header=FILE[:TEMPLATE] instantiate the configuration header FILE Configuration files: $config_files Configuration headers: $config_headers Configuration commands: $config_commands Report bugs to ." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ calcurse config.status 3.1.4 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" Copyright (C) 2012 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' INSTALL='$INSTALL' MKDIR_P='$MKDIR_P' AWK='$AWK' test -n "\$AWK" || AWK=awk _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # The default lists apply if the user does not specify any file. ac_need_defaults=: while test $# != 0 do case $1 in --*=?*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; --*=) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg= ac_shift=: ;; *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) $as_echo "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) $as_echo "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append CONFIG_HEADERS " '$ac_optarg'" ac_need_defaults=false;; --he | --h) # Conflict between --help and --header as_fn_error $? "ambiguous option: \`$1' Try \`$0 --help' for more information.";; --help | --hel | -h ) $as_echo "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) as_fn_error $? "unrecognized option: \`$1' Try \`$0 --help' for more information." ;; *) as_fn_append ac_config_targets " $1" ac_need_defaults=false ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX $as_echo "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # # INIT-COMMANDS # # Capture the value of obsolete ALL_LINGUAS because we need it to compute # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it # from automake. eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"' # Capture the value of LINGUAS because we need it to compute CATALOGS. LINGUAS="${LINGUAS-%UNSET%}" AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "default-1") CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;; "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; "test/Makefile") CONFIG_FILES="$CONFIG_FILES test/Makefile" ;; "scripts/Makefile") CONFIG_FILES="$CONFIG_FILES scripts/Makefile" ;; "po/Makefile.in") CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;; "po/Makefile") CONFIG_FILES="$CONFIG_FILES po/Makefile" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: # after its creation but before its name has been assigned to `$tmp'. $debug || { tmp= ac_tmp= trap 'exit_status=$? : "${ac_tmp:=$tmp}" { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status ' 0 trap 'as_fn_exit 1' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 ac_tmp=$tmp # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. # This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then ac_cr=`echo X | tr X '\015'` # On cygwin, bash can eat \r inside `` if the user requested igncr. # But we know of no other shell where ac_cr would be empty at this # point, so we can use a bashism as a fallback. if test "x$ac_cr" = x; then eval ac_cr=\$\'\\r\' fi ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ac_cs_awk_cr='\\r' else ac_cs_awk_cr=$ac_cr fi echo 'BEGIN {' >"$ac_tmp/subs1.awk" && _ACEOF { echo "cat >conf$$subs.awk <<_ACEOF" && echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do . ./conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done rm -f conf$$subs.sh cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && _ACEOF sed -n ' h s/^/S["/; s/!.*/"]=/ p g s/^[^!]*!// :repl t repl s/'"$ac_delim"'$// t delim :nl h s/\(.\{148\}\)..*/\1/ t more1 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ p n b repl :more1 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t nl :delim h s/\(.\{148\}\)..*/\1/ t more2 s/["\\]/\\&/g; s/^/"/; s/$/"/ p b :more2 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t delim ' >$CONFIG_STATUS || ac_write_fail=1 rm -f conf$$subs.awk cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACAWK cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && for (key in S) S_is_set[key] = 1 FS = "" } { line = $ 0 nfields = split(line, field, "@") substed = 0 len = length(field[1]) for (i = 2; i < nfields; i++) { key = field[i] keylen = length(key) if (S_is_set[key]) { value = S[key] line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) len += length(value) + length(field[++i]) substed = 1 } else len += 1 + keylen } print line } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" else cat fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 _ACEOF # VPATH may cause trouble with some makes, so we remove sole $(srcdir), # ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ h s/// s/^/:/ s/[ ]*$/:/ s/:\$(srcdir):/:/g s/:\${srcdir}:/:/g s/:@srcdir@:/:/g s/^:*// s/:*$// x s/\(=[ ]*\).*/\1/ G s/\n// s/^[^=]*=[ ]*$// }' fi cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" # Set up the scripts for CONFIG_HEADERS section. # No need to generate them if there are no CONFIG_HEADERS. # This happens for instance with `./config.status Makefile'. if test -n "$CONFIG_HEADERS"; then cat >"$ac_tmp/defines.awk" <<\_ACAWK || BEGIN { _ACEOF # Transform confdefs.h into an awk script `defines.awk', embedded as # here-document in config.status, that substitutes the proper values into # config.h.in to produce config.h. # Create a delimiter string that does not exist in confdefs.h, to ease # handling of long lines. ac_delim='%!_!# ' for ac_last_try in false false :; do ac_tt=`sed -n "/$ac_delim/p" confdefs.h` if test -z "$ac_tt"; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done # For the awk script, D is an array of macro values keyed by name, # likewise P contains macro parameters if any. Preserve backslash # newline sequences. ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* sed -n ' s/.\{148\}/&'"$ac_delim"'/g t rset :rset s/^[ ]*#[ ]*define[ ][ ]*/ / t def d :def s/\\$// t bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3"/p s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p d :bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3\\\\\\n"\\/p t cont s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p t cont d :cont n s/.\{148\}/&'"$ac_delim"'/g t clear :clear s/\\$// t bsnlc s/["\\]/\\&/g; s/^/"/; s/$/"/p d :bsnlc s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p b cont ' >$CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 for (key in D) D_is_set[key] = 1 FS = "" } /^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { line = \$ 0 split(line, arg, " ") if (arg[1] == "#") { defundef = arg[2] mac1 = arg[3] } else { defundef = substr(arg[1], 2) mac1 = arg[2] } split(mac1, mac2, "(") #) macro = mac2[1] prefix = substr(line, 1, index(line, defundef) - 1) if (D_is_set[macro]) { # Preserve the white space surrounding the "#". print prefix "define", macro P[macro] D[macro] next } else { # Replace #undef with comments. This is necessary, for example, # in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. if (defundef == "undef") { print "/*", prefix defundef, macro, "*/" next } } } { print } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 fi # test -n "$CONFIG_HEADERS" eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" shift for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac ac_save_IFS=$IFS IFS=: set x $ac_tag IFS=$ac_save_IFS shift ac_file=$1 shift case $ac_mode in :L) ac_source=$1;; :[FH]) ac_file_inputs= for ac_f do case $ac_f in -) ac_f="$ac_tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain `:'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; esac case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append ac_file_inputs " '$ac_f'" done # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 $as_echo "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) ac_sed_conf_input=`$as_echo "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac case $ac_tag in *:-:* | *:-) cat >"$ac_tmp/stdin" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac ;; esac ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir="$ac_dir"; as_fn_mkdir_p ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix case $ac_mode in :F) # # CONFIG_FILE # case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; esac ac_MKDIR_P=$MKDIR_P case $MKDIR_P in [\\/$]* | ?:[\\/]* ) ;; */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; esac _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= ac_sed_dataroot=' /datarootdir/ { p q } /@datadir@/p /@docdir@/p /@infodir@/p /@localedir@/p /@mandir@/p' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 $as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_sed_extra="$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t s&@top_build_prefix@&$ac_top_build_prefix&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t s&@builddir@&$ac_builddir&;t t s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t s&@INSTALL@&$ac_INSTALL&;t t s&@MKDIR_P@&$ac_MKDIR_P&;t t $ac_datarootdir_hack " eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ "$ac_tmp/out"`; test -z "$ac_out"; } && { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&5 $as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&2;} rm -f "$ac_tmp/stdin" case $ac_file in -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; esac \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; :H) # # CONFIG_HEADER # if test x"$ac_file" != x-; then { $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" } >"$ac_tmp/config.h" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 $as_echo "$as_me: $ac_file is unchanged" >&6;} else rm -f "$ac_file" mv "$ac_tmp/config.h" "$ac_file" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 fi else $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ || as_fn_error $? "could not create -" "$LINENO" 5 fi # Compute "$ac_file"'s index in $config_headers. _am_arg="$ac_file" _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || $as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$_am_arg" : 'X\(//\)[^/]' \| \ X"$_am_arg" : 'X\(//\)$' \| \ X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$_am_arg" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'`/stamp-h$_am_stamp_count ;; :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 $as_echo "$as_me: executing $ac_file commands" >&6;} ;; esac case $ac_file$ac_mode in "default-1":C) for ac_file in $CONFIG_FILES; do # Support "outfile[:infile[:infile...]]" case "$ac_file" in *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; esac # PO directories have a Makefile.in generated from Makefile.in.in. case "$ac_file" in */Makefile.in) # Adjust a relative srcdir. ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` # In autoconf-2.13 it is called $ac_given_srcdir. # In autoconf-2.50 it is called $srcdir. test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" case "$ac_given_srcdir" in .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; /*) top_srcdir="$ac_given_srcdir" ;; *) top_srcdir="$ac_dots$ac_given_srcdir" ;; esac if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then rm -f "$ac_dir/POTFILES" test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" POMAKEFILEDEPS="POTFILES.in" # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend # on $ac_dir but don't depend on user-specified configuration # parameters. if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then # The LINGUAS file contains the set of available languages. if test -n "$OBSOLETE_ALL_LINGUAS"; then test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" fi ALL_LINGUAS_=`sed -e "/^#/d" "$ac_given_srcdir/$ac_dir/LINGUAS"` # Hide the ALL_LINGUAS assigment from automake. eval 'ALL_LINGUAS''=$ALL_LINGUAS_' POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS" else # The set of available languages was given in configure.in. eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS' fi # Compute POFILES # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po) # Compute UPDATEPOFILES # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update) # Compute DUMMYPOFILES # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop) # Compute GMOFILES # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo) case "$ac_given_srcdir" in .) srcdirpre= ;; *) srcdirpre='$(srcdir)/' ;; esac POFILES= UPDATEPOFILES= DUMMYPOFILES= GMOFILES= for lang in $ALL_LINGUAS; do POFILES="$POFILES $srcdirpre$lang.po" UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" DUMMYPOFILES="$DUMMYPOFILES $lang.nop" GMOFILES="$GMOFILES $srcdirpre$lang.gmo" done # CATALOGS depends on both $ac_dir and the user's LINGUAS # environment variable. INST_LINGUAS= if test -n "$ALL_LINGUAS"; then for presentlang in $ALL_LINGUAS; do useit=no if test "%UNSET%" != "$LINGUAS"; then desiredlanguages="$LINGUAS" else desiredlanguages="$ALL_LINGUAS" fi for desiredlang in $desiredlanguages; do # Use the presentlang catalog if desiredlang is # a. equal to presentlang, or # b. a variant of presentlang (because in this case, # presentlang can be used as a fallback for messages # which are not translated in the desiredlang catalog). case "$desiredlang" in "$presentlang"*) useit=yes;; esac done if test $useit = yes; then INST_LINGUAS="$INST_LINGUAS $presentlang" fi done fi CATALOGS= if test -n "$INST_LINGUAS"; then for lang in $INST_LINGUAS; do CATALOGS="$CATALOGS $lang.gmo" done fi test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do if test -f "$f"; then case "$f" in *.orig | *.bak | *~) ;; *) cat "$f" >> "$ac_dir/Makefile" ;; esac fi done fi ;; esac done ;; "depfiles":C) test x"$AMDEP_TRUE" != x"" || { # Older Autoconf quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. case $CONFIG_FILES in *\'*) eval set x "$CONFIG_FILES" ;; *) set x $CONFIG_FILES ;; esac shift for mf do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. # We used to match only the files named 'Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. # Grep'ing the whole file is not good either: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then dirpart=`$as_dirname -- "$mf" || $as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$mf" : 'X\(//\)[^/]' \| \ X"$mf" : 'X\(//\)$' \| \ X"$mf" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$mf" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` else continue fi # Extract the definition of DEPDIR, am__include, and am__quote # from the Makefile without running 'make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`$as_dirname -- "$file" || $as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$file" : 'X\(//\)[^/]' \| \ X"$file" : 'X\(//\)$' \| \ X"$file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir=$dirpart/$fdir; as_fn_mkdir_p # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done } ;; esac done # for ac_tag as_fn_exit 0 _ACEOF ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || as_fn_exit 1 fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi #------------------------------------------------------------------------------- # Summary #------------------------------------------------------------------------------- echo echo "========================================================================" echo "$PACKAGE is configured as follows." echo "Please check that this configuration matches your expectations." echo "Also give a look at the config.h file to check for preprocessor symbols." echo echo "Host system type : $host" echo echo "Options used to compile and link:" echo " PREFIX = $prefix" echo " VERSION = $PACKAGE_VERSION" echo " CC = $CC" echo " CFLAGS = $CFLAGS" echo " CPPFLAGS = $CPPFLAGS" echo " DEFS = $DEFS" echo " LD = $LD" echo " LDFLAGS = $LDFLAGS" echo " LIBS = $LIBS" echo "========================================================================" echo calcurse-3.1.4/config.guess0000755000175000001440000012746312105444410012565 00000000000000#! /bin/sh # Attempt to guess a canonical system name. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, # 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, # 2011, 2012, 2013 Free Software Foundation, Inc. timestamp='2012-12-29' # This file 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 3 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, see . # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that # program. This Exception is an additional permission under section 7 # of the GNU General Public License, version 3 ("GPLv3"). # # Originally written by Per Bothner. # # You can get the latest version of this script from: # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD # # Please send patches with a ChangeLog entry to config-patches@gnu.org. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] Output the configuration name of the system \`$me' is run on. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" >&2 exit 1 ;; * ) break ;; esac done if test $# != 0; then echo "$me: too many arguments$help" >&2 exit 1 fi trap 'exit 1' 1 2 15 # CC_FOR_BUILD -- compiler used by this script. Note that the use of a # compiler to aid in system detection is discouraged as it requires # temporary files to be created and, as you can see below, it is a # headache to deal with in a portable fashion. # Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still # use `HOST_CC' if defined, but it is deprecated. # Portable tmp directory creation inspired by the Autoconf team. set_cc_for_build=' trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; : ${TMPDIR=/tmp} ; { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; dummy=$tmp/dummy ; tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; case $CC_FOR_BUILD,$HOST_CC,$CC in ,,) echo "int x;" > $dummy.c ; for c in cc gcc c89 c99 ; do if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then CC_FOR_BUILD="$c"; break ; fi ; done ; if test x"$CC_FOR_BUILD" = x ; then CC_FOR_BUILD=no_compiler_found ; fi ;; ,,*) CC_FOR_BUILD=$CC ;; ,*,*) CC_FOR_BUILD=$HOST_CC ;; esac ; set_cc_for_build= ;' # This is needed to find uname on a Pyramid OSx when run in the BSD universe. # (ghazi@noc.rutgers.edu 1994-08-24) if (test -f /.attbin/uname) >/dev/null 2>&1 ; then PATH=$PATH:/.attbin ; export PATH fi UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown # Note: order is significant - the case branches are not exclusive. case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in *:NetBSD:*:*) # NetBSD (nbsd) targets should (where applicable) match one or # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently # switched to ELF, *-*-netbsd* would select the old # object file format. This provides both forward # compatibility and a consistent mechanism for selecting the # object file format. # # Note: NetBSD doesn't particularly care about the vendor # portion of the name. We always set it to "unknown". sysctl="sysctl -n hw.machine_arch" UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ /usr/sbin/$sysctl 2>/dev/null || echo unknown)` case "${UNAME_MACHINE_ARCH}" in armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; sh3eb) machine=sh-unknown ;; sh5el) machine=sh5le-unknown ;; *) machine=${UNAME_MACHINE_ARCH}-unknown ;; esac # The Operating System including object format, if it has switched # to ELF recently, or will in the future. case "${UNAME_MACHINE_ARCH}" in arm*|i386|m68k|ns32k|sh3*|sparc|vax) eval $set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ELF__ then # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). # Return netbsd for either. FIX? os=netbsd else os=netbsdelf fi ;; *) os=netbsd ;; esac # The OS release # Debian GNU/NetBSD machines have a different userland, and # thus, need a distinct triplet. However, they do not need # kernel version information, so it can be replaced with a # suitable tag, in the style of linux-gnu. case "${UNAME_VERSION}" in Debian*) release='-gnu' ;; *) release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` ;; esac # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. echo "${machine}-${os}${release}" exit ;; *:Bitrig:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE} exit ;; *:OpenBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} exit ;; *:ekkoBSD:*:*) echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} exit ;; *:SolidBSD:*:*) echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} exit ;; macppc:MirBSD:*:*) echo powerpc-unknown-mirbsd${UNAME_RELEASE} exit ;; *:MirBSD:*:*) echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} exit ;; alpha:OSF1:*:*) case $UNAME_RELEASE in *4.0) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` ;; *5.*) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` ;; esac # According to Compaq, /usr/sbin/psrinfo has been available on # OSF/1 and Tru64 systems produced since 1995. I hope that # covers most systems running today. This code pipes the CPU # types through head -n 1, so we only detect the type of CPU 0. ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` case "$ALPHA_CPU_TYPE" in "EV4 (21064)") UNAME_MACHINE="alpha" ;; "EV4.5 (21064)") UNAME_MACHINE="alpha" ;; "LCA4 (21066/21068)") UNAME_MACHINE="alpha" ;; "EV5 (21164)") UNAME_MACHINE="alphaev5" ;; "EV5.6 (21164A)") UNAME_MACHINE="alphaev56" ;; "EV5.6 (21164PC)") UNAME_MACHINE="alphapca56" ;; "EV5.7 (21164PC)") UNAME_MACHINE="alphapca57" ;; "EV6 (21264)") UNAME_MACHINE="alphaev6" ;; "EV6.7 (21264A)") UNAME_MACHINE="alphaev67" ;; "EV6.8CB (21264C)") UNAME_MACHINE="alphaev68" ;; "EV6.8AL (21264B)") UNAME_MACHINE="alphaev68" ;; "EV6.8CX (21264D)") UNAME_MACHINE="alphaev68" ;; "EV6.9A (21264/EV69A)") UNAME_MACHINE="alphaev69" ;; "EV7 (21364)") UNAME_MACHINE="alphaev7" ;; "EV7.9 (21364A)") UNAME_MACHINE="alphaev79" ;; esac # A Pn.n version is a patched version. # A Vn.n version is a released version. # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` # Reset EXIT trap before exiting to avoid spurious non-zero exit code. exitcode=$? trap '' 0 exit $exitcode ;; Alpha\ *:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # Should we change UNAME_MACHINE based on the output of uname instead # of the specific Alpha model? echo alpha-pc-interix exit ;; 21064:Windows_NT:50:3) echo alpha-dec-winnt3.5 exit ;; Amiga*:UNIX_System_V:4.0:*) echo m68k-unknown-sysv4 exit ;; *:[Aa]miga[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-amigaos exit ;; *:[Mm]orph[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-morphos exit ;; *:OS/390:*:*) echo i370-ibm-openedition exit ;; *:z/VM:*:*) echo s390-ibm-zvmoe exit ;; *:OS400:*:*) echo powerpc-ibm-os400 exit ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) echo arm-acorn-riscix${UNAME_RELEASE} exit ;; arm*:riscos:*:*|arm*:RISCOS:*:*) echo arm-unknown-riscos exit ;; SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) echo hppa1.1-hitachi-hiuxmpp exit ;; Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. if test "`(/bin/universe) 2>/dev/null`" = att ; then echo pyramid-pyramid-sysv3 else echo pyramid-pyramid-bsd fi exit ;; NILE*:*:*:dcosx) echo pyramid-pyramid-svr4 exit ;; DRS?6000:unix:4.0:6*) echo sparc-icl-nx6 exit ;; DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) case `/usr/bin/uname -p` in sparc) echo sparc-icl-nx7; exit ;; esac ;; s390x:SunOS:*:*) echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4H:SunOS:5.*:*) echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) echo i386-pc-auroraux${UNAME_RELEASE} exit ;; i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) eval $set_cc_for_build SUN_ARCH="i386" # If there is a compiler, see if it is configured for 64-bit objects. # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. # This test works for both compilers. if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then SUN_ARCH="x86_64" fi fi echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize # SunOS6. Hard to guess exactly what SunOS6 will be like, but # it's likely to be more like Solaris than SunOS4. echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:*:*) case "`/usr/bin/arch -k`" in Series*|S4*) UNAME_RELEASE=`uname -v` ;; esac # Japanese Language versions have a version number like `4.1.3-JL'. echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` exit ;; sun3*:SunOS:*:*) echo m68k-sun-sunos${UNAME_RELEASE} exit ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 case "`/bin/arch`" in sun3) echo m68k-sun-sunos${UNAME_RELEASE} ;; sun4) echo sparc-sun-sunos${UNAME_RELEASE} ;; esac exit ;; aushp:SunOS:*:*) echo sparc-auspex-sunos${UNAME_RELEASE} exit ;; # The situation for MiNT is a little confusing. The machine name # can be virtually everything (everything which is not # "atarist" or "atariste" at least should have a processor # > m68000). The system name ranges from "MiNT" over "FreeMiNT" # to the lowercase version "mint" (or "freemint"). Finally # the system name "TOS" denotes a system which is actually not # MiNT. But MiNT is downward compatible to TOS, so this should # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) echo m68k-milan-mint${UNAME_RELEASE} exit ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) echo m68k-hades-mint${UNAME_RELEASE} exit ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) echo m68k-unknown-mint${UNAME_RELEASE} exit ;; m68k:machten:*:*) echo m68k-apple-machten${UNAME_RELEASE} exit ;; powerpc:machten:*:*) echo powerpc-apple-machten${UNAME_RELEASE} exit ;; RISC*:Mach:*:*) echo mips-dec-mach_bsd4.3 exit ;; RISC*:ULTRIX:*:*) echo mips-dec-ultrix${UNAME_RELEASE} exit ;; VAX*:ULTRIX*:*:*) echo vax-dec-ultrix${UNAME_RELEASE} exit ;; 2020:CLIX:*:* | 2430:CLIX:*:*) echo clipper-intergraph-clix${UNAME_RELEASE} exit ;; mips:*:*:UMIPS | mips:*:*:RISCos) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #ifdef __cplusplus #include /* for printf() prototype */ int main (int argc, char *argv[]) { #else int main (argc, argv) int argc; char *argv[]; { #endif #if defined (host_mips) && defined (MIPSEB) #if defined (SYSTYPE_SYSV) printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_SVR4) printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); #endif #endif exit (-1); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && SYSTEM_NAME=`$dummy $dummyarg` && { echo "$SYSTEM_NAME"; exit; } echo mips-mips-riscos${UNAME_RELEASE} exit ;; Motorola:PowerMAX_OS:*:*) echo powerpc-motorola-powermax exit ;; Motorola:*:4.3:PL8-*) echo powerpc-harris-powermax exit ;; Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) echo powerpc-harris-powermax exit ;; Night_Hawk:Power_UNIX:*:*) echo powerpc-harris-powerunix exit ;; m88k:CX/UX:7*:*) echo m88k-harris-cxux7 exit ;; m88k:*:4*:R4*) echo m88k-motorola-sysv4 exit ;; m88k:*:3*:R3*) echo m88k-motorola-sysv3 exit ;; AViiON:dgux:*:*) # DG/UX returns AViiON for all architectures UNAME_PROCESSOR=`/usr/bin/uname -p` if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] then if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ [ ${TARGET_BINARY_INTERFACE}x = x ] then echo m88k-dg-dgux${UNAME_RELEASE} else echo m88k-dg-dguxbcs${UNAME_RELEASE} fi else echo i586-dg-dgux${UNAME_RELEASE} fi exit ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) echo m88k-dolphin-sysv3 exit ;; M88*:*:R3*:*) # Delta 88k system running SVR3 echo m88k-motorola-sysv3 exit ;; XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) echo m88k-tektronix-sysv3 exit ;; Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) echo m68k-tektronix-bsd exit ;; *:IRIX*:*:*) echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` exit ;; ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' i*86:AIX:*:*) echo i386-ibm-aix exit ;; ia64:AIX:*:*) if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} exit ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include main() { if (!__power_pc()) exit(1); puts("powerpc-ibm-aix3.2.5"); exit(0); } EOF if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` then echo "$SYSTEM_NAME" else echo rs6000-ibm-aix3.2.5 fi elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then echo rs6000-ibm-aix3.2.4 else echo rs6000-ibm-aix3.2 fi exit ;; *:AIX:*:[4567]) IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then IBM_ARCH=rs6000 else IBM_ARCH=powerpc fi if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${IBM_ARCH}-ibm-aix${IBM_REV} exit ;; *:AIX:*:*) echo rs6000-ibm-aix exit ;; ibmrt:4.4BSD:*|romp-ibm:BSD:*) echo romp-ibm-bsd4.4 exit ;; ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to exit ;; # report: romp-ibm BSD 4.3 *:BOSX:*:*) echo rs6000-bull-bosx exit ;; DPX/2?00:B.O.S.:*:*) echo m68k-bull-sysv3 exit ;; 9000/[34]??:4.3bsd:1.*:*) echo m68k-hp-bsd exit ;; hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) echo m68k-hp-bsd4.4 exit ;; 9000/[34678]??:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` case "${UNAME_MACHINE}" in 9000/31? ) HP_ARCH=m68000 ;; 9000/[34]?? ) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) if [ -x /usr/bin/getconf ]; then sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` case "${sc_cpu_version}" in 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 532) # CPU_PA_RISC2_0 case "${sc_kernel_bits}" in 32) HP_ARCH="hppa2.0n" ;; 64) HP_ARCH="hppa2.0w" ;; '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 esac ;; esac fi if [ "${HP_ARCH}" = "" ]; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #define _HPUX_SOURCE #include #include int main () { #if defined(_SC_KERNEL_BITS) long bits = sysconf(_SC_KERNEL_BITS); #endif long cpu = sysconf (_SC_CPU_VERSION); switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0"); break; case CPU_PA_RISC1_1: puts ("hppa1.1"); break; case CPU_PA_RISC2_0: #if defined(_SC_KERNEL_BITS) switch (bits) { case 64: puts ("hppa2.0w"); break; case 32: puts ("hppa2.0n"); break; default: puts ("hppa2.0"); break; } break; #else /* !defined(_SC_KERNEL_BITS) */ puts ("hppa2.0"); break; #endif default: puts ("hppa1.0"); break; } exit (0); } EOF (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` test -z "$HP_ARCH" && HP_ARCH=hppa fi ;; esac if [ ${HP_ARCH} = "hppa2.0w" ] then eval $set_cc_for_build # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler # generating 64-bit code. GNU and HP use different nomenclature: # # $ CC_FOR_BUILD=cc ./config.guess # => hppa2.0w-hp-hpux11.23 # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess # => hppa64-hp-hpux11.23 if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | grep -q __LP64__ then HP_ARCH="hppa2.0w" else HP_ARCH="hppa64" fi fi echo ${HP_ARCH}-hp-hpux${HPUX_REV} exit ;; ia64:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` echo ia64-hp-hpux${HPUX_REV} exit ;; 3050*:HI-UX:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include int main () { long cpu = sysconf (_SC_CPU_VERSION); /* The order matters, because CPU_IS_HP_MC68K erroneously returns true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct results, however. */ if (CPU_IS_PA_RISC (cpu)) { switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; default: puts ("hppa-hitachi-hiuxwe2"); break; } } else if (CPU_IS_HP_MC68K (cpu)) puts ("m68k-hitachi-hiuxwe2"); else puts ("unknown-hitachi-hiuxwe2"); exit (0); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && { echo "$SYSTEM_NAME"; exit; } echo unknown-hitachi-hiuxwe2 exit ;; 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) echo hppa1.1-hp-bsd exit ;; 9000/8??:4.3bsd:*:*) echo hppa1.0-hp-bsd exit ;; *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) echo hppa1.0-hp-mpeix exit ;; hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) echo hppa1.1-hp-osf exit ;; hp8??:OSF1:*:*) echo hppa1.0-hp-osf exit ;; i*86:OSF1:*:*) if [ -x /usr/sbin/sysversion ] ; then echo ${UNAME_MACHINE}-unknown-osf1mk else echo ${UNAME_MACHINE}-unknown-osf1 fi exit ;; parisc*:Lites*:*:*) echo hppa1.1-hp-lites exit ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) echo c1-convex-bsd exit ;; C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit ;; C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) echo c34-convex-bsd exit ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) echo c38-convex-bsd exit ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) echo c4-convex-bsd exit ;; CRAY*Y-MP:*:*:*) echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*[A-Z]90:*:*:*) echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ -e 's/\.[^.]*$/.X/' exit ;; CRAY*TS:*:*:*) echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*T3E:*:*:*) echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*SV1:*:*:*) echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; *:UNICOS/mp:*:*) echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; 5000:UNIX_System_V:4.*:*) FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} exit ;; sparc*:BSD/OS:*:*) echo sparc-unknown-bsdi${UNAME_RELEASE} exit ;; *:BSD/OS:*:*) echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} exit ;; *:FreeBSD:*:*) UNAME_PROCESSOR=`/usr/bin/uname -p` case ${UNAME_PROCESSOR} in amd64) echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; *) echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; esac exit ;; i*:CYGWIN*:*) echo ${UNAME_MACHINE}-pc-cygwin exit ;; *:MINGW64*:*) echo ${UNAME_MACHINE}-pc-mingw64 exit ;; *:MINGW*:*) echo ${UNAME_MACHINE}-pc-mingw32 exit ;; i*:MSYS*:*) echo ${UNAME_MACHINE}-pc-msys exit ;; i*:windows32*:*) # uname -m includes "-pc" on this system. echo ${UNAME_MACHINE}-mingw32 exit ;; i*:PW*:*) echo ${UNAME_MACHINE}-pc-pw32 exit ;; *:Interix*:*) case ${UNAME_MACHINE} in x86) echo i586-pc-interix${UNAME_RELEASE} exit ;; authenticamd | genuineintel | EM64T) echo x86_64-unknown-interix${UNAME_RELEASE} exit ;; IA64) echo ia64-unknown-interix${UNAME_RELEASE} exit ;; esac ;; [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) echo i${UNAME_MACHINE}-pc-mks exit ;; 8664:Windows_NT:*) echo x86_64-pc-mks exit ;; i*:Windows_NT*:* | Pentium*:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we # UNAME_MACHINE based on the output of uname instead of i386? echo i586-pc-interix exit ;; i*:UWIN*:*) echo ${UNAME_MACHINE}-pc-uwin exit ;; amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) echo x86_64-unknown-cygwin exit ;; p*:CYGWIN*:*) echo powerpcle-unknown-cygwin exit ;; prep*:SunOS:5.*:*) echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; *:GNU:*:*) # the GNU system echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` exit ;; *:GNU/*:*:*) # other systems with GNU libc and userland echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu exit ;; i*86:Minix:*:*) echo ${UNAME_MACHINE}-pc-minix exit ;; aarch64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; aarch64_be:Linux:*:*) UNAME_MACHINE=aarch64_be echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; alpha:Linux:*:*) case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in EV5) UNAME_MACHINE=alphaev5 ;; EV56) UNAME_MACHINE=alphaev56 ;; PCA56) UNAME_MACHINE=alphapca56 ;; PCA57) UNAME_MACHINE=alphapca56 ;; EV6) UNAME_MACHINE=alphaev6 ;; EV67) UNAME_MACHINE=alphaev67 ;; EV68*) UNAME_MACHINE=alphaev68 ;; esac objdump --private-headers /bin/sh | grep -q ld.so.1 if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} exit ;; arm*:Linux:*:*) eval $set_cc_for_build if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_EABI__ then echo ${UNAME_MACHINE}-unknown-linux-gnu else if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_PCS_VFP then echo ${UNAME_MACHINE}-unknown-linux-gnueabi else echo ${UNAME_MACHINE}-unknown-linux-gnueabihf fi fi exit ;; avr32*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; cris:Linux:*:*) echo ${UNAME_MACHINE}-axis-linux-gnu exit ;; crisv32:Linux:*:*) echo ${UNAME_MACHINE}-axis-linux-gnu exit ;; frv:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; hexagon:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; i*86:Linux:*:*) LIBC=gnu eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #ifdef __dietlibc__ LIBC=dietlibc #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'` echo "${UNAME_MACHINE}-pc-linux-${LIBC}" exit ;; ia64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; m32r*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; m68*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; mips:Linux:*:* | mips64:Linux:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #undef CPU #undef ${UNAME_MACHINE} #undef ${UNAME_MACHINE}el #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) CPU=${UNAME_MACHINE}el #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) CPU=${UNAME_MACHINE} #else CPU= #endif #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } ;; or32:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; padre:Linux:*:*) echo sparc-unknown-linux-gnu exit ;; parisc64:Linux:*:* | hppa64:Linux:*:*) echo hppa64-unknown-linux-gnu exit ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in PA7*) echo hppa1.1-unknown-linux-gnu ;; PA8*) echo hppa2.0-unknown-linux-gnu ;; *) echo hppa-unknown-linux-gnu ;; esac exit ;; ppc64:Linux:*:*) echo powerpc64-unknown-linux-gnu exit ;; ppc:Linux:*:*) echo powerpc-unknown-linux-gnu exit ;; s390:Linux:*:* | s390x:Linux:*:*) echo ${UNAME_MACHINE}-ibm-linux exit ;; sh64*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; sh*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; sparc:Linux:*:* | sparc64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; tile*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; vax:Linux:*:*) echo ${UNAME_MACHINE}-dec-linux-gnu exit ;; x86_64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; xtensa*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. # earlier versions are messed up and put the nodename in both # sysname and nodename. echo i386-sequent-sysv4 exit ;; i*86:UNIX_SV:4.2MP:2.*) # Unixware is an offshoot of SVR4, but it has its own version # number series starting with 2... # I am not positive that other SVR4 systems won't match this, # I just have to hope. -- rms. # Use sysv4.2uw... so that sysv4* matches it. echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} exit ;; i*86:OS/2:*:*) # If we were able to find `uname', then EMX Unix compatibility # is probably installed. echo ${UNAME_MACHINE}-pc-os2-emx exit ;; i*86:XTS-300:*:STOP) echo ${UNAME_MACHINE}-unknown-stop exit ;; i*86:atheos:*:*) echo ${UNAME_MACHINE}-unknown-atheos exit ;; i*86:syllable:*:*) echo ${UNAME_MACHINE}-pc-syllable exit ;; i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) echo i386-unknown-lynxos${UNAME_RELEASE} exit ;; i*86:*DOS:*:*) echo ${UNAME_MACHINE}-pc-msdosdjgpp exit ;; i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} else echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} fi exit ;; i*86:*:5:[678]*) # UnixWare 7.x, OpenUNIX and OpenServer 6. case `/bin/uname -X | grep "^Machine"` in *486*) UNAME_MACHINE=i486 ;; *Pentium) UNAME_MACHINE=i586 ;; *Pent*|*Celeron) UNAME_MACHINE=i686 ;; esac echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} exit ;; i*86:*:3.2:*) if test -f /usr/options/cb.name; then UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ && UNAME_MACHINE=i586 (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ && UNAME_MACHINE=i686 (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ && UNAME_MACHINE=i686 echo ${UNAME_MACHINE}-pc-sco$UNAME_REL else echo ${UNAME_MACHINE}-pc-sysv32 fi exit ;; pc:*:*:*) # Left here for compatibility: # uname -m prints for DJGPP always 'pc', but it prints nothing about # the processor, so we play safe by assuming i586. # Note: whatever this is, it MUST be the same as what config.sub # prints for the "djgpp" host, or else GDB configury will decide that # this is a cross-build. echo i586-pc-msdosdjgpp exit ;; Intel:Mach:3*:*) echo i386-pc-mach3 exit ;; paragon:*:*:*) echo i860-intel-osf1 exit ;; i860:*:4.*:*) # i860-SVR4 if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 else # Add other i860-SVR4 vendors below as they are discovered. echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 fi exit ;; mini*:CTIX:SYS*5:*) # "miniframe" echo m68010-convergent-sysv exit ;; mc68k:UNIX:SYSTEM5:3.51m) echo m68k-convergent-sysv exit ;; M680?0:D-NIX:5.3:*) echo m68k-diab-dnix exit ;; M68*:*:R3V[5678]*:*) test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) OS_REL='' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4; exit; } ;; NCR*:*:4.2:* | MPRAS*:*:4.2:*) OS_REL='.3' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) echo m68k-unknown-lynxos${UNAME_RELEASE} exit ;; mc68030:UNIX_System_V:4.*:*) echo m68k-atari-sysv4 exit ;; TSUNAMI:LynxOS:2.*:*) echo sparc-unknown-lynxos${UNAME_RELEASE} exit ;; rs6000:LynxOS:2.*:*) echo rs6000-unknown-lynxos${UNAME_RELEASE} exit ;; PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) echo powerpc-unknown-lynxos${UNAME_RELEASE} exit ;; SM[BE]S:UNIX_SV:*:*) echo mips-dde-sysv${UNAME_RELEASE} exit ;; RM*:ReliantUNIX-*:*:*) echo mips-sni-sysv4 exit ;; RM*:SINIX-*:*:*) echo mips-sni-sysv4 exit ;; *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then UNAME_MACHINE=`(uname -p) 2>/dev/null` echo ${UNAME_MACHINE}-sni-sysv4 else echo ns32k-sni-sysv fi exit ;; PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort # says echo i586-unisys-sysv4 exit ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes . # How about differentiating between stratus architectures? -djm echo hppa1.1-stratus-sysv4 exit ;; *:*:*:FTX*) # From seanf@swdc.stratus.com. echo i860-stratus-sysv4 exit ;; i*86:VOS:*:*) # From Paul.Green@stratus.com. echo ${UNAME_MACHINE}-stratus-vos exit ;; *:VOS:*:*) # From Paul.Green@stratus.com. echo hppa1.1-stratus-vos exit ;; mc68*:A/UX:*:*) echo m68k-apple-aux${UNAME_RELEASE} exit ;; news*:NEWS-OS:6*:*) echo mips-sony-newsos6 exit ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) if [ -d /usr/nec ]; then echo mips-nec-sysv${UNAME_RELEASE} else echo mips-unknown-sysv${UNAME_RELEASE} fi exit ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. echo powerpc-be-beos exit ;; BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. echo powerpc-apple-beos exit ;; BePC:BeOS:*:*) # BeOS running on Intel PC compatible. echo i586-pc-beos exit ;; BePC:Haiku:*:*) # Haiku running on Intel PC compatible. echo i586-pc-haiku exit ;; x86_64:Haiku:*:*) echo x86_64-unknown-haiku exit ;; SX-4:SUPER-UX:*:*) echo sx4-nec-superux${UNAME_RELEASE} exit ;; SX-5:SUPER-UX:*:*) echo sx5-nec-superux${UNAME_RELEASE} exit ;; SX-6:SUPER-UX:*:*) echo sx6-nec-superux${UNAME_RELEASE} exit ;; SX-7:SUPER-UX:*:*) echo sx7-nec-superux${UNAME_RELEASE} exit ;; SX-8:SUPER-UX:*:*) echo sx8-nec-superux${UNAME_RELEASE} exit ;; SX-8R:SUPER-UX:*:*) echo sx8r-nec-superux${UNAME_RELEASE} exit ;; Power*:Rhapsody:*:*) echo powerpc-apple-rhapsody${UNAME_RELEASE} exit ;; *:Rhapsody:*:*) echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} exit ;; *:Darwin:*:*) UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown case $UNAME_PROCESSOR in i386) eval $set_cc_for_build if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then UNAME_PROCESSOR="x86_64" fi fi ;; unknown) UNAME_PROCESSOR=powerpc ;; esac echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} exit ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` if test "$UNAME_PROCESSOR" = "x86"; then UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} exit ;; *:QNX:*:4*) echo i386-pc-qnx exit ;; NEO-?:NONSTOP_KERNEL:*:*) echo neo-tandem-nsk${UNAME_RELEASE} exit ;; NSE-*:NONSTOP_KERNEL:*:*) echo nse-tandem-nsk${UNAME_RELEASE} exit ;; NSR-?:NONSTOP_KERNEL:*:*) echo nsr-tandem-nsk${UNAME_RELEASE} exit ;; *:NonStop-UX:*:*) echo mips-compaq-nonstopux exit ;; BS2000:POSIX*:*:*) echo bs2000-siemens-sysv exit ;; DS/*:UNIX_System_V:*:*) echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} exit ;; *:Plan9:*:*) # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 # operating systems. if test "$cputype" = "386"; then UNAME_MACHINE=i386 else UNAME_MACHINE="$cputype" fi echo ${UNAME_MACHINE}-unknown-plan9 exit ;; *:TOPS-10:*:*) echo pdp10-unknown-tops10 exit ;; *:TENEX:*:*) echo pdp10-unknown-tenex exit ;; KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) echo pdp10-dec-tops20 exit ;; XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) echo pdp10-xkl-tops20 exit ;; *:TOPS-20:*:*) echo pdp10-unknown-tops20 exit ;; *:ITS:*:*) echo pdp10-unknown-its exit ;; SEI:*:*:SEIUX) echo mips-sei-seiux${UNAME_RELEASE} exit ;; *:DragonFly:*:*) echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` exit ;; *:*VMS:*:*) UNAME_MACHINE=`(uname -p) 2>/dev/null` case "${UNAME_MACHINE}" in A*) echo alpha-dec-vms ; exit ;; I*) echo ia64-dec-vms ; exit ;; V*) echo vax-dec-vms ; exit ;; esac ;; *:XENIX:*:SysV) echo i386-pc-xenix exit ;; i*86:skyos:*:*) echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' exit ;; i*86:rdos:*:*) echo ${UNAME_MACHINE}-pc-rdos exit ;; i*86:AROS:*:*) echo ${UNAME_MACHINE}-pc-aros exit ;; x86_64:VMkernel:*:*) echo ${UNAME_MACHINE}-unknown-esx exit ;; esac eval $set_cc_for_build cat >$dummy.c < # include #endif main () { #if defined (sony) #if defined (MIPSEB) /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, I don't know.... */ printf ("mips-sony-bsd\n"); exit (0); #else #include printf ("m68k-sony-newsos%s\n", #ifdef NEWSOS4 "4" #else "" #endif ); exit (0); #endif #endif #if defined (__arm) && defined (__acorn) && defined (__unix) printf ("arm-acorn-riscix\n"); exit (0); #endif #if defined (hp300) && !defined (hpux) printf ("m68k-hp-bsd\n"); exit (0); #endif #if defined (NeXT) #if !defined (__ARCHITECTURE__) #define __ARCHITECTURE__ "m68k" #endif int version; version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; if (version < 4) printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); else printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); exit (0); #endif #if defined (MULTIMAX) || defined (n16) #if defined (UMAXV) printf ("ns32k-encore-sysv\n"); exit (0); #else #if defined (CMU) printf ("ns32k-encore-mach\n"); exit (0); #else printf ("ns32k-encore-bsd\n"); exit (0); #endif #endif #endif #if defined (__386BSD__) printf ("i386-pc-bsd\n"); exit (0); #endif #if defined (sequent) #if defined (i386) printf ("i386-sequent-dynix\n"); exit (0); #endif #if defined (ns32000) printf ("ns32k-sequent-dynix\n"); exit (0); #endif #endif #if defined (_SEQUENT_) struct utsname un; uname(&un); if (strncmp(un.version, "V2", 2) == 0) { printf ("i386-sequent-ptx2\n"); exit (0); } if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ printf ("i386-sequent-ptx1\n"); exit (0); } printf ("i386-sequent-ptx\n"); exit (0); #endif #if defined (vax) # if !defined (ultrix) # include # if defined (BSD) # if BSD == 43 printf ("vax-dec-bsd4.3\n"); exit (0); # else # if BSD == 199006 printf ("vax-dec-bsd4.3reno\n"); exit (0); # else printf ("vax-dec-bsd\n"); exit (0); # endif # endif # else printf ("vax-dec-bsd\n"); exit (0); # endif # else printf ("vax-dec-ultrix\n"); exit (0); # endif #endif #if defined (alliant) && defined (i860) printf ("i860-alliant-bsd\n"); exit (0); #endif exit (1); } EOF $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` && { echo "$SYSTEM_NAME"; exit; } # Apollos put the system type in the environment. test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; } # Convex versions that predate uname can use getsysinfo(1) if [ -x /usr/convex/getsysinfo ] then case `getsysinfo -f cpu_type` in c1*) echo c1-convex-bsd exit ;; c2*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit ;; c34*) echo c34-convex-bsd exit ;; c38*) echo c38-convex-bsd exit ;; c4*) echo c4-convex-bsd exit ;; esac fi cat >&2 < in order to provide the needed information to handle your system. config.guess timestamp = $timestamp uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` /bin/uname -X = `(/bin/uname -X) 2>/dev/null` hostinfo = `(hostinfo) 2>/dev/null` /bin/universe = `(/bin/universe) 2>/dev/null` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` /bin/arch = `(/bin/arch) 2>/dev/null` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` UNAME_MACHINE = ${UNAME_MACHINE} UNAME_RELEASE = ${UNAME_RELEASE} UNAME_SYSTEM = ${UNAME_SYSTEM} UNAME_VERSION = ${UNAME_VERSION} EOF exit 1 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: calcurse-3.1.4/m4/0000755000175000001440000000000012105444502010632 500000000000000calcurse-3.1.4/m4/lib-ld.m40000644000175000001440000000675612105444400012172 00000000000000# lib-ld.m4 serial 3 (gettext-0.13) dnl Copyright (C) 1996-2003 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl Subroutines of libtool.m4, dnl with replacements s/AC_/AC_LIB/ and s/lt_cv/acl_cv/ to avoid collision dnl with libtool.m4. dnl From libtool-1.4. Sets the variable with_gnu_ld to yes or no. AC_DEFUN([AC_LIB_PROG_LD_GNU], [AC_CACHE_CHECK([if the linker ($LD) is GNU ld], acl_cv_prog_gnu_ld, [# I'd rather use --version here, but apparently some GNU ld's only accept -v. case `$LD -v 2>&1 conf$$.sh echo "exit 0" >>conf$$.sh chmod +x conf$$.sh if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conf$$.sh fi ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. AC_MSG_CHECKING([for ld used by GCC]) case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [[\\/]* | [A-Za-z]:[\\/]*)] [re_direlt='/[^/][^/]*/\.\./'] # Canonicalize the path of ld ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then AC_MSG_CHECKING([for GNU ld]) else AC_MSG_CHECKING([for non-GNU ld]) fi AC_CACHE_VAL(acl_cv_path_LD, [if test -z "$LD"; then IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" for ac_dir in $PATH; do test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then acl_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some GNU ld's only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$acl_cv_path_LD" -v 2>&1 < /dev/null` in *GNU* | *'with BFD'*) test "$with_gnu_ld" != no && break ;; *) test "$with_gnu_ld" != yes && break ;; esac fi done IFS="$ac_save_ifs" else acl_cv_path_LD="$LD" # Let the user override the test with a path. fi]) LD="$acl_cv_path_LD" if test -n "$LD"; then AC_MSG_RESULT($LD) else AC_MSG_RESULT(no) fi test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH]) AC_LIB_PROG_LD_GNU ]) calcurse-3.1.4/m4/progtest.m40000644000175000001440000000563412105444401012671 00000000000000# progtest.m4 serial 3 (gettext-0.12) dnl Copyright (C) 1996-2003 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl dnl This file can can be used in projects which are not available under dnl the GNU General Public License or the GNU Library General Public dnl License but which still want to provide support for the GNU gettext dnl functionality. dnl Please note that the actual code of the GNU gettext library is covered dnl by the GNU Library General Public License, and the rest of the GNU dnl gettext package package is covered by the GNU General Public License. dnl They are *not* in the public domain. dnl Authors: dnl Ulrich Drepper , 1996. # Search path for a program which passes the given test. dnl AM_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR, dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]]) AC_DEFUN([AM_PATH_PROG_WITH_TEST], [ # Prepare PATH_SEPARATOR. # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then echo "#! /bin/sh" >conf$$.sh echo "exit 0" >>conf$$.sh chmod +x conf$$.sh if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conf$$.sh fi # Find out how to test for executable files. Don't use a zero-byte file, # as systems may use methods other than mode bits to determine executability. cat >conf$$.file <<_ASEOF #! /bin/sh exit 0 _ASEOF chmod +x conf$$.file if test -x conf$$.file >/dev/null 2>&1; then ac_executable_p="test -x" else ac_executable_p="test -f" fi rm -f conf$$.file # Extract the first word of "$2", so it can be a program name with args. set dummy $2; ac_word=[$]2 AC_MSG_CHECKING([for $ac_word]) AC_CACHE_VAL(ac_cv_path_$1, [case "[$]$1" in [[\\/]]* | ?:[[\\/]]*) ac_cv_path_$1="[$]$1" # Let the user override the test with a path. ;; *) ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in ifelse([$5], , $PATH, [$5]); do IFS="$ac_save_IFS" test -z "$ac_dir" && ac_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then if [$3]; then ac_cv_path_$1="$ac_dir/$ac_word$ac_exec_ext" break 2 fi fi done done IFS="$ac_save_IFS" dnl If no 4th arg is given, leave the cache variable unset, dnl so AC_PATH_PROGS will keep looking. ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4" ])dnl ;; esac])dnl $1="$ac_cv_path_$1" if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then AC_MSG_RESULT([$]$1) else AC_MSG_RESULT(no) fi AC_SUBST($1)dnl ]) calcurse-3.1.4/m4/lib-link.m40000644000175000001440000005534312105444400012524 00000000000000# lib-link.m4 serial 4 (gettext-0.12) dnl Copyright (C) 2001-2003 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl From Bruno Haible. dnl AC_LIB_LINKFLAGS(name [, dependencies]) searches for libname and dnl the libraries corresponding to explicit and implicit dependencies. dnl Sets and AC_SUBSTs the LIB${NAME} and LTLIB${NAME} variables and dnl augments the CPPFLAGS variable. AC_DEFUN([AC_LIB_LINKFLAGS], [ AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) AC_REQUIRE([AC_LIB_RPATH]) define([Name],[translit([$1],[./-], [___])]) define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) AC_CACHE_CHECK([how to link with lib[]$1], [ac_cv_lib[]Name[]_libs], [ AC_LIB_LINKFLAGS_BODY([$1], [$2]) ac_cv_lib[]Name[]_libs="$LIB[]NAME" ac_cv_lib[]Name[]_ltlibs="$LTLIB[]NAME" ac_cv_lib[]Name[]_cppflags="$INC[]NAME" ]) LIB[]NAME="$ac_cv_lib[]Name[]_libs" LTLIB[]NAME="$ac_cv_lib[]Name[]_ltlibs" INC[]NAME="$ac_cv_lib[]Name[]_cppflags" AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME) AC_SUBST([LIB]NAME) AC_SUBST([LTLIB]NAME) dnl Also set HAVE_LIB[]NAME so that AC_LIB_HAVE_LINKFLAGS can reuse the dnl results of this search when this library appears as a dependency. HAVE_LIB[]NAME=yes undefine([Name]) undefine([NAME]) ]) dnl AC_LIB_HAVE_LINKFLAGS(name, dependencies, includes, testcode) dnl searches for libname and the libraries corresponding to explicit and dnl implicit dependencies, together with the specified include files and dnl the ability to compile and link the specified testcode. If found, it dnl sets and AC_SUBSTs HAVE_LIB${NAME}=yes and the LIB${NAME} and dnl LTLIB${NAME} variables and augments the CPPFLAGS variable, and dnl #defines HAVE_LIB${NAME} to 1. Otherwise, it sets and AC_SUBSTs dnl HAVE_LIB${NAME}=no and LIB${NAME} and LTLIB${NAME} to empty. AC_DEFUN([AC_LIB_HAVE_LINKFLAGS], [ AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) AC_REQUIRE([AC_LIB_RPATH]) define([Name],[translit([$1],[./-], [___])]) define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) dnl Search for lib[]Name and define LIB[]NAME, LTLIB[]NAME and INC[]NAME dnl accordingly. AC_LIB_LINKFLAGS_BODY([$1], [$2]) dnl Add $INC[]NAME to CPPFLAGS before performing the following checks, dnl because if the user has installed lib[]Name and not disabled its use dnl via --without-lib[]Name-prefix, he wants to use it. ac_save_CPPFLAGS="$CPPFLAGS" AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME) AC_CACHE_CHECK([for lib[]$1], [ac_cv_lib[]Name], [ ac_save_LIBS="$LIBS" LIBS="$LIBS $LIB[]NAME" AC_TRY_LINK([$3], [$4], [ac_cv_lib[]Name=yes], [ac_cv_lib[]Name=no]) LIBS="$ac_save_LIBS" ]) if test "$ac_cv_lib[]Name" = yes; then HAVE_LIB[]NAME=yes AC_DEFINE([HAVE_LIB]NAME, 1, [Define if you have the $1 library.]) AC_MSG_CHECKING([how to link with lib[]$1]) AC_MSG_RESULT([$LIB[]NAME]) else HAVE_LIB[]NAME=no dnl If $LIB[]NAME didn't lead to a usable library, we don't need dnl $INC[]NAME either. CPPFLAGS="$ac_save_CPPFLAGS" LIB[]NAME= LTLIB[]NAME= fi AC_SUBST([HAVE_LIB]NAME) AC_SUBST([LIB]NAME) AC_SUBST([LTLIB]NAME) undefine([Name]) undefine([NAME]) ]) dnl Determine the platform dependent parameters needed to use rpath: dnl libext, shlibext, hardcode_libdir_flag_spec, hardcode_libdir_separator, dnl hardcode_direct, hardcode_minus_L. AC_DEFUN([AC_LIB_RPATH], [ AC_REQUIRE([AC_PROG_CC]) dnl we use $CC, $GCC, $LDFLAGS AC_REQUIRE([AC_LIB_PROG_LD]) dnl we use $LD, $with_gnu_ld AC_REQUIRE([AC_CANONICAL_HOST]) dnl we use $host AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT]) dnl we use $ac_aux_dir AC_CACHE_CHECK([for shared library run path origin], acl_cv_rpath, [ CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh . ./conftest.sh rm -f ./conftest.sh acl_cv_rpath=done ]) wl="$acl_cv_wl" libext="$acl_cv_libext" shlibext="$acl_cv_shlibext" hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" hardcode_direct="$acl_cv_hardcode_direct" hardcode_minus_L="$acl_cv_hardcode_minus_L" dnl Determine whether the user wants rpath handling at all. AC_ARG_ENABLE(rpath, [ --disable-rpath do not hardcode runtime library paths], :, enable_rpath=yes) ]) dnl AC_LIB_LINKFLAGS_BODY(name [, dependencies]) searches for libname and dnl the libraries corresponding to explicit and implicit dependencies. dnl Sets the LIB${NAME}, LTLIB${NAME} and INC${NAME} variables. AC_DEFUN([AC_LIB_LINKFLAGS_BODY], [ define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) dnl By default, look in $includedir and $libdir. use_additional=yes AC_LIB_WITH_FINAL_PREFIX([ eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" ]) AC_LIB_ARG_WITH([lib$1-prefix], [ --with-lib$1-prefix[=DIR] search for lib$1 in DIR/include and DIR/lib --without-lib$1-prefix don't search for lib$1 in includedir and libdir], [ if test "X$withval" = "Xno"; then use_additional=no else if test "X$withval" = "X"; then AC_LIB_WITH_FINAL_PREFIX([ eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" ]) else additional_includedir="$withval/include" additional_libdir="$withval/lib" fi fi ]) dnl Search the library and its dependencies in $additional_libdir and dnl $LDFLAGS. Using breadth-first-seach. LIB[]NAME= LTLIB[]NAME= INC[]NAME= rpathdirs= ltrpathdirs= names_already_handled= names_next_round='$1 $2' while test -n "$names_next_round"; do names_this_round="$names_next_round" names_next_round= for name in $names_this_round; do already_handled= for n in $names_already_handled; do if test "$n" = "$name"; then already_handled=yes break fi done if test -z "$already_handled"; then names_already_handled="$names_already_handled $name" dnl See if it was already located by an earlier AC_LIB_LINKFLAGS dnl or AC_LIB_HAVE_LINKFLAGS call. uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'` eval value=\"\$HAVE_LIB$uppername\" if test -n "$value"; then if test "$value" = yes; then eval value=\"\$LIB$uppername\" test -z "$value" || LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$value" eval value=\"\$LTLIB$uppername\" test -z "$value" || LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$value" else dnl An earlier call to AC_LIB_HAVE_LINKFLAGS has determined dnl that this library doesn't exist. So just drop it. : fi else dnl Search the library lib$name in $additional_libdir and $LDFLAGS dnl and the already constructed $LIBNAME/$LTLIBNAME. found_dir= found_la= found_so= found_a= if test $use_additional = yes; then if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext"; then found_dir="$additional_libdir" found_so="$additional_libdir/lib$name.$shlibext" if test -f "$additional_libdir/lib$name.la"; then found_la="$additional_libdir/lib$name.la" fi else if test -f "$additional_libdir/lib$name.$libext"; then found_dir="$additional_libdir" found_a="$additional_libdir/lib$name.$libext" if test -f "$additional_libdir/lib$name.la"; then found_la="$additional_libdir/lib$name.la" fi fi fi fi if test "X$found_dir" = "X"; then for x in $LDFLAGS $LTLIB[]NAME; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) case "$x" in -L*) dir=`echo "X$x" | sed -e 's/^X-L//'` if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext"; then found_dir="$dir" found_so="$dir/lib$name.$shlibext" if test -f "$dir/lib$name.la"; then found_la="$dir/lib$name.la" fi else if test -f "$dir/lib$name.$libext"; then found_dir="$dir" found_a="$dir/lib$name.$libext" if test -f "$dir/lib$name.la"; then found_la="$dir/lib$name.la" fi fi fi ;; esac if test "X$found_dir" != "X"; then break fi done fi if test "X$found_dir" != "X"; then dnl Found the library. LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$found_dir -l$name" if test "X$found_so" != "X"; then dnl Linking with a shared library. We attempt to hardcode its dnl directory into the executable's runpath, unless it's the dnl standard /usr/lib. if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/lib"; then dnl No hardcoding is needed. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" else dnl Use an explicit option to hardcode DIR into the resulting dnl binary. dnl Potentially add DIR to ltrpathdirs. dnl The ltrpathdirs will be appended to $LTLIBNAME at the end. haveit= for x in $ltrpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $found_dir" fi dnl The hardcoding into $LIBNAME is system dependent. if test "$hardcode_direct" = yes; then dnl Using DIR/libNAME.so during linking hardcodes DIR into the dnl resulting binary. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" else if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then dnl Use an explicit option to hardcode DIR into the resulting dnl binary. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" dnl Potentially add DIR to rpathdirs. dnl The rpathdirs will be appended to $LIBNAME at the end. haveit= for x in $rpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $found_dir" fi else dnl Rely on "-L$found_dir". dnl But don't add it if it's already contained in the LDFLAGS dnl or the already constructed $LIBNAME haveit= for x in $LDFLAGS $LIB[]NAME; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-L$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir" fi if test "$hardcode_minus_L" != no; then dnl FIXME: Not sure whether we should use dnl "-L$found_dir -l$name" or "-L$found_dir $found_so" dnl here. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" else dnl We cannot use $hardcode_runpath_var and LD_RUN_PATH dnl here, because this doesn't fit in flags passed to the dnl compiler. So give up. No hardcoding. This affects only dnl very old systems. dnl FIXME: Not sure whether we should use dnl "-L$found_dir -l$name" or "-L$found_dir $found_so" dnl here. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" fi fi fi fi else if test "X$found_a" != "X"; then dnl Linking with a static library. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_a" else dnl We shouldn't come here, but anyway it's good to have a dnl fallback. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir -l$name" fi fi dnl Assume the include files are nearby. additional_includedir= case "$found_dir" in */lib | */lib/) basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e 's,/lib/*$,,'` additional_includedir="$basedir/include" ;; esac if test "X$additional_includedir" != "X"; then dnl Potentially add $additional_includedir to $INCNAME. dnl But don't add it dnl 1. if it's the standard /usr/include, dnl 2. if it's /usr/local/include and we are using GCC on Linux, dnl 3. if it's already present in $CPPFLAGS or the already dnl constructed $INCNAME, dnl 4. if it doesn't exist as a directory. if test "X$additional_includedir" != "X/usr/include"; then haveit= if test "X$additional_includedir" = "X/usr/local/include"; then if test -n "$GCC"; then case $host_os in linux*) haveit=yes;; esac fi fi if test -z "$haveit"; then for x in $CPPFLAGS $INC[]NAME; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-I$additional_includedir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_includedir"; then dnl Really add $additional_includedir to $INCNAME. INC[]NAME="${INC[]NAME}${INC[]NAME:+ }-I$additional_includedir" fi fi fi fi fi dnl Look for dependencies. if test -n "$found_la"; then dnl Read the .la file. It defines the variables dnl dlname, library_names, old_library, dependency_libs, current, dnl age, revision, installed, dlopen, dlpreopen, libdir. save_libdir="$libdir" case "$found_la" in */* | *\\*) . "$found_la" ;; *) . "./$found_la" ;; esac libdir="$save_libdir" dnl We use only dependency_libs. for dep in $dependency_libs; do case "$dep" in -L*) additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` dnl Potentially add $additional_libdir to $LIBNAME and $LTLIBNAME. dnl But don't add it dnl 1. if it's the standard /usr/lib, dnl 2. if it's /usr/local/lib and we are using GCC on Linux, dnl 3. if it's already present in $LDFLAGS or the already dnl constructed $LIBNAME, dnl 4. if it doesn't exist as a directory. if test "X$additional_libdir" != "X/usr/lib"; then haveit= if test "X$additional_libdir" = "X/usr/local/lib"; then if test -n "$GCC"; then case $host_os in linux*) haveit=yes;; esac fi fi if test -z "$haveit"; then haveit= for x in $LDFLAGS $LIB[]NAME; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_libdir"; then dnl Really add $additional_libdir to $LIBNAME. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$additional_libdir" fi fi haveit= for x in $LDFLAGS $LTLIB[]NAME; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_libdir"; then dnl Really add $additional_libdir to $LTLIBNAME. LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$additional_libdir" fi fi fi fi ;; -R*) dir=`echo "X$dep" | sed -e 's/^X-R//'` if test "$enable_rpath" != no; then dnl Potentially add DIR to rpathdirs. dnl The rpathdirs will be appended to $LIBNAME at the end. haveit= for x in $rpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $dir" fi dnl Potentially add DIR to ltrpathdirs. dnl The ltrpathdirs will be appended to $LTLIBNAME at the end. haveit= for x in $ltrpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $dir" fi fi ;; -l*) dnl Handle this in the next round. names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` ;; *.la) dnl Handle this in the next round. Throw away the .la's dnl directory; it is already contained in a preceding -L dnl option. names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` ;; *) dnl Most likely an immediate library name. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$dep" LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$dep" ;; esac done fi else dnl Didn't find the library; assume it is in the system directories dnl known to the linker and runtime loader. (All the system dnl directories known to the linker should also be known to the dnl runtime loader, otherwise the system is severely misconfigured.) LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-l$name" fi fi fi done done if test "X$rpathdirs" != "X"; then if test -n "$hardcode_libdir_separator"; then dnl Weird platform: only the last -rpath option counts, the user must dnl pass all path elements in one option. We can arrange that for a dnl single library, but not when more than one $LIBNAMEs are used. alldirs= for found_dir in $rpathdirs; do alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir" done dnl Note: hardcode_libdir_flag_spec uses $libdir and $wl. acl_save_libdir="$libdir" libdir="$alldirs" eval flag=\"$hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" else dnl The -rpath options are cumulative. for found_dir in $rpathdirs; do acl_save_libdir="$libdir" libdir="$found_dir" eval flag=\"$hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" done fi fi if test "X$ltrpathdirs" != "X"; then dnl When using libtool, the option that works for both libraries and dnl executables is -R. The -R options are cumulative. for found_dir in $ltrpathdirs; do LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-R$found_dir" done fi ]) dnl AC_LIB_APPENDTOVAR(VAR, CONTENTS) appends the elements of CONTENTS to VAR, dnl unless already present in VAR. dnl Works only for CPPFLAGS, not for LIB* variables because that sometimes dnl contains two or three consecutive elements that belong together. AC_DEFUN([AC_LIB_APPENDTOVAR], [ for element in [$2]; do haveit= for x in $[$1]; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X$element"; then haveit=yes break fi done if test -z "$haveit"; then [$1]="${[$1]}${[$1]:+ }$element" fi done ]) calcurse-3.1.4/m4/po.m40000644000175000001440000004265212105444400011440 00000000000000# po.m4 serial 3 (gettext-0.14) dnl Copyright (C) 1995-2003 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl dnl This file can can be used in projects which are not available under dnl the GNU General Public License or the GNU Library General Public dnl License but which still want to provide support for the GNU gettext dnl functionality. dnl Please note that the actual code of the GNU gettext library is covered dnl by the GNU Library General Public License, and the rest of the GNU dnl gettext package package is covered by the GNU General Public License. dnl They are *not* in the public domain. dnl Authors: dnl Ulrich Drepper , 1995-2000. dnl Bruno Haible , 2000-2003. dnl Checks for all prerequisites of the po subdirectory. AC_DEFUN([AM_PO_SUBDIRS], [ AC_REQUIRE([AC_PROG_MAKE_SET])dnl AC_REQUIRE([AC_PROG_INSTALL])dnl AC_REQUIRE([AM_MKINSTALLDIRS])dnl AC_REQUIRE([AM_NLS])dnl dnl Perform the following tests also if --disable-nls has been given, dnl because they are needed for "make dist" to work. dnl Search for GNU msgfmt in the PATH. dnl The first test excludes Solaris msgfmt and early GNU msgfmt versions. dnl The second test excludes FreeBSD msgfmt. AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt, [$ac_dir/$ac_word --statistics /dev/null >/dev/null 2>&1 && (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], :) AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT) dnl Search for GNU xgettext 0.12 or newer in the PATH. dnl The first test excludes Solaris xgettext and early GNU xgettext versions. dnl The second test excludes FreeBSD xgettext. AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext, [$ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >/dev/null 2>&1 && (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], :) dnl Remove leftover from FreeBSD xgettext call. rm -f messages.po dnl Search for GNU msgmerge 0.11 or newer in the PATH. AM_PATH_PROG_WITH_TEST(MSGMERGE, msgmerge, [$ac_dir/$ac_word --update -q /dev/null /dev/null >/dev/null 2>&1], :) dnl This could go away some day; the PATH_PROG_WITH_TEST already does it. dnl Test whether we really found GNU msgfmt. if test "$GMSGFMT" != ":"; then dnl If it is no GNU msgfmt we define it as : so that the dnl Makefiles still can work. if $GMSGFMT --statistics /dev/null >/dev/null 2>&1 && (if $GMSGFMT --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then : ; else GMSGFMT=`echo "$GMSGFMT" | sed -e 's,^.*/,,'` AC_MSG_RESULT( [found $GMSGFMT program is not GNU msgfmt; ignore it]) GMSGFMT=":" fi fi dnl This could go away some day; the PATH_PROG_WITH_TEST already does it. dnl Test whether we really found GNU xgettext. if test "$XGETTEXT" != ":"; then dnl If it is no GNU xgettext we define it as : so that the dnl Makefiles still can work. if $XGETTEXT --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >/dev/null 2>&1 && (if $XGETTEXT --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then : ; else AC_MSG_RESULT( [found xgettext program is not GNU xgettext; ignore it]) XGETTEXT=":" fi dnl Remove leftover from FreeBSD xgettext call. rm -f messages.po fi AC_OUTPUT_COMMANDS([ for ac_file in $CONFIG_FILES; do # Support "outfile[:infile[:infile...]]" case "$ac_file" in *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; esac # PO directories have a Makefile.in generated from Makefile.in.in. case "$ac_file" in */Makefile.in) # Adjust a relative srcdir. ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` # In autoconf-2.13 it is called $ac_given_srcdir. # In autoconf-2.50 it is called $srcdir. test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" case "$ac_given_srcdir" in .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; /*) top_srcdir="$ac_given_srcdir" ;; *) top_srcdir="$ac_dots$ac_given_srcdir" ;; esac if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then rm -f "$ac_dir/POTFILES" test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" POMAKEFILEDEPS="POTFILES.in" # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend # on $ac_dir but don't depend on user-specified configuration # parameters. if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then # The LINGUAS file contains the set of available languages. if test -n "$OBSOLETE_ALL_LINGUAS"; then test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" fi ALL_LINGUAS_=`sed -e "/^#/d" "$ac_given_srcdir/$ac_dir/LINGUAS"` # Hide the ALL_LINGUAS assigment from automake. eval 'ALL_LINGUAS''=$ALL_LINGUAS_' POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS" else # The set of available languages was given in configure.in. eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS' fi # Compute POFILES # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po) # Compute UPDATEPOFILES # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update) # Compute DUMMYPOFILES # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop) # Compute GMOFILES # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo) case "$ac_given_srcdir" in .) srcdirpre= ;; *) srcdirpre='$(srcdir)/' ;; esac POFILES= UPDATEPOFILES= DUMMYPOFILES= GMOFILES= for lang in $ALL_LINGUAS; do POFILES="$POFILES $srcdirpre$lang.po" UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" DUMMYPOFILES="$DUMMYPOFILES $lang.nop" GMOFILES="$GMOFILES $srcdirpre$lang.gmo" done # CATALOGS depends on both $ac_dir and the user's LINGUAS # environment variable. INST_LINGUAS= if test -n "$ALL_LINGUAS"; then for presentlang in $ALL_LINGUAS; do useit=no if test "%UNSET%" != "$LINGUAS"; then desiredlanguages="$LINGUAS" else desiredlanguages="$ALL_LINGUAS" fi for desiredlang in $desiredlanguages; do # Use the presentlang catalog if desiredlang is # a. equal to presentlang, or # b. a variant of presentlang (because in this case, # presentlang can be used as a fallback for messages # which are not translated in the desiredlang catalog). case "$desiredlang" in "$presentlang"*) useit=yes;; esac done if test $useit = yes; then INST_LINGUAS="$INST_LINGUAS $presentlang" fi done fi CATALOGS= if test -n "$INST_LINGUAS"; then for lang in $INST_LINGUAS; do CATALOGS="$CATALOGS $lang.gmo" done fi test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do if test -f "$f"; then case "$f" in *.orig | *.bak | *~) ;; *) cat "$f" >> "$ac_dir/Makefile" ;; esac fi done fi ;; esac done], [# Capture the value of obsolete ALL_LINGUAS because we need it to compute # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it # from automake. eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"' # Capture the value of LINGUAS because we need it to compute CATALOGS. LINGUAS="${LINGUAS-%UNSET%}" ]) ]) dnl Postprocesses a Makefile in a directory containing PO files. AC_DEFUN([AM_POSTPROCESS_PO_MAKEFILE], [ # When this code is run, in config.status, two variables have already been # set: # - OBSOLETE_ALL_LINGUAS is the value of LINGUAS set in configure.in, # - LINGUAS is the value of the environment variable LINGUAS at configure # time. changequote(,)dnl # Adjust a relative srcdir. ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` # In autoconf-2.13 it is called $ac_given_srcdir. # In autoconf-2.50 it is called $srcdir. test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" case "$ac_given_srcdir" in .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; /*) top_srcdir="$ac_given_srcdir" ;; *) top_srcdir="$ac_dots$ac_given_srcdir" ;; esac # Find a way to echo strings without interpreting backslash. if test "X`(echo '\t') 2>/dev/null`" = 'X\t'; then gt_echo='echo' else if test "X`(printf '%s\n' '\t') 2>/dev/null`" = 'X\t'; then gt_echo='printf %s\n' else echo_func () { cat < "$ac_file.tmp" if grep -l '@TCLCATALOGS@' "$ac_file" > /dev/null; then # Add dependencies that cannot be formulated as a simple suffix rule. for lang in $ALL_LINGUAS; do frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'` cat >> "$ac_file.tmp" < /dev/null; then # Add dependencies that cannot be formulated as a simple suffix rule. for lang in $ALL_LINGUAS; do frobbedlang=`echo $lang | sed -e 's/_/-/g'` cat >> "$ac_file.tmp" <> "$ac_file.tmp" <, 1995-2000. dnl Bruno Haible , 2000-2003. AC_DEFUN([AM_NLS], [ AC_MSG_CHECKING([whether NLS is requested]) dnl Default is enabled NLS AC_ARG_ENABLE(nls, [ --disable-nls do not use Native Language Support], USE_NLS=$enableval, USE_NLS=yes) AC_MSG_RESULT($USE_NLS) AC_SUBST(USE_NLS) ]) AC_DEFUN([AM_MKINSTALLDIRS], [ dnl If the AC_CONFIG_AUX_DIR macro for autoconf is used we possibly dnl find the mkinstalldirs script in another subdir but $(top_srcdir). dnl Try to locate it. MKINSTALLDIRS= if test -n "$ac_aux_dir"; then case "$ac_aux_dir" in /*) MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" ;; *) MKINSTALLDIRS="\$(top_builddir)/$ac_aux_dir/mkinstalldirs" ;; esac fi if test -z "$MKINSTALLDIRS"; then MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs" fi AC_SUBST(MKINSTALLDIRS) ]) calcurse-3.1.4/m4/gettext.m40000644000175000001440000004513012105444377012515 00000000000000# gettext.m4 serial 28 (gettext-0.13) dnl Copyright (C) 1995-2003 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl dnl This file can can be used in projects which are not available under dnl the GNU General Public License or the GNU Library General Public dnl License but which still want to provide support for the GNU gettext dnl functionality. dnl Please note that the actual code of the GNU gettext library is covered dnl by the GNU Library General Public License, and the rest of the GNU dnl gettext package package is covered by the GNU General Public License. dnl They are *not* in the public domain. dnl Authors: dnl Ulrich Drepper , 1995-2000. dnl Bruno Haible , 2000-2003. dnl Macro to add for using GNU gettext. dnl Usage: AM_GNU_GETTEXT([INTLSYMBOL], [NEEDSYMBOL], [INTLDIR]). dnl INTLSYMBOL can be one of 'external', 'no-libtool', 'use-libtool'. The dnl default (if it is not specified or empty) is 'no-libtool'. dnl INTLSYMBOL should be 'external' for packages with no intl directory, dnl and 'no-libtool' or 'use-libtool' for packages with an intl directory. dnl If INTLSYMBOL is 'use-libtool', then a libtool library dnl $(top_builddir)/intl/libintl.la will be created (shared and/or static, dnl depending on --{enable,disable}-{shared,static} and on the presence of dnl AM-DISABLE-SHARED). If INTLSYMBOL is 'no-libtool', a static library dnl $(top_builddir)/intl/libintl.a will be created. dnl If NEEDSYMBOL is specified and is 'need-ngettext', then GNU gettext dnl implementations (in libc or libintl) without the ngettext() function dnl will be ignored. If NEEDSYMBOL is specified and is dnl 'need-formatstring-macros', then GNU gettext implementations that don't dnl support the ISO C 99 formatstring macros will be ignored. dnl INTLDIR is used to find the intl libraries. If empty, dnl the value `$(top_builddir)/intl/' is used. dnl dnl The result of the configuration is one of three cases: dnl 1) GNU gettext, as included in the intl subdirectory, will be compiled dnl and used. dnl Catalog format: GNU --> install in $(datadir) dnl Catalog extension: .mo after installation, .gmo in source tree dnl 2) GNU gettext has been found in the system's C library. dnl Catalog format: GNU --> install in $(datadir) dnl Catalog extension: .mo after installation, .gmo in source tree dnl 3) No internationalization, always use English msgid. dnl Catalog format: none dnl Catalog extension: none dnl If INTLSYMBOL is 'external', only cases 2 and 3 can occur. dnl The use of .gmo is historical (it was needed to avoid overwriting the dnl GNU format catalogs when building on a platform with an X/Open gettext), dnl but we keep it in order not to force irrelevant filename changes on the dnl maintainers. dnl AC_DEFUN([AM_GNU_GETTEXT], [ dnl Argument checking. ifelse([$1], [], , [ifelse([$1], [external], , [ifelse([$1], [no-libtool], , [ifelse([$1], [use-libtool], , [errprint([ERROR: invalid first argument to AM_GNU_GETTEXT ])])])])]) ifelse([$2], [], , [ifelse([$2], [need-ngettext], , [ifelse([$2], [need-formatstring-macros], , [errprint([ERROR: invalid second argument to AM_GNU_GETTEXT ])])])]) define(gt_included_intl, ifelse([$1], [external], [no], [yes])) define(gt_libtool_suffix_prefix, ifelse([$1], [use-libtool], [l], [])) AC_REQUIRE([AM_PO_SUBDIRS])dnl ifelse(gt_included_intl, yes, [ AC_REQUIRE([AM_INTL_SUBDIR])dnl ]) dnl Prerequisites of AC_LIB_LINKFLAGS_BODY. AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) AC_REQUIRE([AC_LIB_RPATH]) dnl Sometimes libintl requires libiconv, so first search for libiconv. dnl Ideally we would do this search only after the dnl if test "$USE_NLS" = "yes"; then dnl if test "$gt_cv_func_gnugettext_libc" != "yes"; then dnl tests. But if configure.in invokes AM_ICONV after AM_GNU_GETTEXT dnl the configure script would need to contain the same shell code dnl again, outside any 'if'. There are two solutions: dnl - Invoke AM_ICONV_LINKFLAGS_BODY here, outside any 'if'. dnl - Control the expansions in more detail using AC_PROVIDE_IFELSE. dnl Since AC_PROVIDE_IFELSE is only in autoconf >= 2.52 and not dnl documented, we avoid it. ifelse(gt_included_intl, yes, , [ AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY]) ]) dnl Set USE_NLS. AM_NLS ifelse(gt_included_intl, yes, [ BUILD_INCLUDED_LIBINTL=no USE_INCLUDED_LIBINTL=no ]) LIBINTL= LTLIBINTL= POSUB= dnl If we use NLS figure out what method if test "$USE_NLS" = "yes"; then gt_use_preinstalled_gnugettext=no ifelse(gt_included_intl, yes, [ AC_MSG_CHECKING([whether included gettext is requested]) AC_ARG_WITH(included-gettext, [ --with-included-gettext use the GNU gettext library included here], nls_cv_force_use_gnu_gettext=$withval, nls_cv_force_use_gnu_gettext=no) AC_MSG_RESULT($nls_cv_force_use_gnu_gettext) nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext" if test "$nls_cv_force_use_gnu_gettext" != "yes"; then ]) dnl User does not insist on using GNU NLS library. Figure out what dnl to use. If GNU gettext is available we use this. Else we have dnl to fall back to GNU NLS library. dnl Add a version number to the cache macros. define([gt_api_version], ifelse([$2], [need-formatstring-macros], 3, ifelse([$2], [need-ngettext], 2, 1))) define([gt_cv_func_gnugettext_libc], [gt_cv_func_gnugettext]gt_api_version[_libc]) define([gt_cv_func_gnugettext_libintl], [gt_cv_func_gnugettext]gt_api_version[_libintl]) AC_CACHE_CHECK([for GNU gettext in libc], gt_cv_func_gnugettext_libc, [AC_TRY_LINK([#include ]ifelse([$2], [need-formatstring-macros], [#ifndef __GNU_GETTEXT_SUPPORTED_REVISION #define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) #endif changequote(,)dnl typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; changequote([,])dnl ], [])[extern int _nl_msg_cat_cntr; extern int *_nl_domain_bindings;], [bindtextdomain ("", ""); return (int) gettext ("")]ifelse([$2], [need-ngettext], [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_domain_bindings], gt_cv_func_gnugettext_libc=yes, gt_cv_func_gnugettext_libc=no)]) if test "$gt_cv_func_gnugettext_libc" != "yes"; then dnl Sometimes libintl requires libiconv, so first search for libiconv. ifelse(gt_included_intl, yes, , [ AM_ICONV_LINK ]) dnl Search for libintl and define LIBINTL, LTLIBINTL and INCINTL dnl accordingly. Don't use AC_LIB_LINKFLAGS_BODY([intl],[iconv]) dnl because that would add "-liconv" to LIBINTL and LTLIBINTL dnl even if libiconv doesn't exist. AC_LIB_LINKFLAGS_BODY([intl]) AC_CACHE_CHECK([for GNU gettext in libintl], gt_cv_func_gnugettext_libintl, [gt_save_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $INCINTL" gt_save_LIBS="$LIBS" LIBS="$LIBS $LIBINTL" dnl Now see whether libintl exists and does not depend on libiconv. AC_TRY_LINK([#include ]ifelse([$2], [need-formatstring-macros], [#ifndef __GNU_GETTEXT_SUPPORTED_REVISION #define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) #endif changequote(,)dnl typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; changequote([,])dnl ], [])[extern int _nl_msg_cat_cntr; extern #ifdef __cplusplus "C" #endif const char *_nl_expand_alias ();], [bindtextdomain ("", ""); return (int) gettext ("")]ifelse([$2], [need-ngettext], [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_expand_alias (0)], gt_cv_func_gnugettext_libintl=yes, gt_cv_func_gnugettext_libintl=no) dnl Now see whether libintl exists and depends on libiconv. if test "$gt_cv_func_gnugettext_libintl" != yes && test -n "$LIBICONV"; then LIBS="$LIBS $LIBICONV" AC_TRY_LINK([#include ]ifelse([$2], [need-formatstring-macros], [#ifndef __GNU_GETTEXT_SUPPORTED_REVISION #define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) #endif changequote(,)dnl typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; changequote([,])dnl ], [])[extern int _nl_msg_cat_cntr; extern #ifdef __cplusplus "C" #endif const char *_nl_expand_alias ();], [bindtextdomain ("", ""); return (int) gettext ("")]ifelse([$2], [need-ngettext], [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_expand_alias (0)], [LIBINTL="$LIBINTL $LIBICONV" LTLIBINTL="$LTLIBINTL $LTLIBICONV" gt_cv_func_gnugettext_libintl=yes ]) fi CPPFLAGS="$gt_save_CPPFLAGS" LIBS="$gt_save_LIBS"]) fi dnl If an already present or preinstalled GNU gettext() is found, dnl use it. But if this macro is used in GNU gettext, and GNU dnl gettext is already preinstalled in libintl, we update this dnl libintl. (Cf. the install rule in intl/Makefile.in.) if test "$gt_cv_func_gnugettext_libc" = "yes" \ || { test "$gt_cv_func_gnugettext_libintl" = "yes" \ && test "$PACKAGE" != gettext-runtime \ && test "$PACKAGE" != gettext-tools; }; then gt_use_preinstalled_gnugettext=yes else dnl Reset the values set by searching for libintl. LIBINTL= LTLIBINTL= INCINTL= fi ifelse(gt_included_intl, yes, [ if test "$gt_use_preinstalled_gnugettext" != "yes"; then dnl GNU gettext is not found in the C library. dnl Fall back on included GNU gettext library. nls_cv_use_gnu_gettext=yes fi fi if test "$nls_cv_use_gnu_gettext" = "yes"; then dnl Mark actions used to generate GNU NLS library. BUILD_INCLUDED_LIBINTL=yes USE_INCLUDED_LIBINTL=yes LIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LIBICONV" LTLIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LTLIBICONV" LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'` fi if test "$gt_use_preinstalled_gnugettext" = "yes" \ || test "$nls_cv_use_gnu_gettext" = "yes"; then dnl Mark actions to use GNU gettext tools. CATOBJEXT=.gmo fi ]) if test "$gt_use_preinstalled_gnugettext" = "yes" \ || test "$nls_cv_use_gnu_gettext" = "yes"; then AC_DEFINE(ENABLE_NLS, 1, [Define to 1 if translation of program messages to the user's native language is requested.]) else USE_NLS=no fi fi AC_MSG_CHECKING([whether to use NLS]) AC_MSG_RESULT([$USE_NLS]) if test "$USE_NLS" = "yes"; then AC_MSG_CHECKING([where the gettext function comes from]) if test "$gt_use_preinstalled_gnugettext" = "yes"; then if test "$gt_cv_func_gnugettext_libintl" = "yes"; then gt_source="external libintl" else gt_source="libc" fi else gt_source="included intl directory" fi AC_MSG_RESULT([$gt_source]) fi if test "$USE_NLS" = "yes"; then if test "$gt_use_preinstalled_gnugettext" = "yes"; then if test "$gt_cv_func_gnugettext_libintl" = "yes"; then AC_MSG_CHECKING([how to link with libintl]) AC_MSG_RESULT([$LIBINTL]) AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCINTL]) fi dnl For backward compatibility. Some packages may be using this. AC_DEFINE(HAVE_GETTEXT, 1, [Define if the GNU gettext() function is already present or preinstalled.]) AC_DEFINE(HAVE_DCGETTEXT, 1, [Define if the GNU dcgettext() function is already present or preinstalled.]) fi dnl We need to process the po/ directory. POSUB=po fi ifelse(gt_included_intl, yes, [ dnl If this is used in GNU gettext we have to set BUILD_INCLUDED_LIBINTL dnl to 'yes' because some of the testsuite requires it. if test "$PACKAGE" = gettext-runtime || test "$PACKAGE" = gettext-tools; then BUILD_INCLUDED_LIBINTL=yes fi dnl Make all variables we use known to autoconf. AC_SUBST(BUILD_INCLUDED_LIBINTL) AC_SUBST(USE_INCLUDED_LIBINTL) AC_SUBST(CATOBJEXT) dnl For backward compatibility. Some configure.ins may be using this. nls_cv_header_intl= nls_cv_header_libgt= dnl For backward compatibility. Some Makefiles may be using this. DATADIRNAME=share AC_SUBST(DATADIRNAME) dnl For backward compatibility. Some Makefiles may be using this. INSTOBJEXT=.mo AC_SUBST(INSTOBJEXT) dnl For backward compatibility. Some Makefiles may be using this. GENCAT=gencat AC_SUBST(GENCAT) dnl For backward compatibility. Some Makefiles may be using this. if test "$USE_INCLUDED_LIBINTL" = yes; then INTLOBJS="\$(GETTOBJS)" fi AC_SUBST(INTLOBJS) dnl Enable libtool support if the surrounding package wishes it. INTL_LIBTOOL_SUFFIX_PREFIX=gt_libtool_suffix_prefix AC_SUBST(INTL_LIBTOOL_SUFFIX_PREFIX) ]) dnl For backward compatibility. Some Makefiles may be using this. INTLLIBS="$LIBINTL" AC_SUBST(INTLLIBS) dnl Make all documented variables known to autoconf. AC_SUBST(LIBINTL) AC_SUBST(LTLIBINTL) AC_SUBST(POSUB) ]) dnl Checks for all prerequisites of the intl subdirectory, dnl except for INTL_LIBTOOL_SUFFIX_PREFIX (and possibly LIBTOOL), INTLOBJS, dnl USE_INCLUDED_LIBINTL, BUILD_INCLUDED_LIBINTL. AC_DEFUN([AM_INTL_SUBDIR], [ AC_REQUIRE([AC_PROG_INSTALL])dnl AC_REQUIRE([AM_MKINSTALLDIRS])dnl AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_PROG_RANLIB])dnl AC_REQUIRE([AC_ISC_POSIX])dnl AC_REQUIRE([AC_HEADER_STDC])dnl AC_REQUIRE([AC_C_CONST])dnl AC_REQUIRE([bh_C_SIGNED])dnl AC_REQUIRE([AC_C_INLINE])dnl AC_REQUIRE([AC_TYPE_OFF_T])dnl AC_REQUIRE([AC_TYPE_SIZE_T])dnl AC_REQUIRE([jm_AC_TYPE_LONG_LONG])dnl AC_REQUIRE([gt_TYPE_LONGDOUBLE])dnl AC_REQUIRE([gt_TYPE_WCHAR_T])dnl AC_REQUIRE([gt_TYPE_WINT_T])dnl AC_REQUIRE([jm_AC_HEADER_INTTYPES_H]) AC_REQUIRE([jm_AC_HEADER_STDINT_H]) AC_REQUIRE([gt_TYPE_INTMAX_T]) AC_REQUIRE([gt_PRINTF_POSIX]) AC_REQUIRE([AC_FUNC_ALLOCA])dnl AC_REQUIRE([AC_FUNC_MMAP])dnl AC_REQUIRE([jm_GLIBC21])dnl AC_REQUIRE([gt_INTDIV0])dnl AC_REQUIRE([jm_AC_TYPE_UINTMAX_T])dnl AC_REQUIRE([gt_HEADER_INTTYPES_H])dnl AC_REQUIRE([gt_INTTYPES_PRI])dnl AC_REQUIRE([gl_XSIZE])dnl AC_CHECK_TYPE([ptrdiff_t], , [AC_DEFINE([ptrdiff_t], [long], [Define as the type of the result of subtracting two pointers, if the system doesn't define it.]) ]) AC_CHECK_HEADERS([argz.h limits.h locale.h nl_types.h malloc.h stddef.h \ stdlib.h string.h unistd.h sys/param.h]) AC_CHECK_FUNCS([asprintf fwprintf getcwd getegid geteuid getgid getuid \ mempcpy munmap putenv setenv setlocale snprintf stpcpy strcasecmp strdup \ strtoul tsearch wcslen __argz_count __argz_stringify __argz_next \ __fsetlocking]) dnl Use the _snprintf function only if it is declared (because on NetBSD it dnl is defined as a weak alias of snprintf; we prefer to use the latter). gt_CHECK_DECL(_snprintf, [#include ]) gt_CHECK_DECL(_snwprintf, [#include ]) dnl Use the *_unlocked functions only if they are declared. dnl (because some of them were defined without being declared in Solaris dnl 2.5.1 but were removed in Solaris 2.6, whereas we want binaries built dnl on Solaris 2.5.1 to run on Solaris 2.6). dnl Don't use AC_CHECK_DECLS because it isn't supported in autoconf-2.13. gt_CHECK_DECL(feof_unlocked, [#include ]) gt_CHECK_DECL(fgets_unlocked, [#include ]) gt_CHECK_DECL(getc_unlocked, [#include ]) case $gt_cv_func_printf_posix in *yes) HAVE_POSIX_PRINTF=1 ;; *) HAVE_POSIX_PRINTF=0 ;; esac AC_SUBST([HAVE_POSIX_PRINTF]) if test "$ac_cv_func_asprintf" = yes; then HAVE_ASPRINTF=1 else HAVE_ASPRINTF=0 fi AC_SUBST([HAVE_ASPRINTF]) if test "$ac_cv_func_snprintf" = yes; then HAVE_SNPRINTF=1 else HAVE_SNPRINTF=0 fi AC_SUBST([HAVE_SNPRINTF]) if test "$ac_cv_func_wprintf" = yes; then HAVE_WPRINTF=1 else HAVE_WPRINTF=0 fi AC_SUBST([HAVE_WPRINTF]) AM_ICONV AM_LANGINFO_CODESET if test $ac_cv_header_locale_h = yes; then AM_LC_MESSAGES fi dnl intl/plural.c is generated from intl/plural.y. It requires bison, dnl because plural.y uses bison specific features. It requires at least dnl bison-1.26 because earlier versions generate a plural.c that doesn't dnl compile. dnl bison is only needed for the maintainer (who touches plural.y). But in dnl order to avoid separate Makefiles or --enable-maintainer-mode, we put dnl the rule in general Makefile. Now, some people carelessly touch the dnl files or have a broken "make" program, hence the plural.c rule will dnl sometimes fire. To avoid an error, defines BISON to ":" if it is not dnl present or too old. AC_CHECK_PROGS([INTLBISON], [bison]) if test -z "$INTLBISON"; then ac_verc_fail=yes else dnl Found it, now check the version. AC_MSG_CHECKING([version of bison]) changequote(<<,>>)dnl ac_prog_version=`$INTLBISON --version 2>&1 | sed -n 's/^.*GNU Bison.* \([0-9]*\.[0-9.]*\).*$/\1/p'` case $ac_prog_version in '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; 1.2[6-9]* | 1.[3-9][0-9]* | [2-9].*) changequote([,])dnl ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; esac AC_MSG_RESULT([$ac_prog_version]) fi if test $ac_verc_fail = yes; then INTLBISON=: fi ]) dnl gt_CHECK_DECL(FUNC, INCLUDES) dnl Check whether a function is declared. AC_DEFUN([gt_CHECK_DECL], [ AC_CACHE_CHECK([whether $1 is declared], ac_cv_have_decl_$1, [AC_TRY_COMPILE([$2], [ #ifndef $1 char *p = (char *) $1; #endif ], ac_cv_have_decl_$1=yes, ac_cv_have_decl_$1=no)]) if test $ac_cv_have_decl_$1 = yes; then gt_value=1 else gt_value=0 fi AC_DEFINE_UNQUOTED([HAVE_DECL_]translit($1, [a-z], [A-Z]), [$gt_value], [Define to 1 if you have the declaration of `$1', and to 0 if you don't.]) ]) dnl Usage: AM_GNU_GETTEXT_VERSION([gettext-version]) AC_DEFUN([AM_GNU_GETTEXT_VERSION], []) calcurse-3.1.4/m4/iconv.m40000644000175000001440000000665312105444377012156 00000000000000# iconv.m4 serial AM4 (gettext-0.11.3) dnl Copyright (C) 2000-2002 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl From Bruno Haible. AC_DEFUN([AM_ICONV_LINKFLAGS_BODY], [ dnl Prerequisites of AC_LIB_LINKFLAGS_BODY. AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) AC_REQUIRE([AC_LIB_RPATH]) dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV dnl accordingly. AC_LIB_LINKFLAGS_BODY([iconv]) ]) AC_DEFUN([AM_ICONV_LINK], [ dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and dnl those with the standalone portable GNU libiconv installed). dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV dnl accordingly. AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY]) dnl Add $INCICONV to CPPFLAGS before performing the following checks, dnl because if the user has installed libiconv and not disabled its use dnl via --without-libiconv-prefix, he wants to use it. The first dnl AC_TRY_LINK will then fail, the second AC_TRY_LINK will succeed. am_save_CPPFLAGS="$CPPFLAGS" AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCICONV]) AC_CACHE_CHECK(for iconv, am_cv_func_iconv, [ am_cv_func_iconv="no, consider installing GNU libiconv" am_cv_lib_iconv=no AC_TRY_LINK([#include #include ], [iconv_t cd = iconv_open("",""); iconv(cd,NULL,NULL,NULL,NULL); iconv_close(cd);], am_cv_func_iconv=yes) if test "$am_cv_func_iconv" != yes; then am_save_LIBS="$LIBS" LIBS="$LIBS $LIBICONV" AC_TRY_LINK([#include #include ], [iconv_t cd = iconv_open("",""); iconv(cd,NULL,NULL,NULL,NULL); iconv_close(cd);], am_cv_lib_iconv=yes am_cv_func_iconv=yes) LIBS="$am_save_LIBS" fi ]) if test "$am_cv_func_iconv" = yes; then AC_DEFINE(HAVE_ICONV, 1, [Define if you have the iconv() function.]) fi if test "$am_cv_lib_iconv" = yes; then AC_MSG_CHECKING([how to link with libiconv]) AC_MSG_RESULT([$LIBICONV]) else dnl If $LIBICONV didn't lead to a usable library, we don't need $INCICONV dnl either. CPPFLAGS="$am_save_CPPFLAGS" LIBICONV= LTLIBICONV= fi AC_SUBST(LIBICONV) AC_SUBST(LTLIBICONV) ]) AC_DEFUN([AM_ICONV], [ AM_ICONV_LINK if test "$am_cv_func_iconv" = yes; then AC_MSG_CHECKING([for iconv declaration]) AC_CACHE_VAL(am_cv_proto_iconv, [ AC_TRY_COMPILE([ #include #include extern #ifdef __cplusplus "C" #endif #if defined(__STDC__) || defined(__cplusplus) size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft); #else size_t iconv(); #endif ], [], am_cv_proto_iconv_arg1="", am_cv_proto_iconv_arg1="const") am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"]) am_cv_proto_iconv=`echo "[$]am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'` AC_MSG_RESULT([$]{ac_t:- }[$]am_cv_proto_iconv) AC_DEFINE_UNQUOTED(ICONV_CONST, $am_cv_proto_iconv_arg1, [Define as const if the declaration of iconv() needs const.]) fi ]) calcurse-3.1.4/m4/lib-prefix.m40000644000175000001440000001250712105444400013057 00000000000000# lib-prefix.m4 serial 3 (gettext-0.13) dnl Copyright (C) 2001-2003 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl From Bruno Haible. dnl AC_LIB_ARG_WITH is synonymous to AC_ARG_WITH in autoconf-2.13, and dnl similar to AC_ARG_WITH in autoconf 2.52...2.57 except that is doesn't dnl require excessive bracketing. ifdef([AC_HELP_STRING], [AC_DEFUN([AC_LIB_ARG_WITH], [AC_ARG_WITH([$1],[[$2]],[$3],[$4])])], [AC_DEFUN([AC_][LIB_ARG_WITH], [AC_ARG_WITH([$1],[$2],[$3],[$4])])]) dnl AC_LIB_PREFIX adds to the CPPFLAGS and LDFLAGS the flags that are needed dnl to access previously installed libraries. The basic assumption is that dnl a user will want packages to use other packages he previously installed dnl with the same --prefix option. dnl This macro is not needed if only AC_LIB_LINKFLAGS is used to locate dnl libraries, but is otherwise very convenient. AC_DEFUN([AC_LIB_PREFIX], [ AC_BEFORE([$0], [AC_LIB_LINKFLAGS]) AC_REQUIRE([AC_PROG_CC]) AC_REQUIRE([AC_CANONICAL_HOST]) AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) dnl By default, look in $includedir and $libdir. use_additional=yes AC_LIB_WITH_FINAL_PREFIX([ eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" ]) AC_LIB_ARG_WITH([lib-prefix], [ --with-lib-prefix[=DIR] search for libraries in DIR/include and DIR/lib --without-lib-prefix don't search for libraries in includedir and libdir], [ if test "X$withval" = "Xno"; then use_additional=no else if test "X$withval" = "X"; then AC_LIB_WITH_FINAL_PREFIX([ eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" ]) else additional_includedir="$withval/include" additional_libdir="$withval/lib" fi fi ]) if test $use_additional = yes; then dnl Potentially add $additional_includedir to $CPPFLAGS. dnl But don't add it dnl 1. if it's the standard /usr/include, dnl 2. if it's already present in $CPPFLAGS, dnl 3. if it's /usr/local/include and we are using GCC on Linux, dnl 4. if it doesn't exist as a directory. if test "X$additional_includedir" != "X/usr/include"; then haveit= for x in $CPPFLAGS; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-I$additional_includedir"; then haveit=yes break fi done if test -z "$haveit"; then if test "X$additional_includedir" = "X/usr/local/include"; then if test -n "$GCC"; then case $host_os in linux*) haveit=yes;; esac fi fi if test -z "$haveit"; then if test -d "$additional_includedir"; then dnl Really add $additional_includedir to $CPPFLAGS. CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }-I$additional_includedir" fi fi fi fi dnl Potentially add $additional_libdir to $LDFLAGS. dnl But don't add it dnl 1. if it's the standard /usr/lib, dnl 2. if it's already present in $LDFLAGS, dnl 3. if it's /usr/local/lib and we are using GCC on Linux, dnl 4. if it doesn't exist as a directory. if test "X$additional_libdir" != "X/usr/lib"; then haveit= for x in $LDFLAGS; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test "X$additional_libdir" = "X/usr/local/lib"; then if test -n "$GCC"; then case $host_os in linux*) haveit=yes;; esac fi fi if test -z "$haveit"; then if test -d "$additional_libdir"; then dnl Really add $additional_libdir to $LDFLAGS. LDFLAGS="${LDFLAGS}${LDFLAGS:+ }-L$additional_libdir" fi fi fi fi fi ]) dnl AC_LIB_PREPARE_PREFIX creates variables acl_final_prefix, dnl acl_final_exec_prefix, containing the values to which $prefix and dnl $exec_prefix will expand at the end of the configure script. AC_DEFUN([AC_LIB_PREPARE_PREFIX], [ dnl Unfortunately, prefix and exec_prefix get only finally determined dnl at the end of configure. if test "X$prefix" = "XNONE"; then acl_final_prefix="$ac_default_prefix" else acl_final_prefix="$prefix" fi if test "X$exec_prefix" = "XNONE"; then acl_final_exec_prefix='${prefix}' else acl_final_exec_prefix="$exec_prefix" fi acl_save_prefix="$prefix" prefix="$acl_final_prefix" eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" prefix="$acl_save_prefix" ]) dnl AC_LIB_WITH_FINAL_PREFIX([statement]) evaluates statement, with the dnl variables prefix and exec_prefix bound to the values they will have dnl at the end of the configure script. AC_DEFUN([AC_LIB_WITH_FINAL_PREFIX], [ acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" $1 exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" ]) calcurse-3.1.4/TODO0000644000175000001440000000211412105444350010721 00000000000000calcurse TODO list ================== Here is a list of modifications we will perform on calcurse in future releases. They are grouped into three different priority categories. Feel free to send us an email (misc@calcurse.org) if you would like to see a feature added in calcurse which does not appear in this list. High ---- * Add a key binding to toggle between visible/hidden tasks inside todo panel * Add an optional argument to the --next flag to check for next appointment starting from the specified time * Implement word-wrap in the sidebar * Support additional iCalendar keywords in appointment/event/todo notes (see http://lists.calcurse.org/misc/msg00017.html) Average ------- * Add support for CalDAV protocol (rfc4791) * Add support for ical's BYDAY recursion modifier (to express recurrences like 'every monday' for example) * Implement user-definable categories to classify appointments and tasks * Implement copy/paste functionality * Implement support for a journal Low --- * All status bars should be terminal-size dependant (config_bar is not) * Compute Easter sunday calcurse-3.1.4/configure.ac0000644000175000001440000001617412105444321012530 00000000000000#------------------------------------------------------------------------------- # Init #------------------------------------------------------------------------------- AC_PREREQ(2.59) AC_INIT([calcurse], m4_esyscmd([build-aux/git-version-gen .version]), [bugs@calcurse.org]) AM_INIT_AUTOMAKE #m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])]) AM_GNU_GETTEXT([external]) AM_GNU_GETTEXT_VERSION([0.14.1]) AC_CONFIG_SRCDIR([src/calcurse.c]) AC_CONFIG_HEADER([config.h]) #------------------------------------------------------------------------------- # Checks for system type #------------------------------------------------------------------------------- AC_CANONICAL_HOST #------------------------------------------------------------------------------- # Checks for programs #------------------------------------------------------------------------------- AC_PROG_CC #------------------------------------------------------------------------------- # Checks for header files #------------------------------------------------------------------------------- AC_HEADER_STDC AC_CHECK_HEADERS([ctype.h getopt.h locale.h math.h signal.h stdio.h stdlib.h \ string.h sys/stat.h sys/types.h sys/wait.h time.h unistd.h \ fcntl.h paths.h errno.h limits.h regex.h]) #------------------------------------------------------------------------------- # Checks for system libs #------------------------------------------------------------------------------- AC_CHECK_FUNC(initscr,, [ available_ncurses="none" for lib in ncursesw ncurses do AC_CHECK_LIB($lib, initscr, [available_ncurses="$lib"; break]) done if test "$available_ncurses" = none; then AC_MSG_ERROR(Either ncurses or ncursesw library is required to build calcurse!) elif test "$available_ncurses" = ncursesw; then AC_CHECK_HEADERS([ncursesw/ncurses.h],, [AC_CHECK_HEADERS([ncurses.h],, AC_MSG_ERROR([Missing ncursesw header file]))]) else AC_CHECK_HEADERS([ncurses/ncurses.h],, [AC_CHECK_HEADERS([ncurses.h],, AC_MSG_ERROR([Missing ncurses header file]))]) fi LIBS="$LIBS -l$available_ncurses" ]) AC_CHECK_HEADERS([pthread.h], [ AC_CHECK_LIB(pthread, pthread_create, [ LIBS="$LIBS -pthread" AC_DEFINE(HAVE_LIBPTHREAD, 1, [Define to 1 if you have the 'pthread' library (-pthread).]) ], AC_MSG_ERROR(The pthread library is required in order to build calcurse!)) ], AC_MSG_ERROR(The pthread header is required in order to build calcurse!)) AC_CHECK_HEADERS([math.h], [ AC_CHECK_LIB(m, exp, [ LIBS="$LIBS -lm" AC_DEFINE(HAVE_LIBMATH, 1, [Define to 1 if you have the 'math' library (-lm).]) ], AC_MSG_ERROR(The math library is required in order to build calcurse!)) ], AC_MSG_ERROR(The math header is required in order to build calcurse!)) #------------------------------------------------------------------------------- # 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=$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 - 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 - cannot rebuild man pages!]) else have_a2x=yes fi elif test x"$use_asciidoc" = x"yes"; then AC_PATH_PROG([ASCIIDOC], [asciidoc]) if test -z "$ASCIIDOC"; then AC_MSG_ERROR([AsciiDoc not found and "--with-asciidoc" specified!]) fi AC_PATH_PROG([A2X], [a2x]) if test -z "$A2X"; then AC_MSG_ERROR([a2x not found and "--with-asciidoc" specified!]) fi have_asciidoc=yes elif test x"$use_asciidoc" = x"no"; then AC_MSG_WARN([Will not rebuild documentation!]) have_asciidoc=no have_a2x=no fi AM_CONDITIONAL(HAVE_ASCIIDOC, test $have_asciidoc = yes) AM_CONDITIONAL(HAVE_A2X, test $have_a2x = yes) #------------------------------------------------------------------------------- # Compilation options #------------------------------------------------------------------------------- CFLAGS="$CFLAGS -Wall" AC_ARG_ENABLE(memory_debug, AS_HELP_STRING([--enable-memory-debug], [use memory debug functions]), memdebug=$enableval) if test "$memdebug" != "yes"; then memdebug=no AC_DEFINE(CALCURSE_MEMORY_DEBUG_DISABLED, 1, [Define to 1 if you do not want memory debug.]) else AC_DEFINE(CALCURSE_MEMORY_DEBUG, 1, [Define to 1 if you want memory debug.]) fi AC_MSG_CHECKING([if memory debug should be used]) AC_MSG_RESULT($memdebug) AM_CONDITIONAL(CALCURSE_MEMORY_DEBUG, test x$memdebug = xyes) #------------------------------------------------------------------------------- # Create Makefiles #------------------------------------------------------------------------------- AC_OUTPUT(Makefile doc/Makefile src/Makefile test/Makefile scripts/Makefile \ po/Makefile.in po/Makefile) #------------------------------------------------------------------------------- # Summary #------------------------------------------------------------------------------- echo echo "========================================================================" echo "$PACKAGE is configured as follows." echo "Please check that this configuration matches your expectations." echo "Also give a look at the config.h file to check for preprocessor symbols." echo echo "Host system type : $host" echo echo "Options used to compile and link:" echo " PREFIX = $prefix" echo " VERSION = $PACKAGE_VERSION" echo " CC = $CC" echo " CFLAGS = $CFLAGS" echo " CPPFLAGS = $CPPFLAGS" echo " DEFS = $DEFS" echo " LD = $LD" echo " LDFLAGS = $LDFLAGS" echo " LIBS = $LIBS" echo "========================================================================" echo calcurse-3.1.4/Makefile.am0000644000175000001440000000046612105444321012273 00000000000000AUTOMAKE_OPTIONS= foreign ACLOCAL_AMFLAGS = -I m4 SUBDIRS = po src test scripts if ENABLE_DOCS SUBDIRS += doc endif EXTRA_DIST = \ INSTALL \ ABOUT-NLS BUILT_SOURCES = $(top_srcdir)/.version $(top_srcdir)/.version: echo $(VERSION) > $@-t && mv $@-t $@ dist-hook: echo $(VERSION) > $(distdir)/.version calcurse-3.1.4/NEWS0000644000175000001440000004254212105444350010741 00000000000000[09 Feb 2013] Version 3.1.4: - Bug fixes: * Do not prompt for a todo after adding an appointment. * Close key binding window when reassigning the same key (thanks to Michael Smith for submitting a patch). * Update copyright ranges. * Do not ignore "--datarootdir" in the i18n Makefile. [02 Feb 2013] Version 3.1.3: - Bug fixes: * Complete the test-suite even if libfaketime is not present. * Add a workaround for broken libfaketime-based tests on 32-bit systems (fixes Debian bug #697013). * Do not update start time/duration with bogus values if the prompt is canceled in edit mode. [16 Dec 2012] Version 3.1.2: - Bug fixes: * Fix another corner case of the screen corruption bug (BUG#6). * Fix core dump when trying to edit a non-existent item. * Display correct welcome messages on startup. [07 Dec 2012] Version 3.1.1: - Bug fixes: * Fix another screen corruption bug. * Fix several compiler warnings. [05 Dec 2012] Version 3.1.0: - New features: * Vim-like copy/paste (FR#15). Use the delete key to cut items. * Support for entering times in 24 hour format ("2130" instead of "21:30", thanks to William Pettersson for submitting a patch). * Compact panel mode (FR#7). This can be enabled using the currently undocumented "appearance.compactpanels" configuration setting. * Configurable default view (FR#19). The default view can be changed using the currently undocumented "appearance.defaultpanel" configuration setting. * "-D" and "-c" can now be used simultaneously, whereby "-c" has precedence over "-D". * Cache monthly view to speed up browsing. - Bug fixes: * Sort `calcurse -d` output by time (BUG#2, reported by Romeo Van Snick). * Fix a critical data corruption bug (BUG#7, BUG#8, reported by Baptiste Jonglez and Erik Saule). * Fix screen corruption (BUG#6, reported by Erik Saule and Antoine Jacoutot). * No longer show the calcurse screen in the editor/pager when the window is resized (BUG#9, reported by Michael Smith). * Calculate busy slices correctly if (recurrent) appointments with a duration of more than 24 hours are used. * Fix a core dump that occurred if the main window was too small. - Translation: * Several translation updates. [01 Jul 2012] Version 3.0.0: - New features: * Full UTF-8 support. * Much more powerful formatting options for printing items in non-interactive mode. Format strings can be specified using "--format-apt", "--format-event", "--format-recur-apt" and "--format-recur-event". * Support for vim-style count prefixes for displacement keys. * Powerful duration strings: Allows using extended duration strings, such as "+3:10" or "+1d20h5m". * A feature that allows piping items to external commands. * New key bindings to jump to the previous/next month/year. * A new configuration file format. `calcurse-upgrade` can be used to convert existing configuration files. * Several performance improvements. * Notes are now stored using hash-based file names which results in lower disk space usage. * A test suite that can be used to test the core functionality of calcurse. * A "--read-only" command line option to discard all changes to data files. - Bug fixes: * Do not hardcode paths to the default editor/pager. Rely on the "$PATH" variable instead. * Update the number of todo items when importing an iCal file to prevent some items from being inaccessible. * Fix a segmentation fault when importing iCal data (reported by Andraz Levstik). * Format the "DURATION" field properly on iCal export. Use days/hours/minutes/seconds instead of seconds (reported and fixed by Jerome Pinot). * Do not localize dates in pcal exports (reported by Baptiste Jonglez). - Translation: * Portuguese translation (provided by Rafael Ferreira). * 100% complete French, German and Russian translations. [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: * Keep the order of events across restarts (reported by Alan). * Fix the build process when disabling documentation generation. * Avoid flickering on window resize. * Avoid a segfault when resizing the calcurse window. * Add missing documentation for the "backword-kill-word" line editing function. * Honor the "TMPDIR" environment variable instead of using hardcoded paths for temporary files (reported by Erik Saule). * Fix pager invocation when showing the log file during an import (reported by Andraz Levstik). * Accept resource parameters in iCal import. Accept additional parameters such as language parameters (reported by Andraz Levstik). * Sync the notification item after editing or pasting an appointment. This ensures the information in the notification bar as well as the countdown for the notification daemon are always up-to-date (reported by Andraz Levstik). * Fix recurrent appointment notification. * Fix flagging of regular appointments. * Fix sort order when using command line options to display upcoming appointments and events (reported by Erik Saule). [29 May 2011] Version 2.9.0 - New features: * Usage of short form dates such as "29/5/10" instead of "29/05/2010", "23" for the 23rd of the currently selected month and year or "3/1" for Mar 01 (or Jan 03, depending on the date format) of the currently selected year. * "backword-kill-word" line editing function. * Automatically drop empty notes after editing. * Documentation and man pages now are in AsciiDoc format which is easier to maintain and can be translated to several formats such as HTML, PDF, PostScript, EPUB, DocBook and much more. * Manual and man pages contain updated links to our new website and mailing lists, as well as instructions on how to use Transifex. * Extensive code cleanups and improvements. - Bugfixes: * Avoid a segfault when resizing the help window. * Remove the lock file if calcurse died (fixes Debian Bug #575772, thanks to Erik for submitting a patch). * Parse appointment end times correctly if they date back (reported by Aleksey Mechonoshin). * Fix some compiler warnings. - Translation: * Russian translation provided by Aleksey Mechonoshin. * Several translation updates. [29 May 2010] Version 2.8 - New features: * a weekly calendar view was added with the display of the week number and colored slices indicating appointment times * the side bar width can now be customized by the user - Bugfixes: * wrong calculation of recurrent dates after a turn of year fixed (patch provided by Lukas Fleischer) * check for data directory availability added * fixed a possible segfault that could be triggered when calcurse screen became too small * INSTALL file is no longer missing from the distributed package * compilation issue related to memory functions definitions fixed [22 Aug 2009] Version 2.7 - New features: * a daemon was implemented so that calcurse can now send reminders in background * new --status command line option to display information about calcurse running instances - Bugfixes: * fixed a bug which prevented ical files from being imported * no more error when user's home directory does not exist * dates are now written properly again when using the '-r' flag * incorrect duration format fixed when exporting to ical [11 Jul 2009] Version 2.6 - New features: * calcurse is now distributed under a 2-clause BSD-style license * todos can now be flagged as completed * support for regex-based searches added * locking mechanism implemented to prevent having two calcurse instances running at the same time * inside calendar panel, day names and selected date are now in the same colour as user's theme - Bugfixes: * missing 'T' letter added in the DURATION field for ical export (reported by cuz) * ical events which spans over several days are now imported correctly (reported by Andreas Kalex) * fixed gcc's `format-security' issue (reported by Francois Boulogne) * no more freeze when changing color within the configuration screen on OpenBSD * fixed a memory leak caused by a wrong use of the structures related to the notification bar * todo items are not displayed twice if -d and -t flags are both given (reported by Timo Schmiade) * it is now possible to export data from a given appointment file even if the user does not have any home directory (reported by Ben Zanin) * prevent character deletion before the beginning of the string within the online editor (reported by Martin Rehak) [25 Jan 2009] Version 2.5 - New features: * new option to periodically save data * cut and paste feature added, to move items from one day to another * support for iso date format (yyyy-mm-dd) added * new '--enable-memory-debug' configuration option to monitor memory usage * configuration scipt improved to be able to link against ncursesw if ncurses is not available - Bugfixes: * fixed a two-years old bug (appeared in version 1.5) that made repeated items with exceptions load uncorrectly in some cases (thanks to Jan Smydke for reporting it) * fixed a bug related to user-configured keys that could be lost when using calcurse in non-interactive mode [27 Dec 2008] Version 2.4 - New features: * key bindings are now user-definable * new layout configuration menu - Bugfixes: * memory leak due to a wrong use of the pthread library fixed * fixed a possible freeze when deleting an appointment's note * exception dates now properly ignored when exporting data to pcal format * daylight saving time unwanted offset fixed [14 Dec 2008] Version 2.4_beta beta version available for testing. [15 Oct 2008] Version 2.3 - New feature: * ical import added [29 Sep 2008] Version 2.3_beta beta version available for testing. [28 Aug 2008] Version 2.2 - New features: * pcal export added, to be able to produce nice-looking PostScript output * '-s', '-r' and '-D' command line arguments added which allows to use an alternative data directory, and to be more flexible when specifying the range of dates to be considered when displaying appointments and events (thanks Erik for submiting the patch) * '^G', '0' and '$' keybindings added to ease movements in calendar [12 Aug 2008] Version 2.2_beta beta version available for testing. [17 May 2008] Version 2.1 - New features: * '--note' command line argument added which allows the display of note contents in non-interactive mode (patch submitted by Erik Saule) * It is now possible to configure date formats used in calcurse interactive and non-interactive modes (patch submitted by Tony) - Bugfixes: * Debian Bug Report #469297 - Translation: * Italian manual provided by Leandro Noferini [26 Apr 2008] Version 2.1_beta beta version available for testing. [02 Mar 2008] Version 2.0 - New features: * Ability to attach notes to appointments, events and todos added * Call to an external editor/pager to edit/view notes implemented * Documentation improved, with the use of a css style sheet in html manuals - Bugfixes: * Leap years are now properly handled * configure.ac updated to link against pthread and not lpthread [16 Feb 2008] Version 2.0_beta beta version available for testing. [23 Oct 2007] Version 1.9 - New features: * Moon phase calculation added * Automatic redraw is now performed when resizing terminal * Major code cleanup release, error and signal handling improved - Bugfixes: * Current day is now automatically updated in the calendar panel * No more problem when trying to load a calendar from current directory - Translation: * Dutch translation and manual provided by Jeremy Roon [31 Aug 2007] Version 1.9_beta beta version available on request. [22 May 2007] Version 1.8 - New features: * The command launched to notify user of an upcoming appointment is now configurable, so that user can get warned by mail or by playing a tune for example * Color theme configuration menu was completely redesigned, with support for default terminal's color added * 'Export' command implemented, to be able to save calcurse data in iCalendar format. The '--export' command line argument was also implemented to be able to use this feature in non-interactive mode. * 'Flag Item' command implemented to mark appointments as 'important' so that user gets notified before they arrive - Bugfixes: * Fixed a possible problem while editing an item description and using CTRL-D to delete last character * 01/01/1970 is not returned anymore when editing an item endless repetition [15 Apr 2007] Version 1.8_beta beta version available on request. [20 Jan 2007] Version 1.7 - New features: * 'Edit Item' command implemented to be able to modify an already existing item * Long command-line options are now accepted * '-t' flag now takes a priority number as optional argument * Repeated items are now marked with an '*' to be recognizable from normal items - Bugfixes: * When creating a recurrent item, the end-date is included again in the repetition * Date format corrected in 'Go To' command [18 Dec 2006] Version 1.7_beta beta version available on request. [01 Oct 2006] Version 1.6 - New features: * Notification-bar implemented, which indicates current date and time, the calendar file in use and the next upcoming appointment together with the time left before it * '-n' flag added to get notified of the next appointment within upcoming 24 hours * Support for todo priorities added * New screen layouts added to make the todo panel the largest one * General keybindings implemented, which apply whatever panel is selected - Bugfixes: * The repeated end date can no longer be before the item start date * Fixed a possible conflict in the LOCALEDIR variable definition - Translation: * spanish translation and manual provided by Jose Lopez * german translation and manual updated by Christoph M. [26 Aug 2006] Version 1.5 - New features: * Support for recurrent events and appointments added - Bugfixes: * Debian Bug Report #369550, #377543 * fixed the compiler linking problem with libintl on systems which do not provide intl support within libc - Translation: * german translation provided by Michael Schulz * english translation provided by Neil Williams [15 May 2006] Version 1.4 - New features: * Support for i18n added * Support for non-color terminals added * Option added to choose which day is the first of the week (monday or sunday) * Documentation improved, with translated html manuals - Bugfixes: * When confirmation is requested, it is now done by pressing 'y' or 'n' instead of 'yes' or 'no' - Translation: * french translation * french and german manuals [17 Mar 2006] Version 1.3 - New features: * Adding of all-day long events * Many GUI improvements: o better scrolling (with the use of ncurses pad functions) o scrollbars added o progress bar added * Appointment duration can now be entered either in minutes or in hh:mm format - Bugfixes: * January 0 bug fixed * Current day is no longer highlighted in every year of the future and the past (thanks to Michael for reporting that bug) * Fixed compiler warnings (thanks to Uwe for reporting this) * Removed -lpanel link during compilation * Characters can now be erased with CTRL-H (to fix a problem reported by Brendan) [26 Nov 2005] Version 1.2 - New features: * An option was added to skip system dialogs * Configure script was improved - Bugfixes: * Ncurses library use improved: screen refreshing is faster, windows do not flicker anymore when updated, and memory footprint is much smaller * Changed abbreviation for 'Wednesday' from 'Wen' to 'Wed' [29 Oct 2005] Version 1.1 - New features: * Command-line options which allows to display appointments and todo list without entering the interactive mode * Manpage and documentation updated * Configure script improved - Bugfixes: * Debian Bug Report #335430 regarding the GoTo today function is now fixed [08 Oct 2005] Version 1.0 First stable release - New features: * Calcurse now comes with a manpage - Bugfixes: * Debian Bug Report #330869 regarding the October 0 which does not exist is now fixed * Default options "auto-save", "confirm-quit", and "confirm-delete" were set to 'yes' [11 Sep 2005] Version 1.0rc3 First public release [26 Jun 2005] Version 1.0rc2 beta version [02 Apr 2005] Version 1.0rc1 beta version calcurse-3.1.4/INSTALL0000644000175000001440000002243212105444321011265 00000000000000Installation Instructions ************************* Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005 Free Software Foundation, Inc. This file is free documentation; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. Basic Installation ================== These are generic installation instructions. The `configure' shell script attempts to guess correct values for various system-dependent variables used during compilation. It uses those values to create a `Makefile' in each directory of the package. It may also create one or more `.h' files containing system-dependent definitions. Finally, it creates a shell script `config.status' that you can run in the future to recreate the current configuration, and a file `config.log' containing compiler output (useful mainly for debugging `configure'). It can also use an optional file (typically called `config.cache' and enabled with `--cache-file=config.cache' or simply `-C') that saves the results of its tests to speed up reconfiguring. (Caching is disabled by default to prevent problems with accidental use of stale cache files.) If you need to do unusual things to compile the package, please try to figure out how `configure' could check whether to do them, and mail diffs or instructions to the address given in the `README' so they can be considered for the next release. If you are using the cache, and at some point `config.cache' contains results you don't want to keep, you may remove or edit it. The file `configure.ac' (or `configure.in') is used to create `configure' by a program called `autoconf'. You only need `configure.ac' if you want to change it or regenerate `configure' using a newer version of `autoconf'. The simplest way to compile this package is: 1. `cd' to the directory containing the package's source code and type `./configure' to configure the package for your system. If you're using `csh' on an old version of System V, you might need to type `sh ./configure' instead to prevent `csh' from trying to execute `configure' itself. Running `configure' takes awhile. While running, it prints some messages telling which features it is checking for. 2. Type `make' to compile the package. 3. Optionally, type `make check' to run any self-tests that come with the package. 4. Type `make install' to install the programs and any data files and documentation. 5. You can remove the program binaries and object files from the source code directory by typing `make clean'. To also remove the files that `configure' created (so you can compile the package for a different kind of computer), type `make distclean'. There is also a `make maintainer-clean' target, but that is intended mainly for the package's developers. If you use it, you may have to get all sorts of other programs in order to regenerate files that came with the distribution. Compilers and Options ===================== Some systems require unusual options for compilation or linking that the `configure' script does not know about. Run `./configure --help' for details on some of the pertinent environment variables. You can give `configure' initial values for configuration parameters by setting variables in the command line or in the environment. Here is an example: ./configure CC=c89 CFLAGS=-O2 LIBS=-lposix *Note Defining Variables::, for more details. Compiling For Multiple Architectures ==================================== You can compile the package for more than one kind of computer at the same time, by placing the object files for each architecture in their own directory. To do this, you must use a version of `make' that supports the `VPATH' variable, such as GNU `make'. `cd' to the directory where you want the object files and executables to go and run the `configure' script. `configure' automatically checks for the source code in the directory that `configure' is in and in `..'. If you have to use a `make' that does not support the `VPATH' variable, you have to compile the package for one architecture at a time in the source code directory. After you have installed the package for one architecture, use `make distclean' before reconfiguring for another architecture. Installation Names ================== By default, `make install' installs the package's commands under `/usr/local/bin', include files under `/usr/local/include', etc. You can specify an installation prefix other than `/usr/local' by giving `configure' the option `--prefix=PREFIX'. You can specify separate installation prefixes for architecture-specific files and architecture-independent files. If you pass the option `--exec-prefix=PREFIX' to `configure', the package uses PREFIX as the prefix for installing programs and libraries. Documentation and other data files still use the regular prefix. In addition, if you use an unusual directory layout you can give options like `--bindir=DIR' to specify different values for particular kinds of files. Run `configure --help' for a list of the directories you can set and what kinds of files go in them. If the package supports it, you can cause programs to be installed with an extra prefix or suffix on their names by giving `configure' the option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. Optional Features ================= Some packages pay attention to `--enable-FEATURE' options to `configure', where FEATURE indicates an optional part of the package. They may also pay attention to `--with-PACKAGE' options, where PACKAGE is something like `gnu-as' or `x' (for the X Window System). The `README' should mention any `--enable-' and `--with-' options that the package recognizes. For packages that use the X Window System, `configure' can usually find the X include and library files automatically, but if it doesn't, you can use the `configure' options `--x-includes=DIR' and `--x-libraries=DIR' to specify their locations. Specifying the System Type ========================== There may be some features `configure' cannot figure out automatically, but needs to determine by the type of machine the package will run on. Usually, assuming the package is built to be run on the _same_ architectures, `configure' can figure that out, but if it prints a message saying it cannot guess the machine type, give it the `--build=TYPE' option. TYPE can either be a short name for the system type, such as `sun4', or a canonical name which has the form: CPU-COMPANY-SYSTEM where SYSTEM can have one of these forms: OS KERNEL-OS See the file `config.sub' for the possible values of each field. If `config.sub' isn't included in this package, then this package doesn't need to know the machine type. If you are _building_ compiler tools for cross-compiling, you should use the option `--target=TYPE' to select the type of system they will produce code for. If you want to _use_ a cross compiler, that generates code for a platform different from the build platform, you should specify the "host" platform (i.e., that on which the generated programs will eventually be run) with `--host=TYPE'. Sharing Defaults ================ If you want to set default values for `configure' scripts to share, you can create a site shell script called `config.site' that gives default values for variables like `CC', `cache_file', and `prefix'. `configure' looks for `PREFIX/share/config.site' if it exists, then `PREFIX/etc/config.site' if it exists. Or, you can set the `CONFIG_SITE' environment variable to the location of the site script. A warning: not all `configure' scripts look for a site script. Defining Variables ================== Variables not defined in a site shell script can be set in the environment passed to `configure'. However, some packages may run configure again during the build, and the customized values of these variables may be lost. In order to avoid this problem, you should set them in the `configure' command line, using `VAR=value'. For example: ./configure CC=/usr/local2/bin/gcc causes the specified `gcc' to be used as the C compiler (unless it is overridden in the site shell script). Here is a another example: /bin/bash ./configure CONFIG_SHELL=/bin/bash Here the `CONFIG_SHELL=/bin/bash' operand causes subsequent configuration-related scripts to be executed by `/bin/bash'. `configure' Invocation ====================== `configure' recognizes the following options to control how it operates. `--help' `-h' Print a summary of the options to `configure', and exit. `--version' `-V' Print the version of Autoconf used to generate the `configure' script, and exit. `--cache-file=FILE' Enable the cache: use and save the results of the tests in FILE, traditionally `config.cache'. FILE defaults to `/dev/null' to disable caching. `--config-cache' `-C' Alias for `--cache-file=config.cache'. `--quiet' `--silent' `-q' Do not print messages saying which checks are being made. To suppress all normal output, redirect it to `/dev/null' (any error messages will still be shown). `--srcdir=DIR' Look for the package's source code in directory DIR. Usually `configure' can determine that directory automatically. `configure' also accepts some other, not widely useful, options. Run `configure --help' for more details. calcurse-3.1.4/config.rpath0000755000175000001440000003521312105444376012557 00000000000000#! /bin/sh # Output a system dependent set of variables, describing how to set the # run time search path of shared libraries in an executable. # # Copyright 1996-2003 Free Software Foundation, Inc. # Taken from GNU libtool, 2001 # Originally by Gordon Matzigkeit , 1996 # # 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-1307, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # # The first argument passed to this file is the canonical host specification, # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM # or # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # The environment variables CC, GCC, LDFLAGS, LD, with_gnu_ld # should be set by the caller. # # The set of defined variables is at the end of this script. # Known limitations: # - On IRIX 6.5 with CC="cc", the run time search patch must not be longer # than 256 bytes, otherwise the compiler driver will dump core. The only # known workaround is to choose shorter directory names for the build # directory and/or the installation directory. # All known linkers require a `.a' archive for static linking (except M$VC, # which needs '.lib'). libext=a shrext=.so host="$1" host_cpu=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` host_vendor=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` host_os=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` # Code taken from libtool.m4's AC_LIBTOOL_PROG_COMPILER_PIC. wl= if test "$GCC" = yes; then wl='-Wl,' else case "$host_os" in aix*) wl='-Wl,' ;; mingw* | pw32* | os2*) ;; hpux9* | hpux10* | hpux11*) wl='-Wl,' ;; irix5* | irix6* | nonstopux*) wl='-Wl,' ;; newsos6) ;; linux*) case $CC in icc|ecc) wl='-Wl,' ;; ccc) wl='-Wl,' ;; esac ;; osf3* | osf4* | osf5*) wl='-Wl,' ;; sco3.2v5*) ;; solaris*) wl='-Wl,' ;; sunos4*) wl='-Qoption ld ' ;; sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) wl='-Wl,' ;; sysv4*MP*) ;; uts4*) ;; esac fi # Code taken from libtool.m4's AC_LIBTOOL_PROG_LD_SHLIBS. hardcode_libdir_flag_spec= hardcode_libdir_separator= hardcode_direct=no hardcode_minus_L=no case "$host_os" in cygwin* | mingw* | pw32*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test "$GCC" != yes; then with_gnu_ld=no fi ;; openbsd*) with_gnu_ld=no ;; esac ld_shlibs=yes if test "$with_gnu_ld" = yes; then case "$host_os" in aix3* | aix4* | aix5*) # On AIX/PPC, the GNU linker is very broken if test "$host_cpu" != ia64; then ld_shlibs=no fi ;; amigaos*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes # Samuel A. Falvo II reports # that the semantics of dynamic libraries on AmigaOS, at least up # to version 4, is to share data among multiple programs linked # with the same dynamic library. Since this doesn't match the # behavior of shared libraries on other platforms, we can use # them. ld_shlibs=no ;; beos*) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then : else ld_shlibs=no fi ;; cygwin* | mingw* | pw32*) # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec='-L$libdir' if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then : else ld_shlibs=no fi ;; netbsd*) ;; solaris* | sysv5*) if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then ld_shlibs=no elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then : else ld_shlibs=no fi ;; sunos4*) hardcode_direct=yes ;; *) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then : else ld_shlibs=no fi ;; esac if test "$ld_shlibs" = yes; then # Unlike libtool, we use -rpath here, not --rpath, since the documented # option of GNU ld is called -rpath, not --rpath. hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' fi else case "$host_os" in aix3*) # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L=yes if test "$GCC" = yes; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. hardcode_direct=unsupported fi ;; aix4* | aix5*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no else aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[23]|aix4.[23].*|aix5*) for ld_flag in $LDFLAGS; do if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then aix_use_runtimelinking=yes break fi done esac fi hardcode_direct=yes hardcode_libdir_separator=':' if test "$GCC" = yes; then case $host_os in aix4.[012]|aix4.[012].*) collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && \ strings "$collect2name" | grep resolve_lib_name >/dev/null then # We have reworked collect2 hardcode_direct=yes else # We have old collect2 hardcode_direct=unsupported hardcode_minus_L=yes hardcode_libdir_flag_spec='-L$libdir' hardcode_libdir_separator= fi esac fi # Begin _LT_AC_SYS_LIBPATH_AIX. echo 'int main () { return 0; }' > conftest.c ${CC} ${LDFLAGS} conftest.c -o conftest aix_libpath=`dump -H conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'` if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'` fi if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib" fi rm -f conftest.c conftest # End _LT_AC_SYS_LIBPATH_AIX. if test "$aix_use_runtimelinking" = yes; then hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' else hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" fi fi ;; amigaos*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes # see comment about different semantics on the GNU ld section ld_shlibs=no ;; bsdi4*) ;; cygwin* | mingw* | pw32*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec=' ' libext=lib ;; darwin* | rhapsody*) if $CC -v 2>&1 | grep 'Apple' >/dev/null ; then hardcode_direct=no fi ;; dgux*) hardcode_libdir_flag_spec='-L$libdir' ;; freebsd1*) ld_shlibs=no ;; freebsd2.2*) hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes ;; freebsd2*) hardcode_direct=yes hardcode_minus_L=yes ;; freebsd*) hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes ;; hpux9*) hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: hardcode_direct=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes ;; hpux10* | hpux11*) if test "$with_gnu_ld" = no; then case "$host_cpu" in hppa*64*) hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: hardcode_direct=no ;; ia64*) hardcode_libdir_flag_spec='-L$libdir' hardcode_direct=no # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes ;; *) hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: hardcode_direct=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: ;; netbsd*) hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes ;; newsos6) hardcode_direct=yes hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: ;; openbsd*) hardcode_direct=yes if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then hardcode_libdir_flag_spec='${wl}-rpath,$libdir' else case "$host_os" in openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) hardcode_libdir_flag_spec='-R$libdir' ;; *) hardcode_libdir_flag_spec='${wl}-rpath,$libdir' ;; esac fi ;; os2*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes ;; osf3*) hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: ;; osf4* | osf5*) if test "$GCC" = yes; then hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' else # Both cc and cxx compiler support -rpath directly hardcode_libdir_flag_spec='-rpath $libdir' fi hardcode_libdir_separator=: ;; sco3.2v5*) ;; solaris*) hardcode_libdir_flag_spec='-R$libdir' ;; sunos4*) hardcode_libdir_flag_spec='-L$libdir' hardcode_direct=yes hardcode_minus_L=yes ;; sysv4) case $host_vendor in sni) hardcode_direct=yes # is this really true??? ;; siemens) hardcode_direct=no ;; motorola) hardcode_direct=no #Motorola manual says yes, but my tests say they lie ;; esac ;; sysv4.3*) ;; sysv4*MP*) if test -d /usr/nec; then ld_shlibs=yes fi ;; sysv4.2uw2*) hardcode_direct=yes hardcode_minus_L=no ;; sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*) ;; sysv5*) hardcode_libdir_flag_spec= ;; uts4*) hardcode_libdir_flag_spec='-L$libdir' ;; *) ld_shlibs=no ;; esac fi # Check dynamic linker characteristics # Code taken from libtool.m4's AC_LIBTOOL_SYS_DYNAMIC_LINKER. libname_spec='lib$name' case "$host_os" in aix3*) ;; aix4* | aix5*) ;; amigaos*) ;; beos*) ;; bsdi4*) ;; cygwin* | mingw* | pw32*) shrext=.dll ;; darwin* | rhapsody*) shrext=.dylib ;; dgux*) ;; freebsd1*) ;; freebsd*) ;; gnu*) ;; hpux9* | hpux10* | hpux11*) case "$host_cpu" in ia64*) shrext=.so ;; hppa*64*) shrext=.sl ;; *) shrext=.sl ;; esac ;; irix5* | irix6* | nonstopux*) case "$host_os" in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= ;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 ;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 ;; *) libsuff= shlibsuff= ;; esac ;; esac ;; linux*oldld* | linux*aout* | linux*coff*) ;; linux*) ;; netbsd*) ;; newsos6) ;; nto-qnx) ;; openbsd*) ;; os2*) libname_spec='$name' shrext=.dll ;; osf3* | osf4* | osf5*) ;; sco3.2v5*) ;; solaris*) ;; sunos4*) ;; sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) ;; sysv4*MP*) ;; uts4*) ;; esac sed_quote_subst='s/\(["`$\\]\)/\\\1/g' escaped_wl=`echo "X$wl" | sed -e 's/^X//' -e "$sed_quote_subst"` shlibext=`echo "$shrext" | sed -e 's,^\.,,'` escaped_hardcode_libdir_flag_spec=`echo "X$hardcode_libdir_flag_spec" | sed -e 's/^X//' -e "$sed_quote_subst"` sed -e 's/^\([a-zA-Z0-9_]*\)=/acl_cv_\1=/' < CALCURSE - Submitting Patches

This is a short summary of guidelines you should try to follow when submitting patches to calcurse.

1. Fetching the most recent source

The whole source code currently is under version control using Git as VCS. You can retrieve a local copy of the development tree using:

$ git clone git://git.calcurse.org/calcurse.git

This will create a new directory calcurse that contains the cloned repository.

If you want to follow the maintenance branch (maint) as well (e.g. to create a bug fix), setting up a tracking branch is recommended:

$ git branch -t maint origin/maint

2. Creating a working branch

Whenever you want to work on a new feature, do it in a separate branch. Having diverging commits in the master branch might cause conflicts when pulling in new changes. Thus, creating a new development branch before doing any changes is good practice. And even before doing that, you should update the master branch of your working copy:

$ git checkout master
$ git pull origin master
$ git checkout -b wip

You can replace wip by any name you like.

Maintenance patches such as bug fixes and stability improvements should be based on the maint branch instead:

$ git checkout maint
$ git pull origin maint
$ git checkout -b wip-maint

3. Committing the changes

Edit files in the source tree and test your changes. When everything seems to be fine, you’re ready to commit to your local working tree:

$ git commit -as

If you added or removed files, you probably need to run git add or git rm before committing so that Git is aware of them.

If you work on more than a small bug fix, you should split your work into several commits. Try to keep your commits small and focused. Smaller patches are way easier to review and have a better chance of being included in mainline development.

Also try to make your commit messages brief and descriptive. The first line of the commit message should be a short description (not more than 50 characters) and should use imperative, present tense. If there are details that cannot be expressed in these size constraints, put them in separate text paragraphs separated by blank lines and wrapped to 72 columns. If you use Vim, gitcommit.vim will do most of the job for you.

Here’s a sample commit message:

Invoke vars_init() before importing data with "-i"

We forgot to call vars_init() when importing an item using the "-i"
command line argument, which led to the pager configuration variable
being unset and hence the pager invocation (triggered to show the log in
case there are any errors during import) failing.

Fix this by calling vars_init() before io_import_data().

Reported-by: Andraž 'ruskie' Levstik <ruskie@codemages.net>
Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>

The -s in the git commit invocation makes Git add a "Signed-off-by" line to credit yourself and to confirm that your contribution was created in whole or in part by you and you have the right to submit it under the BSD license. Please do not remove that line when editing the commit message.

4. Creating a patch series

As soon as you finished all your work, test everything again and create a patch series:

$ git format-patch master

Replace master by maint if your development branch is based on the maintenance branch:

$ git format-patch maint

5. Submitting patches

Send your patch series to one of the mailing lists:

$ git send-email *.patch

The bugs mailing list should be used for bug fixes, misc should be used for everything else.

You can also add a cover letter and/or add annotations to patches:

$ git send-email --cover-letter --annotate *.patch

Additional information on the particular patches, which shouldn’t appear in the commit message itself, can be added immediately after the ---.

6. Importing patches

Git also provides a tool for importing a patch series submitted via git send-email. Just save all mails that contain patches into mbox files and use git am to apply them to your working branch:

$ git am <mbox>...

If you use mutt, you can also add following macro to apply the patch contained in the current mail to your local Git repository by pressing A:

set mbox_type=mbox
set my_git_repo_path=$HOME/src/calcurse

macro index,pager A "<pipe-message>(cd $my_git_repo_path && git am)<enter>"

To setup different Git repositories per mailing list (in case you follow several different development lists), simply bind the macro to a folder-hook or to a message-hook and use different repository paths per hook.


calcurse-3.1.4/doc/Makefile.in0000644000175000001440000003574512105444410013060 00000000000000# Makefile.in generated by automake 1.13.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2012 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = doc DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ $(top_srcdir)/mkinstalldirs $(dist_man_MANS) $(dist_doc_DATA) ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/lib-ld.m4 \ $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } man1dir = $(mandir)/man1 am__installdirs = "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(docdir)" NROFF = nroff MANS = $(dist_man_MANS) DATA = $(dist_doc_DATA) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) A2X = @A2X@ ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ ASCIIDOC = @ASCIIDOC@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GMSGFMT = @GMSGFMT@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ LDFLAGS = @LDFLAGS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ POSUB = @POSUB@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = $(datadir)/doc/$(PACKAGE) dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ AUTOMAKE_OPTIONS = foreign @HAVE_ASCIIDOC_TRUE@ASCIIDOC_ARGS = \ @HAVE_ASCIIDOC_TRUE@ -n \ @HAVE_ASCIIDOC_TRUE@ -a toc \ @HAVE_ASCIIDOC_TRUE@ -a icons @HAVE_A2X_TRUE@A2X_ARGS = \ @HAVE_A2X_TRUE@ -d manpage \ @HAVE_A2X_TRUE@ -f manpage dist_doc_DATA = \ manual.html \ submitting-patches.html dist_man_MANS = \ calcurse.1 EXTRA_DIST = \ manual.txt \ submitting-patches.txt \ calcurse.1.txt CLEANFILES = \ manual.html \ submitting-patches.html \ calcurse.1 all: all-am .SUFFIXES: .SUFFIXES: .html .txt $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign doc/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign doc/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-man1: $(dist_man_MANS) @$(NORMAL_INSTALL) @list1=''; \ list2='$(dist_man_MANS)'; \ test -n "$(man1dir)" \ && test -n "`echo $$list1$$list2`" \ || exit 0; \ echo " $(MKDIR_P) '$(DESTDIR)$(man1dir)'"; \ $(MKDIR_P) "$(DESTDIR)$(man1dir)" || exit 1; \ { for i in $$list1; do echo "$$i"; done; \ if test -n "$$list2"; then \ for i in $$list2; do echo "$$i"; done \ | sed -n '/\.1[a-z]*$$/p'; \ fi; \ } | while read p; do \ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; echo "$$p"; \ done | \ sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \ sed 'N;N;s,\n, ,g' | { \ list=; while read file base inst; do \ if test "$$base" = "$$inst"; then list="$$list $$file"; else \ echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \ $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst" || exit $$?; \ fi; \ done; \ for i in $$list; do echo "$$i"; done | $(am__base_list) | \ while read files; do \ test -z "$$files" || { \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man1dir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(man1dir)" || exit $$?; }; \ done; } uninstall-man1: @$(NORMAL_UNINSTALL) @list=''; test -n "$(man1dir)" || exit 0; \ files=`{ for i in $$list; do echo "$$i"; done; \ l2='$(dist_man_MANS)'; for i in $$l2; do echo "$$i"; done | \ sed -n '/\.1[a-z]*$$/p'; \ } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ dir='$(DESTDIR)$(man1dir)'; $(am__uninstall_files_from_dir) install-dist_docDATA: $(dist_doc_DATA) @$(NORMAL_INSTALL) @list='$(dist_doc_DATA)'; test -n "$(docdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(docdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(docdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(docdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(docdir)" || exit $$?; \ done uninstall-dist_docDATA: @$(NORMAL_UNINSTALL) @list='$(dist_doc_DATA)'; test -n "$(docdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(docdir)'; $(am__uninstall_files_from_dir) tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(MANS) $(DATA) installdirs: for dir in "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(docdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_docDATA install-man install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-man1 install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_docDATA uninstall-man uninstall-man: uninstall-man1 .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic cscopelist-am \ ctags-am distclean distclean-generic distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dist_docDATA install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-man1 install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic pdf pdf-am ps ps-am tags-am \ uninstall uninstall-am uninstall-dist_docDATA uninstall-man \ uninstall-man1 .txt.html: @HAVE_ASCIIDOC_TRUE@ $(AM_V_GEN) $(ASCIIDOC) $(ASCIIDOC_ARGS) $< %.1: %.1.txt @HAVE_A2X_TRUE@ $(AM_V_GEN) $(A2X) $(A2X_ARGS) $< # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: calcurse-3.1.4/doc/calcurse.1.txt0000644000175000001440000003255612105444321013512 00000000000000//// /* * Copyright (c) 2004-2013 calcurse Development Team * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * - Redistributions of source code must retain the above * copyright notice, this list of conditions and the * following disclaimer. * * - Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the * following disclaimer in the documentation and/or other * materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ //// calcurse(1) =========== Name ---- calcurse - text-based organizer Synopsis -------- [verse] *calcurse* [*-h*|*-v*] [*-an*] [*-t*[num]] [*-c*] [*-D*] [*-i*] [*-x*[format]] [*-d* |] [*-s*[date]] [*-r*[range]] [*-S* ] [*--status*] Description ----------- Calcurse is a text-based calendar and scheduling application. It helps keeping track of events, appointments and everyday tasks. A configurable notification system reminds user of upcoming deadlines, and the curses based interface can be customized to suit user needs. All of the commands are documented within an online help system. Options ------- The following options are supported: *-a*, *--appointment*:: Print the appointments and events for the current day and exit. 'Note:' The calendar from which to read the appointments can be specified using the *-c* flag. *-c* , *--calendar* :: Specify the calendar file to use. The default calendar is *~/.calcurse/apts* (see section 'FILES' below). This option has precedence over *-D*. *-d* , *--day* :: Print the appointments for the given date or for the given number of upcoming days, depending on the argument format. Two possible formats are supported: + -- * a date (possible formats described below). * a number *n*. -- + In the first case, the appointment list for the specified date will be returned, while in the second case the appointment list for the *n* upcoming days will be returned. + As an example, typing *calcurse -d 3* will display your appointments for today, tomorrow, and the day after tomorrow. + The date format used is the one specified in the ``General options'' menu. Four formats are available: + -- 1. mm/dd/yyyy 2. dd/mm/yyyy 3. yyyy/mm/dd 4. yyyy-mm-dd -- + 'Note:' as for the *-a* flag, the calendar from which to read the appointments can be specified using the *-c* flag. *-D* , *--directory* :: Specify the data directory to use. If not specified, the default directory is *~/.calcurse/*. *--format-apt* :: Specify a format to control the output of appointments in non-interactive mode. See the 'FORMAT STRINGS' section for detailed information on format strings. *--format-recur-apt* :: Specify a format to control the output of recurrent appointments in non-interactive mode. See the 'FORMAT STRINGS' section for detailed information on format strings. *--format-event* :: Specify a format to control the output of events in non-interactive mode. See the 'FORMAT STRINGS' section for detailed information on format strings. *--format-recur-event* :: Specify a format to control the output of recurrent events in non-interactive mode. See the 'FORMAT STRINGS' section for detailed information on format strings. *--format-todo* :: Specify a format to control the output of todo items in non-interactive mode. See the 'FORMAT STRINGS' section for detailed information on format strings. *-g*, *--gc*:: Run the garbage collector for note files and exit. *-h*, *--help*:: Print a short help text describing the supported command-line options, and exit. *-i* , *--import* :: Import the icalendar data contained in 'file'. *-n*, *--next*:: Print the next appointment within upcoming 24 hours and exit. The indicated time is the number of hours and minutes left before this appointment. + 'Note:' the calendar from which to read the appointments can be specified using the *-c* flag. *-r*[num], *--range*[=num]:: Print events and appointments for the 'num' number of days and exit. If no 'num' is given, a range of 1 day is considered. *--read-only*:: Don't save configuration nor appointments/todos. + 'Warning:' Use this this with care! If you run an interactive calcurse instance in read-only mode, all changes from this session will be lost without warning! *-s*[date], *--startday*[=date]:: Print events and appointments from 'date' and exit. If no 'date' is given, the current day is considered. *-S*, *--search*=:: When used with the *-a*, *-d*, *-r*, *-s*, or *-t* flag, print only the items having a description that matches the given regular expression. *--status*:: Display the status of running instances of calcurse. If calcurse is running, this will tell if the interactive mode was launched or if calcurse is running in background. The process pid will also be indicated. *-t*[num], *--todo*[=num]:: Print the *todo* list and exit. If the optional number 'num' is given, then only todos having a priority equal to 'num' will be returned. The priority number must be between 1 (highest) and 9 (lowest). It is also possible to specify *0* for the priority, in which case only completed tasks will be shown. *-v*, *--version*:: Display *calcurse* version and exit. *-x*[format], *--export*[=format]:: Export user data to specified format. Events, appointments and todos are converted and echoed to stdout. Two possible formats are available: 'ical' and 'pcal'. If the optional argument 'format' is not given, ical format is selected by default. + 'Note:' redirect standard output to export data to a file, by issuing a command such as: + ---- $ calcurse --export > my_data.dat ---- 'Note:' The *-N* option has been removed in calcurse 3.0.0. See the 'FORMAT STRINGS' section on how to print note along with appointments and events. Format strings -------------- Format strings are composed of printf()-style format specifiers -- ordinary characters are copied to stdout without modification. Each specifier is introduced by a *%* and is followed by a character which specifies the field to print. The set of available fields depends on the item type. Format specifiers for appointments ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ *s*:: Print the start time of the appointment as UNIX time stamp *S*:: Print the start time of the appointment using the *hh:mm* format *d*:: Print the duration of the appointment in seconds *e*:: Print the end time of the appointment as UNIX time stamp *E*:: Print the end time of the appointment using the *hh:mm* format *m*:: Print the description of the item *n*:: Print the name of the note file belonging to the item *N*:: Print the note belonging to the item Format specifiers for events ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ *m*:: Print the description of the item *n*:: Print the name of the note file belonging to the item *N*:: Print the note belonging to the item Format specifiers for todo items ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ *p*:: Print the priority of the item *m*:: Print the description of the item *n*:: Print the name of the note file belonging to the item *N*:: Print the note belonging to the item Examples ~~~~~~~~ *`calcurse -r7 --format-apt='- %S -> %E\n\t%m\n%N'`*:: Print appointments and events for the next seven days. Also, print the notes attached to each regular appointment (simulates *-N* for appointments). *`calcurse -r7 --format-apt=' - %m (%S to %E)\n' --format-recur-apt=' - %m (%S to %E)\n'`*:: Print appointments and events for the next seven days and use a custom format for (recurrent) appointments: * - Some appointment (18:30 to 21:30)*. *`calcurse -t --format-todo '(%p) %m\n'`*:: List all todo items and put parentheses around the priority specifiers. Extended format specifiers ~~~~~~~~~~~~~~~~~~~~~~~~~~ Extended format specifiers can be used if you want to specify advanced formatting options. Extended specifiers are introduced by *%(* and are terminated by a closing parenthesis (*)*). The following list includes all short specifiers and corresponding long options: * *s*: *(start)* * *S*: *(start:epoch)* * *d*: *(duration)* * *e*: *(end)* * *E*: *(end:epoch)* * *m*: *(message)* * *n*: *(noteid)* * *N*: *(note)* * *p*: *(priority)* The *(start)* and *(end)* specifiers support strftime()-style extended formatting options that can be used for fine-grained formatting. Additionally, the special formats *epoch* (which is equivalent to *(start:%s)* or *(end:%s)*) and *default* (which is mostly equivalent to *(start:%H:%M)* or *(end:%H:%M)* but displays *..:..* if the item doesn't start/end at the current day) are supported. Notes ----- Calcurse interface contains three different panels (calendar, appointment list, and todo list) on which you can perform different actions. All the possible actions, together with their associated keystrokes, are listed on the status bar. This status bar takes place at the bottom of the screen. At any time, the built-in help system can be invoked by pressing the '?' key. Once viewing the help screens, informations on a specific command can be accessed by pressing the keystroke corresponding to that command. Configuration ------------- The calcurse options can be changed from the configuration menu (shown when 'C' is hit). Five possible categories are to be chosen from : the color scheme, the layout (the location of the three panels on the screen), notification options, key bindings configuration menu, and more general options (such as automatic save before quitting). All of these options are detailed in the configuration menu. Files ----- The following structure is created in your $HOME directory (or in the directory you specified with the *-D* option), the first time calcurse is run: ---- $HOME/.calcurse/ |___notes/ |___conf |___keys |___apts |___todo ---- The 'notes' subdirectory contains descriptions of the notes which are attached to appointments, events or todos. One text file is created per note, whose name is built using mkstemp(3) and should be unique, but with no relation with the corresponding item's description. The 'conf' file contains the user configuration. The 'keys' file contains the user-defined key bindings. The 'apts' file contains all of the user's appointments and events, and the 'todo' file contains the todo list. 'Note:' if the logging of calcurse daemon activity was set in the notification configuration menu, the extra file 'daemon.log' will appear in calcurse data directory. This file contains logs about calcurse activity when running in background. Environment ----------- This section describes the environment variables that affect how calcurse operates. *VISUAL*:: Specifies the external editor to use for writing notes. *EDITOR*:: If the 'VISUAL' environment variable is not set, then 'EDITOR' will be used as the default external editor. If none of those variables are set, then '/usr/bin/vi' is used instead. *PAGER*:: Specifies the default viewer to be used for reading notes. If this variable is not set, then '/usr/bin/less' is used. Bugs ---- Incorrect highlighting of items appear when using calcurse black and white theme together with a *$TERM* variable set to 'xterm-color'. To fix this bug, and as advised by Thomas E. Dickey (xterm maintainer), 'xterm-xfree86' should be used instead of 'xterm-color' to set the *$TERM* variable: "The xterm-color value for $TERM is a bad choice for XFree86 xterm because it is commonly used for a terminfo entry which happens to not support bce. Use the xterm-xfree86 entry which is distributed with XFree86 xterm (or the similar one distributed with ncurses)." If you find other bugs, please send a report to bugs@calcurse.org or to one of the authors, below. See also -------- vi(1), less(1), ncurses(3), mkstemp(3) The ical specification (rfc2445) can be found at: http://tools.ietf.org/html/rfc2445 The pcal project page: http://pcal.sourceforge.net/ Calcurse home page: http://calcurse.org/ Calcurse complete manual, translated in many languages and maintained in html format, can be found in the doc/ directory of the source package, or at: http://calcurse.org/files/manual.html Authors ------- * *Frederic Culot* * *Lukas Fleischer* Copyright --------- Copyright (c) 2004-2013 calcurse Development Team. This software is released under the BSD License. calcurse-3.1.4/doc/Makefile.am0000644000175000001440000000107012105444321013030 00000000000000AUTOMAKE_OPTIONS = foreign if HAVE_ASCIIDOC ASCIIDOC_ARGS = \ -n \ -a toc \ -a icons endif if HAVE_A2X A2X_ARGS = \ -d manpage \ -f manpage endif dist_doc_DATA = \ manual.html \ submitting-patches.html dist_man_MANS = \ calcurse.1 EXTRA_DIST = \ manual.txt \ submitting-patches.txt \ calcurse.1.txt CLEANFILES = \ manual.html \ submitting-patches.html \ calcurse.1 docdir = $(datadir)/doc/$(PACKAGE) .txt.html: if HAVE_ASCIIDOC $(AM_V_GEN) $(ASCIIDOC) $(ASCIIDOC_ARGS) $< endif %.1: %.1.txt if HAVE_A2X $(AM_V_GEN) $(A2X) $(A2X_ARGS) $< endif calcurse-3.1.4/doc/calcurse.10000644000175000001440000003726312105444461012701 00000000000000'\" t .\" Title: calcurse .\" Author: [see the "Authors" section] .\" Generator: DocBook XSL Stylesheets v1.78.0 .\" Date: 02/09/2013 .\" Manual: \ \& .\" Source: \ \& .\" Language: English .\" .TH "CALCURSE" "1" "02/09/2013" "\ \&" "\ \&" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" calcurse \- text\-based organizer .SH "SYNOPSIS" .sp .nf \fBcalcurse\fR [\fB\-h\fR|\fB\-v\fR] [\fB\-an\fR] [\fB\-t\fR[num]] [\fB\-c\fR] [\fB\-D\fR] [\fB\-i\fR] [\fB\-x\fR[format]] [\fB\-d\fR |] [\fB\-s\fR[date]] [\fB\-r\fR[range]] [\fB\-S\fR ] [\fB\-\-status\fR] .fi .SH "DESCRIPTION" .sp Calcurse is a text\-based calendar and scheduling application\&. It helps keeping track of events, appointments and everyday tasks\&. A configurable notification system reminds user of upcoming deadlines, and the curses based interface can be customized to suit user needs\&. All of the commands are documented within an online help system\&. .SH "OPTIONS" .sp The following options are supported: .PP \fB\-a\fR, \fB\-\-appointment\fR .RS 4 Print the appointments and events for the current day and exit\&. \fINote:\fR The calendar from which to read the appointments can be specified using the \fB\-c\fR flag\&. .RE .PP \fB\-c\fR , \fB\-\-calendar\fR .RS 4 Specify the calendar file to use\&. The default calendar is \fB~/\&.calcurse/apts\fR (see section \fIFILES\fR below)\&. This option has precedence over \fB\-D\fR\&. .RE .PP \fB\-d\fR , \fB\-\-day\fR .RS 4 Print the appointments for the given date or for the given number of upcoming days, depending on the argument format\&. Two possible formats are supported: .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} a date (possible formats described below)\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} a number \fBn\fR\&. .RE .sp In the first case, the appointment list for the specified date will be returned, while in the second case the appointment list for the \fBn\fR upcoming days will be returned\&. .sp As an example, typing \fBcalcurse \-d 3\fR will display your appointments for today, tomorrow, and the day after tomorrow\&. .sp The date format used is the one specified in the \(lqGeneral options\(rq menu\&. Four formats are available: .sp .RS 4 .ie n \{\ \h'-04' 1.\h'+01'\c .\} .el \{\ .sp -1 .IP " 1." 4.2 .\} mm/dd/yyyy .RE .sp .RS 4 .ie n \{\ \h'-04' 2.\h'+01'\c .\} .el \{\ .sp -1 .IP " 2." 4.2 .\} dd/mm/yyyy .RE .sp .RS 4 .ie n \{\ \h'-04' 3.\h'+01'\c .\} .el \{\ .sp -1 .IP " 3." 4.2 .\} yyyy/mm/dd .RE .sp .RS 4 .ie n \{\ \h'-04' 4.\h'+01'\c .\} .el \{\ .sp -1 .IP " 4." 4.2 .\} yyyy\-mm\-dd .RE .sp \fINote:\fR as for the \fB\-a\fR flag, the calendar from which to read the appointments can be specified using the \fB\-c\fR flag\&. .RE .PP \fB\-D\fR , \fB\-\-directory\fR .RS 4 Specify the data directory to use\&. If not specified, the default directory is \fB~/\&.calcurse/\fR\&. .RE .PP \fB\-\-format\-apt\fR .RS 4 Specify a format to control the output of appointments in non\-interactive mode\&. See the \fIFORMAT STRINGS\fR section for detailed information on format strings\&. .RE .PP \fB\-\-format\-recur\-apt\fR .RS 4 Specify a format to control the output of recurrent appointments in non\-interactive mode\&. See the \fIFORMAT STRINGS\fR section for detailed information on format strings\&. .RE .PP \fB\-\-format\-event\fR .RS 4 Specify a format to control the output of events in non\-interactive mode\&. See the \fIFORMAT STRINGS\fR section for detailed information on format strings\&. .RE .PP \fB\-\-format\-recur\-event\fR .RS 4 Specify a format to control the output of recurrent events in non\-interactive mode\&. See the \fIFORMAT STRINGS\fR section for detailed information on format strings\&. .RE .PP \fB\-\-format\-todo\fR .RS 4 Specify a format to control the output of todo items in non\-interactive mode\&. See the \fIFORMAT STRINGS\fR section for detailed information on format strings\&. .RE .PP \fB\-g\fR, \fB\-\-gc\fR .RS 4 Run the garbage collector for note files and exit\&. .RE .PP \fB\-h\fR, \fB\-\-help\fR .RS 4 Print a short help text describing the supported command\-line options, and exit\&. .RE .PP \fB\-i\fR , \fB\-\-import\fR .RS 4 Import the icalendar data contained in \fIfile\fR\&. .RE .PP \fB\-n\fR, \fB\-\-next\fR .RS 4 Print the next appointment within upcoming 24 hours and exit\&. The indicated time is the number of hours and minutes left before this appointment\&. .sp \fINote:\fR the calendar from which to read the appointments can be specified using the \fB\-c\fR flag\&. .RE .PP \fB\-r\fR[num], \fB\-\-range\fR[=num] .RS 4 Print events and appointments for the \fInum\fR number of days and exit\&. If no \fInum\fR is given, a range of 1 day is considered\&. .RE .PP \fB\-\-read\-only\fR .RS 4 Don\(cqt save configuration nor appointments/todos\&. .sp \fIWarning:\fR Use this this with care! If you run an interactive calcurse instance in read\-only mode, all changes from this session will be lost without warning! .RE .PP \fB\-s\fR[date], \fB\-\-startday\fR[=date] .RS 4 Print events and appointments from \fIdate\fR and exit\&. If no \fIdate\fR is given, the current day is considered\&. .RE .PP \fB\-S\fR, \fB\-\-search\fR= .RS 4 When used with the \fB\-a\fR, \fB\-d\fR, \fB\-r\fR, \fB\-s\fR, or \fB\-t\fR flag, print only the items having a description that matches the given regular expression\&. .RE .PP \fB\-\-status\fR .RS 4 Display the status of running instances of calcurse\&. If calcurse is running, this will tell if the interactive mode was launched or if calcurse is running in background\&. The process pid will also be indicated\&. .RE .PP \fB\-t\fR[num], \fB\-\-todo\fR[=num] .RS 4 Print the \fBtodo\fR list and exit\&. If the optional number \fInum\fR is given, then only todos having a priority equal to \fInum\fR will be returned\&. The priority number must be between 1 (highest) and 9 (lowest)\&. It is also possible to specify \fB0\fR for the priority, in which case only completed tasks will be shown\&. .RE .PP \fB\-v\fR, \fB\-\-version\fR .RS 4 Display \fBcalcurse\fR version and exit\&. .RE .PP \fB\-x\fR[format], \fB\-\-export\fR[=format] .RS 4 Export user data to specified format\&. Events, appointments and todos are converted and echoed to stdout\&. Two possible formats are available: \fIical\fR and \fIpcal\fR\&. If the optional argument \fIformat\fR is not given, ical format is selected by default\&. .sp \fINote:\fR redirect standard output to export data to a file, by issuing a command such as: .sp .if n \{\ .RS 4 .\} .nf $ calcurse \-\-export > my_data\&.dat .fi .if n \{\ .RE .\} .RE .sp \fINote:\fR The \fB\-N\fR option has been removed in calcurse 3\&.0\&.0\&. See the \fIFORMAT STRINGS\fR section on how to print note along with appointments and events\&. .SH "FORMAT STRINGS" .sp Format strings are composed of printf()\-style format specifiers \(em ordinary characters are copied to stdout without modification\&. Each specifier is introduced by a \fB%\fR and is followed by a character which specifies the field to print\&. The set of available fields depends on the item type\&. .SS "Format specifiers for appointments" .PP \fBs\fR .RS 4 Print the start time of the appointment as UNIX time stamp .RE .PP \fBS\fR .RS 4 Print the start time of the appointment using the \fBhh:mm\fR format .RE .PP \fBd\fR .RS 4 Print the duration of the appointment in seconds .RE .PP \fBe\fR .RS 4 Print the end time of the appointment as UNIX time stamp .RE .PP \fBE\fR .RS 4 Print the end time of the appointment using the \fBhh:mm\fR format .RE .PP \fBm\fR .RS 4 Print the description of the item .RE .PP \fBn\fR .RS 4 Print the name of the note file belonging to the item .RE .PP \fBN\fR .RS 4 Print the note belonging to the item .RE .SS "Format specifiers for events" .PP \fBm\fR .RS 4 Print the description of the item .RE .PP \fBn\fR .RS 4 Print the name of the note file belonging to the item .RE .PP \fBN\fR .RS 4 Print the note belonging to the item .RE .SS "Format specifiers for todo items" .PP \fBp\fR .RS 4 Print the priority of the item .RE .PP \fBm\fR .RS 4 Print the description of the item .RE .PP \fBn\fR .RS 4 Print the name of the note file belonging to the item .RE .PP \fBN\fR .RS 4 Print the note belonging to the item .RE .SS "Examples" .PP \fBcalcurse \-r7 \-\-format\-apt=\*(Aq\- %S \-> %E\en\et%m\en%N\*(Aq\fR .RS 4 Print appointments and events for the next seven days\&. Also, print the notes attached to each regular appointment (simulates \fB\-N\fR for appointments)\&. .RE .PP \fBcalcurse \-r7 \-\-format\-apt=\*(Aq \- %m (%S to %E)\en\*(Aq \-\-format\-recur\-apt=\*(Aq \- %m (%S to %E)\en\*(Aq\fR .RS 4 Print appointments and events for the next seven days and use a custom format for (recurrent) appointments: * \- Some appointment (18:30 to 21:30)*\&. .RE .PP \fBcalcurse \-t \-\-format\-todo \*(Aq(%p) %m\en\*(Aq\fR .RS 4 List all todo items and put parentheses\&around the priority specifiers\&. .RE .SS "Extended format specifiers" .sp Extended format specifiers can be used if you want to specify advanced formatting options\&. Extended specifiers are introduced by \fB%(\fR and are terminated by a closing parenthesis (\fB)\fR)\&. The following list includes all short specifiers and corresponding long options: .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fBs\fR: \fB(start)\fR .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fBS\fR: \fB(start:epoch)\fR .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fBd\fR: \fB(duration)\fR .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fBe\fR: \fB(end)\fR .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fBE\fR: \fB(end:epoch)\fR .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fBm\fR: \fB(message)\fR .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fBn\fR: \fB(noteid)\fR .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fBN\fR: \fB(note)\fR .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fBp\fR: \fB(priority)\fR .RE .sp The \fB(start)\fR and \fB(end)\fR specifiers support strftime()\-style extended formatting options that can be used for fine\-grained formatting\&. Additionally, the special formats \fBepoch\fR (which is equivalent to \fB(start:%s)\fR or \fB(end:%s)\fR) and \fBdefault\fR (which is mostly equivalent to \fB(start:%H:%M)\fR or \fB(end:%H:%M)\fR but displays \fB\&.\&.:\&.\&.\fR if the item doesn\(cqt start/end at the current day) are supported\&. .SH "NOTES" .sp Calcurse interface contains three different panels (calendar, appointment list, and todo list) on which you can perform different actions\&. All the possible actions, together with their associated keystrokes, are listed on the status bar\&. This status bar takes place at the bottom of the screen\&. .sp At any time, the built\-in help system can be invoked by pressing the \fI?\fR key\&. Once viewing the help screens, informations on a specific command can be accessed by pressing the keystroke corresponding to that command\&. .SH "CONFIGURATION" .sp The calcurse options can be changed from the configuration menu (shown when \fIC\fR is hit)\&. Five possible categories are to be chosen from : the color scheme, the layout (the location of the three panels on the screen), notification options, key bindings configuration menu, and more general options (such as automatic save before quitting)\&. All of these options are detailed in the configuration menu\&. .SH "FILES" .sp The following structure is created in your $HOME directory (or in the directory you specified with the \fB\-D\fR option), the first time calcurse is run: .sp .if n \{\ .RS 4 .\} .nf $HOME/\&.calcurse/ |___notes/ |___conf |___keys |___apts |___todo .fi .if n \{\ .RE .\} .sp The \fInotes\fR subdirectory contains descriptions of the notes which are attached to appointments, events or todos\&. One text file is created per note, whose name is built using mkstemp(3) and should be unique, but with no relation with the corresponding item\(cqs description\&. .sp The \fIconf\fR file contains the user configuration\&. The \fIkeys\fR file contains the user\-defined key bindings\&. The \fIapts\fR file contains all of the user\(cqs appointments and events, and the \fItodo\fR file contains the todo list\&. .sp \fINote:\fR if the logging of calcurse daemon activity was set in the notification configuration menu, the extra file \fIdaemon\&.log\fR will appear in calcurse data directory\&. This file contains logs about calcurse activity when running in background\&. .SH "ENVIRONMENT" .sp This section describes the environment variables that affect how calcurse operates\&. .PP \fBVISUAL\fR .RS 4 Specifies the external editor to use for writing notes\&. .RE .PP \fBEDITOR\fR .RS 4 If the \fIVISUAL\fR environment variable is not set, then \fIEDITOR\fR will be used as the default external editor\&. If none of those variables are set, then \fI/usr/bin/vi\fR is used instead\&. .RE .PP \fBPAGER\fR .RS 4 Specifies the default viewer to be used for reading notes\&. If this variable is not set, then \fI/usr/bin/less\fR is used\&. .RE .SH "BUGS" .sp Incorrect highlighting of items appear when using calcurse black and white theme together with a \fB$TERM\fR variable set to \fIxterm\-color\fR\&. To fix this bug, and as advised by Thomas E\&. Dickey (xterm maintainer), \fIxterm\-xfree86\fR should be used instead of \fIxterm\-color\fR to set the \fB$TERM\fR variable: .sp .if n \{\ .RS 4 .\} .nf "The xterm\-color value for $TERM is a bad choice for XFree86 xterm because it is commonly used for a terminfo entry which happens to not support bce\&. Use the xterm\-xfree86 entry which is distributed with XFree86 xterm (or the similar one distributed with ncurses)\&." .fi .if n \{\ .RE .\} .sp If you find other bugs, please send a report to bugs@calcurse\&.org or to one of the authors, below\&. .SH "SEE ALSO" .sp vi(1), less(1), ncurses(3), mkstemp(3) .sp The ical specification (rfc2445) can be found at: http://tools\&.ietf\&.org/html/rfc2445 .sp The pcal project page: http://pcal\&.sourceforge\&.net/ .sp Calcurse home page: http://calcurse\&.org/ .sp Calcurse complete manual, translated in many languages and maintained in html format, can be found in the doc/ directory of the source package, or at: http://calcurse\&.org/files/manual\&.html .SH "AUTHORS" .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fBFrederic Culot\fR .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fBLukas Fleischer\fR .RE .SH "COPYRIGHT" .sp Copyright (c) 2004\-2013 calcurse Development Team\&. This software is released under the BSD License\&. calcurse-3.1.4/doc/submitting-patches.txt0000644000175000001440000001423312105444321015354 00000000000000//// /* * Copyright (c) 2004-2013 calcurse Development Team * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * - Redistributions of source code must retain the above * copyright notice, this list of conditions and the * following disclaimer. * * - Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the * following disclaimer in the documentation and/or other * materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ //// CALCURSE - Submitting Patches ============================= This is a short summary of guidelines you should try to follow when submitting patches to calcurse. Fetching the most recent source ------------------------------- The whole source code currently is under version control using Git as VCS. You can retrieve a local copy of the development tree using: ---- $ git clone git://git.calcurse.org/calcurse.git ---- This will create a new directory `calcurse` that contains the cloned repository. If you want to follow the maintenance branch (`maint`) as well (e.g. to create a bug fix), setting up a tracking branch is recommended: ---- $ git branch -t maint origin/maint ---- Creating a working branch ------------------------- Whenever you want to work on a new feature, do it in a separate branch. Having diverging commits in the `master` branch might cause conflicts when pulling in new changes. Thus, creating a new development branch *before* doing any changes is good practice. And even before doing that, you should update the master branch of your working copy: ---- $ git checkout master $ git pull origin master $ git checkout -b wip ---- You can replace `wip` by any name you like. Maintenance patches such as bug fixes and stability improvements should be based on the `maint` branch instead: ---- $ git checkout maint $ git pull origin maint $ git checkout -b wip-maint ---- Committing the changes ---------------------- Edit files in the source tree and test your changes. When everything seems to be fine, you're ready to commit to your local working tree: ---- $ git commit -as ---- If you added or removed files, you probably need to run `git add` or `git rm` before committing so that Git is aware of them. If you work on more than a small bug fix, you should split your work into several commits. Try to keep your commits small and focused. Smaller patches are way easier to review and have a better chance of being included in mainline development. Also try to make your commit messages brief and descriptive. The first line of the commit message should be a short description (not more than 50 characters) and should use imperative, present tense. If there are details that cannot be expressed in these size constraints, put them in separate text paragraphs separated by blank lines and wrapped to 72 columns. If you use Vim, `gitcommit.vim` will do most of the job for you. Here's a sample commit message: ---- Invoke vars_init() before importing data with "-i" We forgot to call vars_init() when importing an item using the "-i" command line argument, which led to the pager configuration variable being unset and hence the pager invocation (triggered to show the log in case there are any errors during import) failing. Fix this by calling vars_init() before io_import_data(). Reported-by: Andraž 'ruskie' Levstik Signed-off-by: Lukas Fleischer ---- The `-s` in the `git commit` invocation makes Git add a "Signed-off-by" line to credit yourself and to confirm that your contribution was created in whole or in part by you and you have the right to submit it under the BSD license. Please do not remove that line when editing the commit message. Creating a patch series ----------------------- As soon as you finished all your work, test everything again and create a patch series: ---- $ git format-patch master ---- Replace `master` by `maint` if your development branch is based on the maintenance branch: ---- $ git format-patch maint ---- Submitting patches ------------------ Send your patch series to one of the mailing lists: ---- $ git send-email *.patch ---- The `bugs` mailing list should be used for bug fixes, `misc` should be used for everything else. You can also add a cover letter and/or add annotations to patches: ---- $ git send-email --cover-letter --annotate *.patch ---- Additional information on the particular patches, which shouldn't appear in the commit message itself, can be added immediately after the `---`. Importing patches ----------------- Git also provides a tool for importing a patch series submitted via `git send-email`. Just save all mails that contain patches into mbox files and use `git am` to apply them to your working branch: ---- $ git am ... ---- If you use mutt, you can also add following macro to apply the patch contained in the current mail to your local Git repository by pressing `A`: ---- set mbox_type=mbox set my_git_repo_path=$HOME/src/calcurse macro index,pager A "(cd $my_git_repo_path && git am)" ---- To setup different Git repositories per mailing list (in case you follow several different development lists), simply bind the macro to a `folder-hook` or to a `message-hook` and use different repository paths per hook. calcurse-3.1.4/doc/manual.html0000644000175000001440000026012512105444470013154 00000000000000 CALCURSE - text-based organizer

1. Abstract

This manual describes calcurse functionalities, and how to use them. The installation from source is first described, together with the available command line arguments. The user interface is then presented, with all of the customizable options that change calcurse behavior. Last, bug reporting procedure is explained, as well as the way one can contribute to calcurse development.

2. Introduction

calcurse is a text-based calendar and scheduling application. It helps keeping track of events, appointments and everyday tasks. A configurable notification system reminds user of upcoming deadlines, and the curses based interface can be customized to suit user needs. All of the commands are documented within an online help system.

3. Overview

3.1. Creation history

I started thinking about this project when I was finishing my Ph.D. in Astrophysics… It started to be a little hard to organize myself, and I really needed a good tool to help me in that difficult task ;)

I like programs which use Text User Interfaces, because they are simple, fast, portable and efficient, so I thought about working on coding a simple calendar using such an interface. Moreover, I wanted to go on learning the C language, which I only used for a while during my undergraduate studies. So I thought that would be the good project to start in order to get organized and to learn about a few C things !

Unfortunately, I finished my Ph.D. before finishing calcurse, but anyway, I still wanted to work on it, hoping it would be helpful to other people. So here it is…

But why calcurse anyway ? Well, it is simply the concatenation of CALendar and nCURSEs, the name of the library used to build the user interface.

3.2. Important features

Calcurse is multi-platform and intended to be lightweight, fast and reliable. It is to be used inside a console or terminal, locally or on a distant machine within an ssh (or similar) connection.

Calcurse can be run in two different modes : interactive or non-interactive mode. The first mode allows oneself to view its own personal organizer almost everywhere, thanks to the text-based interface. The second mode permits to easily build reminders just by adding calcurse with appropriate command line arguments inside a cron tab or within a shell init script.

Moreover, calcurse was created with the end-user in mind, and tends to be as friendly as possible. This means a complete on-line help system, together with having all of the possible actions displayed at any time inside a status bar. The user interface is configurable, and one can choose between several color and layout combinations. Key bindings are also configurable, to fit everyone’s needs. Last, a configurable notification system reminds user of upcoming appointments. The reminders are sent even if the user’s interface is not running, as calcurse is able to run in background.

4. Installation

4.1. Requirements

4.1.1. ncurses library

Calcurse requires only a C compiler, such as cc or gcc, and the ncurses library. It would be very surprising not to have a valid ncurses library already installed on your computer, but if not, you can find it at the following url: http://ftp.gnu.org/pub/gnu/ncurses/

Note It is also possible to link calcurse against the ncursesw library (ncurses with support for unicode).

4.1.2. gettext library

calcurse supports internationalization (i18n hereafter) through the gettext utilities. This means calcurse can produce multi-lingual messages if compiled with native language support (i.e. NLS).

However, NLS is optionnal and if you do not want to have support for multi-lingual messages, you can disable this feature. This is done by giving the --disable-nls option to configure (see section Install process). To check if the gettext utilities are installed on your system, you can search for the libintl.h header file for instance:

$ locate libintl.h

If this header file is not found, then you can obtain the gettext sources at the following url : http://ftp.gnu.org/pub/gnu/gettext/

Note Even if libintl.h is found on your system, it can be wise to specify its location during the install process, by using the --with-libintl-prefix option with configure. Indeed, the configure could fail to locate this library if installed in an uncommon place.

4.2. Install process

First you need to gunzip and untar the source archive:

$ tar zxvf calcurse-3.1.4.tar.gz

Once you meet the requirements and have extracted the archive, the install process is quite simple, and follows the standard three steps process:

$ ./configure
$ make
$ make install    # (may require root privilege)

Use ./configure --help to obtain a list of possible options.

5. calcurse basics

5.1. Invocation

5.1.1. Command line arguments

calcurse takes the following options from the command line (both short and long options are supported):

-a, --appointment

Print the appointments and events for the current day and exit. The calendar from which to read the appointments can be specified using the -c flag.

-c <file>, --calendar <file>

Specify the calendar file to use. The default calendar is ~/.calcurse/apts (see section calcurse files). This option has precedence over -D.

-d <date|num>, --day <date|num>

Print the appointments for the given date or for the given number of upcoming days, depending on the argument format. Two possible formats are supported:

  • a date (possible formats described below).

  • a number n.

In the first case, the appointment list for the specified date will be returned, while in the second case the appointment list for the n upcoming days will be returned. As an example, typing calcurse -d 3 will display your appointments for today, tomorrow, and the day after tomorrow. Possible formats for specifying the date are defined inside the general configuration menu (see General options), using the format.inputdate variable.

Note: as for the -a flag, the calendar from which to read the appointments can be specified using the -c flag.

-D <dir>, --directory <dir>

Specify the data directory to use. If not specified, the default directory is ~/.calcurse/.

--format-apt <format>

Specify a format to control the output of appointments in non-interactive mode. See the Format strings section for detailed information on format strings.

--format-recur-apt <format>

Specify a format to control the output of recurrent appointments in non-interactive mode. See the Format strings section for detailed information on format strings.

--format-event <format>

Specify a format to control the output of events in non-interactive mode. See the Format strings section for detailed information on format strings.

--format-recur-event <format>

Specify a format to control the output of recurrent events in non-interactive mode. See the Format strings section for detailed information on format strings.

--format-todo <format>

Specify a format to control the output of todo items in non-interactive mode. See the Format strings section for detailed information on format strings.

-g, --gc

Run the garbage collector for note files and exit.

-h, --help

Print a short help text describing the supported command-line options, and exit.

-i <file>, --import <file>

Import the icalendar data contained in file.

-n, --next

Print the next appointment within upcoming 24 hours and exit. The indicated time is the number of hours and minutes left before this appointment.

Note: the calendar from which to read the appointments can be specified using the -c flag.

-r[num], --range[=num]

Print events and appointments for the num number of days and exit. If no num is given, a range of 1 day is considered.

--read-only

Don’t save configuration nor appointments/todos.

Warning Use this this with care! If you run an interactive calcurse instance in read-only mode, all changes from this session will be lost without warning!
-s[date], --startday[=date]

Print events and appointments from date and exit. If no date is given, the current day is considered.

-S<regex>, --search=<regex>

When used with the -a, -d, -r, -s, or -t flag, print only the items having a description that matches the given regular expression.

--status

Display the status of running instances of calcurse. If calcurse is running, this will tell if the interactive mode was launched or if calcurse is running in background. The process pid will also be indicated.

-t[num], --todo[=num]

Print the todo list and exit. If the optional number num is given, then only todos having a priority equal to num will be returned. The priority number must be between 1 (highest) and 9 (lowest). It is also possible to specify 0 for the priority, in which case only completed tasks will be shown.

-v, --version

Display calcurse version and exit.

-x[format], --export[=format]

Export user data to specified format. Events, appointments and todos are converted and echoed to stdout. Two possible formats are available: ical and pcal (see section Links below). If the optional argument format is not given, ical format is selected by default.

Note: redirect standard output to export data to a file, by issuing a command such as:

$ calcurse --export > my_data.dat
Note The -N option has been removed in calcurse 3.0.0. See the Format strings section on how to print note along with appointments and events.

5.1.2. Format strings

Format strings are composed of printf()-style format specifiers — ordinary characters are copied to stdout without modification. Each specifier is introduced by a % and is followed by a character which specifies the field to print. The set of available fields depends on the item type.

Format specifiers for appointments
s

Print the start time of the appointment as UNIX time stamp

S

Print the start time of the appointment using the hh:mm format

d

Print the duration of the appointment in seconds

e

Print the end time of the appointment as UNIX time stamp

E

Print the end time of the appointment using the hh:mm format

m

Print the description of the item

n

Print the name of the note file belonging to the item

N

Print the note belonging to the item

Format specifiers for events
m

Print the description of the item

n

Print the name of the note file belonging to the item

N

Print the note belonging to the item

Format specifiers for todo items
p

Print the priority of the item

m

Print the description of the item

n

Print the name of the note file belonging to the item

N

Print the note belonging to the item

Examples
calcurse -r7 --format-apt='- %S -> %E\n\t%m\n%N'

Print appointments and events for the next seven days. Also, print the notes attached to each regular appointment (simulates -N for appointments).

calcurse -r7 --format-apt=' - %m (%S to %E)\n' --format-recur-apt=' - %m (%S to %E)\n'

Print appointments and events for the next seven days and use a custom format for (recurrent) appointments: ` - Some appointment (18:30 to 21:30)`.

calcurse -t --format-todo '(%p) %m\n'

List all todo items and put parentheses around the priority specifiers.

Extended format specifiers

Extended format specifiers can be used if you want to specify advanced formatting options. Extended specifiers are introduced by %( and are terminated by a closing parenthesis ()). The following list includes all short specifiers and corresponding long options:

  • s: (start)

  • S: (start:epoch)

  • d: (duration)

  • e: (end)

  • E: (end:epoch)

  • m: (message)

  • n: (noteid)

  • N: (note)

  • p: (priority)

The (start) and (end) specifiers support strftime()-style extended formatting options that can be used for fine-grained formatting. Additionally, the special formats epoch (which is equivalent to (start:%s) or (end:%s)) and default (which is mostly equivalent to (start:%H:%M) or (end:%H:%M) but displays ..:.. if the item doesn’t start/end at the current day) are supported.

5.1.3. Environment variable for i18n

calcurse can be compiled with native language support (see gettext library). Thus, if you wish to have messages displayed into your native language, first make sure it is available by looking at the po/LINGUAS file. This file indicates the set of available languages by showing the two-letters corresponding code (for exemple, fr stands for french). If you do not find your language, it would be greatly appreciated if you could help translating calcurse (see the How to contribute? section).

If your language is available, run calcurse with the following command:

$ LC_ALL=fr_FR calcurse
  1. where fr_FR is the locale name in this exemple, but should be replaced by the locale corresponding to the desired language.

You should also specify the charset to be used, because in some cases the accents and such are not displayed correctly. This charset is indicated at the beginning of the po file corresponding to the desired language. For instance, you can see in the fr.po file that it uses the iso-8859-1 charset, so you could run calcurse using the following command:

$ LC_ALL=fr_FR.ISO8859-1 calcurse

5.1.4. Other environment variables

The following environment variables affect the way calcurse operates:

VISUAL

Specifies the external editor to use for writing notes.

EDITOR

If the VISUAL environment variable is not set, then EDITOR will be used as the default external editor. If none of those variables are set, then /usr/bin/vi is used instead.

PAGER

Specifies the default viewer to be used for reading notes. If this variable is not set, then /usr/bin/less is used.

5.2. User interface

5.2.1. Non-interactive mode

When called with at least one of the following arguments: -a, -d, -h, -n, -t, -v, -x, calcurse is started in non-interactive mode. This means the desired information will be displayed, and after that, calcurse simply quits and you are driven back to the shell prompt.

That way, one can add a line such as calcurse --todo --appointment in its init config file to display at logon the list of tasks and appointments scheduled for the current day.

5.2.2. Interactive mode

Note Key bindings that are indicated in this manual correspond to the default ones, defined when calcurse is launched for the first time. If those key bindings do not suit user’s needs, it is possible to change them within the keys configuration menu (see key bindings).

When called without any argument or only with the -c option, calcurse is started in interactive mode. In this mode, you are shown an interface containing three different panels which you can browse using the TAB key, plus a notification bar and a status bar (see figure below).

 appointment panel---.                                   .---calendar panel
                     |                                   |
                     v                                   v
 +------------------------------------++----------------------------+
 |          Appointments              ||          Calendar          |
 |------------------------------------||----------------------------|
 |                 (|)  April 6, 2006 ||         April 2006         |
 |                                    ||Mon Tue Wed Thu Fri Sat Sun |
 |                                    ||                      1   2 |
 |                                    ||  3   4   5   6   7   8   9 |
 |                                    || 10  11  12  13  14  15  16 |
 |                                    || 17  18  19  20  21  22  23 |
 |                                    || 24  25  26  27  28  29  30 |
 |                                    ||                            |
 |                                    |+----------------------------+
 |                                    |+----------------------------+
 |                                    ||            ToDo            | todo
 |                                    ||----------------------------| panel
 |                                    ||                            |   |
 |                                    ||                            |   |
 |                                    ||                            |<--.
 |                                    ||                            |
 +------------------------------------++----------------------------+
 |---[ Mon 2006-11-22 | 10:11:43 ]---(apts)----> 01:20 :: lunch <---|<--.
 +------------------------------------------------------------------+ notify-bar
 | ? Help     R Redraw    H/L -/+1 Day      G GoTo       C Config   |
 | Q Quit     S Save      J/K -/+1 Week   Tab Chg View              |<-.
 +------------------------------------------------------------------+  |
                                                                       |
                                                                 status bar

The first panel represents a calendar which allows to highlight a particular day, the second one contains the list of the events and appointments on that day, and the last one contains a list of tasks to do but which are not assigned to any specific day.

Depending on the selected view, the calendar could either display a monthly (default as shown in previous figure) or weekly view. The weekly view would look like the following:

+------------------------------------+
|              Calendar              |
|----------------------------(# 13)--|
|    Mon Tue Wed Thu Fri Sat Sun     |
|     29  30  31  01  02  03  04     |
|                               <----+--  slice 1: 00:00 to 04:00 AM
|       --  --  --  --  --  --       |
|                               <----+--  slice 2: 04:00 to 08:00 AM
|       --  --  --  --  --  --       |
|                               <----+--  slice 3: 08:00 to 12:00 AM
|    -  --  --  --  --  --  --  -  <-+--  midday
|                               <----+--  slice 4: 12:00 to 04:00 PM
|       --  --  --  --  --  --       |
|                               <----+--  slice 5: 04:00 to 08:00 PM
|       --  --  --  --  --  --       |
|                               <----+--  slice 6: 08:00 to 12:00 PM
+------------------------------------+

The current week number is displayed on the top-right side of the panel (# 13 meaning it is the 13th week of the year in the above example). The seven days of the current week are displayed in column. Each day is divided into slices of 4 hours each (6 slices in total, see figure above). A slice will appear in a different color if an appointment falls into the corresponding time-slot.

In the appointment panel, one can notice the (|) sign just in front of the date. This indicates the current phase of the moon. Depending on which is the current phase, the following signs can be seen:

` |) `

first quarter

` (|) `

full moon

` (| `

last quarter

` | `

new moon

no sign

Phase of the moon does not correspond to any of the above ones.

At the very bottom of the screen there is a status bar, which indicates the possible actions and the corresponding keystrokes.

Just above this status bar is the notify-bar, which indicates from left to right : the current date, the current time, the calendar file currently in use (apts on the above example, which is the default calendar file, see the following section), and the next appointment within the upcoming 24 hours. Here it says that it will be lunch time in one hour and twenty minutes.

Note Some actions, such as editing or adding an item, require to type in some text. This is done with the help of the built-in input line editor.

Within this editor, if a line is longer than the screen width, a >, *, or < character is displayed in the last column indicating that there are more character after, before and after, or before the current position, respectively. The line is scrolled horizontally as necessary.

Moreover, some editing commands are bound to particular control characters. Hereafter are indicated the available editing commands (^ stands for the control key):

^a

moves the cursor to the beginning of the input line

^b

moves the cursor backward

^d

deletes one character forward

^e

moves the cursor to the end of the input line

^f

moves the cursor forward

^h

deletes one character backward

^k

deletes the input from the cursor to the end of the line

^w

deletes backward to the beginning of the current word

ESCAPE

cancels the editing

5.3. Background mode

When the daemon mode is enabled in the notification configuration menu (see Notify-bar settings), calcurse will stay in background when the user interface is not running. In background mode, calcurse checks for upcoming appointments and runs the user-defined notification command when necessary. When the user interface is started again, the daemon automatically stops.

‘calcurse` background activity can be logged (set the daemon.log variable in the notification configuration menu), and in that case, information about the daemon start and stop time, reminders’ command launch time, signals received… will be written in the daemon.log file (see section files).

Using the --status command line option (see section Command line arguments), one can know if calcurse is currently running in background or not. If the daemon is running, a message like the following one will be displayed (the pid of the daemon process will be shown):

calcurse is running in background (pid 14536)
Note To stop the daemon, just send the TERM signal to it, using a command such as: kill daemon_pid, where daemon_pid is the process id of the daemon (14536 in the above example).

5.4. calcurse files

The following structure is created in your $HOME directory (or in the directory you specified with the -D option) the first time calcurse is run :

$HOME/.calcurse/
           |___notes/
           |___conf
           |___keys
           |___apts
           |___todo
notes/

this subdirectory contains descriptions of the notes which are attached to appointments, events or todos. Since the file name of each note file is a SHA1 hash of the note itself, multiple items can share the same note file. calcurse provides a garbage collector (see the -g command line parameter) that can be used to remove note files which are no longer linked to any item.

conf

this file contains the user configuration

keys

this file contains the user-defined key bindings

apts

this file contains all of the events and user’s appointments

todo

this file contains the todo list

Note If the logging of calcurse daemon activity was set in the notification configuration menu, the extra file daemon.log will appear in calcurse data directory. This file contains logs about calcurse activity when running in background.

5.5. Import/Export capabilities

The import and export capabilities offered by calcurse are described below.

5.5.1. Import

Data in icalendar format as described in the rfc2445 specification (see links section below) can be imported into calcurse. Calcurse ical parser is based on version 2.0 of this specification, but for now on, only a subset of it is supported.

The following icalendar properties are handled by calcurse:

  • VTODO items: "PRIORITY", "VALARM", "SUMMARY", "DESCRIPTION"

  • VEVENT items: "DTSTART", "DTEND", "DURATION", "RRULE", "EXDATE", "VALARM", "SUMMARY", "DESCRIPTION"

The icalendar DESCRIPTION property will be converted into calcurse format by adding a note to the item. If a "VALARM" property is found, the item will be flagged as important and the user will get a notification (this is only applicable to appointments).

Here are the properties that are not implemented:

  • negative time durations are not taken into account (item is skipped)

  • some recurence frequences are not recognize: "SECONDLY" / "MINUTELY" / "HOURLY"

  • some recurrence keywords are not recognized (all those starting with BY): "BYSECOND" / "BYMINUTE" / "BYHOUR" / "BYDAY" / "BYMONTHDAY" / "BYYEARDAY" / "BYWEEKNO" / "BYMONTH" / "BYSETPOS" plus "WKST"

  • the recurrence exception keyword "EXRULE" is not recognized

  • timezones are not taken into account

5.5.2. Export

Two possible export formats are available: ical and pcal (see section Links below to find out about those formats).

5.6. Online help

At any time, the built-in help system can be invoked by pressing the ? key. Once viewing the help screens, informations on a specific command can be accessed by pressing the keystroke corresponding to that command.

6. Options

All of the calcurse parameters are configurable from the Configuration menu available when pressing C. You are then driven to a submenu with five possible choices : pressing C again will lead you to the Color scheme configuration, pressing L allows you to choose the layout of the main calcurse screen (in other words, where to put the three different panels on screen), pressing G permits you to choose between different general options, pressing K opens the key bindings configuration menu, and last you can modify the notify-bar settings by pressing N.

6.1. General options

These options control calcurse general behavior, as described below:

general.autosave (default: yes)

This option allows to automatically save the user’s data (if set to yes) when quitting. <p class="rq"><span class="valorise">warning:</span> No data will be automatically saved if general.autosave is set to no. This means the user must press S (for saving) in order to retrieve its modifications.

general.autogc (default: no)

Automatically run the garbage collector for note files when quitting.

general.periodicsave (default: 0)

If different from 0, user’s data will be automatically saved every general.periodicsave minutes. When an automatic save is performed, two asterisks (i.e. **) will appear on the top right-hand side of the screen).

general.confirmquit (default: yes)

If set to yes, confirmation is required before quitting, otherwise pressing Q will cause calcurse to quit without prompting for user confirmation.

general.confirmdelete (default: yes)

If this option is set to yes, pressing D for deleting an item (either a todo, appointment, or event), will lead to a prompt asking for user confirmation before removing the selected item from the list. Otherwise, no confirmation will be needed before deleting the item.

general.systemdialogs (default: yes)

Setting this option to no will result in skipping the system dialogs related to the saving and loading of data. This can be useful to speed up the input/output processes.

general.progressbar (default: yes)

If set to no, this will cause the disappearing of the progress bar which is usually shown when saving data to file. If set to yes, this bar will be displayed, together with the name of the file being saved (see section calcurse files).

appearance.calendarview (default: 0)

If set to 0, the monthly calendar view will be displayed by default otherwise it is the weekly view that will be displayed.

general.firstdayofweek (default: monday)

One can choose between Monday and Sunday as the first day of the week. If general.firstdayofweek is set to monday, Monday will be first in the calendar view. Otherwise, Sunday will be the first day of the week.

format.outputdate (default: %D)

This option indicates the format to be used when displaying dates in non-interactive mode. Using the default values, dates are displayed the following way: mm/dd/aa. You can see all of the possible formats by typing man 3 strftime inside a terminal.

format.inputdate (default: 1)

This option indicates the format that will be used to enter dates in calcurse. Four choices are available:

  1. mm/dd/yyyy

  2. dd/mm/yyyy

  3. yyyy/mm/dd

  4. yyyy-mm-dd

6.2. Key bindings

One can define ones own key bindings within the Keys configuration menu. The default keys look like the one used by the vim editor, especially the displacement keys. Anyway, within this configuration menu, users can redefine all of the keys available from within calcurse’s user interface.

To define new key bindings, first highlight the action to which it will apply. Then, delete the actual key binding if necessary, and add a new one. You will then be asked to press the key corresponding to the new binding. It is possible to define more than one key binding for a single action.

An automatic check is performed to see if the new key binding is not already set for another action. In that case, you will be asked to choose a different one. Another check is done when exiting from this menu, to make sure all possible actions have a key associated with it.

The following keys can be used to define bindings:

  • lower-case, upper-case letters and numbers, such as a, Z, 0

  • CONTROL-key followed by one of the above letters

  • escape, horizontal tab, and space keys

  • arrow keys (up, down, left, and right)

  • HOME and END keys

While inside the key configuration menu, an online help is available for each one of the available actions. This help briefly describes what the highlighted action is used for.

Note As of calcurse 3.0.0, displacement commands can be preceded by an optional number to repeat the command. For example, 10k will move the cursor ten weeks forwards if you use default key bindings.

6.3. Color themes

calcurse color theme can be customized to suit user’s needs. To change the default theme, the configuration page displays possible choices for foreground and background colors. Using arrows or calcurse displacement keys to move, and X or space to select a color, user can preview the theme which will be applied. It is possible to keep the terminal’s default colors by selecting the corresponding choice in the list.

The chosen color theme will then be applied to the panel borders, to the titles, to the keystrokes, and to general informations displayed inside status bar. A black and white theme is also available, in order to support non-color terminals.

Note Depending on your terminal type and on the value of the $TERM environment variable, color could or could not be supported. An error message will appear if you try to change colors whereas your terminal does not support this feature. If you do know your terminal supports colors but could not get calcurse to display them, try to set your $TERM variable to another value (such as xterm-xfree86 for instance).

6.4. Layout configuration

The layout corresponds to the position of the panels inside calcurse screen. The default layout makes the calendar panel to be displayed on the top-right corner of the terminal, the todo panel on the bottom-right corner, while the appointment panel is displayed on the left hand-side of the screen (see the figure in section Interactive mode for an example of the default layout). By choosing another layout in the configuration screen, user can customize calcurse appearance to best suit his needs by placing the different panels where needed.

The following option is used to modify the layout configuration:

appearance.layout (default: 0)

Eight different layouts are to be chosen from (see layout configuration screen for the description of the available layouts).

6.5. Sidebar configuration

The sidebar is the part of the screen which contains two panels: the calendar and, depending on the chosen layout, either the todo list or the appointment list.

The following option is used to change the width of the sidebar:

appearance.sidebarwidth (default: 0)

Width (in percentage, 0 being the minimum width) of the side bar.

6.6. Notify-bar settings

The following options are used to modify the notify-bar behavior:

appearance.notifybar (default: yes)

This option indicates if you want the notify-bar to be displayed or not.

format.notifydate (default: %a %F)

With this option, you can specify the format to be used to display the current date inside the notification bar. You can see all of the possible formats by typing man 3 strftime inside a terminal.

format.notifytime (default: %T)

With this option, you can specify the format to be used to display the current time inside the notification bar. You can see all of the possible formats by typing man 3 strftime inside a terminal.

notification.warning (default: 300)

When there is an appointment which is flagged as important within the next notification.warning seconds, the display of that appointment inside the notify-bar starts to blink. Moreover, the command defined by the notification.command option will be launched. That way, the user is warned and knows there will be soon an upcoming appointment.

notification.command (default: printf \a)

This option indicates which command is to be launched when there is an upcoming appointment flagged as important. This command will be passed to the user’s shell which will interpret it. To know what shell must be used, the content of the $SHELL environment variable is used. If this variable is not set, /bin/sh is used instead.

Say the mail command is available on the user’s system, one can use the following command to get notified by mail of an upcoming appointment (the appointment description will also be mentioned in the mail body):

$ calcurse --next | mail -s "[calcurse] upcoming appointment!" user@host.com
notification.notifyall (default: no)

Invert the sense of flagging an appointment as important. If this is enabled, all appointments will be notified - except for flagged ones.

daemon.enable (default: no)

If set to yes, daemon mode will be enabled, meaning calcurse will run into background when the user’s interface is exited. This will allow the notifications to be launched even when the interface is not running. More details can be found in section Background mode.

daemon.log (default: no)

If set to yes, calcurse daemon activity will be logged (see section files).

7. Known bugs

Incorrect highlighting of items appear when using calcurse black and white theme together with a $TERM variable set to xterm-color. To fix this bug, and as advised by Thomas E. Dickey (xterm maintainer), xterm-xfree86 should be used instead of xterm-color to set the $TERM variable:

"The xterm-color value for $TERM is a bad choice for XFree86 xterm because it is commonly used for a terminfo entry which happens to not support bce. Use the xterm-xfree86 entry which is distributed with XFree86 xterm (or the similar one distributed with ncurses)."

8. Reporting bugs and feedback

Please send bug reports and feedback to: misc .at. calcurse .dot. org.

9. How to contribute?

If you would like to contribute to the project, you can first send your feedback on what you like or dislike, and if there are features you miss in calcurse. For now on, possible contributions concern the translation of calcurse messages and documentation.

9.1. Translating documentation

Note We recently dropped all translations of the manual files from the distribution tarball. There are plan to reintroduce them in form of a Wiki on the calcurse website. Please follow the mailing lists for up-to-date information.

The doc/ directory of the source package already contains translated version of calcurse manual. However, if the manual is not yet available into your native language, it would be appreciated if you could help translating it.

To do so, just copy one of the existing manual file to manual_XX.html, where XX identifies your language. Then translate this newly created file and send it to the author (see Reporting bugs and feeback), so that it can be included in the next calcurse release.

9.2. calcurse i18n

As already mentioned, gettext utilities are used by calcurse to produce multi-lingual messages. We are currently using Transifex to manage those translations.

This section provides informations about how to translate those messages into your native language. However, this howto is deliberately incomplete, focusing on working with gettext for calcurse specifically. For more comprehensive informations or to grasp the Big Picture of Native Language Support, you should refer to the GNU gettext manual at: http://www.gnu.org/software/gettext/manual/

Important Since we switched to Transifex, editing po files is not necessary anymore as Transifex provides a user-friendly, intuitive web interface for translators. Knowledge of gettext and the po format is still useful for those of you who prefer the command line and local editing. If you want to use the web UI to edit the translation strings, you can skip over to Using the Transifex web UI tough.

Basically, three different people get involved in the translation chain: coders, language coordinator, and translators. After a quick overview of how things work, the translator tasks will be described hereafter.

9.2.1. Overview

To be able to display texts in the native language of the user, two steps are required: internationalization (i18n) and localization (l10n).

i18n is about making calcurse support multiple languages. It is performed by coders, who will mark translatable texts and provide a way to display them translated at runtime.

l10n is about making the i18n’ed calcurse adapt to the specific language of the user, ie translating the strings previously marked by the developers, and setting the environment correctly for calcurse to use the result of this translation.

So, translatable strings are first marked by the coders within the C source files, then gathered in a template file (calcurse.pot - the pot extension meaning portable object template). The content of this template file is then merged with the translation files for each language (fr.po for French, for instance - with po standing for portable object, ie meant to be read and edited by humans). A given translation team will take this file, translate its strings, and send it back to the developers. At compilation time, a binary version of this file (for efficiency reasons) will be produced (fr.mo - mo stands for machine object, i.e. meant to be read by programs), and then installed. Then calcurse will use this file at runtime, translating the strings according to the locale settings of the user.

9.2.2. Translator tasks

Suppose someone wants to initiate the translation of a new language. Here are the steps to follow:

  • First, find out what the locale name is. For instance, for french, it is fr_FR, or simply fr. This is the value the user will have to put in his LC_ALL environment variable for software to be translated (see Environment variable for i18n).

  • Then, go into the po/ directory, and create a new po-file from the template file using the following command: msginit -i calcurse.pot -o fr.po -l fr --no-translator If you do not have msginit installed on your system, simply copy the calcurse.pot file to fr.po and edit the header by hand.

Now, having this fr.po file, the translator is ready to begin.

9.2.3. po-files

The format of the po-files is quite simple. Indeed, po-files are made of four things:

  1. location lines: tells you where the strings can be seen (name of file and line number), in case you need to see a bit of context.

  2. msgid lines: the strings to translate.

  3. msgstr lines: the translated strings.

  4. lines prefixed with #: comments (some with a special meaning, as we will see below).

Basically, all you have to do is fill the msgstr lines with the translation of the above msgid line.

A few notes:

Fuzzy strings

You will meet strings marked with a "#, fuzzy" comment. calcurse won’t use the translations of such strings until you do something about them. A string being fuzzy means either that the string has already been translated but has since been changed in the sources of the program, or that this is a new string for which gettext made a wild guess for the translation, based on other strings in the file. It means you have to review the translation. Sometimes, the original string has changed just because a typo has been fixed. In this case, you won’t have to change anything. But sometimes, the translation will no longer be accurate and needs to be changed. Once you are done and happy with the translation, just remove the "#, fuzzy" line, and the translation will be used again in calcurse.

c-format strings and special sequences

Some strings have the following comment: "#, c-format". This tells that parts of the string to translate have a special meaning for the program, and that you should leave them alone. For instance, %-sequences, like "%s". These means that calcurse will replace them with another string. So it is important it remains. There are also \-sequences, like \n or \t. Leave them, too. The former represents an end of line, the latter a tabulation.

Translations can be wrapped

If lines are too long, you can just break them like this:

msgid ""
"some very long line"
"another line"
po-file header

At the very beginning of the po-file, the first string form a header, where various kind of information has to be filled in. Most important one is the charset. It should resemble

"Content-Type: text/plain; charset=utf-8\n"

You should also fill in the Last-Translator field, so that potential contributors can contact you if they want to join you in the translation team, or have remarks/typo fixes to give about the translations. You can either just give your name/nick, or add an email address, for exemple:

"Last-Translator: Frederic Culot <frederic@culot.org>\n"
Comments

Adding comments (lines begining with the # character) can be a good way to point out problems or translation difficulties to proofreaders or other members of your team.

Strings size

calcurse is a curses/console program, thus it can be heavily dependant on the terminal size (number of columns). You should think about this when translating. Often, a string must fit into a single line (standard length is 80 characters). Don’t translate blindly, try to look where your string will be displayed to adapt your translation.

A few useful tools

The po-file format is very simple, and the file can be edited with a standard text editor. But if you prefer, there are few specialized tools you may find convenient for translating:

And finally

I hope you’ll have fun contributing to a more internationalized world. :) If you have any more questions, don’t hesitate to contact us at misc .at. calcurse .dot. org.

9.2.4. Uploading to Transifex

There’s several different ways to upload a finished (or semi-finished) translation for a new language to Transifex. The easiest way is to browse to the Translation Teams page and request the addition of a new team.

As soon as we accepted your request, you will be able to upload your po file on the calcurse resource page by clicking the Add translation button at the bottom.

9.2.5. Using transifex-client

You can also use a command line client to submit translations instead of having to use the web interface every time you want to submit an updated version. If you have a recent version of setuptools installed, you can get the CLI client by issuing the following command:

$ easy_install -U transifex-client

Alternatively, you can get the source code of transifex-client at http://pypi.python.org/pypi/transifex-client.

After you downloaded and installed the client, run the following commands in the calcurse source directory to checkout the translation resources of calcurse:

$ tx pull -a

To submit changes back to the server, use:

$ tx push -r calcurse.calcursepot -t -l <locale>

For more details, read up on transifex-client usage at the The Transifex Command-line Client v0.4 section of the Transifex documentation.

9.2.6. Using the Transifex web UI

As an alternative to editing po files, there is a web-based interface that can be used to create and update translations. After having signed up and created a new translation team (see Uploading to Transifex on how to do that), click the Add translation button at the bottom on the calcurse resource page, select the language you’d like to translate and choose Translate Online.

This section contains links and references that may be of interest to you.

10.1. calcurse homepage

The calcurse homepage can be found at http://calcurse.org

10.2. calcurse announce list

If you are interested in the project and want to be warned when a new release comes out, you can subscribe to the calcurse announce list. In doing so, you will receive an email as soon as a new feature appears in calcurse.

To subscribe to this list, send a message to announce+subscribe .at. calcurse .dot. org with "subscribe" in the subject field.

You may want to look at the ical format specification (rfc2445) at: http://tools.ietf.org/html/rfc2445

The pcal project page can be found at: http://pcal.sourceforge.net/

11. Thanks

Its time now to thank other people without whom this program would not exist! So here is a list of contributing persons I would like to thank :

  • Alex for its patches, help and advices with C programming

  • Gwen for testing and general discussions about how to improve calcurse

  • Herbert for packaging calcurse for FreeBSD

  • Zul for packaging calcurse for NetBSD

  • Wain, Steffen and Ronald for packaging calcurse for Archlinux

  • Kevin, Ryan, and fEnIo for packaging calcurse for Debian and Ubuntu

  • Pascal for packaging calcurse for Slackware

  • Alexandre and Markus for packaging calcurse for Mac OsX and Darwin

  • Igor for packaging calcurse for ALT Linux

  • Joel for its calendar script which inspired calcurse calendar view

  • Jeremy Roon for the Dutch translation

  • Frédéric Culot, Toucouch, Erik Saule, Stéphane Aulery and Baptiste Jonglez for the French translation

  • Michael Schulz, Chris M., Benjamin Moeller and Lukas Fleischer for the German translation

  • Rafael Ferreira for the Portuguese (Brazil) translation

  • Aleksey Mechonoshin for the Russian translation

  • Jose Lopez for the Spanish translation

  • Tony for its patch which helped improving the recur_item_inday() function, and for implementing the date format configuration options

  • Erik Saule for its patch implementing the -N, -s, -S, -r and -D flags

  • people who write softwares I like and which inspired me, especially :

    • vim for the displacement keys

    • orpheus and abook for documentation

    • pine and aptitude for the text user interface

    • tmux for coding style

And last, many many thanks to all of the calcurse users who sent me their feedback.


calcurse-3.1.4/doc/manual.txt0000644000175000001440000014525512105444350013032 00000000000000//// /* * Copyright (c) 2004-2013 calcurse Development Team * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * - Redistributions of source code must retain the above * copyright notice, this list of conditions and the * following disclaimer. * * - Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the * following disclaimer in the documentation and/or other * materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ //// CALCURSE - text-based organizer =============================== Abstract -------- This manual describes `calcurse` functionalities, and how to use them. The installation from source is first described, together with the available command line arguments. The user interface is then presented, with all of the customizable options that change `calcurse` behavior. Last, bug reporting procedure is explained, as well as the way one can contribute to `calcurse` development. Introduction ------------ `calcurse` is a text-based calendar and scheduling application. It helps keeping track of events, appointments and everyday tasks. A configurable notification system reminds user of upcoming deadlines, and the curses based interface can be customized to suit user needs. All of the commands are documented within an online help system. Overview -------- Creation history ~~~~~~~~~~~~~~~~ I started thinking about this project when I was finishing my Ph.D. in Astrophysics... It started to be a little hard to organize myself, and I really needed a good tool to help me in that difficult task ;) I like programs which use Text User Interfaces, because they are simple, fast, portable and efficient, so I thought about working on coding a simple calendar using such an interface. Moreover, I wanted to go on learning the `C` language, which I only used for a while during my undergraduate studies. So I thought that would be the good project to start in order to get organized and to learn about a few `C` things ! Unfortunately, I finished my Ph.D. before finishing `calcurse`, but anyway, I still wanted to work on it, hoping it would be helpful to other people. So here it is... But why _calcurse_ anyway ? Well, it is simply the concatenation of _CALendar_ and _nCURSEs_, the name of the library used to build the user interface. Important features ~~~~~~~~~~~~~~~~~~ `Calcurse` is multi-platform and intended to be lightweight, fast and reliable. It is to be used inside a console or terminal, locally or on a distant machine within an ssh (or similar) connection. `Calcurse` can be run in two different modes : interactive or non-interactive mode. The first mode allows oneself to view its own personal organizer almost everywhere, thanks to the text-based interface. The second mode permits to easily build reminders just by adding `calcurse` with appropriate command line arguments inside a cron tab or within a shell init script. Moreover, `calcurse` was created with the end-user in mind, and tends to be as friendly as possible. This means a complete on-line help system, together with having all of the possible actions displayed at any time inside a status bar. The user interface is configurable, and one can choose between several color and layout combinations. Key bindings are also configurable, to fit everyone's needs. Last, a configurable notification system reminds user of upcoming appointments. The reminders are sent even if the user's interface is not running, as calcurse is able to run in background. Installation ------------ Requirements ~~~~~~~~~~~~ ncurses library ^^^^^^^^^^^^^^^ `Calcurse` requires only a `C` compiler, such as `cc` or `gcc`, and the `ncurses` library. It would be very surprising not to have a valid `ncurses` library already installed on your computer, but if not, you can find it at the following url: http://ftp.gnu.org/pub/gnu/ncurses/ NOTE: It is also possible to link `calcurse` against the `ncursesw` library (ncurses with support for unicode). [[install_requirements_gettext]] gettext library ^^^^^^^^^^^^^^^ `calcurse` supports internationalization (*i18n* hereafter) through the `gettext` utilities. This means `calcurse` can produce multi-lingual messages if compiled with native language support (i.e. *NLS*). However, *NLS* is optionnal and if you do not want to have support for multi-lingual messages, you can disable this feature. This is done by giving the `--disable-nls` option to `configure` (see section <>). To check if the `gettext` utilities are installed on your system, you can search for the `libintl.h` header file for instance: ---- $ locate libintl.h ---- If this header file is not found, then you can obtain the `gettext` sources at the following url : http://ftp.gnu.org/pub/gnu/gettext/ NOTE: Even if `libintl.h` is found on your system, it can be wise to specify its location during the <>, by using the `--with-libintl-prefix` option with `configure`. Indeed, the `configure` could fail to locate this library if installed in an uncommon place. [[install_process]] Install process ~~~~~~~~~~~~~~~ First you need to gunzip and untar the source archive: ---- $ tar zxvf calcurse-3.1.4.tar.gz ---- Once you meet the requirements and have extracted the archive, the install process is quite simple, and follows the standard three steps process: ---- $ ./configure $ make $ make install # (may require root privilege) ---- Use `./configure --help` to obtain a list of possible options. calcurse basics --------------- Invocation ~~~~~~~~~~ [[basics_invocation_commandline]] Command line arguments ^^^^^^^^^^^^^^^^^^^^^^ `calcurse` takes the following options from the command line (both short and long options are supported): `-a, --appointment`:: Print the appointments and events for the current day and exit. The calendar from which to read the appointments can be specified using the `-c` flag. `-c , --calendar `:: Specify the calendar file to use. The default calendar is `~/.calcurse/apts` (see section <>). This option has precedence over `-D`. `-d , --day `:: Print the appointments for the given date or for the given number of upcoming days, depending on the argument format. Two possible formats are supported: + -- * a date (possible formats described below). * a number `n`. -- + In the first case, the appointment list for the specified date will be returned, while in the second case the appointment list for the `n` upcoming days will be returned. As an example, typing `calcurse -d 3` will display your appointments for today, tomorrow, and the day after tomorrow. Possible formats for specifying the date are defined inside the general configuration menu (see <>), using the `format.inputdate` variable. + Note: as for the `-a` flag, the calendar from which to read the appointments can be specified using the `-c` flag. `-D , --directory `:: Specify the data directory to use. If not specified, the default directory is `~/.calcurse/`. `--format-apt `:: Specify a format to control the output of appointments in non-interactive mode. See the <> section for detailed information on format strings. `--format-recur-apt `:: Specify a format to control the output of recurrent appointments in non-interactive mode. See the <> section for detailed information on format strings. `--format-event `:: Specify a format to control the output of events in non-interactive mode. See the <> section for detailed information on format strings. `--format-recur-event `:: Specify a format to control the output of recurrent events in non-interactive mode. See the <> section for detailed information on format strings. `--format-todo `:: Specify a format to control the output of todo items in non-interactive mode. See the <> section for detailed information on format strings. `-g, --gc`:: Run the garbage collector for note files and exit. `-h, --help`:: Print a short help text describing the supported command-line options, and exit. `-i , --import `:: Import the icalendar data contained in `file`. `-n, --next`:: Print the next appointment within upcoming 24 hours and exit. The indicated time is the number of hours and minutes left before this appointment. + Note: the calendar from which to read the appointments can be specified using the `-c` flag. `-r[num], --range[=num]`:: Print events and appointments for the num number of days and exit. If no num is given, a range of 1 day is considered. `--read-only`:: Don't save configuration nor appointments/todos. + WARNING: Use this this with care! If you run an interactive calcurse instance in read-only mode, all changes from this session will be lost without warning! `-s[date], --startday[=date]`:: Print events and appointments from date and exit. If no date is given, the current day is considered. `-S, --search=`:: When used with the `-a`, `-d`, `-r`, `-s`, or `-t` flag, print only the items having a description that matches the given regular expression. `--status`:: Display the status of running instances of calcurse. If calcurse is running, this will tell if the interactive mode was launched or if calcurse is running in background. The process pid will also be indicated. `-t[num], --todo[=num]`:: Print the `todo` list and exit. If the optional number `num` is given, then only todos having a priority equal to `num` will be returned. The priority number must be between 1 (highest) and 9 (lowest). It is also possible to specify `0` for the priority, in which case only completed tasks will be shown. `-v, --version`:: Display `calcurse` version and exit. `-x[format], --export[=format]`:: Export user data to specified format. Events, appointments and todos are converted and echoed to stdout. Two possible formats are available: ical and pcal (see section <> below). If the optional argument `format` is not given, ical format is selected by default. + Note: redirect standard output to export data to a file, by issuing a command such as: + ---- $ calcurse --export > my_data.dat ---- NOTE: The `-N` option has been removed in calcurse 3.0.0. See the <> section on how to print note along with appointments and events. [[basics_format_strings]] Format strings ^^^^^^^^^^^^^^ Format strings are composed of printf()-style format specifiers -- ordinary characters are copied to stdout without modification. Each specifier is introduced by a `%` and is followed by a character which specifies the field to print. The set of available fields depends on the item type. Format specifiers for appointments ++++++++++++++++++++++++++++++++++ `s`:: Print the start time of the appointment as UNIX time stamp `S`:: Print the start time of the appointment using the `hh:mm` format `d`:: Print the duration of the appointment in seconds `e`:: Print the end time of the appointment as UNIX time stamp `E`:: Print the end time of the appointment using the `hh:mm` format `m`:: Print the description of the item `n`:: Print the name of the note file belonging to the item `N`:: Print the note belonging to the item Format specifiers for events ++++++++++++++++++++++++++++ `m`:: Print the description of the item `n`:: Print the name of the note file belonging to the item `N`:: Print the note belonging to the item Format specifiers for todo items ++++++++++++++++++++++++++++++++ `p`:: Print the priority of the item `m`:: Print the description of the item `n`:: Print the name of the note file belonging to the item `N`:: Print the note belonging to the item Examples ++++++++ `calcurse -r7 --format-apt='- %S -> %E\n\t%m\n%N'`:: Print appointments and events for the next seven days. Also, print the notes attached to each regular appointment (simulates `-N` for appointments). `calcurse -r7 --format-apt=' - %m (%S to %E)\n' --format-recur-apt=' - %m (%S to %E)\n'`:: Print appointments and events for the next seven days and use a custom format for (recurrent) appointments: ` - Some appointment (18:30 to 21:30)`. `calcurse -t --format-todo '(%p) %m\n'`:: List all todo items and put parentheses around the priority specifiers. Extended format specifiers ++++++++++++++++++++++++++ Extended format specifiers can be used if you want to specify advanced formatting options. Extended specifiers are introduced by `%(` and are terminated by a closing parenthesis (`)`). The following list includes all short specifiers and corresponding long options: * `s`: `(start)` * `S`: `(start:epoch)` * `d`: `(duration)` * `e`: `(end)` * `E`: `(end:epoch)` * `m`: `(message)` * `n`: `(noteid)` * `N`: `(note)` * `p`: `(priority)` The `(start)` and `(end)` specifiers support strftime()-style extended formatting options that can be used for fine-grained formatting. Additionally, the special formats `epoch` (which is equivalent to `(start:%s)` or `(end:%s)`) and `default` (which is mostly equivalent to `(start:%H:%M)` or `(end:%H:%M)` but displays `..:..` if the item doesn't start/end at the current day) are supported. [[basics_invocation_variable]] Environment variable for i18n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `calcurse` can be compiled with native language support (see <>). Thus, if you wish to have messages displayed into your native language, first make sure it is available by looking at the `po/LINGUAS` file. This file indicates the set of available languages by showing the two-letters corresponding code (for exemple, *fr* stands for french). If you do not find your language, it would be greatly appreciated if you could help translating `calcurse` (see the <> section). If your language is available, run `calcurse` with the following command: ---- $ LC_ALL=fr_FR calcurse ---- ... where *fr_FR* is the locale name in this exemple, but should be replaced by the locale corresponding to the desired language. You should also specify the charset to be used, because in some cases the accents and such are not displayed correctly. This charset is indicated at the beginning of the po file corresponding to the desired language. For instance, you can see in the fr.po file that it uses the iso-8859-1 charset, so you could run `calcurse` using the following command: ---- $ LC_ALL=fr_FR.ISO8859-1 calcurse ---- Other environment variables ^^^^^^^^^^^^^^^^^^^^^^^^^^^ The following environment variables affect the way `calcurse` operates: `VISUAL`:: Specifies the external editor to use for writing notes. `EDITOR`:: If the `VISUAL` environment variable is not set, then `EDITOR` will be used as the default external editor. If none of those variables are set, then `/usr/bin/vi` is used instead. `PAGER`:: Specifies the default viewer to be used for reading notes. If this variable is not set, then `/usr/bin/less` is used. User interface ~~~~~~~~~~~~~~ Non-interactive mode ^^^^^^^^^^^^^^^^^^^^ When called with at least one of the following arguments: `-a`, `-d`, `-h`, `-n`, `-t`, `-v`, `-x`, `calcurse` is started in non-interactive mode. This means the desired information will be displayed, and after that, `calcurse` simply quits and you are driven back to the shell prompt. That way, one can add a line such as `calcurse --todo --appointment` in its init config file to display at logon the list of tasks and appointments scheduled for the current day. [[basics_interface_interactive]] Interactive mode ^^^^^^^^^^^^^^^^ NOTE: Key bindings that are indicated in this manual correspond to the default ones, defined when `calcurse` is launched for the first time. If those key bindings do not suit user's needs, it is possible to change them within the keys configuration menu (see <>). When called without any argument or only with the `-c` option, `calcurse` is started in interactive mode. In this mode, you are shown an interface containing three different panels which you can browse using the `TAB` key, plus a notification bar and a status bar (see figure below). ---- appointment panel---. .---calendar panel | | v v +------------------------------------++----------------------------+ | Appointments || Calendar | |------------------------------------||----------------------------| | (|) April 6, 2006 || April 2006 | | ||Mon Tue Wed Thu Fri Sat Sun | | || 1 2 | | || 3 4 5 6 7 8 9 | | || 10 11 12 13 14 15 16 | | || 17 18 19 20 21 22 23 | | || 24 25 26 27 28 29 30 | | || | | |+----------------------------+ | |+----------------------------+ | || ToDo | todo | ||----------------------------| panel | || | | | || | | | || |<--. | || | +------------------------------------++----------------------------+ |---[ Mon 2006-11-22 | 10:11:43 ]---(apts)----> 01:20 :: lunch <---|<--. +------------------------------------------------------------------+ notify-bar | ? Help R Redraw H/L -/+1 Day G GoTo C Config | | Q Quit S Save J/K -/+1 Week Tab Chg View |<-. +------------------------------------------------------------------+ | | status bar ---- The first panel represents a calendar which allows to highlight a particular day, the second one contains the list of the events and appointments on that day, and the last one contains a list of tasks to do but which are not assigned to any specific day. Depending on the selected view, the calendar could either display a monthly (default as shown in previous figure) or weekly view. The weekly view would look like the following: ---- +------------------------------------+ | Calendar | |----------------------------(# 13)--| | Mon Tue Wed Thu Fri Sat Sun | | 29 30 31 01 02 03 04 | | <----+-- slice 1: 00:00 to 04:00 AM | -- -- -- -- -- -- | | <----+-- slice 2: 04:00 to 08:00 AM | -- -- -- -- -- -- | | <----+-- slice 3: 08:00 to 12:00 AM | - -- -- -- -- -- -- - <-+-- midday | <----+-- slice 4: 12:00 to 04:00 PM | -- -- -- -- -- -- | | <----+-- slice 5: 04:00 to 08:00 PM | -- -- -- -- -- -- | | <----+-- slice 6: 08:00 to 12:00 PM +------------------------------------+ ---- The current week number is displayed on the top-right side of the panel (*# 13* meaning it is the 13th week of the year in the above example). The seven days of the current week are displayed in column. Each day is divided into slices of 4 hours each (6 slices in total, see figure above). A slice will appear in a different color if an appointment falls into the corresponding time-slot. In the appointment panel, one can notice the *`(|)`* sign just in front of the date. This indicates the current phase of the moon. Depending on which is the current phase, the following signs can be seen: ` |) `:: first quarter ` (|) `:: full moon ` (| `:: last quarter ` | `:: new moon no sign:: Phase of the moon does not correspond to any of the above ones. At the very bottom of the screen there is a status bar, which indicates the possible actions and the corresponding keystrokes. Just above this status bar is the notify-bar, which indicates from left to right : the current date, the current time, the calendar file currently in use (apts on the above example, which is the default calendar file, see the following section), and the next appointment within the upcoming 24 hours. Here it says that it will be lunch time in one hour and twenty minutes. NOTE: Some actions, such as editing or adding an item, require to type in some text. This is done with the help of the built-in input line editor. Within this editor, if a line is longer than the screen width, a `>`, `*`, or `<` character is displayed in the last column indicating that there are more character after, before and after, or before the current position, respectively. The line is scrolled horizontally as necessary. Moreover, some editing commands are bound to particular control characters. Hereafter are indicated the available editing commands (`^` stands for the control key): `^a`:: moves the cursor to the beginning of the input line `^b`:: moves the cursor backward `^d`:: deletes one character forward `^e`:: moves the cursor to the end of the input line `^f`:: moves the cursor forward `^h`:: deletes one character backward `^k`:: deletes the input from the cursor to the end of the line `^w`:: deletes backward to the beginning of the current word `ESCAPE`:: cancels the editing [[basics_daemon]] Background mode ~~~~~~~~~~~~~~~ When the daemon mode is enabled in the notification configuration menu (see <>), `calcurse` will stay in background when the user interface is not running. In background mode, `calcurse` checks for upcoming appointments and runs the user-defined notification command when necessary. When the user interface is started again, the daemon automatically stops. `calcurse` background activity can be logged (set the `daemon.log` variable in the notification configuration <>), and in that case, information about the daemon start and stop time, reminders' command launch time, signals received... will be written in the `daemon.log` file (see section <>). Using the `--status` command line option (see section <>), one can know if `calcurse` is currently running in background or not. If the daemon is running, a message like the following one will be displayed (the pid of the daemon process will be shown): ---- calcurse is running in background (pid 14536) ---- NOTE: To stop the daemon, just send the `TERM` signal to it, using a command such as: `kill daemon_pid`, where *daemon_pid* is the process id of the daemon (14536 in the above example). [[basics_files]] calcurse files ~~~~~~~~~~~~~~ The following structure is created in your `$HOME` directory (or in the directory you specified with the -D option) the first time `calcurse` is run : ---- $HOME/.calcurse/ |___notes/ |___conf |___keys |___apts |___todo ---- `notes/`:: this subdirectory contains descriptions of the notes which are attached to appointments, events or todos. Since the file name of each note file is a SHA1 hash of the note itself, multiple items can share the same note file. calcurse provides a garbage collector (see the `-g` command line parameter) that can be used to remove note files which are no longer linked to any item. `conf`:: this file contains the user configuration `keys`:: this file contains the user-defined key bindings `apts`:: this file contains all of the events and user's appointments `todo`:: this file contains the todo list NOTE: If the logging of calcurse daemon activity was set in the notification configuration menu, the extra file `daemon.log` will appear in calcurse data directory. This file contains logs about calcurse activity when running in background. Import/Export capabilities ~~~~~~~~~~~~~~~~~~~~~~~~~~ The import and export capabilities offered by `calcurse` are described below. Import ^^^^^^ Data in icalendar format as described in the rfc2445 specification (see <> section below) can be imported into calcurse. Calcurse ical parser is based on version 2.0 of this specification, but for now on, only a subset of it is supported. The following icalendar properties are handled by calcurse: * `VTODO` items: "PRIORITY", "VALARM", "SUMMARY", "DESCRIPTION" * `VEVENT` items: "DTSTART", "DTEND", "DURATION", "RRULE", "EXDATE", "VALARM", "SUMMARY", "DESCRIPTION" The icalendar `DESCRIPTION` property will be converted into calcurse format by adding a note to the item. If a "VALARM" property is found, the item will be flagged as important and the user will get a notification (this is only applicable to appointments). Here are the properties that are not implemented: * negative time durations are not taken into account (item is skipped) * some recurence frequences are not recognize: "SECONDLY" / "MINUTELY" / "HOURLY" * some recurrence keywords are not recognized (all those starting with `BY`): "BYSECOND" / "BYMINUTE" / "BYHOUR" / "BYDAY" / "BYMONTHDAY" / "BYYEARDAY" / "BYWEEKNO" / "BYMONTH" / "BYSETPOS" plus "WKST" * the recurrence exception keyword "EXRULE" is not recognized * timezones are not taken into account Export ^^^^^^ Two possible export formats are available: `ical` and `pcal` (see section <> below to find out about those formats). Online help ~~~~~~~~~~~ At any time, the built-in help system can be invoked by pressing the `?` key. Once viewing the help screens, informations on a specific command can be accessed by pressing the keystroke corresponding to that command. Options ------- All of the `calcurse` parameters are configurable from the Configuration menu available when pressing `C`. You are then driven to a submenu with five possible choices : pressing `C` again will lead you to the Color scheme configuration, pressing `L` allows you to choose the layout of the main `calcurse` screen (in other words, where to put the three different panels on screen), pressing `G` permits you to choose between different general options, pressing `K` opens the key bindings configuration menu, and last you can modify the notify-bar settings by pressing `N`. [[options_general]] General options ~~~~~~~~~~~~~~~ These options control `calcurse` general behavior, as described below: `general.autosave` (default: *yes*):: This option allows to automatically save the user's data (if set to *yes*) when quitting.

warning: No data will be automatically saved if `general.autosave` is set to *no*. This means the user must press `S` (for saving) in order to retrieve its modifications. `general.autogc` (default: *no*):: Automatically run the garbage collector for note files when quitting. `general.periodicsave` (default: *0*):: If different from `0`, user's data will be automatically saved every *general.periodicsave* minutes. When an automatic save is performed, two asterisks (i.e. `**`) will appear on the top right-hand side of the screen). `general.confirmquit` (default: *yes*):: If set to *yes*, confirmation is required before quitting, otherwise pressing `Q` will cause `calcurse` to quit without prompting for user confirmation. `general.confirmdelete` (default: *yes*):: If this option is set to *yes*, pressing `D` for deleting an item (either a *todo*, *appointment*, or *event*), will lead to a prompt asking for user confirmation before removing the selected item from the list. Otherwise, no confirmation will be needed before deleting the item. `general.systemdialogs` (default: *yes*):: Setting this option to *no* will result in skipping the system dialogs related to the saving and loading of data. This can be useful to speed up the input/output processes. `general.progressbar` (default: *yes*):: If set to *no*, this will cause the disappearing of the progress bar which is usually shown when saving data to file. If set to *yes*, this bar will be displayed, together with the name of the file being saved (see section <>). `appearance.calendarview` (default: *0*):: If set to `0`, the monthly calendar view will be displayed by default otherwise it is the weekly view that will be displayed. `general.firstdayofweek` (default: *monday*):: One can choose between Monday and Sunday as the first day of the week. If `general.firstdayofweek` is set to *monday*, Monday will be first in the calendar view. Otherwise, Sunday will be the first day of the week. `format.outputdate` (default: *%D*):: This option indicates the format to be used when displaying dates in non-interactive mode. Using the default values, dates are displayed the following way: *mm/dd/aa*. You can see all of the possible formats by typing `man 3 strftime` inside a terminal. `format.inputdate` (default: *1*):: This option indicates the format that will be used to enter dates in *calcurse*. Four choices are available: + 1. mm/dd/yyyy 2. dd/mm/yyyy 3. yyyy/mm/dd 4. yyyy-mm-dd [[options_keys]] Key bindings ~~~~~~~~~~~~ One can define ones own key bindings within the `Keys` configuration menu. The default keys look like the one used by the `vim` editor, especially the displacement keys. Anyway, within this configuration menu, users can redefine all of the keys available from within calcurse's user interface. To define new key bindings, first highlight the action to which it will apply. Then, delete the actual key binding if necessary, and add a new one. You will then be asked to press the key corresponding to the new binding. It is possible to define more than one key binding for a single action. An automatic check is performed to see if the new key binding is not already set for another action. In that case, you will be asked to choose a different one. Another check is done when exiting from this menu, to make sure all possible actions have a key associated with it. The following keys can be used to define bindings: * lower-case, upper-case letters and numbers, such as `a`, `Z`, `0` * CONTROL-key followed by one of the above letters * escape, horizontal tab, and space keys * arrow keys (up, down, left, and right) * `HOME` and `END` keys While inside the key configuration menu, an online help is available for each one of the available actions. This help briefly describes what the highlighted action is used for. NOTE: As of calcurse 3.0.0, displacement commands can be preceded by an optional number to repeat the command. For example, `10k` will move the cursor ten weeks forwards if you use default key bindings. Color themes ~~~~~~~~~~~~ `calcurse` color theme can be customized to suit user's needs. To change the default theme, the configuration page displays possible choices for foreground and background colors. Using arrows or calcurse displacement keys to move, and `X` or space to select a color, user can preview the theme which will be applied. It is possible to keep the terminal's default colors by selecting the corresponding choice in the list. The chosen color theme will then be applied to the panel borders, to the titles, to the keystrokes, and to general informations displayed inside status bar. A black and white theme is also available, in order to support non-color terminals. NOTE: Depending on your terminal type and on the value of the `$TERM` environment variable, color could or could not be supported. An error message will appear if you try to change colors whereas your terminal does not support this feature. If you do know your terminal supports colors but could not get `calcurse` to display them, try to set your `$TERM` variable to another value (such as *xterm-xfree86* for instance). Layout configuration ~~~~~~~~~~~~~~~~~~~~ The layout corresponds to the position of the panels inside `calcurse` screen. The default layout makes the calendar panel to be displayed on the top-right corner of the terminal, the todo panel on the bottom-right corner, while the appointment panel is displayed on the left hand-side of the screen (see the figure in section <> for an example of the default layout). By choosing another layout in the configuration screen, user can customize `calcurse` appearance to best suit his needs by placing the different panels where needed. The following option is used to modify the layout configuration: `appearance.layout` (default: *0*):: Eight different layouts are to be chosen from (see layout configuration screen for the description of the available layouts). Sidebar configuration ~~~~~~~~~~~~~~~~~~~~~ The sidebar is the part of the screen which contains two panels: the calendar and, depending on the chosen layout, either the todo list or the appointment list. The following option is used to change the width of the sidebar: `appearance.sidebarwidth` (default: *0*):: Width (in percentage, 0 being the minimum width) of the side bar. [[options_notify]] Notify-bar settings ~~~~~~~~~~~~~~~~~~~ The following options are used to modify the notify-bar behavior: `appearance.notifybar` (default: *yes*):: This option indicates if you want the notify-bar to be displayed or not. `format.notifydate` (default: *%a %F*):: With this option, you can specify the format to be used to display the current date inside the notification bar. You can see all of the possible formats by typing `man 3 strftime` inside a terminal. `format.notifytime` (default: *%T*):: With this option, you can specify the format to be used to display the current time inside the notification bar. You can see all of the possible formats by typing `man 3 strftime` inside a terminal. `notification.warning` (default: *300*):: When there is an appointment which is flagged as `important` within the next `notification.warning` seconds, the display of that appointment inside the notify-bar starts to blink. Moreover, the command defined by the `notification.command` option will be launched. That way, the user is warned and knows there will be soon an upcoming appointment. `notification.command` (default: *printf '\a'*):: This option indicates which command is to be launched when there is an upcoming appointment flagged as `important`. This command will be passed to the user's shell which will interpret it. To know what shell must be used, the content of the `$SHELL` environment variable is used. If this variable is not set, `/bin/sh` is used instead. + ==== Say the `mail` command is available on the user's system, one can use the following command to get notified by mail of an upcoming appointment (the appointment description will also be mentioned in the mail body): ---- $ calcurse --next | mail -s "[calcurse] upcoming appointment!" user@host.com ---- ==== `notification.notifyall` (default: *no*):: Invert the sense of flagging an appointment as `important`. If this is enabled, all appointments will be notified - except for flagged ones. `daemon.enable` (default: *no*):: If set to yes, daemon mode will be enabled, meaning `calcurse` will run into background when the user's interface is exited. This will allow the notifications to be launched even when the interface is not running. More details can be found in section <>. `daemon.log` (default: *no*):: If set to yes, `calcurse` daemon activity will be logged (see section <>). Known bugs ---------- Incorrect highlighting of items appear when using calcurse black and white theme together with a `$TERM` variable set to *xterm-color*. To fix this bug, and as advised by Thomas E. Dickey (`xterm` maintainer), *xterm-xfree86* should be used instead of *xterm-color* to set the `$TERM` variable: ____ "The xterm-color value for $TERM is a bad choice for XFree86 xterm because it is commonly used for a `terminfo` entry which happens to not support bce. Use the xterm-xfree86 entry which is distributed with XFree86 xterm (or the similar one distributed with ncurses)." ____ [[bugs]] Reporting bugs and feedback --------------------------- Please send bug reports and feedback to: `misc .at. calcurse .dot. org`. [[contribute]] How to contribute? ------------------ If you would like to contribute to the project, you can first send your feedback on what you like or dislike, and if there are features you miss in `calcurse`. For now on, possible contributions concern the translation of `calcurse` messages and documentation. Translating documentation ~~~~~~~~~~~~~~~~~~~~~~~~~ NOTE: We recently dropped all translations of the manual files from the distribution tarball. There are plan to reintroduce them in form of a Wiki on the calcurse website. Please follow the mailing lists for up-to-date information. The *doc/* directory of the source package already contains translated version of `calcurse` manual. However, if the manual is not yet available into your native language, it would be appreciated if you could help translating it. To do so, just copy one of the existing manual file to `manual_XX.html`, where *XX* identifies your language. Then translate this newly created file and send it to the author (see <>), so that it can be included in the next `calcurse` release. calcurse i18n ~~~~~~~~~~~~~ As already mentioned, `gettext` utilities are used by `calcurse` to produce multi-lingual messages. We are currently using http://www.transifex.net/[Transifex] to manage those translations. This section provides informations about how to translate those messages into your native language. However, this howto is deliberately incomplete, focusing on working with `gettext` for `calcurse` specifically. For more comprehensive informations or to grasp the Big Picture of Native Language Support, you should refer to the `GNU gettext` manual at: http://www.gnu.org/software/gettext/manual/ IMPORTANT: Since we switched to Transifex, editing *po* files is not necessary anymore as Transifex provides a user-friendly, intuitive web interface for translators. Knowledge of `gettext` and the *po* format is still useful for those of you who prefer the command line and local editing. If you want to use the web UI to edit the translation strings, you can skip over to <> tough. Basically, three different people get involved in the translation chain: coders, language coordinator, and translators. After a quick overview of how things work, the translator tasks will be described hereafter. Overview ^^^^^^^^ To be able to display texts in the native language of the user, two steps are required: *internationalization* (i18n) and *localization* (l10n). i18n is about making `calcurse` support multiple languages. It is performed by coders, who will mark translatable texts and provide a way to display them translated at runtime. l10n is about making the i18n'ed `calcurse` adapt to the specific language of the user, ie translating the strings previously marked by the developers, and setting the environment correctly for `calcurse` to use the result of this translation. So, translatable strings are first marked by the coders within the `C` source files, then gathered in a template file (*calcurse.pot* - the *pot* extension meaning *portable object template*). The content of this template file is then merged with the translation files for each language (*fr.po* for French, for instance - with *po* standing for *portable object*, ie meant to be read and edited by humans). A given translation team will take this file, translate its strings, and send it back to the developers. At compilation time, a binary version of this file (for efficiency reasons) will be produced (*fr.mo* - *mo* stands for *machine object*, i.e. meant to be read by programs), and then installed. Then `calcurse` will use this file at runtime, translating the strings according to the locale settings of the user. Translator tasks ^^^^^^^^^^^^^^^^ Suppose someone wants to initiate the translation of a new language. Here are the steps to follow: * First, find out what the locale name is. For instance, for french, it is `fr_FR`, or simply `fr`. This is the value the user will have to put in his `LC_ALL` environment variable for software to be translated (see <>). * Then, go into the *po/* directory, and create a new po-file from the template file using the following command: `msginit -i calcurse.pot -o fr.po -l fr --no-translator` If you do not have `msginit` installed on your system, simply copy the *calcurse.pot* file to *fr.po* and edit the header by hand. Now, having this *fr.po* file, the translator is ready to begin. po-files ^^^^^^^^ The format of the po-files is quite simple. Indeed, po-files are made of four things: 1. *location lines:* tells you where the strings can be seen (name of file and line number), in case you need to see a bit of context. 2. *msgid lines:* the strings to translate. 3. *msgstr lines:* the translated strings. 4. *lines prefixed with `#`:* comments (some with a special meaning, as we will see below). Basically, all you have to do is fill the *msgstr* lines with the translation of the above *msgid* line. A few notes: *Fuzzy strings*:: You will meet strings marked with a `"#, fuzzy"` comment. `calcurse` won't use the translations of such strings until you do something about them. A string being fuzzy means either that the string has already been translated but has since been changed in the sources of the program, or that this is a new string for which `gettext` made a 'wild guess' for the translation, based on other strings in the file. It means you have to review the translation. Sometimes, the original string has changed just because a typo has been fixed. In this case, you won't have to change anything. But sometimes, the translation will no longer be accurate and needs to be changed. Once you are done and happy with the translation, just remove the `"#, fuzzy"` line, and the translation will be used again in `calcurse`. *c-format strings and special sequences*:: Some strings have the following comment: `"#, c-format"`. This tells that parts of the string to translate have a special meaning for the program, and that you should leave them alone. For instance, %-sequences, like `"%s"`. These means that `calcurse` will replace them with another string. So it is important it remains. There are also \-sequences, like `\n` or `\t`. Leave them, too. The former represents an end of line, the latter a tabulation. *Translations can be wrapped*:: If lines are too long, you can just break them like this: + ---- msgid "" "some very long line" "another line" ---- *po-file header*:: At the very beginning of the po-file, the first string form a header, where various kind of information has to be filled in. Most important one is the charset. It should resemble + ---- "Content-Type: text/plain; charset=utf-8\n" ---- + You should also fill in the Last-Translator field, so that potential contributors can contact you if they want to join you in the translation team, or have remarks/typo fixes to give about the translations. You can either just give your name/nick, or add an email address, for exemple: + ---- "Last-Translator: Frederic Culot \n" ---- *Comments*:: Adding comments (lines begining with the `#` character) can be a good way to point out problems or translation difficulties to proofreaders or other members of your team. *Strings size*:: `calcurse` is a curses/console program, thus it can be heavily dependant on the terminal size (number of columns). You should think about this when translating. Often, a string must fit into a single line (standard length is 80 characters). Don't translate blindly, try to look where your string will be displayed to adapt your translation. *A few useful tools*:: The po-file format is very simple, and the file can be edited with a standard text editor. But if you prefer, there are few specialized tools you may find convenient for translating: + * `poEdit` (http://www.poedit.org/) * `KBabel` (http://i18n.kde.org/tools/kbabel/) * `GTranslator` (http://gtranslator.sourceforge.net/) * `Emacs` po mode * `Vim` po mode *And finally*:: I hope you'll have fun contributing to a more internationalized world. :) If you have any more questions, don't hesitate to contact us at *misc .at. calcurse .dot. org*. [[transifex_uploading]] Uploading to Transifex ^^^^^^^^^^^^^^^^^^^^^^ There's several different ways to upload a finished (or semi-finished) translation for a new language to Transifex. The easiest way is to browse to the http://www.transifex.net/projects/p/calcurse/teams/[Translation Teams] page and request the addition of a new team. As soon as we accepted your request, you will be able to upload your *po* file on the http://www.transifex.net/projects/p/calcurse/resource/calcursepot/[calcurse resource page] by clicking the *Add translation* button at the bottom. Using transifex-client ^^^^^^^^^^^^^^^^^^^^^^ You can also use a command line client to submit translations instead of having to use the web interface every time you want to submit an updated version. If you have a recent version of `setuptools` installed, you can get the CLI client by issuing the following command: ---- $ easy_install -U transifex-client ---- Alternatively, you can get the source code of transifex-client at http://pypi.python.org/pypi/transifex-client. After you downloaded and installed the client, run the following commands in the calcurse source directory to checkout the translation resources of *calcurse*: ---- $ tx pull -a ---- To submit changes back to the server, use: ---- $ tx push -r calcurse.calcursepot -t -l ---- For more details, read up on `transifex-client` usage at the http://help.transifex.net/user-guide/client/[The Transifex Command-line Client v0.4] section of the http://help.transifex.net/[Transifex documentation]. [[transifex_webui]] Using the Transifex web UI ^^^^^^^^^^^^^^^^^^^^^^^^^^ As an alternative to editing *po* files, there is a web-based interface that can be used to create and update translations. After having signed up and created a new translation team (see <> on how to do that), click the *Add translation* button at the bottom on the http://www.transifex.net/projects/p/calcurse/resource/calcursepot/[calcurse resource page], select the language you'd like to translate and choose *Translate Online*. Links ----- This section contains links and references that may be of interest to you. calcurse homepage ~~~~~~~~~~~~~~~~~ The `calcurse` homepage can be found at http://calcurse.org calcurse announce list ~~~~~~~~~~~~~~~~~~~~~~ If you are interested in the project and want to be warned when a new release comes out, you can subscribe to the `calcurse` announce list. In doing so, you will receive an email as soon as a new feature appears in `calcurse`. To subscribe to this list, send a message to *announce+subscribe .at. calcurse .dot. org* with "subscribe" in the subject field. //// calcurse RSS feed ~~~~~~~~~~~~~~~~~ Another possibility to get warned when new releases come out is to follow the RSS feed at: http://calcurse.org/news_rss.xml This RSS feed is updated each time a new version of calcurse is available, describing newly added features. //// [[links_others]] Other links ~~~~~~~~~~~ You may want to look at the ical format specification (rfc2445) at: http://tools.ietf.org/html/rfc2445 The pcal project page can be found at: http://pcal.sourceforge.net/ Thanks ------ Its time now to thank other people without whom this program would not exist! So here is a list of contributing persons I would like to thank : * Alex for its patches, help and advices with `C` programming * Gwen for testing and general discussions about how to improve `calcurse` * Herbert for packaging `calcurse` for FreeBSD * Zul for packaging `calcurse` for NetBSD * Wain, Steffen and Ronald for packaging `calcurse` for Archlinux * Kevin, Ryan, and fEnIo for packaging `calcurse` for Debian and Ubuntu * Pascal for packaging `calcurse` for Slackware * Alexandre and Markus for packaging `calcurse` for Mac OsX and Darwin * Igor for packaging `calcurse` for ALT Linux * Joel for its calendar script which inspired `calcurse` calendar view * Jeremy Roon for the Dutch translation * Frédéric Culot, Toucouch, Erik Saule, Stéphane Aulery and Baptiste Jonglez for the French translation * Michael Schulz, Chris M., Benjamin Moeller and Lukas Fleischer for the German translation * Rafael Ferreira for the Portuguese (Brazil) translation * Aleksey Mechonoshin for the Russian translation * Jose Lopez for the Spanish translation * Tony for its patch which helped improving the recur_item_inday() function, and for implementing the date format configuration options * Erik Saule for its patch implementing the `-N`, `-s`, `-S`, `-r` and `-D` flags * people who write softwares I like and which inspired me, especially : - `vim` for the displacement keys - `orpheus` and `abook` for documentation - `pine` and `aptitude` for the text user interface - `tmux` for coding style And last, many many thanks to all of the `calcurse` users who sent me their feedback. calcurse-3.1.4/test/0000755000175000001440000000000012105444504011273 500000000000000calcurse-3.1.4/test/README0000644000175000001440000001207012105444321012070 00000000000000calcurse Test Suite =================== This directory holds of a couple of test cases and some helpers to simplify the task of creating new tests. Test cases are intended to test a specified set of behaviors and to avoid reintroduction of bugs that have already been fixed. The idea is that a new test should be added for each bug report that is received and for each bug that is fixed in the development branch. Running tests ------------- The easiest way to run tests is running `make check`. This will prepare and compile all needed components and start all test cases. A summary is displayed when all tests are finished. You can also run tests manually. Test cases are usually shell scripts or binaries. To run an individual test, just invoke the corresponding executable. Note that some tests require the `CALCURSE` and `DATA_DIR` environment variables to be set, where `CALCURSE` should point to a valid calcurse binary and `DATA_DIR` should point to a valid data directory. We usually use the data directory `data/`, which is contained in the `test/` directory, for test cases: $ CALCURSE=../src/calcurse DATA_DIR=data/ ./next-001.sh Running ./next-001.sh... ok Passing another data directory might cause some failures since many tests are adapted for the `test/` directory provided by the test suite: $ CALCURSE=../src/calcurse DATA_DIR="$HOME/.calcurse/" ./next-001.sh Running ./next-001.sh... FAIL Writing tests ------------- Writing test cases is as simple as creating a new shell script and adding some test code. Success and failure are reported by setting the exit status. Setting the exit status to `0` indicates success, a non-zero value indicates failure (which reflects the usual exit code semantics of POSIX systems). To enable a test, just add it to the `TESTS` variable in `test/Makefile.am`. If your test case is written in a non-interpretable language, you may need to add some compilation directives as well. Please note that we only accept POSIX-compatible shell scripts and C in mainline, so please avoid using other languages if you plan to get your test case integrated upstream. If your test case invokes the calcurse binary, please continue reading the following sections, also. The `run-test` helper --------------------- The `run-test` helper is a simple C program that makes writing script-based test cases much easier. Tests for the calcurse command line interface usually invoke the calcurse binary with some special command line options and compare the output with a hardcoded set of expected results. Unfortunately, comparing the output of two commands is not exactly easy in POSIX shell: this is where the `run-test` helper comes in handy. If you run the `run-test` helper, you can pass one or more executable files as parameters. The helper then invokes each of the specified scripts twice: Once passing `actual` as a command line parameter and once passing `expected`. It then compares the outputs of both invocations and checks if they are equal or not. If the `actual`/`expected` outputs differ for one of the programs passed to `run-test`, if displays `FAIL` and exits with a non-zero exit status. It returns success otherwise. Here is a simple example on how to use `run-test`: #!/bin/sh if [ "$1" = 'actual' ]; then echo 'obrocodobro' | sed 's/o/a/g' elif [ "$1" = 'expected' ]; then echo 'abracadabra' else ./run-test "$0" fi If the script is run without any parameters, it simply invokes `run-test`, passing itself as a command line parameter (see the `else` branch). `run-test` then reruns the script, passing `actual` as the first parameter. This starts the actual test (see the `if` branch). It reruns the script a second time, passing `expected` as the first parameter which results in the script printing the expected result for this test (see the `elif` branch). Finally, `run-test` compares both outputs, prints a message indicating whether they are equal and sets the exit status accordingly. This exit status is then passed on to the original instance of the test script and returned since `./run-test "$0"` is the last command that is run if the script is invoked without any parameters. You should stick to this strategy whenever you want to check the output of a non-interactive calcurse instance in a test. Check the following tests for some more examples: * `todo-001.sh` * `todo-002.sh` * `todo-003.sh` Using libfaketime ----------------- Some tests might require faking current date and time. We currently use libfaketime to achieve this. Check the following files for examples: * `appointment-001.sh` * `next-001.sh` * `range-001.sh` * `range-002.sh` * `range-003.sh` NOTE: Please do not forget to check for libfaketime presence at the beginning of your test. Otherwise, your test is likely to fail on systems that are not supported by libfaketime. Additional notes ---------------- Most tests, that invoke the calcurse binary, pass the `--read-only` parameter to make sure the data directory is not modified by calcurse, preventing unexpected side effects. Please follow this guideline if you plan to submit your patch upstream. calcurse-3.1.4/test/todo-002.sh0000755000175000001440000000032512105444321013013 00000000000000#!/bin/sh if [ "$1" = 'actual' ]; then "$CALCURSE" --read-only -D "$DATA_DIR"/ -t3 elif [ "$1" = 'expected' ]; then echo 'to do:' sed -n 's/^\[3\] \(.*\)/3. \1/p' "$DATA_DIR"/todo else ./run-test "$0" fi calcurse-3.1.4/test/data/0000755000175000001440000000000012105444504012204 500000000000000calcurse-3.1.4/test/data/apts0000644000175000001440000013052412105444321013020 0000000000000012/27/1911 @ 01:18 -> 12/29/1911 @ 18:52 |Outsmarts Leoncavallo's daunting 02/10/1912 @ 20:36 -> 02/14/1912 @ 21:46 |Relieving uncleanliest footnoting unscrewed 04/28/1912 @ 02:54 -> 04/30/1912 @ 16:47 |Visit repel egotism antidepressant Idahos 07/10/1912 @ 17:47 -> 07/13/1912 @ 03:18 |Impersonating integer broils blame 09/27/1912 @ 16:07 -> 10/02/1912 @ 07:24 |Wedgwood's dilating 10/28/1913 @ 11:18 -> 11/01/1913 @ 17:07 |Deviation perspire 12/23/1913 @ 07:25 -> 12/23/1913 @ 17:46 |Nintendo stapler jellyfish vaporous 09/08/1914 @ 07:41 -> 09/11/1914 @ 18:15 |Panelling 03/22/1915 @ 07:21 -> 03/25/1915 @ 20:57 |Veritable intercom's 08/12/1915 @ 23:57 -> 08/16/1915 @ 23:02 |Meddlers presides prefabricates Disneyland's 08/27/1915 @ 07:34 -> 08/29/1915 @ 23:36 |EverReady's tramping patches napped 06/16/1916 @ 15:56 -> 06/19/1916 @ 15:05 |Rediscovery's Barnaby's lummox's shan't 06/19/1916 @ 15:35 -> 06/23/1916 @ 09:00 |Lu gastric Valenti bankruptcy's intents 10/01/1916 @ 08:13 -> 10/02/1916 @ 11:56 |Appropriately Potemkin's hassocks snappier Millay 12/12/1916 @ 12:04 -> 12/15/1916 @ 08:31 |Thefts infrastructure's chides 01/20/1917 @ 07:12 -> 01/20/1917 @ 12:19 |Outfit Hannah 07/22/1917 @ 04:28 -> 07/22/1917 @ 10:04 |Shallowness's tap's enjoining chewy obligation's 07/30/1917 @ 08:34 -> 08/04/1917 @ 11:53 |Stephan 03/25/1918 @ 11:14 -> 03/29/1918 @ 14:57 |Butterfat Cherry's aviators albs fattier 01/26/1919 @ 17:43 -> 01/26/1919 @ 23:18 |Creakiest cocking disporting polyhedron auditions 03/21/1919 @ 19:33 -> 03/23/1919 @ 03:37 |Stethoscopes Singer's vermouth pincers 04/01/1919 @ 23:51 -> 04/03/1919 @ 09:19 |Doughtiest 05/14/1919 @ 05:55 -> 05/16/1919 @ 22:47 |Aviation's O'Neill welding 06/21/1919 @ 01:48 -> 06/22/1919 @ 01:07 |Marquis grid sprinkling's 06/30/1919 @ 13:48 -> 07/03/1919 @ 06:08 |Barracudas 07/05/1919 @ 09:09 -> 07/10/1919 @ 10:56 |Lea's mullion remove connects collation's 09/07/1919 @ 20:52 -> 09/11/1919 @ 17:11 |Alps hotshot 01/21/1921 @ 19:57 -> 01/22/1921 @ 18:42 |Gunk 05/01/1921 @ 20:50 -> 05/01/1921 @ 20:57 |Citibank 06/19/1921 @ 08:01 -> 06/22/1921 @ 10:20 |Coziness sloshed retyping southwards intensified 08/02/1921 @ 16:46 -> 08/04/1921 @ 22:17 |Malawi's undefinable Copacabana hungered 08/04/1921 @ 00:58 -> 08/04/1921 @ 09:07 |Bagpipes dole shores 01/16/1922 @ 13:01 -> 01/17/1922 @ 14:32 |Gravies 06/23/1922 @ 13:56 -> 06/25/1922 @ 02:12 |Funnelling creation's regionalisms skivvied jaunted 07/08/1922 @ 17:13 -> 07/09/1922 @ 08:03 |Alleluia Freetown's 07/14/1922 @ 05:26 -> 07/19/1922 @ 11:28 |Pittsburgh's joined overbearing propellant's 03/07/1923 @ 17:37 -> 03/09/1923 @ 22:27 |Impulsion Sheffield's Swanson's 05/17/1923 @ 13:01 -> 05/19/1923 @ 04:23 |Disconnections 07/06/1923 @ 18:38 -> 07/09/1923 @ 13:26 |Sightseeing yarns 08/07/1923 @ 17:38 -> 08/11/1923 @ 03:34 |Tc's 12/20/1923 @ 11:05 -> 12/21/1923 @ 09:31 |Chanter snuffs Hymen 03/19/1924 @ 10:11 -> 03/20/1924 @ 04:34 |Powder imagines devastating 07/11/1924 @ 18:34 -> 07/13/1924 @ 09:32 |Manley's Telemann 01/24/1926 @ 09:39 -> 01/28/1926 @ 00:32 |Freebases improvidence maggot gestation's 06/30/1926 @ 17:36 -> 07/01/1926 @ 22:54 |Antibody poor Atlantes 07/24/1926 @ 13:52 -> 07/28/1926 @ 14:48 |Piety's 08/19/1926 @ 21:46 -> 08/21/1926 @ 00:07 |Incur hearties outlining sensationalists 09/15/1926 @ 09:13 -> 09/17/1926 @ 08:27 |Theocritus's 03/17/1927 @ 05:31 -> 03/17/1927 @ 17:55 |Closets scrape addictive consummations 05/27/1927 @ 12:40 -> 05/28/1927 @ 10:43 |Pharaoh Montoya bloods acclamation yesteryear's 06/05/1927 @ 15:47 -> 06/07/1927 @ 00:26 |Pawned subplot's Dzerzhinsky 11/18/1927 @ 13:33 -> 11/21/1927 @ 19:10 |Splurges 06/05/1928 @ 13:34 -> 06/06/1928 @ 17:32 |Auricle's precognition cytoplasm 07/02/1928 @ 05:14 -> 07/03/1928 @ 00:20 |Saboteurs crassest moderator's waif's fear's 10/24/1928 @ 02:11 -> 10/28/1928 @ 16:48 |Restorers indifferent Schwinger's Valentino's bowing 11/01/1928 @ 09:39 -> 11/05/1928 @ 02:18 |Dalmatians lionizing colonist hustle tawdrier 11/05/1928 @ 06:20 -> 11/08/1928 @ 17:22 |Boob's pied sorest 12/28/1928 @ 01:34 -> 12/28/1928 @ 01:43 |Intermezzo's cockerel 04/30/1929 @ 02:40 -> 05/02/1929 @ 13:42 |Unnecessarily imploring rebut Cuvier 08/29/1929 @ 08:55 -> 08/31/1929 @ 09:04 |Motherland distances cornbread reflect 09/16/1929 @ 11:58 -> 09/19/1929 @ 18:10 |Misstate ghoul 05/13/1930 @ 20:14 -> 05/15/1930 @ 01:57 |Groan's crabbed fifty's Mugabe 09/07/1930 @ 21:39 -> 09/11/1930 @ 14:25 |Surpasses received Kidd Midway consoled 11/06/1930 @ 05:01 -> 11/09/1930 @ 15:37 |Seafaring ravined petunia's babe's hose 06/24/1931 @ 20:40 -> 06/28/1931 @ 08:56 |Stiffening hodgepodges embarkation's 07/18/1931 @ 00:40 -> 07/21/1931 @ 21:13 |Colony explosions Gienah's 11/07/1931 @ 09:33 -> 11/10/1931 @ 07:30 |Intoxicant's Rex amphetamine's curacy's cardiologists 11/28/1931 @ 13:19 -> 11/29/1931 @ 10:56 |Sawdusting vicariously brunette's 03/22/1932 @ 07:58 -> 03/23/1932 @ 15:26 |Mailboxes pigment's jasmine 05/06/1932 @ 19:31 -> 05/08/1932 @ 15:08 |Felix's possibles debilitation's 12/07/1932 @ 14:30 -> 12/10/1932 @ 10:24 |Electioneering truces 03/18/1933 @ 16:50 -> 03/22/1933 @ 13:55 |Rotisseries powwowed abutment's crash evacuee's 08/24/1933 @ 09:24 -> 08/25/1933 @ 13:22 |Usage 12/28/1933 @ 10:48 -> 12/28/1933 @ 13:14 |Martial knitted woodenness's GE glassful's 01/12/1934 @ 00:25 -> 01/14/1934 @ 16:05 |Languors uncommonly magnetizing cataclysm 06/23/1934 @ 07:35 -> 06/28/1934 @ 00:23 |Pogromed 06/26/1934 @ 12:56 -> 07/01/1934 @ 00:06 |Outburst Delilah upbeat hooky ideologies 08/06/1934 @ 20:27 -> 08/09/1934 @ 08:18 |Effectuates kilogram region's Debby's 10/06/1934 @ 06:31 -> 10/11/1934 @ 01:13 |Leftest tire's propagation 10/21/1934 @ 18:18 -> 10/21/1934 @ 23:06 |Delta applause's backside allusion Lamb's 11/21/1934 @ 01:28 -> 11/25/1934 @ 12:28 |Milling discontinuances migration's introducing 11/29/1934 @ 21:28 -> 12/01/1934 @ 11:52 |Porpoise Angora's overwrite 04/19/1935 @ 01:32 -> 04/20/1935 @ 09:03 |Elbowing ricked 07/18/1935 @ 08:15 -> 07/22/1935 @ 18:48 |Anaerobic filmmakers 08/08/1935 @ 21:02 -> 08/10/1935 @ 02:18 |Isherwood's yearning's Modesto's forswearing 10/06/1935 @ 15:39 -> 10/11/1935 @ 07:45 |Mannerism's Koppel's Philippe's 11/06/1935 @ 22:58 -> 11/10/1935 @ 12:09 |Flog impacts 05/03/1936 @ 12:03 -> 05/07/1936 @ 06:07 |Pluralities Capitol 07/15/1936 @ 11:02 -> 07/17/1936 @ 19:10 |Sancta nones 08/05/1936 @ 14:13 -> 08/06/1936 @ 04:38 |Rustbelt slacking valedictorians 01/04/1937 @ 11:54 -> 01/04/1937 @ 14:31 |Gynecological Babur barking 05/20/1937 @ 04:24 -> 05/20/1937 @ 05:31 |Mayra's Muscovy grumble 02/08/1938 @ 12:02 -> 02/12/1938 @ 14:25 |Graveyards aha leftover's intrusted tobacco 02/15/1938 @ 11:18 -> 02/16/1938 @ 18:50 |Pt vulcanize Chayefsky Harlan cerebella 03/31/1938 @ 18:28 -> 04/01/1938 @ 12:12 |Musicologist's Lorie Indiana monograming 04/28/1938 @ 14:00 -> 05/01/1938 @ 17:35 |Stalingrad stagnating flame stacked 07/18/1938 @ 08:36 -> 07/21/1938 @ 10:02 |Vacuum lingering cantaloup 09/10/1938 @ 15:13 -> 09/11/1938 @ 13:50 |Unpleasant loudly ingredients owning 12/30/1938 @ 01:27 -> 12/30/1938 @ 18:30 |Exigent circumventing pundit Dietrich pertinents 11/27/1939 @ 22:21 -> 11/28/1939 @ 18:06 |Novice greasier 12/02/1939 @ 06:49 -> 12/06/1939 @ 05:46 |Lunchtimes compression Mazola's 02/27/1940 @ 09:29 -> 02/27/1940 @ 10:01 |Somnambulism Appomattox's ductile shades 01/21/1941 @ 00:48 -> 01/21/1941 @ 04:20 |Dysentery Oldfield phonograph lavendered 08/01/1941 @ 01:14 -> 08/02/1941 @ 09:11 |Garrotes species sandpapering 11/12/1941 @ 15:08 -> 11/13/1941 @ 05:37 |Gutierrez's discarding adjudicators astutest Alyce's 06/18/1942 @ 19:24 -> 06/19/1942 @ 09:01 |Lanyard 06/28/1942 @ 14:03 -> 06/30/1942 @ 02:29 |Panoramic murderesses 09/22/1942 @ 00:58 -> 09/26/1942 @ 21:44 |Malplaquet's Benelux pantsuit 12/06/1942 @ 09:46 -> 12/07/1942 @ 04:33 |Manuel glorified four 09/02/1943 @ 18:01 -> 09/03/1943 @ 10:39 |Decriminalized Bacon 12/15/1943 @ 15:40 -> 12/18/1943 @ 22:57 |Laundress Galibi's equine 01/30/1944 @ 01:51 -> 01/30/1944 @ 03:52 |Attenuates rarefying Pomeranian vivisection's laughably 03/18/1944 @ 17:11 -> 03/20/1944 @ 11:57 |Laundry's Cote's 06/28/1944 @ 23:38 -> 06/29/1944 @ 13:04 |Film's colonizer 04/20/1945 @ 12:03 -> 04/22/1945 @ 13:53 |Chandragupta shrimp payoff barometric zone's 06/08/1945 @ 11:23 -> 06/13/1945 @ 02:29 |Fling Jinnah 03/06/1946 @ 11:55 -> 03/11/1946 @ 04:52 |Drowning snailing drawbacks 03/17/1946 @ 12:16 -> 03/19/1946 @ 14:30 |Needles awnings roughhouses 03/19/1946 @ 21:06 -> 03/22/1946 @ 12:43 |Magpie's doohickey 06/22/1946 @ 19:16 -> 06/23/1946 @ 19:02 |Dobbin's spiked 10/23/1946 @ 15:44 -> 10/26/1946 @ 17:49 |Nauru Worcester 07/28/1947 @ 19:04 -> 08/03/1947 @ 02:17 |Manufacturer preterit's delectable fulcrum 03/25/1948 @ 11:07 -> 03/28/1948 @ 01:40 |Shaggiest Chan astrakhan marten 06/15/1948 @ 14:24 -> 06/17/1948 @ 19:03 |Cabrini directer pennies 05/25/1949 @ 11:16 -> 05/26/1949 @ 12:58 |Anybodies keystroke's 08/07/1949 @ 21:47 -> 08/08/1949 @ 13:21 |Ormolu Stephenson diatoms 10/23/1949 @ 19:18 -> 10/27/1949 @ 02:41 |Smouldering hales curios refinished dogmatic 10/28/1949 @ 03:45 -> 10/31/1949 @ 22:17 |Principals six Geller's 06/24/1950 @ 10:34 -> 06/28/1950 @ 12:35 |Disembowels 07/11/1950 @ 03:22 -> 07/12/1950 @ 17:20 |Coiffing Trent cosmologies penalizes minuteness's 07/20/1950 @ 14:25 -> 07/24/1950 @ 02:35 |Recreant eclipsed 10/13/1950 @ 21:53 -> 10/17/1950 @ 14:07 |Dredger 10/30/1950 @ 14:11 -> 10/31/1950 @ 15:34 |Unleashing tusk's incidences 12/10/1951 @ 05:28 -> 12/10/1951 @ 20:02 |Linemen 09/03/1952 @ 05:06 -> 09/03/1952 @ 11:52 |Simmons 11/05/1952 @ 15:24 -> 11/06/1952 @ 21:10 |Sheers quiche mixture's proprietorship's cone 12/04/1952 @ 02:54 -> 12/05/1952 @ 18:40 |Unreal collaboration jabots pigeoned analytics 09/04/1953 @ 09:24 -> 09/08/1953 @ 06:57 |Contentedness's perpendicular atmosphere 11/13/1953 @ 09:24 -> 11/17/1953 @ 03:12 |Hilbert's 04/01/1954 @ 05:40 -> 04/02/1954 @ 21:14 |Think equipment's sturdiness's birdbath's 06/16/1954 @ 01:30 -> 06/21/1954 @ 00:11 |Quotients prerequisite 02/06/1955 @ 07:45 -> 02/10/1955 @ 08:35 |Jami's shard's 07/19/1955 @ 04:27 -> 07/20/1955 @ 12:47 |Nanjing Apollonian heath's undeclared zinnia 08/13/1955 @ 15:47 -> 08/14/1955 @ 06:57 |Agglomerations wire Prescott's Mexicali extremer 09/18/1956 @ 21:45 -> 09/21/1956 @ 14:34 |Vouched Woodrow's 01/28/1957 @ 02:11 -> 01/28/1957 @ 07:56 |Intolerable cheekiness's reorganized blustering 05/13/1957 @ 17:09 -> 05/15/1957 @ 21:05 |Preferential blobbed Na 09/13/1957 @ 09:37 -> 09/16/1957 @ 11:59 |Reflexive 01/07/1958 @ 04:17 -> 01/07/1958 @ 18:53 |Slaver's bewared 05/13/1958 @ 09:54 -> 05/18/1958 @ 05:05 |Gentlest madcaps recaptures vestibule's 01/14/1959 @ 17:00 -> 01/18/1959 @ 19:12 |Stepchildren 05/21/1959 @ 23:01 -> 05/24/1959 @ 10:46 |Tailwind's preaches dappling ventricle's 07/19/1959 @ 10:37 -> 07/22/1959 @ 14:24 |Slingshot Cognac's insulate 01/03/1960 @ 05:18 -> 01/06/1960 @ 02:14 |Wren's carcinoma's jellied plateau engine's 03/06/1960 @ 21:51 -> 03/07/1960 @ 13:27 |Assessor cigar Bridges mutiny's freezing 04/13/1960 @ 20:14 -> 04/15/1960 @ 05:02 |Rios Hormel's 11/28/1960 @ 20:04 -> 11/28/1960 @ 22:29 |Sporran's extraordinaries Scotsmen findings 12/24/1960 @ 01:08 -> 12/27/1960 @ 20:51 |Meadows Alfredo valentine 08/01/1961 @ 08:23 -> 08/01/1961 @ 14:11 |Pavlova's misogynist munch instability temps 08/01/1962 @ 05:08 -> 08/03/1962 @ 15:28 |Betrothals Sexton's At's winced pilings 08/10/1962 @ 00:32 -> 08/10/1962 @ 07:04 |Quadruplets Karl dicks 03/13/1963 @ 06:02 -> 03/17/1963 @ 16:26 |Revitalization's Estelle's term 03/13/1963 @ 12:23 -> 03/14/1963 @ 21:32 |Moss executors 11/17/1963 @ 04:36 -> 11/21/1963 @ 00:04 |Overdid glassware charioteered 05/18/1964 @ 08:46 -> 05/20/1964 @ 21:54 |Demonstrated Shaffer's bobbling 07/13/1964 @ 18:48 -> 07/15/1964 @ 03:11 |Wingspans positing 07/20/1964 @ 06:56 -> 07/20/1964 @ 22:49 |Gizzard's galvanizing 09/09/1965 @ 20:38 -> 09/11/1965 @ 07:58 |Locomotion 01/18/1966 @ 00:24 -> 01/18/1966 @ 05:11 |Vamoose Madeira bishopric misstatement's 08/07/1966 @ 13:43 -> 08/12/1966 @ 08:03 |Parallelled penned samba's positron 08/23/1966 @ 09:52 -> 08/24/1966 @ 14:31 |Scrapes Cameroon's attorney Garbo's 09/24/1966 @ 03:39 -> 09/26/1966 @ 06:34 |Theater hosted condescend 02/22/1967 @ 22:10 -> 02/24/1967 @ 16:39 |Crossness Angelina's 09/09/1967 @ 10:23 -> 09/13/1967 @ 14:27 |Conservatory's crestfallen pluralized ornamental 10/26/1967 @ 01:46 -> 10/29/1967 @ 11:17 |Accelerated 02/10/1968 @ 11:09 -> 02/14/1968 @ 02:02 |Factions Sharpe's 05/08/1968 @ 06:25 -> 05/09/1968 @ 16:11 |Nesselrode's hiss preached shebangs 06/04/1969 @ 02:13 -> 06/04/1969 @ 10:49 |Wavelet 06/04/1969 @ 02:18 -> 06/09/1969 @ 05:29 |Dike's daylight's subtotalling indignation 06/07/1969 @ 22:31 -> 06/10/1969 @ 16:15 |Sex's seaway witch's vagina's 11/15/1969 @ 19:40 -> 11/17/1969 @ 14:24 |Hullabaloos brute's Fern's Milken's 01/23/1970 @ 18:06 -> 01/27/1970 @ 15:14 |Cowpoke's irrelevance 07/20/1970 @ 18:04 -> 07/23/1970 @ 22:25 |Undergrad's gondolas 11/02/1970 @ 15:52 -> 11/05/1970 @ 00:19 |Venting Shoshone's mockingbird fondly 11/15/1970 @ 23:51 -> 11/17/1970 @ 06:04 |Leftovers 11/30/1970 @ 20:13 -> 12/05/1970 @ 21:53 |Rhapsodizes protuberances whiplashes 06/02/1971 @ 01:13 -> 06/03/1971 @ 19:30 |Arbitration's 08/25/1971 @ 20:19 -> 08/27/1971 @ 19:16 |Consequently 11/15/1971 @ 06:06 -> 11/15/1971 @ 17:09 |Undercharging denseness acquitted arsonists euthanasia's 01/24/1972 @ 11:48 -> 01/28/1972 @ 20:16 |Ballsiest janitor 05/05/1972 @ 07:27 -> 05/05/1972 @ 09:42 |Molders saddening tenaciously Pruitt 09/28/1972 @ 07:26 -> 10/01/1972 @ 13:48 |Yank Armstrong skull's 10/19/1972 @ 11:35 -> 10/21/1972 @ 18:55 |Sadat billowed canvasser walrus Anabaptist 10/19/1972 @ 17:12 -> 10/22/1972 @ 05:39 |Clocks chance twiggiest cobra's sparest 10/26/1972 @ 19:47 -> 10/29/1972 @ 10:51 |Fibulae 04/13/1973 @ 23:53 -> 04/17/1973 @ 11:55 |Desalinated Kirby 06/22/1973 @ 06:55 -> 06/24/1973 @ 20:44 |Gibed conduit 10/05/1973 @ 05:46 -> 10/08/1973 @ 09:47 |Merriam Babel's Noreen pesetas 01/05/1974 @ 22:10 -> 01/06/1974 @ 10:56 |Busters scenic detoxified unfamiliar 01/15/1974 @ 10:29 -> 01/20/1974 @ 05:05 |Butterfly's examine unplugs sprucer dictations 01/24/1974 @ 05:57 -> 01/25/1974 @ 08:56 |Hefner's Marie's Mafias putt's enquiring 02/06/1974 @ 14:33 -> 02/10/1974 @ 18:59 |Issuance's lassoed beasts breakfasted confusingly 11/23/1974 @ 21:06 -> 11/24/1974 @ 12:30 |Squadron's 06/18/1975 @ 01:01 -> 06/23/1975 @ 08:17 |Trolleys Cameron pianist spelt southwestern 09/18/1975 @ 23:43 -> 09/19/1975 @ 09:11 |Unbuckles misfitted Cheshire disgracing 05/21/1976 @ 02:28 -> 05/23/1976 @ 09:35 |Premised graduations 07/31/1976 @ 21:40 -> 08/05/1976 @ 00:55 |Suffocation healthfulness rallied amulets satisfactorily 09/27/1976 @ 09:04 -> 09/30/1976 @ 09:21 |Adheres disintegrated harpoon's marooning peg 12/18/1976 @ 03:04 -> 12/21/1976 @ 02:02 |Pooching cuttlefishes imposture thorny 01/11/1977 @ 08:14 -> 01/13/1977 @ 09:51 |Landlords gabbles builder's laureating 03/09/1977 @ 01:24 -> 03/12/1977 @ 16:59 |Potboiler idiomatically 03/21/1977 @ 00:47 -> 03/21/1977 @ 17:00 |Deducible mailer Consuelo winging chameleon 12/09/1977 @ 20:35 -> 12/13/1977 @ 15:44 |Sosa swings 03/24/1978 @ 11:32 -> 03/27/1978 @ 17:26 |Wars Gregorio 02/13/1979 @ 20:48 -> 02/16/1979 @ 08:19 |Fidgets liquoring syphilis 03/15/1979 @ 07:42 -> 03/18/1979 @ 20:29 |Parking shoestrings disharmony's lassie 06/22/1979 @ 18:16 -> 06/26/1979 @ 11:16 |Stieglitz indiscreet visions buntings watchtower 08/20/1979 @ 12:01 -> 08/25/1979 @ 02:19 |Flushest Nate listen 11/20/1980 @ 17:22 -> 11/25/1980 @ 02:19 |Probability's inflexible mes sluggards 01/07/1981 @ 20:55 -> 01/09/1981 @ 23:19 |Flange internee inspector's 03/31/1981 @ 18:26 -> 04/05/1981 @ 07:44 |Sextets commits expectant 07/20/1982 @ 14:09 -> 07/23/1982 @ 21:59 |Vauban 10/12/1982 @ 08:50 -> 10/16/1982 @ 20:45 |Maltreated emulates popularize 10/25/1982 @ 07:17 -> 10/27/1982 @ 08:53 |Homeboy Velázquez Caesarean Mobil's Cheyenne's 12/13/1982 @ 22:30 -> 12/19/1982 @ 01:55 |Trellises binned hanky's Eurasia's destinies 12/31/1982 @ 01:21 -> 01/02/1983 @ 17:36 |Gyration's antiperspirant's 06/20/1983 @ 12:23 -> 06/24/1983 @ 17:32 |Deerskin 07/07/1983 @ 23:24 -> 07/11/1983 @ 02:42 |Gunnysacks heiress's cantons chase Polynesia's 11/01/1983 @ 23:44 -> 11/05/1983 @ 21:00 |Alexander cashier rays lackey filaments 11/16/1983 @ 21:22 -> 11/17/1983 @ 06:34 |Deflects reprinting flotillas marksmen haughtiness 01/01/1984 @ 23:49 -> 01/03/1984 @ 12:56 |Dissolutes Mobile's Ramsay's 02/11/1984 @ 18:24 -> 02/11/1984 @ 19:51 |Liqueur's lauds plighted 12/18/1985 @ 13:45 -> 12/19/1985 @ 02:48 |Filled pyrotechnics apostolic disorders 02/06/1986 @ 12:52 -> 02/06/1986 @ 16:07 |Concentric defense's 05/17/1986 @ 03:08 -> 05/21/1986 @ 01:12 |Render 12/18/1986 @ 02:38 -> 12/18/1986 @ 19:00 |Touchdowns Emory Doubleday's 12/24/1986 @ 11:06 -> 12/29/1986 @ 06:49 |Pontiffs horsewomen 01/03/1987 @ 23:12 -> 01/05/1987 @ 21:09 |Wraparounds tittling azimuth's 04/28/1987 @ 21:52 -> 05/03/1987 @ 12:14 |Commentary 08/03/1987 @ 21:11 -> 08/05/1987 @ 12:00 |Pinafore 10/30/1987 @ 22:05 -> 11/01/1987 @ 09:32 |Scourges 11/10/1987 @ 20:57 -> 11/15/1987 @ 22:00 |Orchards 12/20/1987 @ 08:50 -> 12/25/1987 @ 12:25 |Scapula's remounted scientist's Bonaventure 01/03/1988 @ 07:50 -> 01/07/1988 @ 15:22 |Idiom's propriety's averaging 07/07/1988 @ 13:29 -> 07/08/1988 @ 16:32 |Bushelled 09/11/1988 @ 04:09 -> 09/12/1988 @ 08:42 |Confrontational Olin's hoppers cede 12/20/1988 @ 13:08 -> 12/25/1988 @ 18:58 |Handouts that's 12/22/1988 @ 00:37 -> 12/27/1988 @ 07:42 |Uptight Greta's embellishment candider inquisitively 04/03/1989 @ 21:28 -> 04/04/1989 @ 16:15 |Klondiked undergoes plagiarize immediate 04/07/1989 @ 16:08 -> 04/10/1989 @ 16:16 |Flickers manly scrawniest commitments impeaches 05/05/1989 @ 03:46 -> 05/07/1989 @ 11:48 |Caesura's teeters rainy Neva 05/24/1990 @ 04:53 -> 05/27/1990 @ 12:13 |Mamma's bullshit's agglutinating 11/19/1990 @ 01:05 -> 11/21/1990 @ 11:00 |Krasnodar nick Jewell's 11/19/1990 @ 20:16 -> 11/25/1990 @ 02:42 |Boomed 08/30/1991 @ 00:12 -> 09/02/1991 @ 04:26 |Elwood soups motherhood's 10/25/1991 @ 14:11 -> 10/29/1991 @ 02:31 |Tyrannizing 05/19/1992 @ 04:00 -> 05/19/1992 @ 20:21 |Linkage ebbing naval aspect's unfailing 07/10/1992 @ 23:56 -> 07/12/1992 @ 17:03 |Vying 10/17/1992 @ 03:20 -> 10/19/1992 @ 13:54 |Hal aster roadway gristly 12/28/1992 @ 02:03 -> 12/30/1992 @ 13:21 |Sharks length's 02/05/1994 @ 23:07 -> 02/10/1994 @ 19:24 |Ameba's rested 07/15/1994 @ 13:55 -> 07/19/1994 @ 03:34 |Comically 09/18/1994 @ 23:20 -> 09/22/1994 @ 20:30 |Modeling Troy vixen's articulating evolutionary 10/27/1995 @ 03:19 -> 10/29/1995 @ 10:55 |Hindered collapse marched emphasis's 06/26/1996 @ 18:41 -> 06/30/1996 @ 02:34 |Hear peephole's 04/07/1997 @ 23:10 -> 04/10/1997 @ 06:55 |Folio's 06/12/1997 @ 16:27 -> 06/16/1997 @ 18:19 |Instantaneously toast's agreements warp 06/19/1997 @ 08:37 -> 06/24/1997 @ 06:56 |Undefined weeder sophism's allegory's sandpapers 07/21/1997 @ 12:35 -> 07/24/1997 @ 23:14 |Collided passerby sextants landlocked prudish 08/09/1997 @ 15:38 -> 08/12/1997 @ 05:17 |Transfixt Udall numbing subvert 09/08/1997 @ 23:21 -> 09/11/1997 @ 02:18 |Debbie Bolshevist ending 05/04/1998 @ 11:27 -> 05/06/1998 @ 17:19 |Optimism Arcturus's effectuating ratcheted 09/07/1998 @ 05:25 -> 09/12/1998 @ 03:42 |Deliriums 01/10/1999 @ 05:11 -> 01/13/1999 @ 02:03 |Holographs Rambo's 02/03/1999 @ 05:07 -> 02/07/1999 @ 02:36 |Louisianans jimmying artistes leased 05/20/1999 @ 03:37 -> 05/21/1999 @ 17:01 |Freeholder's 10/01/1999 @ 05:42 -> 10/04/1999 @ 04:09 |Notepaper's Abernathy's 11/17/1999 @ 19:43 -> 11/21/1999 @ 22:14 |Suicidal shirtwaist 12/19/1999 @ 18:55 -> 12/20/1999 @ 20:30 |Libellers 10/19/2000 @ 22:39 -> 10/20/2000 @ 04:55 |Plodder's moulting smokestacks instruments vagrancy's 05/30/2001 @ 10:07 -> 06/01/2001 @ 22:58 |Bulimia yank 12/02/2001 @ 22:03 -> 12/06/2001 @ 10:51 |Serviettes 01/24/2002 @ 09:14 -> 01/29/2002 @ 06:28 |Biddy 06/02/2002 @ 06:15 -> 06/05/2002 @ 15:12 |Thermoplastic Monroe's atrocity's Brandy's demoralizes 09/20/2002 @ 05:40 -> 09/24/2002 @ 21:32 |Guinevere's inspired limitation's 12/12/2002 @ 23:48 -> 12/14/2002 @ 04:07 |Disconcerted Osage observational 12/31/2002 @ 19:41 -> 01/01/2003 @ 12:21 |Tithes gig's 03/02/2003 @ 02:20 -> 03/03/2003 @ 21:24 |Editor's hazels epiglottises repercussion 03/23/2003 @ 20:46 -> 03/26/2003 @ 23:11 |Planter's Gambia Vietnamese 08/27/2003 @ 03:52 -> 08/30/2003 @ 10:56 |Dossier's MacArthur 01/11/2004 @ 15:57 -> 01/15/2004 @ 19:29 |Spindliest 05/10/2004 @ 09:21 -> 05/12/2004 @ 22:19 |Abrupt upbeats 05/14/2004 @ 17:37 -> 05/15/2004 @ 10:39 |Ordure's 07/02/2004 @ 20:21 -> 07/05/2004 @ 06:23 |Respectful superhighway 07/03/2004 @ 15:53 -> 07/03/2004 @ 17:39 |Magdalena unzip modernest Shapiro's Guerra 09/15/2005 @ 05:22 -> 09/19/2005 @ 02:03 |Newsed tarpons Boniface jocular 05/29/2006 @ 11:54 -> 06/03/2006 @ 02:31 |Sunsetting 02/17/2007 @ 18:09 -> 02/21/2007 @ 11:20 |Zorn centennial Domitian's nations overwrites 04/03/2007 @ 10:23 -> 04/04/2007 @ 04:01 |Humerus's organdy's Borobudur's escapist evaluations 05/17/2007 @ 05:37 -> 05/18/2007 @ 10:26 |Tallow's woodcarving Beijing potables 07/28/2007 @ 00:10 -> 07/31/2007 @ 00:52 |Dispirits composting willies hygrometers presaged 03/04/2008 @ 07:26 -> 03/06/2008 @ 18:45 |Deformation boggling brooms Episcopals trademarking 09/20/2008 @ 13:10 -> 09/25/2008 @ 09:28 |Recombining mantilla's lisped revisits 07/11/2009 @ 11:18 -> 07/14/2009 @ 12:43 |Sclerosis 08/17/2009 @ 01:46 -> 08/20/2009 @ 15:21 |Awkward 08/21/2009 @ 14:26 -> 08/22/2009 @ 08:26 |Defender's Chengdu cashew's Regor Deanne's 02/25/2010 @ 10:25 -> 02/27/2010 @ 05:20 |Optimums Hafiz's 07/15/2010 @ 08:43 -> 07/16/2010 @ 15:41 |Cyanide 07/20/2010 @ 11:56 -> 07/22/2010 @ 20:21 |Croup commode's geographical Ferber's Aguilar's 02/22/2011 @ 11:23 -> 02/26/2011 @ 07:21 |Covenants useful smoker's 06/15/2011 @ 05:21 -> 06/20/2011 @ 05:07 |Formative blissful experimentation's 07/14/2011 @ 09:43 -> 07/17/2011 @ 23:13 |Opens Tutankhamen's 04/02/2012 @ 03:57 -> 04/03/2012 @ 00:10 |Reexamines mugger's zephyr's morn's 04/07/2012 @ 16:05 -> 04/10/2012 @ 07:50 |Transpiration's sellout bleeds infusions spent 01/01/2013 @ 11:53 -> 01/05/2013 @ 21:24 |Rectum's charged cucumbers bashes outpatient's 02/10/2013 @ 21:23 -> 02/16/2013 @ 00:05 |Montezuma hairpins insetting Kochab's 08/19/2013 @ 18:34 -> 08/19/2013 @ 22:38 |Meteoroids 08/25/2013 @ 18:11 -> 08/29/2013 @ 13:50 |Lobotomy's quicksand familiarize Syracuse intermediary 04/22/2014 @ 23:15 -> 04/25/2014 @ 08:47 |Eastman vomited policemen fallacy adverbs 06/28/2014 @ 05:11 -> 07/02/2014 @ 10:33 |Bellyful's apportions 10/07/2014 @ 23:24 -> 10/12/2014 @ 00:19 |Misgoverned 01/15/2015 @ 15:38 -> 01/19/2015 @ 04:48 |Electrocutes cob truncates intrigued 05/28/2015 @ 07:38 -> 05/29/2015 @ 04:49 |Remount fragrance's 06/24/1912 [1] Flurry's docks courteously McKinley's apse's 07/01/1912 [1] Abrogates fraud's empty 07/16/1912 [1] Truckles vicissitudes 09/07/1943 [1] Transplant philologist's 04/29/1944 [1] Debases ammunition's fructifying tatty localing 08/02/1944 [1] Rescinds 10/29/1944 [1] Ascension's eighths democrat's wailing 01/14/1945 [1] Bevelling 08/01/1945 [1] Mortgagee doctrines robe's valedictories hermaphrodites 10/25/1945 [1] Amplitude's punctuating extraditing Mulroney 10/28/1945 [1] Canteens 06/10/1946 [1] Vows 03/30/1947 [1] Beaumont's Rothko 04/13/1947 [1] Jimmy derivation topographical evoking 09/14/1947 [1] Ga 04/30/1948 [1] Capitalization's flutist's 06/21/1948 [1] Besieger's spasmed Alcatraz's 08/13/1948 [1] Kaboom 10/26/1948 [1] Mummifying 02/02/1949 [1] Gadding Syria's 03/08/1949 [1] Unbridled Omayyad peacemaker's holocaust's 10/18/1949 [1] Sewing's juror trusted patrimony's 10/31/1949 [1] Cheever lily aerospace's fluffs 02/03/1950 [1] Congratulate legendary renovations unison's suburbanite 01/02/1951 [1] Savorier libertarians 01/21/1951 [1] Package uptown missive sphere moreover 03/07/1951 [1] Inmate mortgagee's stings 04/19/1951 [1] Borobudur's Clinton's censor 07/11/1951 [1] Lens Marcella's delimiter southerner's 07/31/1951 [1] Cockerel's 01/24/1952 [1] Mississauga Popper trachea's 05/10/1952 [1] Paroxysm flashiness's 07/19/1952 [1] Alcyone's temerity reclaimed Segre's soloing 09/17/1952 [1] Propaganda humanism Louisianians 11/10/1952 [1] Harper's mantissa's nautiluses 12/15/1952 [1] Brueghel's buddy Batista offensiveness 01/09/1953 [1] Visage Methodist Pontianak's 02/07/1953 [1] Roquefort's 07/13/1953 [1] Gandhian parsecs biathlon's reinstated 07/25/1953 [1] Depot carboy's unbosom 08/09/1953 [1] Gullet neighbor indelicacies 02/05/1954 [1] Drains defacement's 06/17/1954 [1] Virulently restrained 07/28/1954 [1] Sup soggy radishes Kinko 11/26/1954 [1] Firetrap's Ethernet 12/21/1954 [1] Airlifted womankind's Suetonius pities repatriation 12/22/1954 [1] Maurine Fanny's 02/06/1955 [1] Asphalt Aurora squidded pawnbroker leeward 02/20/1956 [1] Falter 09/06/1956 [1] Bisquick gimpiest imperialist 03/29/1957 [1] Conservators Coriolanus's 08/31/1957 [1] Socking parallaxes wellsprings kickiest escapades 11/08/1957 [1] Miniaturizing jail 11/21/1957 [1] Flintiest poplin's Clemson 08/13/1958 [1] Stiffen Swedenborg Hungarians 09/16/1958 [1] About stabilizing causals hesitates Bacardi's 12/21/1958 [1] Seymour Minnesotans qualms grungiest 04/21/1959 [1] Rime departing 05/21/1959 [1] Sectioning subleased Crecy's sloppiest 09/17/1959 [1] Beacon annuities pollywog's 11/21/1959 [1] Decency choreographers 06/21/1960 [1] Rosendo stipulates painter's 10/03/1960 [1] Convocations Klimt haft overstuffed whereon 12/10/1960 [1] Buber's habitual unholiest slue 03/27/1961 [1] Suffragists ova's marathoners creamery's 08/31/1961 [1] Cheesecake's pelts deicer normalcy 11/28/1961 [1] Nebula aureole's dictatorship's 06/13/1962 [1] Wire's pained 07/19/1962 [1] Salacious outskirt cloakroom's 10/21/1962 [1] Matricide's Underwood's 12/04/1962 [1] Sickness smudgiest legmen 08/04/1963 [1] McKnight's 09/04/1963 [1] Praised meltdowns Somalis 12/20/1963 [1] Instrumented Cordelia 05/22/1964 [1] Macedonian Bloomingdale's 06/27/1964 [1] Propagated basement 10/22/1964 [1] Yerevan's stinting teak apostate registrants 12/15/1964 [1] Whaler ants blooding vogue leopards 01/02/1965 [1] Accumulated Lucretia's Himalaya's driveway 03/24/1965 [1] Letha's 09/15/1965 [1] Plumes sensuous exigencies 12/08/1965 [1] Console 01/28/1966 [1] Samples preventible 02/08/1966 [1] Unpronounceable presuppose 03/15/1966 [1] Nominating comma cohered Catullus networking 05/06/1966 [1] Offenbach compatible insight redistrict 06/17/1966 [1] Antagonized kickers jockstrap's Minolta's 10/23/1966 [1] Copacabana 12/09/1966 [1] Uninterrupted handmaids incalculably flatly 12/30/1966 [1] Glimmerings relocatable differentiation Chesterfield's charcoal's 04/16/1967 [1] Vendor's exhausted Essie's rod 07/17/1967 [1] Squirrelled 07/20/1967 [1] Circumnavigation wackos gays inert nonuser 08/28/1967 [1] Trays Toltec's habituation 02/13/1968 [1] Murmuring sextons publisher's Ur's 04/13/1968 [1] Conduces 05/23/1968 [1] Protoplasm Afghan's 09/04/1968 [1] Castor's blarneyed 09/29/1968 [1] Wideness payees Shylock's Wycherley's smallest 01/08/1969 [1] Ageism debased gore excursion's 01/11/1969 [1] Dalian's brashness's deciding plagiarized Senior 01/19/1969 [1] Telecommutes Verdun's tonsillectomy 02/02/1969 [1] Croatia rococo's Cuvier's acknowledgment's 02/17/1969 [1] Closet drooled rollicking Amsterdam's Hegira 03/14/1969 [1] Uric Brazilian consult sweatiest 04/15/1969 [1] Struggle Blankenship's outcroppings 07/17/1969 [1] Meaner Martial 12/16/1969 [1] Skunk safekeepings canapé extraneous Brandeis's 03/17/1970 [1] Score 03/24/1970 [1] Macerate Isis brakeman Poltava 07/18/1970 [1] Menstruate bottled 12/16/1970 [1] Frothed dialog 12/28/1970 [1] Anther 01/29/1971 [1] Handicapper reversals 05/17/1971 [1] Aquinas 12/06/1971 [1] Loot lighthearted blindsiding Cleopatra tasty 04/12/1972 [1] Sponges prosperity's noncooperation 06/12/1972 [1] Stoplights vane's patients 06/14/1972 [1] Declaims fretting dissatisfaction's 09/24/1972 [1] Ravishing vulgarizes 10/19/1972 [1] Superiority's baptistery's antedate 11/07/1972 [1] Malignant duckbills mites peroxide's 10/19/1973 [1] Squishiest avalanches lark's muezzin's 01/21/1974 [1] Bismark's 02/03/1974 [1] Kyushu websites exhortation Melba's automaton's 05/09/1974 [1] Jehoshaphat albino overkilling Desdemona's 07/05/1974 [1] Tanked genitive 11/12/1974 [1] Cautiousness calamines lithium's fervidly chaperone's 01/15/1975 [1] Wringer unblocked audio's 02/18/1975 [1] Kebab's disarm Dramamine whittler lassitude's 04/21/1975 [1] Maroons loan's waist's daffodil 09/18/1975 [1] Hickey undetermined spray 12/23/1975 [1] Subordinating Cathay shambles 09/04/1976 [1] Silks blaze 10/27/1976 [1] Venturesome revoking debit 10/29/1976 [1] Inge scherzo's 12/28/1976 [1] Psychopath's unsure 01/23/1977 [1] Ally homographs raccoon's transubstantiation 02/08/1977 [1] Executable jiggles pickup reanimating grommet's 06/28/1977 [1] Politicized crape 08/30/1977 [1] Stylist's spooking Krupp's waterbeds gadfly 09/20/1977 [1] Ito's kegging resoundingly lore's 02/12/1978 [1] Cocky wasting menaces 05/06/1978 [1] Nurserymen keened acidifies Buford's 09/20/1978 [1] Rectifier's 09/22/1978 [1] Florine's gymnasia 02/06/1980 [1] Overreaches suborbital Madeleine 05/19/1980 [1] Overstatement synergy's 08/24/1980 [1] Efface herbicide Ramiro's 09/20/1980 [1] Unlikely testify Trondheim's 09/25/1980 [1] Jingoist's 03/26/1981 [1] Traverse 04/30/1981 [1] Settee's 05/09/1981 [1] Exhortations jelly's cabal 05/29/1981 [1] Extruding moseyed effusions auditor 07/21/1981 [1] Tobacco hypocrisy's slacks 08/05/1981 [1] Gabon's collying pays 11/11/1981 [1] Pickerel aboding aptness Poland 01/24/1982 [1] Farm's 02/03/1982 [1] Pantyhose 02/10/1982 [1] Knopf's Rachelle's Opel's innovation 02/17/1982 [1] Undergarments Elnora's 03/11/1982 [1] Husserl's Cd occurrences Jill's 10/14/1982 [1] Flamingo Sèvres selfsame disavowing 07/15/1983 [1] Electromagnetic implication's attachment's demagogue plighted 11/19/1983 [1] Nocturne 01/19/1984 [1] Deputation 06/05/1984 [1] Breaching Calvinists actuality's advertisement baritones 06/29/1984 [1] Miscalculated diluted 10/16/1984 [1] Ionosphere contiguity noisiness's 02/28/1985 [1] Mac requires corona mending's carpenters 05/28/1985 [1] Sandbox processor's overdraft's 12/15/1985 [1] Spruce 01/04/1986 [1] Atherosclerosis reinvents legerdemain's notation's 02/16/1986 [1] Narcissist 05/31/1986 [1] Fun jetting marquis felicity decathlon's 09/22/1986 [1] Bellhops June's bushing 12/20/1986 [1] Cockeyed weekending Chartres 01/30/1987 [1] Cornrowing heartburn's Lynn's cup resin 04/24/1987 [1] Guyana Punjabi's roisterer 07/11/1987 [1] Copped contract knacker's 07/19/1987 [1] Fencer's birthmark's reconstruct compellingly dissipates 10/03/1987 [1] Arden continents 12/04/1987 [1] Towns 01/20/1988 [1] Impetuously seeing's 08/18/1988 [1] Abhorrent cranial Cato surplice 09/12/1988 [1] Undecipherable Esperanza's 09/02/1989 [1] Imitations 12/22/1989 [1] Transmigrate 02/18/1990 [1] Precedence JFK distributing 06/21/1990 [1] Azimuth exhibits 08/30/1990 [1] Horsetails Heinlein's 12/14/1990 [1] Annoyances valuation 03/06/1991 [1] Knob delimit 05/21/1991 [1] Patriarchies churns vulcanized 01/25/1992 [1] Rag's province warding 12/08/1992 [1] Calking Thurmond's 05/07/1993 [1] Sledged sextants chance's 09/29/1993 [1] Masaryk diminuendo's Bond Moor's Bran's 10/04/1993 [1] Farthest sticklers chutes ragouts 10/16/1993 [1] Marcella Lindbergh firmware covers 06/03/1994 [1] Humps racier teat's cross stencil 08/20/1994 [1] Griffin's coauthor's 05/14/1995 [1] Curs nerdiest 02/29/1996 [1] Moo deviants snares overgrow 11/25/1996 [1] Pleasantries endears Wharton's encroaches 03/23/1997 [1] Kenneling G retorting branching's art 07/07/1997 [1] Shillelagh keens tritely Rodin's 11/12/1997 [1] Taklamakan 12/14/1997 [1] Speakeasies lashing's cancellations Boleyn's 05/04/1998 [1] Resplendently dose insufficiency's day's 05/24/1998 [1] Expeditionary 08/29/1998 [1] Deleted richer Japura's whetstone's 11/02/1998 [1] Truncating reproof's restating dignity's chi's 11/07/1998 [1] Meaty bubbles establishing versification 12/20/1998 [1] Gladlier friendliest 03/20/1999 [1] Floating consonant's hobbyhorse's Tahiti scimitar 05/30/1999 [1] Raid insulation colorfully mandibles 04/07/2000 [1] Chapping bequeaths satellites 05/17/2000 [1] Her Peron gavels footbridge's bacchanal's 07/10/2000 [1] Leaved mime's saltwater 08/04/2000 [1] Margins charting edgy personae 01/25/2001 [1] Accurateness hoed flakiness's 02/26/2001 [1] Toolboxes circularized 12/08/2001 [1] Overspill's Waikiki's cowlicks redirecting 08/06/2003 [1] Carbide's downscales glamorized geometrical mitten 09/01/2003 [1] Pedagoguing doll's outlet's 01/15/2004 [1] Communities packers pinch 06/21/2004 [1] Rush's 07/03/2004 [1] Chariot Hornblower's 11/09/2004 [1] Unforgivable exhorting demolish irrecoverable clearing 11/21/2004 [1] Silicone 12/07/2004 [1] Rheumier easiest Andrew's abbots 04/10/2005 [1] Cindy's palette gnash 10/19/2005 [1] Mazes 03/13/2006 [1] Midwinter unobstructed Ginger's incumbents 06/08/2006 [1] Eulogistic decoding groveling Alcibiades plankton 06/27/2006 [1] Randomizes berthing hurdles 07/21/2006 [1] Montaigne's reverie's niceness beats goading 08/19/2006 [1] Northerner rebuffing impalas rooftops 09/27/2006 [1] Cargo reversion Khan's Episcopalian semicircle 08/24/2007 [1] Elucidations ritzy panting 04/30/2008 [1] Accountability 10/06/2008 [1] Cosponsor chored 11/24/2008 [1] Wizard's Galahad's 12/17/2008 [1] Incivility erratically Hermite 02/14/2009 [1] Harpsichord mortgagers oldened 02/14/2009 [1] Pliers Suzanne Johns Olga's tripling 03/13/2009 [1] Environmentalist malts toxicology's Gadsden's 03/25/2009 [1] Administered warranty whirling 09/18/2009 [1] Methanol ilks 12/08/2009 [1] Poetic cadre abasement campground's extinguish 02/26/2010 [1] Maturer wantoning 08/16/2010 [1] Esau's brainchildren 08/21/2010 [1] Agreeably Brigham's misalignment 11/12/2010 [1] Humidified Rockford's keynote churlish 02/25/2011 [1] Socket ghastlier 04/10/2011 [1] Detrimental 05/05/2011 [1] Access imbibe 09/02/2011 [1] Gorgas flaunts parched 12/28/2011 [1] Collaboration Tenochtitlan's rapscallion psychologist's extincting 05/20/2012 [1] Trots lorry 06/03/2012 [1] Hoorayed assignment 06/11/2012 [1] Ah drifter's 04/26/2013 [1] Donald's 07/19/2013 [1] Woodcutter sanctimonious nightfall's crews 03/03/2014 [1] Uncoupling cabarets gondolier's 08/22/2014 [1] Pelleted discrepancies 10/15/2014 [1] Fizzling 03/14/2015 [1] Damneder poking markdown quagmire's 01/10/2016 [1] Hireling spellers 08/30/2016 [1] Gaffe's shrinks 10/01/2016 [1] Plenipotentiaries snooker calcified fileting Bessemer's 12/18/2016 [1] Acidity vaults 02/24/2017 [1] Psyched Sondra's 03/12/2017 [1] Nark sacristan's 04/06/2017 [1] Titanium 06/22/2017 [1] Tub grenadier's longing's gram's 08/19/2017 [1] Twaddling 06/07/2018 [1] Uppity 06/28/2018 [1] Retarded Ginsburg's nonce's 12/17/2018 [1] Succored desperadoes ascend 03/02/2019 [1] Silence Joy's keener consciousnesses 04/07/2019 [1] Beck's Ariosto's 04/30/2019 [1] Stepsister's 08/25/2020 [1] Ideas Gershwin 11/07/2020 [1] Slackening slovenlier reel 11/12/2020 [1] Oration's 12/29/2020 [1] Keep 03/02/2021 [1] Stockyard's consummation equivocates 03/31/2021 [1] Irruptions blatant Monteverdi's medicinals Woolworth 04/18/2021 [1] Assailing 08/08/2021 [1] Interfaith overwhelmingly afflicts posteriors Erasmus's 04/03/2022 [1] Inundating yuckiest technician tetrahedron's foresails 08/15/2022 [1] Heralded F stroked 10/09/2022 [1] Sixes unafraid decoded 11/28/2022 [1] Stupefied blips 06/26/2023 [1] Supplicate Terri 10/11/2023 [1] Boyishness's intuitive cask's Armageddon's 06/21/2024 [1] Sepulcher Bacall 06/27/2024 [1] Slivering 08/05/2024 [1] Dempsey's Intel's 04/04/2025 [1] Directorate inoffensive 04/25/2025 [1] Waddle saintliness's Mercia's denseness 05/15/2025 [1] Intensity hydrology Peel power 11/19/2025 [1] Wingspans affluence's 02/20/2026 [1] Dicky impersonator 03/20/2026 [1] Boneless rilling 05/11/2026 [1] Carnations nigger's 11/17/2026 [1] Barrios slicker's thirty's 03/26/2027 [1] Dizziest Kerry Ndjamena's pizzicato 04/06/2027 [1] Parenthetical chemotherapy 10/02/2027 [1] Provender's limericks 03/21/2028 [1] Dent nape's unevener irradiated denizen's 03/23/2028 [1] Tailgated gawkiness's 05/07/2028 [1] Elope hammerings complexioned 07/15/2028 [1] Describe hooter Surat's paramedicals 09/11/2028 [1] Inc videotaped sixteenth eyeliner 09/12/2028 [1] Resend sake sundries rumbaing 11/03/2029 [1] Blisters willful 11/07/2029 [1] Mascaraing assertive vulnerably pruned 11/30/2029 [1] O'Hara wrench elm 01/08/2030 [1] Cashier's sherbet earwax's stiffeners 05/07/2030 [1] Compatibles Joyner asynchronous 07/01/2030 [1] Empire's entwine 03/25/2031 [1] Proverbially unwarranted effectiveness 04/16/2031 [1] Nosedives pennon's disburse scalloping 07/01/2031 [1] Surrealist guppy unabated Gwendoline 07/21/2031 [1] Casting's carelessness Anselmo's 10/03/2031 [1] Autos 11/09/2031 [1] Cockscomb's 12/18/2031 [1] Succumb Key's Cossacks blackness 01/24/2032 [1] Sidelined yell 01/31/2032 [1] Thebes determining glutting manorial Barbra 04/27/2032 [1] Cringing Osborne 05/26/2032 [1] Confine lames 08/03/2032 [1] Ceremonial straw's antelope's Mercer Kathiawar's 01/01/1902 [1] Swastikas seeking 01/01/1902 [1] Elongate wallpaper's midterms classify 01/01/1902 [1] Seedy locoweed persecutor 01/01/1902 [1] Acidifies flack's evaporating 01/01/1902 [1] Aniakchak Pantagruel 01/01/1902 [1] Imperishables 01/01/1902 [1] Stuff hysteresis 01/01/1902 [1] Area 01/01/1902 [1] Brandished eyrie cloying emcees 01/01/1902 [1] Exceptionable 01/01/1902 [1] Acanthi kinked hardtack's mumps 01/01/1902 [1] Cesspool's murdered cod's Washingtonians 01/01/1902 [1] Snow 01/01/1902 [1] Kibitz subcontinent hogwash's displaying quarto 01/01/1902 [1] Mischievousness's species adultery's petrochemicals Remus 01/01/1902 [1] Insecure Taiyuan Chungking's Tm's 01/01/1902 [1] Minuscules pompadours fourfold incognito 01/01/1902 [1] Geography's Delaney's 01/01/1902 [1] Skilled bastardized dormers Buckingham munitions 01/01/1902 [1] Also 01/01/1902 [1] Marquis's 01/01/1902 [1] Malamud's 01/01/1902 [1] Gilda 01/01/1902 [1] Roe's apace disinfectants metered spinals 01/01/1902 [1] Locals goutiest Gomulka's 01/01/1902 [1] Surgery's apple covertly 01/01/1902 [1] Shantung Earlene pillage leer complainant's 01/01/1902 [1] Bach's 01/01/1902 [1] Luisa's Chimborazo's shuffleboard's 01/01/1902 [1] Tiffed Garcia Elton's 01/01/1902 [1] Peculiarities Jewishnesses attenuate 01/01/1902 [1] Wallpapered tampers Dhaka transgression's alohas 01/01/1902 [1] Roam psycho's 01/01/1902 [1] Automobiles beguiles 01/01/1902 [1] Dumfounds medial lark's 01/01/1902 [1] Haggler's ablative safeguard 01/01/1902 [1] Broomsticks 01/01/1902 [1] Therapist cooker's flutes He's 01/01/1902 [1] Bonny strode Pasteur's inconsequentially Gamble's 01/01/1902 [1] Corporate 01/01/1902 [1] Lina's 01/01/1902 [1] Kodachrome wicks callus's Genaro's 01/01/1902 [1] Brokers horsefly repudiating knob 01/01/1902 [1] Reflecting championing stringent Talmudic 01/01/1902 [1] Noncommercial employes 01/01/1902 [1] Competitively 01/01/1902 [1] Garish duplicator edible battery's mock 01/01/1902 [1] Flocks subornation's trawlers naming's 01/01/1902 [1] Gruffness Gethsemane 01/01/1902 [1] Absalom humankind editorship 01/01/1902 [1] Ampule's Orinoco's nontransferable misspends 01/01/1902 [1] Each Moselle's discussants flashlight's 01/01/1902 [1] Electron's reproaches picker grayer 01/01/1902 [1] Armrests Jamestown's nuke's motif undertaker 01/01/1902 [1] Navigation's 01/01/1902 [1] Pearl's Morin telescopes Emanuel's 01/01/1902 [1] Mutating postnatal Tate familiarize discomfort 01/01/1902 [1] Offsets debits 01/01/1902 [1] Institutes's Canton susceptibility's hankie's 01/01/1902 [1] Haleakala's Goldie's Set 01/01/1902 [1] Hypocrite's bridal populars 01/01/1902 [1] Lankiness 01/01/1902 [1] Rinds weekdays 01/01/1902 [1] Win hydrangea's display pelvic yukking 01/01/1902 [1] Homer's strafes 01/01/1902 [1] Rigor's sociopaths bashing outwore catalepsy 01/01/1902 [1] Montaigne loophole 01/01/1902 @ 00:01 -> 01/02/1902 @ 09:18 |Calibrator's 01/01/1902 @ 05:03 -> 01/06/1902 @ 02:46 |Refresh prepackaged wieners 01/01/1902 @ 01:58 -> 01/06/1902 @ 07:39 |Strontium's 01/01/1902 @ 06:11 -> 01/01/1902 @ 10:15 |Abets reject pullbacks finaglers unroll 01/01/1902 @ 02:55 -> 01/01/1902 @ 17:43 |Monterrey apprehensive Lonnie's 01/01/1902 @ 03:19 -> 01/03/1902 @ 16:25 |Gill machination geranium's fathomless extraordinary 01/01/1902 @ 06:15 -> 01/02/1902 @ 06:07 |Protruded vanguard 01/01/1902 @ 02:31 -> 01/01/1902 @ 13:18 |Expo 01/01/1902 @ 06:11 -> 01/05/1902 @ 10:50 |Placebos hugeness flailing ironing's 01/01/1902 @ 07:40 -> 01/02/1902 @ 23:52 |Septembers astuter Jarvis caliper 01/01/1902 @ 06:51 -> 01/05/1902 @ 07:33 |Asthma 01/01/1902 @ 09:01 -> 01/04/1902 @ 14:26 |Monograph's 01/01/1902 @ 00:37 -> 01/01/1902 @ 00:53 |Portal's Leach's Sara Asiatic Holly 01/01/1902 @ 02:05 -> 01/02/1902 @ 00:41 |Yesteryear's 01/01/1902 @ 06:52 -> 01/05/1902 @ 13:44 |Colluding steamrolled 01/01/1902 @ 06:28 -> 01/06/1902 @ 07:57 |Incubuses flat prison Ryukyu's 01/01/1902 @ 06:04 -> 01/02/1902 @ 09:50 |Synods 01/01/1902 @ 05:17 -> 01/01/1902 @ 20:13 |Eucalyptus's Araby 01/01/1902 @ 04:12 -> 01/02/1902 @ 11:28 |Superstitious 01/01/1902 @ 03:07 -> 01/02/1902 @ 14:53 |Chanted pumice's scalding prier 01/01/1902 @ 01:26 -> 01/05/1902 @ 11:35 |Beethoven materialism signposting bucktoothed 01/01/1902 @ 05:31 -> 01/02/1902 @ 11:34 |Isolated affair ritual's Hanukkahs Riel 01/01/1902 @ 03:26 -> 01/02/1902 @ 15:16 |Supernumeraries incontrovertibly embolden iterate 01/01/1902 @ 07:17 -> 01/05/1902 @ 00:07 |Federals spanner 01/01/1902 @ 07:02 -> 01/03/1902 @ 22:41 |Unzipped earthing alleyways bankers 01/01/1902 @ 08:24 -> 01/03/1902 @ 20:18 |Diesel ferrules Valkyrie's 01/01/1902 @ 03:32 -> 01/01/1902 @ 04:06 |Winch 01/01/1902 @ 09:01 -> 01/04/1902 @ 09:21 |Smartens promulgates uncharted McIntosh's 01/01/1902 @ 00:59 -> 01/05/1902 @ 04:39 |Ho Nikolayev succumbing observances 01/01/1902 @ 07:03 -> 01/02/1902 @ 11:52 |Kiwanis's Iceland 01/01/1902 @ 08:13 -> 01/03/1902 @ 07:30 |Bawdily anviled crayfishes neuters 01/01/1902 @ 01:46 -> 01/01/1902 @ 18:09 |Blenheim 01/01/1902 @ 01:02 -> 01/04/1902 @ 12:06 |Posse overspreads psalm lamebrain's primps 01/01/1902 @ 02:16 -> 01/04/1902 @ 13:18 |Sass organism's horses Melanesian 01/01/1902 @ 09:01 -> 01/03/1902 @ 04:00 |Commons's 01/01/1902 @ 06:16 -> 01/05/1902 @ 05:33 |Bungle head radiation's 01/01/1902 @ 03:31 -> 01/03/1902 @ 05:20 |Psycho's 01/01/1902 @ 06:58 -> 01/03/1902 @ 02:04 |Nomadic Gewürztraminer overrules 01/01/1902 @ 07:25 -> 01/02/1902 @ 11:22 |Crematory amorphousness 01/01/1902 @ 08:18 -> 01/04/1902 @ 11:42 |Charity's 01/01/1902 @ 05:19 -> 01/04/1902 @ 22:02 |Fronde petrochemical's capitalistic 01/01/1902 @ 02:09 -> 01/02/1902 @ 14:02 |Concurs windowed 01/01/1902 @ 03:20 -> 01/03/1902 @ 10:01 |Condillac 01/01/1902 @ 04:28 -> 01/02/1902 @ 09:33 |Carrie cued melodramatics 01/01/1902 @ 06:55 -> 01/02/1902 @ 03:06 |Ferocity 01/01/1902 @ 08:42 -> 01/01/1902 @ 20:57 |Simenon Kojak amening plagiarist 01/01/1902 @ 08:30 -> 01/05/1902 @ 02:27 |Marshall 01/01/1902 @ 05:38 -> 01/03/1902 @ 22:47 |Hokkaido's diseases 01/01/1902 @ 07:21 -> 01/02/1902 @ 04:40 |Senility's 01/01/1902 @ 03:29 -> 01/03/1902 @ 23:54 |Albumin altimeters Senghor's 01/01/1902 @ 04:46 -> 01/03/1902 @ 12:02 |Lynnette Zane kimono's backlash 01/01/1902 @ 05:32 -> 01/04/1902 @ 23:07 |Interfaced Hepplewhite slipped 01/01/1902 @ 07:28 -> 01/02/1902 @ 19:34 |Discretion bauble varsity's 01/01/1902 @ 06:18 -> 01/05/1902 @ 02:47 |Damned 01/01/1902 @ 01:43 -> 01/04/1902 @ 22:12 |Doting 01/01/1902 @ 03:23 -> 01/03/1902 @ 12:31 |Access Yang bethinks vectored broad 01/01/1902 @ 02:50 -> 01/03/1902 @ 20:32 |Tasseled 01/01/1902 @ 06:52 -> 01/03/1902 @ 10:06 |Ventriloquist's indisputable squats Fenian's slowdown's 01/01/1902 @ 06:31 -> 01/04/1902 @ 21:25 |Learning 01/01/1902 @ 00:44 -> 01/01/1902 @ 14:29 |Blondes Sasquatch cablecasted 01/01/1902 @ 06:16 -> 01/04/1902 @ 20:13 |Papillae hairpin ailerons 01/01/1902 @ 00:22 -> 01/02/1902 @ 11:54 |Menses enrichment afloat failed incorruptible 01/01/1902 @ 08:13 -> 01/01/1902 @ 17:50 |Motown's factors disappearing 01/01/1902 @ 08:40 -> 01/06/1902 @ 04:00 |Observable parleys industrialization Cambrian boxwood's 01/01/1902 @ 04:56 -> 01/03/1902 @ 00:14 |Summer Mujib humbles fatherless foretelling 01/01/1902 @ 00:08 -> 01/02/1902 @ 20:46 |Binnacles 01/01/1902 @ 04:38 -> 01/03/1902 @ 00:50 |Packard's 01/01/1902 @ 08:49 -> 01/03/1902 @ 12:10 |Hypnotist reappraisal rehiring Castaneda 01/01/1902 @ 02:26 -> 01/06/1902 @ 03:30 |Jataka backwards 01/01/1902 @ 00:07 -> 01/05/1902 @ 01:15 |Zeno Goldberg's Iberia's truants coiffured 01/01/1902 @ 00:59 -> 01/04/1902 @ 19:16 |Lounges 01/01/1902 @ 00:05 -> 01/03/1902 @ 13:11 |Heisenberg Jewries hookier misfortunes auspiciousness 01/01/1902 @ 08:02 -> 01/01/1902 @ 11:59 |District 01/01/1902 @ 02:54 -> 01/05/1902 @ 06:18 |Grin menstruation's calcurse-3.1.4/test/data/todo0000644000175000001440000001373512105444321013022 00000000000000[7] Wheeling predictor aggrieve dentist's vegetable [-8] Stine's Napier's [9] Gloriously slams [-6] Reigning [5] Television [3] Aladdin ancestoring matzohs [-8] Holloway's turnip's [1] Nary parabled Louvre's fleetest mered [-7] Josef heir's flake [-4] Spins Mondrian's velveteen [-7] Phone's backrest's [2] Surgical handlers fodder Crimea [-1] Finality surging studentship inversely terry [-3] Knitwear's cruet [-6] Scalper board coalescence's speedsters Tabatha's [6] Apprehend domino Olivier's [7] Acid bicepses magnetizing Trotsky's [-9] Tugboat warrantying [4] Restrictive Gresham clinch thunderhead [1] Stench's approximates torus's gymnast's [-5] Sixteen's [-6] Pear bauble clemency's heartbreaks compresses [-8] Bytes asters [2] Freebasing Oppenheimer [8] Secessionists Keogh's [-6] Mass analog's Pharaoh's sensationalists [-7] Dissidence [4] Unbuttoned horsemen beggar's commander Griffin [-6] Computations Yangtze slowpokes sourly bearskin's [2] Finesses Sebastian's nightclubbed [6] Rectangle mascots examiner blah screechy [-3] Electrolyte equities infrastructure's [2] Daydreamed [5] Globed [-2] Stores shamefaced slithering [5] Reverend [7] Proposed trespassed Bultmann [3] Maui [7] Restarts poisoner's Patterson's bucktooth [3] Dislodged washboard inhabitant's [5] Unsafer ingenuousness's supine [-4] Ripeness's nirvana [-7] Invigorating desserts copy's abbé [-5] Shorthorns straddle carbons [6] Lading [-2] Drawling secretary's [6] Ransom tablet [3] Unbarring [1] Uncorks aggression's Charmaine [-1] Donor's mummers dunning [-4] Leafiest tomcats crematoria Teletypes quires [-7] Koshered numismatics's [3] Wavelet's anapests flan [8] Stroke farmyard's deterrent urned [-6] Gunsmiths [8] Chileans smirk footholds [4] Erasmus pawnshop unmasked Andromache transgression's [4] Heighten squirted [-7] Hoodwinks Hector Playboy's fizzy [1] Fillmore's ricks Federico kiloton's steamy [5] Thor songwriters hookup [-1] Chatty [-6] Insensitivity shrill vainly Schindler's installs [1] Originality channeled romantically [-2] Advil [9] Beefburger's [2] Chorals incurred rediscovery's dioxide's firstly [8] Designed breach salarying [1] Phantom's Tagore [-4] Harriet worlds [5] Thereby [-2] Edgewise [8] Pleasanter [1] Kindness redundant [5] Soto's thrones tracing's [-2] Jenner's cymbal's [8] Surreals Zachery demonstrative athlete's [-9] Roommate [-1] Amening Hofstadter's excellently [-4] Refining wildest [2] Sudan's Ger's [3] Yukon's expletives [6] Cox foretold electroencephalogram gargoyle individualizing [6] Speedier buzzer Natalia [2] Sphinx telepathy's [1] Nahum run debauches chambers [-7] Extortion cacophonies [4] Maharajas [3] Virtuosi incompatible [7] Timex's Semarang undercarriage gladiator [-6] Meditates choreographing [-2] Indianapolis career [-8] Sensuality's pushover's bookkeeper's democrat's Establishment's [-7] Sputtering Liz gentle [8] Consonances wounding petties confessors blaze's [-8] Pentateuch's acquiting clumsiest [4] Angstrom [7] Watson sepsis's depoliticizing wried La's [-6] Terrapins [9] Seasons [-5] Bumpier drolly Sallust maws [1] Overstayed [-9] Sheer [6] Arrayed jewelling [8] Distrusted crinkly tels [8] Wilier allegro dine dead [-3] Sores brokerage prerecorded Clifton's [8] Anyone Rowena's rumbled [-1] Chairlift's abstruse Baikal mattresses dowry's [5] Diaz's disrespected washtub's [6] Eisner's conditioning [-7] Ape's [-9] Flirts provocative Liechtenstein mozzarella butterfat's [3] Homeopathy triennials potteries ovoid [2] Perpetrators hypnotize Iliad's personalizes dike [5] Olympia's Esperanto's [2] Receptors instil unripe [7] Groggier [-9] Journalists [-8] Creator [2] Brownsville [-2] Breadwinner sulfides [-7] Canoe impenetrable scrolled [4] Figurehead's nurture [7] Colombia Brahe's Johnston's spectacle jailors [-5] Strawberries syllogism [-1] Skimping brotherliness underscoring provendered [-2] Augment Husserl's unselfishness apostle [-2] Angle manipulates [-8] Other attempts [-6] Cook's scouring eh perimeter tomahawked [1] Metropolises leg's ultimated inseminating minaret's [2] Streptomycin's characterization's mercies entry's montage [1] Hooky niggards [-8] Embroidered Burton's cleave [1] Sharon preponderances hostessing inimitable [8] Briefcase [-9] Sparta's reappraisals whiniest Jocasta's curator's [-9] Becalm careers carotids [4] Inundate [6] Butchery piling's infomercial [3] Delineated [5] Unfinished surfs [-8] Recourse's [-6] Airtight overshot contest's ostentation [8] Roadshow bit's confection pastors wenches [-2] Saussure unselfish [-3] Guy insulation's maria's [7] Observers [-2] Decomposition's registry inboards crowbars [-1] Dahomey's facilitation's [-8] Ehrlich laced countertenor's convergence's choices [-2] Crochet [1] Defiance's cliffhangers battery [6] Multiplex [6] Springfield directs framer's empties [-3] Blunderbuss's [-4] Flusters allegiance's [-5] Trawled [5] Carrousels Avalon's [7] Constantine's ladings [-1] Regencies requires monkeyshines pornographic [7] Trolling [1] Promontory's mutts silk disc's foot [8] Vibrating [-8] Homeyness hibernates sambas fierceness's [8] Noise's quadruplicating multimedia Lyell [3] Equilaterals shes minibuses nudity consolidates [6] Hernia coccyges Orlon's Nirenberg [-2] Soakings Armagnac sexuality's homelier pests [7] Peso chalk's abiding [-6] Portraiture littoral leavening [-9] Boatman fleetingly radiator [3] Sissy husks [-7] Swearers gauntlets deepness acclaims stimulate [-1] Comedown [-9] Jubal's [1] Town vigor alphabetical concluded [-2] Baroda gazpacho's jolliness resupplies [-9] Asked [3] Chandrasekhar's gunfire's Earp's [-3] Bickering's shorts eagerness [-6] Ambiances Gagarin's milksops gargle [-5] Rainforest rediscovered Bohemia [-3] Syntactics smokehouses downward Quirinal reoccupy [-9] Succored sweetbriers [-4] Profess dismemberment fly syndicate [-4] Billeting [-9] Streetwalker's [4] Haberdashery's rates tentative eBay's McCoy [-3] Al's butterflying ovulate recitatives lumbered [2] Eye treads Eng's Peron baize [3] Podded [-9] Plunderer heightened spindlier transiting [-7] Pared [-5] Blueprint's gemstone's ceremony anteater's [3] Quarters calcurse-3.1.4/test/data/conf0000644000175000001440000000477112105444321013002 00000000000000# # Calcurse configuration file # # This file sets the configuration options used by Calcurse. These # options are usually set from within Calcurse. A line beginning with # a space or tab is considered to be a continuation of the previous line. # For a variable to be unset its value must be blank, followed by an # empty line. To set a variable to the empty string its value should be "". # Lines beginning with "#" are comments, and ignored by Calcurse. # If this option is set to yes, automatic save is done when quitting general.autosave=yes # If this option is set to yes, the GC is run automatically when quitting general.autogc=no # If not null, perform automatic saves every 'periodic_save' minutes general.periodicsave=0 # If this option is set to yes, confirmation is required before quitting general.confirmquit=yes # If this option is set to yes, confirmation is required before deleting an event general.confirmdelete=yes # If this option is set to yes, messages about loaded and saved data will not be displayed general.systemdialogs=no # If this option is set to yes, progress bar appearing when saving data will not be displayed general.progressbar=no # Default calendar view (0)monthly (1)weekly: appearance.calendarview=monthly # If this option is set to yes, monday is the first day of the week, else it is sunday general.firstdayofweek=monday # This is the color theme used for menus : appearance.theme=red on default # This is the layout of the calendar : appearance.layout=1 # Width ( percentage, 0 being minimun width, fp) of the side bar : appearance.sidebarwidth=1 # If this option is set to yes, notify-bar will be displayed : appearance.notifybar=yes # Format of the date to be displayed inside notify-bar : format.notifydate=%a %F # Format of the time to be displayed inside notify-bar : format.notifytime=%T # Warn user if he has an appointment within next 'notify-bar_warning' seconds : notification.warning=300 # Command used to notify user of an upcoming appointment : notification.command=printf '\a' # Notify all appointments instead of flagged ones only notification.notifyall=no # Format of the date to be displayed in non-interactive mode : format.outputdate=%D # Format to be used when entering a date (1)mm/dd/yyyy (2)dd/mm/yyyy (3)yyyy/mm/dd) (4)yyyy-mm-dd: format.inputdate=1 # If this option is set to yes, calcurse will run in background to get notifications after exiting daemon.enable=no # If this option is set to yes, activity will be logged when running in background daemon.log=no calcurse-3.1.4/test/data/apts-recur0000644000175000001440000000134112105444321014130 0000000000000001/01/2000 [1] {1D} Each day since 2000-01-01 01/01/2000 [1] {1W} Each Saturday since 2000-01-01 01/01/2000 [1] {1M} Each first day of the month since 2000-01-01 01/01/2000 [1] {1Y} Every year on January, 1st since year 2000 01/01/2000 [1] {2D} Every second day since 2000-01-01 01/01/2000 [1] {4W} Every 28 days since 2000-01-01 01/01/2000 [1] {7D} Same as "01/01/2000 [1] {1W}" 01/01/2000 [1] {3D -> 12/31/2000} Every three days in year 2000 01/01/2000 [1] {3D !01/04/2000} Every three days, but not on 2000-01-04 01/01/2000 @ 16:00 -> 01/02/2000 @ 02:00 {2D} |Recurrent appointment 01/01/2000 @ 00:00 -> 01/07/2000 @ 00:00 {1W} |Another recurrent appointment 01/01/2000 @ 00:00 -> 01/07/2000 @ 00:00 {1D} |Third recurrent appointment calcurse-3.1.4/test/data/apts-bug-0020000644000175000001440000000023112105444321014061 0000000000000003/22/2012 @ 18:30 -> 03/22/2012 @ 21:30 {1W -> 06/21/2012} |German Class 04/19/2012 @ 10:45 -> 04/19/2012 @ 12:45 {1W -> 05/06/2012} |Quantum Mechanics calcurse-3.1.4/test/true-001.sh0000755000175000001440000000002012105444321013014 00000000000000#!/bin/sh true calcurse-3.1.4/test/range-001.sh0000755000175000001440000000056512105444321013147 00000000000000#!/bin/sh if [ ! -x "$(command -v faketime)" ]; then echo "libfaketime not found - skipping $0..." exit 0 fi if [ "$1" = 'actual' ]; then faketime -f '2011-02-25 00:00:00' "$CALCURSE" --read-only -D "$DATA_DIR"/ -r elif [ "$1" = 'expected' ]; then cat < ..:.. Covenants useful smoker's EOD else ./run-test "$0" fi calcurse-3.1.4/test/day-001.sh0000755000175000001440000000036512105444321012626 00000000000000#!/bin/sh if [ "$1" = 'actual' ]; then "$CALCURSE" --read-only -D "$DATA_DIR"/ -d02/25/2011 elif [ "$1" = 'expected' ]; then cat < ..:.. Covenants useful smoker's EOD else ./run-test "$0" fi calcurse-3.1.4/test/day-002.sh0000755000175000001440000000127212105444321012625 00000000000000#!/bin/sh if [ ! -x "$(command -v faketime)" ]; then echo "libfaketime not found - skipping $0..." exit 0 fi if [ "$1" = 'actual' ]; then faketime -f '1912-06-23 00:00:00' "$CALCURSE" --read-only -D "$DATA_DIR"/ \ -d42 elif [ "$1" = 'expected' ]; then cat < ..:.. Impersonating integer broils blame 07/11/12: - ..:.. -> ..:.. Impersonating integer broils blame 07/12/12: - ..:.. -> ..:.. Impersonating integer broils blame 07/13/12: - ..:.. -> 03:18 Impersonating integer broils blame 07/16/12: * Truckles vicissitudes EOD else ./run-test "$0" fi calcurse-3.1.4/test/Makefile.in0000644000175000001440000010457412105444411013270 00000000000000# Makefile.in generated by automake 1.13.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2012 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__make_dryrun = \ { \ am__dry=no; \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ *) \ for am__flg in $$MAKEFLAGS; do \ case $$am__flg in \ *=*|--*) ;; \ *n*) am__dry=yes; break;; \ esac; \ done;; \ esac; \ test $$am__dry = yes; \ } pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ check_PROGRAMS = run-test$(EXEEXT) subdir = test DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ $(top_srcdir)/mkinstalldirs $(top_srcdir)/depcomp \ $(top_srcdir)/test-driver README ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/lib-ld.m4 \ $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am_run_test_OBJECTS = run-test.$(OBJEXT) run_test_OBJECTS = $(am_run_test_OBJECTS) run_test_LDADD = $(LDADD) AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(run_test_SOURCES) DIST_SOURCES = $(run_test_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__tty_colors_dummy = \ mgn= red= grn= lgn= blu= brg= std=; \ am__color_tests=no am__tty_colors = { \ $(am__tty_colors_dummy); \ if test "X$(AM_COLOR_TESTS)" = Xno; then \ am__color_tests=no; \ elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ am__color_tests=yes; \ elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ am__color_tests=yes; \ fi; \ if test $$am__color_tests = yes; then \ red=''; \ grn=''; \ lgn=''; \ blu=''; \ mgn=''; \ brg=''; \ std=''; \ fi; \ } am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__recheck_rx = ^[ ]*:recheck:[ ]* am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* # A command that, given a newline-separated list of test names on the # standard input, print the name of the tests that are to be re-run # upon "make recheck". am__list_recheck_tests = $(AWK) '{ \ recheck = 1; \ while ((rc = (getline line < ($$0 ".trs"))) != 0) \ { \ if (rc < 0) \ { \ if ((getline line2 < ($$0 ".log")) < 0) \ recheck = 0; \ break; \ } \ else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ { \ recheck = 0; \ break; \ } \ else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ { \ break; \ } \ }; \ if (recheck) \ print $$0; \ close ($$0 ".trs"); \ close ($$0 ".log"); \ }' # A command that, given a newline-separated list of test names on the # standard input, create the global log from their .trs and .log files. am__create_global_log = $(AWK) ' \ function fatal(msg) \ { \ print "fatal: making $@: " msg | "cat >&2"; \ exit 1; \ } \ function rst_section(header) \ { \ print header; \ len = length(header); \ for (i = 1; i <= len; i = i + 1) \ printf "="; \ printf "\n\n"; \ } \ { \ copy_in_global_log = 1; \ global_test_result = "RUN"; \ while ((rc = (getline line < ($$0 ".trs"))) != 0) \ { \ if (rc < 0) \ fatal("failed to read from " $$0 ".trs"); \ if (line ~ /$(am__global_test_result_rx)/) \ { \ sub("$(am__global_test_result_rx)", "", line); \ sub("[ ]*$$", "", line); \ global_test_result = line; \ } \ else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ copy_in_global_log = 0; \ }; \ if (copy_in_global_log) \ { \ rst_section(global_test_result ": " $$0); \ while ((rc = (getline line < ($$0 ".log"))) != 0) \ { \ if (rc < 0) \ fatal("failed to read from " $$0 ".log"); \ print line; \ }; \ printf "\n"; \ }; \ close ($$0 ".trs"); \ close ($$0 ".log"); \ }' # Restructured Text title. am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } # Solaris 10 'make', and several other traditional 'make' implementations, # pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it # by disabling -e (using the XSI extension "set +e") if it's set. am__sh_e_setup = case $$- in *e*) set +e;; esac # Default flags passed to test drivers. am__common_driver_flags = \ --color-tests "$$am__color_tests" \ --enable-hard-errors "$$am__enable_hard_errors" \ --expect-failure "$$am__expect_failure" # To be inserted before the command running the test. Creates the # directory for the log if needed. Stores in $dir the directory # containing $f, in $tst the test, in $log the log. Executes the # developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and # passes TESTS_ENVIRONMENT. Set up options for the wrapper that # will run the test scripts (or their associated LOG_COMPILER, if # thy have one). am__check_pre = \ $(am__sh_e_setup); \ $(am__vpath_adj_setup) $(am__vpath_adj) \ $(am__tty_colors); \ srcdir=$(srcdir); export srcdir; \ case "$@" in \ */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ *) am__odir=.;; \ esac; \ test "x$$am__odir" = x"." || test -d "$$am__odir" \ || $(MKDIR_P) "$$am__odir" || exit $$?; \ if test -f "./$$f"; then dir=./; \ elif test -f "$$f"; then dir=; \ else dir="$(srcdir)/"; fi; \ tst=$$dir$$f; log='$@'; \ if test -n '$(DISABLE_HARD_ERRORS)'; then \ am__enable_hard_errors=no; \ else \ am__enable_hard_errors=yes; \ fi; \ case " $(XFAIL_TESTS) " in \ *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ am__expect_failure=yes;; \ *) \ am__expect_failure=no;; \ esac; \ $(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) # A shell command to get the names of the tests scripts with any registered # extension removed (i.e., equivalently, the names of the test logs, with # the '.log' extension removed). The result is saved in the shell variable # '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, # we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", # since that might cause problem with VPATH rewrites for suffix-less tests. # See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. am__set_TESTS_bases = \ bases='$(TEST_LOGS)'; \ bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ bases=`echo $$bases` RECHECK_LOGS = $(TEST_LOGS) AM_RECURSIVE_TARGETS = check recheck TEST_SUITE_LOG = test-suite.log TEST_EXTENSIONS = @EXEEXT@ .test LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) am__set_b = \ case '$@' in \ */*) \ case '$*' in \ */*) b='$*';; \ *) b=`echo '$@' | sed 's/\.log$$//'`; \ esac;; \ *) \ b='$*';; \ esac am__test_logs1 = $(TESTS:=.log) am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) TEST_LOGS = $(am__test_logs2:.test.log=.log) TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ $(TEST_LOG_FLAGS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) A2X = @A2X@ ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ ASCIIDOC = @ASCIIDOC@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GMSGFMT = @GMSGFMT@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ LDFLAGS = @LDFLAGS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ POSUB = @POSUB@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ AUTOMAKE_OPTIONS = foreign TESTS = \ true-001.sh \ run-test-001.sh \ run-test-002.sh \ todo-001.sh \ todo-002.sh \ todo-003.sh \ day-001.sh \ day-002.sh \ day-003.sh \ range-001.sh \ range-002.sh \ range-003.sh \ appointment-001.sh \ next-001.sh \ search-001.sh \ bug-002.sh \ recur-001.sh \ recur-002.sh \ recur-003.sh \ recur-004.sh \ recur-005.sh TESTS_ENVIRONMENT = \ CALCURSE='$(top_builddir)/src/calcurse' \ DATA_DIR='$(top_srcdir)/test/data/' AM_CFLAGS = -std=c99 -pedantic -D_POSIX_C_SOURCE=200809L check_SCRIPTS = $(TESTS) run_test_SOURCES = run-test.c EXTRA_DIST = \ $(TESTS) \ data/apts \ data/apts-bug-002 \ data/apts-recur \ data/conf \ data/todo all: all-am .SUFFIXES: .SUFFIXES: .c .log .o .obj .test .test$(EXEEXT) .trs $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign test/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign test/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-checkPROGRAMS: -test -z "$(check_PROGRAMS)" || rm -f $(check_PROGRAMS) run-test$(EXEEXT): $(run_test_OBJECTS) $(run_test_DEPENDENCIES) $(EXTRA_run_test_DEPENDENCIES) @rm -f run-test$(EXEEXT) $(AM_V_CCLD)$(LINK) $(run_test_OBJECTS) $(run_test_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/run-test.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags # Recover from deleted '.trs' file; this should ensure that # "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create # both 'foo.log' and 'foo.trs'. Break the recipe in two subshells # to avoid problems with "make -n". .log.trs: rm -f $< $@ $(MAKE) $(AM_MAKEFLAGS) $< # Leading 'am--fnord' is there to ensure the list of targets does not # exand to empty, as could happen e.g. with make check TESTS=''. am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) am--force-recheck: @: $(TEST_SUITE_LOG): $(TEST_LOGS) @$(am__set_TESTS_bases); \ am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ redo_bases=`for i in $$bases; do \ am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ done`; \ if test -n "$$redo_bases"; then \ redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ if $(am__make_dryrun); then :; else \ rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ fi; \ fi; \ if test -n "$$am__remaking_logs"; then \ echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ "recursion detected" >&2; \ else \ am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ fi; \ if $(am__make_dryrun); then :; else \ st=0; \ errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ for i in $$redo_bases; do \ test -f $$i.trs && test -r $$i.trs \ || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ test -f $$i.log && test -r $$i.log \ || { echo "$$errmsg $$i.log" >&2; st=1; }; \ done; \ test $$st -eq 0 || exit 1; \ fi @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ ws='[ ]'; \ results=`for b in $$bases; do echo $$b.trs; done`; \ test -n "$$results" || results=/dev/null; \ all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ if test `expr $$fail + $$xpass + $$error` -eq 0; then \ success=true; \ else \ success=false; \ fi; \ br='==================='; br=$$br$$br$$br$$br; \ result_count () \ { \ if test x"$$1" = x"--maybe-color"; then \ maybe_colorize=yes; \ elif test x"$$1" = x"--no-color"; then \ maybe_colorize=no; \ else \ echo "$@: invalid 'result_count' usage" >&2; exit 4; \ fi; \ shift; \ desc=$$1 count=$$2; \ if test $$maybe_colorize = yes && test $$count -gt 0; then \ color_start=$$3 color_end=$$std; \ else \ color_start= color_end=; \ fi; \ echo "$${color_start}# $$desc $$count$${color_end}"; \ }; \ create_testsuite_report () \ { \ result_count $$1 "TOTAL:" $$all "$$brg"; \ result_count $$1 "PASS: " $$pass "$$grn"; \ result_count $$1 "SKIP: " $$skip "$$blu"; \ result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ result_count $$1 "FAIL: " $$fail "$$red"; \ result_count $$1 "XPASS:" $$xpass "$$red"; \ result_count $$1 "ERROR:" $$error "$$mgn"; \ }; \ { \ echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ $(am__rst_title); \ create_testsuite_report --no-color; \ echo; \ echo ".. contents:: :depth: 2"; \ echo; \ for b in $$bases; do echo $$b; done \ | $(am__create_global_log); \ } >$(TEST_SUITE_LOG).tmp || exit 1; \ mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ if $$success; then \ col="$$grn"; \ else \ col="$$red"; \ test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ fi; \ echo "$${col}$$br$${std}"; \ echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ echo "$${col}$$br$${std}"; \ create_testsuite_report --maybe-color; \ echo "$$col$$br$$std"; \ if $$success; then :; else \ echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ if test -n "$(PACKAGE_BUGREPORT)"; then \ echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ fi; \ echo "$$col$$br$$std"; \ fi; \ $$success || exit 1 check-TESTS: @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) @set +e; $(am__set_TESTS_bases); \ log_list=`for i in $$bases; do echo $$i.log; done`; \ trs_list=`for i in $$bases; do echo $$i.trs; done`; \ log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ exit $$?; recheck: all $(check_PROGRAMS) $(check_SCRIPTS) @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) @set +e; $(am__set_TESTS_bases); \ bases=`for i in $$bases; do echo $$i; done \ | $(am__list_recheck_tests)` || exit 1; \ log_list=`for i in $$bases; do echo $$i.log; done`; \ log_list=`echo $$log_list`; \ $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ am__force_recheck=am--force-recheck \ TEST_LOGS="$$log_list"; \ exit $$? true-001.sh.log: true-001.sh @p='true-001.sh'; \ b='true-001.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) run-test-001.sh.log: run-test-001.sh @p='run-test-001.sh'; \ b='run-test-001.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) run-test-002.sh.log: run-test-002.sh @p='run-test-002.sh'; \ b='run-test-002.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) todo-001.sh.log: todo-001.sh @p='todo-001.sh'; \ b='todo-001.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) todo-002.sh.log: todo-002.sh @p='todo-002.sh'; \ b='todo-002.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) todo-003.sh.log: todo-003.sh @p='todo-003.sh'; \ b='todo-003.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) day-001.sh.log: day-001.sh @p='day-001.sh'; \ b='day-001.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) day-002.sh.log: day-002.sh @p='day-002.sh'; \ b='day-002.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) day-003.sh.log: day-003.sh @p='day-003.sh'; \ b='day-003.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) range-001.sh.log: range-001.sh @p='range-001.sh'; \ b='range-001.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) range-002.sh.log: range-002.sh @p='range-002.sh'; \ b='range-002.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) range-003.sh.log: range-003.sh @p='range-003.sh'; \ b='range-003.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) appointment-001.sh.log: appointment-001.sh @p='appointment-001.sh'; \ b='appointment-001.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) next-001.sh.log: next-001.sh @p='next-001.sh'; \ b='next-001.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) search-001.sh.log: search-001.sh @p='search-001.sh'; \ b='search-001.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) bug-002.sh.log: bug-002.sh @p='bug-002.sh'; \ b='bug-002.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) recur-001.sh.log: recur-001.sh @p='recur-001.sh'; \ b='recur-001.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) recur-002.sh.log: recur-002.sh @p='recur-002.sh'; \ b='recur-002.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) recur-003.sh.log: recur-003.sh @p='recur-003.sh'; \ b='recur-003.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) recur-004.sh.log: recur-004.sh @p='recur-004.sh'; \ b='recur-004.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) recur-005.sh.log: recur-005.sh @p='recur-005.sh'; \ b='recur-005.sh'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) .test.log: @p='$<'; \ $(am__set_b); \ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) @am__EXEEXT_TRUE@.test$(EXEEXT).log: @am__EXEEXT_TRUE@ @p='$<'; \ @am__EXEEXT_TRUE@ $(am__set_b); \ @am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ @am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ @am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ @am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) $(check_SCRIPTS) $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: check-am all-am: Makefile installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-checkPROGRAMS clean-generic mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: check-am install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ clean-checkPROGRAMS clean-generic cscopelist-am ctags ctags-am \ distclean distclean-compile distclean-generic distclean-tags \ distdir dvi dvi-am html html-am info info-am install \ install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-compile mostlyclean-generic pdf pdf-am ps ps-am \ recheck tags tags-am uninstall uninstall-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: calcurse-3.1.4/test/run-test-002.sh0000755000175000001440000000017012105444321013625 00000000000000#!/bin/sh if [ "$1" = 'actual' ]; then echo 23 elif [ "$1" = 'expected' ]; then echo 42 else ./run-test "!$0" fi calcurse-3.1.4/test/day-003.sh0000755000175000001440000000053612105444321012630 00000000000000#!/bin/sh if [ ! -x "$(command -v faketime)" ]; then echo "libfaketime not found - skipping $0..." exit 0 fi if [ "$1" = 'actual' ]; then faketime -f '1912-06-23 00:00:00' "$CALCURSE" --read-only -D "$DATA_DIR"/ \ -d42 elif [ "$1" = 'expected' ]; then "$CALCURSE" --read-only -D "$DATA_DIR"/ -s06/23/1912 -r42 else ./run-test "$0" fi calcurse-3.1.4/test/recur-004.sh0000755000175000001440000000056512105444321013176 00000000000000#!/bin/sh if [ "$1" = 'actual' ]; then "$CALCURSE" --read-only -D "$DATA_DIR"/ -c "$DATA_DIR/apts-recur" \ -d01/01/2000 --format-recur-event='' elif [ "$1" = 'expected' ]; then cat < ..:.. Another recurrent appointment - 00:00 -> ..:.. Third recurrent appointment - 16:00 -> ..:.. Recurrent appointment EOD else ./run-test "$0" fi calcurse-3.1.4/test/range-002.sh0000755000175000001440000000127512105444321013147 00000000000000#!/bin/sh if [ ! -x "$(command -v faketime)" ]; then echo "libfaketime not found - skipping $0..." exit 0 fi if [ "$1" = 'actual' ]; then faketime -f '2000-01-01 00:00:00' "$CALCURSE" --read-only -D "$DATA_DIR"/ \ -r400 elif [ "$1" = 'expected' ]; then cat < ..:.. Plodder's moulting smokestacks instruments vagrancy's 10/20/00: - ..:.. -> 04:55 Plodder's moulting smokestacks instruments vagrancy's 01/25/01: * Accurateness hoed flakiness's EOD else ./run-test "$0" fi calcurse-3.1.4/test/run-test.c0000644000175000001440000001262212105444321013140 00000000000000/* * Calcurse - text-based organizer * * Copyright (c) 2004-2013 calcurse Development Team * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * - Redistributions of source code must retain the above * copyright notice, this list of conditions and the * following disclaimer. * * - Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the * following disclaimer in the documentation and/or other * materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * Send your feedback or comments to : misc@calcurse.org * Calcurse home page : http://calcurse.org * */ #include #include #include #include #include #include #include #include /* * Fork and execute an external process. * * If pfdin and/or pfdout point to a valid address, a pipe is created and the * appropriate file descriptors are written to pfdin/pfdout. */ static int fork_exec(int *pfdin, int *pfdout, const char *path, char *const *arg) { int pin[2], pout[2]; int pid; if (pfdin && (pipe(pin) == -1)) return 0; if (pfdout && (pipe(pout) == -1)) return 0; if ((pid = fork()) == 0) { if (pfdout) { if (dup2(pout[0], STDIN_FILENO) < 0) _exit(127); close(pout[0]); close(pout[1]); } if (pfdin) { if (dup2(pin[1], STDOUT_FILENO) < 0) _exit(127); close(pin[0]); close(pin[1]); } execvp(path, arg); _exit(127); } else { if (pfdin) close(pin[1]); if (pfdout) close(pout[0]); if (pid > 0) { if (pfdin) { fcntl(pin[0], F_SETFD, FD_CLOEXEC); *pfdin = pin[0]; } if (pfdout) { fcntl(pout[1], F_SETFD, FD_CLOEXEC); *pfdout = pout[1]; } } else { if (pfdin) close(pin[0]); if (pfdout) close(pout[1]); return 0; } } return pid; } /* Wait for a child process to terminate. */ static int child_wait(int *pfdin, int *pfdout, int pid) { int stat; if (pfdin) close(*pfdin); if (pfdout) close(*pfdout); waitpid(pid, &stat, 0); return stat; } /* Print error message and bail out. */ static void die(const char *format, ...) { va_list arg; va_start(arg, format); fprintf(stderr, "error: "); vfprintf(stderr, format, arg); va_end(arg); exit(1); } /* Print usage message. */ static void usage(void) { printf("usage: run-test [-h|--help] ...\n"); } /* Run test with a specific name. */ static int run_test(const char *name, int expect_failure) { char filename[BUFSIZ]; char *arg1[3], *arg2[3]; int pid1 = -1, pin1, pid2 = -1, pin2; FILE *fpin1 = NULL, *fpin2 = NULL; char buf1[BUFSIZ], buf2[BUFSIZ]; int ret = 1; if (snprintf(filename, BUFSIZ, "./%s", name) >= BUFSIZ) die("file name too long\n"); if (access(filename, F_OK) != 0) { if (snprintf(filename, BUFSIZ, "./%s.sh", name) >= BUFSIZ) die("file name too long\n"); if (access(filename, F_OK) != 0) die("test not found: %s\n", name); } if (access(filename, X_OK) != 0) die("script is not executable: %s\n", filename); arg1[0] = arg2[0] = filename; arg1[1] = "expected"; arg2[1] = "actual"; arg1[2] = arg2[2] = NULL; printf("Running %s...", name); if ((pid1 = fork_exec(&pin1, NULL, *arg1, arg1)) < 0) die("failed to execute %s: %s\n", filename, strerror(errno)); if ((pid2 = fork_exec(&pin2, NULL, *arg2, arg2)) < 0) die("failed to execute %s: %s\n", filename, strerror(errno)); fpin1 = fdopen(pin1, "r"); fpin2 = fdopen(pin2, "r"); while (fgets(buf1, BUFSIZ, fpin1)) { if (!fgets(buf2, BUFSIZ, fpin2) || strcmp(buf1, buf2) != 0) { ret = 0; break; } } if (fgets(buf2, BUFSIZ, fpin2)) ret = 0; if (fpin1) fclose(fpin1); if (fpin2) fclose(fpin2); if (child_wait(&pin1, NULL, pid1) != 0) ret = 0; if (child_wait(&pin2, NULL, pid2) != 0) ret = 0; if (expect_failure) ret = 1 - ret; if (ret == 1) printf(" ok\n"); else printf(" FAIL\n"); return ret; } int main(int argc, char **argv) { int i; if (!argv[1]) die("no tests specified, bailing out\n"); else if (strcmp(argv[1], "-h") == 0 || strcmp(argv[1], "--help") == 0) { usage(); return 0; } for (i = 1; i < argc; i++) { if (*argv[i] == '!') { if (!run_test(argv[i] + 1, 1)) return 1; } else { if (!run_test(argv[i], 0)) return 1; } } return 0; } calcurse-3.1.4/test/recur-005.sh0000755000175000001440000000056512105444321013177 00000000000000#!/bin/sh if [ "$1" = 'actual' ]; then "$CALCURSE" --read-only -D "$DATA_DIR"/ -c "$DATA_DIR/apts-recur" \ -d01/10/2000 --format-recur-event='' elif [ "$1" = 'expected' ]; then cat < ..:.. Another recurrent appointment - ..:.. -> 02:00 Recurrent appointment - 00:00 -> ..:.. Third recurrent appointment EOD else ./run-test "$0" fi calcurse-3.1.4/test/recur-001.sh0000755000175000001440000000216612105444321013172 00000000000000#!/bin/sh if [ "$1" = 'actual' ]; then "$CALCURSE" --read-only -D "$DATA_DIR"/ -c "$DATA_DIR/apts-recur" \ -s01/01/2000 -r8 --format-recur-apt='' elif [ "$1" = 'expected' ]; then cat < ..:.. Covenants useful smoker's EOD else ./run-test "$0" fi calcurse-3.1.4/test/bug-002.sh0000755000175000001440000000043312105444321012623 00000000000000#!/bin/sh if [ "$1" = 'actual' ]; then "$CALCURSE" --read-only -D "$DATA_DIR"/ -c "$DATA_DIR/apts-bug-002" \ -d05/03/2012 elif [ "$1" = 'expected' ]; then cat < 12:45 Quantum Mechanics - 18:30 -> 21:30 German Class EOD else ./run-test "$0" fi calcurse-3.1.4/test/recur-002.sh0000755000175000001440000000046712105444321013175 00000000000000#!/bin/sh if [ "$1" = 'actual' ]; then "$CALCURSE" --read-only -D "$DATA_DIR"/ -c "$DATA_DIR/apts-recur" \ -d02/01/2000 --format-recur-apt='' elif [ "$1" = 'expected' ]; then cat < ..:.. Manuel glorified four 12/07/42: - ..:.. -> 04:33 Manuel glorified four 05/28/85: * Sandbox processor's overdraft's EOD else ./run-test "$0" fi calcurse-3.1.4/test/range-003.sh0000755000175000001440000000054012105444321013142 00000000000000#!/bin/sh if [ ! -x "$(command -v faketime)" ]; then echo "libfaketime not found - skipping $0..." exit 0 fi if [ "$1" = 'actual' ]; then faketime -f '2000-01-01 00:00:00' "$CALCURSE" --read-only -D "$DATA_DIR"/ \ -r400 elif [ "$1" = 'expected' ]; then "$CALCURSE" --read-only -D "$DATA_DIR"/ -s01/01/2000 -r400 else ./run-test "$0" fi calcurse-3.1.4/aclocal.m40000644000175000001440000010756512105444405012112 00000000000000# generated automatically by aclocal 1.13.1 -*- Autoconf -*- # Copyright (C) 1996-2012 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])]) m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],, [m4_warning([this file was generated for autoconf 2.69. You have another version of autoconf. It may work, but is not guaranteed to. If you have problems, you may need to regenerate the build system entirely. To do so, use the procedure documented by the package, typically 'autoreconf'.])]) # Copyright (C) 2002-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_AUTOMAKE_VERSION(VERSION) # ---------------------------- # Automake X.Y traces this macro to ensure aclocal.m4 has been # generated from the m4 files accompanying Automake X.Y. # (This private macro should not be called outside this file.) AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version='1.13' dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to dnl require some minimum version. Point them to the right macro. m4_if([$1], [1.13.1], [], [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl ]) # _AM_AUTOCONF_VERSION(VERSION) # ----------------------------- # aclocal traces this macro to find the Autoconf version. # This is a private macro too. Using m4_define simplifies # the logic in aclocal, which can simply ignore this definition. m4_define([_AM_AUTOCONF_VERSION], []) # AM_SET_CURRENT_AUTOMAKE_VERSION # ------------------------------- # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. # This function is AC_REQUIREd by AM_INIT_AUTOMAKE. AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], [AM_AUTOMAKE_VERSION([1.13.1])dnl m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) # AM_AUX_DIR_EXPAND -*- Autoconf -*- # Copyright (C) 2001-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets # $ac_aux_dir to '$srcdir/foo'. In other projects, it is set to # '$srcdir', '$srcdir/..', or '$srcdir/../..'. # # Of course, Automake must honor this variable whenever it calls a # tool from the auxiliary directory. The problem is that $srcdir (and # therefore $ac_aux_dir as well) can be either absolute or relative, # depending on how configure is run. This is pretty annoying, since # it makes $ac_aux_dir quite unusable in subdirectories: in the top # source directory, any form will work fine, but in subdirectories a # relative path needs to be adjusted first. # # $ac_aux_dir/missing # fails when called from a subdirectory if $ac_aux_dir is relative # $top_srcdir/$ac_aux_dir/missing # fails if $ac_aux_dir is absolute, # fails when called from a subdirectory in a VPATH build with # a relative $ac_aux_dir # # The reason of the latter failure is that $top_srcdir and $ac_aux_dir # are both prefixed by $srcdir. In an in-source build this is usually # harmless because $srcdir is '.', but things will broke when you # start a VPATH build or use an absolute $srcdir. # # So we could use something similar to $top_srcdir/$ac_aux_dir/missing, # iff we strip the leading $srcdir from $ac_aux_dir. That would be: # am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` # and then we would define $MISSING as # MISSING="\${SHELL} $am_aux_dir/missing" # This will work as long as MISSING is not called from configure, because # unfortunately $(top_srcdir) has no meaning in configure. # However there are other variables, like CC, which are often used in # configure, and could therefore not use this "fixed" $ac_aux_dir. # # Another solution, used here, is to always expand $ac_aux_dir to an # absolute PATH. The drawback is that using absolute paths prevent a # configured tree to be moved without reconfiguration. AC_DEFUN([AM_AUX_DIR_EXPAND], [dnl Rely on autoconf to set up CDPATH properly. AC_PREREQ([2.50])dnl # expand $ac_aux_dir to an absolute path am_aux_dir=`cd $ac_aux_dir && pwd` ]) # AM_CONDITIONAL -*- Autoconf -*- # Copyright (C) 1997-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_CONDITIONAL(NAME, SHELL-CONDITION) # ------------------------------------- # Define a conditional. AC_DEFUN([AM_CONDITIONAL], [AC_PREREQ([2.52])dnl m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl AC_SUBST([$1_TRUE])dnl AC_SUBST([$1_FALSE])dnl _AM_SUBST_NOTMAKE([$1_TRUE])dnl _AM_SUBST_NOTMAKE([$1_FALSE])dnl m4_define([_AM_COND_VALUE_$1], [$2])dnl if $2; then $1_TRUE= $1_FALSE='#' else $1_TRUE='#' $1_FALSE= fi AC_CONFIG_COMMANDS_PRE( [if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then AC_MSG_ERROR([[conditional "$1" was never defined. Usually this means the macro was only invoked conditionally.]]) fi])]) # Copyright (C) 1999-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be # written in clear, in which case automake, when reading aclocal.m4, # will think it sees a *use*, and therefore will trigger all it's # C support machinery. Also note that it means that autoscan, seeing # CC etc. in the Makefile, will ask for an AC_PROG_CC use... # _AM_DEPENDENCIES(NAME) # ---------------------- # See how the compiler implements dependency checking. # NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC". # We try a few techniques and use that to set a single cache variable. # # We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was # modified to invoke _AM_DEPENDENCIES(CC); we would have a circular # dependency, and given that the user is not expected to run this macro, # just rely on AC_PROG_CC. AC_DEFUN([_AM_DEPENDENCIES], [AC_REQUIRE([AM_SET_DEPDIR])dnl AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl AC_REQUIRE([AM_MAKE_INCLUDE])dnl AC_REQUIRE([AM_DEP_TRACK])dnl m4_if([$1], [CC], [depcc="$CC" am_compiler_list=], [$1], [CXX], [depcc="$CXX" am_compiler_list=], [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'], [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'], [$1], [UPC], [depcc="$UPC" am_compiler_list=], [$1], [GCJ], [depcc="$GCJ" am_compiler_list='gcc3 gcc'], [depcc="$$1" am_compiler_list=]) AC_CACHE_CHECK([dependency style of $depcc], [am_cv_$1_dependencies_compiler_type], [if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_$1_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` fi am__universal=false m4_case([$1], [CC], [case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac], [CXX], [case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac]) for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_$1_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_$1_dependencies_compiler_type=none fi ]) AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) AM_CONDITIONAL([am__fastdep$1], [ test "x$enable_dependency_tracking" != xno \ && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) ]) # AM_SET_DEPDIR # ------------- # Choose a directory name for dependency files. # This macro is AC_REQUIREd in _AM_DEPENDENCIES. AC_DEFUN([AM_SET_DEPDIR], [AC_REQUIRE([AM_SET_LEADING_DOT])dnl AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl ]) # AM_DEP_TRACK # ------------ AC_DEFUN([AM_DEP_TRACK], [AC_ARG_ENABLE([dependency-tracking], [dnl AS_HELP_STRING( [--enable-dependency-tracking], [do not reject slow dependency extractors]) AS_HELP_STRING( [--disable-dependency-tracking], [speeds up one-time build])]) if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' am__nodep='_no' fi AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) AC_SUBST([AMDEPBACKSLASH])dnl _AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl AC_SUBST([am__nodep])dnl _AM_SUBST_NOTMAKE([am__nodep])dnl ]) # Generate code to set up dependency tracking. -*- Autoconf -*- # Copyright (C) 1999-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_OUTPUT_DEPENDENCY_COMMANDS # ------------------------------ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], [{ # Older Autoconf quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. case $CONFIG_FILES in *\'*) eval set x "$CONFIG_FILES" ;; *) set x $CONFIG_FILES ;; esac shift for mf do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. # We used to match only the files named 'Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. # Grep'ing the whole file is not good either: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then dirpart=`AS_DIRNAME("$mf")` else continue fi # Extract the definition of DEPDIR, am__include, and am__quote # from the Makefile without running 'make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`AS_DIRNAME(["$file"])` AS_MKDIR_P([$dirpart/$fdir]) # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done } ])# _AM_OUTPUT_DEPENDENCY_COMMANDS # AM_OUTPUT_DEPENDENCY_COMMANDS # ----------------------------- # This macro should only be invoked once -- use via AC_REQUIRE. # # This code is only required when automatic dependency tracking # is enabled. FIXME. This creates each '.P' file that we will # need in order to bootstrap the dependency handling code. AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], [AC_CONFIG_COMMANDS([depfiles], [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) ]) # Do all the work for Automake. -*- Autoconf -*- # Copyright (C) 1996-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This macro actually does too much. Some checks are only needed if # your package does certain things. But this isn't really a big deal. # AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) # AM_INIT_AUTOMAKE([OPTIONS]) # ----------------------------------------------- # The call with PACKAGE and VERSION arguments is the old style # call (pre autoconf-2.50), which is being phased out. PACKAGE # and VERSION should now be passed to AC_INIT and removed from # the call to AM_INIT_AUTOMAKE. # We support both call styles for the transition. After # the next Automake release, Autoconf can make the AC_INIT # arguments mandatory, and then we can depend on a new Autoconf # release and drop the old call support. AC_DEFUN([AM_INIT_AUTOMAKE], [AC_PREREQ([2.65])dnl dnl Autoconf wants to disallow AM_ names. We explicitly allow dnl the ones we care about. m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl AC_REQUIRE([AC_PROG_INSTALL])dnl if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl # test to see if srcdir already configured if test -f $srcdir/config.status; then AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi AC_SUBST([CYGPATH_W]) # Define the identity of the package. dnl Distinguish between old-style and new-style calls. m4_ifval([$2], [AC_DIAGNOSE([obsolete], [$0: two- and three-arguments forms are deprecated.]) m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl AC_SUBST([PACKAGE], [$1])dnl AC_SUBST([VERSION], [$2])], [_AM_SET_OPTIONS([$1])dnl dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. m4_if( m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]), [ok:ok],, [m4_fatal([AC_INIT should be called with package and version arguments])])dnl AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl _AM_IF_OPTION([no-define],, [AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package]) AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl # Some tools Automake needs. AC_REQUIRE([AM_SANITY_CHECK])dnl AC_REQUIRE([AC_ARG_PROGRAM])dnl AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}]) AM_MISSING_PROG([AUTOCONF], [autoconf]) AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}]) AM_MISSING_PROG([AUTOHEADER], [autoheader]) AM_MISSING_PROG([MAKEINFO], [makeinfo]) AC_REQUIRE([AM_PROG_INSTALL_SH])dnl AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl AC_REQUIRE([AC_PROG_MKDIR_P])dnl # For better backward compatibility. To be removed once Automake 1.9.x # dies out for good. For more background, see: # # AC_SUBST([mkdir_p], ['$(MKDIR_P)']) # We need awk for the "check" target. The system "awk" is bad on # some platforms. AC_REQUIRE([AC_PROG_AWK])dnl AC_REQUIRE([AC_PROG_MAKE_SET])dnl AC_REQUIRE([AM_SET_LEADING_DOT])dnl _AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], [_AM_PROG_TAR([v7])])]) _AM_IF_OPTION([no-dependencies],, [AC_PROVIDE_IFELSE([AC_PROG_CC], [_AM_DEPENDENCIES([CC])], [m4_define([AC_PROG_CC], m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl AC_PROVIDE_IFELSE([AC_PROG_CXX], [_AM_DEPENDENCIES([CXX])], [m4_define([AC_PROG_CXX], m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJC], [_AM_DEPENDENCIES([OBJC])], [m4_define([AC_PROG_OBJC], m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJCXX], [_AM_DEPENDENCIES([OBJCXX])], [m4_define([AC_PROG_OBJCXX], m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl ]) AC_REQUIRE([AM_SILENT_RULES])dnl dnl The testsuite driver may need to know about EXEEXT, so add the dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below. AC_CONFIG_COMMANDS_PRE(dnl [m4_provide_if([_AM_COMPILER_EXEEXT], [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl ]) dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further dnl mangled by Autoconf and run in a shell conditional statement. m4_define([_AC_COMPILER_EXEEXT], m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) # When config.status generates a header, we must update the stamp-h file. # This file resides in the same directory as the config header # that is generated. The stamp files are numbered to have different names. # Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the # loop where config.status creates the headers, so we can generate # our stamp files there. AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], [# Compute $1's index in $config_headers. _am_arg=$1 _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) # Copyright (C) 2001-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PROG_INSTALL_SH # ------------------ # Define $install_sh. AC_DEFUN([AM_PROG_INSTALL_SH], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl if test x"${install_sh}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi AC_SUBST([install_sh])]) # Copyright (C) 2003-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # Check whether the underlying file-system supports filenames # with a leading dot. For instance MS-DOS doesn't. AC_DEFUN([AM_SET_LEADING_DOT], [rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null AC_SUBST([am__leading_dot])]) # Check to see how 'make' treats includes. -*- Autoconf -*- # Copyright (C) 2001-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_MAKE_INCLUDE() # ----------------- # Check to see how make treats includes. AC_DEFUN([AM_MAKE_INCLUDE], [am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo this is the am__doit target .PHONY: am__doit END # If we don't find an include directive, just comment out the code. AC_MSG_CHECKING([for style of include used by $am_make]) am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # Ignore all kinds of additional output from 'make'. case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=include am__quote= _am_result=GNU ;; esac # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=.include am__quote="\"" _am_result=BSD ;; esac fi AC_SUBST([am__include]) AC_SUBST([am__quote]) AC_MSG_RESULT([$_am_result]) rm -f confinc confmf ]) # Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- # Copyright (C) 1997-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_MISSING_PROG(NAME, PROGRAM) # ------------------------------ AC_DEFUN([AM_MISSING_PROG], [AC_REQUIRE([AM_MISSING_HAS_RUN]) $1=${$1-"${am_missing_run}$2"} AC_SUBST($1)]) # AM_MISSING_HAS_RUN # ------------------ # Define MISSING if not defined so far and test if it is modern enough. # If it is, set am_missing_run to use it, otherwise, to nothing. AC_DEFUN([AM_MISSING_HAS_RUN], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([missing])dnl if test x"${MISSING+set}" != xset; then case $am_aux_dir in *\ * | *\ *) MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; *) MISSING="\${SHELL} $am_aux_dir/missing" ;; esac fi # Use eval to expand $SHELL if eval "$MISSING --is-lightweight"; then am_missing_run="$MISSING " else am_missing_run= AC_MSG_WARN(['missing' script is too old or missing]) fi ]) # Helper functions for option handling. -*- Autoconf -*- # Copyright (C) 2001-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_MANGLE_OPTION(NAME) # ----------------------- AC_DEFUN([_AM_MANGLE_OPTION], [[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) # _AM_SET_OPTION(NAME) # -------------------- # Set option NAME. Presently that only means defining a flag for this option. AC_DEFUN([_AM_SET_OPTION], [m4_define(_AM_MANGLE_OPTION([$1]), [1])]) # _AM_SET_OPTIONS(OPTIONS) # ------------------------ # OPTIONS is a space-separated list of Automake options. AC_DEFUN([_AM_SET_OPTIONS], [m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) # _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) # ------------------------------------------- # Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) # Check to make sure that the build environment is sane. -*- Autoconf -*- # Copyright (C) 1996-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_SANITY_CHECK # --------------- AC_DEFUN([AM_SANITY_CHECK], [AC_MSG_CHECKING([whether build environment is sane]) # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[[\\\"\#\$\&\'\`$am_lf]]*) AC_MSG_ERROR([unsafe absolute working directory name]);; esac case $srcdir in *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);; esac # Do 'set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( am_has_slept=no for am_try in 1 2; do echo "timestamp, slept: $am_has_slept" > conftest.file set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$[*]" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi if test "$[*]" != "X $srcdir/configure conftest.file" \ && test "$[*]" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken alias in your environment]) fi if test "$[2]" = conftest.file || test $am_try -eq 2; then break fi # Just in case. sleep 1 am_has_slept=yes done test "$[2]" = conftest.file ) then # Ok. : else AC_MSG_ERROR([newly created file is older than distributed files! Check your system clock]) fi AC_MSG_RESULT([yes]) # If we didn't sleep, we still need to ensure time stamps of config.status and # generated files are strictly newer. am_sleep_pid= if grep 'slept: no' conftest.file >/dev/null 2>&1; then ( sleep 1 ) & am_sleep_pid=$! fi AC_CONFIG_COMMANDS_PRE( [AC_MSG_CHECKING([that generated files are newer than configure]) if test -n "$am_sleep_pid"; then # Hide warnings about reused PIDs. wait $am_sleep_pid 2>/dev/null fi AC_MSG_RESULT([done])]) rm -f conftest.file ]) # Copyright (C) 2009-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_SILENT_RULES([DEFAULT]) # -------------------------- # Enable less verbose build rules; with the default set to DEFAULT # ("yes" being less verbose, "no" or empty being verbose). AC_DEFUN([AM_SILENT_RULES], [AC_ARG_ENABLE([silent-rules], [dnl AS_HELP_STRING( [--enable-silent-rules], [less verbose build output (undo: "make V=1")]) AS_HELP_STRING( [--disable-silent-rules], [verbose build output (undo: "make V=0")])dnl ]) case $enable_silent_rules in @%:@ ((( yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);; esac dnl dnl A few 'make' implementations (e.g., NonStop OS and NextStep) dnl do not support nested variable expansions. dnl See automake bug#9928 and bug#10237. am_make=${MAKE-make} AC_CACHE_CHECK([whether $am_make supports nested variables], [am_cv_make_support_nested_variables], [if AS_ECHO([['TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 am__doit: @$(TRUE) .PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then am_cv_make_support_nested_variables=yes else am_cv_make_support_nested_variables=no fi]) if test $am_cv_make_support_nested_variables = yes; then dnl Using '$V' instead of '$(V)' breaks IRIX make. AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' else AM_V=$AM_DEFAULT_VERBOSITY AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY fi AC_SUBST([AM_V])dnl AM_SUBST_NOTMAKE([AM_V])dnl AC_SUBST([AM_DEFAULT_V])dnl AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl AC_SUBST([AM_DEFAULT_VERBOSITY])dnl AM_BACKSLASH='\' AC_SUBST([AM_BACKSLASH])dnl _AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl ]) # Copyright (C) 2001-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PROG_INSTALL_STRIP # --------------------- # One issue with vendor 'install' (even GNU) is that you can't # specify the program used to strip binaries. This is especially # annoying in cross-compiling environments, where the build's strip # is unlikely to handle the host's binaries. # Fortunately install-sh will honor a STRIPPROG variable, so we # always use install-sh in "make install-strip", and initialize # STRIPPROG with the value of the STRIP variable (set by the user). AC_DEFUN([AM_PROG_INSTALL_STRIP], [AC_REQUIRE([AM_PROG_INSTALL_SH])dnl # Installed binaries are usually stripped using 'strip' when the user # run "make install-strip". However 'strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the 'STRIP' environment variable to overrule this program. dnl Don't test for $cross_compiling = yes, because it might be 'maybe'. if test "$cross_compiling" != no; then AC_CHECK_TOOL([STRIP], [strip], :) fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" AC_SUBST([INSTALL_STRIP_PROGRAM])]) # Copyright (C) 2006-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_SUBST_NOTMAKE(VARIABLE) # --------------------------- # Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. # This macro is traced by Automake. AC_DEFUN([_AM_SUBST_NOTMAKE]) # AM_SUBST_NOTMAKE(VARIABLE) # -------------------------- # Public sister of _AM_SUBST_NOTMAKE. AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) # Check how to create a tarball. -*- Autoconf -*- # Copyright (C) 2004-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_PROG_TAR(FORMAT) # -------------------- # Check how to create a tarball in format FORMAT. # FORMAT should be one of 'v7', 'ustar', or 'pax'. # # Substitute a variable $(am__tar) that is a command # writing to stdout a FORMAT-tarball containing the directory # $tardir. # tardir=directory && $(am__tar) > result.tar # # Substitute a variable $(am__untar) that extract such # a tarball read from stdin. # $(am__untar) < result.tar AC_DEFUN([_AM_PROG_TAR], [# Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AC_SUBST([AMTAR], ['$${TAR-tar}']) m4_if([$1], [v7], [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], [m4_case([$1], [ustar],, [pax],, [m4_fatal([Unknown tar format])]) AC_MSG_CHECKING([how to create a $1 tar archive]) # Loop over all known methods to create a tar archive until one works. _am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' _am_tools=${am_cv_prog_tar_$1-$_am_tools} # Do not fold the above two line into one, because Tru64 sh and # Solaris sh will not grok spaces in the rhs of '-'. for _am_tool in $_am_tools do case $_am_tool in gnutar) for _am_tar in tar gnutar gtar; do AM_RUN_LOG([$_am_tar --version]) && break done am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' am__untar="$_am_tar -xf -" ;; plaintar) # Must skip GNU tar: if it does not support --format= it doesn't create # ustar tarball either. (tar --version) >/dev/null 2>&1 && continue am__tar='tar chf - "$$tardir"' am__tar_='tar chf - "$tardir"' am__untar='tar xf -' ;; pax) am__tar='pax -L -x $1 -w "$$tardir"' am__tar_='pax -L -x $1 -w "$tardir"' am__untar='pax -r' ;; cpio) am__tar='find "$$tardir" -print | cpio -o -H $1 -L' am__tar_='find "$tardir" -print | cpio -o -H $1 -L' am__untar='cpio -i -H $1 -d' ;; none) am__tar=false am__tar_=false am__untar=false ;; esac # If the value was cached, stop now. We just wanted to have am__tar # and am__untar set. test -n "${am_cv_prog_tar_$1}" && break # tar/untar a dummy directory, and stop if the command works rm -rf conftest.dir mkdir conftest.dir echo GrepMe > conftest.dir/file AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) rm -rf conftest.dir if test -s conftest.tar; then AM_RUN_LOG([$am__untar /dev/null 2>&1 && break fi done rm -rf conftest.dir AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) AC_MSG_RESULT([$am_cv_prog_tar_$1])]) AC_SUBST([am__tar]) AC_SUBST([am__untar]) ]) # _AM_PROG_TAR m4_include([m4/gettext.m4]) m4_include([m4/iconv.m4]) m4_include([m4/lib-ld.m4]) m4_include([m4/lib-link.m4]) m4_include([m4/lib-prefix.m4]) m4_include([m4/nls.m4]) m4_include([m4/po.m4]) m4_include([m4/progtest.m4]) calcurse-3.1.4/config.h.in0000644000175000001440000000673012105444406012266 00000000000000/* config.h.in. Generated from configure.ac by autoheader. */ /* Define to 1 if you want memory debug. */ #undef CALCURSE_MEMORY_DEBUG /* Define to 1 if you do not want memory debug. */ #undef CALCURSE_MEMORY_DEBUG_DISABLED /* Define to 1 if translation of program messages to the user's native language is requested. */ #undef ENABLE_NLS /* Define to 1 if you have the header file. */ #undef HAVE_CTYPE_H /* Define if the GNU dcgettext() function is already present or preinstalled. */ #undef HAVE_DCGETTEXT /* Define to 1 if you have the header file. */ #undef HAVE_ERRNO_H /* Define to 1 if you have the header file. */ #undef HAVE_FCNTL_H /* Define to 1 if you have the header file. */ #undef HAVE_GETOPT_H /* Define if the GNU gettext() function is already present or preinstalled. */ #undef HAVE_GETTEXT /* Define if you have the iconv() function. */ #undef HAVE_ICONV /* Define to 1 if you have the header file. */ #undef HAVE_INTTYPES_H /* Define to 1 if you have the 'math' library (-lm). */ #undef HAVE_LIBMATH /* Define to 1 if you have the 'pthread' library (-pthread). */ #undef HAVE_LIBPTHREAD /* Define to 1 if you have the header file. */ #undef HAVE_LIMITS_H /* Define to 1 if you have the header file. */ #undef HAVE_LOCALE_H /* Define to 1 if you have the header file. */ #undef HAVE_MATH_H /* Define to 1 if you have the header file. */ #undef HAVE_MEMORY_H /* Define to 1 if you have the header file. */ #undef HAVE_NCURSESW_NCURSES_H /* Define to 1 if you have the header file. */ #undef HAVE_NCURSES_H /* Define to 1 if you have the header file. */ #undef HAVE_NCURSES_NCURSES_H /* Define to 1 if you have the header file. */ #undef HAVE_PATHS_H /* Define to 1 if you have the header file. */ #undef HAVE_PTHREAD_H /* Define to 1 if you have the header file. */ #undef HAVE_REGEX_H /* Define to 1 if you have the header file. */ #undef HAVE_SIGNAL_H /* Define to 1 if you have the header file. */ #undef HAVE_STDINT_H /* Define to 1 if you have the header file. */ #undef HAVE_STDIO_H /* Define to 1 if you have the header file. */ #undef HAVE_STDLIB_H /* Define to 1 if you have the header file. */ #undef HAVE_STRINGS_H /* Define to 1 if you have the header file. */ #undef HAVE_STRING_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_STAT_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TYPES_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_WAIT_H /* Define to 1 if you have the header file. */ #undef HAVE_TIME_H /* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H /* Name of package */ #undef PACKAGE /* Define to the address where bug reports for this package should be sent. */ #undef PACKAGE_BUGREPORT /* Define to the full name of this package. */ #undef PACKAGE_NAME /* Define to the full name and version of this package. */ #undef PACKAGE_STRING /* Define to the one symbol short name of this package. */ #undef PACKAGE_TARNAME /* Define to the home page for this package. */ #undef PACKAGE_URL /* Define to the version of this package. */ #undef PACKAGE_VERSION /* Define to 1 if you have the ANSI C header files. */ #undef STDC_HEADERS /* Version number of package */ #undef VERSION calcurse-3.1.4/mkinstalldirs0000755000175000001440000000370412105444401013042 00000000000000#! /bin/sh # mkinstalldirs --- make directory hierarchy # Author: Noah Friedman # Created: 1993-05-16 # Public domain errstatus=0 dirmode="" usage="\ Usage: mkinstalldirs [-h] [--help] [-m mode] dir ..." # process command line arguments while test $# -gt 0 ; do case $1 in -h | --help | --h*) # -h for help echo "$usage" 1>&2 exit 0 ;; -m) # -m PERM arg shift test $# -eq 0 && { echo "$usage" 1>&2; exit 1; } dirmode=$1 shift ;; --) # stop option processing shift break ;; -*) # unknown option echo "$usage" 1>&2 exit 1 ;; *) # first non-opt arg break ;; esac done for file do if test -d "$file"; then shift else break fi done case $# in 0) exit 0 ;; esac case $dirmode in '') if mkdir -p -- . 2>/dev/null; then echo "mkdir -p -- $*" exec mkdir -p -- "$@" fi ;; *) if mkdir -m "$dirmode" -p -- . 2>/dev/null; then echo "mkdir -m $dirmode -p -- $*" exec mkdir -m "$dirmode" -p -- "$@" fi ;; esac for file do set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'` shift pathcomp= for d do pathcomp="$pathcomp$d" case $pathcomp in -*) pathcomp=./$pathcomp ;; esac if test ! -d "$pathcomp"; then echo "mkdir $pathcomp" mkdir "$pathcomp" || lasterr=$? if test ! -d "$pathcomp"; then errstatus=$lasterr else if test ! -z "$dirmode"; then echo "chmod $dirmode $pathcomp" lasterr="" chmod "$dirmode" "$pathcomp" || lasterr=$? if test ! -z "$lasterr"; then errstatus=$lasterr fi fi fi fi pathcomp="$pathcomp/" done done exit $errstatus # Local Variables: # mode: shell-script # sh-indentation: 2 # End: # mkinstalldirs ends here calcurse-3.1.4/install-sh0000755000175000001440000003325512105444410012244 00000000000000#!/bin/sh # install - install a program, script, or datafile scriptversion=2011-11-20.07; # UTC # This originates from X11R5 (mit/util/scripts/install.sh), which was # later released in X11R6 (xc/config/util/install.sh) with the # following copyright and license. # # Copyright (C) 1994 X Consortium # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to # deal in the Software without restriction, including without limitation the # rights to use, copy, modify, merge, publish, distribute, sublicense, and/or # sell copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN # AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- # TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # # Except as contained in this notice, the name of the X Consortium shall not # be used in advertising or otherwise to promote the sale, use or other deal- # ings in this Software without prior written authorization from the X Consor- # tium. # # # FSF changes to this file are in the public domain. # # Calling this script install-sh is preferred over install.sh, to prevent # 'make' implicit rules from creating a file called install from it # when there is no Makefile. # # This script is compatible with the BSD install script, but was written # from scratch. nl=' ' IFS=" "" $nl" # set DOITPROG to echo to test this script # Don't use :- since 4.3BSD and earlier shells don't like it. doit=${DOITPROG-} if test -z "$doit"; then doit_exec=exec else doit_exec=$doit fi # Put in absolute file names if you don't have them in your path; # or use environment vars. chgrpprog=${CHGRPPROG-chgrp} chmodprog=${CHMODPROG-chmod} chownprog=${CHOWNPROG-chown} cmpprog=${CMPPROG-cmp} cpprog=${CPPROG-cp} mkdirprog=${MKDIRPROG-mkdir} mvprog=${MVPROG-mv} rmprog=${RMPROG-rm} stripprog=${STRIPPROG-strip} posix_glob='?' initialize_posix_glob=' test "$posix_glob" != "?" || { if (set -f) 2>/dev/null; then posix_glob= else posix_glob=: fi } ' posix_mkdir= # Desired mode of installed file. mode=0755 chgrpcmd= chmodcmd=$chmodprog chowncmd= mvcmd=$mvprog rmcmd="$rmprog -f" stripcmd= src= dst= dir_arg= dst_arg= copy_on_change=false no_target_directory= usage="\ Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE or: $0 [OPTION]... SRCFILES... DIRECTORY or: $0 [OPTION]... -t DIRECTORY SRCFILES... or: $0 [OPTION]... -d DIRECTORIES... In the 1st form, copy SRCFILE to DSTFILE. In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. In the 4th, create DIRECTORIES. Options: --help display this help and exit. --version display version info and exit. -c (ignored) -C install only if different (preserve the last data modification time) -d create directories instead of installing files. -g GROUP $chgrpprog installed files to GROUP. -m MODE $chmodprog installed files to MODE. -o USER $chownprog installed files to USER. -s $stripprog installed files. -t DIRECTORY install into DIRECTORY. -T report an error if DSTFILE is a directory. Environment variables override the default commands: CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG " while test $# -ne 0; do case $1 in -c) ;; -C) copy_on_change=true;; -d) dir_arg=true;; -g) chgrpcmd="$chgrpprog $2" shift;; --help) echo "$usage"; exit $?;; -m) mode=$2 case $mode in *' '* | *' '* | *' '* | *'*'* | *'?'* | *'['*) echo "$0: invalid mode: $mode" >&2 exit 1;; esac shift;; -o) chowncmd="$chownprog $2" shift;; -s) stripcmd=$stripprog;; -t) dst_arg=$2 # Protect names problematic for 'test' and other utilities. case $dst_arg in -* | [=\(\)!]) dst_arg=./$dst_arg;; esac shift;; -T) no_target_directory=true;; --version) echo "$0 $scriptversion"; exit $?;; --) shift break;; -*) echo "$0: invalid option: $1" >&2 exit 1;; *) break;; esac shift done if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then # When -d is used, all remaining arguments are directories to create. # When -t is used, the destination is already specified. # Otherwise, the last argument is the destination. Remove it from $@. for arg do if test -n "$dst_arg"; then # $@ is not empty: it contains at least $arg. set fnord "$@" "$dst_arg" shift # fnord fi shift # arg dst_arg=$arg # Protect names problematic for 'test' and other utilities. case $dst_arg in -* | [=\(\)!]) dst_arg=./$dst_arg;; esac done fi if test $# -eq 0; then if test -z "$dir_arg"; then echo "$0: no input file specified." >&2 exit 1 fi # It's OK to call 'install-sh -d' without argument. # This can happen when creating conditional directories. exit 0 fi if test -z "$dir_arg"; then do_exit='(exit $ret); exit $ret' trap "ret=129; $do_exit" 1 trap "ret=130; $do_exit" 2 trap "ret=141; $do_exit" 13 trap "ret=143; $do_exit" 15 # Set umask so as not to create temps with too-generous modes. # However, 'strip' requires both read and write access to temps. case $mode in # Optimize common cases. *644) cp_umask=133;; *755) cp_umask=22;; *[0-7]) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw='% 200' fi cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; *) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw=,u+rw fi cp_umask=$mode$u_plus_rw;; esac fi for src do # Protect names problematic for 'test' and other utilities. case $src in -* | [=\(\)!]) src=./$src;; esac if test -n "$dir_arg"; then dst=$src dstdir=$dst test -d "$dstdir" dstdir_status=$? else # Waiting for this to be detected by the "$cpprog $src $dsttmp" command # might cause directories to be created, which would be especially bad # if $src (and thus $dsttmp) contains '*'. if test ! -f "$src" && test ! -d "$src"; then echo "$0: $src does not exist." >&2 exit 1 fi if test -z "$dst_arg"; then echo "$0: no destination specified." >&2 exit 1 fi dst=$dst_arg # If destination is a directory, append the input filename; won't work # if double slashes aren't ignored. if test -d "$dst"; then if test -n "$no_target_directory"; then echo "$0: $dst_arg: Is a directory" >&2 exit 1 fi dstdir=$dst dst=$dstdir/`basename "$src"` dstdir_status=0 else # Prefer dirname, but fall back on a substitute if dirname fails. dstdir=` (dirname "$dst") 2>/dev/null || expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$dst" : 'X\(//\)[^/]' \| \ X"$dst" : 'X\(//\)$' \| \ X"$dst" : 'X\(/\)' \| . 2>/dev/null || echo X"$dst" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q' ` test -d "$dstdir" dstdir_status=$? fi fi obsolete_mkdir_used=false if test $dstdir_status != 0; then case $posix_mkdir in '') # Create intermediate dirs using mode 755 as modified by the umask. # This is like FreeBSD 'install' as of 1997-10-28. umask=`umask` case $stripcmd.$umask in # Optimize common cases. *[2367][2367]) mkdir_umask=$umask;; .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; *[0-7]) mkdir_umask=`expr $umask + 22 \ - $umask % 100 % 40 + $umask % 20 \ - $umask % 10 % 4 + $umask % 2 `;; *) mkdir_umask=$umask,go-w;; esac # With -d, create the new directory with the user-specified mode. # Otherwise, rely on $mkdir_umask. if test -n "$dir_arg"; then mkdir_mode=-m$mode else mkdir_mode= fi posix_mkdir=false case $umask in *[123567][0-7][0-7]) # POSIX mkdir -p sets u+wx bits regardless of umask, which # is incompatible with FreeBSD 'install' when (umask & 300) != 0. ;; *) tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 if (umask $mkdir_umask && exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 then if test -z "$dir_arg" || { # Check for POSIX incompatibilities with -m. # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or # other-writable bit of parent directory when it shouldn't. # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. ls_ld_tmpdir=`ls -ld "$tmpdir"` case $ls_ld_tmpdir in d????-?r-*) different_mode=700;; d????-?--*) different_mode=755;; *) false;; esac && $mkdirprog -m$different_mode -p -- "$tmpdir" && { ls_ld_tmpdir_1=`ls -ld "$tmpdir"` test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" } } then posix_mkdir=: fi rmdir "$tmpdir/d" "$tmpdir" else # Remove any dirs left behind by ancient mkdir implementations. rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null fi trap '' 0;; esac;; esac if $posix_mkdir && ( umask $mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" ) then : else # The umask is ridiculous, or mkdir does not conform to POSIX, # or it failed possibly due to a race condition. Create the # directory the slow way, step by step, checking for races as we go. case $dstdir in /*) prefix='/';; [-=\(\)!]*) prefix='./';; *) prefix='';; esac eval "$initialize_posix_glob" oIFS=$IFS IFS=/ $posix_glob set -f set fnord $dstdir shift $posix_glob set +f IFS=$oIFS prefixes= for d do test X"$d" = X && continue prefix=$prefix$d if test -d "$prefix"; then prefixes= else if $posix_mkdir; then (umask=$mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break # Don't fail if two instances are running concurrently. test -d "$prefix" || exit 1 else case $prefix in *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; *) qprefix=$prefix;; esac prefixes="$prefixes '$qprefix'" fi fi prefix=$prefix/ done if test -n "$prefixes"; then # Don't fail if two instances are running concurrently. (umask $mkdir_umask && eval "\$doit_exec \$mkdirprog $prefixes") || test -d "$dstdir" || exit 1 obsolete_mkdir_used=true fi fi fi if test -n "$dir_arg"; then { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 else # Make a couple of temp file names in the proper directory. dsttmp=$dstdir/_inst.$$_ rmtmp=$dstdir/_rm.$$_ # Trap to clean up those temp files at exit. trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 # Copy the file name to the temp name. (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && # and set any options; do chmod last to preserve setuid bits. # # If any of these fail, we abort the whole thing. If we want to # ignore errors from any of these, just make sure not to ignore # errors from the above "$doit $cpprog $src $dsttmp" command. # { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && # If -C, don't bother to copy if it wouldn't change the file. if $copy_on_change && old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && eval "$initialize_posix_glob" && $posix_glob set -f && set X $old && old=:$2:$4:$5:$6 && set X $new && new=:$2:$4:$5:$6 && $posix_glob set +f && test "$old" = "$new" && $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 then rm -f "$dsttmp" else # Rename the file to the real destination. $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || # The rename failed, perhaps because mv can't rename something else # to itself, or perhaps because mv is so ancient that it does not # support -f. { # Now remove or move aside any old file at destination location. # We try this two ways since rm can't unlink itself on some # systems and the destination file might be busy for other # reasons. In this case, the final cleanup might fail but the new # file should still install successfully. { test ! -f "$dst" || $doit $rmcmd -f "$dst" 2>/dev/null || { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } } || { echo "$0: cannot unlink or rename $dst" >&2 (exit 1); exit 1 } } && # Now rename the file to the real destination. $doit $mvcmd "$dsttmp" "$dst" } fi || exit 1 trap '' 0 fi done # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: