-/* Note: This code assumes that "\n" is the universal line ending
- character, as on UNIX and VMS. If this is not true, then here's
- where to change it.
-*/
-
-#if 1
-# define EOL_STRING "\n"
-#else /* 1 */
-# define EOL_STRING "\r\n"
-#endif /* 1 [else] */
-#define EOL_STRING_LEN (sizeof( EOL_STRING)- 1)
-
- if (flags & rb_ftp_ascii)
- {
- const char *bufend;
-
- /* ASCII transfer. Put out lines delimited by CRLF. */
- bufend = buf+ bufsize;
- while (buf < bufend)
- {
- /* If CR, put out any pending CR, then set CR-pending flag. */
- if (*buf == '\r')
- {
- if (cr_pending)
- {
- fwrite ("\r", 1, 1, out);
- *written += 1;
- }
- cr_pending = 1;
- buf++;
- continue;
- }
-
- if (cr_pending)
- {
- if (*buf == '\n')
- {
- /* Found FTP EOL (CRLF). Put out local EOL. */
- fwrite (EOL_STRING, 1, EOL_STRING_LEN, out);
- *written += EOL_STRING_LEN;
- }
- else
- {
- /* Normal character. Put out pending CR and it. */
- fwrite ("\r", 1, 1, out);
- fwrite (buf, 1, 1, out);
- *written += 2;
- }
- buf++;
- cr_pending = 0;
- }
- else
- {
- /* Normal character. Put it out. */
- fwrite (buf, 1, 1, out);
- *written += 1;
- buf++;
- }
- }
- }
- else
- {
- /* Image transfer. Put out buffer. */
- fwrite (buf, 1, bufsize, out);
- *written += bufsize;
- }