]> git.sur5r.net Git - c128-kasse/commitdiff
save_state funktioniert jetzt
authormatze <matze@af93e077-1a23-4f1e-9cbe-9382a9d578f5>
Sun, 29 Jul 2007 14:06:42 +0000 (14:06 +0000)
committermatze <matze@af93e077-1a23-4f1e-9cbe-9382a9d578f5>
Sun, 29 Jul 2007 14:06:42 +0000 (14:06 +0000)
git-svn-id: https://shell.noname-ev.de/svn/kasse/c128@40 af93e077-1a23-4f1e-9cbe-9382a9d578f5

Makefile
config.c
config.h
test.c

index c7efcd31551ee0b44d68064b8f898c14576fdfc5..98bfcd3fc43708423b42e534e0f32a959d384098 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -13,8 +13,8 @@ package: all
        c1541 -attach kasse.d64 -write items  || exit 0
        c1541 -attach kasse.d64 -write kasse  || exit 0
 
-test: config.o test.o
-       cl65 -t c128 config.o test.o -o test
+test: config.o test.o general.o
+       cl65 -t c128 config.o test.o general.o -o test
 
 test-package: test
        c1541 -attach test.d64 -delete state || exit 0 
index c2f61c77930598042e50cab66fc7ebd6e3857700..b58f36fe767ca8d18a014d61257c362bd6ced856 100644 (file)
--- a/config.c
+++ b/config.c
@@ -37,7 +37,7 @@ void load_items(){
  * must be called after load_items()
  */
 void load_state(){
-    FILE* f;
+    FILE * f;
     char line[80];
     char * sep;
     char i, j;
@@ -49,6 +49,8 @@ void load_state(){
     while (!feof(f)) {
        fgets(line, 79, f);
        sep = strchr(line, '=');
+       if (sep==NULL)
+               continue;
        *(line + (sep-line)) = 0;
         for (i=0; i< MAX_ITEMS; i++) {
                if (strcmp(line, status[i].item_name)==0) {
@@ -57,10 +59,38 @@ void load_state(){
                }
         }
     }
+    fclose(f);
 }
 
-void save_state(){}
-
+void save_state(){
+       FILE * f;
+       int i;
+       
+       f = fopen("state", "w");
+    if (f==NULL){
+       c128_perror(23, "cannot open state file");
+       return;
+    }
+    for (i=0;i<num_items;i++)
+       fprintf(f, "%s=%d\n",status[i].item_name, status[i].times_sold);
+    fclose(f);
+}
+/*
+void dump_state(){
+       FILE * f;
+       char buf[128];
+       int i, len;
+       memset(buf, 0, 128);
+       f = fopen("state", "r");
+       len = fread(buf, 1, 128, f);
+       printf("read %d bytes from state\n", len);
+       fclose(f);
+       for (i=0;i<len;i++)
+               printf("%x ", buf[i]);
+       printf("\n");
+       
+}
+*/
 void load_config() {
 }
 
index d3d1c24fb473343690dee95db1c2e46d88dd57fc..36ca92300c25a1aa5374de27d675dccba2926d4f 100644 (file)
--- a/config.h
+++ b/config.h
@@ -38,6 +38,7 @@ void load_config();
 void load_items();
 void load_state();
 void load_credits();
+//void dump_state();
 
 void save_state();
 void save_credits();
diff --git a/test.c b/test.c
index f94b44676a101793856882a063185d9ecb7d601c..1df0f3d179f9e55c6f93acc9b4026f91d410b2ad 100644 (file)
--- a/test.c
+++ b/test.c
 
 int main(){
        BYTE i=0;
+       char euro[10];
        load_items();
        load_state();
-       for (; i < num_items; ++i)
-               printf("Eintrag %x: %s (%d Cents, %d mal verkauft)\n", i, status[i].item_name, status[i].price, status[i].times_sold);
+       for (i=0; i < num_items; ++i) {
+               printf("%x: %s (%s, %d mal)\n", i, status[i].item_name, format_euro(euro, 9, status[i].price), status[i].times_sold);
+               status[i].times_sold+=10;
+       }
+
+       save_state();
+       load_items();
+       load_state();
+       for (i=0; i < num_items; ++i) {
+               printf("%x: %s (%s, %d mal)\n", i, status[i].item_name, format_euro(euro, 9, status[i].price), status[i].times_sold);
+       }
+       
+       printf("strlen(%s)==%d\n", status[1].item_name, strlen(status[1].item_name));
+       printf("%d %d %d\n", status[1].item_name[0], '\r', '\n');
 }
\ No newline at end of file