summaryrefslogtreecommitdiffstats
path: root/todo.c
diff options
context:
space:
mode:
Diffstat (limited to 'todo.c')
-rw-r--r--todo.c37
1 files changed, 33 insertions, 4 deletions
diff --git a/todo.c b/todo.c
index aa074b2..e68ef29 100644
--- a/todo.c
+++ b/todo.c
@@ -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 );