[comp.binaries.ibm.pc.d] Program to update SIMIBM.IDX

jcs@uafhp.uark.edu (James Sullins) (08/16/90)

It is almost impossible to keep track of software published
through the net without having a current index file from Simtel.
That index file, however, is HUGE. People have suggested that
it be archived with a better archiver or not include other files
with it in the archive, but I think the solution is to circulate
2 "mod" files - one for additions and one for deletions. These files
would contain all the information necessary to keep an up-to-date
index file. I have been using this method for over 6 months to
drastically reduce the time needed to keep my index file on my PC
up-to-date.

Below is the source to my SIMMOD program that I use to keep
my index up-to-date and the two "mod" files for the latest
changes to the SIMIBM.IDX file.

If you have the next-to-latest index file (SIMIBM.IDX and SIMIBM.ARC
 are dated 900729 in it), then you can "update" to the current
index file by compiling the program and running it with the supplied
data files and your SIMIBM.IDX file.

If there is enough interest, I will keep posting the "mod" files
as often as the SIMIBM.IDX file on Simtel changes and submit the
binary to c.b.i.p.

Just cut-n-snip on the dotted lines below.

---------------
James Sullins  -  jcs@uafhp.uark.edu


---CUT HERE---BEGIN FILE "SIMMOD.C"---
/*
 *
 * SIMMOD.C
 *
 * SIMMOD - a SIMIBM.IDX file updater - Version 1.0 - Release 08-16-90
 *
 * written and Copyright by James Sullins (jcs@uafhp.uark.edu)
 *
 */
#include <stdio.h>

#define VERSION "1.0"
#define VERDATE "08-16-1990"
#define LINELEN 200
#define LINEBUF (LINELEN+1)
#define BUFSIZE 8192
#define BUFMODE _IOFBF
#define rptfil stdout
#define getit(x) fgets(lline[x], LINELEN, infile[x])

int fsop, fop[3], frd[3], i, j;
int otlow, tlow, elow, low, high, out;
int csam, cadd, cdel, cmov, carr, cdrr;
char tline[3][LINEBUF], lline[3][LINEBUF];
FILE *infile[3], *outfile;

main(argc, argv)
int argc;
char *argv[];

