Martin Schulte <dtaus@ratinganwendung.de>: Corrected handling for
[infodrom/dtaus] / main.c
diff --git a/main.c b/main.c
index af2e385..7f4a9d1 100644 (file)
--- a/main.c
+++ b/main.c
@@ -1,6 +1,6 @@
 /*
     main.c - Belegloser Datenträgeraustausch mit einer Bank
-    Copyright (c) 1996,8,2001  Martin Schulze <joey@infodrom.org>
+    Copyright (c) 1996,8,2001-4  Martin Schulze <joey@infodrom.org>
 
     This program is free software; you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
@@ -19,7 +19,7 @@
     $Id$
  */
 
-static char version[] = "0.5";
+static char version[] = "0.6";
 
 #include <stdio.h>
 #include <sys/stat.h>
@@ -28,16 +28,21 @@ static char version[] = "0.5";
 #include <stdlib.h>
 #include "dtaus.h"
 
+char *dtaus   = "dtaus0.txt";
+char *control = "dtaus0.ctl";
+char *beleg   = "dtaus0.doc";
+char *check   = "dtaus0.sik";
+
 void help ()
 {
   printf ("dtaus - Belegloser Datenträgeraustausch mit einer Bank\n\n");
   printf ("  -dtaus        Erzeugt eine Bankdatei\n");
   printf ("  -control      Liest eine Bankdatei und erzeugt die Kontrolldatei\n");
   printf ("\n");
-  printf ("  -d <dtaus>    Bankdatei [dtaus0.txt]\n");
-  printf ("  -c <control>  Steuerdatei [dtaus0.ctl]\n");
-  printf ("  -b <begleit>  Begleitzettel für die Bank dtaus0.doc]\n");
-  printf ("  -o <kontroll> Kontrolldatei zum Abheften [dtaus0.sik]\n");
+  printf ("  -d <dtaus>    Bankdatei [%s]\n", dtaus);
+  printf ("  -c <control>  Steuerdatei [%s]\n", control);
+  printf ("  -b <begleit>  Begleitzettel für die Bank [%s]\n", beleg);
+  printf ("  -o <kontroll> Kontrolldatei zum Abheften [%s]\n", check);
 }
 
 #define DTAUS   1
@@ -45,19 +50,10 @@ void help ()
 
 int main (int argc, char **argv)
 {
-  char *dtaus[60];
-  char *control[60];
-  char *beleg[60];
-  char *check[60];
   int action = 0;
   int i = 0;
   struct stat sbuf;
 
-  strcpy ((char *)dtaus, "dtaus0.txt");
-  strcpy ((char *)control, "dtaus0.ctl");
-  strcpy ((char *)beleg, "dtaus0.doc");
-  strcpy ((char *)check, "dtaus0.sik");
-
   while (argc - i > 1) {
     i++;
     if ( !strcmp(argv[i], "-h") ) {
@@ -68,22 +64,22 @@ int main (int argc, char **argv)
     } else if ( !strcmp(argv[i], "-d") ) {
       if (argc - i > 1) {
        i++;
-       strcpy ((char *)dtaus, argv[i]);
+       dtaus = argv[i];
       }
     } else if ( !strcmp(argv[i], "-c") ) {
       if (argc - i > 1) {
        i++;
-       strcpy ((char *)control, argv[i]);
+       control = argv[i];
       }
     } else if ( !strcmp(argv[i], "-b") ) {
       if (argc - i > 1) {
        i++;
-       strcpy ((char *)beleg, argv[i]);
+       beleg = argv[i];
       }
     } else if ( !strcmp(argv[i], "-o") ) {
       if (argc - i > 1) {
        i++;
-       strcpy ((char *)check, argv[i]);
+       check = argv[i];
       }
     } else if ( !strcmp(argv[i], "-dtaus") ) {
       action = DTAUS;
@@ -93,15 +89,21 @@ int main (int argc, char **argv)
   }
 
   if (action == DTAUS) {
-    if (!stat((char *)control, &sbuf)) {
-      if (control2dtaus ((char *)control, (char *)dtaus, (char *)beleg, (char *)check) == 0)
+    if (!strcmp("-", control) || !stat(control, &sbuf)) {
+      if (control2dtaus (control, dtaus, beleg, check) == 0)
        exit (1);
     }
-    else exit (1);
+    else {
+      fprintf( stderr, "Can't stat %s\n", control);
+      exit (1);
+    }
   } else if (action == CONTROL) {
-    if (!stat((char *)dtaus, &sbuf))
-      dtaus2control ((char *)dtaus, (char *)control);
-    else exit (1);
+    if (!strcmp("-",dtaus) || !stat(dtaus, &sbuf))
+      dtaus2control (dtaus, control);
+    else {
+      fprintf( stderr, "Can't stat %s\n", dtaus);
+      exit (1);
+    }
   } else {
     printf ("Keine Routine angegeben (-dtaus bzw. -control vergessen).\n");
     exit (1);