Files
c-automates-giiiiive/Anna et Vincent/main.c
2024-12-16 02:40:29 +01:00

95 lines
2.1 KiB
C

#include "main.h"
#include "regexp.h"
#include "nfa.h"
#include "printing.h"
#include "alloc.h"
#include "shell_tools.h"
#include "string.h"
#include "time.h"
#include "shell_keywords.h"
#include "files.h"
#include <readline/readline.h>
#include <readline/history.h>
extern const char *all_strings[];
char **keyword_name_completion(const char *, int, int);
char *keyword_name_generator(const char *, int);
char **keyword_name_completion(const char *text, int start, int end) {
int z = start;
start = z;
z = end;
end = z;
rl_attempted_completion_over = 1;
return rl_completion_matches(text, keyword_name_generator);
}
char *keyword_name_generator(const char *text, int state) {
static int index, len;
const char *name;
if (!state) {
index = 0;
len = strlen(text);
}
while ((name = all_strings[index++])) {
if (strncmp(name, text, len) == 0) {
return strdup(name);
}
}
return NULL;
}
int main(int argc, char *argv[]) {
assert(argc > 0); // pour éviter un warning.
// Création du répertoire outputs
system("mkdir -p " OUTPUT_DIR);
// Readline
rl_attempted_completion_function = keyword_name_completion;
// rl_basic_word_break_characters = " \t\n\"\\'`@$><;|&{(,.=";
rl_basic_word_break_characters = " \t.=";
char *histfile;
char *str;
str = strrchr(argv[0], '/');
if (str != NULL) {
str++;
}
else {
str = argv[0];
}
CALLOC(histfile, 10 + strlen(str));
histfile[0] = '.';
strcpy(histfile + 1, str);
strcpy(histfile + 1 + strlen(str), "_history");
srand(time(NULL));
using_history();
int err = read_history(histfile);
if (err) {
WARNING("Pas de fichier d'historique trouvé, %d.\n", err);
}
keywords_add_all_keys();
print_title_box(5, true, stdout, 1,
"Bienvenue dans LEA (Langages, Expressions et Automates)");
shell_parse();
write_history(histfile);
free(histfile);
return EXIT_SUCCESS;
}