home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: WPS_PM / WPS_PM.zip / crsh-010.zip / MakeShadow.CMD < prev    next >
OS/2 REXX Batch file  |  1998-12-06  |  6KB  |  192 lines

  1. /* Zaêo╛enie cienia obiektu podanego jako parametr w katalogu podanym jako drugi parametr */
  2.  
  3. call RxFuncAdd "SysLoadFuncs", "RexxUtil", "SysLoadFuncs"
  4. call SysLoadFuncs
  5.  
  6. /*
  7.  
  8.     Wywoêanie:
  9.  
  10.         MakeShadow file shadowdir [shadowid]
  11.  
  12.         Gdzie:
  13.  
  14.                 file            - nazwa obiektu którego cieΣ b⌐dzie zakêadany
  15.                            = /B - Batch mode; nazwy plików pobierane ze stdin
  16.                            = /S - script mode; wszystkie informacje pobierane z pliku
  17.                 shadowdir       - nazwa katalogu, w którym zostanÑ zaêo╛one
  18.                                         cienie
  19.                 shadowid        - nazwa cienia (w przypadku wczytywania
  20.                                         stdin b⌐dzie uzupeêniona o numer
  21.                                         kolejny obiektu)
  22.  
  23. */
  24.  
  25. version = "0.1"
  26.  
  27. say "Make Shadow Object v. "||version||" by Jan Stozek"
  28. say
  29.  
  30. parse ARG filename shadowdir _shadowid .
  31.  
  32. select
  33.   when filename = "" then do
  34.     say "Bê⌐dne parametry! - brak nazwy pliku"
  35.     exit
  36.   end /* when */
  37.  
  38.   when translate(filename) = "/S" then
  39.     runmode = "S" /* Script */
  40.  
  41.   when translate(filename) = "/B" then
  42.     runmode = "B" /* Batch */
  43.  
  44.   otherwise
  45.     runmode = "N" /* Normal */
  46. end /* select */
  47.  
  48. do until filename <> '.' | runmode <> "S" 
  49.  
  50.   if runmode = "S" then do
  51.     filename = ""; _shadowid=""
  52.     do while lines()
  53.       parse linein command param subparam .
  54.       select
  55.         when command = "" then
  56.           nop
  57.  
  58.         when left(command,1) = "#" then
  59.           nop
  60.  
  61.         when translate(command) = "CD" then do
  62.           shadowdir = param
  63.         end
  64.  
  65.         when translate(command) = "ROOTNAME" then
  66.           _shadowid = param
  67.  
  68.         when translate(command) = "DEL" then
  69.           if shadowid() <> "" then
  70.             call deleteobjects param subparam
  71.  
  72.         when translate(command) = "QUIT" then
  73.           exit
  74.  
  75.         when translate(command) = "DATA" then
  76.           leave
  77.  
  78.         otherwise
  79.           say "Script error!!! Exiting"
  80.           say "Command:    "||command
  81.           say "Parametres: "||param||", "||subparam
  82.           exit
  83.       end /* Select */
  84.     end /* do */
  85.   end /* if */ ; else do
  86.     if runmode = "B" then
  87.       filename = ""
  88.     if shadowdir = "" then do
  89.       say "Bê⌐dne parametry! - brak nazwy katalogu na cieΣ"
  90.       exit
  91.     end /* if */
  92.   end /* else */
  93.  
  94.   if pos('.',shadowdir) = 1 then
  95.     shadowdir = directory()||delstr(shadowdir,1,1)
  96.  
  97.   if pos('\', filename) = 0 then
  98.     if left(filename, 1) <> '<' then
  99.       filename = directory()||'\'||filename
  100.  
  101.   if runmode = "N" then do
  102.     count = createshadow(filename, shadowdir, shadowid())
  103.   end /* if */ ; else do
  104.     count = 1;
  105.     do while lines()
  106.       filename=linein()
  107.       if filename = '.' then 
  108.         leave
  109.       else 
  110.         if filename <> '' then
  111.           count=count+createshadow(filename, shadowdir, shadowid()||count)
  112.     end /* do */
  113.     count = count - 1
  114.   end /* else */
  115.   say "Total of "||count||" object created"
  116.  
  117. end /* do */
  118.  
  119. exit count /* Exit code represents the number of created objects */
  120.  
  121.  
  122.  
  123. /* -------------------------------------------------------------------- */
  124. /*                               Subroutines                            */
  125. /* -------------------------------------------------------------------- */
  126.  
  127.  
  128. /* Create shadow objects */
  129.  
  130. createshadow: /* Create shadow object */
  131.   say "Creating shadow "||ARG(1)||" in "||ARG(2)||" with ID="||ARG(3)
  132.   result= SysCreateObject("WPShadow", "Shadow of "||ARG(1)||" object", ARG(2), "SHADOWID="||ARG(1)||";OBJECTID=<"||ARG(3)||">", 'Replace')
  133. return result /* 1 if success, 0 if failure */
  134.  
  135.  
  136. /* Delete shadow objects */
  137.  
  138. deleteobjects: /* Delete shadows by name */
  139.   parse ARG deleteme limit .
  140.   select
  141.     when left(deleteme,1) = "<" then
  142.       result = SysDestroyObject(deleteme)
  143.  
  144. /* Delete object with the name given and objects with # 1 or more */
  145.     when translate(deleteme) = "ALL" then do
  146.       call deleteobjects "<"||shadowid()||">"
  147.       call deleteobjects "1+"
  148.     end /* when */
  149.  
  150. /* If object number is followed by "+" then delete it and successors */
  151.     when right(deleteme,1) = "+" then
  152.       call deleteobjects strip(deleteme,trailing,"+") "+"
  153.  
  154. /* If object number is given, then concat it to the rootname and delete */
  155. /* If the second number is given, delete all objects with #s in between */
  156. /* If any other second param is given (like "+") then delete all successing objects */
  157.  
  158.     when datatype(deleteme, whole number) then do
  159.       countdeleted = 0
  160.       if datatype(limit, whole number) then
  161.         do counter = deleteme to limit
  162.           countdeleted = countdeleted + deleteobjects("<"||shadowid()||counter||">")
  163.         end /* do */
  164.       else do
  165.         counter = deleteme; next = limit
  166.         do while deleteobjects("<"||shadowid()||counter||">") = 1
  167.           if next <> "" then do
  168.             counter = counter + 1
  169.             countdeleted = countdeleted + 1
  170.           end /* if */
  171.         end /* do */
  172.       end /* else */
  173.       say "Total of "||countdeleted||" objects deleted!"
  174.     end /* when */
  175.  
  176.     otherwise
  177.       say "Script error on delete:"
  178.       say "Called with parametres: "||deleteme
  179.   end /* select */
  180. return result
  181.  
  182. /* Shadow object ID */
  183.  
  184. shadowid:
  185.   if _shadowid = "" then
  186.     if runmode = "N" then
  187.       _shadowid = filename
  188.     else 
  189.       if _shadowid = "" & shadowdir <> "" then
  190.         _shadowid = substr(shadowdir,lastpos('\',shadowdir)+1)
  191. return _shadowid
  192.