diff options
Diffstat (limited to 'todo.c')
-rw-r--r-- | todo.c | 37 |
1 files changed, 33 insertions, 4 deletions
@@ -147,8 +147,9 @@ int bbs_todo_add( term_screen *ts, List *todo, const char *fname) fret = term_readline( ts, buf, buf_size, READLINE_ALPHA ); if ( fret > 0 ) { - char *l = malloc( fret ); + char *l = malloc( fret+1 ); memcpy( l, buf, fret ); + l[fret]='\0'; llist_push( todo, l ); bbs_todo_save( fname, todo ); ret = 0; @@ -160,6 +161,28 @@ int bbs_todo_add( term_screen *ts, List *todo, const char *fname) return ret; } +int bbs_todo_remove( term_screen *ts, List *todo, const char *fname ) +{ + int ret=-1; + + if ( ts == NULL ) + return ret; + + if ( todo == NULL ) + return ret; + + if ( fname == NULL ) + return ret; + + term_clr_scr( ts ); + term_cur_set_c( ts, 0 ); + term_cur_set_r( ts, 0 ); + printf("Remove entry from todo:\n"); fflush( stdout ); + + + return ret; +} + int bbs_todo_save( const char *fname, List *todo ) { int ret=-1; @@ -168,10 +191,16 @@ int bbs_todo_save( const char *fname, List *todo ) struct ListNode *iter=todo->first; f = f_file_open( fname, F_FILE_WRITE ); - while ( iter->next != NULL ) + while ( iter != NULL ) { - f_file_write( f, strlen(iter->val), iter->val ); - printf("%s\n", iter->val ); + size_t str_size=strlen( iter->val )+2; + char *str = malloc( str_size ); + memcpy( str, iter->val, str_size-2); + str[str_size-1] = '\0'; + str[str_size-2] = '\n'; + f_file_write( f, strlen(str), str ); + printf( "%s\n", str ); fflush( stdout ); + free( str ); iter = iter->next; } f_file_close( f ); |