From: Brian F. <Bri...@qu...> - 2017-02-21 11:15:53
|
Thanks Gustaf Worked very well! Brian From: Gustaf Neumann [mailto:ne...@wu...] Sent: 20 February 2017 19:48 To: nav...@li... Subject: Re: [naviserver-devel] Differences in usage of "open" command between Naviserver and AOLserver Am 20.02.17 um 16:01 schrieb Brian Fenton: HI Gustaf I'd guess this is not a Windows thing, as I can reproduce the problem in standard TCL on both Windows and Linux. But I haven't looked at Naviserver on Linux to confirm it there. This worked fine for years in AOLserver on both Windows and Linux. It seems to be that Naviserver's version of "open" is closer to the standard TCL version. naviserver is not "closer" to Tcl, it uses the Tcl unmodified (including open). I see in the AOLserver sources no place, where it overwrites/modifies the "open" command. When should I write the "exit\n" to the pipe? I've tried a few variations on the following with no success: set fp [open "|[file join $::env(ORACLE_HOME) bin sqlplus] $user_pass @$file" "r+"] puts $fp "exit\n" while { [gets $fp line] >= 0 } { append output $line } close $fp The following should work. this is a little script (that works under Unix) that emulates sqlplus - as i understand it. Hope this helps -g ================================================================================ #!/usr/bin/env tclsh puts "GOT args <$argv>" # # Read a line from stdin to emulate, what sqlplus is doing # set line [gets stdin] puts "GOT line <$line>" if {0} { # # Place this file into /tmp/sqlplus.tcl, make it executable, call a # tclsh, and issue in this shell the following cmds: # set user_pass pw set file test.sql set fp [open "| /tmp/sqlplus.tcl $user_pass @$file" "r+"] fconfigure $fp -buffering line puts $fp "exit" while { [gets $fp line] >= 0 } { append output $line \n } close $fp puts output:\n$output } ================================================================================ |