{
	register char *p, *pp;

	csam = 0;
	cadd = 0;
	cdel = 0;
	cmov = 0;
	carr = 0;
	cdrr = 0;

	if (argc != 5) {
		fprintf(rptfil,"\n\nSIMMOD - a SIMIBM.IDX file updater - ");
		fprintf(rptfil,"Version %s Release %s\n",VERSION,VERDATE);
		fprintf(rptfil," written and Copyright by James Sullins ");
		fprintf(rptfil,"\n\nUsage: simmod addfile delfile old_index");
		fprintf(rptfil," new_index\n");
		fprintf(rptfil,"\nwhere addfile is the additions file\n");
		fprintf(rptfil,"      delfile is the deletions file\n");
		fprintf(rptfil,"      old_index is the index to update\n");
		fprintf(rptfil,"  and new_index is the index to create.\n\n");
		exit(6);
	}

	for (i=0; i<3; i++) {
		if ((infile[i] = fopen(argv[i+1],"rt")) == NULL) {
			fprintf(rptfil,"\nError: Cannot open file <");
			fprintf(rptfil,"%s> for input.\n\n",argv[i+1]);
                        for (j=i; j; fclose(infile[j])) j--;
			exit(i+1);
		}
		if (setvbuf(infile[i], NULL, BUFMODE, BUFSIZE) != 0) {
			fprintf(rptfil,"\nError: Cannot allocate memory.\n\n");
			for (j=i; j >= 0; j--) fclose(infile[j]);
			exit(5);
		}
		fop[i] = 1;
		frd[i] = 1;
	}

	if ( !(access(argv[4], 0)) ) {
		fprintf(rptfil,"\nError: Output file <");
		fprintf(rptfil,"%s> already exists.\n\n", argv[4]);
		for (j=0; j<3; j++) fclose(infile[j]);
		exit(4);
	}

	if ((outfile = fopen(argv[4],"wt")) == NULL) {
		fprintf(rptfil,"\nError: Cannot open file <");
		fprintf(rptfil,"%s> for output.\n\n",argv[4]);
		for (j=0; j<3; j++) fclose(infile[j]);
		exit(4);
	}

	if (setvbuf(outfile, NULL, BUFMODE, BUFSIZE) != 0) {
		fprintf(rptfil,"\nError: Cannot allocate memory.\n\n");
		for (j=0; j<3; j++) fclose(infile[j]);
		exit(5);
	}

	fsop = 3;
	tlow = 1;
	otlow = 1;

	while (fsop)  {

		for (i=0; i<3; i++) {
			if (frd[i]) {
				if (getit(i) == NULL) fend();
				else {
					for (p=lline[i], pp=tline[i], j=0;
					     j<3;p++,pp++) {
						switch (*p) {
						case '"': 
							*pp = ' ';
							break;
						case '<': 
							*pp = ' ';
							break;
						case '>': 
							*pp = ' ';
							break;
						case '.': 
							*pp = ' ';
							break;
						case ':': 
							*pp = ' ';
							break;
						case ',': 
							*pp = ' ';
							j++;
							break;
						default: 
							*pp = *p;
						}
					}
					*pp = '\0';
				}
			}
		}

		if (!fsop) break;

		if (tlow) {
			low = 0;
			elow = 2;
			tlow = 0;
			for (p=tline[0], pp=tline[1]; *p; p++, pp++) {
				if (*p != *pp) {
					if (*p > *pp) low = 1; 
					else low = 0;
					elow = low;
					break;
				}
			}
		}

		high = 1;
		for (p=tline[2], pp=tline[low]; *p; p++, pp++) {
			if (*p != *pp) {
				if (*p > *pp) high=2; 
				else high=0;
				break;
			}
		}

		switch (high) {
		case 0: 
			out = 2;
			frd[0] = 0;
			frd[1] = 0;
			frd[2] = 1;
			csam++;
			break;
		case 1: 
			switch (elow) {
			case 2: 
				out = 0;
				frd[0] = 1;
				frd[1] = 1;
				frd[2] = 1;
				cmov++;
				break;
			case 1: 
				out = 4;
				frd[0] = 0;
				frd[1] = 1;
				frd[2] = 1;
				cdel++;
				break;
			case 0: 
				out = 0;
				frd[0] = 1;
				frd[1] = 0;
				frd[2] = 1;
				carr++;
				break;
			}
			tlow = otlow;
			break;
		case 2: 
			switch (elow) {
			case 2: 
				out = 0;
				frd[0] = 1;
				frd[1] = 1;
				frd[2] = 0;
				cdrr++;
				break;
			case 1: 
				out = 4;
				frd[0] = 0;
				frd[1] = 1;
				frd[2] = 0;
				cdrr++;
				break;
			case 0: 
				out = 0;
				frd[0] = 1;
				frd[1] = 0;
				frd[2] = 0;
				cadd++;
				break;
			}
			tlow = otlow;
			break;
		}


		if (out<4) putit(out);

	}

	fclose(outfile);

	fprintf(rptfil, "\n\nUnchanged: %6d    Changed: %6d", csam, cmov);
	fprintf(rptfil, "\n    Added: %6d    Deleted: %6d\n\n", cadd, cdel);

	if (carr || cdrr) {
		fprintf(rptfil, "Errors:\n-------");
		fprintf(rptfil, "\n   w/ add: %6d     w/ del: %6d\n\n",
			 carr, cdrr);
	}

	if (carr && cdrr) exit(9);
	if (carr) exit(7);
	if (cdrr) exit(8);
	exit(0);

}

