diff options
author | Lukas Fleischer <calcurse@cryptocrack.de> | 2011-08-02 21:42:10 +0200 |
---|---|---|
committer | Lukas Fleischer <calcurse@cryptocrack.de> | 2011-10-05 12:25:47 +0200 |
commit | 2fe7a36aab8c6c934550b2b8dc2074c1af23859a (patch) | |
tree | 31fe32a80e1f15d2bfa457b40ba337c849f3e8df | |
parent | bc97d60ef2cacfe79875e6c604bf3f0e6d07fbd9 (diff) | |
download | calcurse-2fe7a36aab8c6c934550b2b8dc2074c1af23859a.tar.gz calcurse-2fe7a36aab8c6c934550b2b8dc2074c1af23859a.zip |
Accept variable length note names
Read up to the first blank in note_read() instead of assuming a
fixed-width note file name. Accept everything up to 40 characters (which
is the length of a SHA1 hash in hexadecimal representation).
Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
-rw-r--r-- | src/calcurse.h | 3 | ||||
-rw-r--r-- | src/io.c | 8 | ||||
-rw-r--r-- | src/note.c | 17 | ||||
-rw-r--r-- | src/todo.c | 4 |
4 files changed, 22 insertions, 10 deletions
diff --git a/src/calcurse.h b/src/calcurse.h index 8aa5c4a..4f0dc20 100644 --- a/src/calcurse.h +++ b/src/calcurse.h @@ -109,7 +109,8 @@ #define ATTR_HIGHEST 6 #define STATUSHEIGHT 2 -#define NOTESIZ 6 +#define MAX_NOTESIZ 40 +#define TMPEXTSIZ 6 /* Format for appointment hours is: HH:MM */ #define HRMIN_SIZE 6 @@ -1114,7 +1114,7 @@ io_load_app (void) int id = 0; int freq; char type, state = 0L; - char note[NOTESIZ + 1], *notep; + char note[MAX_NOTESIZ + 1], *notep; t = time (NULL); lt = localtime (&t); @@ -1295,7 +1295,7 @@ io_load_todo (void) char *newline; int nb_tod = 0; int c, id; - char buf[BUFSIZ], e_todo[BUFSIZ], note[NOTESIZ + 1]; + char buf[BUFSIZ], e_todo[BUFSIZ], note[MAX_NOTESIZ + 1]; data_file = fopen (path_todo, "r"); if (data_file == NULL) @@ -2313,7 +2313,7 @@ ical_read_note (char *line, unsigned *noskipped, ical_vevent_e item_type, if ((p = strchr (line, ':')) != NULL) { - notename = new_tempfile (path_notes, NOTESIZ); + notename = new_tempfile (path_notes, TMPEXTSIZ); EXIT_IF (notename == NULL, _("Warning: could not create new note file to store " "description. Aborting...\n")); @@ -2818,7 +2818,7 @@ io_log_init (void) struct io_file *log; snprintf (logprefix, BUFSIZ, "%s/calcurse_log.", get_tempdir ()); - logname = new_tempfile (logprefix, NOTESIZ); + 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)); @@ -93,7 +93,18 @@ erase_note (char **note, enum eraseflg flag) void note_read (char *buffer, FILE *fp) { - (void)fgets (buffer, NOTESIZ + 1, fp); - buffer[NOTESIZ] = '\0'; - getc (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'; } @@ -334,14 +334,14 @@ todo_chg_priority (int action) struct todo *backup; char backup_mesg[BUFSIZ]; int backup_id; - char backup_note[NOTESIZ + 1]; + char backup_note[MAX_NOTESIZ + 1]; int do_chg = 1; backup = todo_get_item (hilt); (void)strncpy (backup_mesg, backup->mesg, strlen (backup->mesg) + 1); backup_id = backup->id; if (backup->note) - (void)strncpy (backup_note, backup->note, NOTESIZ + 1); + (void)strncpy (backup_note, backup->note, MAX_NOTESIZ + 1); else backup_note[0] = '\0'; switch (action) |