diff --git a/run/main.c b/run/main.c index d36ad6f..a96c979 100644 --- a/run/main.c +++ b/run/main.c @@ -2,12 +2,14 @@ #include #include "epanet2.h" +#define MAXMSG 79 /* Max. # characters in message text */ +#define MAXWARNCODE 99 /* text copied here, no more need of include "text.h" */ -#define FMT01 "\n... EPANET Version %d.%d.%d\n" +#define FMT01 "\nEPANET Version %d.%d.%d\n" #define FMT03 "\n Correct syntax is:\n epanet \n" -#define FMT09 "\n... EPANET completed.\n" -#define FMT10 "\n... EPANET completed. There are warnings." -#define FMT11 "\n... EPANET completed. There are errors." +#define FMT09 "\nEPANET completed.\n" +#define FMT10 "\nEPANET completed. There are warnings." +#define FMT11 "\nEPANET completed. There are errors." void writeConsole(char *s); @@ -38,42 +40,50 @@ int main(int argc, char *argv[]) { char *f1,*f2,*f3; char blank[] = ""; - char errmsg[40]; + char errmsg[MAXMSG+1]=""; int errcode; int version; char s[25]; + int major; + int minor; + int patch; + + /* get version from DLL and trasform in Major.Minor.Patch format + instead of hardcoded version */ + ENgetversion(&version); + major= version/10000; + minor= (version%10000)/100; + patch= version%100; + sprintf(s,FMT01, major , minor, patch); + writeConsole(s); /* Check for proper number of command line arguments */ if (argc < 2) { writeConsole(FMT03); + return(1); + } + + /* set inputfile name */ + f1 = argv[1]; + if (argc > 2) { + /* set rptfile name */ + f2 = argv[2]; } else { - /* Call the main control function */ - f1 = argv[1]; - if (argc > 2) { - f2 = argv[2]; - } - else { - f2 = blank; - } - if (argc > 3) { - f3 = argv[3]; - } - else { - f3 = blank; - } + /* use stdout for rptfile */ + f2 = blank; + } + if (argc > 3) { + /* set binary output file name */ + f3 = argv[3]; + } + else { + /* NO binary output*/ + f3 = blank; } - /* get version from DLL and trasform in Major.Minor.Patch format - instead of hardcoded version */ - ENgetversion(&version); - int major= version/10000; - int minor= (version%10000)/100; - int patch= version%100; - sprintf(s,FMT01, major , minor, patch); - writeConsole(s); - + /* Call the main control function */ if (strlen(f2)> 0) { /* use stdout for progress messages */ errcode = ENepanet(f1,f2,f3,writeConsole); @@ -84,18 +94,27 @@ int main(int argc, char *argv[]) } /* Error/Warning check */ - if (errcode == 0) writeConsole(FMT09); + if (errcode == 0) { + /* no errors */ + writeConsole(FMT09); + return(0); + } else { - if (errcode > 100) { + ENgeterror(errcode, errmsg, MAXMSG); + writeConsole(errmsg); + if (errcode > MAXWARNCODE) { + /* error */ writeConsole(FMT11); + return(errcode); } else { + /* warning */ writeConsole(FMT10); + return(0); } - ENgeterror(errcode, errmsg, 40); - writeConsole(errmsg); } - return(0); + + } /* End of main */