summaryrefslogtreecommitdiff
path: root/rushs/tinyprintf/evalexpr/src/evalexpr.c
diff options
context:
space:
mode:
authorMartial Simon <msimon_fr@hotmail.com>2025-10-11 22:19:00 +0200
committerMartial Simon <msimon_fr@hotmail.com>2025-10-11 22:19:00 +0200
commit73c2b00a10c5786ddeeacc915e233fd4df1c9321 (patch)
treee299ea4e8ac161b2b21170172ff8f182c1c3fe1a /rushs/tinyprintf/evalexpr/src/evalexpr.c
parentc9b6b9a5ca082fe7c1b6f58d7713f785a9eb6a5c (diff)
fix: evalexpr & tinyprintf contenaient toute la piscine
Diffstat (limited to 'rushs/tinyprintf/evalexpr/src/evalexpr.c')
-rw-r--r--rushs/tinyprintf/evalexpr/src/evalexpr.c93
1 files changed, 0 insertions, 93 deletions
diff --git a/rushs/tinyprintf/evalexpr/src/evalexpr.c b/rushs/tinyprintf/evalexpr/src/evalexpr.c
deleted file mode 100644
index 5012355..0000000
--- a/rushs/tinyprintf/evalexpr/src/evalexpr.c
+++ /dev/null
@@ -1,93 +0,0 @@
-#include "evalexpr.h"
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#define BUFFER_SIZE 10
-
-char *get_input(void)
-{
- size_t r;
- char buf[BUFFER_SIZE];
- size_t size = 0;
- char *expr = malloc(size * sizeof(char) + 1);
- if (expr == NULL)
- return NULL;
- expr[0] = '\0';
- do
- {
- r = fread(buf, sizeof(char), BUFFER_SIZE - 1, stdin);
- if (r != 0)
- {
- buf[r] = '\0';
- size += r;
- char *tmp = realloc(expr, size * sizeof(char) + 1);
- if (tmp == NULL)
- {
- free(expr);
- return NULL;
- }
- expr = tmp;
- strcat(expr, buf);
- }
- } while (r != 0);
- if (size == 0)
- {
- free(expr);
- return NULL;
- }
- if (expr[size - 1] == '\n')
- expr[size - 1] = '\0';
- return expr;
-}
-
-void cleanup(char *expr, char *rpn)
-{
- free(expr);
- free(rpn);
-}
-
-int main(int argc, char **argv)
-{
- if ((argc == 2 && strcmp(argv[1], "-rpn") != 0) || (argc > 2))
- return 4;
- char *expr = get_input();
- if (expr == NULL)
- return 4;
- if (argc == 1)
- {
- char *rpn;
- int e = shunting_yard(expr, &rpn);
- if (e != 0)
- return e;
- // call shunting yard
- int retval;
- e = evalrpn(rpn, &retval);
- if (e != 0)
- {
- cleanup(expr, rpn);
- return e;
- }
- // FREE RPN
- printf("%d\n", retval);
- cleanup(expr, rpn);
- // return
- return 0;
- }
-
- if (argc == 2 && strcmp(argv[1], "-rpn") == 0)
- {
- // call rpn eval
- int retval;
- int e = evalrpn(expr, &retval);
- printf("%d\n", retval);
- // return
- free(expr);
- if (e != 0)
- return e;
- return 0;
- }
-
- return 4;
-}