summaryrefslogtreecommitdiffstats
path: root/todo.c
diff options
context:
space:
mode:
Diffstat (limited to 'todo.c')
-rw-r--r--todo.c62
1 files changed, 61 insertions, 1 deletions
diff --git a/todo.c b/todo.c
index 745db49..aa074b2 100644
--- a/todo.c
+++ b/todo.c
@@ -59,7 +59,7 @@ int bbs_todo( term_screen *ts, const char *fname)
{
term_clr_scr( ts );
term_cur_set_c( ts, 0 );
- printf("(Q)uit"); fflush( stdout );
+ printf("(A)dd,(Q)uit"); fflush( stdout );
//dispaly todo list
row = term_get_maxrow( ts );
@@ -95,6 +95,11 @@ int bbs_todo( term_screen *ts, const char *fname)
quit_loop = 1;
break;
+ case 'a':
+ case 'A':
+ bbs_todo_add( ts, todo_list, todo_fname );
+ break;
+
case 's':
case 'S':
{
@@ -119,4 +124,59 @@ int bbs_todo( term_screen *ts, const char *fname)
return ret;
}
+int bbs_todo_add( term_screen *ts, List *todo, const char *fname)
+{
+ int ret = -1;
+ int fret = -1;
+ const int buf_size = 64;
+ char buf[buf_size];
+
+ if ( ts == NULL )
+ return -1;
+
+ if ( fname == NULL )
+ return -1;
+
+ term_clr_scr( ts );
+ term_cur_set_c( ts, 0 );
+ term_cur_set_r( ts, 0 );
+ printf("Add new todo task:\n"); fflush( stdout );
+
+ memset( buf, 0, buf_size );
+ term_cur_set_c( ts, 0 );
+ fret = term_readline( ts, buf, buf_size, READLINE_ALPHA );
+ if ( fret > 0 )
+ {
+ char *l = malloc( fret );
+ memcpy( l, buf, fret );
+ llist_push( todo, l );
+ bbs_todo_save( fname, todo );
+ ret = 0;
+ } else
+ {
+ return -1;
+ }
+
+ return ret;
+}
+
+int bbs_todo_save( const char *fname, List *todo )
+{
+ int ret=-1;
+
+ f_file *f=NULL;
+ struct ListNode *iter=todo->first;
+
+ f = f_file_open( fname, F_FILE_WRITE );
+ while ( iter->next != NULL )
+ {
+ f_file_write( f, strlen(iter->val), iter->val );
+ printf("%s\n", iter->val );
+ iter = iter->next;
+ }
+ f_file_close( f );
+
+ return ret;
+}
+
#endif \ No newline at end of file