From 762cd7ebb3d16c77894f50766b4ad9be337c8654 Mon Sep 17 00:00:00 2001 From: japhie Date: Sat, 28 May 2005 22:34:05 +0000 Subject: [PATCH] Added function si:rmdir. --- src/CHANGELOG | 18 ++++++++++-------- src/c/symbols_list.h | 1 + src/c/unixfsys.d | 9 +++++++++ src/h/external.h | 1 + 4 files changed, 21 insertions(+), 8 deletions(-) diff --git a/src/CHANGELOG b/src/CHANGELOG index f355aa7a7..1979fc88a 100644 --- a/src/CHANGELOG +++ b/src/CHANGELOG @@ -5,14 +5,6 @@ ECL 0.9g - Fixed the flags used when linking ECL against the shared library on Mac OSX. -* Errors fixed: - - - Now .o files compiled with :SYSTEM-P T with dash in filename load - correctly. (M. Pasternacki) - - - Incorrectly loaded files are now unloaded without falling into infinite - loop. (M. Pasternacki) - * Foreign function interface (FFI): - Added nickname UFFI for FFI package; functions ALLOCATE-FOREIGN-STRING, @@ -26,6 +18,12 @@ ECL 0.9g * Errors fixed: + - Now .o files compiled with :SYSTEM-P T with dash in filename load + correctly. (M. Pasternacki) + + - Incorrectly loaded files are now unloaded without falling into infinite + loop. (M. Pasternacki) + - When ECASE or CTYPECASE signal a TYPE-EROR the TYPE-ERROR-DATUM is the value that originated the error. @@ -61,6 +59,10 @@ ECL 0.9g - Pathnames which contain :BACK in the directory, now print as unreadable objects, instead of signaling an error when printing. +* New features: + + - Added function si:rmdir (M. Pasternacki) + ;;; Local Variables: *** ;;; mode:text *** ;;; fill-column:79 *** diff --git a/src/c/symbols_list.h b/src/c/symbols_list.h index d54aa4914..3f49ba035 100644 --- a/src/c/symbols_list.h +++ b/src/c/symbols_list.h @@ -1138,6 +1138,7 @@ cl_symbols[] = { {SYS_ "MEMQ", SI_ORDINARY, si_memq, 2, OBJNULL}, {SYS_ "MKDIR", SI_ORDINARY, si_mkdir, 2, OBJNULL}, {SYS_ "MKSTEMP", SI_ORDINARY, si_mkstemp, 1, OBJNULL}, +{SYS_ "RMDIR", SI_ORDINARY, si_rmdir, 1, OBJNULL}, {SYS_ "OPEN-PIPE", SI_ORDINARY, si_open_pipe, 1, OBJNULL}, {SYS_ "OUTPUT-STREAM-STRING", SI_ORDINARY, si_output_stream_string, 1, OBJNULL}, {SYS_ "PACKAGE-LOCK", SI_ORDINARY, si_package_lock, 2, OBJNULL}, diff --git a/src/c/unixfsys.d b/src/c/unixfsys.d index cd307814c..08a313970 100644 --- a/src/c/unixfsys.d +++ b/src/c/unixfsys.d @@ -792,3 +792,12 @@ si_mkstemp(cl_object template) close(fd); @(return cl_truename(output)) } + +cl_object +si_rmdir(cl_object directory) +{ + directory = si_coerce_to_filename(directory); + if ( rmdir(directory->string.self) != 0 ) + FElibc_error("Can't remove directory ~A.", 1, directory); + @(return Cnil) +} diff --git a/src/h/external.h b/src/h/external.h index 1ed61f57c..c22a0c20b 100644 --- a/src/h/external.h +++ b/src/h/external.h @@ -1454,6 +1454,7 @@ extern cl_object si_mkdir(cl_object directory, cl_object mode); extern cl_object cl_directory _ARGS((cl_narg narg, cl_object directory, ...)); extern cl_object cl_user_homedir_pathname _ARGS((cl_narg narg, ...)); extern cl_object si_mkstemp(cl_object templ); +extern cl_object si_rmdir(cl_object directory); extern const char *expand_pathname(const char *name); extern cl_object ecl_string_to_pathname(char *s);