1045 Commits

Author SHA1 Message Date
Lukas Fleischer
bf431d6cd9 Use generic lists for todo items.
Use the new generic list implementation instead of "next" pointers in
todo items.

Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
2011-04-19 11:42:34 +02:00
Lukas Fleischer
6f883c0f3f Use generic lists for events.
Use the new generic list implementation instead of those insane "next"
pointers in events. Includes some cleanups.

Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
2011-04-19 11:42:34 +02:00
Lukas Fleischer
1de34587ab Remove "next" member from "apoint" structure.
Field seems to be unused. Verify using following spatch:

----
@@ struct apoint *apt; @@

* apt->next
----

Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
2011-04-19 11:42:34 +02:00
Lukas Fleischer
77ef3fe76e Use generic lists for appointments.
Use the new generic list implementation instead of "apoint_list"
everywhere. Simplify stuff and drop unused variables as well.

Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
2011-04-19 11:42:33 +02:00
Lukas Fleischer
d668963e20 Add macros to use for thread-safe linked lists.
Add LLIST_TS_* macros in a fashion similar to the already existing
LLIST_* macros. Unlike the non-thread-safe version, these include
LLIST_TS_LOCK and LLIST_TS_UNLOCK which can be used to lock (and unlock)
a list (hence the thread-safety).

Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
2011-04-19 11:42:33 +02:00
Lukas Fleischer
612204a60a Add macros for linked list operations.
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>
2011-04-19 11:42:33 +02:00
Lukas Fleischer
0eb1da8dd7 Add linked lists implementation.
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>
2011-04-19 11:42:32 +02:00
Lukas Fleischer
7758a41851 Use mem_free() instead of xfree() in check_time().
xfree() should never be used directly and only be called by one of the
mem_*() wrappers.

Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
2011-04-17 20:42:47 +02:00
Lukas Fleischer
cc49f1e262 Fix io_file_is_empty() behaviour when file starts with a newline.
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>
2011-04-12 18:31:48 +02:00
Lukas Fleischer
57b62a1e49 Use do-while loops when reading start time and duration in apoint_add().
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>
2011-04-12 12:02:39 +02:00
Lukas Fleischer
3a4431e568 Fix null pointer dereference in parse_date().
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>
2011-04-12 12:02:39 +02:00
Lukas Fleischer
5fc6d92866 Remove some more dead assignments spotted by clang-analyzer.
Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
2011-04-12 12:02:38 +02:00
Lukas Fleischer
b4a2fa4435 Declare exit_calcurse() "noreturn".
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>
2011-04-12 12:02:37 +02:00
Lukas Fleischer
b9c1969126 Drop empty notes after editing.
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>
2011-04-12 12:02:23 +02:00
Lukas Fleischer
1140feaabf Update and cleanup ".gitignore".
Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
2011-04-11 10:56:14 +02:00
Lukas Fleischer
df972cd45d Add more detailed instructions on tx push usage to documentation.
Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
2011-04-11 10:50:43 +02:00
Lukas Fleischer
5f462f04ed Add base transifex-client configuration file.
Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
2011-04-11 10:05:47 +02:00
Lukas Fleischer
ba651cf0a0 Use HTTPs for tx(1) samples in the documentation.
Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
2011-04-11 10:01:05 +02:00
Lukas Fleischer
09231785f2 Update portable object files.
Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
2011-04-10 18:02:33 +02:00
Lukas Fleischer
76b61faa67 Update "calcurse.pot".
Renegerate the catalog file with our new xgettext options. Drop line
numbers.

Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
2011-04-10 18:00:18 +02:00
Lukas Fleischer
ad293b6a2e Add "--no-location" to xgettext options.
Disable line numbers in portable object files. They are not very useful
and generate a lot of junk on every update, hiding the actual changes.

Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
2011-04-10 17:57:33 +02:00
Lukas Fleischer
af8b868a15 Fix Transifex resource slug in documentation.
The slug of the "calcurse.pot" resource has been changed from
"calcurse-pot" to "calcursepot" for consistency reasons. Update the
documentation where necessary.

Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
2011-04-10 17:34:16 +02:00
Lukas Fleischer
a5a9ee60d6 Fix bad use of unsigned integers.
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>
2011-04-05 09:37:20 +02:00
Lukas Fleischer
6fb0f6f4c6 Compare pointers to "NULL" instead of "0".
"bad_zero.cocci" spatch from http://coccinelle.lip6.fr/impact_linux.php.

Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
2011-04-05 09:27:04 +02:00
Lukas Fleischer
c4c7c8af5d Remove unused variables from wins_show().
Seen with "-Wunused-but-set-variable".

Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
2011-04-03 22:09:15 +02:00
Lukas Fleischer
5b12c236cf Remove dead assignments spotted by clang-analyzer.
Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
2011-04-03 22:09:00 +02:00
Lukas Fleischer
1473145d10 Avoid assignment of undefined value in parse_date().
Spotted by clang-analyzer ("Assigned value is garbage or undefined").

Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
2011-04-03 21:31:32 +02:00
Erik Saule
6ff9523876 ignore the lock file if the pointed process is dead.
Lukas: Small formatting and logic changes.

Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
2011-03-29 10:35:14 +02:00
Lukas Fleischer
def487d741 Update translation help in the manual.
Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
2011-03-15 16:02:57 +01:00
Lukas Fleischer
ad6ea3287d Add note on dropped translations to the manual.
Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
2011-03-15 12:00:40 +01:00
Lukas Fleischer
84d1daf41d Try to stick to the GNU coding standards for the sake of consistency.
Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
2011-03-15 10:52:38 +01:00
Lukas Fleischer
d6e5347340 Use upper case for macro names.
Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
2011-03-15 10:23:41 +01:00
Lukas Fleischer
b9fa5bdbb1 Remove "ChangeLog".
After some discussions on the mailing lists, we decided to remove the
GNU-style ChangeLog, as turned out to be very inconvenient. Also, it
merely is a replication of the Git log. If you need a similar ChangeLog,
use `git log` (or `git log --stats`) instead.

Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
2011-03-14 20:16:50 +01:00
Lukas Fleischer
9c9fd5da15 Overall indentation fixes.
Use spaces instead of tabs for source code indentation only, strip
trailing whitespaces from lines.

Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
2011-03-14 19:03:53 +01:00
Lukas Fleischer
55262a3074 Add russian translation.
Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
2011-03-13 13:17:09 +01:00
Lukas Fleischer
2030a0563c Parse appointment end times correctly if they date back.
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>
2011-03-13 12:57:55 +01:00
Lukas Fleischer
0e5a9f1620 Clean up updatestring() in "utils.c".
Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
2011-03-05 17:49:27 +01:00
Lukas Fleischer
a778706791 Simplify date_sec2date_fmt() in "utils.c".
Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
2011-03-05 17:30:35 +01:00
Lukas Fleischer
6f425dc1fa Clean up and simplify line editing functions.
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>
2011-03-05 17:18:21 +01:00
Lukas Fleischer
355687b644 Ensure key descriptions in status bar are always null-terminated.
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>
2011-03-05 15:39:01 +01:00
Lukas Fleischer
9dad482ad8 Remove unnecessary casting variables from get_item_{hour,min}().
Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
2011-03-04 14:36:48 +01:00
Lukas Fleischer
81584e77f8 Fix mail address of release announcement list.
Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
2011-03-04 11:40:17 +01:00
Lukas Fleischer
c22dcaf6be Update website links to match the new URL.
Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
2011-03-04 11:07:49 +01:00
Lukas Fleischer
73e9649387 Update mail addresses to match the new mailing lists.
Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
2011-03-04 11:07:40 +01:00
Lukas Fleischer
30da37addd Reformat "src/Makefile.am".
Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
2011-03-04 10:15:03 +01:00
Lukas Fleischer
d42d07ef69 Simplify date_sec2date_str() in "utils.c".
Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
2011-03-04 10:12:27 +01:00
Lukas Fleischer
fdcfd74823 Remove date_sec2hour_str() from "utils.c".
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>
2011-03-04 10:08:02 +01:00
Lukas Fleischer
082e7d4b98 Simplify date2sec() in "utils.c".
Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
2011-03-04 10:01:23 +01:00
Lukas Fleischer
8b34a0e0fd Simplify check_time() in "utils.c".
Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
2011-03-04 09:51:04 +01:00
Lukas Fleischer
0d12a788ad Simplify print_in_middle() in "utils.c".
Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
2011-03-04 09:28:18 +01:00