414414#include "s7_scheme_char.h"
415415#include "s7_liii_bitwise.h"
416416#include "s7_liii_string.h"
417+ #include "s7_scheme_file.h"
417418
418419/* there is also apparently __STDC_NO_COMPLEX__ */
419420#if WITH_CLANG_PP
@@ -35357,47 +35358,7 @@ static s7_pointer g_is_directory(s7_scheme *sc, s7_pointer args)
3535735358 return(make_boolean(sc, is_directory_b_7p(sc, car(args))));
3535835359}
3535935360
35360- /* -------------------------------- file-exists? -------------------------------- */
35361- static bool file_probe(const char *arg)
35362- {
35363- #if !MS_WINDOWS
35364- return(access(arg, F_OK) == 0);
35365- #else
35366- int32_t fd = open(arg, O_RDONLY, 0);
35367- if (fd == -1) return(false);
35368- close(fd);
35369- return(true);
35370- #endif
35371- }
35372-
3537335361/* -------------------------------- delete-file -------------------------------- */
35374- static s7_pointer g_delete_file(s7_scheme *sc, s7_pointer args)
35375- {
35376- #define H_delete_file "(delete-file filename) deletes the file filename."
35377- #define Q_delete_file s7_make_signature(sc, 2, sc->is_integer_symbol, sc->is_string_symbol)
35378-
35379- const s7_pointer name = car(args);
35380- if (!is_string(name))
35381- return(sole_arg_method_or_bust(sc, name, sc->delete_file_symbol, args, sc->type_names[T_STRING]));
35382- if (string_length(name) > 2)
35383- {
35384- block_t *b = expand_filename(sc, string_value(name));
35385- if (b)
35386- {
35387- s7_int result = unlink((char *)block_data(b));
35388- liberate(sc, b);
35389- if ((result == -1) && (sc->scheme_version == sc->r7rs_symbol))
35390- file_error_nr(sc, "delete-file", strerror(errno), string_value(name));
35391- return(make_integer(sc, result));
35392- }}
35393- {
35394- s7_int result = unlink(string_value(name));
35395- if ((result == -1) && (sc->scheme_version == sc->r7rs_symbol))
35396- file_error_nr(sc, "delete-file", strerror(errno), string_value(name));
35397- return(make_integer(sc, result));
35398- }
35399- }
35400-
3540135362/* -------------------------------- system -------------------------------- */
3540235363static s7_pointer g_system(s7_scheme *sc, s7_pointer args)
3540335364{
@@ -35491,33 +35452,6 @@ static s7_pointer g_directory_to_list(s7_scheme *sc, s7_pointer args)
3549135452}
3549235453
3549335454/* -------------------------------- file-mtime -------------------------------- */
35494- static s7_pointer g_file_mtime(s7_scheme *sc, s7_pointer args)
35495- {
35496- #define H_file_mtime "(file-mtime file): return the write date of file"
35497- #define Q_file_mtime s7_make_signature(sc, 2, sc->is_integer_symbol, sc->is_string_symbol)
35498-
35499- struct stat statbuf;
35500- int32_t err;
35501- const s7_pointer name = car(args);
35502-
35503- if (!is_string(name))
35504- return(sole_arg_method_or_bust(sc, name, sc->file_mtime_symbol, args, sc->type_names[T_STRING]));
35505- if (string_length(name) >= 2)
35506- {
35507- block_t *b = expand_filename(sc, string_value(name));
35508- if (b)
35509- {
35510- err = stat((char *)block_data(b), &statbuf);
35511- liberate(sc, b);
35512- if (err < 0)
35513- file_error_nr(sc, "file-mtime", strerror(errno), string_value(name));
35514- return(make_integer(sc, (s7_int)(statbuf.st_mtime)));
35515- }}
35516- err = stat(string_value(name), &statbuf);
35517- if (err < 0)
35518- file_error_nr(sc, "file-mtime", strerror(errno), string_value(name));
35519- return(make_integer(sc, (s7_int)(statbuf.st_mtime)));
35520- }
3552135455#endif /* !ms_windows */
3552235456#endif /* with_system_extras */
3552335457
@@ -35536,26 +35470,6 @@ static s7_pointer g_time(s7_scheme *sc, s7_pointer args)
3553635470 return(minus_one);
3553735471#endif
3553835472}
35539-
35540- /* -------------------------------- unlink -------------------------------- */
35541- static s7_pointer g_unlink(s7_scheme *sc, s7_pointer args)
35542- {
35543- s7_pointer arg = car(args);
35544- if (!s7_is_string(arg))
35545- sole_arg_wrong_type_error_nr(sc, sc->unlink_symbol, arg, sc->type_names[T_STRING]);
35546- return(make_integer(sc, (s7_int)unlink((char*)string_value(arg))));
35547- }
35548-
35549- /* -------------------------------- access -------------------------------- */
35550- static s7_pointer g_access(s7_scheme *sc, s7_pointer args)
35551- {
35552- s7_pointer path = car(args), mode = cadr(args);
35553- if (!s7_is_string(path))
35554- wrong_type_error_nr(sc, sc->access_symbol, 1, path, sc->type_names[T_STRING]);
35555- if (!s7_is_integer(mode))
35556- wrong_type_error_nr(sc, sc->access_symbol, 2, mode, sc->type_names[T_INTEGER]);
35557- return(make_integer(sc, (s7_int)access((char *)string_value(path), (int)integer(mode))));
35558- }
3555935473#endif
3556035474
3556135475
0 commit comments