'===========================================================================
' Subject: PATH CHECK                         Date: 03-10-96 (01:47)       
'  Author: Jim Emptage                        Code: QB, QBasic, PDS        
'  Origin: 75504.2526@compuserve.com        Packet: DOS.ABC
'===========================================================================
'PATHCHK BY ROUGE VALLEY SOFTWARE 1996 75504.2526@COMPUSERVE.COM
'
'* Place program anywhere on the C: drive
'* It will show your path, and check that all directories exist
'* If some directories are no longer valid you will be asked if you
'* wish the PATH line in your autoexec.bat file changed to remove them
'* A back up of your original autoexec.bat file is [made autoexec.rvs]
'* Shareware, all rights reserved
'* Please ask permission if distributed in any package that is for sale.
'
'Jim Emptage, Rouge Valley Software
CLS
COLOR 7, 4
PRINT " ROUGE VALLEY SOFTWARE PATH CHECK (1996)   75504.2526@COMPUSERVE.COM            "
COLOR 7, 0
OPEN "rvsdrive.dat" FOR OUTPUT AS #2
CLOSE #2
SHELL "cd>rvsdrive.dat"
OPEN "rvsdrive.dat" FOR INPUT AS #2
DO UNTIL EOF(2)
  INPUT #2, CURDRIVE$
LOOP
CLOSE #2
PRINT "EXAMINE PATH STATEMENT : Changing to the root drive \"
PRINT "                       : Return to : "; CURDRIVE$; " when done."
CHDIR "\"
COLOR 7, 1
PRINT " MAKING DOS VERIFIED BACKUP OF AUTOEXEC.BAT > AUTOEXEC.RVS                      "
COLOR 7, 0
SHELL "COPY AUTOEXEC.BAT C:\AUTOEXEC.RVS/V/Y"
OPEN "rvstemp.dat" FOR OUTPUT AS #1
CLOSE #1
OPEN "rvstemp.dat" FOR APPEND AS #1
OPEN "autoexec.bat" FOR INPUT AS #2
cnt = 0
DO UNTIL EOF(2)
  LINE INPUT #2, x$
  cnt = cnt + 1
  IF UCASE$(MID$(x$, 1, 4)) = "PATH" THEN
    EXIT DO
  END IF
LOOP
CLOSE #2
COLOR 7, 4
PRINT " CURRENT PATH: ";
COLOR 7, 0
PRINT RTRIM$(x$)
PRINT "Line in AUTOEXEC.BAT: "; cnt;
PL = LEN(x$)
PRINT " PATH length: "; PL
PRINT "[ Note PATH line can only have 127 characters ]"
COLOR 7, 1
PRINT " COUNTING DIRECTORIES IN PATH:                                                  "
COLOR 7, 0
x$ = UCASE$(x$)
pcnt = 0
FIRST = INSTR(x$, "C:\")
FOR M = FIRST TO PL
  P$ = MID$(x$, M, 1)
  IF P$ <> ";" THEN
    PDIR$ = PDIR$ + P$
  ELSE
    IF RTRIM$(PDIR$) <> "" THEN
      PRINT " "; PDIR$; " ";
      PRINT #1, PDIR$
      PDIR$ = ""
      pcnt = pcnt + 1
    END IF
  END IF
NEXT
IF RTRIM$(PDIR$) <> "" THEN
  PRINT " "; PDIR$; " ";
  PRINT #1, PDIR$
  PDIR$ = ""
  pcnt = pcnt + 1
END IF
PRINT
PRINT pcnt; " DIRECTORIES IN PATH "
CLOSE
COLOR 7, 4
PRINT " CHECKING THAT ALL DIRECTORIES ARE VALID                                        "
COLOR 7, 0
REDIM iv(pcnt) AS STRING
ON ERROR GOTO DERR
OPEN "RVSTEMP.DAT" FOR INPUT AS #1
IVCNT = 0
DO UNTIL EOF(1)
  INPUT #1, dc$
  dc$ = RTRIM$(dc$)
  IF MID$(dc$, LEN(dc$), 1) = "\" THEN
    dc$ = MID$(dc$, 1, LEN(dc$) - 1)
  END IF
  CHDIR dc$
99
  IF ed = 1 AND block = 0 THEN
    COLOR 14, 4
    PRINT " INVALID DIRECTORIES FOUND ... [THEY DO NOT EXIST]                              "
    COLOR 7, 0
    block = 1
  END IF
  IF ed = 1 THEN
    PRINT " "; dc$; " ";
    IVCNT = IVCNT + 1
    iv(IVCNT) = dc$
    ed = 0
  END IF
LOOP
CLOSE
CHDIR "\"
IF block = 0 THEN
  COLOR 1, 7
  PRINT " NO INVALID DIRECTORIES FOUND ... ALL DIRECTORIES LISTED EXIST ... PASS         "
  COLOR 7, 0
END IF
IF IVCNT = 0 THEN GOTO 101
COLOR 7, 1
PRINT
PRINT " REMOVE INVALID DIRECTORIES FROM PATH (Y/N)                                     "
COLOR 7, 0
88
WHILE INKEY$ <> ""
WEND
CH$ = UCASE$(INPUT$(1))
SELECT CASE CH$
  CASE "Y"
    OPEN "rvstemp.dat" FOR INPUT AS #1
    np$ = "PATH "
    DO UNTIL EOF(1)
      LINE INPUT #1, x$
      nogo = 0
      FOR z = 1 TO IVCNT
        IF INSTR(UCASE$(x$), iv(z)) > 0 THEN nogo = 1
      NEXT
      IF nogo = 0 THEN
        np$ = np$ + UCASE$(x$) + ";"
      END IF
    LOOP
    CLOSE
    COLOR 7, 1
    PRINT " UPDATING PATH IN AUTOEXEC.BAT TO:                                  "
    COLOR 7, 0
    PRINT np$
    OPEN "rvstemp2.dat" FOR OUTPUT AS #1
    OPEN "autoexec.bat" FOR INPUT AS #2
    pblock = 0
    DO UNTIL EOF(2)
      LINE INPUT #2, x$
      IF UCASE$(MID$(x$, 1, 4)) = "PATH" AND pblock = 0 THEN
        pblock = 1
        PRINT #1, np$
      ELSE
        PRINT #1, x$
      END IF
    LOOP
    CLOSE
    KILL "AUTOEXEC.BAT"
    NAME "RVSTEMP2.DAT" AS "AUTOEXEC.BAT"
  CASE "N"
  CASE ELSE
    SOUND 40, 1
    GOTO 88
END SELECT
101
CLOSE
KILL "\rvstemp.dat"
CHDIR CURDRIVE$
LOCATE 25, 1
COLOR 14, 1
PRINT " FINISHED    -    PRESS ANY KEY TO EXIT PROGRAM                                 ";
COLOR 7, 0
WHILE INKEY$ <> ""
WEND
DO
LOOP WHILE INKEY$ = ""
CLS
END
DERR:
IF ed = 0 THEN ed = 1
SELECT CASE ERR
  CASE 76
    SOUND 40, 1
    RESUME 99
  CASE ELSE
    PRINT ERR, ERL
    PRINT "WARNING: UNDETERMINED ERROR"
    PRINT
    PRINT "DO NOT USE THE INFORMATION PROVIDED BY THIS PROGRAM"
    PRINT "CHECK YOUR AUTOEXEC.BAT FILE INCASE OF UNWANTED CHANGES"
END SELECT
RESUME 101
