From 53a8f41171179663cebdb9afbee5de88f8b6bbd4 Mon Sep 17 00:00:00 2001 From: Aakarsh Kashyap Date: Mon, 29 Jun 2026 12:57:24 +0530 Subject: Refactored the codebase so it becomes mine --- src/main.cpp | 131 ++++++++++++++++++++++++++++++++--------------------------- 1 file changed, 72 insertions(+), 59 deletions(-) (limited to 'src/main.cpp') diff --git a/src/main.cpp b/src/main.cpp index 97e9dce..7565371 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,72 +1,85 @@ -#include "../include/reader.h" - -int main(int argc, char *argv[]) { - try { - editor_cfg *cfg = (editor_cfg *)malloc(sizeof(editor_cfg)); - if (cfg == nullptr) { - die("[err]: malloc failed\n"); - } - - enable_raw(cfg); - init_editor(cfg); - - int speed { 250000 }; - - if (argc < 2) - die("[err]: no file provided!\n"); - - if (argc > 3) - die("[err]: too many arguments!\n"); - - if (argc == 3) { - if (!is_number(argv[2])) - die("[err]: invalid speed interval provided!\n"); - speed = std::stoi(argv[2]); - } +/* main.cpp - reader: RSVP-style terminal word reader */ - FILE *fp = fopen(argv[1], "r"); +#define _POSIX_C_SOURCE 200809L - if (fp == nullptr) - die("[err]: fopen failed\n"); +#include +#include +#include +#include - fseek(fp, 0, SEEK_END); - long size = ftell(fp); - rewind(fp); +#include +#include - std::string content(size, '\0'); - fread(content.data(), 1, size, fp); - - fclose(fp); - - std::vector data; - split(content, data, " \t\r\n,;:!?"); +#include "../include/reader.h" - while(1) { - for (std::string &k: data) { - if (k.empty()) continue; - window_size_callback(cfg); - editor_refresh_scrn(cfg); - int mid = k.size() / 2; +int +main(int argc, char *argv[]) +{ + EditorCfg *cfg; + FILE *fp; + long size; + int speed; + std::string content; + std::vector data; + size_t i; + std::string *k; + + cfg = (EditorCfg *)malloc(sizeof(EditorCfg)); + speed = 250000; + + if (!cfg) + die("[err]: malloc failed\n"); + + enable_raw(cfg); + init_editor(cfg); + + if (argc < 2) + die("[err]: no file provided!\n"); + if (argc > 3) + die("[err]: too many arguments!\n"); + + if (argc == 3) { + if (!is_number(argv[2])) + die("[err]: invalid speed interval provided!\n"); + speed = atoi(argv[2]); + } - write(STDOUT_FILENO, k.substr(0, mid).c_str(), mid); + fp = fopen(argv[1], "r"); + if (!fp) + die("[err]: fopen failed\n"); + + fseek(fp, 0, SEEK_END); + size = ftell(fp); + rewind(fp); + + content.resize(size, '\0'); + fread(&content[0], 1, size, fp); + fclose(fp); + + split(content, data, " \t\r\n,;:!?"); + + for (;;) { + for (i = 0; i < data.size(); i++) { + k = &data[i]; + if (k->empty()) + continue; + window_size_callback(cfg); + editor_refresh_scrn(cfg); + { + int mid = (int)k->size() / 2; + int remaining = (int)k->size() - mid - 1; + const char *cstr = k->c_str(); + + write(STDOUT_FILENO, cstr, mid); write(STDOUT_FILENO, "\x1b[31m", 5); - write(STDOUT_FILENO, k.substr(mid, 1).c_str(), 1); + write(STDOUT_FILENO, cstr + mid, 1); write(STDOUT_FILENO, "\x1b[m", 3); - - int remaining = k.size() - mid - 1; - - write(STDOUT_FILENO, k.substr(mid + 1, remaining).c_str(), remaining); - usleep(speed); + write(STDOUT_FILENO, cstr + mid + 1, remaining); } + usleep(speed); } - - free(cfg); - - } catch (const std::exception &e) { - die(e.what()); - } catch (...) { - die("[err]: Unknown exception occurred\n"); } + free(cfg); return 0; -} /* main.cpp */ +} -- cgit v1.2.3