diff --git a/include/epanet2.h b/include/epanet2.h index 1593783..842875c 100644 --- a/include/epanet2.h +++ b/include/epanet2.h @@ -67,6 +67,9 @@ // --- Define the EPANET toolkit constants +#define EN_MAXID 31 /**< Max. # characters in ID name */ +#define EN_MAXMSG 255 /**< Max. # characters in message text */ + /// Node property codes typedef enum { EN_ELEVATION = 0, /**< Node Elevation */ diff --git a/src/epanet.c b/src/epanet.c index d4c004f..74ca6ce 100644 --- a/src/epanet.c +++ b/src/epanet.c @@ -144,43 +144,6 @@ void errorLookup(int errcode, char *errmsg, int len); *****************************************************************/ -int runconcurrent(EN_ProjectHandle ph, const char *inputfile, const char *reportfile, - const char *outputfile, void(*pviewprog)(char *)) -{ - long t, tstep_h, tstep_q; - int errcode = 0; - - EN_Project *p = NULL; - - - ERRCODE(EN_open(ph, inputfile, reportfile, outputfile)); - p = (EN_Project*)(ph); - p->viewprog = pviewprog; - - ERRCODE(EN_openH(ph)); - ERRCODE(EN_initH(ph, EN_SAVE)); - - ERRCODE(EN_openQ(ph)); - ERRCODE(EN_initQ(ph, EN_SAVE)); - - do { - ERRCODE(EN_runH(ph, &t)); - ERRCODE(EN_runQ(ph, &t)); - - ERRCODE(EN_nextH(ph, &tstep_h)); - ERRCODE(EN_nextQ(ph, &tstep_q)); - - } while (tstep_h > 0); - - ERRCODE(EN_closeH(ph)); - ERRCODE(EN_closeQ(ph)); - - ERRCODE(EN_report(ph)); - ERRCODE(EN_close(ph)); - - return errcode; -} - /*------------------------------------------------------------------------ ** Input: f1 = pointer to name of input file ** f2 = pointer to name of report file @@ -201,14 +164,17 @@ int runconcurrent(EN_ProjectHandle ph, const char *inputfile, const char *report int DLLEXPORT ENepanet(const char *f1, const char *f2, const char *f3, void (*pviewprog)(char *)) { int errcode = 0; + int warncode = 0; EN_Project *p = NULL; ERRCODE(EN_createproject(&_defaultModel)); ERRCODE(EN_runproject(_defaultModel, f1, f2, f3, pviewprog)); + if (errcode < 100) warncode = errcode; ERRCODE(EN_deleteproject(&_defaultModel)); + if (warncode) errcode = MAX(errcode, warncode); return (errcode); } @@ -682,7 +648,8 @@ int DLLEXPORT EN_runproject(EN_ProjectHandle ph, const char *f1, const char *f2, ERRCODE(EN_report(ph)); EN_close(ph); - + + if (p->Warnflag) errcode = MAX(errcode, p->Warnflag); return errcode; } @@ -792,7 +759,6 @@ int DLLEXPORT EN_open(EN_ProjectHandle ph, const char *f1, const char *f2, const writelogo(p); /* Find network size & allocate memory for data */ - writecon(FMT02); writewin(p->viewprog, FMT100); ERRCODE(netsize(p)); ERRCODE(allocdata(p)); @@ -920,19 +886,14 @@ int DLLEXPORT EN_solveH(EN_ProjectHandle ph) if (!errcode) { /* Initialize hydraulics */ errcode = EN_initH(ph, EN_SAVE); - writecon(FMT14); /* Analyze each hydraulic period */ if (!errcode) do { /* Display progress message */ - - /*** Updated 6/24/02 ***/ sprintf(p->Msg, "%-10s", clocktime(p->report.Atime, p->time_options.Htime)); - - writecon(p->Msg); sprintf(p->Msg, FMT101, p->report.Atime); writewin(p->viewprog, p->Msg); @@ -940,16 +901,10 @@ int DLLEXPORT EN_solveH(EN_ProjectHandle ph) tstep = 0; ERRCODE(EN_runH(ph, &t)); ERRCODE(EN_nextH(ph, &tstep)); - /*** Updated 6/24/02 ***/ - writecon("\b\b\b\b\b\b\b\b\b\b"); } while (tstep > 0); } /* Close hydraulics solver */ - - /*** Updated 6/24/02 ***/ - writecon("\b\b\b\b\b\b\b\b "); - EN_closeH(ph); errcode = MAX(errcode, p->Warnflag); @@ -1190,24 +1145,15 @@ int DLLEXPORT EN_solveQ(EN_ProjectHandle ph) { if (!errcode) { /* Initialize WQ */ errcode = EN_initQ(ph, EN_SAVE); - if (p->quality.Qualflag) - writecon(FMT15); - else { - writecon(FMT16); - writewin(p->viewprog, FMT103); - } + if (!p->quality.Qualflag) writewin(p->viewprog, FMT106); /* Analyze each hydraulic period */ if (!errcode) do { /* Display progress message */ - - /*** Updated 6/24/02 ***/ sprintf(p->Msg, "%-10s", clocktime(p->report.Atime, p->time_options.Htime)); - - writecon(p->Msg); if (p->quality.Qualflag) { sprintf(p->Msg, FMT102, p->report.Atime); writewin(p->viewprog, p->Msg); @@ -1217,17 +1163,10 @@ int DLLEXPORT EN_solveQ(EN_ProjectHandle ph) { tstep = 0; ERRCODE(EN_runQ(ph, &t)); ERRCODE(EN_nextQ(ph, &tstep)); - - /*** Updated 6/24/02 ***/ - writecon("\b\b\b\b\b\b\b\b\b\b"); - } while (tstep > 0); } /* Close WQ solver */ - - /*** Updated 6/24/02 ***/ - writecon("\b\b\b\b\b\b\b\b "); EN_closeQ(ph); return set_error(p->error_handle, errcode); } @@ -1355,6 +1294,7 @@ int DLLEXPORT EN_report(EN_ProjectHandle ph) { /* Check if results saved to binary output file */ if (!p->save_options.SaveQflag) return set_error(p->error_handle, 106); + writewin(p->viewprog, FMT103); errcode = writereport(p); if (errcode) errmsg(p, errcode); @@ -4064,20 +4004,16 @@ int openfiles(EN_Project *p, const char *f1, const char *f2, const char *f3) /* Check that file names are not identical */ if (strcomp(f1, f2) || strcomp(f1, f3) || (strcomp(f2, f3) && (strlen(f2) > 0 || strlen(f3) > 0))) { - writecon(FMT04); return 301; } /* Attempt to open input and report files */ if ((par->InFile = fopen(f1, "rt")) == NULL) { - writecon(FMT05); - writecon(f1); return 302; } if (strlen(f2) == 0) rep->RptFile = stdout; else if ((rep->RptFile = fopen(f2, "wt")) == NULL) { - writecon(FMT06); return 303; } @@ -4208,7 +4144,6 @@ int openoutfile(EN_Project *p) if (out->Outflag == SAVE) { if ((out->OutFile = fopen(out->OutFname, "w+b")) == NULL) { - writecon(FMT07); errcode = 304; } } @@ -4218,7 +4153,6 @@ int openoutfile(EN_Project *p) getTmpName(p, out->OutFname); if ((out->OutFile = fopen(out->OutFname, "w+b")) == NULL) { - writecon(FMT08); errcode = 304; } } @@ -4715,6 +4649,7 @@ char *geterrmsg(int errcode, char *msg) { switch (errcode) { /* Warnings */ #define DAT(code,enumer,string) case code: strcpy(msg, string); break; +//#define DAT(code,enumer,string) case code: sprintf(msg, "Error %d: %s", code, string); break; #include "errors.dat" #undef DAT default: @@ -4733,26 +4668,12 @@ void errmsg(EN_Project *p, int errcode) { if (errcode == 309) /* Report file write error - */ { /* Do not write msg to file. */ - writecon("\n "); - writecon(geterrmsg(errcode,p->Msg)); + } else if (p->report.RptFile != NULL && p->report.Messageflag) { writeline(p, geterrmsg(errcode,p->Msg)); } } -void writecon(const char *s) -/*---------------------------------------------------------------- -** Input: text string -** Output: none -** Purpose: writes string of characters to console -**---------------------------------------------------------------- -*/ -{ - - fprintf(stdout, "%s", s); - fflush(stdout); -} - void writewin(void (*vp)(char *), char *s) /*---------------------------------------------------------------- ** Input: text string diff --git a/src/funcs.h b/src/funcs.h index b0b027f..bf1d913 100755 --- a/src/funcs.h +++ b/src/funcs.h @@ -52,7 +52,6 @@ int findvalve(EN_Network *n, int); /* Find valve index from node int findpump(EN_Network *n, int); /* Find pump index from node index */ // (AH) char *geterrmsg(int errcode, char *msg); /* Gets text of error message */ void errmsg(EN_Project *p, int); /* Reports program error */ -void writecon(const char *); /* Writes text to console */ void writewin(void (*vp)(char *), char *); /* Passes text to calling app */ /* ------- INPUT1.C --------------------*/ diff --git a/src/report.c b/src/report.c index 058ab22..cbb0e11 100644 --- a/src/report.c +++ b/src/report.c @@ -82,8 +82,6 @@ int writereport(EN_Project *pr) /* write formatted output to primary report file. */ rep->Fprinterr = FALSE; if (rep->Rptflag && strlen(rep->Rpt2Fname) == 0 && rep->RptFile != NULL) { - writecon(FMT17); - writecon(rep->Rpt1Fname); if (rep->Energyflag) writeenergy(pr); errcode = writeresults(pr); @@ -95,8 +93,6 @@ int writereport(EN_Project *pr) /* If secondary report file has same name as either input */ /* or primary report file then use primary report file. */ if (strcomp(rep->Rpt2Fname, par->InpFname) || strcomp(rep->Rpt2Fname, rep->Rpt1Fname)) { - writecon(FMT17); - writecon(rep->Rpt1Fname); if (rep->Energyflag) writeenergy(pr); errcode = writeresults(pr); @@ -117,8 +113,6 @@ int writereport(EN_Project *pr) /* Write full formatted report to file */ else { rep->Rptflag = 1; - writecon(FMT17); - writecon(rep->Rpt2Fname); writelogo(pr); if (rep->Summaryflag) writesummary(pr); diff --git a/src/text.h b/src/text.h index 656b3c2..b428be1 100755 --- a/src/text.h +++ b/src/text.h @@ -449,19 +449,15 @@ AUTHOR: L. Rossman #define FMT82 "\n\f\n Page %-d %60.60s\n" /* ------------------- Progress Messages ---------------------- */ -#define FMT100 "Retrieving network data..." -#define FMT101 "Computing hydraulics at hour %s" -#define FMT102 "Computing water quality at hour %s" -#define FMT103 "Saving results to file..." +#define FMT100 " Retrieving network data ... " +#define FMT101 " Computing hydraulics at hour %-10s " +#define FMT102 " Computing water quality at hour %-10s " +#define FMT103 " Writing output report ... " +#define FMT106 " Transferring results to file ... " #define FMT104 "Analysis begun %s" #define FMT105 "Analysis ended %s" /*------------------- Error Messages --------------------*/ - - - - - #define R_ERR201 "Input Error 201: syntax error in following line of " #define R_ERR202 "Input Error 202: illegal numeric value in following line of " #define R_ERR203 "Input Error 203: undefined node in following line of "