X-Git-Url: https://git.martlubbers.net/?a=blobdiff_plain;f=Clean%20System%20Files%2FreadLine.c;h=eb5c76ad6fd090deb7c71ce68f112ca7a99de7c7;hb=b55c263bb820f2667cab744d4e5a5be945d67d02;hp=814541c2c248f57ebd8f52504eb0221ba61ba5e8;hpb=57892b56a4418339b29e8766aa641d3f42e118c9;p=CleanReadLine.git diff --git a/Clean System Files/readLine.c b/Clean System Files/readLine.c index 814541c..eb5c76a 100644 --- a/Clean System Files/readLine.c +++ b/Clean System Files/readLine.c @@ -7,6 +7,8 @@ #include "Clean.h" static char *cs_answer = (char *)NULL; +static char **cs_tokens = (char **)NULL; +static int num_tokens = 0; HISTORY_STATE *history_state = NULL; //Helper functions @@ -337,3 +339,91 @@ int cleanHistoryTruncateFile(CleanString path, int nlines) free(cs_path); return errno == 0; } + +//History Expansion +void cleanHistoryExpand(CleanString string, CleanString *output, int *ret) +{ + char *cs_output; + char *cs_string = cleanStringToCString(string); + *ret = history_expand(cs_string, &cs_output); + + CleanStringVariable(cleanOutput, strlen(cs_output)); + *output = (CleanString) cleanOutput; + memcpy(CleanStringCharacters(cleanOutput), cs_output, strlen(cs_output)); + CleanStringLength(cleanOutput) = strlen(cs_output); + free(cs_output); + free(cs_string); +} + +void cleanGetHistoryEvent( + CleanString string, int qchar, int cindex, CleanString *output, + int *retcindex, int *null) +{ + char *cs_string = cleanStringToCString(string); + char *cs_output = get_history_event(cs_string, &cindex, qchar); + + if(cs_output == NULL){ + *null = 1; + cs_output = ""; + } else { + *null = 0; + } + + CleanStringVariable(cleanOutput, strlen(cs_output)); + *output = (CleanString) cleanOutput; + memcpy(CleanStringCharacters(cleanOutput), cs_output, strlen(cs_output)); + CleanStringLength(cleanOutput) = strlen(cs_output); + + if(*null == 0){ + free(cs_output); + } + *retcindex = cindex; +} + +int cleanHistoryTokenizeInit(CleanString string) +{ + if(cs_tokens){ + for(int i = 0; i