992 Commits

Author SHA1 Message Date
Lukas Fleischer
2336066855 Update translations files
Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
2011-07-31 02:55:56 +02:00
Lukas Fleischer
0884d62b22 Merge branch 'maint' 2011-07-30 22:56:22 +02:00
Lukas Fleischer
13a41f8e0a Fix sort order in app_arg()
We used to iterate over the list of regular appointments and the list of
recurrent appointments in separate loops, thus leading to recurrent
appointments being printed first and regular appointments being printed
afterwards, regardless of their start and end times. Merge these loops
to coerce precedence of the start time.

There's still a fair bit of hackery in here - we will fix that later.

Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
2011-07-30 21:10:53 +02:00
Lukas Fleischer
6256183e1e Fix configuration file backward compatibility
We kinda broke this in 6377582841118688aee13aff98c9216403582e45.

All hail strsep()!

Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
2011-07-29 23:35:17 +02:00
Lukas Fleischer
709525cf8d Fix apoint_get() call in apoint_switch_notify()
We passed the function arguments the wrong way round. This regression
was introduced in commit 77ef3fe76e4ce4c9a990e8a5904ad2d83420ca02.

Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
2011-07-29 20:38:59 +02:00
Lukas Fleischer
1a849cfb8e Fix notify_check_repeated()
Remove the "current_time" check from the first if condition. As "greater
than" relations (">") have higher precedence than assignments ("=") in
C, this caused "real_app_time" to always be one or zero which definitely
isn't what we want here. Reading further down, it turns out that we
don't even need this comparison here, so we should be fine removing it.

Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
2011-07-29 20:38:59 +02:00
Lukas Fleischer
1da88589b2 Fix recurrent appointment notification
We probably broke this in 9fab24818a119aef08b9726f6c1cd31d5434ce34.

Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
2011-07-29 20:38:59 +02:00
Lukas Fleischer
0126cbd1b3 Update the notification item in *_paste_item()
Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
2011-07-29 20:38:59 +02:00
Lukas Fleischer
cce0acbe00 Update the notification item in day_edit_item()
Ensure the start time as well as the description of the notification
appointment are synced after editing it.

We use notify_check_next_app()'s force parameter to ensure that the
notification item is updated even if only the description was modified.

Reported-by: Andraž 'ruskie' Levstik <ruskie@codemages.net>
Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
2011-07-29 20:38:43 +02:00
Lukas Fleischer
5a5c6d2604 Add "force" parameter to notify_check_next_app()
This allows to force notify_check_next_app() to update the notification
appointment, even if start times are equal (e.g. if the item description
was changed).

Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
2011-07-29 20:28:30 +02:00
Lukas Fleischer
53b041facf src/calcurse.h: Whitespace cleanup
Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
2011-07-28 14:46:00 +02:00
Lukas Fleischer
f2ddce23d4 src/args.c: Mark various constant strings const
Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
2011-07-28 13:42:44 +02:00
Lukas Fleischer
7b0d017b5d Remove superfluous buffer variable from version_arg()
Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
2011-07-28 13:42:44 +02:00
Lukas Fleischer
5637e973bf Remove superfluous buffer variable from help_arg()
Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
2011-07-28 13:42:44 +02:00
Lukas Fleischer
5b75566ce9 TODO: Remove reference to the bugs mailing list
Feature requests should go to the misc mailing list, no need to mention
the bugs mailing list here.

Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
2011-07-28 13:42:44 +02:00
Lukas Fleischer
54813eef19 Merge branch 'maint' 2011-07-28 13:38:12 +02:00
Lukas Fleischer
8681af3c6d io.c: Accept resource parameters in iCal import
Remove colons from the "SUMMARY:" and "DURATION:" search patterns in
ical_read_event() to allow for additional parameters (such as language
parameters, cf. RFC 5545).

