ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/gen/loadEPW.c
(Generate patch)

Comparing ray/src/gen/loadEPW.c (file contents):
Revision 2.1 by greg, Wed Feb 26 20:39:28 2025 UTC vs.
Revision 2.5 by greg, Wed Jun 4 17:48:48 2025 UTC

# Line 18 | Line 18 | const char     WDname[7][10] = {
18   };
19  
20   const char      MOname[12][10] = {
21 <        "January", "February", "March", "April", "June", "July",
21 >        "January", "February", "March", "April", "May", "June", "July",
22          "August", "September", "October", "November", "December"
23   };
24  
# Line 149 | Line 149 | static int
149   scan_date(EPWheader *epw)
150   {
151          int     hour;
152 <        float   minute;
152 >        int     minute;
153  
154          ++epw->lino;
155          if (epw->isWEA) {               /* simpler for WEA input */
# Line 160 | Line 160 | scan_date(EPWheader *epw)
160                  epw->dtpos.month--;
161          } else {
162                                          /* EPW input line */
163 <                if (fscanf(epw->fp, "%hd,%hd,%hd,%d,%f,", &epw->dtpos.year,
163 >                if (fscanf(epw->fp, "%hd,%hd,%hd,%d,%d,", &epw->dtpos.year,
164                                  &epw->dtpos.month, &epw->dtpos.day, &hour, &minute) != 5)
165                          goto scanerr;
166 <                epw->dtpos.hour = hour - minute*(0.5/60.);
166 >                epw->dtpos.hour = hour-1;
167 >                if (epw->period[0].nperhour == 1)
168 >                        epw->dtpos.hour += .5;
169 >                else
170 >                        epw->dtpos.hour += minute*(1./60.);
171                  epw->dtpos.month--;
172          }
173                                          /* check date/time */
# Line 206 | Line 210 | EPWopen(const char *fname)
210                  goto badformat;
211          if (hdr->isWEA) {               /* getting WEA header */
212                  cp = linbuf+6;
213 <                if (sscanf(cp, "%[^_]_%[^\r\n]q",
214 <                                hdr->loc.city, hdr->loc.country) != 2)
213 >                if (sscanf(cp, "%[^_]_%[^\r\n]",
214 >                                hdr->loc.city, hdr->loc.country) < 1)
215                          goto badformat;
216                  if (!fgets(linbuf, sizeof(linbuf), hdr->fp))
217                          goto readerr;
# Line 581 | Line 585 | EPWread(EPWheader *epw, EPWrecord *rp)
585                  rp->nosnowdays = atoi(cp);
586                  cp = strchr(cp, ',');
587          }
588 <        if (!cp++) goto badformat;
588 >        if (!cp++) goto skiprest;
589          if (*cp != ',') {
590                  rp->albedo = atof(cp);
591                  cp = strchr(cp, ',');
592          }
593 <        if (!cp++) goto badformat;
593 >        if (!cp++) goto skiprest;
594          if (*cp != ',') {
595                  rp->liqpdepth = atof(cp) * 1e-3;
596                  cp = strchr(cp, ',');
597          }
598 <        if (!cp++) goto badformat;
598 >        if (!cp++) goto skiprest;
599          if ((*cp != ',') & (*cp != '\n'))
600                  rp->liqhours = atof(cp);
601 + skiprest:
602          if (scan_date(epw) || feof(epw->fp))
603                  return(1);      /* normal return (even if next is EOF) */
604   badformat:

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines