home *** CD-ROM | disk | FTP | other *** search
/ PC World 1997 November / PCWorld_1997-11_cd.bin / software / programy / komix / DATA.Z / smalllib.tcl < prev    next >
Text File  |  1996-08-12  |  5KB  |  150 lines

  1. #              ~/icase/small_library.tcl
  2. #
  3. # Created: 15 april 1996
  4. # Updated: 18 april 1996
  5. # Version: 1.2
  6. # Purpose: To make some functions globally platform independent available
  7. #          like an as user friendly as possible file selection.
  8. # Notes on V1.1: Made use of the standard otk FileChooser
  9. # Notes on V1.2: Made use of system to make it MS DOS compatible
  10.  
  11.  
  12. #puts "Using ~/icase/small_library.tcl"
  13.  
  14. # -------------------------
  15. # get the require procedure
  16. # -------------------------
  17. source [m4_path_name tcl libocl.tcl]
  18.  
  19.  
  20. # --------------------------------
  21. # to get the global variable win95
  22. # --------------------------------
  23. require platform.tcl
  24.  
  25.  
  26. # ------------------------------------------
  27. # Like the UNIX command date without options
  28. # ------------------------------------------
  29. proc date { } {
  30.     return [fmtclock [getclock]]
  31. }
  32.  
  33.  
  34. proc get_user_name { } {
  35.     # --------------------------------------------------------------------
  36.     # The unix and pc version differ, in the future test with others (DEC)
  37.     # --------------------------------------------------------------------
  38.     #if { $win95 } {
  39.     #    return [lindex [get_comm_name] 2]
  40.     #} else {
  41.     #    return [exec logname]
  42.     #}
  43.     return [M4Login::getUserName]
  44. }
  45.  
  46.  
  47. # -------------------------------------
  48. # could be not available on windows '95
  49. # -------------------------------------
  50. proc get_host_name { } {
  51.     # --------------------------------------------------------------------
  52.     # The unix and pc version differ, in the future test with others (DEC)
  53.     # --------------------------------------------------------------------
  54.     if { $win95 } {
  55.         return $env(COMPUTERNAME)
  56.     } else {
  57.         return [exec uname -n]
  58.     }
  59. }
  60.  
  61.  
  62. # -----------------------------------
  63. # To retrieve the user home directory
  64. # -----------------------------------
  65. proc get_home_directory { } {
  66.     # --------------------------------------------------
  67.     # an elaborate method to remain platform independent
  68.     # --------------------------------------------------
  69.     #set directory [pwd]       ; # retrieve currect working directory
  70.     #cd                        ; # change work directory to home directory
  71.     #set home_directory [pwd]  ; # remember the home directory
  72.     #cd $directory             ; # set working directory to original one
  73.     #return $home_directory    ; # return the found home directory
  74.  
  75.     # ---------------------------------------------
  76.     # The simple version, also platform independent
  77.     # ---------------------------------------------
  78.     return [glob ~]
  79. }
  80.  
  81.  
  82. # --------------------------------------------------------
  83. # The 'user friendly' fileselect with the otk file_chooser
  84. # binding with otk via temporary files.
  85. # --------------------------------------------------------
  86. proc FileSelect { } {
  87.     set file_name ""
  88.     set icase_directory [path_name concat [lindex [glob ~] 0] icase]
  89.     set file_chooser [path_name concat $icase_directory file_chooser.tcl]
  90.     set otk [m4_path_name bin otk$EXE_EXT]
  91.  
  92.     # --------------------------------
  93.     # try the standard otk FileChooser
  94.     # --------------------------------
  95.     if { [file exists $file_chooser] } { 
  96.         set file_name ""
  97.         if { $win95 } {
  98.             # ------------------------------------------------------
  99.             # an elaborate construction to make it MS DOS compatible
  100.             # ------------------------------------------------------
  101.             set tmp_file [args_file {}]
  102.             system "$otk $file_chooser -- $tmp_file"
  103.             set fd [open $tmp_file "r+"]
  104.             gets $fd file_name
  105.             close $fd
  106.         } else {
  107.             set file_name [exec $otk $file_chooser]
  108.         }
  109.         return [lindex $file_name 0]
  110.     }
  111.  
  112.     # -----------------------------------------
  113.     # try the file selector on unix if possible
  114.     # -----------------------------------------
  115.     if { ! $win95 } {
  116.         # ---------------------------------------------------
  117.         # Check to see if the command FileSelect is available
  118.         # ---------------------------------------------------
  119.         set location "[exec which FileSelect]"
  120.         if { [llength $location] == 1 } {
  121.             set file_name "[exec FileSelect]"
  122.             return $file_name
  123.         }
  124.     }
  125.  
  126.     # ------------------------------
  127.     # Use the shell input facilities
  128.     # ------------------------------
  129.     puts -nonewline "Enter a name please: "
  130.     gets stdin file_name
  131.     return $file_name
  132. }
  133.  
  134.  
  135. proc execute { command } {
  136.     set tmp_file [args_file {}]
  137.     system "$command >$tmp_file"
  138.     set fd [open $tmp_file "r+"]
  139.  
  140.     set output ""
  141.     while { [gets $fd line] >= 0 } {
  142.         set output "$output\n$line"
  143.     }
  144.  
  145.     close $fd
  146.     system "rm $tmp_file"
  147.  
  148.     return $output
  149. }
  150.