From 51e9cb14a7acd375a0bc8fcf8140c6518f6e0285 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?V=C3=ADtor=20Santos=20Costa?= <vsc@xato.(none)>
Date: Sun, 12 Dec 2010 19:07:24 +0000
Subject: [PATCH] nl should be in the SWI IO (obs from Roberto Bagnara).

---
 library/dialect/swi.yap     |  2 ++
 packages/PLStream/pl-file.c | 30 +++++++++++++++++++++++++++++-
 2 files changed, 31 insertions(+), 1 deletion(-)

diff --git a/library/dialect/swi.yap b/library/dialect/swi.yap
index 69474c30f..65a9e3417 100755
--- a/library/dialect/swi.yap
+++ b/library/dialect/swi.yap
@@ -225,6 +225,8 @@ goal_expansion(file_base_name(A,B),system:swi_file_base_name(A,B)) :- swi_io.
 goal_expansion(file_directory_name(A,B),system:swi_file_directory_name(A,B)) :- swi_io.
 goal_expansion('$mark_executable'(A), system:'swi_is_absolute_file_name'(A)) :- swi_io.
 goal_expansion('$absolute_file_name'(A,B),system:'swi_$absolute_file_name'(A,B)) :- swi_io.
+goal_expansion(nl(A),system:swi_nl(A)) :- swi_io.
+goal_expansion(nl,system:swi_nl) :- swi_io.
 
 
 % make sure we also use 
diff --git a/packages/PLStream/pl-file.c b/packages/PLStream/pl-file.c
index 6ab14d059..ae4aa4cfe 100755
--- a/packages/PLStream/pl-file.c
+++ b/packages/PLStream/pl-file.c
@@ -4215,6 +4215,7 @@ PRED_IMPL("copy_stream_data", 2, copy_stream_data2, 0)
 }
 
 
+
 		 /*******************************
 		 *      PUBLISH PREDICATES	*
 		 *******************************/
@@ -4312,8 +4313,34 @@ static pl_Sgetc(IOSTREAM *s)
   return Sgetc(s);
 }
 
+/* copied by VSC */
+
+static word
+pl_nl1(term_t stream)
+{ IOSTREAM *s;
+
+  if ( getOutputStream(stream, &s) )
+  { Sputcode('\n', s);
+    return streamStatus(s);
+  }
+
+  fail;
+}
+
+static word
+pl_nl()
+{ return pl_nl1(0);
+}
+
+static const PL_extension foreigns[] = {
+  FRG("swi_nl",			0, pl_nl,		      ISO),
+  FRG("swi_nl",			1, pl_nl1,		      ISO),
+  /* DO NOT ADD ENTRIES BELOW THIS ONE */
+  FRG((char *)NULL,		0, NULL,			0)
+};
+
 static void
-init_yap_extras()
+init_yap_extras(void)
 {
   swi_io_struct swiio;
 
@@ -4329,6 +4356,7 @@ init_yap_extras()
   initFiles();
   initGlob();
   PL_register_extensions(PL_predicates_from_file);
+  PL_register_extensions(foreigns);
   fileerrors = TRUE;
   SinitStreams();
 }