| 640 | // file handle. |
| 641 | |
| 642 | flag FProcessQuickFile(CONST char *szFile, FILE *file) |
| 643 | { |
| 644 | char szLine[cchSzMax], sz[cchSzDef]; |
| 645 | int i; |
| 646 | flag fHaveFile, fRet = fFalse; |
| 647 | |
| 648 | fHaveFile = (file != NULL); |
| 649 | if (!fHaveFile) { |
| 650 | file = FileOpen(szFile, 0, NULL); |
| 651 | if (file == NULL) |
| 652 | goto LDone; |
| 653 | } |
| 654 | is.fileIn = file; |
| 655 | do { |
| 656 | fgets(szLine, cchSzMax, file); |
| 657 | if (feof(file)) { |
| 658 | fRet = fTrue; |
| 659 | goto LDone; |
| 660 | } |
| 661 | |
| 662 | // Parse line of 100 characters. |
| 663 | CopyRgb((pbyte)szLine, (pbyte)sz, 23); |
| 664 | for (i = 23-1; i >= 0 && sz[i] <= ' '; i--) |
| 665 | ; |
| 666 | sz[i+1] = chNull; |
| 667 | ciCore.nam = SzClone(sz); |
| 668 | CopyRgchToSz(szLine+23, 3, sz, cchSzDef); |
| 669 | MM = NParseSz(sz, pmMon); |
| 670 | DD = NParseSz(szLine+23+3, pmDay); |
| 671 | CopyRgchToSz(szLine+23+7, 5, sz, cchSzDef); |
| 672 | YY = NParseSz(sz, pmYea); |
| 673 | CopyRgchToSz(szLine+23+12, 24-12, sz, cchSzDef); |
| 674 | TT = RParseSz(sz, pmTim); |
| 675 | if (FEqRgch(&szLine[23+24], "LMT", 3, fTrue)) |
| 676 | ZZ = zonLMT; |
| 677 | else { |
| 678 | CopyRgchToSz(szLine+23+24+3, 9-3, sz, cchSzDef); |
| 679 | ZZ = RParseSz(sz, pmZon); |
| 680 | } |
| 681 | CopyRgchToSz(szLine+23+24+9, 10, sz, cchSzDef); |
| 682 | OO = RParseSz(sz, pmLon); |
| 683 | CopyRgchToSz(szLine+23+24+9+10, 9, sz, cchSzDef); |
| 684 | AA = RParseSz(sz, pmLat); |
| 685 | CopyRgb((pbyte)(szLine+23+24+9+10+9), (pbyte)sz, 25); |
| 686 | for (i = 25-1; i >= 0 && sz[i] <= ' '; i--) |
| 687 | ; |
| 688 | sz[i+1] = chNull; |
| 689 | ciCore.loc = SzClone(sz); |
| 690 | SS = 0.0; |
| 691 | if (FZonDst(&szLine[23+24])) { |
| 692 | ZZ += 1.0; SS += 1.0; |
| 693 | } |
| 694 | if (!FValidMon(MM) || !FValidDay(DD, MM, YY) || !FValidYea(YY) || |
| 695 | !FValidTim(TT) || !FValidZon(ZZ) || !FValidLon(OO) || !FValidLat(AA)) { |
| 696 | PrintWarning("Values in Quick*Chart file are out of range."); |
| 697 | goto LDone; |
| 698 | } |
| 699 | if (!FAppendCIList(&ciCore)) |
no test coverage detected