home *** CD-ROM | disk | FTP | other *** search
/ PC World 1998 October / PCWorld_1998-10_cd.bin / software / prehled / komix / DATA.Z / pbroundtrip.tcl < prev    next >
Text File  |  1997-08-06  |  3KB  |  110 lines

  1. #---------------------------------------------------------------------------
  2. #
  3. # Copyright (c) 1997 by Cayenne Software Inc.
  4. #
  5. # This software is furnished under a license and may be used only in
  6. # accordance with the terms of such license and with the inclusion of
  7. # the above copyright notice. This software or any other copies thereof
  8. # may not be provided or otherwise made available to any other person.
  9. # No title to and ownership of the software is hereby transferred.
  10. #
  11. # The information in this software is subject to change without notice
  12. # and should not be construed as a commitment by Cayenne Software Inc.
  13. #
  14. #---------------------------------------------------------------------------
  15. #
  16. #   File          : @(#)pbroundtrip.tcl    /main/titanic/3  25 Jul 1997
  17. #   Original date : July 1997
  18. #   Description   : Roundtrip for PowerBuilder
  19. #
  20. #---------------------------------------------------------------------------
  21. #
  22. source [m4_path_name tcl cginit.tcl]
  23. require "pbgentor.tcl"
  24. require "pbllibrary.tcl"
  25. require "procs.tcl"
  26.  
  27. global argv
  28.  
  29. set lang "pb"
  30. set rtOptions ""
  31. set roundtrip 0
  32. set argsFile ""
  33. set fileName ""
  34. set systemName ""
  35. set prevPhase ""
  36. set phaseName ""
  37. if {[regexp {\-x *} $argv total dummy]} {
  38.     set roundtrip 1
  39.     set rtOptions "-x"
  40. }
  41. if {[regexp {\-F *([^-][^ ]*)} $argv total argsFile]} {
  42.     if {[llength $argsFile] > 0} {
  43.         set argsFile [lindex $argsFile 0]
  44.     }
  45.     set rtOptions "$rtOptions -F $argsFile"
  46. }
  47. if {[regexp {\-D *([^-][^ ]*)} $argv total fileName]} {
  48.     set rtOptions "$rtOptions -D $fileName"
  49. }
  50. if {[regexp {\-S *([^-][^ ]*)} $argv total systemName]} {
  51.     set rtOptions "$rtOptions -S $systemName"
  52. }
  53. if {[regexp {\-A *([^-][^ ]*)} $argv total prevPhase]} {
  54.     set rtOptions "$rtOptions -A $prevPhase"
  55. }
  56. if {[regexp {\-T *([^-][^ ]*)} $argv total phaseName]} {
  57.     set rtOptions "$rtOptions -T $phaseName"
  58. }
  59. set parseFile [args_file {}]
  60. set rtOptions "-1 $parseFile $rtOptions"
  61.  
  62. set cc [ClientContext::global]
  63. set sysV [$cc currentSystem]
  64. set systemName [[$sysV system] name]
  65. set systemPath [$sysV path]
  66.  
  67. set autoLibrary [PBGenerator::checkAutoLibrary]
  68. if {$argsFile == ""} {
  69.     puts stdout "nothing to do!"
  70.     return
  71. }
  72. if {$roundtrip == 0} {
  73.     puts stdout "no roundtrip!"
  74.     return
  75. }
  76. if {($autoLibrary && \
  77.      ($systemName != ""))} {
  78.     # argsFile2 will be a copy of argsFile
  79.     set argsFile2 [args_file {}]
  80.     file copy -force $argsFile $argsFile2
  81.     set pbLib [PblLibrary new]
  82.        $pbLib libraryName [string tolower $systemName]
  83.     set libraryName [$pbLib getLibName]
  84.     set fileDesc [open $argsFile r]
  85.     if {$fileDesc != ""} {    
  86.         puts stdout "Exporting from ${libraryName}.pbl \[${systemPath}\]:"
  87.         while {[gets $fileDesc line] >= 0 } {
  88.             if {$line != ""} {
  89.                 puts stdout "    $line"
  90.             }
  91.         }
  92.         close $fileDesc
  93.         set inclFile ""
  94.         set ret [$pbLib exportFiles $argsFile2 $inclFile $systemPath]
  95.     }
  96. }
  97.  
  98. set script "[quoteIf [m4_path_name bin reveng_${lang}$EXE_EXT]] $rtOptions"
  99. # because eval will evaluate '\'
  100. regsub -all {\\} $script {\\\\} script
  101.  
  102. # reroute both stdout and stderr from execution to stdout
  103. set ret [catch {eval exec >&@stdout $script}]
  104. if {$ret != 0} {
  105.     set dosReturnErrorCode [expr {([lindex $errorCode 0] == "CHILDSTATUS") ? \
  106.                                 [lindex $errorCode 2] : "unknown" }]
  107.     puts stdout "$msg"
  108.     return
  109. }
  110. source $parseFile