aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Refactor display_item_date()Lukas Fleischer2013-05-141-12/+6
| | | | | | | | | | Replace nested case differentiations by initializing every single character for each flag separately and joining all characters afterwards. This makes it much easier to extend the function later. Note that the same approach is already used in display_item(). Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
* Use a macro to determine the size of arraysLukas Fleischer2013-05-045-15/+14
| | | | | | | | Use following macro instead of "sizeof(x) / sizeof(x[0])" everywhere: #define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0])) Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
* recur.c: Refactor/Reformat recur_item_find_occurrence()Lukas Fleischer2013-05-021-17/+13
| | | | | | | Fix a couple of whitespace and line breaks. Bail out early instead of using nested if statements. Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
* recur_exc_scan(): Do not check time of exceptionsLukas Fleischer2013-04-141-2/+1
| | | | | | | | | | Exceptions do not contain a time field -- do not check time fields which may be uninitialized. Regression introduced in 9907069f442c56c90b67accb2d8fbd046dfce6db. This fixes test/recur-*.sh. Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
* Use tabs instead of spaces for indentationLukas Fleischer2013-04-1435-11435/+12019
| | | | | | | | | | | This completes our switch to the Linux kernel coding style. Note that we still use deeply nested constructs at some places which need to be fixed up later. Converted using the `Lindent` script from the Linux kernel code base, along with some manual fixes. Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
* Validate date/time when scanning itemsLukas Fleischer2013-02-273-0/+29
| | | | | | | | | | | | | | | | Bail out when reading dates such as "02/30/2013" from the appointments file. These *could* be converted into valid dates but since we never write invalid dates to that file, these indicate a user error. Fixes following test cases: * appointment-009.sh * appointment-012.sh * appointment-016.sh * appointment-019.sh * event-003.sh Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
* parse_{date,time}(): Split out date/time validationLukas Fleischer2013-02-272-3/+25
| | | | | | | | Split date/time validation into separate functions check_date() and check_time(). These will be used to validate date/time information when reading items from the appointments file. Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
* test/: Add default values for configuration variablesLukas Fleischer2013-02-2750-7/+102
| | | | | | | | | | | Add a small helper script called "test-init.sh" that is sourced in each test case and initializes the CALCURSE and DATA_DIR environment variables. Update the test suite README to point out that setting these environment variables is no longer required. Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
* test/: Add a couple of black-box tests for itemsLukas Fleischer2013-02-2755-0/+251
| | | | | | | This introduces five test suite failures which will be fixed in one of the following patches. Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
* date_sec2date_str(): Add missing semicolonLukas Fleischer2013-02-191-1/+1
| | | | | | Regression introduced in a363cb9b9111aed22d105adb0e7a8e9caab9bbe3. Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
* Fix braces in if-else statementsLukas Fleischer2013-02-1720-132/+172
| | | | | | | | | | From the Linux kernel coding guidelines: Do not unnecessarily use braces where a single statement will do. [...] This does not apply if one branch of a conditional statement is a single statement. Use braces in both branches. Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
* parse_duration(): Bail out early in final stateLukas Fleischer2013-02-141-6/+4
| | | | | | | Bail out early if we are reading a character while being in a final state. Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
* ui-day.c: Several minor simplificationsLukas Fleischer2013-02-141-134/+110
| | | | Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
* ui-todo.c: Refactor ui_todo_chg_priority()Lukas Fleischer2013-02-141-19/+10
| | | | | | | Add the new item *before* deleting the old one and get rid of temporary buffers for the item message and note. Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
* Mark todo_get_position() publicLukas Fleischer2013-02-142-1/+2
| | | | | | This is needed in "ui-todo.c" now. Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
* calendar.c: Rename to "ui-calendar.c"Lukas Fleischer2013-02-1412-126/+126
| | | | | | | | | This unit belongs to the presentation layer -- rename the file accordingly. Also, rename calendar_*() to ui_calendar_*(). Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
* todo.c: Split out UI-related functionsLukas Fleischer2013-02-146-242/+242
| | | | | | | * Move UI-related functions to "ui-todo.c". * Rename UI-related functions to ui_todo_*(). Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
* apoint.c: Split out UI-related functionsLukas Fleischer2013-02-145-168/+168
| | | | | | | * Move UI-related functions to "ui-day.c". * Rename UI-related functions to ui_day_*(). Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
* Rename appointment/event-related UI functionsLukas Fleischer2013-02-145-29/+29
| | | | | | | | | * Rename "interaction.c" to "ui-day.c" since it no longer contains todo-related UI functions. * Rename appointment/event-related UI functions to ui_day_*(). Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
* Split out UI functions for todo itemsLukas Fleischer2013-02-145-111/+150
| | | | | | | | | * Move todo-related UI functions from "interaction.c" to a new compilation unit "ui-todo.c". * Rename all todo-related UI functions to todo_ui_*(). Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
* Merge branch 'maint'Lukas Fleischer2013-02-093-1/+18
|\
| * Release 3.1.4v3.1.4Lukas Fleischer2013-02-092-1/+13
| | | | | | | | Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
| * Do not ignore "--datarootdir" in "po/Makefile.in.in"Lukas Fleischer2013-02-051-0/+5
| | | | | | | | | | | | | | | | | | This fixes the "--datarootdir" warning seen with autotools >=2.59c. Note that this is a workaround for a bug in autopoint(1). Inspired by util-linux commit cc3c3fdd29719883605687fc0d11391386ab46c6. Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
* | Merge branch 'maint'Lukas Fleischer2013-02-0449-63/+81
|\|
| * Update copyright rangesLukas Fleischer2013-02-0448-62/+62
| | | | | | | | | | | | | | Add 2013 to the copyright range for all source and documentation files. Reported-by: Frederic Culot <frederic@culot.org> Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
| * Close key binding window when reassigning the same keyMichael Smith2013-02-041-0/+6
| | | | | | | | | | | | | | | | | | | | This allows for canceling a key reassignment. We cannot use a static key here since every key could potentially be used in a binding. Instead, just cancel if we are trying to reassign a key that has already been used for that action before. Signed-off-by: Michael Smith <crazedpsyc@mail4us.net> Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
| * Do not prompt for a todo after adding an appointmentLukas Fleischer2013-02-031-0/+1
| | | | | | | | | | | | | | | | | | | | We effectively turned the addition of an appointment into a fall through case by deleting the break statement during refactoring. Revert this deletion to skip the second prompt. Regression introduced in f2dca7de3e8b164a4b3af3d58dde2f6776bfbee6. Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
| * Release 3.1.3v3.1.3Lukas Fleischer2013-02-022-1/+12
| | | | | | | | Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
* | Merge branch 'maint'Lukas Fleischer2013-02-022-5/+8
|\|
| * Properly skip spaces after exception listLukas Fleischer2013-02-011-2/+4
| | | | | | | | | | | | | | Skip whitespace after obtaining the list of exceptions instead of skipping the next character unconditionally. Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
| * Skip start time update if prompt is canceledLukas Fleischer2013-02-011-1/+2
| | | | | | | | | | | | See commit 217e66729a249a638863a9cc2ff93b8368cd6094 for details. Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
| * Skip duration update if the prompt is canceledLukas Fleischer2013-02-011-2/+2
| | | | | | | | | | | | | | | | | | Do not update an appointment's duration if the user cancels the prompt at day_edit_duration(). Note that day_edit_duration() does not touch the buffer if the prompt was canceled or an invalid value was entered, resulting in the buffer variable being uninitialized in these cases. Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
* | day_process_storage(): Remove redundant parameterLukas Fleischer2013-02-013-10/+9
| | | | | | | | Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
* | Delete TODO fileLukas Fleischer2013-01-301-33/+0
| | | | | | | | | | | | | | This is outdated and has been migrated to the bug tracker which turned out to be a much better way of keeping track of tickets. Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
* | Use strncasecmp() for case-insensitive comparisonLukas Fleischer2013-01-303-39/+22
| | | | | | | | | | | | | | Instead of converting everything to upper case and then using strncmp(), use strncasecmp() which does case-insensitive comparison out of the box. Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
* | Remove unused function mystrtol()Lukas Fleischer2013-01-302-16/+0
| | | | | | | | Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
* | custom.c: Fix sidebar configuration help textLukas Fleischer2013-01-301-4/+3
|/ | | | | | | * Use a format string instead of the TOSTRING() macro. * Remove "xgettext:no-c-format" hack and use "%%" instead. Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
* test/: Use `faketime -f`Lukas Fleischer2012-12-227-7/+11
| | | | | | | | | | | | Use the advanced timestamp specification format for libfaketime. Before using that, some tests failed on 32-bit systems due to integer overflows. It seems like faketime translates absolute dates to relative dates by default. Moreover, libfaketime is not able to handle relative dates that exceed the maximum value of a signed integer. Using "-f" skips the conversion to relative dates. Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
* test/: Do not error out if libfaketime is missingLukas Fleischer2012-12-228-8/+8
| | | | | | | | If the faketime library is missing, show a warning and skip the test. However, do not error out to make sure the test suite is able to terminate successfully on systems without libfaketime. Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
* Release 3.1.2v3.1.2Lukas Fleischer2012-12-162-1/+10
| | | | Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
* do_storage(): Unset highlighted item if list is emptyLukas Fleischer2012-12-161-2/+6
| | | | | | | | | Check if the appointment panel contains any items and unset the highlight counter if it doesn't. Not doing this resulted in core dumps if the edit command was invoked after switching to a day without any appointments/events. Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
* Display correct startup messagesLukas Fleischer2012-12-161-2/+2
| | | | | | | These messages have been swapped accidentally during refactoring. Regression introduced in 691f8a6015bafcf6ed4f99a3649d428fb7a8e915. Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
* Add hidden key handler windowLukas Fleischer2012-12-1610-31/+41
| | | | | | | | | | | | | | | | | | | | | | | | | After BUG#6 had apparently been closed with the screen locks introduced in commit a80f8dcf2c6eb3b54658218bc081ee9694204dd5, some people still had problems with random characters appearing in the notification bar. This was obviously caused by wgetch() refreshing the screen if the status panel was changed. From wgetch(3): If the window is not a pad, and it has been moved or modified since the last call to wrefresh, wrefresh will be called before another character is read. Since the wgetch(3) isn't thread-safe, there were race conditions between the notification bar thread drawing to the notification bar and wgetch() updating the screen. Introduce a (hidden) window that handles all key presses and never gets changed in order to avoid this. Also, call wins_wrefresh() explicitly in status_mesg(), since we can no longer rely on wgetch() updating windows automatically. Fixes reopened BUG#6. Note that this is a hotfix -- FR#26 has been opened to ensure we fix this properly in the next major release. Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
* Release 3.1.1v3.1.1Lukas Fleischer2012-12-062-1/+8
| | | | Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
* Fix two enumeration types in function signaturesLukas Fleischer2012-12-062-2/+2
| | | | | | Spotted with clang and "-Wconversion". Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
* keys.c: Remove several unneeded assertionsLukas Fleischer2012-12-061-3/+3
| | | | | | Seen when compiling with clang and "-Wtautological-compare". Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
* wins_show(): Fix size of the slave window arrayLukas Fleischer2012-12-061-1/+1
| | | | | | | | | | | The slave window array was just big enough to hold a single element, whereas two elements are written/accessed. Fix this off-by-one error in the array declaration. Note that this messed up the panel layout when using clang as a compiler. Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
* Release 3.1.0v3.1.0Lukas Fleischer2012-12-052-4/+39
| | | | Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
* io_load_keys(): Skip legacy entryLukas Fleischer2012-12-051-0/+5
| | | | | | | This binding was used pre-3.1.0. Simply ignore it and avoid showing a needlessly complicated error message. Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
* keys_save_bindings(): Skip unset key bindingsLukas Fleischer2012-12-051-2/+6
| | | | | | | Saving unset key bindings currently results in a segmentation fault or invalid key specifiers being stored. Skip these entries to avoid this. Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>