OSDN Git Service

* charset.c (_cpp_convert_input): Check '\r' before inserting
authordpatel <dpatel@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 19 Feb 2005 19:48:02 +0000 (19:48 +0000)
committerdpatel <dpatel@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 19 Feb 2005 19:48:02 +0000 (19:48 +0000)
      '\n' at the end.
      * gcc.dg/cpp/mac-eol-at-eof.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@95289 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/cpp/mac-eol-at-eof.c [new file with mode: 0644]
libcpp/ChangeLog
libcpp/charset.c

index 6d09ca0..8e083a9 100644 (file)
@@ -1,3 +1,7 @@
+2005-02-19  Devang Patel  <dpatel@apple.com>
+
+       * gcc.dg/cpp/mac-eol-at-eof.c: New test.
+       
 2005-02-19  Steven G. Kargl  <kargls@comcast.net>
 
        * gfortran.dg/achar_1.f90: New test.
diff --git a/gcc/testsuite/gcc.dg/cpp/mac-eol-at-eof.c b/gcc/testsuite/gcc.dg/cpp/mac-eol-at-eof.c
new file mode 100644 (file)
index 0000000..6b0a279
--- /dev/null
@@ -0,0 +1 @@
+/* Test no newline at eof warning when Mac line ending is used*/\r/* { dg-do compile } */\rint main() { return 0; } \r
\ No newline at end of file
index 5c58eb7..0764fc8 100644 (file)
@@ -1,3 +1,8 @@
+2005-02-19  Devang Patel  <dpatel@apple.com>
+
+       * charset.c (_cpp_convert_input): Check '\r' before inserting
+       '\n' at the end.
+       
 2005-02-15  Eric Christopher  <echristo@redhat.com>
 
        PR preprocessor/19077
index 7a88a70..37859c5 100644 (file)
@@ -1405,7 +1405,15 @@ _cpp_convert_input (cpp_reader *pfile, const char *input_charset,
   if (to.len + 4096 < to.asize || to.len >= to.asize)
     to.text = xrealloc (to.text, to.len + 1);
 
-  to.text[to.len] = '\n';
+  /* If the file is using old-school Mac line endings (\r only),
+     terminate with another \r, not an \n, so that we do not mistake
+     the \r\n sequence for a single DOS line ending and erroneously
+     issue the "No newline at end of file" diagnostic.  */
+  if (to.text[to.len - 1] == '\r')
+    to.text[to.len] = '\r';
+  else
+    to.text[to.len] = '\n';
+
   *st_size = to.len;
   return to.text;
 }