/* ########## # # kjvSelect.cpp # Version 1.00 # MDJ 1999-05-11 # # Compile to kjvSelect.cgi # Drive with http://www.bds-soft.com/kjvSelect.html # # Display the selected KJV file # # This version is specific to Saturn # Services' g++ which is not fully # ANSI compliant. # # Note: iostream and fstream includes must have .h # but string include must not. # # 1999-05-11 WORKS ONLINE! # Note that c++ should NOT append
's to lines from # HTML files or "Object Expected" errors in JavaScripts # will occur.
's SHOULD be appended to ends of lines # from text files. # ########## */ #include #include #include #include #include #include void ReplaceChar(char *pCString, char cOld, char cNew); void ReplaceCHex(char *pEncoded); static int cHex2Int(char *pChars); int main() { // Declare Form Variables char kjvFNum[64]; // File Number string long kjvFNX; // File Number numeric // Declare Token Variables char varName[128][64]; char valName[128][64]; long maxTokCnt = 128; long tokCount; // Establish Filenames Array char kjvFN[233][13]; strcpy(kjvFN[0], "GEN01.TXT"); // Genesis 1 - 7 strcpy(kjvFN[1], "GEN02.TXT"); // Genesis 8 - 14 strcpy(kjvFN[2], "GEN03.TXT"); // Genesis 15 - 20 strcpy(kjvFN[3], "GEN04.TXT"); // Genesis 21 - 25 strcpy(kjvFN[4], "GEN05.TXT"); // Genesis 26 - 29 strcpy(kjvFN[5], "GEN06.TXT"); // Genesis 30 - 33 strcpy(kjvFN[6], "GEN07.TXT"); // Genesis 34 - 38 strcpy(kjvFN[7], "GEN08.TXT"); // Genesis 39 - 42 strcpy(kjvFN[8], "GEN09.TXT"); // Genesis 43 - 46 strcpy(kjvFN[9], "GEN10.TXT"); // Genesis 47 - 50 strcpy(kjvFN[10], "EXO01.TXT"); // Exodus 1 - 6 strcpy(kjvFN[11], "EXO02.TXT"); // Exodus 7 - 11 strcpy(kjvFN[12], "EXO03.TXT"); // Exodus 12 - 15 strcpy(kjvFN[13], "EXO04.TXT"); // Exodus 16 - 21 strcpy(kjvFN[14], "EXO05.TXT"); // Exodus 22 - 26 strcpy(kjvFN[15], "EXO06.TXT"); // Exodus 27 - 30 strcpy(kjvFN[16], "EXO07.TXT"); // Exodus 31 - 35 strcpy(kjvFN[17], "EXO08.TXT"); // Exodus 36 - 39 strcpy(kjvFN[18], "EXO09.TXT"); // Exodus 40 strcpy(kjvFN[19], "LEV01.TXT"); // Leviticus 1 - 6 strcpy(kjvFN[20], "LEV02.TXT"); // Leviticus 7 - 11 strcpy(kjvFN[21], "LEV03.TXT"); // Leviticus 12 - 14 strcpy(kjvFN[22], "LEV04.TXT"); // Leviticus 15 - 19 strcpy(kjvFN[23], "LEV05.TXT"); // Leviticus 20 - 24 strcpy(kjvFN[24], "LEV06.TXT"); // Leviticus 25 - 27 strcpy(kjvFN[25], "NUM01.TXT"); // Numbers 1 - 3 strcpy(kjvFN[26], "NUM02.TXT"); // Numbers 4 - 6 strcpy(kjvFN[27], "NUM03.TXT"); // Numbers 7 - 10 strcpy(kjvFN[28], "NUM04.TXT"); // Numbers 11 - 14 strcpy(kjvFN[29], "NUM05.TXT"); // Numbers 15 - 18 strcpy(kjvFN[30], "NUM06.TXT"); // Numbers 19 - 22 strcpy(kjvFN[31], "NUM07.TXT"); // Numbers 23 - 27 strcpy(kjvFN[32], "NUM08.TXT"); // Numbers 28 - 31 strcpy(kjvFN[33], "NUM09.TXT"); // Numbers 32 - 36 strcpy(kjvFN[34], "DEU01.TXT"); // Deuteronomy 1 - 3 strcpy(kjvFN[35], "DEU02.TXT"); // Deuteronomy 4 - 8 strcpy(kjvFN[36], "DEU03.TXT"); // Deuteronomy 9 - 13 strcpy(kjvFN[37], "DEU04.TXT"); // Deuteronomy 14 - 19 strcpy(kjvFN[38], "DEU05.TXT"); // Deuteronomy 20 - 25 strcpy(kjvFN[39], "DEU06.TXT"); // Deuteronomy 26 - 29 strcpy(kjvFN[40], "DEU07.TXT"); // Deuteronomy 30 - 34 strcpy(kjvFN[41], "JOS01.TXT"); // Joshua 1 - 6 strcpy(kjvFN[42], "JOS02.TXT"); // Joshua 7 - 10 strcpy(kjvFN[43], "JOS03.TXT"); // Joshua 11 - 16 strcpy(kjvFN[44], "JOS04.TXT"); // Joshua 17 - 21 strcpy(kjvFN[45], "JOS05.TXT"); // Joshua 22 - 24 strcpy(kjvFN[46], "JDG01.TXT"); // Judges 1 - 5 strcpy(kjvFN[47], "JDG02.TXT"); // Judges 6 - 8 strcpy(kjvFN[48], "JDG03.TXT"); // Judges 9 - 12 strcpy(kjvFN[49], "JDG04.TXT"); // Judges 13 - 18 strcpy(kjvFN[50], "JDG05.TXT"); // Judges 19 - 21 strcpy(kjvFN[51], "RUT01.TXT"); // Ruth 1 - 4 strcpy(kjvFN[52], "ISAM01.TXT"); // I Samuel 1 - 6 strcpy(kjvFN[53], "ISAM02.TXT"); // I Samuel 7 - 12 strcpy(kjvFN[54], "ISAM03.TXT"); // I Samuel 13 - 16 strcpy(kjvFN[55], "ISAM04.TXT"); // I Samuel 17 - 19 strcpy(kjvFN[56], "ISAM05.TXT"); // I Samuel 20 - 24 strcpy(kjvFN[57], "ISAM06.TXT"); // I Samuel 25 - 29 strcpy(kjvFN[58], "ISAM07.TXT"); // I Samuel 30 - 31 strcpy(kjvFN[59], "IISAM01.TXT"); // II Samuel 1 - 5 strcpy(kjvFN[60], "IISAM02.TXT"); // II Samuel 6 - 11 strcpy(kjvFN[61], "IISAM03.TXT"); // II Samuel 12 - 14 strcpy(kjvFN[62], "IISAM04.TXT"); // II Samuel 15 - 18 strcpy(kjvFN[63], "IISAM05.TXT"); // II Samuel 19 - 22 strcpy(kjvFN[64], "IISAM06.TXT"); // II Samuel 23 - 24 strcpy(kjvFN[65], "IKIN01.TXT"); // I Kings 1 - 3 strcpy(kjvFN[66], "IKIN02.TXT"); // I Kings 4 - 7 strcpy(kjvFN[67], "IKIN03.TXT"); // I Kings 8 - 10 strcpy(kjvFN[68], "IKIN04.TXT"); // I Kings 11 - 14 strcpy(kjvFN[69], "IKIN05.TXT"); // I Kings 15 - 18 strcpy(kjvFN[70], "IKIN06.TXT"); // I Kings 19 - 21 strcpy(kjvFN[71], "IKIN07.TXT"); // I Kings 22 strcpy(kjvFN[72], "IIKIN01.TXT"); // II Kings 1 - 4 strcpy(kjvFN[73], "IIKIN02.TXT"); // II Kings 5 - 8 strcpy(kjvFN[74], "IIKIN03.TXT"); // II Kings 9 - 12 strcpy(kjvFN[75], "IIKIN04.TXT"); // II Kings 13 - 16 strcpy(kjvFN[76], "IIKIN05.TXT"); // II Kings 17 - 20 strcpy(kjvFN[77], "IIKIN06.TXT"); // II Kings 21 - 24 strcpy(kjvFN[78], "IIKIN07.TXT"); // II Kings 25 strcpy(kjvFN[79], "ICHR01.TXT"); // I Chronicles 1 - 5 strcpy(kjvFN[80], "ICHR02.TXT"); // I Chronicles 6 - 9 strcpy(kjvFN[81], "ICHR03.TXT"); // I Chronicles 10 - 15 strcpy(kjvFN[82], "ICHR04.TXT"); // I Chronicles 16 - 21 strcpy(kjvFN[83], "ICHR05.TXT"); // I Chronicles 22 - 27 strcpy(kjvFN[84], "ICHR06.TXT"); // I Chronicles 28 - 29 strcpy(kjvFN[85], "IICHR01.TXT"); // II Chronicles 1 - 6 strcpy(kjvFN[86], "IICHR02.TXT"); // II Chronicles 7 - 12 strcpy(kjvFN[87], "IICHR03.TXT"); // II Chronicles 13 - 19 strcpy(kjvFN[88], "IICHR04.TXT"); // II Chronicles 20 - 24 strcpy(kjvFN[89], "IICHR05.TXT"); // II Chronicles 25 - 29 strcpy(kjvFN[90], "IICHR06.TXT"); // II Chronicles 30 - 33 strcpy(kjvFN[91], "IICHR07.TXT"); // II Chronicles 34 - 36 strcpy(kjvFN[92], "EZR01.TXT"); // Ezra 1 - 6 strcpy(kjvFN[93], "EZR02.TXT"); // Ezra 7 - 10 strcpy(kjvFN[94], "NEH01.TXT"); // Nehemiah 1 - 6 strcpy(kjvFN[95], "NEH02.TXT"); // Nehemiah 7 - 10 strcpy(kjvFN[96], "NEH03.TXT"); // Nehemiah 11 - 13 strcpy(kjvFN[97], "EST01.TXT"); // Esther 1 - 7 strcpy(kjvFN[98], "EST02.TXT"); // Esther 8 - 10 strcpy(kjvFN[99], "JOB01.TXT"); // Job 1 - 9 strcpy(kjvFN[100], "JOB02.TXT"); // Job 10 - 18 strcpy(kjvFN[101], "JOB03.TXT"); // Job 19 - 28 strcpy(kjvFN[102], "JOB04.TXT"); // Job 29 - 36 strcpy(kjvFN[103], "JOB05.TXT"); // Job 37 - 42 strcpy(kjvFN[104], "PSA01.TXT"); // Psalms 1 - 17 strcpy(kjvFN[105], "PSA02.TXT"); // Psalms 18 - 29 strcpy(kjvFN[106], "PSA03.TXT"); // Psalms 30 - 39 strcpy(kjvFN[107], "PSA04.TXT"); // Psalms 40 - 51 strcpy(kjvFN[108], "PSA05.TXT"); // Psalms 52 - 67 strcpy(kjvFN[109], "PSA06.TXT"); // Psalms 68 - 76 strcpy(kjvFN[110], "PSA07.TXT"); // Psalms 77 - 87 strcpy(kjvFN[111], "PSA08.TXT"); // Psalms 88 - 101 strcpy(kjvFN[112], "PSA09.TXT"); // Psalms 102 - 108 strcpy(kjvFN[113], "PSA10.TXT"); // Psalms 109 - 118 strcpy(kjvFN[114], "PSA11.TXT"); // Psalms 119 - 129 strcpy(kjvFN[115], "PSA12.TXT"); // Psalms 130 - 146 strcpy(kjvFN[116], "PSA13.TXT"); // Psalms 147 - 150 strcpy(kjvFN[117], "PRO01.TXT"); // Proverbs 1 - 8 strcpy(kjvFN[118], "PRO02.TXT"); // Proverbs 9 - 16 strcpy(kjvFN[119], "PRO03.TXT"); // Proverbs 17 - 23 strcpy(kjvFN[120], "PRO04.TXT"); // Proverbs 24 - 31 strcpy(kjvFN[121], "ECC01.TXT"); // Ecclesiastes 1 - 8 strcpy(kjvFN[122], "ECC02.TXT"); // Ecclesiastes 9 - 12 strcpy(kjvFN[123], "SON01.TXT"); // Song of Solomon 1 - 8 strcpy(kjvFN[124], "ISA01.TXT"); // Isaiah 1 - 7 strcpy(kjvFN[125], "ISA02.TXT"); // Isaiah 8 - 15 strcpy(kjvFN[126], "ISA03.TXT"); // Isaiah 16 - 24 strcpy(kjvFN[127], "ISA04.TXT"); // Isaiah 25 - 30 strcpy(kjvFN[128], "ISA05.TXT"); // Isaiah 31 - 37 strcpy(kjvFN[129], "ISA06.TXT"); // Isaiah 38 - 43 strcpy(kjvFN[130], "ISA07.TXT"); // Isaiah 44 - 49 strcpy(kjvFN[131], "ISA08.TXT"); // Isaiah 50 - 58 strcpy(kjvFN[132], "ISA09.TXT"); // Isaiah 59 - 66 strcpy(kjvFN[133], "JER01.TXT"); // Jeremiah 1 - 5 strcpy(kjvFN[134], "JER02.TXT"); // Jeremiah 6 - 10 strcpy(kjvFN[135], "JER03.TXT"); // Jeremiah 11 - 16 strcpy(kjvFN[136], "JER04.TXT"); // Jeremiah 17 - 22 strcpy(kjvFN[137], "JER05.TXT"); // Jeremiah 23 - 26 strcpy(kjvFN[138], "JER06.TXT"); // Jeremiah 27 - 31 strcpy(kjvFN[139], "JER07.TXT"); // Jeremiah 32 - 35 strcpy(kjvFN[140], "JER08.TXT"); // Jeremiah 36 - 40 strcpy(kjvFN[141], "JER09.TXT"); // Jeremiah 41 - 47 strcpy(kjvFN[142], "JER10.TXT"); // Jeremiah 48 - 50 strcpy(kjvFN[143], "JER11.TXT"); // Jeremiah 51 - 52 strcpy(kjvFN[144], "LAM01.TXT"); // Lamentations 1 - 5 strcpy(kjvFN[145], "EZE01.TXT"); // Ezekiel 1 - 7 strcpy(kjvFN[146], "EZE02.TXT"); // Ezekiel 8 - 13 strcpy(kjvFN[147], "EZE03.TXT"); // Ezekiel 14 - 17 strcpy(kjvFN[148], "EZE04.TXT"); // Ezekiel 18 - 21 strcpy(kjvFN[149], "EZE05.TXT"); // Ezekiel 22 - 26 strcpy(kjvFN[150], "EZE06.TXT"); // Ezekiel 27 - 31 strcpy(kjvFN[151], "EZE07.TXT"); // Ezekiel 32 - 35 strcpy(kjvFN[152], "EZE08.TXT"); // Ezekiel 36 - 39 strcpy(kjvFN[153], "EZE09.TXT"); // Ezekiel 40 - 43 strcpy(kjvFN[154], "EZE10.TXT"); // Ezekiel 44 - 47 strcpy(kjvFN[155], "EZE11.TXT"); // Ezekiel 48 strcpy(kjvFN[156], "DAN01.TXT"); // Daniel 1 - 4 strcpy(kjvFN[157], "DAN02.TXT"); // Daniel 5 - 8 strcpy(kjvFN[158], "DAN03.TXT"); // Daniel 9 - 12 strcpy(kjvFN[159], "HOS01.TXT"); // Hosea 1 - 11 strcpy(kjvFN[160], "HOS02.TXT"); // Hosea 12 - 14 strcpy(kjvFN[161], "JOE01.TXT"); // Joel 1 - 3 strcpy(kjvFN[162], "AMO01.TXT"); // Amos 1 - 9 strcpy(kjvFN[163], "OBA01.TXT"); // Obadiah strcpy(kjvFN[164], "JON01.TXT"); // Jonah 1 - 4 strcpy(kjvFN[165], "MIC01.TXT"); // Micah 1 - 7 strcpy(kjvFN[166], "NAH01.TXT"); // Nahum 1 - 3 strcpy(kjvFN[167], "HAB01.TXT"); // Habakkuk 1 - 3 strcpy(kjvFN[168], "ZEP01.TXT"); // Zephaniah 1 - 3 strcpy(kjvFN[169], "HAG01.TXT"); // Haggai 1 - 2 strcpy(kjvFN[170], "ZEC01.TXT"); // Zechariah 1 - 10 strcpy(kjvFN[171], "ZEC02.TXT"); // Zechariah 11 - 14 strcpy(kjvFN[172], "MAL01.TXT"); // Malachi 1 - 4 strcpy(kjvFN[173], "MAT01.TXT"); // Matthew 1 - 6 strcpy(kjvFN[174], "MAT02.TXT"); // Matthew 7 - 11 strcpy(kjvFN[175], "MAT03.TXT"); // Matthew 12 - 14 strcpy(kjvFN[176], "MAT04.TXT"); // Matthew 15 - 19 strcpy(kjvFN[177], "MAT05.TXT"); // Matthew 20 - 23 strcpy(kjvFN[178], "MAT06.TXT"); // Matthew 24 - 26 strcpy(kjvFN[179], "MAT07.TXT"); // Matthew 27 - 28 strcpy(kjvFN[180], "MAR01.TXT"); // Mark 1 - 5 strcpy(kjvFN[181], "MAR02.TXT"); // Mark 6 - 9 strcpy(kjvFN[182], "MAR03.TXT"); // Mark 10 - 13 strcpy(kjvFN[183], "MAR04.TXT"); // Mark 14 - 16 strcpy(kjvFN[184], "LUK01.TXT"); // Luke 1 - 3 strcpy(kjvFN[185], "LUK02.TXT"); // Luke 4 - 6 strcpy(kjvFN[186], "LUK03.TXT"); // Luke 7 - 9 strcpy(kjvFN[187], "LUK04.TXT"); // Luke 10 - 12 strcpy(kjvFN[188], "LUK05.TXT"); // Luke 13 - 17 strcpy(kjvFN[189], "LUK06.TXT"); // Luke 18 - 21 strcpy(kjvFN[190], "LUK07.TXT"); // Luke 22 - 24 strcpy(kjvFN[191], "JOH01.TXT"); // John 1 - 4 strcpy(kjvFN[192], "JOH02.TXT"); // John 5 - 7 strcpy(kjvFN[193], "JOH03.TXT"); // John 8 - 11 strcpy(kjvFN[194], "JOH04.TXT"); // John 12 - 16 strcpy(kjvFN[195], "JOH05.TXT"); // John 17 - 21 strcpy(kjvFN[196], "ACT01.TXT"); // Acts 1 - 5 strcpy(kjvFN[197], "ACT02.TXT"); // Acts 6 - 9 strcpy(kjvFN[198], "ACT03.TXT"); // Acts 10 - 13 strcpy(kjvFN[199], "ACT04.TXT"); // Acts 14 - 18 strcpy(kjvFN[200], "ACT05.TXT"); // Acts 19 - 22 strcpy(kjvFN[201], "ACT06.TXT"); // Acts 23 - 27 strcpy(kjvFN[202], "ACT07.TXT"); // Acts 28 strcpy(kjvFN[203], "ROM01.TXT"); // Romans 1 - 7 strcpy(kjvFN[204], "ROM02.TXT"); // Romans 8 - 14 strcpy(kjvFN[205], "ROM03.TXT"); // Romans 15 - 16 strcpy(kjvFN[206], "ICOR01.TXT"); // I Corinthians 1 - 8 strcpy(kjvFN[207], "ICOR02.TXT"); // I Corinthians 9 - 14 strcpy(kjvFN[208], "ICOR03.TXT"); // I Corinthians 15 - 16 strcpy(kjvFN[209], "IICOR01.TXT"); // II Corinthians 1 - 9 strcpy(kjvFN[210], "IICOR02.TXT"); // II Corinthians 10 - 13 strcpy(kjvFN[211], "GAL01.TXT"); // Galatians 1 - 6 strcpy(kjvFN[212], "EPH01.TXT"); // Ephesians 1 - 6 strcpy(kjvFN[213], "PHI01.TXT"); // Philippians 1 - 4 strcpy(kjvFN[214], "COL01.TXT"); // Colossians 1 - 4 strcpy(kjvFN[215], "ITHE01.TXT"); // I Thessalonians 1 - 5 strcpy(kjvFN[216], "IITHE01.TXT"); // II Thessalonians 1 - 3 strcpy(kjvFN[217], "ITIM01.TXT"); // I Timothy 1 - 6 strcpy(kjvFN[218], "IITIM01.TXT"); // II Timothy 1 - 4 strcpy(kjvFN[219], "TIT01.TXT"); // Titus 1 - 3 strcpy(kjvFN[220], "PHM01.TXT"); // Philemon strcpy(kjvFN[221], "HEB01.TXT"); // Hebrews 1 - 9 strcpy(kjvFN[222], "HEB02.TXT"); // Hebrews 10 - 13 strcpy(kjvFN[223], "JAM01.TXT"); // James 1 - 5 strcpy(kjvFN[224], "IPET01.TXT"); // I Peter 1 - 5 strcpy(kjvFN[225], "IIPET01.TXT"); // II Peter 1 - 3 strcpy(kjvFN[226], "IJOH01.TXT"); // I John 1 - 5 strcpy(kjvFN[227], "IIJOH01.TXT"); // II John strcpy(kjvFN[228], "IIIJOH01.TXT"); // III John strcpy(kjvFN[229], "JUD01.TXT"); // Jude strcpy(kjvFN[230], "REV01.TXT"); // Revelation 1 - 8 strcpy(kjvFN[231], "REV02.TXT"); // Revelation 9 - 16 strcpy(kjvFN[232], "REV03.TXT"); // Revelation 17 - 22 // Establish File Titles Array char kjvTT[233][23]; strcpy(kjvTT[0], "Genesis 1 - 7"); strcpy(kjvTT[1], "Genesis 8 - 14"); strcpy(kjvTT[2], "Genesis 15 - 20"); strcpy(kjvTT[3], "Genesis 21 - 25"); strcpy(kjvTT[4], "Genesis 26 - 29"); strcpy(kjvTT[5], "Genesis 30 - 33"); strcpy(kjvTT[6], "Genesis 34 - 38"); strcpy(kjvTT[7], "Genesis 39 - 42"); strcpy(kjvTT[8], "Genesis 43 - 46"); strcpy(kjvTT[9], "Genesis 47 - 50"); strcpy(kjvTT[10], "Exodus 1 - 6"); strcpy(kjvTT[11], "Exodus 7 - 11"); strcpy(kjvTT[12], "Exodus 12 - 15"); strcpy(kjvTT[13], "Exodus 16 - 21"); strcpy(kjvTT[14], "Exodus 22 - 26"); strcpy(kjvTT[15], "Exodus 27 - 30"); strcpy(kjvTT[16], "Exodus 31 - 35"); strcpy(kjvTT[17], "Exodus 36 - 39"); strcpy(kjvTT[18], "Exodus 40"); strcpy(kjvTT[19], "Leviticus 1 - 6"); strcpy(kjvTT[20], "Leviticus 7 - 11"); strcpy(kjvTT[21], "Leviticus 12 - 14"); strcpy(kjvTT[22], "Leviticus 15 - 19"); strcpy(kjvTT[23], "Leviticus 20 - 24"); strcpy(kjvTT[24], "Leviticus 25 - 27"); strcpy(kjvTT[25], "Numbers 1 - 3"); strcpy(kjvTT[26], "Numbers 4 - 6"); strcpy(kjvTT[27], "Numbers 7 - 10"); strcpy(kjvTT[28], "Numbers 11 - 14"); strcpy(kjvTT[29], "Numbers 15 - 18"); strcpy(kjvTT[30], "Numbers 19 - 22"); strcpy(kjvTT[31], "Numbers 23 - 27"); strcpy(kjvTT[32], "Numbers 28 - 31"); strcpy(kjvTT[33], "Numbers 32 - 36"); strcpy(kjvTT[34], "Deuteronomy 1 - 3"); strcpy(kjvTT[35], "Deuteronomy 4 - 8"); strcpy(kjvTT[36], "Deuteronomy 9 - 13"); strcpy(kjvTT[37], "Deuteronomy 14 - 19"); strcpy(kjvTT[38], "Deuteronomy 20 - 25"); strcpy(kjvTT[39], "Deuteronomy 26 - 29"); strcpy(kjvTT[40], "Deuteronomy 30 - 34"); strcpy(kjvTT[41], "Joshua 1 - 6"); strcpy(kjvTT[42], "Joshua 7 - 10"); strcpy(kjvTT[43], "Joshua 11 - 16"); strcpy(kjvTT[44], "Joshua 17 - 21"); strcpy(kjvTT[45], "Joshua 22 - 24"); strcpy(kjvTT[46], "Judges 1 - 5"); strcpy(kjvTT[47], "Judges 6 - 8"); strcpy(kjvTT[48], "Judges 9 - 12"); strcpy(kjvTT[49], "Judges 13 - 18"); strcpy(kjvTT[50], "Judges 19 - 21"); strcpy(kjvTT[51], "Ruth 1 - 4"); strcpy(kjvTT[52], "I Samuel 1 - 6"); strcpy(kjvTT[53], "I Samuel 7 - 12"); strcpy(kjvTT[54], "I Samuel 13 - 16"); strcpy(kjvTT[55], "I Samuel 17 - 19"); strcpy(kjvTT[56], "I Samuel 20 - 24"); strcpy(kjvTT[57], "I Samuel 25 - 29"); strcpy(kjvTT[58], "I Samuel 30 - 31"); strcpy(kjvTT[59], "II Samuel 1 - 5"); strcpy(kjvTT[60], "II Samuel 6 - 11"); strcpy(kjvTT[61], "II Samuel 12 - 14"); strcpy(kjvTT[62], "II Samuel 15 - 18"); strcpy(kjvTT[63], "II Samuel 19 - 22"); strcpy(kjvTT[64], "II Samuel 23 - 24"); strcpy(kjvTT[65], "I Kings 1 - 3"); strcpy(kjvTT[66], "I Kings 4 - 7"); strcpy(kjvTT[67], "I Kings 8 - 10"); strcpy(kjvTT[68], "I Kings 11 - 14"); strcpy(kjvTT[69], "I Kings 15 - 18"); strcpy(kjvTT[70], "I Kings 19 - 21"); strcpy(kjvTT[71], "I Kings 22"); strcpy(kjvTT[72], "II Kings 1 - 4"); strcpy(kjvTT[73], "II Kings 5 - 8"); strcpy(kjvTT[74], "II Kings 9 - 12"); strcpy(kjvTT[75], "II Kings 13 - 16"); strcpy(kjvTT[76], "II Kings 17 - 20"); strcpy(kjvTT[77], "II Kings 21 - 24"); strcpy(kjvTT[78], "II Kings 25"); strcpy(kjvTT[79], "I Chronicles 1 - 5"); strcpy(kjvTT[80], "I Chronicles 6 - 9"); strcpy(kjvTT[81], "I Chronicles 10 - 15"); strcpy(kjvTT[82], "I Chronicles 16 - 21"); strcpy(kjvTT[83], "I Chronicles 22 - 27"); strcpy(kjvTT[84], "I Chronicles 28 - 29"); strcpy(kjvTT[85], "II Chronicles 1 - 6"); strcpy(kjvTT[86], "II Chronicles 7 - 12"); strcpy(kjvTT[87], "II Chronicles 13 - 19"); strcpy(kjvTT[88], "II Chronicles 20 - 24"); strcpy(kjvTT[89], "II Chronicles 25 - 29"); strcpy(kjvTT[90], "II Chronicles 30 - 33"); strcpy(kjvTT[91], "II Chronicles 34 - 36"); strcpy(kjvTT[92], "Ezra 1 - 6"); strcpy(kjvTT[93], "Ezra 7 - 10"); strcpy(kjvTT[94], "Nehemiah 1 - 6"); strcpy(kjvTT[95], "Nehemiah 7 - 10"); strcpy(kjvTT[96], "Nehemiah 11 - 13"); strcpy(kjvTT[97], "Esther 1 - 7"); strcpy(kjvTT[98], "Esther 8 - 10"); strcpy(kjvTT[99], "Job 1 - 9"); strcpy(kjvTT[100], "Job 10 - 18"); strcpy(kjvTT[101], "Job 19 - 28"); strcpy(kjvTT[102], "Job 29 - 36"); strcpy(kjvTT[103], "Job 37 - 42"); strcpy(kjvTT[104], "Psalms 1 - 17"); strcpy(kjvTT[105], "Psalms 18 - 29"); strcpy(kjvTT[106], "Psalms 30 - 39"); strcpy(kjvTT[107], "Psalms 40 - 51"); strcpy(kjvTT[108], "Psalms 52 - 67"); strcpy(kjvTT[109], "Psalms 68 - 76"); strcpy(kjvTT[110], "Psalms 77 - 87"); strcpy(kjvTT[111], "Psalms 88 - 101"); strcpy(kjvTT[112], "Psalms 102 - 108"); strcpy(kjvTT[113], "Psalms 109 - 118"); strcpy(kjvTT[114], "Psalms 119 - 129"); strcpy(kjvTT[115], "Psalms 130 - 146"); strcpy(kjvTT[116], "Psalms 147 - 150"); strcpy(kjvTT[117], "Proverbs 1 - 8"); strcpy(kjvTT[118], "Proverbs 9 - 16"); strcpy(kjvTT[119], "Proverbs 17 - 23"); strcpy(kjvTT[120], "Proverbs 24 - 31"); strcpy(kjvTT[121], "Ecclesiastes 1 - 8"); strcpy(kjvTT[122], "Ecclesiastes 9 - 12"); strcpy(kjvTT[123], "Song of Solomon 1 - 8"); strcpy(kjvTT[124], "Isaiah 1 - 7"); strcpy(kjvTT[125], "Isaiah 8 - 15"); strcpy(kjvTT[126], "Isaiah 16 - 24"); strcpy(kjvTT[127], "Isaiah 25 - 30"); strcpy(kjvTT[128], "Isaiah 31 - 37"); strcpy(kjvTT[129], "Isaiah 38 - 43"); strcpy(kjvTT[130], "Isaiah 44 - 49"); strcpy(kjvTT[131], "Isaiah 50 - 58"); strcpy(kjvTT[132], "Isaiah 59 - 66"); strcpy(kjvTT[133], "Jeremiah 1 - 5"); strcpy(kjvTT[134], "Jeremiah 6 - 10"); strcpy(kjvTT[135], "Jeremiah 11 - 16"); strcpy(kjvTT[136], "Jeremiah 17 - 22"); strcpy(kjvTT[137], "Jeremiah 23 - 26"); strcpy(kjvTT[138], "Jeremiah 27 - 31"); strcpy(kjvTT[139], "Jeremiah 32 - 35"); strcpy(kjvTT[140], "Jeremiah 36 - 40"); strcpy(kjvTT[141], "Jeremiah 41 - 47"); strcpy(kjvTT[142], "Jeremiah 48 - 50"); strcpy(kjvTT[143], "Jeremiah 51 - 52"); strcpy(kjvTT[144], "Lamentations 1 - 5"); strcpy(kjvTT[145], "Ezekiel 1 - 7"); strcpy(kjvTT[146], "Ezekiel 8 - 13"); strcpy(kjvTT[147], "Ezekiel 14 - 17"); strcpy(kjvTT[148], "Ezekiel 18 - 21"); strcpy(kjvTT[149], "Ezekiel 22 - 26"); strcpy(kjvTT[150], "Ezekiel 27 - 31"); strcpy(kjvTT[151], "Ezekiel 32 - 35"); strcpy(kjvTT[152], "Ezekiel 36 - 39"); strcpy(kjvTT[153], "Ezekiel 40 - 43"); strcpy(kjvTT[154], "Ezekiel 44 - 47"); strcpy(kjvTT[155], "Ezekiel 48"); strcpy(kjvTT[156], "Daniel 1 - 4"); strcpy(kjvTT[157], "Daniel 5 - 8"); strcpy(kjvTT[158], "Daniel 9 - 12"); strcpy(kjvTT[159], "Hosea 1 - 11"); strcpy(kjvTT[160], "Hosea 12 - 14"); strcpy(kjvTT[161], "Joel 1 - 3"); strcpy(kjvTT[162], "Amos 1 - 9"); strcpy(kjvTT[163], "Obadiah"); strcpy(kjvTT[164], "Jonah 1 - 4"); strcpy(kjvTT[165], "Micah 1 - 7"); strcpy(kjvTT[166], "Nahum 1 - 3"); strcpy(kjvTT[167], "Habakkuk 1 - 3"); strcpy(kjvTT[168], "Zephaniah 1 - 3"); strcpy(kjvTT[169], "Haggai 1 - 2"); strcpy(kjvTT[170], "Zechariah 1 - 10"); strcpy(kjvTT[171], "Zechariah 11 - 14"); strcpy(kjvTT[172], "Malachi 1 - 4"); strcpy(kjvTT[173], "Matthew 1 - 6"); strcpy(kjvTT[174], "Matthew 7 - 11"); strcpy(kjvTT[175], "Matthew 12 - 14"); strcpy(kjvTT[176], "Matthew 15 - 19"); strcpy(kjvTT[177], "Matthew 20 - 23"); strcpy(kjvTT[178], "Matthew 24 - 26"); strcpy(kjvTT[179], "Matthew 27 - 28"); strcpy(kjvTT[180], "Mark 1 - 5"); strcpy(kjvTT[181], "Mark 6 - 9"); strcpy(kjvTT[182], "Mark 10 - 13"); strcpy(kjvTT[183], "Mark 14 - 16"); strcpy(kjvTT[184], "Luke 1 - 3"); strcpy(kjvTT[185], "Luke 4 - 6"); strcpy(kjvTT[186], "Luke 7 - 9"); strcpy(kjvTT[187], "Luke 10 - 12"); strcpy(kjvTT[188], "Luke 13 - 17"); strcpy(kjvTT[189], "Luke 18 - 21"); strcpy(kjvTT[190], "Luke 22 - 24"); strcpy(kjvTT[191], "John 1 - 4"); strcpy(kjvTT[192], "John 5 - 7"); strcpy(kjvTT[193], "John 8 - 11"); strcpy(kjvTT[194], "John 12 - 16"); strcpy(kjvTT[195], "John 17 - 21"); strcpy(kjvTT[196], "Acts 1 - 5"); strcpy(kjvTT[197], "Acts 6 - 9"); strcpy(kjvTT[198], "Acts 10 - 13"); strcpy(kjvTT[199], "Acts 14 - 18"); strcpy(kjvTT[200], "Acts 19 - 22"); strcpy(kjvTT[201], "Acts 23 - 27"); strcpy(kjvTT[202], "Acts 28"); strcpy(kjvTT[203], "Romans 1 - 7"); strcpy(kjvTT[204], "Romans 8 - 14"); strcpy(kjvTT[205], "Romans 15 - 16"); strcpy(kjvTT[206], "I Corinthians 1 - 8"); strcpy(kjvTT[207], "I Corinthians 9 - 14"); strcpy(kjvTT[208], "I Corinthians 15 - 16"); strcpy(kjvTT[209], "II Corinthians 1 - 9"); strcpy(kjvTT[210], "II Corinthians 10 - 13"); strcpy(kjvTT[211], "Galatians 1 - 6"); strcpy(kjvTT[212], "Ephesians 1 - 6"); strcpy(kjvTT[213], "Philippians 1 - 4"); strcpy(kjvTT[214], "Colossians 1 - 4"); strcpy(kjvTT[215], "I Thessalonians 1 - 5"); strcpy(kjvTT[216], "II Thessalonians 1 - 3"); strcpy(kjvTT[217], "I Timothy 1 - 6"); strcpy(kjvTT[218], "II Timothy 1 - 4"); strcpy(kjvTT[219], "Titus 1 - 3"); strcpy(kjvTT[220], "Philemon"); strcpy(kjvTT[221], "Hebrews 1 - 9"); strcpy(kjvTT[222], "Hebrews 10 - 13"); strcpy(kjvTT[223], "James 1 - 5"); strcpy(kjvTT[224], "I Peter 1 - 5"); strcpy(kjvTT[225], "II Peter 1 - 3"); strcpy(kjvTT[226], "I John 1 - 5"); strcpy(kjvTT[227], "II John"); strcpy(kjvTT[228], "III John"); strcpy(kjvTT[229], "Jude"); strcpy(kjvTT[230], "Revelation 1 - 8"); strcpy(kjvTT[231], "Revelation 9 - 16"); strcpy(kjvTT[232], "Revelation 17 - 22"); // Set STDOUT to unbuffered setvbuf(stdout, NULL, _IONBF, 0); // Set-up HTML Output cout << "Content-type: text/html\n\n"; // Set allowable Referrer's identifying substring char *pRefAllow = "www.bds-soft.com"; // Verify Referer char *pReferer; pReferer = getenv("HTTP_REFERER"); if (strstr(pReferer, pRefAllow) == NULL) { cout << "ERROR: Unauthorized Referer\n\n"; exit(1); } // Verify the POST Request Method char *pRequestMethod; pRequestMethod = getenv("REQUEST_METHOD"); if (strcmp(pRequestMethod, "POST") != 0) { cout << "ERROR: Request Method != Post\n\n"; exit(1); } // Set variables for Reading from STDIN char *pContentLength; char IBuffer[1024]; int ContentLength; // Value of CONTENT_LENGTH string int i, x; // Verify STDIN pContentLength = getenv("CONTENT_LENGTH"); if (pContentLength == NULL) { cout << "ERROR: STDIN Content == NULL\n\n"; exit(1); } // Convert string to numeric & verify acceptable length ContentLength = atoi(pContentLength); if (ContentLength > (sizeof(IBuffer) - 1)) { cout << "ERROR: STDIN exceeds IBuffer capacity\n\n"; exit(1); } // Read STDIN i = 0; while (i < ContentLength) { x = fgetc(stdin); if (x == EOF) { break; } IBuffer[i++] = x; } // Terminate IBuffer IBuffer[i] = '\0'; ContentLength = i; // Separate the POST var = val pairs char *pToken; // split at "&", left part char *pEqualS; // pointer to equals sign char *pTokenVar; // split at "=", left part char *pTokenVal; // split at "=", right part pToken = strtok(IBuffer, "&"); // Find the initial token tokCount = -1; // Initialize token counter while (pToken != NULL) { tokCount++; // Increment and check counter if (tokCount >= maxTokCnt) { cout << "\n\nERROR: Too many pairs!\n\n"; exit(1); } pEqualS = strchr(pToken, '='); // Find the equals sign *pEqualS++ = '\0'; // Terminate left part pTokenVar = pToken; // Set variable name ReplaceChar(pTokenVar, '+', ' '); ReplaceCHex(pTokenVar); strcpy(varName[tokCount], pTokenVar); pTokenVal = pEqualS; // Set value ReplaceChar(pTokenVal, '+', ' '); ReplaceCHex(pTokenVal); strcpy(valName[tokCount], pTokenVal); pToken = strtok(NULL, "&"); // Find the next token } // Find kjvFNum value strcpy(kjvFNum, "thisisadummy"); for (int i1 = 0; i1 < tokCount + 1; i1++) { if (strcmp(varName[i1], "kjvFNum") == 0) { strcpy(kjvFNum, valName[i1]); break; } } if (strcmp(kjvFNum, "thisisadummy") == 0) { cout << "\n\nERROR: No kjvFNum match!\n\n"; exit(1); } kjvFNX = atol(kjvFNum); // Set the "Previous Page" Number long kjvPNum = kjvFNX - 1; if (kjvPNum < 0) { kjvPNum = 0; } // Set the "Next Page" Number long kjvNNum = kjvFNX + 1; if (kjvNNum > 232) { kjvNNum = 232; } //########## //# // Print Output Page Header file // Note that this file should be HTML and thus // insertion of
's will not be required // Open the file to be displayed as a C-Style file FILE *fpA; char *filenameA = "bdsHead.txt"; fpA = fopen(filenameA, "r"); if (fpA == NULL) { cout << "\n\nCould not open " << filenameA << "\n\n"; exit(1); } // Display loop char nA; for (;;) { nA = fgetc(fpA); if (feof(fpA) != 0) { break; } cout << nA; } // Close the file fclose(fpA); //# //########## //# // Print Output Page Title file // Note that this file should be HTML and thus // insertion of
's will not be required // Open the file to be displayed as a C-Style file FILE *fpB; char *filenameB = "kjvTitle.txt"; fpB = fopen(filenameB, "r"); if (fpB == NULL) { cout << "\n\nCould not open " << filenameB << "\n\n"; exit(1); } // Display loop char nB; for (;;) { nB = fgetc(fpB); if (feof(fpB) != 0) { break; } cout << nB; } // Close the file fclose(fpB); //# //########## //# // Print the File Identification cout << "" << kjvTT[kjvFNX] << "\n\n"; cout << "\n\n"; cout << "\n"; cout << "\n"; cout << "\n\n"; cout << "\n\n"; //# //########## //# // Print KJV File // Note that this file should be text and thus // insertion of
's will be required cout << "
\n\n"; // Open the file to be displayed as a C-Style file FILE *fp; char filename1[128] = "../../kjv/archive/"; strcat(filename1, kjvFN[kjvFNX]); // note that ../../ works with // Saturn's g++ under C-Style while // http://www.bds-soft.com does not. fp = fopen(filename1, "r"); if (fp == NULL) { cout << "\n\nCould not open " << filename1 << "\n\n"; exit(1); } // Display loop char nl; // note this is nl, not n1 (en-el, not en-one) for (;;) { nl = fgetc(fp); if (feof(fp) != 0) { break; } if (nl == '\n') { cout << "
"; } cout << nl; } // Close the file fclose(fp); //# //########## //# // Setup "Previous" and "Next" Buttons //TODO: At some point in the future, add code to // produce links based on // kjvPNum and kjvNNum respectively. cout << "\n
\n\n"; //# //########## //# // Print Output Page Footer file // Note that this file should be HTML and thus // insertion of
's will not be required // Open the file to be displayed as a C-Style file FILE *fpC; char *filenameC = "bdsFoot.txt"; fpC = fopen(filenameC, "r"); if (fpC == NULL) { cout << "\n\nCould not open " << filenameC << "\n\n"; exit(1); } // Display loop char nC; for (;;) { nC = fgetc(fpC); if (feof(fpC) != 0) { break; } cout << nC; } // Close the file fclose(fpC); //# //########## // Flush STDOUT fflush(stdout); // Normal Exit return 0; } /* ########## # # ReplaceChar # MDJ 1999-05-06 # # Loops through a cstring and replaces each instance of # character "cOld" with character "cNew". # # char *pCString = pointer to a cstring # char cOld = old character # char cNew = new character # ########## */ void ReplaceChar(char *pCString, char cOld, char cNew) { int CSLen; CSLen = strlen(pCString); for (int j = 0; j < CSLen; j++) { if (pCString[j] == cOld) { pCString[j] = cNew; } } } /* ########## # # ReplaceCHex # MDJ 1999-05-06 # # Loops through a cstring and replaces each instance of # an escaped hexadecimal byte with its unescaped # character equivalent. # # An escaped hexadecimal byte is of the form %XX # where: X = character 0-9, A-F, or a-f # # For example: # "this%20is%20an%20escaped%20%2F%20character%2E" # # would become: # "this is an escaped / character." # # char *pEncoded = pointer to an encoded cstring # # int k = source pointer # int k1 = target pointer # # Since the decoded string will at all times be equal to # or shorter than the encoded string (i.e. k >= k1 for # all k/k1 pairing) inplace substitutions are valid. # ########## */ void ReplaceCHex(char *pEncoded) { int k1 = 0; int ELen; ELen = strlen(pEncoded); for (int k = 0; k < ELen; k++) { if (k < (ELen - 2)) { if (pEncoded[k] == '%') { if (isxdigit(pEncoded[k+1]) && isxdigit(pEncoded[k+2])) { pEncoded[k1] = (char)cHex2Int(&pEncoded[k+1]); k += 2; // point past escaped hexadecimal byte } else { pEncoded[k1] = pEncoded[k]; } } else { pEncoded[k1] = pEncoded[k]; } } else { pEncoded[k1] = pEncoded[k]; } k1++; } pEncoded[k1] = '\0'; } /* ########## # # cHex2Int # MDJ 1999-05-06 # # char *pChars = pointer to a 2-character string # representing an unsigned # hexadecimal byte. # # int Result = the decimal numeric equivalent. # (= -17 if pChars is not valid) # ########## */ static int cHex2Int(char *pChars) { char Hi, Lo; int Result, IHi, ILo; Hi = pChars[0]; Lo = pChars[1]; // Convert first character if ('0' <= Hi && Hi <= '9') { IHi = Hi - 48; } else if ('A' <= Hi && Hi <= 'F') { IHi = Hi - 55; } else if ('a' <= Hi && Hi <= 'f') { IHi = Hi - 87; } else { IHi = -1; } // Convert second character if ('0' <= Lo && Lo <= '9') { ILo = Lo - 48; } else if ('A' <= Lo && Lo <= 'F') { ILo = Lo - 55; } else if ('a' <= Lo && Lo <= 'f') { ILo = Lo - 87; } else { ILo = -1; } // Form integer equivalent Result = (16 * IHi) + ILo; return (Result); } /* ########## # # end of kjvSelect.cpp # ########## */