| 788 | // name or a file handle. |
| 789 | |
| 790 | flag FProcessADBFile(CONST char *szFile, FILE *file) |
| 791 | { |
| 792 | char szLine[cchSzLine], sz[cchSzDef], szLoc1[cchSzDef], szLoc2[cchSzDef], |
| 793 | ch, *pch, *pch2; |
| 794 | int i, grf, cchSz = (us.szADB == NULL ? 0 : CchSz(us.szADB)); |
| 795 | flag fHaveFile, fDidOne = fFalse, fDidStart, fDidEnd, fDidLon, fRet = fFalse; |
| 796 | |
| 797 | fHaveFile = (file != NULL); |
| 798 | if (!fHaveFile) { |
| 799 | file = FileOpen(szFile, 0, NULL); |
| 800 | if (file == NULL) |
| 801 | goto LDone; |
| 802 | } |
| 803 | is.fileIn = file; |
| 804 | do { |
| 805 | #ifdef EXPRESS |
| 806 | if (!us.fExpOff && FSzSet(us.szExpADB)) { |
| 807 | for (i = us.iExpADB; i < us.iExpADB + us.cExpADB; i++) |
| 808 | if (!ExpSetN(i, 0)) |
| 809 | goto LDone; |
| 810 | } |
| 811 | #endif |
| 812 | |
| 813 | fDidStart = fDidEnd = fFalse; |
| 814 | grf = 0; |
| 815 | while (!fDidEnd) { |
| 816 | while (!feof(file) && (ch = getc(file)) < ' ') |
| 817 | ; |
| 818 | if (feof(file)) |
| 819 | break; |
| 820 | for (szLine[0] = ch, i = 1; i < cchSzLine-1 && !feof(file) && |
| 821 | (uchar)(szLine[i] = getc(file)) >= ' '; i++) |
| 822 | ; |
| 823 | szLine[i] = chNull; |
| 824 | fDidLon = fFalse; |
| 825 | for (pch = szLine; *pch; pch++) { |
| 826 | if (FEqRgch(pch, "<adb_entry", 10, fFalse)) |
| 827 | fDidStart = fTrue; |
| 828 | else if (!fDidStart) |
| 829 | continue; |
| 830 | if (FEqRgch(pch, "</adb_entry>", 12, fFalse)) |
| 831 | fDidEnd = fTrue; |
| 832 | if ((grf & 1) == 0 && FEqRgch(pch, "imonth=\"", 8, fFalse)) { |
| 833 | MM = atoi(pch + 8); |
| 834 | grf |= 1; |
| 835 | } |
| 836 | if ((grf & 2) == 0 && FEqRgch(pch, "iday=\"", 6, fFalse)) { |
| 837 | DD = atoi(pch + 6); |
| 838 | grf |= 2; |
| 839 | } |
| 840 | if ((grf & 4) == 0 && FEqRgch(pch, "iyear=\"", 7, fFalse)) { |
| 841 | YY = atoi(pch + 7); |
| 842 | grf |= 4; |
| 843 | } |
| 844 | if ((grf & 8) == 0 && FEqRgch(pch, "sbtime_ampm=\"", 13, fFalse)) { |
| 845 | pch += 13; |
| 846 | for (pch2 = pch; *pch2 && *pch2 != '"'; pch2++) |
| 847 | ; |
no test coverage detected