home *** CD-ROM | disk | FTP | other *** search
- DECLARE SUB usage ()
- DEFINT A-Z
- DIM lib$(16), decl$(1000), true(1000), written(1000)
- c$ = COMMAND$
- IF c$ = "" THEN usage
- args = 1
- c = 1
- DO
- d = INSTR(c, c$, " ")
- IF d = 0 THEN d = LEN(c$)
- cm$(args) = RTRIM$(UCASE$(MID$(c$, c, d - c + 1)))
- args = args + 1
- c = INSTR(c, c$, " ") + 1
- IF c = 1 THEN EXIT DO
- LOOP
- FOR i = 1 TO args
- l$ = LEFT$(cm$(i) + " ", 2)
- IF RIGHT$(" " + cm$(i), 4) = ".POV" THEN c1$ = cm$(i)
- IF RIGHT$(" " + cm$(i), 4) = ".INC" THEN c2$ = cm$(i)
- NEXT i
- IF c1$ = "" OR c2$ = "" THEN usage
- CLS
- ON ERROR GOTO wrong:
- OPEN c1$ FOR INPUT AS #1
- ON ERROR GOTO 0
- DO
- LINE INPUT #1, l$
- i = INSTR(1, l$, "#include")
- IF i <> 0 THEN
- j = INSTR(i + 9, l$, CHR$(34))
- k = INSTR(j + 1, l$, CHR$(34))
- IF j <> 0 AND k <> 0 THEN
- lb$ = LTRIM$(RTRIM$(UCASE$(MID$(l$, j + 1, k - j - 1))))
- IF (INSTR(1, c2$, lb$) = 0) AND (INSTR(1, c2$, lb$) = 0) THEN
- libs = libs + 1
- lib$(libs) = lb$
- END IF
- END IF
- END IF
- LOOP UNTIL EOF(1)
- CLOSE #1
- FOR k = 1 TO libs
- ON ERROR GOTO wrong:
- OPEN lib$(k) FOR INPUT AS #1
- ON ERROR GOTO 0
- DO
- LINE INPUT #1, l$
- i = INSTR(1, l$, "#declare")
- IF i <> 0 THEN
- decs = decs + 1
- j = INSTR(i + 9, l$, " ")
- IF j = 0 THEN
- decl$(decs) = MID$(l$, i + 9)
- ELSE
- decl$(decs) = MID$(l$, i + 9, j - i - 9)
- END IF
- END IF
- LOOP UNTIL EOF(1)
- CLOSE #1
- NEXT k
- ON ERROR GOTO wrong:
- OPEN c1$ FOR INPUT AS #1
- ON ERROR GOTO 0
- DO
- LINE INPUT #1, l$
- FOR k = 1 TO decs
- i = INSTR(1, l$, decl$(k))
- IF i <> 0 THEN
- j = INSTR(i, l$, " ")
- IF j = 0 THEN
- d$ = MID$(l$, i)
- ELSE
- d$ = MID$(l$, i, j - i)
- END IF
- IF d$ = decl$(k) THEN true(k) = -1
- END IF
- NEXT k
- LOOP UNTIL EOF(1)
- CLOSE #1
- OPEN "culled.inc" FOR OUTPUT AS #1
- FOR k = 1 TO libs
- OPEN lib$(k) FOR INPUT AS #2
- DO
- LINE INPUT #2, l$
- i = INSTR(1, l$, "#declare")
- IF i <> 0 THEN
- j = INSTR(i + 9, l$, " ")
- IF j = 0 THEN
- d$ = MID$(l$, i + 9)
- ELSE
- d$ = MID$(l$, i + 9, j - i - 9)
- END IF
- FOR j = 1 TO decs
- IF true(j) AND d$ = decl$(j) THEN
- written(j) = -1
- PRINT #1, l$
- DO
- LINE INPUT #2, l$
- IF INSTR(1, l$, "#declare") <> 0 THEN EXIT DO
- PRINT #1, l$
- IF l$ = "" THEN EXIT DO
- LOOP
- END IF
- NEXT j
- END IF
- LOOP UNTIL EOF(2)
- CLOSE #2
- NEXT k
- CLOSE #1
- lt = -1
- DO
- OPEN "culled.inc" FOR INPUT AS #1
- lines = 0
- DO
- LINE INPUT #1, l$
- lines = lines + 1
- FOR k = 1 TO decs
- i = INSTR(1, l$, decl$(k))
- IF i <> 0 THEN
- j = INSTR(i, l$, " ")
- IF j = 0 THEN
- d$ = MID$(l$, i)
- ELSE
- d$ = MID$(l$, i, j - i)
- END IF
- IF d$ = decl$(k) THEN true(k) = -1
- END IF
- NEXT k
- LOOP UNTIL EOF(1)
- CLOSE #1
- IF lines = lt THEN EXIT DO
- lt = lines
- OPEN "culled.inc" FOR OUTPUT AS #1
- FOR k = 1 TO libs
- OPEN lib$(k) FOR INPUT AS #2
- DO
- LINE INPUT #2, l$
- i = INSTR(1, l$, "#declare")
- IF i <> 0 THEN
- j = INSTR(i + 9, l$, " ")
- IF j = 0 THEN
- d$ = MID$(l$, i + 9)
- ELSE
- d$ = MID$(l$, i + 9, j - i - 9)
- END IF
- FOR j = 1 TO decs
- IF true(j) AND d$ = decl$(j) THEN
- written(j) = -1
- PRINT #1, l$
- DO
- LINE INPUT #2, l$
- IF INSTR(1, l$, "#declare") <> 0 THEN EXIT DO
- PRINT #1, l$
- IF l$ = "" THEN EXIT DO
- LOOP
- END IF
- NEXT j
- END IF
- LOOP UNTIL EOF(2)
- CLOSE #2
- NEXT k
- CLOSE #1
- LOOP
- CLOSE #1
- END
- wrong:
- PRINT "File error"
- CLOSE #1
- CLOSE #2
- END
-
- DEFSNG A-Z
- SUB usage
- PRINT
- PRINT "CULL:"
- PRINT
- PRINT "Usage: CULL infile.POV outfile.INC"
- PRINT
- END
- END SUB
-
-