--- /dev/null
+
+<!doctype html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><title>Python: module fdpexpect</title>
+</head><body bgcolor="#f0f0f8">
+
+<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="heading">
+<tr bgcolor="#7799ee">
+<td valign=bottom> <br>
+<font color="#ffffff" face="helvetica, arial"> <br><big><big><strong>fdpexpect</strong></big></big> (version 2.3)</font></td
+><td align=right valign=bottom
+><font color="#ffffff" face="helvetica, arial"><a href=".">index</a><br><a href="file:/home/noah/pexpect/trunk/pexpect/fdpexpect.py">/home/noah/pexpect/trunk/pexpect/fdpexpect.py</a></font></td></tr></table>
+ <p><tt>This is like pexpect, but will work on any file descriptor that you pass it.<br>
+So you are reponsible for opening and close the file descriptor.<br>
+ <br>
+$Id: fdpexpect.py 505 2007-12-26 21:33:50Z noah $</tt></p>
+<p>
+<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
+<tr bgcolor="#aa55cc">
+<td colspan=3 valign=bottom> <br>
+<font color="#fffff" face="helvetica, arial"><big><strong>Modules</strong></big></font></td></tr>
+
+<tr><td bgcolor="#aa55cc"><tt> </tt></td><td> </td>
+<td width="100%"><table width="100%" summary="list"><tr><td width="25%" valign=top><a href="os.html">os</a><br>
+</td><td width="25%" valign=top></td><td width="25%" valign=top></td><td width="25%" valign=top></td></tr></table></td></tr></table><p>
+<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
+<tr bgcolor="#ee77aa">
+<td colspan=3 valign=bottom> <br>
+<font color="#ffffff" face="helvetica, arial"><big><strong>Classes</strong></big></font></td></tr>
+
+<tr><td bgcolor="#ee77aa"><tt> </tt></td><td> </td>
+<td width="100%"><dl>
+<dt><font face="helvetica, arial"><a href="pexpect.html#spawn">pexpect.spawn</a>(<a href="__builtin__.html#object">__builtin__.object</a>)
+</font></dt><dd>
+<dl>
+<dt><font face="helvetica, arial"><a href="fdpexpect.html#fdspawn">fdspawn</a>
+</font></dt></dl>
+</dd>
+</dl>
+ <p>
+<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
+<tr bgcolor="#ffc8d8">
+<td colspan=3 valign=bottom> <br>
+<font color="#000000" face="helvetica, arial"><a name="fdspawn">class <strong>fdspawn</strong></a>(<a href="pexpect.html#spawn">pexpect.spawn</a>)</font></td></tr>
+
+<tr bgcolor="#ffc8d8"><td rowspan=2><tt> </tt></td>
+<td colspan=2><tt>This is like pexpect.<a href="pexpect.html#spawn">spawn</a> but allows you to supply your own open file<br>
+descriptor. For example, you could use it to read through a file looking<br>
+for patterns, or to control a modem or serial device.<br> </tt></td></tr>
+<tr><td> </td>
+<td width="100%"><dl><dt>Method resolution order:</dt>
+<dd><a href="fdpexpect.html#fdspawn">fdspawn</a></dd>
+<dd><a href="pexpect.html#spawn">pexpect.spawn</a></dd>
+<dd><a href="__builtin__.html#object">__builtin__.object</a></dd>
+</dl>
+<hr>
+Methods defined here:<br>
+<dl><dt><a name="fdspawn-__del__"><strong>__del__</strong></a>(self)</dt></dl>
+
+<dl><dt><a name="fdspawn-__init__"><strong>__init__</strong></a>(self, fd, args<font color="#909090">=[]</font>, timeout<font color="#909090">=30</font>, maxread<font color="#909090">=2000</font>, searchwindowsize<font color="#909090">=None</font>, logfile<font color="#909090">=None</font>)</dt><dd><tt>This takes a file descriptor (an int) or an object that support the<br>
+<a href="#fdspawn-fileno">fileno</a>() method (returning an int). All Python file-like objects<br>
+support <a href="#fdspawn-fileno">fileno</a>().</tt></dd></dl>
+
+<dl><dt><a name="fdspawn-close"><strong>close</strong></a>(self)</dt></dl>
+
+<dl><dt><a name="fdspawn-isalive"><strong>isalive</strong></a>(self)</dt><dd><tt>This checks if the file descriptor is still valid. If os.fstat()<br>
+does not raise an exception then we assume it is alive.</tt></dd></dl>
+
+<dl><dt><a name="fdspawn-kill"><strong>kill</strong></a>(self, sig)</dt></dl>
+
+<dl><dt><a name="fdspawn-terminate"><strong>terminate</strong></a>(self, force<font color="#909090">=False</font>)</dt></dl>
+
+<hr>
+Methods inherited from <a href="pexpect.html#spawn">pexpect.spawn</a>:<br>
+<dl><dt><a name="fdspawn-__iter__"><strong>__iter__</strong></a>(self)</dt><dd><tt>This is to support iterators over a file-like object.</tt></dd></dl>
+
+<dl><dt><a name="fdspawn-__str__"><strong>__str__</strong></a>(self)</dt><dd><tt>This returns a human-readable string that represents the state of<br>
+the object.</tt></dd></dl>
+
+<dl><dt><a name="fdspawn-compile_pattern_list"><strong>compile_pattern_list</strong></a>(self, patterns)</dt><dd><tt>This compiles a pattern-string or a list of pattern-strings.<br>
+Patterns must be a StringType, EOF, TIMEOUT, SRE_Pattern, or a list of<br>
+those. Patterns may also be None which results in an empty list (you<br>
+might do this if waiting for an EOF or TIMEOUT condition without<br>
+expecting any pattern).<br>
+ <br>
+This is used by <a href="#fdspawn-expect">expect</a>() when calling <a href="#fdspawn-expect_list">expect_list</a>(). Thus <a href="#fdspawn-expect">expect</a>() is<br>
+nothing more than::<br>
+ <br>
+ cpl = <a href="#fdspawn-compile_pattern_list">compile_pattern_list</a>(pl)<br>
+ return <a href="#fdspawn-expect_list">expect_list</a>(cpl, timeout)<br>
+ <br>
+If you are using <a href="#fdspawn-expect">expect</a>() within a loop it may be more<br>
+efficient to compile the patterns first and then call <a href="#fdspawn-expect_list">expect_list</a>().<br>
+This avoid calls in a loop to <a href="#fdspawn-compile_pattern_list">compile_pattern_list</a>()::<br>
+ <br>
+ cpl = <a href="#fdspawn-compile_pattern_list">compile_pattern_list</a>(my_pattern)<br>
+ while some_condition:<br>
+ ...<br>
+ i = <a href="#fdspawn-expect_list">expect_list</a>(clp, timeout)<br>
+ ...</tt></dd></dl>
+
+<dl><dt><a name="fdspawn-eof"><strong>eof</strong></a>(self)</dt><dd><tt>This returns True if the EOF exception was ever raised.</tt></dd></dl>
+
+<dl><dt><a name="fdspawn-expect"><strong>expect</strong></a>(self, pattern, timeout<font color="#909090">=-1</font>, searchwindowsize<font color="#909090">=None</font>)</dt><dd><tt>This seeks through the stream until a pattern is matched. The<br>
+pattern is overloaded and may take several types. The pattern can be a<br>
+StringType, EOF, a compiled re, or a list of any of those types.<br>
+Strings will be compiled to re types. This returns the index into the<br>
+pattern list. If the pattern was not a list this returns index 0 on a<br>
+successful match. This may raise exceptions for EOF or TIMEOUT. To<br>
+avoid the EOF or TIMEOUT exceptions add EOF or TIMEOUT to the pattern<br>
+list. That will cause expect to match an EOF or TIMEOUT condition<br>
+instead of raising an exception.<br>
+ <br>
+If you pass a list of patterns and more than one matches, the first match<br>
+in the stream is chosen. If more than one pattern matches at that point,<br>
+the leftmost in the pattern list is chosen. For example::<br>
+ <br>
+ # the input is 'foobar'<br>
+ index = p.expect (['bar', 'foo', 'foobar'])<br>
+ # returns 1 ('foo') even though 'foobar' is a "better" match<br>
+ <br>
+Please note, however, that buffering can affect this behavior, since<br>
+input arrives in unpredictable chunks. For example::<br>
+ <br>
+ # the input is 'foobar'<br>
+ index = p.expect (['foobar', 'foo'])<br>
+ # returns 0 ('foobar') if all input is available at once,<br>
+ # but returs 1 ('foo') if parts of the final 'bar' arrive late<br>
+ <br>
+After a match is found the instance attributes 'before', 'after' and<br>
+'match' will be set. You can see all the data read before the match in<br>
+'before'. You can see the data that was matched in 'after'. The<br>
+re.MatchObject used in the re match will be in 'match'. If an error<br>
+occurred then 'before' will be set to all the data read so far and<br>
+'after' and 'match' will be None.<br>
+ <br>
+If timeout is -1 then timeout will be set to the self.<strong>timeout</strong> value.<br>
+ <br>
+A list entry may be EOF or TIMEOUT instead of a string. This will<br>
+catch these exceptions and return the index of the list entry instead<br>
+of raising the exception. The attribute 'after' will be set to the<br>
+exception type. The attribute 'match' will be None. This allows you to<br>
+write code like this::<br>
+ <br>
+ index = p.expect (['good', 'bad', pexpect.EOF, pexpect.TIMEOUT])<br>
+ if index == 0:<br>
+ do_something()<br>
+ elif index == 1:<br>
+ do_something_else()<br>
+ elif index == 2:<br>
+ do_some_other_thing()<br>
+ elif index == 3:<br>
+ do_something_completely_different()<br>
+ <br>
+instead of code like this::<br>
+ <br>
+ try:<br>
+ index = p.expect (['good', 'bad'])<br>
+ if index == 0:<br>
+ do_something()<br>
+ elif index == 1:<br>
+ do_something_else()<br>
+ except EOF:<br>
+ do_some_other_thing()<br>
+ except TIMEOUT:<br>
+ do_something_completely_different()<br>
+ <br>
+These two forms are equivalent. It all depends on what you want. You<br>
+can also just expect the EOF if you are waiting for all output of a<br>
+child to finish. For example::<br>
+ <br>
+ p = pexpect.<a href="pexpect.html#spawn">spawn</a>('/bin/ls')<br>
+ p.expect (pexpect.EOF)<br>
+ print p.before<br>
+ <br>
+If you are trying to optimize for speed then see <a href="#fdspawn-expect_list">expect_list</a>().</tt></dd></dl>
+
+<dl><dt><a name="fdspawn-expect_exact"><strong>expect_exact</strong></a>(self, pattern_list, timeout<font color="#909090">=-1</font>, searchwindowsize<font color="#909090">=-1</font>)</dt><dd><tt>This is similar to <a href="#fdspawn-expect">expect</a>(), but uses plain string matching instead<br>
+of compiled regular expressions in 'pattern_list'. The 'pattern_list'<br>
+may be a string; a list or other sequence of strings; or TIMEOUT and<br>
+EOF.<br>
+ <br>
+This call might be faster than <a href="#fdspawn-expect">expect</a>() for two reasons: string<br>
+searching is faster than RE matching and it is possible to limit the<br>
+search to just the end of the input buffer.<br>
+ <br>
+This method is also useful when you don't want to have to worry about<br>
+escaping regular expression characters that you want to match.</tt></dd></dl>
+
+<dl><dt><a name="fdspawn-expect_list"><strong>expect_list</strong></a>(self, pattern_list, timeout<font color="#909090">=-1</font>, searchwindowsize<font color="#909090">=-1</font>)</dt><dd><tt>This takes a list of compiled regular expressions and returns the<br>
+index into the pattern_list that matched the child output. The list may<br>
+also contain EOF or TIMEOUT (which are not compiled regular<br>
+expressions). This method is similar to the <a href="#fdspawn-expect">expect</a>() method except that<br>
+<a href="#fdspawn-expect_list">expect_list</a>() does not recompile the pattern list on every call. This<br>
+may help if you are trying to optimize for speed, otherwise just use<br>
+the <a href="#fdspawn-expect">expect</a>() method. This is called by <a href="#fdspawn-expect">expect</a>(). If timeout==-1 then<br>
+the self.<strong>timeout</strong> value is used. If searchwindowsize==-1 then the<br>
+self.<strong>searchwindowsize</strong> value is used.</tt></dd></dl>
+
+<dl><dt><a name="fdspawn-expect_loop"><strong>expect_loop</strong></a>(self, searcher, timeout<font color="#909090">=-1</font>, searchwindowsize<font color="#909090">=-1</font>)</dt><dd><tt>This is the common loop used inside expect. The 'searcher' should be<br>
+an instance of searcher_re or searcher_string, which describes how and what<br>
+to search for in the input.<br>
+ <br>
+See <a href="#fdspawn-expect">expect</a>() for other arguments, return value and exceptions.</tt></dd></dl>
+
+<dl><dt><a name="fdspawn-fileno"><strong>fileno</strong></a>(self)</dt><dd><tt>This returns the file descriptor of the pty for the child.</tt></dd></dl>
+
+<dl><dt><a name="fdspawn-flush"><strong>flush</strong></a>(self)</dt><dd><tt>This does nothing. It is here to support the interface for a<br>
+File-like object.</tt></dd></dl>
+
+<dl><dt><a name="fdspawn-getecho"><strong>getecho</strong></a>(self)</dt><dd><tt>This returns the terminal echo mode. This returns True if echo is<br>
+on or False if echo is off. Child applications that are expecting you<br>
+to enter a password often set ECHO False. See <a href="#fdspawn-waitnoecho">waitnoecho</a>().</tt></dd></dl>
+
+<dl><dt><a name="fdspawn-getwinsize"><strong>getwinsize</strong></a>(self)</dt><dd><tt>This returns the terminal window size of the child tty. The return<br>
+value is a tuple of (rows, cols).</tt></dd></dl>
+
+<dl><dt><a name="fdspawn-interact"><strong>interact</strong></a>(self, escape_character<font color="#909090">='<font color="#c040c0">\x1d</font>'</font>, input_filter<font color="#909090">=None</font>, output_filter<font color="#909090">=None</font>)</dt><dd><tt>This gives control of the child process to the interactive user (the<br>
+human at the keyboard). Keystrokes are sent to the child process, and<br>
+the stdout and stderr output of the child process is printed. This<br>
+simply echos the child stdout and child stderr to the real stdout and<br>
+it echos the real stdin to the child stdin. When the user types the<br>
+escape_character this method will stop. The default for<br>
+escape_character is ^]. This should not be confused with ASCII 27 --<br>
+the ESC character. ASCII 29 was chosen for historical merit because<br>
+this is the character used by 'telnet' as the escape character. The<br>
+escape_character will not be sent to the child process.<br>
+ <br>
+You may pass in optional input and output filter functions. These<br>
+functions should take a string and return a string. The output_filter<br>
+will be passed all the output from the child process. The input_filter<br>
+will be passed all the keyboard input from the user. The input_filter<br>
+is run BEFORE the check for the escape_character.<br>
+ <br>
+Note that if you change the window size of the parent the SIGWINCH<br>
+signal will not be passed through to the child. If you want the child<br>
+window size to change when the parent's window size changes then do<br>
+something like the following example::<br>
+ <br>
+ import pexpect, struct, fcntl, termios, signal, sys<br>
+ def sigwinch_passthrough (sig, data):<br>
+ s = struct.pack("HHHH", 0, 0, 0, 0)<br>
+ a = struct.unpack('hhhh', fcntl.ioctl(sys.stdout.<a href="#fdspawn-fileno">fileno</a>(), termios.TIOCGWINSZ , s))<br>
+ global p<br>
+ p.<a href="#fdspawn-setwinsize">setwinsize</a>(a[0],a[1])<br>
+ p = pexpect.<a href="pexpect.html#spawn">spawn</a>('/bin/bash') # Note this is global and used in sigwinch_passthrough.<br>
+ signal.signal(signal.SIGWINCH, sigwinch_passthrough)<br>
+ p.<a href="#fdspawn-interact">interact</a>()</tt></dd></dl>
+
+<dl><dt><a name="fdspawn-isatty"><strong>isatty</strong></a>(self)</dt><dd><tt>This returns True if the file descriptor is open and connected to a<br>
+tty(-like) device, else False.</tt></dd></dl>
+
+<dl><dt><a name="fdspawn-next"><strong>next</strong></a>(self)</dt><dd><tt>This is to support iterators over a file-like object.</tt></dd></dl>
+
+<dl><dt><a name="fdspawn-read"><strong>read</strong></a>(self, size<font color="#909090">=-1</font>)</dt><dd><tt>This reads at most "size" bytes from the file (less if the read hits<br>
+EOF before obtaining size bytes). If the size argument is negative or<br>
+omitted, read all data until EOF is reached. The bytes are returned as<br>
+a string object. An empty string is returned when EOF is encountered<br>
+immediately.</tt></dd></dl>
+
+<dl><dt><a name="fdspawn-read_nonblocking"><strong>read_nonblocking</strong></a>(self, size<font color="#909090">=1</font>, timeout<font color="#909090">=-1</font>)</dt><dd><tt>This reads at most size characters from the child application. It<br>
+includes a timeout. If the read does not complete within the timeout<br>
+period then a TIMEOUT exception is raised. If the end of file is read<br>
+then an EOF exception will be raised. If a log file was set using<br>
+<a href="#fdspawn-setlog">setlog</a>() then all data will also be written to the log file.<br>
+ <br>
+If timeout is None then the read may block indefinitely. If timeout is -1<br>
+then the self.<strong>timeout</strong> value is used. If timeout is 0 then the child is<br>
+polled and if there was no data immediately ready then this will raise<br>
+a TIMEOUT exception.<br>
+ <br>
+The timeout refers only to the amount of time to read at least one<br>
+character. This is not effected by the 'size' parameter, so if you call<br>
+<a href="#fdspawn-read_nonblocking">read_nonblocking</a>(size=100, timeout=30) and only one character is<br>
+available right away then one character will be returned immediately.<br>
+It will not wait for 30 seconds for another 99 characters to come in.<br>
+ <br>
+This is a wrapper around os.<a href="#fdspawn-read">read</a>(). It uses select.select() to<br>
+implement the timeout.</tt></dd></dl>
+
+<dl><dt><a name="fdspawn-readline"><strong>readline</strong></a>(self, size<font color="#909090">=-1</font>)</dt><dd><tt>This reads and returns one entire line. A trailing newline is kept<br>
+in the string, but may be absent when a file ends with an incomplete<br>
+line. Note: This <a href="#fdspawn-readline">readline</a>() looks for a \r\n pair even on UNIX<br>
+because this is what the pseudo tty device returns. So contrary to what<br>
+you may expect you will receive the newline as \r\n. An empty string<br>
+is returned when EOF is hit immediately. Currently, the size argument is<br>
+mostly ignored, so this behavior is not standard for a file-like<br>
+object. If size is 0 then an empty string is returned.</tt></dd></dl>
+
+<dl><dt><a name="fdspawn-readlines"><strong>readlines</strong></a>(self, sizehint<font color="#909090">=-1</font>)</dt><dd><tt>This reads until EOF using <a href="#fdspawn-readline">readline</a>() and returns a list containing<br>
+the lines thus read. The optional "sizehint" argument is ignored.</tt></dd></dl>
+
+<dl><dt><a name="fdspawn-send"><strong>send</strong></a>(self, s)</dt><dd><tt>This sends a string to the child process. This returns the number of<br>
+bytes written. If a log file was set then the data is also written to<br>
+the log.</tt></dd></dl>
+
+<dl><dt><a name="fdspawn-sendcontrol"><strong>sendcontrol</strong></a>(self, char)</dt><dd><tt>This sends a control character to the child such as Ctrl-C or<br>
+Ctrl-D. For example, to send a Ctrl-G (ASCII 7)::<br>
+ <br>
+ child.<a href="#fdspawn-sendcontrol">sendcontrol</a>('g')<br>
+ <br>
+See also, <a href="#fdspawn-sendintr">sendintr</a>() and <a href="#fdspawn-sendeof">sendeof</a>().</tt></dd></dl>
+
+<dl><dt><a name="fdspawn-sendeof"><strong>sendeof</strong></a>(self)</dt><dd><tt>This sends an EOF to the child. This sends a character which causes<br>
+the pending parent output buffer to be sent to the waiting child<br>
+program without waiting for end-of-line. If it is the first character<br>
+of the line, the <a href="#fdspawn-read">read</a>() in the user program returns 0, which signifies<br>
+end-of-file. This means to work as expected a <a href="#fdspawn-sendeof">sendeof</a>() has to be<br>
+called at the beginning of a line. This method does not send a newline.<br>
+It is the responsibility of the caller to ensure the eof is sent at the<br>
+beginning of a line.</tt></dd></dl>
+
+<dl><dt><a name="fdspawn-sendintr"><strong>sendintr</strong></a>(self)</dt><dd><tt>This sends a SIGINT to the child. It does not require<br>
+the SIGINT to be the first character on a line.</tt></dd></dl>
+
+<dl><dt><a name="fdspawn-sendline"><strong>sendline</strong></a>(self, s<font color="#909090">=''</font>)</dt><dd><tt>This is like <a href="#fdspawn-send">send</a>(), but it adds a line feed (os.linesep). This<br>
+returns the number of bytes written.</tt></dd></dl>
+
+<dl><dt><a name="fdspawn-setecho"><strong>setecho</strong></a>(self, state)</dt><dd><tt>This sets the terminal echo mode on or off. Note that anything the<br>
+child sent before the echo will be lost, so you should be sure that<br>
+your input buffer is empty before you call <a href="#fdspawn-setecho">setecho</a>(). For example, the<br>
+following will work as expected::<br>
+ <br>
+ p = pexpect.<a href="pexpect.html#spawn">spawn</a>('cat')<br>
+ p.sendline ('1234') # We will see this twice (once from tty echo and again from cat).<br>
+ p.expect (['1234'])<br>
+ p.expect (['1234'])<br>
+ p.<a href="#fdspawn-setecho">setecho</a>(False) # Turn off tty echo<br>
+ p.sendline ('abcd') # We will set this only once (echoed by cat).<br>
+ p.sendline ('wxyz') # We will set this only once (echoed by cat)<br>
+ p.expect (['abcd'])<br>
+ p.expect (['wxyz'])<br>
+ <br>
+The following WILL NOT WORK because the lines sent before the setecho<br>
+will be lost::<br>
+ <br>
+ p = pexpect.<a href="pexpect.html#spawn">spawn</a>('cat')<br>
+ p.sendline ('1234') # We will see this twice (once from tty echo and again from cat).<br>
+ p.<a href="#fdspawn-setecho">setecho</a>(False) # Turn off tty echo<br>
+ p.sendline ('abcd') # We will set this only once (echoed by cat).<br>
+ p.sendline ('wxyz') # We will set this only once (echoed by cat)<br>
+ p.expect (['1234'])<br>
+ p.expect (['1234'])<br>
+ p.expect (['abcd'])<br>
+ p.expect (['wxyz'])</tt></dd></dl>
+
+<dl><dt><a name="fdspawn-setlog"><strong>setlog</strong></a>(self, fileobject)</dt><dd><tt>This method is no longer supported or allowed.</tt></dd></dl>
+
+<dl><dt><a name="fdspawn-setmaxread"><strong>setmaxread</strong></a>(self, maxread)</dt><dd><tt>This method is no longer supported or allowed. I don't like getters<br>
+and setters without a good reason.</tt></dd></dl>
+
+<dl><dt><a name="fdspawn-setwinsize"><strong>setwinsize</strong></a>(self, r, c)</dt><dd><tt>This sets the terminal window size of the child tty. This will cause<br>
+a SIGWINCH signal to be sent to the child. This does not change the<br>
+physical window size. It changes the size reported to TTY-aware<br>
+applications like vi or curses -- applications that respond to the<br>
+SIGWINCH signal.</tt></dd></dl>
+
+<dl><dt><a name="fdspawn-wait"><strong>wait</strong></a>(self)</dt><dd><tt>This waits until the child exits. This is a blocking call. This will<br>
+not read any data from the child, so this will block forever if the<br>
+child has unread output and has terminated. In other words, the child<br>
+may have printed output then called exit(); but, technically, the child<br>
+is still alive until its output is read.</tt></dd></dl>
+
+<dl><dt><a name="fdspawn-waitnoecho"><strong>waitnoecho</strong></a>(self, timeout<font color="#909090">=-1</font>)</dt><dd><tt>This waits until the terminal ECHO flag is set False. This returns<br>
+True if the echo mode is off. This returns False if the ECHO flag was<br>
+not set False before the timeout. This can be used to detect when the<br>
+child is waiting for a password. Usually a child application will turn<br>
+off echo mode when it is waiting for the user to enter a password. For<br>
+example, instead of expecting the "password:" prompt you can wait for<br>
+the child to set ECHO off::<br>
+ <br>
+ p = pexpect.<a href="pexpect.html#spawn">spawn</a> ('ssh
[email protected]')<br>
+ p.<a href="#fdspawn-waitnoecho">waitnoecho</a>()<br>
+ p.<a href="#fdspawn-sendline">sendline</a>(mypassword)<br>
+ <br>
+If timeout is None then this method to block forever until ECHO flag is<br>
+False.</tt></dd></dl>
+
+<dl><dt><a name="fdspawn-write"><strong>write</strong></a>(self, s)</dt><dd><tt>This is similar to <a href="#fdspawn-send">send</a>() except that there is no return value.</tt></dd></dl>
+
+<dl><dt><a name="fdspawn-writelines"><strong>writelines</strong></a>(self, sequence)</dt><dd><tt>This calls <a href="#fdspawn-write">write</a>() for each element in the sequence. The sequence<br>
+can be any iterable object producing strings, typically a list of<br>
+strings. This does not add line separators There is no return value.</tt></dd></dl>
+
+<hr>
+Data descriptors inherited from <a href="pexpect.html#spawn">pexpect.spawn</a>:<br>
+<dl><dt><strong>__dict__</strong></dt>
+<dd><tt>dictionary for instance variables (if defined)</tt></dd>
+</dl>
+<dl><dt><strong>__weakref__</strong></dt>
+<dd><tt>list of weak references to the object (if defined)</tt></dd>
+</dl>
+</td></tr></table></td></tr></table><p>
+<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
+<tr bgcolor="#55aa55">
+<td colspan=3 valign=bottom> <br>
+<font color="#ffffff" face="helvetica, arial"><big><strong>Data</strong></big></font></td></tr>
+
+<tr><td bgcolor="#55aa55"><tt> </tt></td><td> </td>
+<td width="100%"><strong>__all__</strong> = ['fdspawn']<br>
+<strong>__revision__</strong> = '$Revision: 399 $'<br>
+<strong>__version__</strong> = '2.3'</td></tr></table>
+</body></html>
\ No newline at end of file