Commit 1e88ba42 authored by Chris's avatar Chris
Browse files

safeguarding against windows incompatibility (wip)

parent b529449e
Loading
Loading
Loading
Loading
+19 −7
Original line number Diff line number Diff line
@@ -2,16 +2,22 @@

#include <stdio.h>
#include <stdlib.h>
#include <termios.h> // for registering raw keypresses, as in menus
#include <time.h> // timespec struct
#include <unistd.h> // for STDIN_FILENO, used with termios
#include "utils.h"

void clear_screen(void) {
#ifdef _WIN32
    system("cls");
// terminal manipulation includes - only for non-windows
#ifndef _WIN32
#include <unistd.h> // for STDIN_FILENO, used with termios
#include <termios.h> // for registering raw keypresses, as in menus
#else
#include <conio.h>
#endif

void clear_screen(void) {
#ifndef _WIN32
    system("clear");
#else
    system("cls");
#endif
}

@@ -21,23 +27,29 @@ FILE *get_urandom(void) {
    return urandom;
}

struct termios original_terminal_configuration, raw_terminal_configuration; // not sure, but I might feel better if this were in yaht.c
struct termios original_terminal_configuration, raw_terminal_configuration; // todo come back to this. not sure, but I might feel better if this were in yaht.c

// set terminal to raw mode for registering keypresses without need to press Enter
void set_raw_terminal_configuration(void) {
#ifndef _WIN32 // this is only applicable for unix environments
    tcgetattr(STDIN_FILENO, &original_terminal_configuration);
    raw_terminal_configuration = original_terminal_configuration;
    // new_terminal_configuration.c_lflag &= ~ICANON & ~ECHO & ~ISIG; // disables canonical input, echo, signals (we want signals but good to know)
    raw_terminal_configuration.c_lflag &= ~ICANON & ~ECHO; // disables canonical input, echo
    tcsetattr(STDIN_FILENO, TCSANOW, &raw_terminal_configuration); // apply settings to terminal
#endif
}

void set_original_terminal_configuration(void) {
#ifndef _WIN32
    set_terminal_configuration(&original_terminal_configuration);
#endif
}

void set_terminal_configuration(const struct termios *terminal_configuration) {
    tcsetattr(STDIN_FILENO, TCSANOW, terminal_configuration); // apply settings to terminal
#ifndef _WIN32
    tcsetattr(STDIN_FILENO, TCSANOW, terminal_configuration); // apply settings to unix terminal
#endif
}

void sleep_ms(const unsigned int ms) {