annotate packages/net/ftpclient/current/include/ftpclient.h @ 1650:0e6a7d89dd0e

New stream oriented functions - ftp_get_var()/ftp_put_var()
author gthomas
date Mon, 24 May 2004 19:31:01 +0000
parents d2c90368aeef
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
196
9b55e9c69693 Merge from eCos master repository on 2001-11-23-15:32:03-GMT
jlarmour
parents:
diff changeset
1 #ifndef CYGONCE_NET_FTPCLIENT_FTPCLIENT_H
9b55e9c69693 Merge from eCos master repository on 2001-11-23-15:32:03-GMT
jlarmour
parents:
diff changeset
2 #define CYGONCE_NET_FTPCLIENT_FTPCLIENT_H
9b55e9c69693 Merge from eCos master repository on 2001-11-23-15:32:03-GMT
jlarmour
parents:
diff changeset
3
9b55e9c69693 Merge from eCos master repository on 2001-11-23-15:32:03-GMT
jlarmour
parents:
diff changeset
4 //==========================================================================
9b55e9c69693 Merge from eCos master repository on 2001-11-23-15:32:03-GMT
jlarmour
parents:
diff changeset
5 //
9b55e9c69693 Merge from eCos master repository on 2001-11-23-15:32:03-GMT
jlarmour
parents:
diff changeset
6 // ftpclient.h
9b55e9c69693 Merge from eCos master repository on 2001-11-23-15:32:03-GMT
jlarmour
parents:
diff changeset
7 //
9b55e9c69693 Merge from eCos master repository on 2001-11-23-15:32:03-GMT
jlarmour
parents:
diff changeset
8 // A simple FTP client
9b55e9c69693 Merge from eCos master repository on 2001-11-23-15:32:03-GMT
jlarmour
parents:
diff changeset
9 //
9b55e9c69693 Merge from eCos master repository on 2001-11-23-15:32:03-GMT
jlarmour
parents:
diff changeset
10 //==========================================================================
208
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 196
diff changeset
11 //####ECOSGPLCOPYRIGHTBEGIN####
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 196
diff changeset
12 // -------------------------------------------
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 196
diff changeset
13 // This file is part of eCos, the Embedded Configurable Operating System.
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 196
diff changeset
14 // Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.
1650
0e6a7d89dd0e New stream oriented functions - ftp_get_var()/ftp_put_var()
gthomas
parents: 210
diff changeset
15 // Copyright (C) 2004 Gary Thomas
208
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 196
diff changeset
16 //
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 196
diff changeset
17 // eCos is free software; you can redistribute it and/or modify it under
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 196
diff changeset
18 // the terms of the GNU General Public License as published by the Free
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 196
diff changeset
19 // Software Foundation; either version 2 or (at your option) any later version.
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 196
diff changeset
20 //
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 196
diff changeset
21 // eCos is distributed in the hope that it will be useful, but WITHOUT ANY
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 196
diff changeset
22 // WARRANTY; without even the implied warranty of MERCHANTABILITY or
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 196
diff changeset
23 // FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 196
diff changeset
24 // for more details.
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 196
diff changeset
25 //
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 196
diff changeset
26 // You should have received a copy of the GNU General Public License along
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 196
diff changeset
27 // with eCos; if not, write to the Free Software Foundation, Inc.,
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 196
diff changeset
28 // 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 196
diff changeset
29 //
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 196
diff changeset
30 // As a special exception, if other files instantiate templates or use macros
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 196
diff changeset
31 // or inline functions from this file, or you compile this file and link it
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 196
diff changeset
32 // with other works to produce a work based on this file, this file does not
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 196
diff changeset
33 // by itself cause the resulting work to be covered by the GNU General Public
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 196
diff changeset
34 // License. However the source code for this file must still be made available
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 196
diff changeset
35 // in accordance with section (3) of the GNU General Public License.
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 196
diff changeset
36 //
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 196
diff changeset
37 // This exception does not invalidate any other reasons why a work based on
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 196
diff changeset
38 // this file might be covered by the GNU General Public License.
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 196
diff changeset
39 //
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 196
diff changeset
40 // Alternative licenses for eCos may be arranged by contacting Red Hat, Inc.
210
d2c90368aeef Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents: 208
diff changeset
41 // at http://sources.redhat.com/ecos/ecos-license/
208
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 196
diff changeset
42 // -------------------------------------------
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 196
diff changeset
43 //####ECOSGPLCOPYRIGHTEND####
196
9b55e9c69693 Merge from eCos master repository on 2001-11-23-15:32:03-GMT
jlarmour
parents:
diff changeset
44 //==========================================================================
9b55e9c69693 Merge from eCos master repository on 2001-11-23-15:32:03-GMT
jlarmour
parents:
diff changeset
45 //#####DESCRIPTIONBEGIN####
9b55e9c69693 Merge from eCos master repository on 2001-11-23-15:32:03-GMT
jlarmour
parents:
diff changeset
46 //
9b55e9c69693 Merge from eCos master repository on 2001-11-23-15:32:03-GMT
jlarmour
parents:
diff changeset
47 // Author(s): andrew.lunn@ascom.ch
9b55e9c69693 Merge from eCos master repository on 2001-11-23-15:32:03-GMT
jlarmour
parents:
diff changeset
48 // Contributors: andrew.lunn@ascom.ch
9b55e9c69693 Merge from eCos master repository on 2001-11-23-15:32:03-GMT
jlarmour
parents:
diff changeset
49 // Date: 2001-11-4
9b55e9c69693 Merge from eCos master repository on 2001-11-23-15:32:03-GMT
jlarmour
parents:
diff changeset
50 // Purpose:
9b55e9c69693 Merge from eCos master repository on 2001-11-23-15:32:03-GMT
jlarmour
parents:
diff changeset
51 // Description:
9b55e9c69693 Merge from eCos master repository on 2001-11-23-15:32:03-GMT
jlarmour
parents:
diff changeset
52 //
9b55e9c69693 Merge from eCos master repository on 2001-11-23-15:32:03-GMT
jlarmour
parents:
diff changeset
53 //####DESCRIPTIONEND####
9b55e9c69693 Merge from eCos master repository on 2001-11-23-15:32:03-GMT
jlarmour
parents:
diff changeset
54 //
9b55e9c69693 Merge from eCos master repository on 2001-11-23-15:32:03-GMT
jlarmour
parents:
diff changeset
55 //==========================================================================
9b55e9c69693 Merge from eCos master repository on 2001-11-23-15:32:03-GMT
jlarmour
parents:
diff changeset
56
1650
0e6a7d89dd0e New stream oriented functions - ftp_get_var()/ftp_put_var()
gthomas
parents: 210
diff changeset
57 // User-defined function for printing diagnostic messages
196
9b55e9c69693 Merge from eCos master repository on 2001-11-23-15:32:03-GMT
jlarmour
parents:
diff changeset
58 typedef void (*ftp_printf_t)(unsigned error, const char *, ...);
1650
0e6a7d89dd0e New stream oriented functions - ftp_get_var()/ftp_put_var()
gthomas
parents: 210
diff changeset
59 // User-defined function used to provide data
0e6a7d89dd0e New stream oriented functions - ftp_get_var()/ftp_put_var()
gthomas
parents: 210
diff changeset
60 typedef int (*ftp_read_t)(char *buf, int bufsize, void *priv);
0e6a7d89dd0e New stream oriented functions - ftp_get_var()/ftp_put_var()
gthomas
parents: 210
diff changeset
61 // User-defined function used to process data
0e6a7d89dd0e New stream oriented functions - ftp_get_var()/ftp_put_var()
gthomas
parents: 210
diff changeset
62 typedef int (*ftp_write_t)(char *buf, int bufsize, void *priv);
196
9b55e9c69693 Merge from eCos master repository on 2001-11-23-15:32:03-GMT
jlarmour
parents:
diff changeset
63
9b55e9c69693 Merge from eCos master repository on 2001-11-23-15:32:03-GMT
jlarmour
parents:
diff changeset
64 /* Use the FTP protocol to retrieve a file from a server. Only binary
9b55e9c69693 Merge from eCos master repository on 2001-11-23-15:32:03-GMT
jlarmour
parents:
diff changeset
65 mode is supported. The filename can include a directory name. Only
9b55e9c69693 Merge from eCos master repository on 2001-11-23-15:32:03-GMT
jlarmour
parents:
diff changeset
66 use unix style / not M$'s \. The file is placed into buf. buf has
9b55e9c69693 Merge from eCos master repository on 2001-11-23-15:32:03-GMT
jlarmour
parents:
diff changeset
67 maximum size buf_size. If the file is bigger than this, the
9b55e9c69693 Merge from eCos master repository on 2001-11-23-15:32:03-GMT
jlarmour
parents:
diff changeset
68 transfer fails and FTP_TOOBIG is returned. Other error codes as
9b55e9c69693 Merge from eCos master repository on 2001-11-23-15:32:03-GMT
jlarmour
parents:
diff changeset
69 listed below can also be returned. If the transfer is succseful the
9b55e9c69693 Merge from eCos master repository on 2001-11-23-15:32:03-GMT
jlarmour
parents:
diff changeset
70 number of bytes received is returned. */
9b55e9c69693 Merge from eCos master repository on 2001-11-23-15:32:03-GMT
jlarmour
parents:
diff changeset
71
9b55e9c69693 Merge from eCos master repository on 2001-11-23-15:32:03-GMT
jlarmour
parents:
diff changeset
72 int ftp_get(char * hostname,
9b55e9c69693 Merge from eCos master repository on 2001-11-23-15:32:03-GMT
jlarmour
parents:
diff changeset
73 char * username,
9b55e9c69693 Merge from eCos master repository on 2001-11-23-15:32:03-GMT
jlarmour
parents:
diff changeset
74 char * passwd,
9b55e9c69693 Merge from eCos master repository on 2001-11-23-15:32:03-GMT
jlarmour
parents:
diff changeset
75 char * filename,
9b55e9c69693 Merge from eCos master repository on 2001-11-23-15:32:03-GMT
jlarmour
parents:
diff changeset
76 char * buf,
9b55e9c69693 Merge from eCos master repository on 2001-11-23-15:32:03-GMT
jlarmour
parents:
diff changeset
77 unsigned buf_size,
9b55e9c69693 Merge from eCos master repository on 2001-11-23-15:32:03-GMT
jlarmour
parents:
diff changeset
78 ftp_printf_t ftp_printf);
9b55e9c69693 Merge from eCos master repository on 2001-11-23-15:32:03-GMT
jlarmour
parents:
diff changeset
79
1650
0e6a7d89dd0e New stream oriented functions - ftp_get_var()/ftp_put_var()
gthomas
parents: 210
diff changeset
80 //
0e6a7d89dd0e New stream oriented functions - ftp_get_var()/ftp_put_var()
gthomas
parents: 210
diff changeset
81 // Just like 'ftp_get()' except that the "write()" function is called
0e6a7d89dd0e New stream oriented functions - ftp_get_var()/ftp_put_var()
gthomas
parents: 210
diff changeset
82 // as data arrives instead of using a fixed buffer. Returns the total
0e6a7d89dd0e New stream oriented functions - ftp_get_var()/ftp_put_var()
gthomas
parents: 210
diff changeset
83 // amount of data read, or an error indication (negative codes)
0e6a7d89dd0e New stream oriented functions - ftp_get_var()/ftp_put_var()
gthomas
parents: 210
diff changeset
84 //
0e6a7d89dd0e New stream oriented functions - ftp_get_var()/ftp_put_var()
gthomas
parents: 210
diff changeset
85 int ftp_get_var(char *hostname,
0e6a7d89dd0e New stream oriented functions - ftp_get_var()/ftp_put_var()
gthomas
parents: 210
diff changeset
86 char *username,
0e6a7d89dd0e New stream oriented functions - ftp_get_var()/ftp_put_var()
gthomas
parents: 210
diff changeset
87 char *passwd,
0e6a7d89dd0e New stream oriented functions - ftp_get_var()/ftp_put_var()
gthomas
parents: 210
diff changeset
88 char *filename,
0e6a7d89dd0e New stream oriented functions - ftp_get_var()/ftp_put_var()
gthomas
parents: 210
diff changeset
89 ftp_write_t ftp_write,
0e6a7d89dd0e New stream oriented functions - ftp_get_var()/ftp_put_var()
gthomas
parents: 210
diff changeset
90 void *ftp_write_priv,
0e6a7d89dd0e New stream oriented functions - ftp_get_var()/ftp_put_var()
gthomas
parents: 210
diff changeset
91 ftp_printf_t ftp_printf);
0e6a7d89dd0e New stream oriented functions - ftp_get_var()/ftp_put_var()
gthomas
parents: 210
diff changeset
92
196
9b55e9c69693 Merge from eCos master repository on 2001-11-23-15:32:03-GMT
jlarmour
parents:
diff changeset
93 /*Use the FTP protocol to send a file from a server. Only binary mode
9b55e9c69693 Merge from eCos master repository on 2001-11-23-15:32:03-GMT
jlarmour
parents:
diff changeset
94 is supported. The filename can include a directory name. Only use
9b55e9c69693 Merge from eCos master repository on 2001-11-23-15:32:03-GMT
jlarmour
parents:
diff changeset
95 unix style / not M$'s \. The contents of buf is placed into the file
9b55e9c69693 Merge from eCos master repository on 2001-11-23-15:32:03-GMT
jlarmour
parents:
diff changeset
96 on the server. If an error occurs one of the codes as listed below
9b55e9c69693 Merge from eCos master repository on 2001-11-23-15:32:03-GMT
jlarmour
parents:
diff changeset
97 will be returned. If the transfer is succseful zero is returned.*/
9b55e9c69693 Merge from eCos master repository on 2001-11-23-15:32:03-GMT
jlarmour
parents:
diff changeset
98
9b55e9c69693 Merge from eCos master repository on 2001-11-23-15:32:03-GMT
jlarmour
parents:
diff changeset
99 int ftp_put(char * hostname,
9b55e9c69693 Merge from eCos master repository on 2001-11-23-15:32:03-GMT
jlarmour
parents:
diff changeset
100 char * username,
9b55e9c69693 Merge from eCos master repository on 2001-11-23-15:32:03-GMT
jlarmour
parents:
diff changeset
101 char * passwd,
9b55e9c69693 Merge from eCos master repository on 2001-11-23-15:32:03-GMT
jlarmour
parents:
diff changeset
102 char * filename,
9b55e9c69693 Merge from eCos master repository on 2001-11-23-15:32:03-GMT
jlarmour
parents:
diff changeset
103 char * buf,
9b55e9c69693 Merge from eCos master repository on 2001-11-23-15:32:03-GMT
jlarmour
parents:
diff changeset
104 unsigned buf_size,
9b55e9c69693 Merge from eCos master repository on 2001-11-23-15:32:03-GMT
jlarmour
parents:
diff changeset
105 ftp_printf_t ftp_printf);
9b55e9c69693 Merge from eCos master repository on 2001-11-23-15:32:03-GMT
jlarmour
parents:
diff changeset
106
1650
0e6a7d89dd0e New stream oriented functions - ftp_get_var()/ftp_put_var()
gthomas
parents: 210
diff changeset
107 //
0e6a7d89dd0e New stream oriented functions - ftp_get_var()/ftp_put_var()
gthomas
parents: 210
diff changeset
108 // Just like 'ftp_put()' except that the "read()" function is called
0e6a7d89dd0e New stream oriented functions - ftp_get_var()/ftp_put_var()
gthomas
parents: 210
diff changeset
109 // to fetch the data to write instead of using a fixed buffer. Returns
0e6a7d89dd0e New stream oriented functions - ftp_get_var()/ftp_put_var()
gthomas
parents: 210
diff changeset
110 // the total amount of data written, or an error indication (negative codes)
0e6a7d89dd0e New stream oriented functions - ftp_get_var()/ftp_put_var()
gthomas
parents: 210
diff changeset
111 //
0e6a7d89dd0e New stream oriented functions - ftp_get_var()/ftp_put_var()
gthomas
parents: 210
diff changeset
112 int ftp_put_var(char *hostname,
0e6a7d89dd0e New stream oriented functions - ftp_get_var()/ftp_put_var()
gthomas
parents: 210
diff changeset
113 char *username,
0e6a7d89dd0e New stream oriented functions - ftp_get_var()/ftp_put_var()
gthomas
parents: 210
diff changeset
114 char *passwd,
0e6a7d89dd0e New stream oriented functions - ftp_get_var()/ftp_put_var()
gthomas
parents: 210
diff changeset
115 char *filename,
0e6a7d89dd0e New stream oriented functions - ftp_get_var()/ftp_put_var()
gthomas
parents: 210
diff changeset
116 ftp_read_t ftp_read,
0e6a7d89dd0e New stream oriented functions - ftp_get_var()/ftp_put_var()
gthomas
parents: 210
diff changeset
117 void *ftp_read_priv,
0e6a7d89dd0e New stream oriented functions - ftp_get_var()/ftp_put_var()
gthomas
parents: 210
diff changeset
118 ftp_printf_t ftp_printf);
0e6a7d89dd0e New stream oriented functions - ftp_get_var()/ftp_put_var()
gthomas
parents: 210
diff changeset
119
196
9b55e9c69693 Merge from eCos master repository on 2001-11-23-15:32:03-GMT
jlarmour
parents:
diff changeset
120 /*ftp_get() and ftp_put take the name of a function to call to print
9b55e9c69693 Merge from eCos master repository on 2001-11-23-15:32:03-GMT
jlarmour
parents:
diff changeset
121 out diagnostic and error messages. This is a sample implementation
9b55e9c69693 Merge from eCos master repository on 2001-11-23-15:32:03-GMT
jlarmour
parents:
diff changeset
122 which can be used if you don't want to implement the function
9b55e9c69693 Merge from eCos master repository on 2001-11-23-15:32:03-GMT
jlarmour
parents:
diff changeset
123 yourself. error will be true when the message to print is an error
9b55e9c69693 Merge from eCos master repository on 2001-11-23-15:32:03-GMT
jlarmour
parents:
diff changeset
124 message. Otherwise the message is diagnostic, eg the commands sent
9b55e9c69693 Merge from eCos master repository on 2001-11-23-15:32:03-GMT
jlarmour
parents:
diff changeset
125 and received from the server.*/
9b55e9c69693 Merge from eCos master repository on 2001-11-23-15:32:03-GMT
jlarmour
parents:
diff changeset
126
9b55e9c69693 Merge from eCos master repository on 2001-11-23-15:32:03-GMT
jlarmour
parents:
diff changeset
127 void ftpclient_printf(unsigned error, const char *fmt, ...);
9b55e9c69693 Merge from eCos master repository on 2001-11-23-15:32:03-GMT
jlarmour
parents:
diff changeset
128
9b55e9c69693 Merge from eCos master repository on 2001-11-23-15:32:03-GMT
jlarmour
parents:
diff changeset
129 /* Error codes */
9b55e9c69693 Merge from eCos master repository on 2001-11-23-15:32:03-GMT
jlarmour
parents:
diff changeset
130
9b55e9c69693 Merge from eCos master repository on 2001-11-23-15:32:03-GMT
jlarmour
parents:
diff changeset
131 #define FTP_BAD -2 /* Catch all, socket errors etc. */
9b55e9c69693 Merge from eCos master repository on 2001-11-23-15:32:03-GMT
jlarmour
parents:
diff changeset
132 #define FTP_NOSUCHHOST -3 /* The server does not exist. */
9b55e9c69693 Merge from eCos master repository on 2001-11-23-15:32:03-GMT
jlarmour
parents:
diff changeset
133 #define FTP_BADUSER -4 /* Username/Password failed */
9b55e9c69693 Merge from eCos master repository on 2001-11-23-15:32:03-GMT
jlarmour
parents:
diff changeset
134 #define FTP_TOOBIG -5 /* Out of buffer space or disk space */
9b55e9c69693 Merge from eCos master repository on 2001-11-23-15:32:03-GMT
jlarmour
parents:
diff changeset
135 #define FTP_BADFILENAME -6 /* The file does not exist */
1650
0e6a7d89dd0e New stream oriented functions - ftp_get_var()/ftp_put_var()
gthomas
parents: 210
diff changeset
136 #define FTP_NOMEMORY -7 /* Unable to allocate memory for internal buffers */
196
9b55e9c69693 Merge from eCos master repository on 2001-11-23-15:32:03-GMT
jlarmour
parents:
diff changeset
137
1650
0e6a7d89dd0e New stream oriented functions - ftp_get_var()/ftp_put_var()
gthomas
parents: 210
diff changeset
138 #endif // CYGONCE_NET_FTPCLIENT_FTPCLIENT
196
9b55e9c69693 Merge from eCos master repository on 2001-11-23-15:32:03-GMT
jlarmour
parents:
diff changeset
139