Part 2 of my patch resubmission.

Note that this modified from my last "Do not redirect" patch.  It
incorporates changes from read sftp batch file in from stdin (part of
issue237).

Note that this semantically depends on part 1 of this resubmission.  It
is probably ok to apply the other patch without this one.  It is not a
good idea to apply this one without the other.  I am sending it this way
mostly because I am tired/confused and fear I have done something
stupid.  

Whilst testing, I noticed that although this works fine with OpenSSH,
it does not work with putty (on my Mac -- yes, putty is available for
Unix).  Then again, putty-on-unix does not seem to work with darcs 1.0.8
either.  In both cases, the symptom is that darcs tells us it could not
fetch a file.  Now with this patch, in addition to it not working, you
also get repeated password prompts, but just the prompts, not the
ability to type them in.

Putty seems to be working just fine on Windows under 1.0.8 -- at least
nobody seems to be complaining about stuff other than the spurious
cm-related messages.  If Putty continues to work fine under Windows with
this patch,  I'll guess it's a keeper, because, seriously, who actually
uses putty under unix?  (famous-last-words moment?).

Could a Windows user give this a try?  Please do a get, pull and push.
Note: to isolate the problem, please make sure the server you connect
to is one that your putty already knows about.  There is a different
issue re: first-time connections that this patch does not aim to
address.

--------

Sun Sep  3 23:48:31 CEST 2006  Eric Kow <[EMAIL PROTECTED]>
  * Do not redirect to or from /dev/null when calling ssh.
  
  Redirection of stdin and stdout breaks putty, which uses these to
  interact with the user.  Quiet mode, and redirecting stderr are good
  enough for making ssh silent.
  

New patches:

[Do not redirect to or from /dev/null when calling ssh.
Eric Kow <[EMAIL PROTECTED]>**20060903214831
 
 Redirection of stdin and stdout breaks putty, which uses these to
 interact with the user.  Quiet mode, and redirecting stderr are good
 enough for making ssh silent.
 
] 
<
> {
hunk ./External.hs 51
 import Autoconf ( have_libcurl, have_sendmail, have_mapi, sendmail_path, darcs_version )
 import Curl ( copyUrl )
 import Curl ( Cachable(..) )
-import Exec ( exec )
+import Exec ( exec, exec_ )
 import DarcsURL ( is_file, is_url, is_ssh )
 import DarcsUtils ( catchall )
 import Printer ( Doc, hPutDoc, hPutDocLn, ($$), (<+>), renderPS,
hunk ./External.hs 167
 
 copySSH :: String -> FilePath -> IO ()
 copySSH uRaw f = let u = escape_dollar uRaw in do
-                 r <- runSSH SCP u [] [u,f] "/dev/null" "/dev/null"
+                 r <- runSSH SCP u [] [u,f] Nothing Nothing
                  when (r /= ExitSuccess) $
                       fail $ "(scp) failed to fetch: " ++ u
     where {- '$' in filenames is troublesome for scp, for some reason.. -}
hunk ./External.hs 258
                          withTemp $ \sftpoutput ->
                          do hPutStr th input
                             hClose th
-                            r <- runSSH SFTP u [] [host] tn sftpoutput
+                            r <- runSSH SFTP u [] [host] (Just tn) (Just sftpoutput)
                             let files = if length ns > 5
                                           then (take 5 ns) ++ ["and "
                                                ++ (show (length ns - 5)) ++ " more"]
hunk ./External.hs 337
 --   reading its output.  Return its ExitCode
 execSSH :: String -> String -> IO ExitCode
 execSSH remoteAddr command =
-  runSSH SSH remoteAddr [remoteAddr] [command] "/dev/null" "/dev/null"
+  runSSH SSH remoteAddr [remoteAddr] [command] Nothing Nothing
 
 pipeDoc_SSH_IgnoreError :: String -> [String] -> Doc -> IO Doc
 pipeDoc_SSH_IgnoreError remoteAddr args input =
hunk ./External.hs 648
   show SFTP = "sftp"
 
 runSSH :: SSHCmd -> String -> [String] -> [String]
-       -> FilePath -> FilePath -> IO ExitCode
-runSSH cmd remoteAddr preArgs postArgs input output =
+       -> Maybe FilePath -> Maybe FilePath -> IO ExitCode
+runSSH cmd remoteAddr preArgs postArgs minp mout =
  do (ssh, args) <- getSSH cmd remoteAddr
hunk ./External.hs 651
-    exec ssh (preArgs ++ args ++ postArgs) input output
+    exec_ ssh (preArgs ++ args ++ postArgs) minp mout (Just "/dev/null")
 
 -- | Return the command and arguments needed to run an ssh command
 --   along with any extra features like use of the control master.
}

Context:

[overhaul the darcs.net front page.
Mark Stosberg <[EMAIL PROTECTED]>**20060820191415
 
 The themes to this change are:
 
 - Focus on the key benefits of darcs:
     Distributed. Interactive. Smart.
 
 - Recognize that the wiki is the central resource,
    and remove some information that is duplicated here
    and reference the wik instead. 
 
 I can post a demo of this HTML for easy comparison if you'd like.
 
     Mark
] 
[Reimplement --disable-ssh-cm flag (issue239).
Eric Kow <[EMAIL PROTECTED]>**20060812134856
 
 My patch to "Only launch SSH control master on demand" accidentally
 removed the ability to disable use of SSH ControlMaster.  Also, the
 way it was implemented is not compatible with launching on demand.
 This implementation relies on a notion of global variables using
 unsafe IORefs.
 
] 
[Compile Global.lhs in place of AtExit.lhs.
Eric Kow <[EMAIL PROTECTED]>**20060812121943] 
[Rename AtExit module to Global.
Eric Kow <[EMAIL PROTECTED]>**20060812121925
 
 The goal is to capture some broad "global" notions like exit handlers
 and global variables.  Note the GPL header thrown in for good measure.
 
] 
[Raise exception if unable to open logfile (issue142).
Zachary P. Landau <[EMAIL PROTECTED]>**20060810034035] 
[Make the pull 'permission test' work when run as root
Jon Olsson <[EMAIL PROTECTED]>**20060831193834] 
[TAG darcs-unstable-20060831
Juliusz Chroboczek <[EMAIL PROTECTED]>**20060831191554] 
Patch bundle hash:
6a766e5d206b621f8f40d0e35610fcc331cf7150
_______________________________________________
darcs-devel mailing list
darcs-devel@darcs.net
http://www.abridgegame.org/cgi-bin/mailman/listinfo/darcs-devel

Reply via email to