Author: iratqq
Date: Mon Feb  9 08:10:04 2009
New Revision: 5840

Modified:
   trunk/uim/uim-posix.c

Log:
* uim/uim-posix.c (c_check_dir, c_get_config_path):
  - Export.
  (c_unlink, c_mkdir, c_chdir):
  - New functions.
  (uim_init_posix_subrs):
  - Add (create/check-directory!), (get-config-path!),
    (unlink), (mkdir), and (chdir).


Modified: trunk/uim/uim-posix.c
==============================================================================
--- trunk/uim/uim-posix.c       (original)
+++ trunk/uim/uim-posix.c       Mon Feb  9 08:10:04 2009
@@ -161,6 +161,15 @@
   }
 }

+static uim_lisp
+c_check_dir(uim_lisp dir_)
+{
+  if (!uim_check_dir(REFER_C_STR(dir_))) {
+    return uim_scm_f();
+  }
+  return uim_scm_t();
+}
+
 uim_bool
 uim_get_config_path(char *path, int len, int is_getenv)
 {
@@ -190,6 +199,16 @@
 }

 static uim_lisp
+c_get_config_path(uim_lisp is_getenv_)
+{
+  char path[MAXPATHLEN];
+
+  if (!uim_get_config_path(path, sizeof(path), C_BOOL(is_getenv_)))
+    return uim_scm_f();
+  return MAKE_STR(path);
+}
+
+static uim_lisp
 file_stat_mode(uim_lisp filename, mode_t mode)
 {
   struct stat st;
@@ -246,6 +265,24 @@
 }

 static uim_lisp
+c_unlink(uim_lisp path_)
+{
+  return MAKE_INT(unlink(REFER_C_STR(path_)));
+}
+
+static uim_lisp
+c_mkdir(uim_lisp path_, uim_lisp mode_)
+{
+  return MAKE_INT(mkdir(REFER_C_STR(path_), C_INT(mode_)));
+}
+
+static uim_lisp
+c_chdir(uim_lisp path_)
+{
+  return MAKE_INT(chdir(REFER_C_STR(path_)));
+}
+
+static uim_lisp
 c_getenv(uim_lisp str)
 {
   char *val;
@@ -751,12 +788,19 @@
   uim_scm_init_proc0("user-name", user_name);
   uim_scm_init_proc1("home-directory", home_directory);

+  uim_scm_init_proc1("create/check-directory!", c_check_dir);
+  uim_scm_init_proc1("get-config-path!", c_get_config_path);
+
   uim_scm_init_proc1("file-readable?", file_readablep);
   uim_scm_init_proc1("file-writable?", file_writablep);
   uim_scm_init_proc1("file-executable?", file_executablep);
   uim_scm_init_proc1("file-regular?", file_regularp);
   uim_scm_init_proc1("file-directory?", file_directoryp);
   uim_scm_init_proc1("file-mtime", file_mtime);
+
+  uim_scm_init_proc1("unlink", c_unlink);
+  uim_scm_init_proc2("mkdir", c_mkdir);
+  uim_scm_init_proc1("chdir", c_chdir);

   uim_scm_init_proc0("getuid", c_getuid);
   uim_scm_init_proc0("getgid", c_getgid);

Reply via email to