initial commit, working readline function
[CleanReadLine.git] / Clean System Files / readLine.c
1 #include <stdio.h>
2 #include <stdlib.h>
3
4 #include <readline/readline.h>
5 #include <readline/history.h>
6
7 #include "Clean.h"
8
9 static char *cs_answer = (char *)NULL;
10
11 void cleanReadLine(CleanString prompt, int history, CleanString *result)
12 {
13 //Initialize
14 unsigned long promptlen = CleanStringLength(prompt);
15 char *cs_prompt = (char *)malloc(promptlen+1);
16 if(cs_prompt == NULL){
17 printf("malloc failed...\n");
18 exit(1);
19 }
20 memcpy(cs_prompt, CleanStringCharacters(prompt), promptlen);
21 cs_prompt[promptlen] = '\0';
22
23 //Get the answer and add to history if not empty
24 if(cs_answer){
25 free(cs_answer);
26 cs_answer = (char *)NULL;
27 }
28 cs_answer = readline(cs_prompt);
29 free(cs_prompt);
30 if(cs_answer && *cs_answer && history){
31 add_history(cs_answer);
32 }
33
34 //Transfor answer into cstring
35 CleanStringVariable(answer, strlen(cs_answer));
36 *result = (CleanString) answer;
37 memcpy(CleanStringCharacters(answer), cs_answer, strlen(cs_answer));
38 CleanStringLength(answer) = strlen(cs_answer);
39 }