summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMikael Djurfeldt <djurfeldt@nada.kth.se>1996-09-18 19:34:58 +0000
committerMikael Djurfeldt <djurfeldt@nada.kth.se>1996-09-18 19:34:58 +0000
commitd14af9f2d3839498bf976db11ae3e020ac81fed1 (patch)
tree1410a1c06e7bafad0274520a67a23c1f3fb0cb21
parenta0fcb308634010a848ead49fa54f67bf03cbc0c4 (diff)
downloadguile-d14af9f2d3839498bf976db11ae3e020ac81fed1.tar.gz
* ports.c, ports.h: Name change: scm_\(line\|column\)_number -->
scm_port_\1; Added mutator scm_set_port_filename_x (used when loading source from non-file ports, which, e. g., happens when using the Emacs interface).
-rw-r--r--libguile/ports.c42
-rw-r--r--libguile/ports.h17
2 files changed, 43 insertions, 16 deletions
diff --git a/libguile/ports.c b/libguile/ports.c
index dba81b757..12381ddf4 100644
--- a/libguile/ports.c
+++ b/libguile/ports.c
@@ -706,13 +706,13 @@ scm_unread_char (cobj, port)
-SCM_PROC (s_line_number, "line-number", 0, 1, 0, scm_line_number);
+SCM_PROC (s_port_line, "port-line", 0, 1, 0, scm_port_line);
#ifdef __STDC__
SCM
-scm_line_number (SCM port)
+scm_port_line (SCM port)
#else
SCM
-scm_line_number (port)
+scm_port_line (port)
SCM port;
#endif
{
@@ -726,13 +726,13 @@ scm_line_number (port)
return SCM_MAKINUM (SCM_LINUM (p));
}
-SCM_PROC (s_column_number, "column-number", 0, 1, 0, scm_column_number);
+SCM_PROC (s_port_column, "port-column", 0, 1, 0, scm_port_column);
#ifdef __STDC__
SCM
-scm_column_number (SCM port)
+scm_port_column (SCM port)
#else
SCM
-scm_column_number (port)
+scm_port_column (port)
SCM port;
#endif
{
@@ -746,13 +746,13 @@ scm_column_number (port)
return SCM_MAKINUM (SCM_COL (p));
}
-SCM_PROC (s_port_file_name, "port-file-name", 0, 1, 0, scm_port_file_name);
+SCM_PROC (s_port_filename, "port-filename", 0, 1, 0, scm_port_filename);
#ifdef __STDC__
SCM
-scm_port_file_name (SCM port)
+scm_port_filename (SCM port)
#else
SCM
-scm_port_file_name (port)
+scm_port_filename (port)
SCM port;
#endif
{
@@ -766,6 +766,30 @@ scm_port_file_name (port)
return SCM_PTAB_ENTRY (p)->file_name;
}
+SCM_PROC (s_set_port_filename_x, "set-port-filename!", 1, 1, 0, scm_set_port_filename_x);
+#ifdef __STDC__
+SCM
+scm_set_port_filename_x (SCM port, SCM filename)
+#else
+SCM
+scm_set_port_filename_x (port, filename)
+ SCM port;
+ SCM filename;
+#endif
+{
+ if (filename == SCM_UNDEFINED)
+ {
+ filename = port;
+ port = scm_cur_inp;
+ }
+ else
+ SCM_ASSERT (SCM_NIMP (port) && SCM_PORTP (port) && SCM_OPENP (port),
+ port,
+ SCM_ARG1,
+ s_set_port_filename_x);
+ return SCM_PTAB_ENTRY (port)->file_name = filename;
+}
+
#ifndef ttyname
extern char * ttyname();
#endif
diff --git a/libguile/ports.h b/libguile/ports.h
index d453073ce..2f0d23213 100644
--- a/libguile/ports.h
+++ b/libguile/ports.h
@@ -115,6 +115,7 @@ extern int scm_port_table_size; /* Number of ports in scm_port_table. */
#define SCM_SETPTAB_ENTRY(x,ent) SCM_SETCDR ((x), (SCM)(ent))
#define SCM_STREAM(x) SCM_PTAB_ENTRY(x)->stream
#define SCM_SETSTREAM(x,s) (SCM_PTAB_ENTRY(x)->stream = s)
+#define SCM_FILENAME(x) SCM_PTAB_ENTRY(x)->file_name
#define SCM_LINUM(x) SCM_PTAB_ENTRY(x)->line_number
#define SCM_COL(x) SCM_PTAB_ENTRY(x)->column_number
#define SCM_REVEALED(x) SCM_PTAB_ENTRY(x)->revealed
@@ -129,7 +130,7 @@ extern int scm_port_table_size; /* Number of ports in scm_port_table. */
#define SCM_INCLINE(port) {SCM_LINUM (port) += 1; SCM_COL (port) = 0;}
#define SCM_INCCOL(port) {SCM_COL (port) += 1;}
-#define SCM_TABCOL(port) {SCM_COL (port) += (SCM_COL (port) + 1) % 8;}
+#define SCM_TABCOL(port) {SCM_COL (port) += 8 - SCM_COL (port) % 8;}
@@ -186,9 +187,10 @@ extern SCM scm_force_output (SCM port);
extern SCM scm_read_char (SCM port);
extern SCM scm_peek_char (SCM port);
extern SCM scm_unread_char (SCM cobj, SCM port);
-extern SCM scm_line_number (SCM port);
-extern SCM scm_column_number (SCM port);
-/* extern SCM scm_port_file_name (SCM port); */
+extern SCM scm_port_line (SCM port);
+extern SCM scm_port_column (SCM port);
+extern SCM scm_port_filename (SCM port);
+extern SCM scm_set_port_filename_x (SCM port, SCM filename);
extern void scm_prinport (SCM exp, SCM port, char *type);
extern void scm_ports_prehistory (void);
extern SCM scm_void_port (char * mode_str);
@@ -223,9 +225,10 @@ extern SCM scm_force_output ();
extern SCM scm_read_char ();
extern SCM scm_peek_char ();
extern SCM scm_unread_char ();
-extern SCM scm_line_number ();
-extern SCM scm_column_number ();
-/* extern SCM scm_port_file_name ();*/
+extern SCM scm_port_line ();
+extern SCM scm_port_column ();
+extern SCM scm_port_filename ();
+extern SCM scm_set_port_filename_x ();
extern void scm_prinport ();
extern void scm_ports_prehistory ();
extern SCM scm_void_port ();