]> git.sur5r.net Git - c128-kasse/commitdiff
Move logging/printing functions to src/print.c, fix compilation of itemz
authorMichael Stapelberg <michael@stapelberg.de>
Sun, 1 Nov 2009 19:46:29 +0000 (20:46 +0100)
committerMichael Stapelberg <michael@stapelberg.de>
Sun, 1 Nov 2009 19:46:29 +0000 (20:46 +0100)
include/general.h
include/kasse.h
include/print.h [new file with mode: 0644]
src/config.c
src/credit_manager.c
src/general.c
src/itemz.c
src/kasse.c
src/print.c [new file with mode: 0644]

index 0ddefcfa9278b58b60bd3bb36da6d4433364fbd5..4e45b297f80b09ea3751027ed625dddcc8536902 100644 (file)
@@ -2,7 +2,8 @@
 #define GENERAL_H_
 typedef unsigned char BYTE;
 char *get_input();
-char * format_euro(char * s, int maxlen, int cent);
+char retry_or_quit();
+char *format_euro(char * s, int maxlen, int cent);
 void c128_perror(BYTE, char*);
 extern BYTE _oserror;
 #define POKE(addr,val)     (*(unsigned char*) (addr) = (val))
index 2546c9694411ba97b7174aa18cd6e332edc72145..76d414b4d9bbefba957e5e107d3af658ad4cafa9 100644 (file)
@@ -5,12 +5,5 @@ void print_the_buffer();
 
 #ifdef _IS_KASSE
 BYTE printing = 1;
-char print_buffer[81];
-char log_num = 0;
-int log_lines_written = 0;
-#else
-extern int log_num;
-extern int log_lines_written;
-extern char print_buffer[81];
 #endif
 #endif
diff --git a/include/print.h b/include/print.h
new file mode 100644 (file)
index 0000000..4ccde07
--- /dev/null
@@ -0,0 +1,18 @@
+#ifndef _PRINT_H
+#define _PRINT_H
+
+void print_the_buffer();
+void log_file(const char *s);
+
+#ifdef _IS_PRINT
+char print_buffer[81];
+char log_num = 0;
+int log_lines_written = 0;
+#else
+extern char print_buffer[81];
+extern int log_num;
+extern int log_lines_written;
+
+#endif
+
+#endif
index 3ee69bde01c7b29a6469ae61e04ec0e116372e8e..4c2e1e604ad85bcf446a6a2651b0aa96c1759b4b 100644 (file)
@@ -15,6 +15,7 @@
 #include "kasse.h"
 #include "general.h"
 #include "config.h"
+#include "print.h"
 
 /* NOTE: undocumented function which scratches files
    We need to use this function because linking unistd.h
index 51620e3225719429e2e70a1fe9d950561d31efa4..d4caea7df6255455643883d1be9c965d9e1ef45c 100644 (file)
@@ -13,6 +13,7 @@
 #include "general.h"
 #include "kasse.h"
 #include "c128time.h"
+#include "print.h"
 
 static char *filter = NULL;
 static BYTE filter_len;
index 3708d46d6d216444eae7085b5398c2ccb8f8225a..aeb1f16e0ead79698a20c76bcf7bfe0f06ae053a 100644 (file)
@@ -34,6 +34,15 @@ char *get_input() {
        return output;
 }
 
+char retry_or_quit() {
+       char *c;
+       do {
+               cprintf("\r\nr)etry or q)uit?\r\n");
+               c = get_input();
+       } while ((*c != 'r') && (*c != 'q'));
+       return *c;
+}
+
 char *format_euro(char *s, int maxlen, int cent){
        int tmp = cent;
        int len = strlen(",EUR");
index 4558fc51334704274fb582ed7918944d98780ad9..aec8f4cc03869fe024b4c847275e6c8d5a9d6e46 100644 (file)
 #include "config.h"
 #include "credit_manager.h"
 
-/* NOTE: dummy entry to fix linking */
-int log_num = 0;
-int log_lines_written = 0;
-
 static void itemz_print_screen() {
        BYTE i;
        char buffer[10];
index c792c60a02eb7d33ca0496eaa291878ed90b5158..b3473971a178182b9c89df6834a2c732668f962b 100644 (file)
 #include "kasse.h"
 #include "credit_manager.h"
 #include "c128time.h"
+#include "print.h"
 // drucker 4 oder 5
 // graphic 4,0,10
 
-/* NOTE: undocumented function which scratches files
-   We need to use this function because linking unistd.h
-   makes our program break at runtime.
- */
-unsigned char __fastcall__ _sysremove(const char *name);
-
 static void sane_exit() {
        save_items();
        save_credits();
@@ -53,58 +48,6 @@ g) Guthabenverwaltung     z) Zeit setzen\r\
 f) Freitext verkaufen     q) Beenden\r\n");
 }
 
