Added (file-exists?) and (delete-file)

This commit is contained in:
Justin Ethier 2015-06-24 21:42:14 -04:00
parent 7103f52f8b
commit a5acb43cf1
5 changed files with 38 additions and 0 deletions

View file

@ -445,6 +445,8 @@
((eq? p 'close-port) "Cyc_io_close_port") ((eq? p 'close-port) "Cyc_io_close_port")
((eq? p 'close-input-port) "Cyc_io_close_input_port") ((eq? p 'close-input-port) "Cyc_io_close_input_port")
((eq? p 'close-output-port) "Cyc_io_close_output_port") ((eq? p 'close-output-port) "Cyc_io_close_output_port")
((eq? p 'file-exists?) "Cyc_io_file_exists")
((eq? p 'delete-file) "Cyc_io_delete_file")
((eq? p 'read-char) "Cyc_io_read_char") ((eq? p 'read-char) "Cyc_io_read_char")
((eq? p 'peek-char) "Cyc_io_peek_char") ((eq? p 'peek-char) "Cyc_io_peek_char")
((eq? p 'Cyc-display) "Cyc_display_va") ((eq? p 'Cyc-display) "Cyc_display_va")

View file

@ -291,6 +291,8 @@
(list 'close-port close-port) (list 'close-port close-port)
(list 'close-input-port close-input-port) (list 'close-input-port close-input-port)
(list 'close-output-port close-output-port) (list 'close-output-port close-output-port)
(list 'file-exists? file-exists?)
(list 'delete-file delete-file)
(list 'read-char read-char) (list 'read-char read-char)
(list 'peek-char peek-char) (list 'peek-char peek-char)
(list 'Cyc-write-char Cyc-write-char) (list 'Cyc-write-char Cyc-write-char)

View file

@ -1024,6 +1024,24 @@ object Cyc_io_close_port(object port) {
return port; return port;
} }
object Cyc_io_delete_file(object filename) {
const char *fname = ((string_type *)filename)->str;
if (remove(fname) == 0)
return boolean_t; // Success
return boolean_f;
}
object Cyc_io_file_exists(object filename) {
const char *fname = ((string_type *)filename)->str;
FILE *file;
// Possibly overkill, but portable
if (file = fopen(fname, "r")) {
fclose(file);
return boolean_t;
}
return boolean_f;
}
// TODO: port arg is optional! (maybe handle that in expansion section??) // TODO: port arg is optional! (maybe handle that in expansion section??)
object Cyc_io_read_char(object port) { object Cyc_io_read_char(object port) {
if (type_of(port) == port_tag) { if (type_of(port) == port_tag) {
@ -1302,6 +1320,10 @@ void _close_91input_91port(object cont, object args) {
return_funcall1(cont, Cyc_io_close_input_port(car(args)));} return_funcall1(cont, Cyc_io_close_input_port(car(args)));}
void _close_91output_91port(object cont, object args) { void _close_91output_91port(object cont, object args) {
return_funcall1(cont, Cyc_io_close_output_port(car(args)));} return_funcall1(cont, Cyc_io_close_output_port(car(args)));}
void _file_91exists_127(object cont, object args) {
return_funcall1(cont, Cyc_io_file_exists(car(args)));}
void _delete_91file(object cont, object args) {
return_funcall1(cont, Cyc_io_delete_file(car(args)));}
void _read_91char(object cont, object args) { void _read_91char(object cont, object args) {
return_funcall1(cont, Cyc_io_read_char(car(args)));} return_funcall1(cont, Cyc_io_read_char(car(args)));}
void _peek_91char(object cont, object args) { void _peek_91char(object cont, object args) {
@ -2001,6 +2023,8 @@ static primitive_type open_91output_91file_primitive = {primitive_tag, "open-out
static primitive_type close_91port_primitive = {primitive_tag, "close-port", &_close_91port}; static primitive_type close_91port_primitive = {primitive_tag, "close-port", &_close_91port};
static primitive_type close_91input_91port_primitive = {primitive_tag, "close-input-port", &_close_91input_91port}; static primitive_type close_91input_91port_primitive = {primitive_tag, "close-input-port", &_close_91input_91port};
static primitive_type close_91output_91port_primitive = {primitive_tag, "close-output-port", &_close_91output_91port}; static primitive_type close_91output_91port_primitive = {primitive_tag, "close-output-port", &_close_91output_91port};
static primitive_type file_91exists_127_primitive = {primitive_tag, "file-exists?", &_file_91exists_127};
static primitive_type delete_91file_primitive = {primitive_tag, "delete-file", &_delete_91file};
static primitive_type read_91char_primitive = {primitive_tag, "read-char", &_read_91char}; static primitive_type read_91char_primitive = {primitive_tag, "read-char", &_read_91char};
static primitive_type peek_91char_primitive = {primitive_tag, "peek-char", &_peek_91char}; static primitive_type peek_91char_primitive = {primitive_tag, "peek-char", &_peek_91char};
static primitive_type Cyc_91write_primitive = {primitive_tag, "Cyc-write", &_Cyc_91write}; static primitive_type Cyc_91write_primitive = {primitive_tag, "Cyc-write", &_Cyc_91write};
@ -2108,6 +2132,8 @@ const object primitive_open_91output_91file = &open_91output_91file_primitive;
const object primitive_close_91port = &close_91port_primitive; const object primitive_close_91port = &close_91port_primitive;
const object primitive_close_91input_91port = &close_91input_91port_primitive; const object primitive_close_91input_91port = &close_91input_91port_primitive;
const object primitive_close_91output_91port = &close_91output_91port_primitive; const object primitive_close_91output_91port = &close_91output_91port_primitive;
const object primitive_file_91exists_127 = &file_91exists_127_primitive;
const object primitive_delete_91file = &delete_91file_primitive;
const object primitive_read_91char = &read_91char_primitive; const object primitive_read_91char = &read_91char_primitive;
const object primitive_peek_91char = &peek_91char_primitive; const object primitive_peek_91char = &peek_91char_primitive;
const object primitive_Cyc_91write_91char = &Cyc_91write_91char_primitive; const object primitive_Cyc_91write_91char = &Cyc_91write_91char_primitive;

View file

@ -113,6 +113,8 @@ port_type Cyc_io_open_output_file(object str);
object Cyc_io_close_port(object port); object Cyc_io_close_port(object port);
object Cyc_io_close_input_port(object port); object Cyc_io_close_input_port(object port);
object Cyc_io_close_output_port(object port); object Cyc_io_close_output_port(object port);
object Cyc_io_delete_file(object filename);
object Cyc_io_file_exists(object filename);
object Cyc_io_read_char(object port); object Cyc_io_read_char(object port);
object Cyc_io_peek_char(object port); object Cyc_io_peek_char(object port);
@ -331,6 +333,8 @@ extern const object primitive_open_91output_91file;
extern const object primitive_close_91port; extern const object primitive_close_91port;
extern const object primitive_close_91input_91port; extern const object primitive_close_91input_91port;
extern const object primitive_close_91output_91port; extern const object primitive_close_91output_91port;
extern const object primitive_file_91exists_127;
extern const object primitive_delete_91file;
extern const object primitive_read_91char; extern const object primitive_read_91char;
extern const object primitive_peek_91char; extern const object primitive_peek_91char;
extern const object primitive_Cyc_91write_91char; extern const object primitive_Cyc_91write_91char;

View file

@ -558,6 +558,8 @@
close-port close-port
close-input-port close-input-port
close-output-port close-output-port
file-exists?
delete-file
read-char read-char
peek-char peek-char
Cyc-write-char Cyc-write-char
@ -601,6 +603,8 @@
close-port close-port
close-input-port close-input-port
close-output-port close-output-port
file-exists?
delete-file
read-char read-char
peek-char peek-char
Cyc-write-char Cyc-write-char