]> git.sesse.net Git - betaftpd/blob - ascii.c
Updated documentation to tell that root can't FTP anymore.
[betaftpd] / ascii.c
1 /*  ascii.c: BetaFTPD ascii filters, written by Beau Kuiper
2     Copyright (C) 1999-2000 Steinar H. Gunderson
3
4     This program is is free software; you can redistribute it and/or modify
5     it under the terms of the GNU General Public License, version 2 if the
6     License as published by the Free Software Foundation.
7
8     This program is distributed in the hope that it will be useful,
9     but WITHOUT ANY WARRANTY; without even the implied warranty of
10     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11     GNU General Public License for more details.
12
13     You should have received a copy of the GNU General Public License
14     along with this program; if not, write to the Free Software
15     Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
16 */
17
18 #if HAVE_CONFIG_H
19 #include <config.h>
20 #endif
21
22 #if WANT_ASCII
23
24 /*
25  * ascii_findlength():
26  *              Figures out how much read data was transferred if
27  *              a full buffer wasn't sent.
28  */
29 int ascii_findlength(const char * const buffer, const int tranlen)
30 {
31         int count = 0, pos = 0;
32                 
33         while (pos < tranlen) {
34                 const char ch = buffer[count++];
35                 if (ch != 13) {
36                         if (ch == 10) pos++;
37                         pos++;
38                 }
39         }
40         return count;
41 }
42
43 /*
44  * ascii_downloadfilter():
45  *              Changes LF to CR/LF on the fly (from buffer to
46  *              outbuffer), for ASCII downloads.
47  */
48 int ascii_downloadfilter(const char * const buffer, char * const outbuffer, const int length)
49 {
50         int count;
51         char *b2ptr = outbuffer;
52                 
53         for (count = 0; count < length; count++) {
54                 const char ch = buffer[count];
55
56                 if (ch != 13) {
57                         if (ch == 10) {
58                                 *b2ptr++ = 13;
59                         }
60                         *b2ptr++ = ch;
61                 }
62         }
63         return (b2ptr - outbuffer);
64 }
65
66 /*
67  * ascii_uploadfilter():
68  *              Removes all CRs (ASCII 13) from buffer on the fly,
69  *              for ASCII uploads.
70  */
71 int ascii_uploadfilter(char * const buffer, const int length)
72 {
73         int count;
74         char *b2ptr = buffer;
75                 
76         for (count = 0; count < length; count++) {
77                 const char ch = buffer[count];
78                 if (ch != 13) {
79                         *b2ptr++ = ch;
80                 }
81         }
82         return (b2ptr - buffer);
83 }
84
85 #endif /* WANT_ASCII */