home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / netdor3.zip / VNDINST / AUXPROGS / LIBEDIT.CMD < prev   
OS/2 REXX Batch file  |  1996-04-04  |  5KB  |  153 lines

  1. /********************************************************************
  2. ** LIBPATH Editing Utility                                         **
  3. *********************************************************************
  4. :help.
  5.  
  6.   LIBEDIT Ver 1.00
  7.  
  8.   Copyright IBM Corp. 1990, 1992.  All rights reserved.
  9.  
  10.   Purpose: This exec is useful for general editting of the
  11.            LIBPATH statement.
  12.  
  13.   Syntax:  LIBEDIT entry oper [pos]
  14.  
  15.   Where:   entry      - The directory spec to work with.
  16.  
  17.            oper       - Operation to be performed:
  18.                          ADD    (A for short)
  19.                          DELETE (D for short)
  20.                          QUERY  (Q for short)
  21.  
  22.            pos        - The position of the new entry to be
  23.                         added (used by ADD operation only):
  24.                          BEGIN  (B for short)
  25.                          END    (E for short)
  26.  
  27.  
  28.   RC:      0          (ADD)    Added successfully
  29.            2          (ADD)    Nothing added, entry already exists.
  30.            0          (DELETE) Deleted successfully.
  31.            2          (DELETE) Nothing deleted, entry did not exist.
  32.            0          (QUERY)  The entry exists.
  33.            2          (QUERY)  The entry does not exist.
  34.  
  35.   Return code also stored in LIBEDIT.RC environment variable.
  36. :ehelp.
  37. ********************************************************************/
  38. parse upper arg Entry Oper Pos .
  39. '@echo off'
  40. trace 'o'
  41.  
  42. /************************************/
  43. /** Add external RXUTILS functions **/
  44. /************************************/
  45. call RxFuncAdd 'RxLoadFuncs', 'RXUTILS', 'RxLoadFuncs'
  46. call RxLoadFuncs 'QUIET'
  47.  
  48. /******************************/
  49. /** Check if user needs help **/
  50. /******************************/
  51. Oper=left(Oper,1)
  52. Pos=left(Pos,1)
  53. if Entry='?' | Entry='??' | Entry='' | pos(Oper, 'ADQ')=0 then
  54.  call GiveHelp
  55.  
  56. /******************************/
  57. /** Condition the parameters **/
  58. /******************************/
  59. Oper = left(Oper, 1)
  60. if Pos<>'' then Pos=left(Pos, 1)
  61.  
  62. /****************************************************/
  63. /** Read the file and figure out what line number  **/
  64. /** the LIBPATH statement is in.                   **/
  65. /****************************************************/
  66. Dirty='N'
  67. if right(Entry, 1)<>';' then Entry=Entry';'
  68. bdr = RxBootDrive()
  69. call RxRead bdr'\CONFIG.SYS', 'FILE'
  70. call RxGrep 'LIBPATH=', bdr'\CONFIG.SYS', 'GREP', 'N'
  71. string=''; i=GREP.0
  72. do while left(string,7)<>'LIBPATH=' & i>0
  73.    parse upper var GREP.i num string
  74.    i=i-1
  75. end
  76.  
  77. /****************************************/
  78. /** Figure out just where the entry is **/
  79. /** if it is in the LIBATH at all.     **/
  80. /****************************************/
  81. tpos = pos(Entry, FILE.num)
  82. if tpos<>0 then do
  83.    bChar=substr(FILE.num, tpos-1, 1)
  84.    if pos(bChar, '=;')<>0 then RetC=0
  85.    else RetC=2
  86.  end
  87. else RetC=2
  88.  
  89. /****************************************/
  90. /** Perform the needed operation.      **/
  91. /****************************************/
  92. select
  93.   when Oper='A' then do
  94.     if RetC=2 then do
  95.       oldpath = substr(FILE.num, pos('=', FILE.num)+1)
  96.       if right(oldpath, 1)<>';' then oldpath=oldpath';'
  97.       oldcmd = left(FILE.num, pos('=', FILE.num))
  98.       if Pos='B' then
  99.         FILE.num = oldcmd||Entry||oldpath
  100.       else
  101.         FILE.num = oldcmd||oldpath||Entry
  102.       Dirty='Y'
  103.       RetC=0
  104.     end
  105.     else RetC=2
  106.   end
  107.   when Oper='D' then
  108.     if RetC=0 then do
  109.       FILE.num=left(FILE.num, tpos-1)||substr(FILE.num, tpos+length(Entry))
  110.       Dirty='Y'
  111.     end
  112.   otherwise     /* Do nothing, querying stuff already done */
  113. end
  114.  
  115. /****************************************/
  116. /** Save the file if needed then exit  **/
  117. /** with the return code.              **/
  118. /****************************************/
  119. if Dirty='Y' then
  120.  call RxWrite bdr'\CONFIG.SYS', 'FILE', file.0, 1
  121.  
  122. call value 'LIBEDIT.RC', RetC, 'OS2ENVIRONMENT'
  123.  
  124. exit RetC
  125.  
  126.  
  127.  
  128.  
  129.  
  130. /********************************************************************
  131. ** GiveHelp()                                                      **
  132. **                                                                 **
  133. ** Purpose:  Provide syntax help for the user.                     **
  134. ********************************************************************/
  135. GiveHelp: procedure
  136.  
  137. i=2
  138. do until sourceline(i-1)=':help.'
  139.   i=i+1
  140. end
  141. j=1
  142. do until sourceline(i)=':ehelp.'
  143.   say sourceline(i)
  144.   if j=20 then do
  145.     say; say '--MORE--'
  146.     call RxGetKey
  147.     j=0
  148.   end
  149.   i=i+1
  150.   j=j+1
  151. end
  152. exit 0
  153.