1 /*
2  * wzdftpd - a modular and cool ftp server
3  * Copyright (C) 2002-2004  Pierre Chifflier
4  *
5  * This program is free software; you can redistribute it and/or
6  * modify it under the terms of the GNU General Public License
7  * as published by the Free Software Foundation; either version 2
8  * of the License, or (at your option) any later version.
9  *
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13  * GNU General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public License
16  * along with this program; if not, write to the Free Software
17  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
18  *
19  * As a special exemption, Pierre Chifflier
20  * and other respective copyright holders give permission to link this program
21  * with OpenSSL, and distribute the resulting executable, without including
22  * the source code for OpenSSL in the source distribution.
23  */
24 
25 #ifndef __WZD_PROTOCOL__
26 #define __WZD_PROTOCOL__
27 
28 /** \file wzd_protocol.h
29  * \brief FTP protocol routines
30  *
31  * \addtogroup libwzd_core
32  * @{
33  */
34 
35 struct ftp_command_t {
36   wzd_string_t * command_name;
37   wzd_string_t * args;
38 
39   wzd_command_t * command;
40 };
41 
42 /** \brief Remove extra characters from FTP command line
43  */
44 void cleanup_ftp_command(char * buffer, size_t length);
45 
46 /** \brief Free memory used by a \a ftp_command_t structure */
47 void free_ftp_command(struct ftp_command_t * command);
48 
49 /** \brief Fast token identification function.
50  *
51  * Converts the string into an integer and return the corresponding
52  * identifier. Luckily, all FTP commands are no more than 4 characters.
53  */
54 int identify_token(const char *token);
55 
56 /** \brief Parse and identify FTP command
57  *
58  * \note Input string is modified.
59  */
60 struct ftp_command_t * parse_ftp_command(wzd_string_t * s);
61 
62 /** @} */
63 
64 #endif /* __WZD_PROTOCOL__ */
65 
66