diff scripturereader.c @ 0:6e1857de3922

Finished
author VilyaemKenyaz
date Fri, 25 Aug 2023 14:14:24 -0400
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/scripturereader.c	Fri Aug 25 14:14:24 2023 -0400
@@ -0,0 +1,94 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#define PAGE_SIZE 50
+
+void print_page(const char* filename, int page_number, int total_pages) {
+    system("clear");
+    printf("---SCRIPTURE-READER---\n");
+    FILE* file = fopen(filename, "r");
+    if (file == NULL) {
+        printf("Error opening file: %s\n", filename);
+        exit(1);
+    }
+
+    char line[256];
+    int line_count = 0;
+    int current_page = 1;
+
+    while (fgets(line, sizeof(line), file)) {
+        line_count++;
+        if (line_count > (page_number - 1) * PAGE_SIZE && line_count <= page_number * PAGE_SIZE) {
+            printf("%s", line);
+        }
+        if (line_count > page_number * PAGE_SIZE) {
+            break;
+        }
+    }
+
+    fclose(file);
+
+    printf("\n--- Page %d of %d ---\n", page_number, total_pages);
+}
+
+int get_total_pages(const char* filename) {
+    FILE* file = fopen(filename, "r");
+    if (file == NULL) {
+        printf("Error opening file: %s\n", filename);
+        exit(1);
+    }
+
+    char line[256];
+    int line_count = 0;
+
+    while (fgets(line, sizeof(line), file)) {
+        line_count++;
+    }
+
+    fclose(file);
+
+    return (line_count + PAGE_SIZE - 1) / PAGE_SIZE;
+}
+
+int main(int argc, char* argv[]) {
+    if (argc < 2 || argc > 3) {
+        printf("ScriptureReader by William @ peepsoftgames.github.io thekenyaz@yandex.com\n");
+        printf("Usage:\n");
+        printf("  scripturereader <textfile>\n");
+        return 1;
+    }
+
+    const char* filename = argv[1];
+
+    int total_pages = get_total_pages(filename);
+    int current_page = 1;
+
+    while (1) {
+        system("clear");
+        print_page(filename, current_page, total_pages);
+
+        char ch;
+        scanf(" %c", &ch);
+        switch (ch) {
+            case 'l':
+            case 'L':
+ if (current_page > 1) {
+                    current_page--;
+                }
+                break;
+            case 'r':
+            case 'R':
+ if (current_page < total_pages) {
+                    current_page++;
+                }
+                break;
+            case 'q':
+            case 'Q':
+ exit(0);
+        }
+    }
+
+    exit(0);
+}
+