int fend() {
	switch (i) {
	case 2: 
		fclose(infile[2]);
		fop[2] = 0;
		if (fop[1]) {
			if (frd[1]) cdrr++;
			while (getit(1) != NULL) cdrr++;
			fclose(infile[1]);
			fop[1] = 0;
		}
		if (fop[0]) {
			if (frd[0]) {
				putit(0);
				cadd++;
			}
			while (getit(0) != NULL) {
				putit(0);
				cadd++;
			}
			fclose(infile[0]);
			fop[0] = 0;
		}
		i = 4;
		fsop = 0;
		break;
	case 0: 
		fclose(infile[0]);
		fop[0] = 0;
		if (fsop == 3) {
			low = 1;
			elow = 1;
			tlow = 0;
			otlow = 0;
			fop[0] = 0;
			fsop--;
		} else {
			if (!frd[2]) {
				putit(2);
				csam++;
			}
			while (getit(2) != NULL) {
				putit(2);
				csam++;
			}
			fclose(infile[2]);
			fop[2] = 0;
			i = 4;
			fsop = 0;
		}
		break;
	case 1: 
		fclose(infile[1]);
		fop[1] = 0;
		if (fsop == 3) {
			low = 0;
			elow = 0;
			tlow = 0;
			otlow = 0;
			fop[1] = 0;
			fsop--;
		} else {
			if (!frd[2]) {
				putit(2);
				csam++;
			}
			while (getit(2) != NULL) {
				csam++;
				putit(2);
			}
			fclose(infile[2]);
			fop[2] = 0;
			i = 4;
			fsop = 0;
		}
		break;
	}
}

int putit(x)
int x;
{
	if (fputs(lline[x], outfile) == EOF) {
		fprintf(rptfil,"\n\nERROR WRITING TO OUTPUT FILE!\n\n");
		for (i=0; i<3; i++) if (fop[i]) fclose(infile[i]);
		fclose(outfile);
		exit(10);
        }
}

