full history API implemented
[CleanReadLine.git] / Clean System Files / readLine.c
index e3f4def..814541c 100644 (file)
@@ -29,7 +29,8 @@ void cleanSetReadLineName(CleanString name)
 }
 
 //Readline functions
-void cleanReadLine(CleanString prompt, int history, CleanString *result, int *eof)
+void cleanReadLine(
+               CleanString prompt, int history, CleanString *result, int *eof)
 {
        char *cs_prompt = cleanStringToCString(prompt);
 
@@ -215,6 +216,61 @@ int cleanHistoryTotalBytes()
 }
 
 //Moving Around the History List
+int cleanHistorySetPos(int pos)
+{
+       return history_set_pos(pos);
+}
+
+void cleanPreviousHistory(
+               CleanString *line, CleanString *timestamp, int *null)
+{
+       *null = 0;
+       HIST_ENTRY *entry = previous_history();
+       char *cs_line = "";
+       char *cs_stamp = "";
+       if(entry == NULL){
+               *null = 1;
+       } else {
+               *null = 0;
+               cs_line = entry->line;
+               cs_stamp = entry->timestamp;
+       }
+
+       CleanStringVariable(cleanLine, strlen(cs_line));
+       *line = (CleanString) cleanLine;
+       memcpy(CleanStringCharacters(cleanLine), cs_line, strlen(cs_line));
+       CleanStringLength(cleanLine) = strlen(cs_line);
+
+       CleanStringVariable(cleanTimestamp, strlen(cs_stamp));
+       *timestamp = (CleanString) cleanTimestamp;
+       memcpy(CleanStringCharacters(cleanTimestamp), cs_stamp, strlen(cs_stamp));
+       CleanStringLength(cleanTimestamp) = strlen(cs_stamp);
+}
+
+void cleanNextHistory(CleanString *line, CleanString *timestamp, int *null)
+{
+       *null = 0;
+       HIST_ENTRY *entry = next_history();
+       char *cs_line = "";
+       char *cs_stamp = "";
+       if(entry == NULL){
+               *null = 1;
+       } else {
+               *null = 0;
+               cs_line = entry->line;
+               cs_stamp = entry->timestamp;
+       }
+
+       CleanStringVariable(cleanLine, strlen(cs_line));
+       *line = (CleanString) cleanLine;
+       memcpy(CleanStringCharacters(cleanLine), cs_line, strlen(cs_line));
+       CleanStringLength(cleanLine) = strlen(cs_line);
+
+       CleanStringVariable(cleanTimestamp, strlen(cs_stamp));
+       *timestamp = (CleanString) cleanTimestamp;
+       memcpy(CleanStringCharacters(cleanTimestamp), cs_stamp, strlen(cs_stamp));
+       CleanStringLength(cleanTimestamp) = strlen(cs_stamp);
+}
 
 //Searching the History List
 int cleanHistorySearch(CleanString s, int dir)