guile-user
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

pipe buffering


From: Aidan Gauland
Subject: pipe buffering
Date: Wed, 22 Sep 2010 01:28:26 +0000 (UTC)
User-agent: Loom/3.14 (http://gmane.org/)

I'm trying to write a program using Guile's expect module to
automatically log into a telnet server, perform some action, and log
out.

This is the start of my program...

#! /usr/bin/guile -s
!#

(use-modules (ice-9 expect))
(use-modules (ice-9 popen))

(define ie-io (open-pipe* OPEN_BOTH
                          "/usr/bin/telnet"
                          "ienabler.canterbury.ac.nz" "259"))

Then I have a sexp for debugging, which shows that `expect' is getting
one character at a time from the telnet subprocess, since it only
prints out "Tmatch", instead of "Trying [IP address]..."

(let ((expect-port ie-io))
  (expect
   ((lambda (s eof?) (display s))
    (display "match"))))

I tried (setvbuf ie-io _IOLBF), but that produces the following error.

Backtrace:
In current input:
  18: 0* [setvbuf {#<input-output: soft 807be60>} 1]

<unnamed port>:18:1: In procedure setvbuf in expression (setvbuf ie-io _IOLBF):
<unnamed port>:18:1: Wrong type argument in position 1 (expecting open file
port): #<input-output: soft 807be60>
ABORT: (wrong-type-arg)

Can anyone offer any advice on how to get expect to see entire lines?

--Aidan

P.S. ienabler.canterbury.ac.nz is on the inside only of my
university's network, but this is what the output looks like up to the
first prompt...

Trying [IP address]...
Connected to ienabler.canterbury.ac.nz.
Escape character is '^]'.
Check Point FireWall-1 Client Authentication Server running on cpgate1
User: 





reply via email to

[Prev in Thread] Current Thread [Next in Thread]