-static void log_file(const char *s) {
-       /* A log-entry has usually 50 bytes, so we take 64 bytes.
-          Because files are wrapped (log.0, log.1, ...) every 100
-          lines, we don't need more than 100 * 64 bytes. */
-       char *buffer = malloc(sizeof(char) * 64 * 100);
-       char filename[8];
-       int read = 0;
-       unsigned int c;
-       if (buffer == NULL) {
-               cprintf("No memory available\n");
-               }
-       buffer[0] = '\0';
-       if (((++log_lines_written) % 100) == 0)
-               log_num++;
-       sprintf(filename, "log-%d", log_num);
-       /* Don't read log if there were no lines written before */
-       if (log_lines_written != 1) {
-               if ((c = cbm_open((BYTE)8, (BYTE)8, (BYTE)0, filename)) != 0) {
-                       c128_perror(c, "cbm_open(log)");
-                       sane_exit();
-               }
-               read = cbm_read((BYTE)8, buffer, sizeof(char) * 64 * 100);
-               cbm_close((BYTE)8);
-               _sysremove(filename);
-       }
-       if ((c = cbm_open((BYTE)8, (BYTE)8, (BYTE)1, filename)) != 0) {
-               c128_perror(c, "cbm_open(log)");
-               sane_exit();
-       }
-       if (read < 0) {
-               cprintf("Could not read existing logfile (read returned %d)\n", read);
-               sane_exit();
-       }
-       strcpy(buffer+read, s);
-       c = cbm_write((BYTE)8, buffer, read+strlen(s));
-       if (c != (read+strlen(s))) {
-               cprintf("Could not save logfile (wrote %d bytes, wanted %d bytes), please make sure the floppy is not full!\n", c, (read+strlen(s)));
-               sane_exit();
-       }
-       cbm_close((BYTE)8);
-       free(buffer);
-}
-
-static char retry_or_quit() {
-       char *c;
-       do {
-               cprintf("\r\nr)etry or q)uit?\r\n");
-               c = get_input();
-       } while ((*c != 'r') && (*c != 'q'));
-       return *c;
-}
-
 /* Prints a line and logs it to file */
 static void print_log(char *name, int item_price, int einheiten, char *nickname, char *rest) {
        char *time = get_time();
@@ -132,31 +75,6 @@ static void print_log(char *name, int item_price, int einheiten, char *nickname,
        print_the_buffer();
 }
 
-void print_the_buffer() {
-       BYTE c;
-RETRY:
-       c = cbm_open((BYTE)4, (BYTE)4, (BYTE)0, NULL);
-       if (c != 0) {
-               c128_perror(c, "cbm_open(printer)");
-               if (retry_or_quit() == 'q')
-                       sane_exit();
-
-               goto RETRY;
-       }
-       c = cbm_write((BYTE)4, print_buffer, strlen(print_buffer));
-       if (c != strlen(print_buffer)) {
-               c128_perror(c, "write(printer)");
-               if (retry_or_quit() == 'q') {
-                       save_items();
-                       save_credits();
-                       exit(1);
-               }
-               goto RETRY;
-       }
-       cbm_close((BYTE)4);
-       log_file(print_buffer);
-}
-
 /* dialog which is called for each bought item */
 static signed int buy(char *name, unsigned int price) {
        int negative = 1;
diff --git a/src/print.c b/src/print.c
new file mode 100644 (file)
index 0000000..edd295e
--- /dev/null
@@ -0,0 +1,88 @@
+/*
+ * © 2007-2009 phil_fry, sECuRE, sur5r
+ * See LICENSE for license information
+ *
+ */
+#include <stdio.h>
+#include <conio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <cbm.h>
+
+#include "general.h"
+#define _IS_PRINT
+#include "print.h"
+
+/* NOTE: undocumented function which scratches files
+   We need to use this function because linking unistd.h
+   makes our program break at runtime.
+ */
+unsigned char __fastcall__ _sysremove(const char *name);
+
+void print_the_buffer() {
+       BYTE c;
+RETRY:
+       c = cbm_open((BYTE)4, (BYTE)4, (BYTE)0, NULL);
+       if (c != 0) {
+               c128_perror(c, "cbm_open(printer)");
+               if (retry_or_quit() == 'q')
+                       exit(1);
+
+               goto RETRY;
+       }
+       c = cbm_write((BYTE)4, print_buffer, strlen(print_buffer));
+       if (c != strlen(print_buffer)) {
+               c128_perror(c, "write(printer)");
+               if (retry_or_quit() == 'q')
+                       exit(1);
+               goto RETRY;
+       }
+       cbm_close((BYTE)4);
+       log_file(print_buffer);
+}
+
+void log_file(const char *s) {
+       /* A log-entry has usually 50 bytes, so we take 64 bytes.
+          Because files are wrapped (log.0, log.1, ...) every 100
+          lines, we don't need more than 100 * 64 bytes. */
+       char *buffer = malloc(sizeof(char) * 64 * 100);
+       char filename[8];
+       int read = 0;
+       unsigned int c;
+
+       if (buffer == NULL) {
+               cprintf("No memory available\n");
+               exit(1);
+       }
+
+       buffer[0] = '\0';
+       if (((++log_lines_written) % 100) == 0)
+               log_num++;
+       sprintf(filename, "log-%d", log_num);
+       /* Don't read log if there were no lines written before */
+       if (log_lines_written != 1) {
+               if ((c = cbm_open((BYTE)8, (BYTE)8, (BYTE)0, filename)) != 0) {
+                       c128_perror(c, "cbm_open(log)");
+                       exit(1);
+               }
+               read = cbm_read((BYTE)8, buffer, sizeof(char) * 64 * 100);
+               cbm_close((BYTE)8);
+               _sysremove(filename);
+       }
+       if ((c = cbm_open((BYTE)8, (BYTE)8, (BYTE)1, filename)) != 0) {
+               c128_perror(c, "cbm_open(log)");
+               exit(1);
+       }
+       if (read < 0) {
+               cprintf("Could not read existing logfile (read returned %d)\n", read);
+               exit(1);
+       }
+       strcpy(buffer+read, s);
+       c = cbm_write((BYTE)8, buffer, read+strlen(s));
+       if (c != (read+strlen(s))) {
+               cprintf("Could not save logfile (wrote %d bytes, wanted %d bytes), please make sure the floppy is not full!\n", c, (read+strlen(s)));
+               exit(1);
+       }
+       cbm_close((BYTE)8);
+       free(buffer);
+}