summaryrefslogtreecommitdiffstats
path: root/todo.c
diff options
context:
space:
mode:
authorFreeArtMan <dos21h@gmail.com>2014-12-24 15:44:09 +0900
committerFreeArtMan <dos21h@gmail.com>2014-12-24 15:44:09 +0900
commitd5ec429771a092e88015e489103e43badaef2c0d (patch)
tree598ca762ebd6186bb5dd17c6d20ceca532e86f08 /todo.c
parentae9cfee6605db373e9aa8b7c054403d83a612595 (diff)
downloadmicrobbs-d5ec429771a092e88015e489103e43badaef2c0d.tar.gz
microbbs-d5ec429771a092e88015e489103e43badaef2c0d.zip
Todo added into bbs shell
Diffstat (limited to 'todo.c')
-rw-r--r--todo.c78
1 files changed, 78 insertions, 0 deletions
diff --git a/todo.c b/todo.c
new file mode 100644
index 0000000..a505123
--- /dev/null
+++ b/todo.c
@@ -0,0 +1,78 @@
+#include "todo.h"
+
+int bbs_todo( term_screen *ts, const char *fname)
+{
+ int ret=-1;
+
+ int ret_len;
+ size_t in_size=0;
+ char *in_buf=NULL;
+ int quit_loop=0;
+
+ if ( ts == NULL )
+ return ret;
+
+
+ if ( fname == NULL )
+ fname = CONFIG_TODO_DEFAULT_FILE;
+
+ List *todo_list = llist_new();
+ f_file *file = f_file_open( fname, F_FILE_READ );
+ if ( file != NULL )
+ {
+ const int l_s = 128;
+ int r_v;
+ {
+ cycle0:;
+ char *l = malloc( l_s );
+ r_v = f_file_readl( file, l_s, l );
+ if ( r_v < 0 ) goto exit_cycle0;
+ l[r_v] = '\0';
+ llist_push( todo_list, l );
+ goto cycle0;
+ exit_cycle0:;
+ }
+
+ }
+ f_file_close( file );
+
+ while( (quit_loop == 0) )
+ {
+
+ printf("(S)how tood list,(Q)uit:");
+ ret_len = getline( &in_buf, &in_size, stdin );
+ if ( ret_len > 0 )
+ {
+ char ch = in_buf[0];
+ switch( ch )
+ {
+ case 'q':
+ case 'Q':
+ quit_loop = 1;
+ ret = 0;
+ break;
+
+ case 's':
+ case 'S':
+ {
+ struct ListNode *iter=todo_list->first;
+ int cnt = 1;
+ while (iter != NULL)
+ {
+ printf( "[%d] -> %s\n", cnt, (char *)iter->val);
+ cnt += 1;
+ iter = iter->next;
+ }
+ }
+ break;
+
+ default:
+ printf("Try more\n");
+ }
+ }
+ }
+
+ llist_free( todo_list );
+
+ return ret;
+} \ No newline at end of file