aboutsummaryrefslogtreecommitdiffstats
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
* Add macros for linked list operations.Lukas Fleischer2011-04-191-0/+26
| | | | | | | | | | | Mostly in preparation to the pending thread-safe list macros. This way, we have a similar interface to thead-safe and non-thread-safe lists. This also adds LLIST_FOREACH and LLIST_FIND_FOREACH macros which can be used as shortcuts when iterating over all list items or a subset of list items that is accepted by a callback function. Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
* Add linked lists implementation.Lukas Fleischer2011-04-194-0/+287
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | As discussed on the mailing lists, the various linked list implementations we currently use at a dozen of different places in the calcurse source tree are inconvenient and should be replaced by a single generic solution. This is a first approach to introduce such a generic implemetation. It provides following functions: * llist_init(): Initialize a list. * llist_free_inner(): Loop through a list and free all items. * llist_free(): Free the list itself (but not the individual items). * llist_first(): Get the first item of a list. * llist_nth(): Get the nth item of a list. * llist_next(): Get the successor of a list item. * llist_find_first(): Find an item using a callback function. * llist_find_next(): Find the next match using a callback function. * llist_find_nth(): Find the nth item in a list (using a callback). * llist_get_data(): Get a pointer to the actual data of a list item. * llist_add(): Add an item at the end of a list. * llist_add_sorted(): Add an item to a sorted list (using a comparison callback function). * llist_remove(): Remove an item from a list. Linked lists are stored in "llist_t" structures, list items are to be stored in "llist_item_t" structs. All of the llist_*() functions either expect a pointer to a llist_t structure (in case the function operates on the list itself) or a pointer to a llist_item_t (llist_*_next() and llist_get_data()). Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
* Use mem_free() instead of xfree() in check_time().Lukas Fleischer2011-04-171-1/+1
| | | | | | | xfree() should never be used directly and only be called by one of the mem_*() wrappers. Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
* Fix io_file_is_empty() behaviour when file starts with a newline.Lukas Fleischer2011-04-121-1/+1
| | | | | | | Read second byte if the first byte is a newline character to ensure the file doesn't contain any further data. Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
* Use do-while loops when reading start time and duration in apoint_add().Lukas Fleischer2011-04-121-2/+5
| | | | | | | | Using do-while loops seems more appropriate here as "item_time" hasn't even been read when either of the loops are entered. Spotted by clang-analyzer. Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
* Fix null pointer dereference in parse_date().Lukas Fleischer2011-04-121-9/+12
| | | | | | | | Passing a date in format "mm-dd-yy" where short forms are not allowed would lead to a null pointer dereference here. This one fixes that. Spotted by clang-analyzer. Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
* Remove some more dead assignments spotted by clang-analyzer.Lukas Fleischer2011-04-122-2/+0
| | | | Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
* Declare exit_calcurse() "noreturn".Lukas Fleischer2011-04-121-1/+1
| | | | | | | | Functions that never return should be declared "noreturn" to tell the compiler this fact. Also, clang-analyzer will detect this attribute and take it into account when running scan-build. Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
* Drop empty notes after editing.Lukas Fleischer2011-04-124-0/+32
| | | | | | | | | Keeping empty notes doesn't make sense here. Also, there doesn't seem to be a simple way to erase notes yet. This will make calcurse delete any notes that are empty (meaning that they are either 0-byte files or contain nothing but a newline character) when returning from the editor. Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
* Fix bad use of unsigned integers.Lukas Fleischer2011-04-052-4/+3
| | | | | | | | Unsigned values should never be compared to values less than zero. Detected with "find_unsigned.cocci" spatch from http://coccinelle.lip6.fr/impact_linux.php. Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
* Compare pointers to "NULL" instead of "0".Lukas Fleischer2011-04-0512-93/+93
| | | | | | "bad_zero.cocci" spatch from http://coccinelle.lip6.fr/impact_linux.php. Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
* Remove unused variables from wins_show().Lukas Fleischer2011-04-031-4/+1
| | | | | | Seen with "-Wunused-but-set-variable". Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
* Remove dead assignments spotted by clang-analyzer.Lukas Fleischer2011-04-038-40/+17
| | | | Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
* Avoid assignment of undefined value in parse_date().Lukas Fleischer2011-04-031-4/+4
| | | | | | Spotted by clang-analyzer ("Assigned value is garbage or undefined"). Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
* ignore the lock file if the pointed process is dead.Erik Saule2011-03-291-8/+24
| | | | | | Lukas: Small formatting and logic changes. Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
* Try to stick to the GNU coding standards for the sake of consistency.Lukas Fleischer2011-03-151-133/+170
| | | | Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
* Use upper case for macro names.Lukas Fleischer2011-03-153-12/+12
| | | | Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
* Overall indentation fixes.Lukas Fleischer2011-03-1419-2280/+2280
| | | | | | | Use spaces instead of tabs for source code indentation only, strip trailing whitespaces from lines. Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
* Parse appointment end times correctly if they date back.Lukas Fleischer2011-03-131-1/+1
| | | | | | | | | End times used to be parsed incorrectly if start and end time's hour components were equal, but the end time was smaller than the start time. This is fixed by comparing the minute components as well in case of equal hour components. Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
* Clean up updatestring() in "utils.c".Lukas Fleischer2011-03-051-15/+18
| | | | Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
* Simplify date_sec2date_fmt() in "utils.c".Lukas Fleischer2011-03-051-5/+1
| | | | Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
* Clean up and simplify line editing functions.Lukas Fleischer2011-03-051-158/+100
| | | | | | | | | This greatly simplifies all line editing functions - especially getstring() and showstring(). showcursor() is removed and integrated into showstring(). del_char() and add_char() are simplified as well. add_char() is renamed to ins_char(). Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
* Ensure key descriptions in status bar are always null-terminated.Lukas Fleischer2011-03-051-0/+1
| | | | | | | | | Key descriptions are just strncpy()'ed to key[], with KEYS_KEYLEN as maximum character count. This leads to a non-null-terminated string if the source pointer actually points to a string with a length of KEYS_KEYLEN bytes. Always appending a null character fixes this. Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
* Remove unnecessary casting variables from get_item_{hour,min}().Lukas Fleischer2011-03-041-4/+2
| | | | Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
* Update website links to match the new URL.Lukas Fleischer2011-03-0420-21/+21
| | | | Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
* Update mail addresses to match the new mailing lists.Lukas Fleischer2011-03-0420-23/+23
| | | | Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
* Reformat "src/Makefile.am".Lukas Fleischer2011-03-041-26/+27
| | | | Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
* Simplify date_sec2date_str() in "utils.c".Lukas Fleischer2011-03-041-11/+6
| | | | Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
* Remove date_sec2hour_str() from "utils.c".Lukas Fleischer2011-03-043-18/+1
| | | | | | | | date_sec2hour_str() is superseded by date_sec2date_str() with "%H:%M" as date format string, so replace all invocations and remove that function from "utils.c". Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
* Simplify date2sec() in "utils.c".Lukas Fleischer2011-03-041-13/+8
| | | | Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
* Simplify check_time() in "utils.c".Lukas Fleischer2011-03-041-31/+14
| | | | Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
* Simplify print_in_middle() in "utils.c".Lukas Fleischer2011-03-041-14/+9
| | | | Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
* Reformat erase_window_part() in "utils.c".Lukas Fleischer2011-03-041-7/+4
| | | | Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
* Simplify get_item_hour() and get_item_min() in "utils.c".Lukas Fleischer2011-03-041-16/+6
| | | | Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
* Simplify str_toupper() in "utils.c".Lukas Fleischer2011-03-043-29/+25
| | | | Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
* Simplify file_close() in "utils.c".Lukas Fleischer2011-03-041-4/+1
| | | | Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
* Simplify now() and nowstr() in "utils.c".Lukas Fleischer2011-03-041-7/+3
| | | | Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
* Convert man page to AsciiDoc.Lukas Fleischer2011-03-031-269/+0
| | | | Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
* Remove CVS "$Id" headers.Lukas Fleischer2011-03-0323-46/+0
| | | | Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
* Avoid a segfault when resizing the help window.Lukas Fleischer2011-03-031-27/+29
|
* Fixed file permissions.Lukas Fleischer2011-03-0319-0/+0
|
* Code cleanup and fixed compiler warning.Lukas Fleischer2011-01-111-30/+30
|
* Make parse_date accept several short forms.Lukas Fleischer2011-01-116-56/+73
| | | | | | | | | Short forms are only accepted in interactive mode (e.g. when using the "Go to" function, editing a recurrent item's end date, and so on). Samples: "1/1/30" for "01/01/2030", "26" for the 26th of the currently selected month/year or "3/1" for Mar 01 (or Jan 03, depending on the date format) of the currently selected year.
* Added "backword-kill-word" functionality to getstring().Lukas Fleischer2010-11-041-1/+20
|
* Changed mail address to "calcurse@cryptocrack.de".Lukas Fleischer2010-11-011-2/+2
|
* Add Lukas Fleischer to the AUTHORS section of the manpage.Frederic Culot2010-10-231-3/+5
|
* is_all_digit() rewritten.Frederic Culot2010-10-231-12/+5
| | | | Patch submitted by Lukas Fleischer, thanks.
* isBissextile() removed and replaced by isleap macro.Frederic Culot2010-10-231-10/+4
| | | | Patch submitted by Lukas Fleischer, thanks.
* Reference to the COPYING file removed.Frederic Culot2010-05-281-3/+2
|
* Copyright updated.Frederic Culot2010-05-261-2/+2
|