update
[CleanReadLine.git] / Clean System Files / readLine.c
index b645039..b72d31a 100644 (file)
@@ -20,6 +20,73 @@ char *cleanStringToCString(CleanString s){
        return cs;
 }
 
+void cleanReadLine(CleanString prompt, int history, CleanString *result)
+{
+       char *cs_prompt = cleanStringToCString(prompt);
+
+       //Get the answer and add to history if not empty
+       if(cs_answer){
+               free(cs_answer);
+               cs_answer = (char *)NULL;
+       }
+       cs_answer = readline(cs_prompt);
+       free(cs_prompt);
+       if(cs_answer && *cs_answer && history){
+               add_history(cs_answer);
+       }
+
+       if(!cs_answer){ //In case of an EOF
+               CleanStringVariable(answer, 1);
+               *result = (CleanString) answer;
+               memcpy(CleanStringCharacters(answer), "", 1);
+               CleanStringLength(answer) = 1;
+       } else { //In case of a proper response
+               CleanStringVariable(answer, strlen(cs_answer));
+               *result = (CleanString) answer;
+               memcpy(CleanStringCharacters(answer), cs_answer, strlen(cs_answer));
+               CleanStringLength(answer) = strlen(cs_answer);
+       }
+}
+
+void cleanSetReadLineName(CleanString name){
+       rl_readline_name = cleanStringToCString(name);
+}
+
+void cleanUsingHistory(){
+       using_history();
+}
+
+void cleanAddHistory(CleanString entry){
+       char *cs_entry = cleanStringToCString(entry);
+       add_history(cs_entry);
+       free(cs_entry);
+}
+
+void cleanClearHistory(){
+       clear_history();
+}
+
+int cleanHistorySearch(CleanString s, int dir){
+       char *cs_s = cleanStringToCString(s);
+       int ret = history_search(cs_s, dir);
+       free(cs_s);
+       return ret;
+}
+
+int cleanHistorySearchPrefix(CleanString s, int dir){
+       char *cs_s = cleanStringToCString(s);
+       int ret = history_search_prefix(cs_s, dir);
+       free(cs_s);
+       return ret;
+}
+
+int cleanHistorySearchPos(CleanString s, int dir, int pos){
+       char *cs_s = cleanStringToCString(s);
+       int ret = history_search_pos(cs_s, dir, pos);
+       free(cs_s);
+       return ret;
+}
+
 int cleanReadHistory(CleanString path)
 {
        char *cs_path = cleanStringToCString(path);
@@ -60,30 +127,3 @@ int cleanHistoryTruncateFile(CleanString path, int nlines)
        return errno;
 }
 
-void cleanReadLine(CleanString prompt, int history, CleanString *result)
-{
-       char *cs_prompt = cleanStringToCString(prompt);
-
-       //Get the answer and add to history if not empty
-       if(cs_answer){
-               free(cs_answer);
-               cs_answer = (char *)NULL;
-       }
-       cs_answer = readline(cs_prompt);
-       free(cs_prompt);
-       if(cs_answer && *cs_answer && history){
-               add_history(cs_answer);
-       }
-
-       if(!cs_answer){ //In case of an EOF
-               CleanStringVariable(answer, 1);
-               *result = (CleanString) answer;
-               memcpy(CleanStringCharacters(answer), "", 1);
-               CleanStringLength(answer) = 1;
-       } else { //In case of a proper response
-               CleanStringVariable(answer, strlen(cs_answer));
-               *result = (CleanString) answer;
-               memcpy(CleanStringCharacters(answer), cs_answer, strlen(cs_answer));
-               CleanStringLength(answer) = strlen(cs_answer);
-       }
-}