Reported-by: Andraž 'ruskie' Levstik <ruskie@codemages.net>
Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
2011-07-28 13:37:16 +02:00
Lukas Fleischer
0c4e9d3f00 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>
2011-07-28 13:36:30 +02:00
Lukas Fleischer
a232c9af33 Use gettext plural features
Make use of the plural features of gettext to handle plural forms
correctly instead of using the plural form even if the singular form
should be used.

Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
2011-07-24 21:13:14 +02:00
Lukas Fleischer
e121ded3a5 Split stats messages in io_import_data()
Use separate format strings for separate values. This is useful in case
we want to output similar stats somewhere else and is a preparation for
supporting plural forms.

Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
2011-07-24 21:00:59 +02:00
Lukas Fleischer
87664095cd Refactor out note functions
* Add new note_edit() and note_view() helper functions. Use these
  instead of copy-pasted code in *_note_edit().

* Move all note-related functions (note_edit(), note_view(),
  note_erase()) to a new source file "note.c".

Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
2011-07-21 18:13:40 +02:00
Lukas Fleischer
40772daaf4 Add hint to error messages in custom_load_conf()
Include the name of the configuration variable that issued the error in
error messages that are thrown while parsing the configuration file.
This makes it a lot easier to locate syntactic and semantic errors.

Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
2011-07-21 17:58:19 +02:00
Lukas Fleischer
6377582841 Use map for configuration variable names
Use a map instead of dozens of hardcoded conditionals. This makes
configuration variable parsing more dynamic and extensible.

Also, reintroduce formatting error messages that we dropped earlier.

Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
2011-07-21 17:58:04 +02:00
Lukas Fleischer
32f22fdcc5 Return error status in custom_set_conf()
Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
2011-07-21 17:57:59 +02:00
Lukas Fleischer
8e4238c242 Rename custom_load_color() to conf_parse_color()
Also, temporarily remove all error messages and return an error status
instead.

Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
2011-07-21 17:57:50 +02:00
Lukas Fleischer
1355bad264 Declare foreground and background variables global
Removes the need to pass the terminal's default background color round.

Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
2011-07-21 17:56:39 +02:00
Lukas Fleischer
e5dee68dcf Refactor out integer variable parsing
Introduce conf_parse_unsigned() and conf_parse_int() similar to
conf_parse_bool().

Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
2011-07-21 17:56:25 +02:00
Lukas Fleischer
7e4f995692 Refactor conf_parse_bool()
* Increase size argument for strncmp() comparisons by one to include the
  terminating null-character (otherwise "yesfoo" would be parsed as
  "yes", "nobar" as "no").

* Pass destination address as an additional argument and return
  success/failure status to allow for better error handling.

* Temporarily remove error handling (will be fixed later).

Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
2011-07-21 17:55:55 +02:00
Lukas Fleischer
c875ab4195 Rename fill_config_var() to conf_parse_bool()
This is a much better name as it implicitly describes that this function
parses boolean configuration values only.

Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
2011-07-21 17:54:59 +02:00
Lukas Fleischer
f69d1a1572 Refactor out configuration variable setting
Move configuration variable assignments to a new function,
custom_set_conf(). This improves code readability and allows for setting
configuration variables outside the configuration file loading function.

Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
2011-07-21 17:53:46 +02:00
Lukas Fleischer
9d41f8e5b3 Use single-line configuration settings by default
Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
2011-07-15 18:47:43 +02:00
Lukas Fleischer
3b4a21e79c Parse single-line configuration variables
Include a fallback branch that accepts multi-line comments as well
(backward compatibility).

Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
2011-07-15 18:25:17 +02:00
Lukas Fleischer
1f658881de Be stricter when parsing the configuration file
Throw an error message if there is a line that contains an invalid
configuration line (e.g. a non-empty line that neither contains a key
nor a value).

Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
2011-07-15 18:13:47 +02:00
Lukas Fleischer
b362c17daa Skip indentation and comments in io_extract_data()
We actually only use this function to parse configuration data.
Currently, this probably is the best way to do some common
preprocessing.

Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
2011-07-15 18:13:45 +02:00
Lukas Fleischer
5f24132d18 Refactor custom_load_conf()
Read key and value of each configuration setting in one loop cycle to
facilitate adjustments of the configuration setting format. Also, this
allows us to get rid of all the redundant variable resetting.

Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
2011-07-15 17:47:28 +02:00
Lukas Fleischer
c21137129a Do not unnecessarily refresh in config menu
We don't need to refresh windows every time an unassigned key is
pressed. Add a condition to skip the refresh part if that is the case.

Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
2011-07-14 18:23:31 +02:00
Lukas Fleischer
ab4c4dee76 Remove artificial delay when saving data
This doesn't contribute to functionality or usability in any way. Keep
the progress bar option but only show bars as long as the actual save
operation is in progress.

Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
2011-07-14 18:23:31 +02:00
Lukas Fleischer
160f12687e Merge branch 'maint' 2011-07-10 19:04:49 +02:00
Lukas Fleischer
34f094312f Honor "TMPDIR" environment variable
Replace all hardcoded paths referring to "/tmp" with a new function that
honors the "TMPDIR" environment variable as well as P_tmpdir and uses
"/tmp" as a fallback.

Thanks-to: Erik Saule <esaule@bmi.osu.edu>
Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
2011-07-09 17:52:25 +02:00
Lukas Fleischer
34caa4a426 TODO: Remove send-item TODO entry
Implemented in 309fa84cb7439221c01f8526fcbc67b6004a95d1.

Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
2011-07-07 07:06:02 +02:00
Lukas Fleischer
309fa84cb7 Add key binding for pipe-item command
This removes the need of reading the whole data file and find matching
entries if we want to parse appointments in external programs.

Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
2011-07-07 07:05:48 +02:00
Lukas Fleischer
9e60084262 Add todo_pipe_item() function
Pipe a serialized todo item to an external process, similar to what
day_pipe_item() does (cf. c3f532d814e555abf67efb136491956428f19965).

Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
2011-07-05 16:25:32 +02:00
Lukas Fleischer
c3f532d814 Add day_pipe_item() function
Serializes an appointment or an event, prompts for a shell command and
executes that command in a new process, piping serialized item data to
its stdin.

Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
2011-07-05 16:19:17 +02:00
Lukas Fleischer
b0b994896c Add press_any_key() function
Displays "Press any key to continue..." in shell terminal mode and waits
for a key stroke.

Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
2011-07-05 16:04:33 +02:00
Lukas Fleischer
2f8a425756 Move endwin() down in wins_prepare_external()
Invoke endwin() *after* calling any other curses functions, such as
refresh(). Calling refresh() after endwin() might restore curses mode
which is a bad thing for a terminal mode initialization routine.

Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
2011-07-05 16:04:33 +02:00
Lukas Fleischer
233980622f Refactor wins_launch_external()
* Do window preparation and restoring in separate functions
  wins_prepare_external() and wins_unprepare_external().

* Use fork_exec() and child_wait() instead of system().

Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
2011-07-02 10:15:36 +02:00
Lukas Fleischer
7982c98be4 Add shell_exec() function
Can be used to execute an external program in a shell.

Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
2011-07-02 10:15:36 +02:00
Lukas Fleischer
7e61b3de06 Add child_wait() function
Can be used to wait for the termination of a child process.

Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
2011-07-02 10:15:36 +02:00
Lukas Fleischer
6e2b00096d Add fork_exec() function
Can be used to execute an external program. Provides the possibility to
optionally create a pipe to the new process.

Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
2011-07-02 10:15:36 +02:00
Lukas Fleischer
003431880e Make recur_*_write() public
This allows one to serialize and send recurrent items to arbitrary
output streams.

Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
2011-07-02 10:15:35 +02:00