home *** CD-ROM | disk | FTP | other *** search
- DECLARE SUB TRIM (TRIM.PARM$)
- DECLARE SUB BRKFNAME (FILENAME$, DRVPATH$, PREFIX$, EXTENSION$, FOR.JOINING%)
- DECLARE SUB TRIMTRAIL (TRIM.PARM$, TRIM.THIS$)
- DECLARE SUB FINDLAST (LOOK.IN$, LOOK.FOR$, WHERE.FOUND%, NUM.FINDS%)
- DEFINT A-Z
- DIM FileSpec$(999)
- DIM FileDir$(255)
- DIM LocationIndex$(999)
- TRUE = -1
- FALSE = 0
- WriteMode$ = "REPLACE"
- NameFile$ = "FIDX.DEF"
- LocationFile$ = "LIDX.DEF"
- DirString$ = "DIRECTORY OF" ' 0216
- SHARING = FALSE
- NumLocations = 0
- NumFileSpecs = 0
- NumFileDirs = 0
- StartCol = 1 ' 0224
- ConfigFile$ = "MAKEFIDX.CFG"
- PassedArguments$ = COMMAND$
- PassedArguments$ = UCASE$(PassedArguments$)
- X = INSTR(PassedArguments$,"/B")
- RunBatch = (X > 0)
- IF RunBatch THEN
- PassedArguments$ = LEFT$(PassedArguments$, X-1) + RIGHT$(PassedArguments$,Len(PassedArguments$)-X-1)
- END IF
- IF PassedArguments$ <> "" THEN
- ConfigFile$ = PassedArguments$
- END IF
-
- ON ERROR GOTO 40000
- IF SHARING THEN
- OPEN ConfigFile$ FOR INPUT SHARED AS #1
- ELSE
- OPEN ConfigFile$ FOR INPUT AS #1
- END IF
- ON ERROR GOTO 0
- WHILE NOT EOF(1)
- LINE INPUT #1, A$
- X$ = LEFT$(A$, 1)
- IF X$ <> "" AND X$ <> "*" THEN
- A$ = UCASE$(A$)
- IF LEFT$(A$,11) = "/WRITEMODE=" THEN
- WriteMode$ = MID$(A$,12)
- CALL TRIM (WriteMode$)
- END IF
- IF LEFT$(A$, 10) = "/NAMEFILE=" THEN
- NameFile$ = MID$(A$, 11)
- CALL TRIM(NameFile$)
- END IF
- IF LEFT$(A$, 14) = "/LOCATIONFILE=" THEN
- LocationFile$ = MID$(A$, 15)
- CALL TRIM(LocationFile$)
- END IF
- IF LEFT$(A$, 10) = "/FILESPEC=" THEN
- X$ = MID$(A$, 11)
- CALL TRIM(X$)
- NumFileSpecs = NumFileSpecs + 1
- FileSpec$(NumFileSpecs) = X$
- END IF
- IF LEFT$(A$, 9) = "/FILEDIR=" THEN
- X$ = MID$(A$, 10)
- CALL TRIM(X$)
- NumFileDirs = NumFileDirs + 1
- FileDir$(NumFileDirs) = X$
- END IF
- IF LEFT$(A$,11) = "/DIRSTRING=" THEN ' 0216
- X$ = MID$(A$,12) ' 0216
- CALL TRIM (X$) ' 0216
- DirString$ = X$ ' 0216
- DirString$ = UCASE$(DirString$) ' 0220
- END IF ' 0216
- END IF
- WEND
- CLOSE 1
-
- Replacing = (LEFT$(WriteMode$, 1) = "R")
-
- PRINT "MAKEFIDX version 1.2 Nov 20, 1990 copyright (c) 1990 by Ken Goosens"
- PRINT "an RBBS utility to make files for fast directory searches"
- PRINT
- PRINT "On this run"
- IF Replacing THEN
- PRINT "Overwriting data files"
- ELSE
- PRINT "Adding to data files"
- END IF
- PRINT "Configuration file used ....... ";ConfigFile$
- PRINT "Name of list of files ......... "; NameFile$
- PRINT "Name of list of locations ..... "; LocationFile$
- PRINT "# of DOS directories to process"; NumFileSpecs
- PRINT "# of file lists to process ...."; NumFileDirs
- PRINT
- IF NOT RunBatch THEN
- INPUT "A to abort, anything else runs"; ANS$
- ANS$ = UCASE$(ANS$)
- IF ANS$ = "A" THEN END
- END IF
-
- 'NumFileSpecs = 2
- 'FileSpec$(1) = "C:\TEMP\"
- 'FileSpec$(2) = "C:\UTILS\"
- IF Replacing THEN
- ON ERROR GOTO 40100
- KILL NameFile$
- KILL LocationFile$
- ON ERROR GOTO 0
- ELSE
- IF SHARING THEN
- OPEN LocationFile$ FOR INPUT SHARED AS #1
- ELSE
- OPEN LocationFile$ FOR INPUT AS #1
- END IF
- PRINT "Loading existing locations..."
- WHILE NOT EOF(1)
- LINE INPUT #1, A$
- CALL TRIM(A$)
- NumLocations = NumLocations + 1
- LocationIndex$(NumLocations) = A$
- WEND
- CLOSE 1
- PRINT STR$(NumLocations); " locations loaded"
- END IF
-
- IF SHARING THEN
- OPEN NameFile$ FOR RANDOM SHARED AS #2 LEN = 18
- OPEN LocationFile$ FOR RANDOM SHARED AS #3 LEN = 66
- ELSE
- OPEN NameFile$ FOR RANDOM AS #2 LEN = 18
- OPEN LocationFile$ FOR RANDOM AS #3 LEN = 66
- END IF
- FIELD 2, 18 AS NameRec$
- FIELD 3, 66 AS LocationRec$
- MID$(NameRec$, 17, 2) = CHR$(13) + CHR$(10)
- MID$(LocationRec$, 64, 3) = "." + CHR$(13) + CHR$(10)
- NumRecsNameFile = LOF(2) / 18
- NumRecsLocationFile = LOF(3) / 66
-
- InFile$ = "IDX.$$$"
- FOR ix = 1 TO NumFileSpecs
- PRINT "Processing filespec "; FileSpec$(ix) ; ' 112090
- ' SHELL "DIR " + FileSpec$(ix) + " > IDX.$$$"
- ' GOSUB ProcessFile
- GOSUB ProcessDir ' 112090
- NEXT
-
- FOR ix = 1 TO NumFileDirs
- InFile$ = FileDir$(ix)
- PRINT "Processing file list "; FileDir$(ix) ; ' 112090
- GOSUB ProcessFile
- NEXT
-
- END
-
- ProcessDir: ' 112090
-
- CALL BRKFNAME (FileSpec$(ix),CurrentDrivePath$,Prefix$,Extension$,TRUE)
- CALL FindFirstF(FileSpec$(ix)+CHR$(0),0,RtnCode)
- IF RtnCode <> 0 THEN
- PRINT
- PRINT " No files found"
- RETURN
- END IF
- GOSUB SetLocIndex
- RecCt = 0
- PrtCol = POS(0) + 1 ' 112090
- WHILE RtnCode = 0
- RecCt = RecCt + 1 ' 112090
- LOCATE ,PrtCol ' 112090
- PRINT RecCt ; ' 112090
- FileName$ = SPACE$(12)
- CALL GetNameF (FileName$,FLen)
- FileName$ = LEFT$(FileName$,FLen)
- GOSUB AddFileName
- CALL FindNextF (RtnCode)
- WEND
-
- PRINT
-
- RETURN
-
- ProcessFile:
-
- ON ERROR GOTO 40200 ' 111990
- IF SHARING THEN
- OPEN InFile$ FOR INPUT SHARED AS #1
- ELSE
- OPEN InFile$ FOR INPUT AS #1
- END IF
- ON ERROR GOTO 0 ' 111990
- RecCt = 0 ' 112090
- PrtCol = POS(0) + 1 ' 112090
- WHILE NOT EOF(1)
- LINE INPUT #1, A$
- RecCt = RecCt + 1 ' 112090
- LOCATE ,PrtCol ' 112090
- PRINT RecCt ; ' 112090
- X$ = UCASE$(A$)
- X = INSTR(X$, DirString$) ' 0216
- IF X > 0 THEN ' 0224
- IF LEFT$(X$,X-1) = SPACE$(X-1) THEN ' 0224
- DrivePath$ = MID$(A$, X + LEN(DirString$)) ' 0216
- CALL TRIM(DrivePath$)
- IF LEFT$(DrivePath$,3) <> "M! " THEN ' 0217
- IF INSTR(DrivePath$,"*") > 0 OR INSTR(DrivePath$,"?") > 0 THEN ' 0216
- CALL BRKFNAME (DrivePath$,RtnDrivePath$,RtnPrefix$,RtnExt$,TRUE) ' 0216
- DrivePath$ = RtnDrivePath$ ' 0216
- END IF
- IF INSTR(DrivePath$, "\") > 0 THEN
- IF RIGHT$(DrivePath$, 1) <> "\" THEN
- DrivePath$ = DrivePath$ + "\"
- END IF
- END IF
- END IF ' 0217
- CurrentDrivePath$ = DrivePath$
- GOSUB SetLocIndex
- GOTO DoneEntry
- END IF ' 0224
- END IF
- IF INSTR(" .", LEFT$(A$, 1)) > 0 THEN
- GOTO DoneEntry
- END IF
- IF LEN(A$) < StartCol THEN ' 0224
- GOTO DoneEntry ' 0224
- END IF ' 0224
- IF StartCol > 1 THEN ' 0224
- A$ = MID$(A$,StartCol) ' 0224
- END IF ' 0224
- X = INSTR(A$, " ")
- IF X = 0 THEN ' 0217
- X = LEN(A$) + 1 ' 0217
- ELSE
- IF X < 13 THEN
- FileName$ = LEFT$(A$, 12)
- IF INSTR(FileName$, ".") = 0 AND MID$(FileName$, 9, 1) = " " AND MID$(FileName$, 10, 1) <> " " THEN
- MID$(FileName$, X) = "." + MID$(FileName$, 10) + SPACE$(9 - X)
- ELSE
- FileName$ = LEFT$(A$, X - 1)
- END IF
- GOSUB AddFileName
- GOTO DoneEntry
- END IF
- END IF ' 0217
- FileName$ = LEFT$(A$, X - 1)
- CALL BRKFNAME (FileName$,RtnDrivePath$,RtnPrefix$,RtnExt$,TRUE) ' 0217
- IF RtnDrivePath$ <> "" THEN ' 0217
- DrivePath$ = RtnDrivePath$ ' 0217
- FileName$ = RtnPrefix$ + RtnExt$ ' 0217
- END IF ' 0217
- GOSUB AddFileName
- DoneEntry:
- WEND
- QuitEntry: ' 111990
- ON ERROR GOTO 0 ' 111990
- CLOSE 1
- PRINT ' 111990
- RETURN
-
- SetPathName:
-
- CALL BRKFNAME(FileName$, FileDrivePath$, FilePrefix$, FileExt$, TRUE)
- IF FileDrivePath$ <> "" THEN
- CurrentDrivePath$ = FileDrivePath$
- GOSUB SetLocIndex
- FileName$ = FilePrefix$ + FileExt$
- ELSE
- CurrentDrivePath$ = DrivePath$
- END IF
-
- RETURN
-
- AddFileName:
-
- GOSUB SetPathName
- MID$(NameRec$, 1, 16) = SPACE$(16)
- MID$(NameRec$, 1, 12) = FileName$
- X$ = MID$(STR$(Location), 2)
- X$ = SPACE$(4 - LEN(X$)) + X$
- MID$(NameRec$, 13, 4) = X$
- NumRecsNameFile = NumRecsNameFile + 1
- PUT 2, NumRecsNameFile
-
- RETURN
-
- SetLocIndex:
-
- IF CurrentDrivePath$ = LocationIndex$(Location) THEN RETURN
- LocationIndex$(NumRecsLocationFile + 1) = CurrentDrivePath$
- Location = 1
- WHILE CurrentDrivePath$ <> LocationIndex$(Location)
- Location = Location + 1
- WEND
- IF Location > NumRecsLocationFile THEN
- NumRecsLocationFile = Location
- MID$(LocationRec$, 1, 63) = SPACE$(63)
- MID$(LocationRec$, 1, 63) = CurrentDrivePath$
- PUT 3, NumRecsLocationFile
- END IF
-
- RETURN
-
- 40000 PRINT "Missing configuration file "; ConfigFile$
- END
-
- 40100 RESUME NEXT
- 40200 PRINT:PRINT " ";InFile$;" not found. Skipping"; ' 111990
- RESUME QuitEntry ' 111990
-
- SUB BRKFNAME (FileName$, DRVPATH$, PREFIX$, EXTENSION$, FOR.JOINING) STATIC
- FileName$ = UCASE$(FileName$)
- DRVPATH$ = ""
- PREFIX$ = ""
- EXTENSION$ = ""
- CALL TRIMTRAIL(FileName$, "\")
- L = LEN(FileName$)
- IF L < 1 THEN EXIT SUB
- CALL FINDLAST(FileName$, "\", X, Y)
- IF X < 1 THEN
- IF MID$(FileName$, 2, 1) = ":" THEN
- DRVPATH$ = LEFT$(FileName$, 1)
- S = 3
- ELSE
- S = 1
- END IF
- ELSE
- DRVPATH$ = LEFT$(FileName$, X - 1)
- S = X + 1
- IF Y = 1 THEN
- DRVPATH$ = DRVPATH$ + "\"
- END IF
- END IF
- X = INSTR(FileName$ + ".", ".")
- IF X < L THEN
- EXTENSION$ = MID$(FileName$, X + 1, 3)
- END IF
- IF S <= L THEN
- IF X >= S THEN
- PREFIX$ = MID$(FileName$, S, X - S)
- END IF
- END IF
- IF NOT FOR.JOINING THEN EXIT SUB
- IF LEN(DRVPATH$) = 1 THEN
- IF DRVPATH$ <> "\" THEN
- DRVPATH$ = DRVPATH$ + ":"
- END IF
- END IF
- IF INSTR(DRVPATH$, "\") > 0 AND RIGHT$(DRVPATH$, 1) <> "\" THEN DRVPATH$ = DRVPATH$ + "\"
- IF LEN(EXTENSION$) > 0 THEN EXTENSION$ = "." + EXTENSION$
- END SUB
-
- SUB FINDLAST (LOOK.IN$, LOOK.FOR$, WHERE.FOUND, NUM.FINDS) STATIC
- WHERE.FOUND = INSTR(LOOK.IN$, LOOK.FOR$)
- NUM.FINDS = -(WHERE.FOUND > 0)
- NEXT.FOUND = INSTR(WHERE.FOUND + 1, LOOK.IN$, LOOK.FOR$)
- WHILE NEXT.FOUND > 0
- NUM.FINDS = NUM.FINDS + 1
- WHERE.FOUND = NEXT.FOUND
- NEXT.FOUND = INSTR(WHERE.FOUND + 1, LOOK.IN$, LOOK.FOR$)
- WEND
- END SUB
-
- SUB TRIM (TRIM.PARM$) STATIC
- L = INSTR(TRIM.PARM$, " ")
- IF L < 1 THEN EXIT SUB
- IF L = 1 THEN
- WHILE LEFT$(TRIM.PARM$, 1) = " "
- TRIM.PARM$ = RIGHT$(TRIM.PARM$, LEN(TRIM.PARM$) - 1)
- WEND
- END IF
- CALL TRIMTRAIL(TRIM.PARM$, " ")
- END SUB
-
- SUB TRIMTRAIL (TRIM.PARM$, TRIM.THIS$) STATIC
- IF RIGHT$(TRIM.PARM$, 1) <> TRIM.THIS$ THEN EXIT SUB
- J = LEN(TRIM.PARM$) - 1
- 108 IF J > 0 THEN
- IF MID$(TRIM.PARM$, J, 1) = TRIM.THIS$ THEN
- J = J - 1
- GOTO 108
- END IF
- END IF
- TRIM.PARM$ = LEFT$(TRIM.PARM$, J)
- END SUB
-