Revision: 6746
Author: ek.kato
Date: Tue Sep 7 23:04:47 2010
Log: * Merge -r6740:6745 from trunk.
http://code.google.com/p/uim/source/detail?r=6746
Modified:
/branches/1.6/scm/custom-rt.scm
/branches/1.6/scm/dynlib.scm
/branches/1.6/scm/plugin.scm
/branches/1.6/uim/uim-helper.c
/branches/1.6/uim/uim-posix.c
=======================================
--- /branches/1.6/scm/custom-rt.scm Sun Apr 4 20:35:54 2010
+++ /branches/1.6/scm/custom-rt.scm Tue Sep 7 23:04:47 2010
@@ -63,7 +63,10 @@
(define custom-file-path
(lambda (gsym)
(let* ((group-name (symbol->string gsym))
- (path (string-append (get-config-path! #f)
+ (config-path (get-config-path #f))
+ (path (string-append (if config-path
+ config-path
+ "")
"/customs/custom-"
group-name
".scm")))
=======================================
--- /branches/1.6/scm/dynlib.scm Tue Sep 7 07:44:36 2010
+++ /branches/1.6/scm/dynlib.scm Tue Sep 7 23:04:47 2010
@@ -35,7 +35,7 @@
(if (setugid?)
(list (string-append (sys-pkglibdir) "/plugin"))
(let* ((ld-library-path (getenv "LD_LIBRARY_PATH"))
- (config-path (get-config-path! #f))
+ (config-path (get-config-path #f))
(user-plugin-path (if config-path
(string-append config-path "/plugin")
'())))
=======================================
--- /branches/1.6/scm/plugin.scm Tue Sep 7 07:44:36 2010
+++ /branches/1.6/scm/plugin.scm Tue Sep 7 23:04:47 2010
@@ -39,7 +39,7 @@
(define uim-plugin-scm-load-path
(if (setugid?)
(list (sys-pkgdatadir))
- (let ((config-path (get-config-path! #f))
+ (let ((config-path (get-config-path #f))
(scm-paths (string-split (load-path) ":")))
(filter string?
(append scm-paths
@@ -71,7 +71,7 @@
;; TODO: write test
(define load-module-conf
(lambda ()
- (let* ((config-path (get-config-path! #f))
+ (let* ((config-path (get-config-path #f))
(user-module-dir (if config-path
(string-append config-path "/plugin/")
#f))
@@ -100,7 +100,7 @@
;; TODO: write test
(define load-enabled-modules
(lambda ()
- (let* ((config-path (get-config-path! #f))
+ (let* ((config-path (get-config-path #f))
(user-module-dir (if config-path
(string-append config-path "/plugin/")
#f))
=======================================
--- /branches/1.6/uim/uim-helper.c Sun Apr 4 20:35:54 2010
+++ /branches/1.6/uim/uim-helper.c Tue Sep 7 23:04:47 2010
@@ -207,7 +207,11 @@
return UIM_TRUE;
path_error:
- uim_fatal_error("uim_helper_get_pathname()");
+#if USE_UIM_NOTIFY && !UIM_NON_LIBUIM_PROG
+ uim_notify_fatal("uim_helper_get_pathname() failed");
+#else
+ fprintf(stderr, "uim_helper_get_pathname() failed\n");
+#endif
helper_path[0] = '\0';
UIM_CATCH_ERROR_END();
=======================================
--- /branches/1.6/uim/uim-posix.c Sun Apr 4 20:35:54 2010
+++ /branches/1.6/uim/uim-posix.c Tue Sep 7 23:04:47 2010
@@ -141,21 +141,33 @@
return MAKE_STR(home);
}
-uim_bool
-uim_check_dir(const char *dir)
+static uim_bool
+uim_check_dir_internal(const char *dir, int need_prepare)
{
struct stat st;
if (stat(dir, &st) < 0)
- return (mkdir(dir, 0700) < 0) ? UIM_FALSE : UIM_TRUE;
+ if (need_prepare)
+ return (mkdir(dir, 0700) < 0) ? UIM_FALSE : UIM_TRUE;
+ else
+ return UIM_FALSE;
else {
mode_t mode = S_IFDIR | S_IRUSR | S_IWUSR | S_IXUSR;
return ((st.st_mode & mode) == mode) ? UIM_TRUE : UIM_FALSE;
}
}
+
+/* FIXME: use appropriate name for this API */
+uim_bool
+uim_check_dir(const char *dir)
+{
+ int need_prepare = UIM_TRUE;
+
+ return uim_check_dir_internal(dir, need_prepare);
+}
static uim_lisp
-c_check_dir(uim_lisp dir_)
+c_prepare_dir(uim_lisp dir_)
{
if (!uim_check_dir(REFER_C_STR(dir_))) {
return uim_scm_f();
@@ -163,8 +175,8 @@
return uim_scm_t();
}
-uim_bool
-uim_get_config_path(char *path, int len, int is_getenv)
+static uim_bool
+uim_get_config_path_internal(char *path, int len, int is_getenv, int
need_prepare)
{
char home[MAXPATHLEN];
@@ -174,32 +186,61 @@
if (!uim_get_home_directory(home, sizeof(home), getuid()) && is_getenv) {
char *home_env = getenv("HOME");
- if (!home_env)
+ if (!home_env) {
+ path[0] = '\0';
return UIM_FALSE;
-
- if (strlcpy(home, home_env, sizeof(home)) >= sizeof(home))
+ }
+
+ if (strlcpy(home, home_env, sizeof(home)) >= sizeof(home)) {
+ path[0] = '\0';
return UIM_FALSE;
+ }
}
- if (snprintf(path, len, "%s/.uim.d", home) == -1)
+ if (snprintf(path, len, "%s/.uim.d", home) < 0) {
+ path[0] = '\0';
return UIM_FALSE;
-
- if (!uim_check_dir(path)) {
+ }
+
+ if (!uim_check_dir_internal(path, need_prepare)) {
return UIM_FALSE;
}
return UIM_TRUE;
}
+
+/* FIXME: use appropriate name for this API */
+uim_bool
+uim_get_config_path(char *path, int len, int is_getenv)
+{
+ int need_prepare = UIM_TRUE;
+
+ return uim_get_config_path_internal(path, len, is_getenv, need_prepare);
+}
static uim_lisp
-c_get_config_path(uim_lisp is_getenv_)
+c_prepare_config_path(uim_lisp is_getenv_)
{
char path[MAXPATHLEN];
-
- if (!uim_get_config_path(path, sizeof(path), C_BOOL(is_getenv_)))
+ int need_prepare = UIM_TRUE;
+
+ if (!uim_get_config_path_internal(path, sizeof(path),
C_BOOL(is_getenv_), need_prepare))
return uim_scm_f();
return MAKE_STR(path);
}
+
+static uim_lisp
+c_get_config_path(uim_lisp is_getenv_)
+{
+ char path[MAXPATHLEN];
+ int need_prepare = UIM_FALSE;
+ int exist;
+
+ /* No need to check the existence of path in this function */
+ exist = uim_get_config_path_internal(path, sizeof(path),
C_BOOL(is_getenv_), need_prepare);
+
+ return MAKE_STR(path);
+}
static uim_lisp
file_stat_mode(uim_lisp filename, mode_t mode)
@@ -391,8 +432,9 @@
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("create/check-directory!", c_prepare_dir);
+ uim_scm_init_proc1("get-config-path!", c_prepare_config_path);
+ 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);