/* simmod.c - written and Copyright by James Sullins */
---CUT HERE---END FILE "SIMMOD.C"---
---CUT HERE---BEGIN FILE "ADDFIL"---
"PD1:","<MSDOS.ARC-LBR>","FV131.ZIP",1,8511,8,900811,"View dirs of ARC/DWC/LBR/LZH/PAK/ZIP/ZOO/SFXs"
"PD1:","<MSDOS.CATALOG>","WSSI503A.ZIP",1,132442,8,900814,"Disk indexer, ARC/ARK/PAK/PKA/LBR/ZIP/ZOO 1of3"
"PD1:","<MSDOS.CATALOG>","WSSI503B.ZIP",1,170882,8,900814,"Disk indexer, ARC/ARK/PAK/PKA/LBR/ZIP/ZOO 2of3"
"PD1:","<MSDOS.CATALOG>","WSSI503C.ZIP",1,38688,8,900814,"Disk indexer, ARC/ARK/PAK/PKA/LBR/ZIP/ZOO 3of3"
"PD1:","<MSDOS.DESQVIEW>","TAME240.ZIP",1,50823,8,900808,"Speed up pgm execution in DesqView/VM386/other"
"PD1:","<MSDOS.DIRUTL>","FFIND13E.ZIP",1,8237,8,900813,"Fast file finder. Ideal for large HD/LANs"
"PD1:","<MSDOS.DIRUTL>","PDEL41.ZIP",1,59467,8,900812,"File delete utility, extra features over DOS"
"PD1:","<MSDOS.DSKUTL>","PCOPY85D.ZIP",1,85300,8,900812,"Patriquin COPY, file copier with many options"
"PD1:","<MSDOS.EMULATORS>","APL2EM.ZIP",1,216652,8,900808,"Apple ][ emulator for 286+, w/ASM source code"
"PD1:","<MSDOS.FILEDOCS>","ASP3201.ZIP",1,82275,8,900812,"Assn. Shareware Professionals product catalog"
"PD1:","<MSDOS.FILEDOCS>","SIM9007.IDX",1,12721,7,900804,"Comma-delimited list of July 1990 uploads"
"PD1:","<MSDOS.FILEDOCS>","SIMDIF.FOR",2,20583,7,900808,"Make SIMTEL20 additions/changes/deletions rept"
"PD1:","<MSDOS.FILEDOCS>","SIMIBM.ARC",17,266750,8,900804,"SIMTEL20 MSDOS files listing with descriptions"
"PD1:","<MSDOS.FILEDOCS>","SIMIBM.IDX",17,468437,7,900804,"SIMTEL20 MSDOS files listing with descriptions"
"PD1:","<MSDOS.FILEDOCS>","UPLOADS.JUL",1,12212,7,900804,"List of uploads to SIMTEL20 for July 1990"
"PD1:","<MSDOS.FILUTL>","TAR-Z.ARC",3,129897,8,900813,"Unix-compatible tar and compress/uncompress"
"PD1:","<MSDOS.GIF>","SQZGIF13.ZIP",1,69489,8,900807,"Reduce large GIF files to 320x200 for printing"
"PD1:","<MSDOS.GRAPHICS>","FRAIN14R.ZIP",1,279728,8,900814,"FRACTINT v14 multi-featured fractal generator"
"PD1:","<MSDOS.GRAPHICS>","FRASRC14.ZIP",1,376545,8,900814,"C & ASM src for FRACTINT v14 fractal generator"
"PD1:","<MSDOS.GRAPHICS>","GRAFWK41.ZIP",1,233491,8,900808,"View/cvt/print MAC/IMG/GIF/TIFF/EPS graphics"
"PD1:","<MSDOS.INFO>","INFOP125.ZIP",1,82836,8,900812,"16+ pages of system info, w/TP & MASM source"
"PD1:","<MSDOS.INFO>","INTER490.ZIP",1,246955,8,900805,"Comprehensive listing of IBMPC interrupt calls"
"PD1:","<MSDOS.INFO>","LIMEMS41.ZIP",1,80010,8,900805,"Updated LIM EMS 4.0 documentation"
"PD1:","<MSDOS.LASER>","WORD54LJ.ZIP",1,49367,8,900804,"Use HP LJ-compatible soft fonts w/MS Word 5.0"
"PD1:","<MSDOS.MSWINDOWS>","WNQVT436.ZIP",1,127936,8,900811,"Windows VT220 emulator with X/Y/Zmodem/Kermit"
"PD1:","<MSDOS.PACKET>","TAPR_116.ARC",1,20970,8,900113,"TAPR TNC-2 firmware, version 1.1.6 with docs"
"PD1:","<MSDOS.PACKET>","TNC_PK80.ARC",1,19991,8,900113,"How: Add KISS to AEA PK80 retaining AX.25 f/w"
"PD1:","<MSDOS.SPREADSHEET>","AEA400Q.ZIP",1,207463,8,900808,"AsEasyAs v4.00Q, Lotus 123 spreadsheet clone"
"PD1:","<MSDOS.SYSUTL>","BF147.ZIP",1,352272,8,900808,"Back & Forth: Switch between tasks (up to 20)"
"PD1:","<MSDOS.SYSUTL>","IDCUTILS.ZIP",1,77141,8,900808,"Gary Conway's assorted utilities, 07/16/90"
"PD1:","<MSDOS.SYSUTL>","MS_SH162.ZIP",1,101317,8,900804,"ms_sh v1.62, Unix Bourne-like shell for MS-DOS"
"PD1:","<MSDOS.SYSUTL>","TSRWRK32.ZIP",1,79415,8,900809,"Mark/Release TSR management pgms, with ASM src"
"PD1:","<MSDOS.SYSUTL>","UXUTL162.ZIP",1,377591,8,900804,"Unix-like utilities for use with MS_SH shell"
"PD1:","<MSDOS.TROJAN-PRO>","CLEANP66.ZIP",2,52419,8,900812,"Universal virus disinfector, heals/removes"
"PD1:","<MSDOS.TROJAN-PRO>","FPROT112.ZIP",1,221976,8,900805,"Virus detection/removal/prevention/information"
"PD1:","<MSDOS.TROJAN-PRO>","NETSCN66.ZIP",1,37262,8,900811,"Network compatible - scan for 133 viruses, v66"
"PD1:","<MSDOS.TROJAN-PRO>","SCANV66B.ZIP",1,52224,8,900814,"VirusScan, scans disk files for 134 viruses"
"PD1:","<MSDOS.TROJAN-PRO>","VCOPY66.ZIP",1,32502,8,900811,"Copy utility checks for viruses as it copies"
"PD1:","<MSDOS.TROJAN-PRO>","VSHLD66.ZIP",1,41476,8,900811,"Resident virus infection prevention program"
"PD1:","<MSDOS.TROJAN-PRO>","VSUM9008.ZIP",1,83352,8,900811,"Pat Hoffman's virus info summary list, 900810"
"PD1:","<MSDOS.TROJAN-PRO>","VTAC46.ZIP",1,23487,8,900811,"Protects disk against alteration or formatting"
"PD1:","<MSDOS.TURBOPAS>","NKTOOLS.ZIP",1,38462,8,900811,"TP4-5.5 ErrMsg unit, I/O log, DOS 4to5 (w/src)"
"PD1:","<MSDOS.TURBOPAS>","TSPAS22.ZIP",1,110332,8,900808,"TPas4.0/5.0/5.5 units for programmers, T.Salmi"
"PD1:","<MSDOS.TXTUTL>","CRLF.ZIP",1,13725,8,900805,"Forces text lines to end with return+linefeed"
"PD1:","<MSDOS.TXTUTL>","LIST74A.ZIP",1,89987,8,900811,"V. Buerg's classic ascii/binary file viewer"
"PD1:","<MSDOS.TXTUTL>","READYREF.ZIP",1,103711,8,900809,"Pop-up configurable reference utility"
"PD1:","<MSDOS.TXTUTL>","TOADEBC.ZIP",1,8054,8,900813,"Collection of ASCII <> EBCDIC conversion utils"
"PD1:","<MSDOS.ZOO>","LOOZ212.ZIP",1,14434,8,900812,"List, extract, and execute from a ZOO archive"
"PD2:","<MSDOS2.MODEM>","WHTPRT37.ZIP",1,10451,8,900810,"Displays system serial ports & IRQ assignments"
"PD2:","<MSDOS2.PCMAG>","VOL9N15.ZIP",1,32587,8,900812,"PcMag: ALTP,CONCEAL,EXECUTE,MEDIAN,ONPATH"
---CUT HERE---END FILE "ADDFIL"---
---CUT HERE---BEGIN FILE "DELFIL"---
"PD1:","<MSDOS.ARC-LBR>","FV130.ZIP",1,8096,8,900728,"View dirs of ARC/DWC/LBR/LZH/PAK/ZIP/ZOO/SFXs"
"PD1:","<MSDOS.BBSLISTS>","USBBS74.ZIP",1,48038,8,900704,"Darwin's nationwide IBM BBS listing: 07/01/90"
"PD1:","<MSDOS.CATALOG>","WSSI501A.ZIP",1,132127,8,900707,"Disk indexer, ARC/ARK/PAK/PKA/LBR/ZIP/ZOO 1of3"
"PD1:","<MSDOS.CATALOG>","WSSI501B.ZIP",1,169894,8,900707,"Disk indexer, ARC/ARK/PAK/PKA/LBR/ZIP/ZOO 2of3"
"PD1:","<MSDOS.CATALOG>","WSSI501C.ZIP",1,38007,8,900707,"Disk indexer, ARC/ARK/PAK/PKA/LBR/ZIP/ZOO 3of3"
"PD1:","<MSDOS.DESQVIEW>","TAME230.ZIP",1,49566,8,900518,"Speed up pgm execution in DesqView/VM386/other"
"PD1:","<MSDOS.DIRUTL>","PDEL33C.ARC",1,54688,8,890813,"File delete utility, extra features over DOS"
"PD1:","<MSDOS.DSKUTL>","PCOPY85C.ZIP",1,89012,8,900704,"Patriquin COPY, file copier with many options"
"PD1:","<MSDOS.FILEDOCS>","ASP2001.ARC",1,30682,8,890826,"Assn. Shareware Professionals product catalog"
"PD1:","<MSDOS.FILEDOCS>","SIMDIF.FOR",1,20187,7,900425,"Make SIMTEL20 additions/changes/deletions rept"
"PD1:","<MSDOS.FILEDOCS>","SIMIBM.ARC",16,266001,8,900729,"SIMTEL20 MSDOS files listing with descriptions"
"PD1:","<MSDOS.FILEDOCS>","SIMIBM.IDX",16,467420,7,900729,"SIMTEL20 MSDOS files listing with descriptions"
"PD1:","<MSDOS.FILUTL>","XXENCDEC.ARC",1,30096,8,900303,"XXencode/XXdecode binary files to/from ASCII"
"PD1:","<MSDOS.GIF>","SQZGIF11.ARC",1,77325,8,890207,"Reduce large GIF files to 320x200 for printing"
"PD1:","<MSDOS.GRAPHICS>","FRAIN13R.ZIP",1,231682,8,900529,"Fast fractal generator - SuperVGA, 3D, 32 bits"
"PD1:","<MSDOS.GRAPHICS>","FRASRC13.ZIP",1,322190,8,900522,"Source code for FRACTINT version 13.0"
"PD1:","<MSDOS.GRAPHICS>","GRAFWK31.ZIP",1,215636,8,900621,"View/cvt/print MAC/IMG/GIF/TIFF/EPS graphics"
"PD1:","<MSDOS.INFO>","INTER390.ZIP",1,233751,8,900715,"Comprehensive listing of IBMPC interrupt calls"
"PD1:","<MSDOS.INFO>","SYSID50.ZIP",1,65311,8,900329,"16+ pages of system info, w/TP & MASM source"
"PD1:","<MSDOS.MSWINDOWS>","WNQVT430.ZIP",1,126970,8,900728,"Windows VT220 emulator with X/Y/Zmodem/Kermit"
"PD1:","<MSDOS.PACKET>","TAPR_116.ARC",1,20970,8,900113,"No description available"
"PD1:","<MSDOS.PACKET>","TNC_PK80.ARC",1,19991,8,900113,"No description available"
"PD1:","<MSDOS.SPREADSHEET>","AEA400P.ZIP",1,206872,8,900715,"AsEasyAs v4.00P, Lotus 123 spreadsheet clone"
"PD1:","<MSDOS.SYSUTL>","BF138.ZIP",1,344648,8,900728,"Back & Forth: Switch between tasks (up to 20)"
"PD1:","<MSDOS.SYSUTL>","IDCUTILS.ARC",1,83402,8,891113,"Gary Conway's assorted utilities from IDC BBS"
"PD1:","<MSDOS.SYSUTL>","LIMEMS41.ARC",1,135522,8,871119,"Updated LIM EMS 4.0 documentation"
"PD1:","<MSDOS.SYSUTL>","MS_SH15.ZIP",1,82404,8,900328,"ms_sh v1.5, Unix Bourne-like shell for MS-DOS"
"PD1:","<MSDOS.SYSUTL>","TSRWORK3.ARC",1,103608,8,890716,"TSR management programs w/ASM source"
"PD1:","<MSDOS.TROJAN-PRO>","CLEANP64.ZIP",1,53595,8,900704,"Universal virus disinfector, heals/removes"
"PD1:","<MSDOS.TROJAN-PRO>","FPROT111.ZIP",1,219667,8,900628,"Virus detection/removal/prevention/information"
"PD1:","<MSDOS.TROJAN-PRO>","NETSCN64.ZIP",1,38061,8,900704,"Network compatible - scan for 111 viruses, v64"
"PD1:","<MSDOS.TROJAN-PRO>","SCANV64.ZIP",1,51363,8,900704,"VirusScan, scans disk files for 111 viruses"
"PD1:","<MSDOS.TROJAN-PRO>","VCOPY64.ZIP",1,30688,8,900704,"Copy utility checks for viruses as it copies"
"PD1:","<MSDOS.TROJAN-PRO>","VSHLD64.ZIP",1,44873,8,900704,"Resident virus infection prevention program"
"PD1:","<MSDOS.TROJAN-PRO>","VSUM9007.ZIP",1,65080,8,900725,"Pat Hoffman's virus info summary list, 900715"
"PD1:","<MSDOS.TROJAN-PRO>","VTAC42.ZIP",1,21968,8,900519,"Protects disk against alteration or formatting"
"PD1:","<MSDOS.TURBO-C>","XXDECODE.C",1,7498,7,890303,"UUdecode using different character set (TC2.0)"
"PD1:","<MSDOS.TURBO-C>","XXENCODE.C",1,5944,7,890303,"UUencode using different character set (TC2.0)"
"PD1:","<MSDOS.TURBOPAS>","TSPAS21.ZIP",1,103311,8,900803,"TPas4.0/5.0/5.5 units for programmers, T.Salmi"
"PD1:","<MSDOS.TXTUTL>","LIST73D.ARC",1,82072,8,900208,"V. Buerg's classic ascii/binary file viewer"
"PD1:","<MSDOS.ZOO>","LOOZ210.ARC",1,13856,8,870820,"Rahul Dhesi's ZOO archive extracter/lister"
"PD2:","<MSDOS2.MODEM>","WHATPORT.ZIP",1,9044,8,900503,"Displays system serial ports & IRQ assignments"
"PD2:","<MSDOS2.OPUS>","NODELIST.ARC",1,174080,8,880906,"No description available"
---CUT HERE---END FILE "DELFIL"---

