/[dejagnu]/dejagnu/lib/ftp.exp
ViewVC logotype

Diff of /dejagnu/lib/ftp.exp

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.4 by rsavoye, Mon Mar 17 02:25:07 2003 UTC revision 1.5 by bje, Thu Aug 7 03:42:43 2003 UTC
# Line 29  proc ftp_open { host } { Line 29  proc ftp_open { host } {
29      global board_info      global board_info
30    
31      if [board_info $host exists name] {      if [board_info $host exists name] {
32          set host [board_info $host name];          set host [board_info $host name]
33      }      }
34    
35      if [board_info $host exists ftp_fileid] {      if [board_info $host exists ftp_fileid] {
36          return [board_info $host ftp_fileid];          return [board_info $host ftp_fileid]
37      }      }
38    
39      if [board_info $host exists hostname] {      if [board_info $host exists hostname] {
40          set remotehost [board_info $host hostname];          set remotehost [board_info $host hostname]
41      } else {      } else {
42          set remotehost $host;          set remotehost $host
43      }      }
44    
45      # LoseQVT tends to get stuck sometimes; we'll loop around a few million      # LoseQVT tends to get stuck sometimes; we'll loop around a few million
46      # times when it gets a "connection refused".      # times when it gets a "connection refused".
47      set spawn_id -1;      set spawn_id -1
48      set count 3;      set count 3
49      while { $spawn_id < 0 && $count >= 0 } {      while { $spawn_id < 0 && $count >= 0 } {
50          spawn ftp -n $remotehost;          spawn ftp -n $remotehost
51          expect {          expect {
52              -i $spawn_id -re ".*220.*$prompt" { }              -i $spawn_id -re ".*220.*$prompt" { }
53              -i $spawn_id -re ".*Connection refused.*$prompt" {              -i $spawn_id -re ".*Connection refused.*$prompt" {
54                  sleep 2;                  sleep 2
55                  send "open $remotehost\n";                  send "open $remotehost\n"
56                  exp_continue                  exp_continue
57              }              }
58              -i $spawn_id default {              -i $spawn_id default {
59                  close -i $spawn_id;                  close -i $spawn_id
60                  wait -i $spawn_id;                  wait -i $spawn_id
61                  set spawn_id -1;                  set spawn_id -1
62              }              }
63          }          }
64          incr count -1;          incr count -1
65      }      }
66      if { $spawn_id < 0 } {      if { $spawn_id < 0 } {
67          return -1;          return -1
68      }      }
69      set board_info($host,ftp_fileid) $spawn_id;      set board_info($host,ftp_fileid) $spawn_id
70      if [board_info $host exists ftp_username] {      if [board_info $host exists ftp_username] {
71          if [board_info $host exists ftp_password] {          if [board_info $host exists ftp_password] {
72              set command "user [board_info $host ftp_username] [board_info $host ftp_password]\n";              set command "user [board_info $host ftp_username] [board_info $host ftp_password]\n"
73          } else {          } else {
74              set command "user [board_info $host ftp_username]\n";              set command "user [board_info $host ftp_username]\n"
75          }          }
76          send "$command"          send "$command"
77          expect {          expect {
78              -i $spawn_id -re ".*230.*$prompt" { }              -i $spawn_id -re ".*230.*$prompt" { }
79              -i $spawn_id default {              -i $spawn_id default {
80                  close -i $spawn_id;                  close -i $spawn_id
81                  wait -i $spawn_id;                  wait -i $spawn_id
82                  return -1;                  return -1
83              }              }
84          }          }
85      }      }
# Line 88  proc ftp_open { host } { Line 88  proc ftp_open { host } {
88      expect {      expect {
89          -i $spawn_id -re "200.*$prompt" { }          -i $spawn_id -re "200.*$prompt" { }
90          -i $spawn_id timeout {          -i $spawn_id timeout {
91              close -i $spawn_id;              close -i $spawn_id
92              wait -i $spawn_id;              wait -i $spawn_id
93              return -1              return -1
94          }          }
95      }      }
96      if [board_info $host exists ftp_directory] {      if [board_info $host exists ftp_directory] {
97          send "cd [board_info $host ftp_directory]\n";          send "cd [board_info $host ftp_directory]\n"
98          expect {          expect {
99              -i $spawn_id -re "250.*$prompt" { }              -i $spawn_id -re "250.*$prompt" { }
100              -i $spawn_id default {              -i $spawn_id default {
101                  close -i $spawn_id;                  close -i $spawn_id
102                  wait -i $spawn_id;                  wait -i $spawn_id
103                  return -1;                  return -1
104              }              }
105          }          }
106      }      }
107    
108      if [board_info $host exists ftp_no_passive] {      if [board_info $host exists ftp_no_passive] {
109          send "passive\n";          send "passive\n"
110          expect {          expect {
111              -i $spawn_id -re "Passive mode off.*$prompt" { }              -i $spawn_id -re "Passive mode off.*$prompt" { }
112              -i $spawn_id -re "Passive mode on.*$prompt" {              -i $spawn_id -re "Passive mode on.*$prompt" {
113                  send "passive\n";                  send "passive\n"
114                  exp_continue;                  exp_continue
115              }              }
116              -i $spawn_id -re ".*$prompt" { }              -i $spawn_id -re ".*$prompt" { }
117          }          }
118      }      }
119    
120      set board_info($host,ftp_fileid) $spawn_id;      set board_info($host,ftp_fileid) $spawn_id
121      return $spawn_id;      return $spawn_id
122  }  }
123    
124  #  #
# Line 129  proc ftp_upload { host remotefile localf Line 129  proc ftp_upload { host remotefile localf
129    
130      verbose "ftping $remotefile from $host to $localfile"      verbose "ftping $remotefile from $host to $localfile"
131      set timeout 15      set timeout 15
132      set spawn_id [ftp_open $host];      set spawn_id [ftp_open $host]
133      if { $spawn_id < 0 } {      if { $spawn_id < 0 } {
134          return "";          return ""
135      }      }
136      set loop 1;      set loop 1
137    
138      while { $loop } {      while { $loop } {
139          send -i $spawn_id "get $remotefile $localfile\n";          send -i $spawn_id "get $remotefile $localfile\n"
140          expect {          expect {
141              -i $spawn_id -re ".*Too many open files.*$prompt" {              -i $spawn_id -re ".*Too many open files.*$prompt" {
142                  ftp_close $host;                  ftp_close $host
143              }              }
144              -i $spawn_id -re ".*No such file or directory.*$prompt" {              -i $spawn_id -re ".*No such file or directory.*$prompt" {
145                  set loop 0;                  set loop 0
146                  set remotefile "";                  set remotefile ""
147              }              }
148              -i $spawn_id -re "(^|\[\r\n\])226.*$prompt" { set loop 0; }              -i $spawn_id -re "(^|\[\r\n\])226.*$prompt" { set loop 0; }
149              -i $spawn_id -re "(^|\[\r\n\])\[0-9\]\[0-9\]\[0-9\].*$prompt" {              -i $spawn_id -re "(^|\[\r\n\])\[0-9\]\[0-9\]\[0-9\].*$prompt" {
150                  set loop 0;                  set loop 0
151                  set remotefile "";                  set remotefile ""
152              }              }
153              -i $spawn_id default {              -i $spawn_id default {
154                  ftp_close $host;                  ftp_close $host
155              }              }
156          }          }
157          if { $loop } {          if { $loop } {
158              set spawn_id [ftp_open $host];              set spawn_id [ftp_open $host]
159              if { $spawn_id < 0 } {              if { $spawn_id < 0 } {
160                  return "";                  return ""
161              }              }
162          }          }
163      }      }
164      return $localfile;      return $localfile
165  }  }
166    
167  #  #
# Line 173  proc ftp_download { host localfile remot Line 173  proc ftp_download { host localfile remot
173      verbose "putting $localfile $remotefile"      verbose "putting $localfile $remotefile"
174    
175      if [board_info $host exists hostname] {      if [board_info $host exists hostname] {
176          set remotehost [board_info $host hostname];          set remotehost [board_info $host hostname]
177      } else {      } else {
178          set remotehost $host;          set remotehost $host
179      }      }
180            
181      set spawn_id [ftp_open $host];      set spawn_id [ftp_open $host]
182      if { $spawn_id < 0 } {      if { $spawn_id < 0 } {
183          return "";          return ""
184      }      }
185      set loop 1;      set loop 1
186    
187      while { $loop } {      while { $loop } {
188          send -i $spawn_id "put $localfile $remotefile\n"          send -i $spawn_id "put $localfile $remotefile\n"
189          expect {          expect {
190              -i $spawn_id -re ".*Too many open files.*$prompt" {              -i $spawn_id -re ".*Too many open files.*$prompt" {
191                  ftp_close $host;                  ftp_close $host
192              }              }
193              -i $spawn_id -re ".*No such file or directory.*$prompt" {              -i $spawn_id -re ".*No such file or directory.*$prompt" {
194                  set loop 0;                  set loop 0
195                  set remotefile "";                  set remotefile ""
196              }              }
197              -re "(^|\[\r\n\])150.*connection for (.*) \[(\]\[0-9.,\]+\\)\[\r\n\]" {              -re "(^|\[\r\n\])150.*connection for (.*) \[(\]\[0-9.,\]+\\)\[\r\n\]" {
198                  set remotefile $expect_out(2,string);                  set remotefile $expect_out(2,string)
199                  exp_continue;                  exp_continue
200              }              }
201              -i $spawn_id -re "(^|\[\r\n\])226.*$prompt" {              -i $spawn_id -re "(^|\[\r\n\])226.*$prompt" {
202                  set loop 0;                  set loop 0
203              }              }
204              -i $spawn_id -re "Timeout.*$prompt" {              -i $spawn_id -re "Timeout.*$prompt" {
205                  ftp_close $host;                  ftp_close $host
206              }              }
207              -i $spawn_id -re "(^|\[\r\n\])\[0-9\]\[0-9\]\[0-9\].*$prompt" {              -i $spawn_id -re "(^|\[\r\n\])\[0-9\]\[0-9\]\[0-9\].*$prompt" {
208                  set loop 0;                  set loop 0
209                  set remotefile "";                  set remotefile ""
210              }              }
211              -i $spawn_id default {              -i $spawn_id default {
212                  ftp_close $host;                  ftp_close $host
213              }              }
214          }          }
215          if { $loop } {          if { $loop } {
216              set spawn_id [ftp_open $host];              set spawn_id [ftp_open $host]
217              if { $spawn_id < 0 } {              if { $spawn_id < 0 } {
218                  return "";                  return ""
219              }              }
220          }          }
221      }      }
222      return $remotefile;      return $remotefile
223  }  }
224    
225  #  #
# Line 229  proc ftp_close { host } { Line 229  proc ftp_close { host } {
229      global board_info      global board_info
230    
231      if [board_info $host exists name] {      if [board_info $host exists name] {
232          set host [board_info $host name];          set host [board_info $host name]
233      }      }
234    
235      if ![board_info $host exists ftp_fileid] {      if ![board_info $host exists ftp_fileid] {
236          return "";          return ""
237      }      }
238    
239      set spawn_id [board_info $host ftp_fileid];      set spawn_id [board_info $host ftp_fileid]
240      unset board_info($host,ftp_fileid);      unset board_info($host,ftp_fileid)
241    
242      send -i $spawn_id "quit\n"      send -i $spawn_id "quit\n"
243      close -i $spawn_id      close -i $spawn_id
244      wait -i $spawn_id;      wait -i $spawn_id
245      return "";      return ""
246  }  }

Legend:
Removed from v.1.4  
changed lines
  Added in v.1.5

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26