Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 01 May 2001 00:57:46 -0400 (EDT)
From:      Mike Heffner <mheffner@vt.edu>
To:        Warner Losh <imp@harmony.village.org>
Cc:        FreeBSD-audit <FreeBSD-audit@FreeBSD.ORG>
Subject:   Re: Small patch to allow mail to read Eudora mailboxes
Message-ID:  <XFMail.20010501005746.mheffner@vt.edu>
In-Reply-To: <200105010419.f414JlR56227@harmony.village.org>

next in thread | previous in thread | raw e-mail | index | archive | help
This message is in MIME format
--_=XFMail.1.4.7.FreeBSD:20010501005746:439=_
Content-Type: text/plain; charset=us-ascii


On 01-May-2001 Warner Losh wrote:
| In message <XFMail.20010501000013.mheffner@vt.edu> Mike Heffner writes:
|: Because I was syncing with OpenBSD, but yes it can be done this way instead.
| 
| I think that OpenBSD might have a bug lurking because I don't think
| the order of operations is well defined enough.

You're right, while it does work, it's relying on undefined behavior. Here's the
updated patch.



Index: fio.c
===================================================================
RCS file: /home/ncvs/src/usr.bin/mail/fio.c,v
retrieving revision 1.4
diff -u -r1.4 fio.c
--- fio.c       2001/03/25 04:57:04     1.4
+++ fio.c       2001/05/01 04:53:50
@@ -94,6 +94,16 @@
                        return;
                }
                count = strlen(linebuf);
+               /*
+                * Transforms lines ending in <CR><LF> to just <LF>.
+                * This allows mail to be able to read Eudora mailboxes.
+                */
+               if (count >= 2 && linebuf[count - 1] == '\n' &&
+                   linebuf[count - 2] == '\r') {
+                       count--;
+                       linebuf[count - 1] = '\n';
+               }
+
                (void) fwrite(linebuf, sizeof *linebuf, count, otf);
                if (ferror(otf))
                        errx(1, "/tmp");
@@ -160,7 +170,7 @@
 /*
  * Read up a line from the specified input into the line
  * buffer.  Return the number of characters read.  Do not
- * include the newline at the end.
+ * include the newline (or carriage return) at the end.
  */
 int
 readline(ibuf, linebuf, linesize)
@@ -175,6 +185,8 @@
                return -1;
        n = strlen(linebuf);
        if (n > 0 && linebuf[n - 1] == '\n')
+               linebuf[--n] = '\0';
+       if (n > 0 && linebuf[n - 1] == '\r')
                linebuf[--n] = '\0';
        return n;
 }


Mike

-- 
  Mike Heffner       <mheffner@vt.edu>
  Blacksburg, VA   <mikeh@FreeBSD.org>
  http://filebox.vt.edu/users/mheffner


--_=XFMail.1.4.7.FreeBSD:20010501005746:439=_
Content-Type: application/pgp-signature

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.0.4 (FreeBSD)
Comment: For info see http://www.gnupg.org

iD8DBQE67kJKFokZQs3sv5kRAq+KAKCKR86aFfsToDkO36O2oJyBWdPvFgCfUpxK
jBwhBxA92qbdHLslpZAYwBg=
=LyBD
-----END PGP SIGNATURE-----

--_=XFMail.1.4.7.FreeBSD:20010501005746:439=_--
End of MIME message

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-audit" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?XFMail.20010501005746.mheffner>