rreiner@yunexus.YorkU.CA (Richard Reiner) (08/16/90)

I agree that distributing deltas for the SIMIBM.IDX file is a good idea;
however, let's stick to the standard tools: diff and patch.  There's
no good reason to invent and install a new mechanism for a task which
is already handled very well by existing tools.

--richard

jcs@uafhp.uark.edu (James Sullins) (08/18/90)

In article <13925@yunexus.YorkU.CA>, rreiner@yunexus.YorkU.CA (Richard Reiner) writes:
> 
> I agree that distributing deltas for the SIMIBM.IDX file is a good idea;
> however, let's stick to the standard tools: diff and patch.  There's
> no good reason to invent and install a new mechanism for a task which
> is already handled very well by existing tools.
> 
> --richard


I feel there are two very good reasons for using my method instead
of diff/patch for updating the SIMIBM.IDX file:

	1) SPEED.

           The SIMMOD program is approx. 2 times faster than PATCH.
           The IDXMOD program is approx. 3 times faster than DIFF.
           These factors make a considerable difference on my PC.

        2) FILE FORMAT.

	   The files (additions/deletions) used by my programs
	   maintain the same format as the SIMIBM.IDX file.

	   This allows you to run the "additions" file through
	   SIMCVT (or similar program) to quickly find out what
           has been added.

           This also makes it possible to easily "merge" several
           "diff" files into one so that you can apply several
           "patches" at once without the need to recreate each
           intermediate index file.

BTW, the IDXMOD program is the program used to create the additions
and deletions files.

-----
James Sullins - jcs@uafhp.uark.edu