#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
+#include <string.h>
#include "config.h"
#include "general.h"
-char *filter = NULL;
+static char *filter = NULL;
+static BYTE filter_len;
-void print_credit_screen() {
- uc i = 0;
+static void print_credit_screen() {
+ BYTE i = 0;
clrscr();
- printf("C128-Kassenprogramm: Guthabenverwaltung\n\n");
- for (; i < num_credit_items; ++i)
- printf("Guthaben für %s: %d Cents\n", credits[i].nickname, credits[i].credit);
- printf("\nBefehle: f) Filtern q) Back to main screen\n");
+ cprintf("C128-Kassenprogramm: Credit Manager\r\n\r\n");
+ for (; i < credits.num_items; ++i)
+ if (filter == NULL || strncmp(credits.credits[i].nickname, filter, filter_len) == 0)
+ cprintf("Guthaben %s: %d Cents\r\n", credits.credits[i].nickname, credits.credits[i].credit);
+ cprintf("\r\nBefehle: n) Neues Guthaben f) Filtern z) Zurueck\r\n");
}
/* Guthabenverwalter */
void credit_manager() {
- uc c;
+ int negative = 1;
+ char *c, *nickname, *credits_input;
+ /* credits_int is a stupid name, but overlaps with struct credits_t credits; else */
+ int credits_int;
while (1) {
print_credit_screen();
- c = getchar();
- if (c == 'f') {
- printf("Filter eingeben:\n");
- if (filter != NULL)
- free(filter);
+ c = get_input();
+ if (c == NULL || *c == '\0')
+ continue;
+ if (*c == 'n') {
+ cprintf("\r\nGuthaben eingeben:\r\n");
+ credits_input = get_input();
+
+ if (credits_input == NULL || credits_input[0] == '\0')
+ continue;
+ else if (credits_input[0] == '-') {
+ negative = -1;
+ ++credits_input;
+ }
+ credits_int = atoi(credits_input) * negative;
+ if (credits_int > 0) {
+ cprintf("Nickname eingeben:\r\n");
+ nickname = get_input();
+ if (nickname == NULL || nickname[0] == '\0')
+ continue;
+ strncpy(credits.credits[credits.num_items].nickname, nickname, 9);
+ credits.credits[credits.num_items].credit = credits_int;
+ ++credits.num_items;
+ }
+ } else if (*c == 'f') {
+ cprintf("Filter eingeben:\r\n");
filter = get_input();
- if (filter[0] == '0') {
- free(filter);
+ if (filter == NULL || *filter == 32 || (filter_len = strlen(filter)) == 0)
filter = NULL;
- }
- } else if (c == 'q')
+ } else if (*c == 'z' || *c == 'q')
break;
}
}