]> git.sur5r.net Git - c128-kasse/commitdiff
use EUR_FORMAT_MINLEN to get rid of more magic numbers
authorMaik Fischer <maikf@qu.cx>
Sun, 29 Oct 2017 14:30:05 +0000 (15:30 +0100)
committerMaik Fischer <maikf@qu.cx>
Mon, 30 Oct 2017 10:11:17 +0000 (11:11 +0100)
include/general.h
src/credit_manager.c
src/general.c
src/itemz.c
src/kasse.c

index 413fa46bc5ac885b0933fcee3e5155622929049b..0133e300fa0e7bb4943f380fc4383a77a8dc8f6b 100644 (file)
@@ -2,6 +2,7 @@
 #define GENERAL_H_
 
 #include <peekpoke.h>
+#include "vdc_patch_charset.h"
 
 typedef unsigned char BYTE;
 typedef enum {
@@ -63,6 +64,9 @@ extern BYTE _oserror;
 
 #define VIDEOMODE (((*(BYTE *)0xD7) == 0x80) ? 80 : 40)
 
+#define EUR_FORMAT "%3d,%02d" EURSYM
+#define EUR_FORMAT_MINLEN (sizeof("999,99" EURSYM) + 1)
+
 /* because there is no macro expansion when stringifying, we need to use two
  * levels of macros to stringify the value of a macro (for example
  * MAX_ITEM_NAME_LENGTH) */
index 1f569f7b693843e6e0373fbecb1516bde2adeab0..7aa4724536c1216d884352ff825f0e4b69fccf23 100644 (file)
@@ -24,7 +24,7 @@ static BYTE current_credits_page = 0;
 
 static void credit_print_screen(void) {
   BYTE i, pages;
-  char buffer[10];
+  char buffer[EUR_FORMAT_MINLEN];
 
   clrscr();
   cprintf("credit_manager (phil_fry, sECuRE, sur5r) v:" GV "\r\n\r\n");
index df0c2c6d70ef58373ed74fa63a955b9ebb943c22..d888a9a1183fe9a6cea4bbc6ceea1f8dc46ddae1 100644 (file)
@@ -141,7 +141,7 @@ char retry_or_quit(void) {
 }
 
 char *format_euro(char *s, int maxlen, int cent) {
-  if (snprintf(s, maxlen, "%3d,%02d" EURSYM, cent / 100, cent % 100) > maxlen)
+  if (snprintf(s, maxlen, EUR_FORMAT, cent / 100, cent % 100) > maxlen)
     return NULL;
   return s;
 }
index 3f4d74972e6184330321674718ae295c893fbc9d..574705ae55c58bc9e05eabda1dabd974039fe3c8 100644 (file)
 
 static void itemz_print_screen(void) {
   BYTE i;
-  char buffer[10];
+  char buffer[EUR_FORMAT_MINLEN];
 
   clrscr();
   cprintf("itemz (phil_fry, sECuRE, sur5r, mxf) v:" GV "\r\n\r\n");
   cprintf("Datei: ITEMS\r\n\r\n");
   for (i = 0; i < max(status.num_items, 15); i++) {
-    if (format_euro(buffer, 10, status.status[i].price) != buffer) {
+    if (format_euro(buffer, sizeof(buffer), status.status[i].price) != buffer) {
       cprintf("Error: Could not format price %d\r\n", status.status[i].price);
       exit(1);
     }
index d6ffb486c3ed5931eb46dd3956cb9d9b102b514f..eca3fce45a4870bf797b206ea480aa7426209cc5 100644 (file)
@@ -25,7 +25,7 @@
 // graphic 4,0,10
 
 void print_item(BYTE i) {
-  char profit[10];
+  char profit[EUR_FORMAT_MINLEN];
   if (format_euro(profit, sizeof(profit), status.status[i].price) == NULL) {
     cprintf("Preis %ld konnte nicht umgerechnet werden\r\n",
             status.status[i].price);
@@ -42,7 +42,7 @@ void print_item(BYTE i) {
 static void print_screen(void) {
   BYTE i = 0;
   char *time = get_time();
-  char profit[10];
+  char profit[EUR_FORMAT_MINLEN];
   clrscr();
   if (format_euro(profit, sizeof(profit), money) == NULL) {
     cprintf("Einnahme %ld konnte nicht umgerechnet werden\r\n", money);
@@ -112,7 +112,7 @@ static void print_screen(void) {
 static void print_log(char *name, int item_price, int einheiten, char *nickname,
                       char *rest) {
   char *time = get_time();
-  char price[10];
+  char price[EUR_FORMAT_MINLEN];
   /* Format:
      Transaction-ID (Anzahl verkaufter Einträge, inklusive des zu druckenden!)
      -- 6-stellig
@@ -145,7 +145,7 @@ static signed int buy(char *name, unsigned int price) {
   BYTE c, nickname_len;
   int einheiten;
   char nickname[NICKNAME_MAX_LEN + 1];
-  char rest[10];
+  char rest[EUR_FORMAT_MINLEN];
   struct credits_t *credit;
 
   memset(nickname, '\0', sizeof(nickname));
@@ -159,7 +159,7 @@ static signed int buy(char *name, unsigned int price) {
   if (einheiten > 100 || einheiten < -100 || einheiten == 0) {
     cprintf("\r\nEinheit nicht in [-100, 100] oder 0, Abbruch, dr" uUML "cke "
             "RETURN...\r\n");
-    cgetc();
+    cget_return();
     return 1;
   }