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 ();