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>
This commit is contained in:
Lukas Fleischer 2011-08-02 21:42:10 +02:00
parent bc97d60ef2
commit 2fe7a36aab
4 changed files with 22 additions and 10 deletions

View File

@ -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

View File

@ -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));

View 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';
}

View File

@ -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)