lines, we don't need more than 100 * 64 bytes. */
char *buffer = malloc(sizeof(char) * 64 * 100);
char filename[8];
- char read = 0;
+ int read = 0;
unsigned int c;
if (buffer == NULL) {
cprintf("No memory available\n");
c128_perror(c, "cbm_open(log)");
sane_exit();
}
- /* TODO: read < 0? */
+ 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))) {
}
/* Prints a line and logs it to file */
-static void print_log(char *name, int item_price, int einheiten, char *nickname) {
- BYTE c;
+static void print_log(char *name, int item_price, int einheiten, char *nickname, char *rest) {
char *time = get_time();
char price[10];
/* Format:
- Transaction-ID (Anzahl verkaufter Einträge, inklusive des zu druckenden!)
- Uhrzeit
- Eintragname (= Getränk)
- Preis (in Cents)
- Anzahl
- Nickname (falls es vom Guthaben abgezogen wird)
+ Transaction-ID (Anzahl verkaufter Einträge, inklusive des zu druckenden!) -- 6-stellig
+ Uhrzeit -- 8-stellig
+ Eintragname (= Getränk) -- 9-stellig
+ Preis (in Cents) -- 7-stellig
+ Anzahl -- 2-stellig
+ Nickname (falls es vom Guthaben abgezogen wird) -- 10-stellig
+ restguthaben (9-stellig)
+
+ + 7 leerzeichen
+ --> 48 zeichen
*/
if (format_euro(price, 10, item_price) == NULL) {
cprintf("Preis %d konnte nicht umgerechnet werden\r\n", item_price);
exit(1);
}
-
- sprintf(print_buffer, "%c[%lu] %s - %s - %s - %d - an %s\r", 17,
- items_sold, time, name, price,
+
+ sprintf(print_buffer, "%c[%lu] %s - %-9s - %s - r %s - %d - an %s\r", 17,
+ items_sold, time, name, price, rest,
einheiten, (*nickname != '\0' ? nickname : "Unbekannt"));
+ print_the_buffer();
+}
+
+void print_the_buffer() {
+ BYTE c;
RETRY:
c = cbm_open((BYTE)4, (BYTE)4, (BYTE)0, NULL);
if (c != 0) {
int einheiten;
char *input;
char nickname[11];
+ char rest[9];
struct credits_t *credit;
+ memset(rest, ' ', sizeof(rest));
+ rest[8] = '\0';
+
cprintf("Wieviel Einheiten \"%s\"? [1] \r\n", name);
while (1) {
c = getchar();
}
/* substract money */
credit->credit -= (price * einheiten);
- cprintf("\r\nVerbleibendes Guthaben fuer %s: %d Cents. Druecke RETURN...\r\n",
- nickname, credit->credit);
+
+ if (format_euro(rest, 10, credit->credit) == NULL) {
+ cprintf("Preis %d konnte nicht umgerechnet werden\r\n", credit->credit);
+ exit(1);
+ }
+
+ cprintf("\r\nVerbleibendes Guthaben fuer %s: %s. Druecke RETURN...\r\n",
+ nickname, rest);
toggle_videomode();
- cprintf("\r\nDein verbleibendes Guthaben betraegt %d Cents.\r\n", credit->credit);
+ cprintf("\r\nDein verbleibendes Guthaben betraegt %s.\r\n", rest);
toggle_videomode();
get_input();
matches++;
money += price * einheiten;
items_sold += einheiten;
if (printing == 1)
- print_log(name, price, einheiten, nickname);
+ print_log(name, price, einheiten, nickname, rest);
return einheiten;
}
BYTE c = 0, i = 0;
int negative = 1;
char entered[5] = {'1', 0, 0, 0, 0};
- char *input, name[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+ char *input, name[20];
int price;
+ memset(name, '\0', 20);
cprintf("\r\nWas soll gekauft werden?\r\n");
input = get_input();
- strncpy(name, input, 10);
+ strncpy(name, input, 20);
if (*name == '\0')
return;
set_time(tp1, tp2, tp3);
time = get_time();
- cprintf("Zeit gesetzt: %s\r\n", time);
+ cprintf("\r\nZeit gesetzt: %s\r\n", time);
}
int main() {
break;
}
cprintf("BYEBYE\r\n");
+
+ return 0;
}