diff --git a/src/hackertyper.c b/src/hackertyper.c new file mode 100644 index 0000000..e4dd2ea --- /dev/null +++ b/src/hackertyper.c @@ -0,0 +1,43 @@ +#include +#include +#include +#include +#include + +#define COMMAND "source-highlight --failsafe -f esc --style-file=esc.style -o STDOUT -i " +#define READ "r" +#define CHARS_TO_WRITE 10 + +int main(int argc, char *argv[]) { + if (argc < 2) { + return EXIT_FAILURE; + } + + setbuf(stdout, NULL); + + struct termios terminal_settings; + char current_char; + char *command = malloc(sizeof(char) * (strlen(COMMAND) + strlen(argv[1]))); + + tcgetattr(STDIN_FILENO, &terminal_settings); + terminal_settings.c_lflag &= ~(ICANON | ECHO); + tcsetattr(STDIN_FILENO, TCSANOW, &terminal_settings); + sprintf(command, "%s%s", COMMAND, argv[1]); + + FILE *command_output_fptr = popen(command, READ); + + free(command); + + while (!feof(command_output_fptr)) { + getchar(); + + for (unsigned int i = 0; i < CHARS_TO_WRITE; i++) { + current_char = fgetc(command_output_fptr); + printf("%c", current_char); + } + } + + pclose(command_output_fptr); + + return EXIT_SUCCESS; +}