add file related functions
This commit is contained in:
parent
0c1babb6c5
commit
d2e09fa2c7
|
@ -0,0 +1,42 @@
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
#include "picrin.h"
|
||||||
|
|
||||||
|
pic_value
|
||||||
|
pic_file_exists_p(pic_state *pic)
|
||||||
|
{
|
||||||
|
char *fname;
|
||||||
|
size_t size;
|
||||||
|
FILE *fp;
|
||||||
|
|
||||||
|
pic_get_args(pic, "s", &fname, &size);
|
||||||
|
|
||||||
|
fp = fopen(fname, "r");
|
||||||
|
if (fp) {
|
||||||
|
fclose(fp);
|
||||||
|
return pic_true_value();
|
||||||
|
} else {
|
||||||
|
return pic_false_value();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pic_value
|
||||||
|
pic_file_delete(pic_state *pic)
|
||||||
|
{
|
||||||
|
char *fname;
|
||||||
|
size_t size;
|
||||||
|
|
||||||
|
pic_get_args(pic, "s", &fname, &size);
|
||||||
|
|
||||||
|
if (remove(fname) != 0) {
|
||||||
|
pic_error(pic, "file cannot be deleted");
|
||||||
|
}
|
||||||
|
return pic_true_value();
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
pic_init_file(pic_state *pic)
|
||||||
|
{
|
||||||
|
pic_defun(pic, "file-exists?", pic_file_exists_p);
|
||||||
|
pic_defun(pic, "delete-file", pic_file_delete);
|
||||||
|
}
|
|
@ -4,6 +4,7 @@ void pic_init_port(pic_state *);
|
||||||
void pic_init_number(pic_state *);
|
void pic_init_number(pic_state *);
|
||||||
void pic_init_time(pic_state *);
|
void pic_init_time(pic_state *);
|
||||||
void pic_init_system(pic_state *);
|
void pic_init_system(pic_state *);
|
||||||
|
void pic_init_file(pic_state *);
|
||||||
|
|
||||||
#define DONE pic_gc_arena_restore(pic, ai);
|
#define DONE pic_gc_arena_restore(pic, ai);
|
||||||
|
|
||||||
|
@ -17,4 +18,5 @@ pic_init_core(pic_state *pic)
|
||||||
pic_init_number(pic); DONE;
|
pic_init_number(pic); DONE;
|
||||||
pic_init_time(pic); DONE;
|
pic_init_time(pic); DONE;
|
||||||
pic_init_system(pic); DONE;
|
pic_init_system(pic); DONE;
|
||||||
|
pic_init_file(pic); DONE;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue