payredu

[WIP] Cross-platform ledger GUI written in c99
git clone git@nonplanar.org:payredu.git
Log | Files | Refs | README

payredu.c (1393B)


      1 #include <stdio.h>
      2 #include <stdlib.h>
      3 // TODO enable this for GUI
      4 //#include <dlfcn.h>
      5 #include <signal.h>
      6 #ifndef _WIN32
      7 #include <unistd.h>
      8 #endif
      9 
     10 #include <book.h>
     11 
     12 #define MAX_MEMORY 4064
     13 #define BUFFER_SIZE 256
     14 
     15 int should_exit = 0;
     16 
     17 void
     18 sig_handle() {
     19 	printf("Reloaded\n");
     20 	system("date");
     21 	should_exit = 1;
     22 }
     23 
     24 typedef void* (*module_main_func)(const char*, size_t);
     25 
     26 #define die(...) \
     27 	do { printf(__VA_ARGS__); \
     28 	exit(-1); } while(0);
     29 
     30 int
     31 main(int argc, char* argv[]) {
     32 	FILE* in = NULL;
     33 	char* file_to_open = NULL;
     34 	// FIXME this is for debugging, payredu will not open any file by default
     35 	if (argc == 1) file_to_open = "october-2023.txt";
     36 	else for (int i = 1; i < argc; i++)
     37 	if (argv[i][0] == '-' && strlen(argv[i]) == 2) {
     38 		switch (argv[i][1]) {
     39 			case 'f':
     40 				file_to_open = argv[++i];
     41 				break;
     42 			default:
     43 				printf("unknown flag: %s\n", argv[i]);
     44 				break;
     45 		}
     46 	} else die("invalid argument: %s", argv[i]);
     47 
     48 	if (file_to_open == NULL)
     49 		die("require a file to open, pass -f <filename>");
     50 
     51 	in = fopen(file_to_open, "r");
     52 
     53 	char* data = (char*)malloc(2048 * sizeof(char));
     54 	size_t data_size = 0;
     55 	size_t c_read =  0;
     56 	while((c_read = fread(data + data_size + 0, 1, BUFFER_SIZE, in)) != 0) {
     57 		data_size += c_read;
     58 	}
     59 	if (ferror(in)) fprintf(stderr, "Error reading file\n");
     60 	fprintf(stdout, "Startig loop\n");
     61 	ledger_parse_data(data, data_size);
     62 	return 0;
     63 }
     64