tizen 2.0 merge
authorSeungYeup Kim <sy2004.kim@samsung.com>
Tue, 21 Aug 2012 10:28:19 +0000 (19:28 +0900)
committerSeungYeup Kim <sy2004.kim@samsung.com>
Tue, 21 Aug 2012 10:28:19 +0000 (19:28 +0900)
31 files changed:
CMakeLists.txt
TC/build.sh
TC/execute.sh
TC/unit/tslist
debian/changelog [deleted file]
debian/compat [deleted file]
debian/control [deleted file]
debian/dirs [deleted file]
debian/docs [deleted file]
debian/libvconf-0.install.in [deleted file]
debian/libvconf-0.postinst.in [deleted file]
debian/libvconf-dev.install.in [deleted file]
debian/libvconf-keys-dev.install.in [deleted file]
debian/rules [deleted file]
image/SLP_Vconf_PG_image01.png [new file with mode: 0755]
include/CMakeLists.txt
include/SLP_vconf_PG.h [new file with mode: 0755]
include/test-vconf-headers.c [new file with mode: 0644]
include/vconf-internals.h
include/vconf-keys.h
include/vconf-log.h
include/vconf.h
packaging/vconf.spec [changed mode: 0644->0755]
test/Makefile [new file with mode: 0644]
test/vconf_notitest.c [new file with mode: 0644]
test/vconf_timecheck.c [new file with mode: 0644]
test/vconf_unit_test.c [new file with mode: 0644]
vconf-init
vconf-kdb.c
vconf.c
vconftool.c

index 0f386cee457888480df20b695ae30cbc67b88008..c8aaeefa0fed33d39503cb044946224aaac15938 100644 (file)
@@ -16,7 +16,7 @@ INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include)
 
 INCLUDE(FindPkgConfig)
 pkg_check_modules(glib_pkg REQUIRED gobject-2.0)
-pkg_check_modules(pkgs REQUIRED glib-2.0 dlog elektra)
+pkg_check_modules(pkgs REQUIRED glib-2.0 dlog vconf-internal-keys)
 
 FOREACH(flag ${pkgs_CFLAGS})
        SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
@@ -37,6 +37,10 @@ ADD_DEFINITIONS("-DPREFIX=\"${PREFIX}\"")
 ADD_DEFINITIONS("-DFACTORYFS=\"$ENV{FACTORYFS}\"")
 ADD_DEFINITIONS("-DDATAFS=\"$ENV{DATADIR}\"")
 
+ADD_DEFINITIONS("-DENABLE_FDATASYNC")
+ADD_DEFINITIONS("-DSUPPORT_ELEKTRA_VALUE_FORMAT")
+ADD_DEFINITIONS("-DHAVE_FCNTL_H")
+
 ADD_LIBRARY(${PROJECT_NAME} SHARED ${SRCS})
 SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES SOVERSION ${VERSION_MAJOR})
 SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES VERSION ${VERSION})
index 98ebeffb13c3b618b6e4ee60de0b67611096f2a5..6103dfa82125105e59d52a94315ce5dc1b22aeeb 100755 (executable)
@@ -1,6 +1,6 @@
 #!/bin/sh
 
-export TET_INSTALL_PATH=/scratchbox/tetware  # local tetware path
+export TET_INSTALL_PATH=/home/deuk/Tetware  # local tetware path
 export TET_TARGET_PATH=$TET_INSTALL_PATH/tetware-target
 export PATH=$TET_TARGET_PATH/bin:$PATH
 export LD_LIBRARY_PATH=$TET_TARGET_PATH/lib/tet3:$LD_LIBRARY_PATH
index 2d9df79b48689ed136638ed5df3f2c0b9dc114c3..f073ed9b87cfef6adce0707215c0aa694daa9930 100755 (executable)
@@ -1,6 +1,6 @@
 #!/bin/sh
-#export TET_INSTALL_PATH=/mnt/nfs/tetware
-export TET_INSTALL_PATH=/scratchbox/tetware
+export TET_INSTALL_PATH=/mnt/nfs/tetware
+#export TET_INSTALL_PATH=/scratchbox/tetware
 export TET_TARGET_PATH=$TET_INSTALL_PATH/tetware-target
 export PATH=$TET_TARGET_PATH/bin:$PATH
 export LD_LIBRARY_PATH=$TET_TARGET_PATH/lib/tet3:$LD_LIBRARY_PATH
index a05612e5c27061e300d1aa3f047dd0a730b401c0..b7295b2bba899781ab91dc81bf5a91bf1dbae84b 100644 (file)
@@ -2,9 +2,7 @@
 /unit/utc_ApplicationFW_vconf_set_bool_func
 /unit/utc_ApplicationFW_vconf_set_str_func
 /unit/utc_ApplicationFW_vconf_set_dbl_func
-/unit/utc_ApplicationFW_vconf_set_bytes_func
 /unit/utc_ApplicationFW_vconf_get_bool_func
-/unit/utc_ApplicationFW_vconf_get_bytes_func
 /unit/utc_ApplicationFW_vconf_get_dbl_func
 /unit/utc_ApplicationFW_vconf_get_int_func
 /unit/utc_ApplicationFW_vconf_get_str_func
@@ -28,7 +26,6 @@
 /unit/utc_ApplicationFW_vconf_keylist_free_func
 /unit/utc_ApplicationFW_vconf_keylist_lookup_func
 /unit/utc_ApplicationFW_vconf_keylist_rewind_func
-/unit/utc_ApplicationFW_vconf_keynode_steal_str_func
 /unit/utc_ApplicationFW_vconf_set_func
 /unit/utc_ApplicationFW_vconf_keylist_new_func
 /unit/utc_ApplicationFW_vconf_sync_key_func
diff --git a/debian/changelog b/debian/changelog
deleted file mode 100644 (file)
index 5353f16..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-vconf (0.2.23-1) unstable; urgency=low
-
-  * Initial Release.
-  * Git: pkgs/l/libslp-setting
-  * Tag: vconf_0.2.23-1
-
- -- Hyungdeuk Kim <hd3.kim@samsung.com>  Tue, 07 Dec 2011 13:56:20 +0900
diff --git a/debian/compat b/debian/compat
deleted file mode 100644 (file)
index 7ed6ff8..0000000
+++ /dev/null
@@ -1 +0,0 @@
-5
diff --git a/debian/control b/debian/control
deleted file mode 100644 (file)
index 10db04b..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-Source: vconf
-Section: libs
-Priority: optional
-Maintainer: Hakjoo Ko <hakjoo.ko@samsung.com>, Hyungdeuk Kim <hd3.kim@samsung.com>
-Uploaders: Hakjoo Ko <hakjoo.ko@samsung.com>, Hyungdeuk Kim <hd3.kim@samsung.com>
-Build-Depends: debhelper (>= 5), libglib2.0-dev, dlog-dev, libelektra-dev
-Standards-Version: 3.7.2
-
-Package: libslp-setting-keys-dev
-Section: libs
-Architecture: any
-Depends: libvconf-keys-dev
-Description: metapackage for libvconf-keys-dev)
-XB-Public-Package: no
-
-Package: libslp-setting-dev
-Section: libs
-Architecture: any
-Depends: libvconf-dev
-Description: metapackage for libvconf-dev
-XB-Generate-Docs: yes 
-
-Package: libslp-setting-0
-Section: libs
-Architecture: any
-Depends: libvconf-0
-Description: metapackage for libvconf-0
-
-Package: libslp-setting-dbg
-Section: debug
-Architecture: any
-Depends: libvconf-dbg
-Description: metapackage for libvconf-dbg
-
-
-Package: libvconf-keys-dev
-Section: libs
-Architecture: any
-Depends: libvconf-0 (= ${Source-Version})
-Description: vconf key header file (development)
-XB-Public-Package: no
-
-Package: libvconf-dev
-Section: libs
-Architecture: any
-Depends: libvconf-0 (= ${Source-Version}), libglib2.0-dev, dlog-dev, libvconf-keys-dev
-Description: vconf library (development)
-XB-Generate-Docs: yes 
-
-Package: libvconf-0
-Section: libs
-Architecture: any
-Depends: ${shlibs:Depends}, ${misc:Depends}, sqlfs-bin
-Description: vconf library (shared object)
-
-Package: libvconf-dbg
-Section: debug
-Architecture: any
-Depends: ${shlibs:Depends}, ${misc:Depends}, libvconf-0 (= ${Source-Version})
-Description: vconf library (unstripped)
diff --git a/debian/dirs b/debian/dirs
deleted file mode 100644 (file)
index ca882bb..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-usr/bin
-usr/sbin
diff --git a/debian/docs b/debian/docs
deleted file mode 100644 (file)
index a0f0008..0000000
+++ /dev/null
@@ -1 +0,0 @@
-CMakeLists.txt
diff --git a/debian/libvconf-0.install.in b/debian/libvconf-0.install.in
deleted file mode 100644 (file)
index 347acd6..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-@PREFIX@/lib/*.so.*
-@PREFIX@/bin/vconftool
-/opt/var/kdb/kdb_first_boot
-/etc/rc.d/init.d/vconf-init
diff --git a/debian/libvconf-0.postinst.in b/debian/libvconf-0.postinst.in
deleted file mode 100644 (file)
index fa50446..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-#!/bin/sh
-if [ "${USER}" = "root" ]
-then
-   # Change file owner
-   chown root:root @PREFIX@/lib/libvconf.so.*
-   chown root:root @PREFIX@/bin/vconftool
-   chown root:root /opt/var/kdb/kdb_first_boot
-   # Add boot sequence script
-   ln -sf /etc/rc.d/init.d/vconf-init /etc/rc.d/rc3.d/S12vconf-init
-   ln -sf /etc/rc.d/init.d/vconf-init /etc/rc.d/rc4.d/S12vconf-init
-fi
-
-# Change File permissions
-#chmod 644 @PREFIX@/lib/libvconf.so.*
-#chmod 700 @PREFIX@/bin/vconftool
-chmod 644 /opt/var/kdb/kdb_first_boot
-mkdir -p /opt/var/gconf
-chmod 777 -R /opt/var/gconf
diff --git a/debian/libvconf-dev.install.in b/debian/libvconf-dev.install.in
deleted file mode 100644 (file)
index 9035780..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-@PREFIX@/include/vconf/vconf.h
-@PREFIX@/lib/*.so
-@PREFIX@/lib/pkgconfig/*.pc
-
diff --git a/debian/libvconf-keys-dev.install.in b/debian/libvconf-keys-dev.install.in
deleted file mode 100644 (file)
index 91c31fc..0000000
+++ /dev/null
@@ -1 +0,0 @@
-@PREFIX@/include/vconf/vconf-keys.h
diff --git a/debian/rules b/debian/rules
deleted file mode 100755 (executable)
index adba844..0000000
+++ /dev/null
@@ -1,114 +0,0 @@
-#!/usr/bin/make -f
-# -*- makefile -*-
-# Sample debian/rules that uses debhelper.
-# This file was originally written by Joey Hess and Craig Small.
-# As a special exception, when this file is copied by dh-make into a
-# dh-make output file, you may use that output file without restriction.
-# This special exception was added by Craig Small in version 0.37 of dh-make.
-
-# Uncomment this to turn on verbose mode.
-#export DH_VERBOSE=1
-
-CFLAGS ?= -Wall -g
-LDFLAGS ?=
-PREFIX ?= /usr
-DATADIR ?= /opt
-
-BUILDDIR ?= $(CURDIR)/cmake-tmp
-
-ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
-       CFLAGS += -O0
-else
-       CFLAGS += -O2
-endif
-
-LDFLAGS += -Wl,--rpath=$(PREFIX)/lib -Wl,--as-needed
-
-configure: configure-stamp
-configure-stamp:
-       dh_testdir
-       # Add here commands to configure the package.
-       mkdir -p $(BUILDDIR) && cd $(BUILDDIR) && CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" cmake .. -DCMAKE_INSTALL_PREFIX=$(PREFIX)
-
-       touch configure-stamp
-
-build: build-stamp
-
-build-stamp: configure-stamp
-       dh_testdir
-
-       # Add here commands to compile the package.
-       cd $(BUILDDIR) && $(MAKE)
-       #docbook-to-man debian/wavplayer.sgml > wavplayer.1
-
-       for f in `find $(CURDIR)/debian/ -name "*.in"`; do \
-               cat $$f > $${f%.in}; \
-               sed -i -e "s#@PREFIX@#$(PREFIX)#g" $${f%.in}; \
-               sed -i -e "s#@DATADIR@#$(DATADIR)#g" $${f%.in}; \
-       done
-
-
-       touch $@
-
-clean:
-       dh_testdir
-       dh_testroot
-       rm -f build-stamp configure-stamp
-
-       # Add here commands to clean up after the build process.
-       -rm -rf $(BUILDDIR)
-       #rm -rf CMakeCache.txt CMakeFiles cmake_install.cmake Makefile install_manifest.txt
-
-       for f in `find $(CURDIR)/debian/ -name "*.in"`; do \
-               rm -f $${f%.in}; \
-       done
-
-       dh_clean
-
-install: build
-       dh_testdir
-       dh_testroot
-       dh_clean -k
-       dh_installdirs
-
-       # Add here commands to install the package into debian/wavplayer.
-       cd $(BUILDDIR) && $(MAKE) DESTDIR=$(CURDIR)/debian/tmp install
-
-
-# Build architecture-independent files here.
-binary-indep: build install
-# We have nothing to do by default.
-
-# Build architecture-dependent files here.
-binary-arch: build install
-       dh_testdir
-       dh_testroot
-       dh_installchangelogs
-       dh_installdocs
-       dh_installexamples
-       dh_install --sourcedir=debian/tmp
-#      dh_installmenu
-#      dh_installdebconf
-#      dh_installlogrotate
-#      dh_installemacsen
-#      dh_installpam
-#      dh_installmime
-#      dh_python
-#      dh_installinit
-#      dh_installcron
-#      dh_installinfo
-       dh_installman
-       dh_link
-       dh_strip --dbg-package=libvconf-dbg
-       dh_compress
-       dh_fixperms
-#      dh_perl
-       dh_makeshlibs
-       dh_installdeb
-       dh_shlibdeps
-       dh_gencontrol
-       dh_md5sums
-       dh_builddeb
-
-binary: binary-indep binary-arch
-.PHONY: build clean binary-indep binary-arch binary install configure
diff --git a/image/SLP_Vconf_PG_image01.png b/image/SLP_Vconf_PG_image01.png
new file mode 100755 (executable)
index 0000000..3e802cf
Binary files /dev/null and b/image/SLP_Vconf_PG_image01.png differ
index 2b8cb99ddb83e6fce7fb110fa192f6ac0bf09567..c18096f9154930314a634facff105b3357b41598 100644 (file)
@@ -46,3 +46,7 @@ ADD_DEFINITIONS("-Wstrict-overflow=5")          # Also warn about cases where th
 #ADD_DEFINITIONS("-Winline")                     # Warn if a function can not be inlined and it was declared as inline.
 ADD_DEFINITIONS("-Wdisabled-optimization")      # Warn if a requested optimization pass is disabled.
 
+
+
+add_executable(test-vconf-headers test-vconf-headers.c)
+
diff --git a/include/SLP_vconf_PG.h b/include/SLP_vconf_PG.h
new file mode 100755 (executable)
index 0000000..6b2ca80
--- /dev/null
@@ -0,0 +1,194 @@
+/*
+ * libslp-setting
+ *
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Contact: Hakjoo Ko <hakjoo.ko@samsung.com>
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+/**
+ *  @ingroup SLP_PG
+ *  @defgroup VCONF_PG VConf
+ *  @{
+
+ <h1 class="pg">Introduction</h1>
+ VConf is a virtual configuration system which provides three kinds of backend and notification. Internally, VConf uses a modified Elektra 0.7 and inotify of kernel.
+
+ @image html SLP_Vconf_PG_image01.png
+
+ <h2 class="pg">Properties</h2>
+- Convenient API (read/write common data type : integer, double, boolean, string)
+- Guarantee Transaction(db backend)
+- Apply Key-List concept
+- Changeable Backend (db, file, memory)
+- Simple Notification based Inotify
+- Header File : vconf.h 
+
+<h1 class="pg">Programming Guide</h1>
+
+<h2 class="pg">Backends</h1>
+VConf has 3 kinds of backend.
+
+<h3 class="pg">1.      db backend</h1>
+We can use this backend by specifying the "db" prefix. <br>
+E.g. db/test_app/key1 <br>
+A key starting with Â¡Â°db¡± is saved at a location which is mounted by libsqlfs. Therefore the key has characteristics of a database.(robustness, atomicity). But it is slower than the other backends. <br>
+Developers can use this backend in order to synchronize immediately. <br>
+
+@code
+#include <stdio.h>
+#include <vconf.h> 
+
+const char *key1_name="db/test/key1";
+
+int main(int argc, char **argv)
+{
+   int key1_value;
+
+   if(vconf_set_int(key1_name,1))
+      fprintf(stderr, "vconf_set_int FAIL\n");
+   else
+      printf("vconf_set_int OK\n");
+
+   if(vconf_get_int(key1_name, &key1_value))
+      fprintf(stderr, "vconf_get_int FAIL\n");
+   else
+      printf("vconf_get_int OK(key1 value is %d)\n", key1_value);
+
+   return 0;
+}
+@endcode
+
+<h3 class="pg">2.      memory backend</h1>
+We can use this backend by specifying the "memory" prefix. <br>
+E.g. memory/test_app/key1 <br>
+A key starting with Â¡Â°memory¡± is saved at a location which is mounted by tmpfs. Therefore the key has characteristics of memory. It has the highest speed. But if the target is turned off, the key is removed (volatile). <br>
+Developers can use this backend for keys such as the power state of phone. <br>
+
+@code
+#include <stdio.h>
+#include <vconf.h>
+
+ const char *key1_name="memory/test/key1";
+
+ int main(int argc, char **argv)
+ {
+   int key1_value;
+
+   if(vconf_set_bool(key1_name, 1))
+      fprintf(stderr, "vconf_set_bool FAIL\n");
+   else
+      printf("vconf_set_bool OK\n");
+
+   if(vconf_get_bool(key1_name, &key1_value))
+      fprintf(stderr, "vconf_get_bool FAIL\n");
+   else
+      printf("vconf_get_bool OK(key1 value is %d)\n", key1_value);
+
+   return 0;
+ }
+@endcode
+
+<h3 class="pg">3.      File backend</h1>
+We can use this backend by specifying the "file" prefix. <br>
+E.g. file/test_app/key1 <br>
+A key starting with Â¡Â°file¡± is saved at a location which is mounted by basic file system. Therefore the key has characteristics of file. If the target is turned off without synchronising, the key can lose data. <br>
+Developers can use this backend for keys such as the sync state of something, where it is not vitally important for the key to hold the correct data. <br>
+
+@code
+#include <stdio.h>
+#include <vconf.h> 
+
+const char *key1_name="file/test/key1";
+
+int main(int argc, char **argv)
+{
+   double key1_value;
+
+   if(vconf_set_dbl(key1_name, 1.23))
+      fprintf(stderr, "vconf_set_dbl FAIL\n");
+   else {
+      printf("vconf_set_dbl OK\n");
+      vconf_sync_key(key1_name);
+   }
+
+   if(vconf_get_dbl(key1_name, &key1_value))
+      fprintf(stderr, "vconf_get_dbl FAIL\n");
+   else
+      printf("vconf_get_dbl OK(key1 value is %f)\n", key1_value);
+
+   return 0;
+}
+@endcode
+
+<h2 class="pg">Notification</h1>
+The notification of a changed key is handled in the g_main_loop of the default context. If you want to receive a notification, you should use g_main_loop of the default context. <br>
+For g_main_loop, refer to glib manual. <br>
+
+@code
+#include <stdio.h>
+#include <vconf.h>
+#include <glib-object.h>
+#include <glib.h>
+
+const char *key1_name="file/test/key1";
+
+void test_cb(keynode_t *key, void* data)
+{
+   switch(vconf_keynode_get_type(key))
+   {
+      case VCONF_TYPE_INT:
+       printf("key = %s, value = %d(int)\n",
+               vconf_keynode_get_name(key), vconf_keynode_get_int(key));
+       break;
+      case VCONF_TYPE_BOOL:
+       printf("key = %s, value = %d(bool)\n",
+               vconf_keynode_get_name(key), vconf_keynode_get_bool(key));
+       break;
+      case VCONF_TYPE_DOUBLE:
+       printf("key = %s, value = %f(double)\n",
+               vconf_keynode_get_name(key), vconf_keynode_get_dbl(key));
+       break;
+      case VCONF_TYPE_STRING:
+       printf("key = %s, value = %s(string)\n",
+               vconf_keynode_get_name(key), vconf_keynode_get_str(key));
+       break;
+      default:
+       fprintf(stderr, "Unknown Type(%d)\n", vconf_keynode_get_type(key));
+       break;
+   }
+   return;
+}
+
+int main()
+{
+   GMainLoop *event_loop;
+
+   vconf_notify_key_changed(key1_name, test_cb, NULL);
+
+   event_loop = g_main_loop_new(NULL, FALSE);
+   g_main_loop_run(event_loop);
+
+   vconf_ignore_key_changed(key1_name, test_cb);
+
+   return 0;
+}
+@endcode
+*/
+
+/**
+@}
+*/
diff --git a/include/test-vconf-headers.c b/include/test-vconf-headers.c
new file mode 100644 (file)
index 0000000..e73983f
--- /dev/null
@@ -0,0 +1,31 @@
+/*
+ * libslp-setting
+ *
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Contact: Hakjoo Ko <hakjoo.ko@samsung.com>
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+/*
+#include "vconf-internals.h"
+#include "vconf-log.h"
+*/
+#include "vconf.h"
+#include "vconf-keys.h"
+int main(void)
+{
+       return 0;
+}
index a7f9bea2943b4db58c48a5d0de577aafb632985f..24edfb19813d24da343e4c0776210ba99f21c1fd 100755 (executable)
 #ifndef __VCONF_GCONF_H__
 #define __VCONF_GCONF_H__
 
-#include <kdb.h>
 #include "vconf-log.h"
+#include "vconf.h"
 
-/* #define KER_VER_CHECK */
 #define BACKEND_DB_PREFIX "db/"
 #define BACKEND_FILE_PREFIX "file/"
 #define BACKEND_MEMORY_PREFIX "memory/"
-#define BACKEND_GCONF_LOCAL_PREFIX "gconf_l/"
-#define BACKEND_GCONF_DAEMON_PREFIX "gconf_d/"
 
-#define BUF_LEN (1024)
-#define CALLBACK_MAX (64)
-
-typedef struct _keynode_t {
-       char *keyname;
-       int type;
-       union {
-               int i;
-               int b;
-               double d;
-               char *s;
-       } value;
-       struct _keynode_t *next;
-} keynode_t;
-
-typedef struct _keylist_t {
-       int num;
-       keynode_t *head;
-       keynode_t *cursor;
-} keylist_t;
-
-/*This is a callback function pointer signature*/
-typedef void (*cb_func) (void *user_data);
+#define BACKEND_SYSTEM_DIR "/opt/var/kdb/"
+#define BACKEND_MEMORY_DIR "/var/run/"
 
-/*This is a callback function pointer signature for value return*/
-typedef void (*vconf_callback_fn) (keynode_t *node, void *user_data);
-
-typedef struct {
-       char *key;
-       vconf_callback_fn cb;
-       void *cb_data;
-       unsigned int extra_num;
-} callback_node_t;
+#define BUF_LEN (1024)
+#define KEY_PATH (128)
+#define ERR_LEN (128)
 
 enum {
        VCONF_BACKEND_NULL = 0,
-       VCONF_BACKEND_GCONF_D,
-       VCONF_BACKEND_GCONF_L,
        VCONF_BACKEND_DB,
        VCONF_BACKEND_FILE,
-       VCONF_BACKEND_MEMORY,
+       VCONF_BACKEND_MEMORY
 };
 
+#if 0
 enum {
        VCONF_TYPE_NONE = 0,
-       VCONF_TYPE_BINARY = 20,
        VCONF_TYPE_STRING = 40, /*KEY_TYPE_STRING of KDB is 40 */
        VCONF_TYPE_INT = 41,
        VCONF_TYPE_DOUBLE = 42,
        VCONF_TYPE_BOOL = 43,
-       VCONF_TYPE_DIR,
+       VCONF_TYPE_DIR
 };
 
 typedef int get_option_t;
@@ -101,12 +69,34 @@ enum {
        VCONF_GET_DIR,
 };
 
-typedef int cb_handle_t;
+/*This is a callback function pointer signature for value return*/
+typedef void (*vconf_callback_fn) (keynode_t *node, void *user_data);
+
+#endif
+
+
+
+#define VCONF_OK                 0
+#define VCONF_ERROR              -1
+
 enum {
-       VCONF_GLIB_LOOP,
-       VCONF_ECORE_LOOP
+       VCONF_ERROR_WRONG_PREFIX = 1,
+       VCONF_ERROR_WRONG_TYPE,
+       VCONF_ERROR_WRONG_VALUE,
+       VCONF_ERROR_NO_MEM,
+       VCONF_ERROR_FILE_OPEN = 11,
+       VCONF_ERROR_FILE_FREAD,
+       VCONF_ERROR_FILE_FGETS,
+       VCONF_ERROR_FILE_WRITE,
+       VCONF_ERROR_FILE_SYNC,
+       VCONF_ERROR_FILE_CLOSE,
+       VCONF_ERROR_FILE_ACCESS,
+       VCONF_ERROR_FILE_CHMOD,
+       VCONF_ERROR_FILE_LOCK
 };
 
+#define return_err(err) return 0-err;
+
 /* Error codes retunred by the configuration manager */
 #if 0
 typedef enum {
@@ -122,7 +112,7 @@ typedef enum {
        VCONF_ERROR_NO_PERMISSION = 3,
        /* Address couldn't be resolved */
        VCONF_ERROR_BAD_ADDRESS = 4,
-       /* directory or key isn't valid 
+       /* directory or key isn't valid
           (contains bad characters, or malformed slash arrangement) */
        VCONF_ERROR_BAD_KEY = 5,
        /* Syntax error when parsing */
@@ -176,22 +166,17 @@ typedef enum {
 } SLP_Setting_Error;
 #endif
 
-/*************** Elecktra ****************/
-#define KDB_USER_DIR "/opt/var/kdb"
-#define KDB_SYSTEM_DIR "/opt/var/kdb"
-#define KDB_MEMORY_DIR "/var/run"
-
-int _vconf_set_empty(const char *key);
-Key *_vconf_kdb_get(const char *key);
 int _vconf_kdb_add_notify
-       (int backend_type, const char *keyname, vconf_callback_fn cb, void *data);
+       (const char *keyname, vconf_callback_fn cb, void *data);
 int _vconf_kdb_del_notify
-       (int backend_type, const char *keyname, vconf_callback_fn cb);
+       (const char *keyname, vconf_callback_fn cb);
+
+int _vconf_get_key_path(const char *keyname, char *path);
+int _vconf_get_key(keynode_t *keynode);
 
-#define KDB_OPEN_HANDLE \
-       do {\
-               if (g_kdb_handle == NULL)\
-               g_kdb_handle = kdbOpen();\
-       } while (0)
+int _vconf_keynode_set_keyname(keynode_t *keynode, const char *keyname);
+inline void _vconf_keynode_set_null(keynode_t *keynode);
+inline keynode_t *_vconf_keynode_new(void);
+inline void _vconf_keynode_free(keynode_t *keynode);
 
 #endif
index 7925d4a0439e878e7b99cd355ac9bab907164c7d..4252d74dad3b5dce5375c3bef03e419c9fb3036a 100755 (executable)
 #ifndef __VCONF_KEYS_H__
 #define __VCONF_KEYS_H__
 
+#include "vconf-internal-keys.h"
+
 /**
  * This file defines keys and values.
  *
  * @file        vconf-keys.h
  * @defgroup    vconf_key Definitions of shared Keys
  * @ingroup     VCONF
- * @author      Wonguk Jeong (wonguk.jeong@samsung.com)
- * @author      Sangjung Woo (sangjung.woo@samsung.com)
- * @version     0.2
+ * @author      Hyungdeuk Kim (hd3.kim@samsung.com)
+ * @version     0.3
  * @brief       This file has the definitions of shared keys.
  *
  * add keys(key name) and values(enum) here for shared keys....
  *
  */
 
-/* ========================== Mobex Engine Keys & Values ============================ */
-/**
- * @defgroup vconf_key_modex Modex Engine Keys
- * @ingroup vconf_key
- * @addtogroup vconf_key_modex
- * @{
- * @brief Maintainer : sunbong.ha@samsung.com
- */
-#define VCONFKEY_MOBEX_ENGINE_PREFIX "memory/mobex_engine"
-
-/**
- * <!-- reg-control keynum=0, value=nt -->
- * @brief mobex engine status
- */
-#define VCONFKEY_MOBEX_ENGINE_STATUS_INT VCONFKEY_MOBEX_ENGINE_PREFIX"/status"
-/* check memo sync start/end for mobex-engine */
-#define VCONFKEY_MOBEX_ENGINE_MEMO_SYNC_STATUS VCONFKEY_MOBEX_ENGINE_PREFIX"/memo_sync_status"
-/**
- * @}
- */
-
-/* ========================== Telephony Keys & Values ============================ */
+/* ========================== System Manager Notification ============================= */
 /**
- * @defgroup vconf_key_Telephony Telephony Keys
+ * @defgroup vconf_key_SystemManager System Manager Keys
  * @ingroup vconf_key
- * @addtogroup vconf_key_Telephony
+ * @addtogroup vconf_key_SystemManager
  * @{
- * @brief Maintainer : kyeongchul.kim@samsung.com, youngman.park@samsung.com
- */
-#define VCONFKEY_TELEPHONY_PREFIX "memory/telephony"
-
-/**
- * <!-- reg-control keynum=0, value=string -->
- * @brief current attached network name
- */
-#define VCONFKEY_TELEPHONY_NWNAME   VCONFKEY_TELEPHONY_PREFIX"/nw_name"
-
-/**
- * <!-- reg-control keynum=1, value=int -->
- * @brief it stands for current attached network PLMN value
- */
-#define VCONFKEY_TELEPHONY_PLMN     VCONFKEY_TELEPHONY_PREFIX"/plmn"
-
-/**
- * <!-- reg-control keynum=2, value=int -->
- * @brief it stands for current attached network LAC value
- */
-#define VCONFKEY_TELEPHONY_LAC      VCONFKEY_TELEPHONY_PREFIX"/lac"
-
-/**
- * <!-- reg-control keynum=3, value=int -->
- * @brief it stands for current attached network cell id value
- */
-#define VCONFKEY_TELEPHONY_CELLID   VCONFKEY_TELEPHONY_PREFIX"/cell_id"
-
-/**
- * <!-- reg-control keynum=4, value=enum -->
- * @brief it stands for current network type (3G, 2G, EDGE, Searching, Emergency, etc)
- */
-#define VCONFKEY_TELEPHONY_SVCTYPE VCONFKEY_TELEPHONY_PREFIX"/svc_type"
-enum {
-       VCONFKEY_TELEPHONY_SVCTYPE_NONE,        /**< Network unknown */
-       VCONFKEY_TELEPHONY_SVCTYPE_NOSVC,       /**< Network no service */
-       VCONFKEY_TELEPHONY_SVCTYPE_EMERGENCY,   /**< Network emergency */
-       VCONFKEY_TELEPHONY_SVCTYPE_SEARCH,      /**< Network search 1900 */
-       VCONFKEY_TELEPHONY_SVCTYPE_2G,                  /**< Network 2G */
-       VCONFKEY_TELEPHONY_SVCTYPE_2_5G,                /**< Network 2.5G */
-       VCONFKEY_TELEPHONY_SVCTYPE_2_5G_EDGE,   /**< Network EDGE */
-       VCONFKEY_TELEPHONY_SVCTYPE_3G,                  /**< Network UMTS */
-       VCONFKEY_TELEPHONY_SVCTYPE_HSDPA        /**< Network HSDPA */
-};
-
-/**
- * <!-- reg-control keynum=5, value=enum -->
- * @brief it stands for current network circuit service availability
- */
-#define VCONFKEY_TELEPHONY_SVC_CS VCONFKEY_TELEPHONY_PREFIX"/svc_cs"
-enum {
-       VCONFKEY_TELEPHONY_SVC_CS_UNKNOWN = 0x00,
-       VCONFKEY_TELEPHONY_SVC_CS_OFF,
-       VCONFKEY_TELEPHONY_SVC_CS_ON
-};
-
-/**
- * <!-- reg-control keynum=6, value=enum -->
- * @brief it stands for current network package service availability
- */
-#define VCONFKEY_TELEPHONY_SVC_PS VCONFKEY_TELEPHONY_PREFIX"/svc_ps"
-enum {
-       VCONFKEY_TELEPHONY_SVC_PS_UNKNOWN = 0x00,
-       VCONFKEY_TELEPHONY_SVC_PS_OFF,
-       VCONFKEY_TELEPHONY_SVC_PS_ON
-};
-
-/**
- * <!-- reg-control keynum=7, value=enum -->
- * @brief it stands for current network zone is home zone or roaming zone
- */
-#define VCONFKEY_TELEPHONY_SVC_ROAM VCONFKEY_TELEPHONY_PREFIX"/svc_roam"
-enum {
-       VCONFKEY_TELEPHONY_SVC_ROAM_OFF = 0x00,
-       VCONFKEY_TELEPHONY_SVC_ROAM_ON
-};
-
-#define VCONFKEY_TELEPHONY_ZONE_TYPE VCONFKEY_TELEPHONY_PREFIX"/zone_type"
-enum {
-       VCONFKEY_TELEPHONY_ZONE_NONE = 0x00,
-       VCONFKEY_TELEPHONY_ZONE_HOME,
-       VCONFKEY_TELEPHONY_ZONE_CITY
-};
-
-/**
- * <!-- reg-control keynum=8, value=enum -->
- * @brief it stands for sim initialization status
- */
-#define VCONFKEY_TELEPHONY_SIM_INIT VCONFKEY_TELEPHONY_PREFIX"/sim_init"
-enum {
-       VCONFKEY_TELEPHONY_SIM_INIT_NONE = 0x00,
-       VCONFKEY_TELEPHONY_SIM_INIT_COMPLETED
-};
-
-/**
- * <!-- reg-control keynum=9, value=enum -->
- * @brief it stands for current sim is needed several lock verification or not
- */
-#define VCONFKEY_TELEPHONY_SIM_CHV VCONFKEY_TELEPHONY_PREFIX"/sim_chv"
-enum {
-       VCONFKEY_TELEPHONY_SIM_CHV_NONE = 0x00,
-       VCONFKEY_TELEPHONY_SIM_CHV_REQUIRED
-};
-
-/**
- * <!-- reg-control keynum=10, value=enum -->
- * @brief it stands for current device has SIM or not
+ * @brief Maintainer : jinkun.jang@samsung.com
  */
-#define VCONFKEY_TELEPHONY_SIM_SLOT VCONFKEY_TELEPHONY_PREFIX"/sim_slot"
-enum {
-       VCONFKEY_TELEPHONY_SIM_UNKNOWN = 0x00,
-       VCONFKEY_TELEPHONY_SIM_INSERTED,
-       VCONFKEY_TELEPHONY_SIM_NOT_PRESENT,
-       VCONFKEY_TELEPHONY_SIM_CARD_ERROR
-};
-
-/**
- * <!-- reg-control keynum=11, value=enum -->
- * @brief it stands for current telephony phonebook is ready to give valid value or not
- */
-#define VCONFKEY_TELEPHONY_SIM_PB_INIT VCONFKEY_TELEPHONY_PREFIX"/pb_init"
-enum {
-       VCONFKEY_TELEPHONY_SIM_PB_INIT_NONE = 0x00,
-       VCONFKEY_TELEPHONY_SIM_PB_INIT_COMPLETED
-};
-
-/**
- * <!-- reg-control keynum=12, value=enum -->
- * @brief it stands for current call status ( idle, connect, held )
- */
-#define VCONFKEY_TELEPHONY_CALL_STATE VCONFKEY_TELEPHONY_PREFIX"/call_state"
-enum {
-       VCONFKEY_TELEPHONY_CALL_CONNECT_IDLE = 0x00,
-       VCONFKEY_TELEPHONY_CALL_CONNECT_ACTIVE,
-       VCONFKEY_TELEPHONY_CALL_CONNECT_HELD
-};
-
-#define VCONFKEY_TELEPHONY_CALL_FORWARD_STATE VCONFKEY_TELEPHONY_PREFIX"/call_forward_state"
-enum {
-       VCONFKEY_TELEPHONY_CALL_FORWARD_OFF = 0x00,
-       VCONFKEY_TELEPHONY_CALL_FORWARD_ON = 0x01
-};
-
-/**
- * <!-- reg-control keynum=13, value=enum -->
- * @brief it stands for current telephony apis is ready to use or not
- */
-#define VCONFKEY_TELEPHONY_TAPI_STATE VCONFKEY_TELEPHONY_PREFIX"/tapi_state"
-enum {
-       VCONFKEY_TELEPHONY_TAPI_STATE_NONE = 0x00,
-       VCONFKEY_TELEPHONY_TAPI_STATE_READY
-};
-
-/**
- * <!-- reg-control keynum=14, value=enum -->
- * @brief it stands for display priority between SIM SPN and PLMN
- */
-#define VCONFKEY_TELEPHONY_SPN_DISP_CONDITION VCONFKEY_TELEPHONY_PREFIX"/spn_disp_condition"
-enum {
-       VCONFKEY_TELEPHONY_DISP_INVALID = 0x00,
-       VCONFKEY_TELEPHONY_DISP_SPN,
-       VCONFKEY_TELEPHONY_DISP_PLMN,
-       VCONFKEY_TELEPHONY_DISP_SPN_PLMN
-};
-
-/**
- * <!-- reg-control keynum=15, value=string -->
- * @brief it stands for SPN name which is stored in SIM card
- */
-#define VCONFKEY_TELEPHONY_SPN_NAME VCONFKEY_TELEPHONY_PREFIX"/spn"
-
-#define VCONFKEY_TELEPHONY_SAT_IDLE_SCREEN_EVENT VCONFKEY_TELEPHONY_PREFIX"/sat_idle"
-enum {
-       VCONFKEY_TELEPHONY_SAT_EVENT_DISABLED,
-       VCONFKEY_TELEPHONY_SAT_EVENT_ENABLED
-};
-
-#define VCONFKEY_TELEPHONY_SAT_STATE VCONFKEY_TELEPHONY_PREFIX"/sat_state"
-enum {
-       VCONFKEY_TELEPHONY_SAT_NONE = 0x00,
-       VCONFKEY_TELEPHONY_SAT_READY
-};
-
-#define VCONFKEY_TELEPHONY_SAT_SETUP_IDLE_TEXT VCONFKEY_TELEPHONY_PREFIX"/idle_text"
-
-#define VCONFKEY_TELEPHONY_ZONE_ZUHAUSE VCONFKEY_TELEPHONY_PREFIX"/zuhause_zone"
 
 /**
- * <!-- reg-control keynum=16, value=enum -->
- * @brief it stands for current network RSSI strength
+ * @brief usbhost status
+ *
+ * 0 : Remove \n
+ * 1 : Add \n
+ * 3 : Over current \n
  */
-#define VCONFKEY_TELEPHONY_RSSI VCONFKEY_TELEPHONY_PREFIX"/rssi"
-enum {
-       VCONFKEY_TELEPHONY_RSSI_0 = 0x00,
-       VCONFKEY_TELEPHONY_RSSI_1,
-       VCONFKEY_TELEPHONY_RSSI_2,
-       VCONFKEY_TELEPHONY_RSSI_3,
-       VCONFKEY_TELEPHONY_RSSI_4,
-       VCONFKEY_TELEPHONY_RSSI_5,
-       VCONFKEY_TELEPHONY_RSSI_6
-};
-
-#define VCONFKEY_TELEPHONY_LOW_BATTERY VCONFKEY_TELEPHONY_PREFIX"/low_battery"
+#define VCONFKEY_SYSMAN_USB_HOST_STATUS             "memory/sysman/usbhost_status"
 enum {
-       VCONFKEY_TELEPHONY_BATT_POWER_OFF_LEVEL = 0x01,
-       VCONFKEY_TELEPHONY_BATT_CRIT_LOW_LEVEL,
-       VCONFKEY_TELEPHONY_BATT_LOW_LEVEL,
-       VCONFKEY_TELEPHONY_BATT_NORMAL_LEVEL
+       VCONFKEY_SYSMEN_USB_HOST_DISCONNECTED = 0,
+       VCONFKEY_SYSMEN_USB_HOST_CONNECTED,
+       VCONFKEY_SYSMEN_USB_HOST_CHANGED
 };
 
-#define VCONFKEY_TELEPHONY_IMEI VCONFKEY_TELEPHONY_PREFIX"/imei"
-
-/**
- * <!-- reg-control keynum=17, value=string -->
- * @brief it stands for current inserted SIM number. This value is optional
- */
-#define VCONFKEY_TELEPHONY_SUBSCRIBER_NUMBER VCONFKEY_TELEPHONY_PREFIX"/szSubscriberNumber"
-
 /**
- * <!-- reg-control keynum=18, value=string -->
- * @brief it stands for current inserted SIM name. This value is optional
+ * @brief mmc status
+ *
+ * 0 : Remove \n
+ * 1 : mount \n
+ * 2 : insert(not mount) \n
  */
-#define VCONFKEY_TELEPHONY_SUBSCRIBER_NAME VCONFKEY_TELEPHONY_PREFIX"/szSubscriberAlpha"
-
-#define VCONFKEY_TELEPHONY_IMEI_FACTORY_REBOOT VCONFKEY_TELEPHONY_PREFIX"/bFactoryProcess"     /* int 0:fail, 1:success */
-enum {
-       VCONFKEY_TELEPHONY_FACTORYMODE_OFF = 0x00,
-       VCONFKEY_TELEPHONY_FACTORYMODE_ON = 0x01
-};
-
-#define VCONFKEY_TELEPHONY_SIM_FACTORY_MODE VCONFKEY_TELEPHONY_PREFIX"/bIMSIFactoryProcess"    /* int 0:normal, 1:factory sim */
-enum {
-       VCONFKEY_TELEPHONY_SIM_FACTORYMODE_OFF = 0x00,
-       VCONFKEY_TELEPHONY_SIM_FACTORYMODE_ON = 0x01
-};
-
-#define VCONFKEY_TELEPHONY_SWVERSION VCONFKEY_TELEPHONY_PREFIX"/szSWVersion"   /* string */
-
-#define VCONFKEY_TELEPHONY_HWVERSION VCONFKEY_TELEPHONY_PREFIX"/szHWVersion"   /* string */
-
-#define VCONFKEY_TELEPHONY_CALDATE VCONFKEY_TELEPHONY_PREFIX"/szCalDate"       /* string */
-
-#define VCONFKEY_TELEPHONY_PRODUCTCODE VCONFKEY_TELEPHONY_PREFIX"/productCode" /* string */
-
-/* Factory key string block, by Youngman Park <youngman.park@samsung.com> */
-#define VCONFKEY_TELEPHONY_DB_PREFIX "db/telephony"
-#define VCONFKEY_TELEPHONY_FACTORY_KSTRINGB VCONFKEY_TELEPHONY_DB_PREFIX"/bKeyStringBlock"
+#define VCONFKEY_SYSMAN_MMC_STATUS                  "memory/sysman/mmc"
 enum {
-       VCONFKEY_TELEPHONY_FACTORY_KSTRINGB_OFF = 0x00,
-       VCONFKEY_TELEPHONY_FACTORY_KSTRINGB_ON = 0x01
-};
-
-/* manage telephony call state */
-#define VCONFKEY_TELEPHONY_CALL1_STATE VCONFKEY_TELEPHONY_PREFIX"/call1_state"
-#define VCONFKEY_TELEPHONY_CALL2_STATE VCONFKEY_TELEPHONY_PREFIX"/call2_state"
-#define VCONFKEY_TELEPHONY_CALL3_STATE VCONFKEY_TELEPHONY_PREFIX"/call3_state"
-#define VCONFKEY_TELEPHONY_CALL4_STATE VCONFKEY_TELEPHONY_PREFIX"/call4_state"
-#define VCONFKEY_TELEPHONY_CALL5_STATE VCONFKEY_TELEPHONY_PREFIX"/call5_state"
-#define VCONFKEY_TELEPHONY_CALL6_STATE VCONFKEY_TELEPHONY_PREFIX"/call6_state"
-enum {
-        VCONFKEY_TELEPHONY_CALL_STATE_IDLE = 0x00,
-        VCONFKEY_TELEPHONY_CALL_STATE_ACTIVE,
-        VCONFKEY_TELEPHONY_CALL_STATE_HELD,
-        VCONFKEY_TELEPHONY_CALL_STATE_DIALING,
-        VCONFKEY_TELEPHONY_CALL_STATE_ALERT,
-        VCONFKEY_TELEPHONY_CALL_STATE_INCOMING,
-        VCONFKEY_TELEPHONY_CALL_STATE_WAITING
+       VCONFKEY_SYSMAN_MMC_REMOVED = 0,
+       VCONFKEY_SYSMAN_MMC_MOUNTED,
+       VCONFKEY_SYSMAN_MMC_INSERTED_NOT_MOUNTED
 };
 
 /**
- * @}
+ * @brief earkey status
+ *
+ * 0 : not press \n
+ * 1 : press \n
  */
+#define VCONFKEY_SYSMAN_EARJACKKEY                  "memory/sysman/earjack_key"
 
-/* ============================ SAT Keys & Values ============================*/
 /**
- * @defgroup vconf_key_sat Sim Application Toolkit Keys
- * @ingroup vconf_key
- * @addtogroup vconf_key_sat SAT
- * @{
- * @brief Maintainer : sunghyuk.lee@samsung.com
- */
-#define VCONFKEY_SAT_PREFIX "memory/sat"
-
- /**
- * <!-- reg-control keynum=0, value=string -->
- * @brief It contains a text string which is provided by SETUP IDLE MODE TEXT command from SATK
+ * @brief cradle status
+ *
+ * 0 : Remove \n
+ * 1 : Add \n
  */
-#define VCONFKEY_SAT_IDLE_TEXT    VCONFKEY_SAT_PREFIX"/idle_text"
+#define VCONFKEY_SYSMAN_CRADLE_STATUS               "memory/sysman/cradle_status"
 
 /**
  * @}
  */
-/* ============================ Message Keys & Values ============================*/
-/**
- * @defgroup vconf_key_Message Message Keys
- * @ingroup vconf_key
- * @addtogroup vconf_key_Message
- * @{
- * @brief Maintainer : cw1218.kim@samsung.com
- */
-/* [DO NOT UPDATE THIS] */
-#define VCONFKEY_MSG_MEMORY_PREFIX                     "memory/msg"
-#define VCONFKEY_MSG_DB_PREFIX                         "db/msg"
-#define VCONFKEY_MSG_SERVER_READY                      VCONFKEY_MSG_MEMORY_PREFIX"/ready"
-#define VCONFKEY_MSG_STATUS_CHANGED_CONTACTID          VCONFKEY_MSG_MEMORY_PREFIX"/contact_id"
-
-#define VCONFKEY_MESSAGE_RECV_SMS_STATE                        VCONFKEY_MSG_DB_PREFIX"/recv_sms"
-#define VCONFKEY_MESSAGE_RECV_MMS_STATE                        VCONFKEY_MSG_DB_PREFIX"/recv_mms"
-#define VCONFKEY_MESSAGE_RECV_DELREP_STATE             VCONFKEY_MSG_DB_PREFIX"/recv_delrep"
-#define VCONFKEY_MESSAGE_RECV_READREP_STATE            VCONFKEY_MSG_DB_PREFIX"/recv_readrep"
-#define VCONFKEY_MESSAGE_RECV_VOICEMAIL_STATE          VCONFKEY_MSG_DB_PREFIX"/recv_voicemail"
-#define VCONFKEY_MESSAGE_RECV_MMS_NOTI_STATE           VCONFKEY_MSG_DB_PREFIX"/recv_mms_noti"
-#define VCONFKEY_MESSAGE_NETWORK_MODE                  VCONFKEY_MSG_DB_PREFIX"/network_mode"
-
-enum {
-       VCONFKEY_MESSAGE_NETWORK_PS_ONLY = 0x01,
-       VCONFKEY_MESSAGE_NETWORK_CS_ONLY = 0x02,
-       VCONFKEY_MESSAGE_NETWORK_PS_PREFER = 0x03,
-       VCONFKEY_MESSAGE_NETWORK_CS_PREFER = 0x04
-};
 
-/**
- * @}
- */
 
-/* ============================ Email Service Keys & Values ============================*/
+/* =============================== Wifi ====================================== */
 /**
- * @defgroup vconf_key_EmailService Email service Keys
+ * @defgroup vconf_key_Wifi Wifi Keys
  * @ingroup vconf_key
- * @addtogroup vconf_key_EmailService
+ * @addtogroup vconf_key_Wifi
  * @{
- * @brief Maintainer : ch715.lee@samsung.com
- */
-
-#define VCONFKEY_EMAIL_SERVICE_PREFIX  "db/email"
-
-#define VCONFKEY_EMAIL_SERVICE_UNREAD  VCONFKEY_EMAIL_SERVICE_PREFIX"/unread"
-
-/**
- * @}
+ * @brief Maintainer : dwmax.lee@samsung.com
  */
 
-/* ============================ FileManager Service Keys & Values ============================*/
 /**
- * @defgroup vconf_key_FileManagerService FileManager Service Keys
- * @ingroup vconf_key
- * @addtogroup vconf_key_FileManagerService
- * @{
- * @brief Maintainer : yy9875.kim@samsung.com
+ * @Wi-Fi Direct state
+ *
+ * 0: Power off \n
+ * 1: Power on \n
+ * 2: Discoverable mode \n
+ * 3: Connected with peer as GC \n
+ * 4: Connected with peer as GO
  */
-
-#define VCONFKEY_FILEMANAGER_MMC_STATUS                "memory/filemanager/Mmc"
-enum {
-       VCONFKEY_FILEMANAGER_MMC_REMOVED = 0,
-       VCONFKEY_FILEMANAGER_MMC_LOADING,
-       VCONFKEY_FILEMANAGER_MMC_LOADED,
-       VCONFKEY_FILEMANAGER_MMC_FULL
-};
-
-#define VCONFKEY_FILEMANAGER_DB_STATUS    "db/filemanager/dbupdate"
+#define VCONFKEY_WIFI_DIRECT_STATE                  "memory/wifi_direct/state"
 enum {
-       VCONFKEY_FILEMANAGER_DB_UPDATING = 0,
-       VCONFKEY_FILEMANAGER_DB_UPDATED
+       /** Power off */
+       VCONFKEY_WIFI_DIRECT_DEACTIVATED  = 0,
+       /** Power on */
+       VCONFKEY_WIFI_DIRECT_ACTIVATED,
+       /** Discoverable mode */
+       VCONFKEY_WIFI_DIRECT_DISCOVERING,
+       /** Connected with peer as GC */
+       VCONFKEY_WIFI_DIRECT_CONNECTED,
+       /** Connected with peer as GO */
+       VCONFKEY_WIFI_DIRECT_GROUP_OWNER
 };
 
 /**
  * @}
  */
 
-/* ============================ Instant Message Keys & Values ============================*/
-/**
- * @defgroup vconf_key_IM Instant Message Keys
- * @ingroup vconf_key
- * @addtogroup vconf_key_IM
- * @{
- * @brief Maintainer : nosweet7958@gmail.com
- */
-#define VCONFKEY_IM_RECV_UNREAD    "db/im/recv_unread"
-/**
- * @}
- */
 
-/* ============================ Seven Email Keys & Values ============================*/
-/**
- * @defgroup vconf_key_seven_email Seven Email Keys
- * @ingroup vconf_key
- * @addtogroup vconf_key_seven_email
- * @{
- * @brief Maintainer : nosweet7958@gmail.com
- */
-#define VCONFKEY_SEVEN_EMAIL_RECV_UNREAD    "db/seven-email/recv_unread"
-/**
- * @}
- */
 
-/* =========================== QuickPanel Keys for indicator deamon ========================*/
+/* ================================= BT =====================================*/
 /**
- * @defgroup vconf_key_QuickPanel QuickPanel Keys
+ * @defgroup vconf_key_BT BT Keys
  * @ingroup vconf_key
- * @addtogroup vconf_key_QuickPanel
+ * @addtogroup vconf_key_BT
  * @{
- * @brief Maintainer : hyunsil.park@samsung.com
+ * @brief Maintainer : chanyeol.park@samsung.com
  */
-#define VCONFKEY_QUICKPANEL_WIFI                                       "memory/quickpanel/wifi"
-#define VCONFKEY_QUICKPANEL_BLUETOOTH                  "memory/quickpanel/bluetooth"
-#define VCONFKEY_QUICKPANEL_GPS                                                "memory/quickpanel/gps"
-#define VCONFKEY_QUICKPANEL_SILENTMODE         "memory/quickpanel/silentmode"
-
-#define VCONFKEY_QUICKPANEL_MUSIC                                      "memory/quickpanel/music"
-#define VCONFKEY_QUICKPANEL_RADIO                                      "memory/quickpanel/radio"
-#define VCONFKEY_QUICKPANEL_VOICERECORDER      "memory/quickpanel/voicerecorder"
-#define VCONFKEY_QUICKPANEL_NOTI                                       "memory/quickpanel/noti"
-
-#define VCONFKEY_QUICKPANEL_REQ_NOTI_LIST      "memory/quickpanel/req_noti_list"
-
-#define VCONFKEY_QUICKPANEL_SET_STATE                                  "memory/quickpanel/set_state"
-#define VCONFKEY_QUICKPANEL_CUR_STATE                                  "memory/quickpanel/cur_state"
-
-#define VCONFKEY_QUICKPANEL_SHOW_MISSED_CALL                           "db/quickpanel/show_missed_call"
-#define VCONFKEY_QUICKPANEL_SHOW_SMS                                                           "db/quickpanel/show_sms"
-#define VCONFKEY_QUICKPANEL_SHOW_MMS                                                           "db/quickpanel/show_mms"
-#define VCONFKEY_QUICKPANEL_SHOW_MMS_NOTI                                              "db/quickpanel/show_mms_noti"
-#define VCONFKEY_QUICKPANEL_SHOW_VOICE_MAIL                                    "db/quickpanel/show_voice_mail"
-#define VCONFKEY_QUICKPANEL_SHOW_DELIVERY_REPORT               "db/quickpanel/show_delivery_report"
-#define VCONFKEY_QUICKPANEL_SHOW_READ_REPORT                           "db/quickpanel/show_read_report"
-#define VCONFKEY_QUICKPANEL_SHOW_IM                                                                    "db/quickpanel/show_im"
-#define VCONFKEY_QUICKPANEL_SHOW_EMAIL                                                 "db/quickpanel/show_email"
-#define VCONFKEY_QUICKPANEL_SHOW_SEVEN_EMAIL                           "db/quickpanel/show_seven_email"
-
-#define VCONFKEY_QUICKPANEL_COMMUNITIES_UPLOAD_STATE "memory/quickpanel/communities_upload_state"
-enum {
-       VCONFKEY_QUICKPANEL_UPLOAD_START = 0x00,
-       VCONFKEY_QUICKPANEL_UPLOAD_FAIL,
-       VCONFKEY_QUICKPANEL_UPLOAD_FINISH
-};
-
-#define VCONFKEY_QUICKPANEL_COMMUNITIES_DOWNLOAD_STATE "memory/quickpanel/communities_download_state"
-enum {
-       VCONFKEY_QUICKPANEL_DOWNLOAD_START = 0x00,
-       VCONFKEY_QUICKPANEL_DOWNLOAD_FAIL,
-       VCONFKEY_QUICKPANEL_DOWNLOAD_FINISH
-};
-
-enum {
-       VCONFKEY_QUICKPANEL_STATE_HIDE = 0x00,
-       VCONFKEY_QUICKPANEL_STATE_SHOW,
-       VCONFKEY_QUICKPANEL_STATE_MAX
-};
-
-enum {
-       VCONFKEY_QUICKPANEL_DEFAULT_OFF = 0x00,
-       VCONFKEY_QUICKPANEL_DEFAULT_ON,
-       VCONFKEY_QUICKPANEL_DEFAULT_MAX
-};
 
+/** \
+ * @brief Bluetooth status
+ *
+ * 0x0000 : Bluetooth OFF \n
+ * 0x0001 : Bluetooth ON \n
+ * 0x0002 : Discoverable mode \n
+ * 0x0004 : In transfering \n
+*/
+#define VCONFKEY_BT_STATUS                          "db/bluetooth/status"
 enum {
-       VCONFKEY_QUICKPANEL_MUSIC_STATE = 0x00,
-       VCONFKEY_QUICKPANEL_MUSIC_REW,
-       VCONFKEY_QUICKPANEL_MUSIC_PAUSE,
-       VCONFKEY_QUICKPANEL_MUSIC_PLAY,
-       VCONFKEY_QUICKPANEL_MUSIC_FF,
-       VCONFKEY_QUICKPANEL_MUSIC_IDLE,
-       VCONFKEY_QUICKPANEL_MUSIC_MAX
+       /** Bluetooth OFF */
+       VCONFKEY_BT_STATUS_OFF = 0x0000,
+       /** Bluetooth ON */
+       VCONFKEY_BT_STATUS_ON = 0x0001,
+       /** Discoverable mode */
+       VCONFKEY_BT_STATUS_BT_VISIBLE = 0x0002,
+       /** In transfering */
+       VCONFKEY_BT_STATUS_TRANSFER = 0x0004
 };
 
+/**
+ * @brief Bluetooth Connected status
+ *
+ * 0x0000 : Not connected \n
+ * 0x0004 : Headset connected \n
+ * 0x0010 : A2DP headset connected \n
+ * 0x0020 : SAP connected \n
+ * 0x0040 : PBAP connected \n
+*/
+#define VCONFKEY_BT_DEVICE                          "memory/bluetooth/device"
 enum {
-       VCONFKEY_QUICKPANEL_RADIO_STATE = 0x00,
-       VCONFKEY_QUICKPANEL_RADIO_REW,
-       VCONFKEY_QUICKPANEL_RADIO_PAUSE,
-       VCONFKEY_QUICKPANEL_RADIO_PLAY,
-       VCONFKEY_QUICKPANEL_RADIO_FF,
-       VCONFKEY_QUICKPANEL_RADIO_MAX
+       /** Not connected */
+       VCONFKEY_BT_DEVICE_NONE = 0x0000,
+       /** Headset connected */
+       VCONFKEY_BT_DEVICE_HEADSET_CONNECTED = 0x0004,
+       /** A2DP headset connected */
+       VCONFKEY_BT_DEVICE_A2DP_HEADSET_CONNECTED = 0x0010,
+       /** SAP connected */
+       VCONFKEY_BT_DEVICE_SAP_CONNECTED = 0x0020,
+       /** PBAP connected */
+       VCONFKEY_BT_DEVICE_PBAP_CONNECTED = 0x0040
 };
 
+/* Media sound path for BT */
 enum {
-       VCONFKEY_QUICKPANEL_VOICERECORDER_STATE = 0x00,
-       VCONFKEY_QUICKPANEL_VOICERECORDER_REC,
-       VCONFKEY_QUICKPANEL_VOICERECORDER_PAUSE,
-       VCONFKEY_QUICKPANEL_VOICERECORDER_SAVE,
-       VCONFKEY_QUICKPANEL_VOICERECORDER_MAX
+       /** Media Player Select Speaker */
+       VCONFKEY_BT_PLAYER_SELECT_SPEAKER = 0x00,
+       /** Media Player Select Bluetooth */
+       VCONFKEY_BT_PLAYER_SELECT_BLUETOOTH = 0x01,
+       /** BT application Select Speaker */
+       VCONFKEY_BT_APP_SELECT_SPEAKER = 0x02,
+       /** BT application Select Bluetooth */
+       VCONFKEY_BT_APP_SELECT_BLUETOOTH = 0x04
 };
 
-/* =========================== QuickPanel Keys for applications   ===========================*/
-/* Maintainer : hyunsil.park@samsung.com */
-#define VCONFKEY_QUICKPANEL_RADIO_STR                          "memory/quickpanel/radio_str"
-#define VCONFKEY_QUICKPANEL_RADIO_STATE                        "memory/quickpanel/radio_state"
-#define VCONFKEY_QUICKPANEL_MUSIC_STR                          "memory/quickpanel/music_str"
-#define VCONFKEY_QUICKPANEL_MUSIC_STATE                        "memory/quickpanel/music_state"
-#define VCONFKEY_QUICKPANEL_VISIBLE_STATE              "memory/quickpanel/visible_state"
-
-enum {
-       VCONFKEY_QUICKPANEL_VISIBLE_ON = 0x00,
-       VCONFKEY_QUICKPANEL_VISIBLE_OFF,
-       VCONFKEY_QUICKPANEL_VISIBLE_MAX
-};
 /**
  * @}
  */
 
-/* ============================ Debug Level ============================*/
+/* =========================== IDLE lock =======================================*/
 /**
- * @defgroup vconf_key_DebugLevel Debug Level Keys
+ * @defgroup vconf_key_idleLock idleLock Keys
  * @ingroup vconf_key
- * @addtogroup vconf_key_DebugLevel
+ * @addtogroup vconf_key_idleLock
  * @{
- * @brief Maintainer : yk.yun@samsung.com
- */
-#define VCONFKEY_DEBUG_LEVEL     "db/debug/level"
-enum {
-       VCONFKEY_DEBUG_LEVEL_LOW = 0,
-       VCONFKEY_DEBUG_LEVEL_MIDDLE,
-       VCONFKEY_DEBUG_LEVEL_HIGH
-};
-/**
- * @}
+ * @brief Maintainer : seungtaek.chung@samsung.com, wonil22.choi@samsung.com hyoyoung.chang@samsung.com angelkim@samsung.com
  */
 
-/* ============================ Testmode Keys ============================*/
 /**
- * @defgroup vconf_key_Testmode Testmode Keys
- * @ingroup vconf_key
- * @addtogroup vconf_key_Testmode
- * @{
- * @brief Maintainer : sena06.kim@samsung.com
+ * @brief lock screen status
+ *
+ * VCONFKEY_IDLE_UNLOCK : unlocked state \n
+ * VCONFKEY_IDLE_LOCK : locked state \n
  */
-#define VCONFKEY_TESTMODE_PREFIX    "db/testmode"
-enum {
-       VCONFKEY_TESTMODE_OFF = 0,
-       VCONFKEY_TESTMODE_ON
-};
-
-#define VCONFKEY_TESTMODE_AUTO_ANSWER          VCONFKEY_TESTMODE_PREFIX"/auto_answer"
-
-#define VCONFKEY_TESTMODE_VT_CAM_SETTING       VCONFKEY_TESTMODE_PREFIX"/vt_cam_setting"
+#define VCONFKEY_IDLE_LOCK_STATE                    "memory/idle_lock/state"
 enum {
-       VCONFKEY_TESTMODE_CAM_FRONT = 0,
-       VCONFKEY_TESTMODE_CAM_EXTERNAL,
-       VCONFKEY_TESTMODE_CAM_MAX
+       /** unlocked state */
+       VCONFKEY_IDLE_UNLOCK = 0x00,
+       /** locked state */
+       VCONFKEY_IDLE_LOCK
 };
 
 /**
- * @}
+ * @brief wallpaper of lock screen
+ *
+ * Value : Wallpaper file path in the lock screen  \n
  */
+#define VCONFKEY_IDLE_LOCK_BGSET                    "db/idle_lock/bgset"
 
-/* ============================ Admin Keys & Values ============================*/
 /**
- * @defgroup vconf_key_Launcher Launcher Keys
- * @ingroup vconf_key
- * @addtogroup vconf_key_Launcher
- * @{
- * @brief Maintainer : jinny.yoon@samsung.com, sena06.kim@samsung.com
+ * @}
  */
-#define VCONFKEY_ADMIN_THEME_SET       "file/launcher/theme-set"
-enum {
-       VCONFKEY_ADMIN_THEME_DEFAULT = 0,
-       VCONFKEY_ADMIN_THEME_BLACK,
-       VCONFKEY_ADMIN_THEME_MAX
-};
 
-#define VCONFKEY_ADMIN_PREFIX                          "db/admin"
 
-#define VCONFKEY_ADMIN_PRE_CONFIGURATION               VCONFKEY_ADMIN_PREFIX"/preconfiguration"
-#define VCONFKEY_ADMIN_INTNL_JAVA_AUTOTEST_URL         VCONFKEY_ADMIN_PREFIX"/autotest_url"
-#define VCONFKEY_ADMIN_UAGENT                          VCONFKEY_ADMIN_PREFIX"/uagent"
-#define VCONFKEY_ADMIN_UAPROF_URL_2G                   VCONFKEY_ADMIN_PREFIX"/uaprof_url_2g"
-#define VCONFKEY_ADMIN_UAPROF_URL_3G                   VCONFKEY_ADMIN_PREFIX"/uaprof_url_3g"
-#define VCONFKEY_ADMIN_GCF_TEST                                VCONFKEY_ADMIN_PREFIX"/gcf_test"
-enum {
-       VCONFKEY_ADMIN_GCF_OFF = 0,
-       VCONFKEY_ADMIN_GCF_ON
-};
-/**
- * @}
- */
 
-/* =========================== Menu Screen Keys  ================================*/
+/* =========================== pwlock =======================================*/
 /**
- * @defgroup vconf_key_menu_screen
+ * @defgroup vconf_key_pwlock Lock application for password verification: phone, pin, sum, network, etc.
  * @ingroup vconf_key
- * @addtogroup vconf_key_menu_screen
+ * @addtogroup vconf_key_pwlock
  * @{
- * @brief Maintainer : jinny.yoon@samsung.com
- */
-
-/* Maintainer : jinny.yoon@samsung.com */
-#define VCONFKEY_LAUNCH_EFFECT                 "db/menu_widget/launch_effect"
-#define VCONFKEY_BGSET                         "db/menu_widget/bgset"
-#define VCONFKEY_LANGSET                       "db/menu_widget/language"
-#define VCONFKEY_SIM_LOCK                      "file/menu_widget/simlock"
-#define VCONFKEY_PKGMGR_UPDATE                 "file/menu_widget/pkgmgr"
-#define VCONFKEY_VIEW_CHANGE                   "file/menu_widget/view"
-#define VCONFKEY_REGIONFORMAT                  "db/menu_widget/regionformat"
-#define VCONFKEY_REGIONFORMAT_TIME1224         "db/menu_widget/regionformat_time1224"
-enum {
-       VCONFKEY_TIME_FORMAT_12 = 1,
-       VCONFKEY_TIME_FORMAT_24
-};
-/**
- * @}
+ * @brief Maintainer : seungtaek.chung@samsung.com miju52.lee@samsung.com
+ *        Used module : pwlock
+ *
  */
 
-/* ============================ Idle screen (currently menu-screen) ============================*/
 /**
- * @defgroup vconf_key_idle_screen
- * @ingroup vconf_key
- * @addtogroup vconf_key_idle_screen
- * @{
- * @brief Maintainer : jinny.yoon@samsung.com
+ * @brief mobex engine status
+ *
+ * VCONFKEY_PWLOCK_BOOTING_UNLOCK : unlocked state in boointg time \n
+ * VCONFKEY_PWLOCK_BOOTING_LOCK : locked state in boointg time \n
+ * VCONFKEY_PWLOCK_RUNNING_UNLOCK : unlocked state in running time \n
+ * VCONFKEY_PWLOCK_RUNNING_LOCK : locked state in running time \n
  */
-#define VCONFKEY_IDLE_SCREEN_TOP "memory/idle_screen/top"
-enum {
-       VCONFKEY_IDLE_SCREEN_TOP_FALSE = 0x00,
-       VCONFKEY_IDLE_SCREEN_TOP_TRUE
-};
-/**
- * @}
- */
-
-/* ============================ Media Transfer Protocol Keys & Values ============================*/
-/**
- * @defgroup vconf_key_MTP MTP Keys
- * @ingroup vconf_key
- * @addtogroup vconf_key_MTP
- * @{
- * @brief Maintainer : daehyung.jo@samsung.com
- */
-#define VCONFKEY_MTP_STATUS    "memory/mtp/working"
-enum {
-       VCONFKEY_MTP_OFF = 0,
-       VCONFKEY_MTP_ON,
-       VCONFKEY_MTP_MAX
-};
-/**
- * @}
- */
-
-/* ========================== System Manager Notification ============================= */
-/**
- * @defgroup vconf_key_SystemManager System Manager Keys
- * @ingroup vconf_key
- * @addtogroup vconf_key_SystemManager
- * @{
- * @brief Maintainer : wonil22.choi@samsung.com, jinkun.jang@samsung.com
- */
-
-/**
- * <!-- reg-control keynum=19, value=int -->
- * @brief Remaining battery level. Value: 0(Min) ~ 5(Max)
- */
-#define VCONFKEY_SYSMAN_BATTERY_LEVEL                  "memory/Battery/Level"
-enum {
-       VCONFKEY_SYSMAN_BAT_LEVEL_MIN = 0,
-       VCONFKEY_SYSMAN_BAT_LEVEL0 = 0,
-       VCONFKEY_SYSMAN_BAT_LEVEL1,
-       VCONFKEY_SYSMAN_BAT_LEVEL2,
-       VCONFKEY_SYSMAN_BAT_LEVEL3,
-       VCONFKEY_SYSMAN_BAT_LEVEL4,
-       VCONFKEY_SYSMAN_BAT_LEVEL5,
-       VCONFKEY_SYSMAN_BAT_LEVEL6,
-       VCONFKEY_SYSMAN_BAT_LEVEL_MAX = 6
-};
-
-/**
- * <!-- reg-control keynum=20, value=int -->
- * @brief Charger status. Value: 1(charging) or 0(not)
- */
-#define VCONFKEY_SYSMAN_BATTERY_CHARGE_NOW                     "memory/Battery/Charger"
-
-/**
- * <!-- reg-control keynum=21, value=enum -->
- * @brief It indicates current battery low status
- */
-#define VCONFKEY_SYSMAN_BATTERY_STATUS_LOW             "memory/Battery/Status/Low"
-enum {
-       VCONFKEY_SYSMAN_BAT_POWER_OFF = 1,
-       VCONFKEY_SYSMAN_BAT_CRITICAL_LOW,
-       VCONFKEY_SYSMAN_BAT_WARNING_LOW,
-       VCONFKEY_SYSMAN_BAT_NORMAL
-};
-
-#define VCONFKEY_SYSMAN_BATTERY_CAPACITY        "memory/Battery/Capacity"
-
-/**
- * <!-- reg-control keynum=22, value=enum -->
- * @brief USB connection status
- */
-#define VCONFKEY_SYSMAN_USB_STATUS                             "memory/Connectivity/USB"
-enum {
-       VCONFKEY_SYSMAN_USB_DISCONNECTED = 0,
-       VCONFKEY_SYSMAN_USB_CONNECTED,
-       VCONFKEY_SYSMAN_USB_AVAILABLE
-};
-
-#define VCONFKEY_SYSMAN_USB_CONN_MODE                  "memory/Connectivity/USB_mode"
-enum {
-       VCONFKEY_SYSMAN_USB_MODE_UMS_NONE = 0,
-       VCONFKEY_SYSMAN_USB_MODE_UMS_PHONE,
-       VCONFKEY_SYSMAN_USB_MODE_UMS_MMC
-};
-
-#define VCONFKEY_SYSMAN_USB_HOST_STATUS                        "memory/Device/usbhost/status"
-enum {
-         VCONFKEY_SYSMEN_USB_HOST_DISCONNECTED = 0,
-         VCONFKEY_SYSMEN_USB_HOST_CONNECTED
-};
-
-/**
- * <!-- reg-control keynum=23, value=enum -->
- * @brief It indicates MMC card
- */
-#define VCONFKEY_SYSMAN_MMC_STATUS                             "memory/Device/Mmc"
-enum {
-       VCONFKEY_SYSMAN_MMC_REMOVED = 0,
-       VCONFKEY_SYSMAN_MMC_MOUNTED,
-       VCONFKEY_SYSMAN_MMC_INSERTED_NOT_MOUNTED
-};
-
-#define VCONFKEY_SYSMAN_LCD_TIMEOUT_NORMAL             "db/MainLCD/Backlight/Normal"
-#define VCONFKEY_SYSMAN_LCD_TIMEOUT_DIM                        "db/MainLCD/Backlight/Dim"
-#define VCONFKEY_SYSMAN_LCD_BRIGHTNESS                 "db/Device/LCD/Brightness"
-
-/**
- * <!-- reg-control keynum=24, value=enum -->
- * @brief Earjack connection status
- */
-#define VCONFKEY_SYSMAN_EARJACK                                "memory/Device/EarJack"
-enum {
-       VCONFKEY_SYSMAN_EARJACK_REMOVED = 0,
-       VCONFKEY_SYSMAN_EARJACK_3WIRE = 0x1,
-       VCONFKEY_SYSMAN_EARJACK_4WIRE = 0x3,
-       VCONFKEY_SYSMAN_EARJACK_TVOUT = 0x10
-};
-
-#define VCONFKEY_SYSMAN_EARJACKKEY                             "memory/Device/EarJackKey"
-
-/**
- * <!-- reg-control keynum=25, value=enum -->
- * @brief Current low-memory status
- */
-#define VCONFKEY_SYSMAN_LOW_MEMORY                             "memory/sysman/low_memory"
-enum {
-       VCONFKEY_SYSMAN_LOW_MEMORY_NORMAL = 0x01,
-       VCONFKEY_SYSMAN_LOW_MEMORY_SOFT_WARNING = 0x02,
-       VCONFKEY_SYSMAN_LOW_MEMORY_HARD_WARNING = 0x04
-};
-
-#define VCONFKEY_SYSMAN_CRADLE_STATUS                  "memory/Device/Cradle/Status"
-
-#define VCONFKEY_SYSMAN_SLIDING_KEYBOARD                "memory/Device/Sliding_keyboard"
-enum {
-        VCONFKEY_SYSMAN_SLIDING_KEYBOARD_NOT_SUPPORTED = -1,
-        VCONFKEY_SYSMAN_SLIDING_KEYBOARD_NOT_AVAILABE = 0,
-        VCONFKEY_SYSMAN_SLIDING_KEYBOAED_AVAILABLE
-};
-
-/* requested by dg0402.jang for USB-Host USB Storage Mount. 2011-07-21 */
-#define VCONFKEY_SYSMAN_ADDED_USB_STORAGE              "memory/Device/usbhost/added_storage"
-#define VCONFKEY_SYSMAN_REMOVED_USB_STORAGE            "memory/Device/usbhost/removed_storage"
-
-/**
- * @}
- */
-
-/* ========================== Power Manager Notification ============================= */
-/**
- * @defgroup vconf_key_PowerManager Power Manager Keys
- * @ingroup vconf_key
- * @addtogroup vconf_key_PowerManager
- * @{
- * @brief Maintainer : wonil22.choi@samsung.com
- */
-
-/**
- * <!-- reg-control keynum=26, value=enum -->
- * @brief It saves Phone's power managing state
- */
-#define VCONFKEY_PM_STATE                              "memory/pwrmgr/state"
-enum {
-       VCONFKEY_PM_STATE_NORMAL = 1,
-       VCONFKEY_PM_STATE_LCDDIM,
-       VCONFKEY_PM_STATE_LCDOFF,
-       VCONFKEY_PM_STATE_SLEEP
-};
-
-/**
- * @}
- */
-
-/* ========================== For Setting UI============================= */
-/**
- * @defgroup vconf_key_SettingUI Setting application Keys
- * @ingroup vconf_key
- * @addtogroup vconf_key_SettingUI
- * @{
- * @brief Maintainer : jy0214.kim@samsung.com
- */
-#define VCONFKEY_SEL_USB_MODE  "db/setting/sel_usb"
-
-#define VCONFKEY_SETAPPL_PREFIX  "db/setting"
-#define VCONFKEY_SETAPPL_MEM_PREFIX  "memory/setting"
-
-/* main setting*/
-#define VCONFKEY_SETAPPL_FLIGHT_MODE_BOOL VCONFKEY_SETAPPL_PREFIX"/flight_mode"
-
-/* rotate lock */
-#define VCONFKEY_SETAPPL_ROTATE_LOCK_BOOL VCONFKEY_SETAPPL_PREFIX"/rotate_lock"
-
-/* entry widget */
-#define VCONFKEY_SETAPPL_AUTOCAPITAL_ALLOW_BOOL VCONFKEY_SETAPPL_PREFIX"/autocapital_allow"
-#define VCONFKEY_SETAPPL_AUTOPERIOD_ALLOW_BOOL VCONFKEY_SETAPPL_PREFIX"/autoperiod_allow"
-
-/*------------------------------------------> VCONF keys from here will be removed on 2nd week of Mar.*/
-/* sound profile */
-#define VCONFKEY_SETAPPL_CUR_PROFILE_INT               VCONFKEY_SETAPPL_PREFIX"/cur_profile"
-#define VCONFKEY_SETAPPL_PREV_PROFILE_INT              VCONFKEY_SETAPPL_PREFIX"/prev_profile"
-
-/*<------------------------------------------ VCONF keys to here will be removed on 2nd week of Mar.*/
-
-/* setting > sound requested by hyejin0906.kim (20110608) */
-#define VCONFKEY_SETAPPL_SOUND_LOCK_BOOL                VCONFKEY_SETAPPL_PREFIX"/sound/sound_lock"
-#define VCONFKEY_SETAPPL_KEYPAD_STATUS_BOOL             VCONFKEY_SETAPPL_PREFIX"/sound/keypad_on"
-#define VCONFKEY_SETAPPL_SOUND_EFFECT_BOOL              VCONFKEY_SETAPPL_PREFIX"/sound/sound_effect_on"
-
-/* setting > sound requested by hyejin0906.kim (20010629) */
-#define VCONFKEY_SETAPPL_MEDIA_SOUND_VOLUME_INT         VCONFKEY_SETAPPL_PREFIX"/sound/media/sound_volume"
-
-/* Widget Theme        */
-#define VCONFKEY_SETAPPL_WIDGET_THEME_STR               VCONFKEY_SETAPPL_PREFIX"/widget_theme"
-
-/* Brightness setting requested by mj2004.park */
-#define VCONFKEY_SETAPPL_LCD_BRIGHTNESS                        VCONFKEY_SETAPPL_PREFIX"/Brightness"
-
-/* device name key requested by mj2004.park */
-#define VCONFKEY_SETAPPL_DEVICE_NAME_STR               VCONFKEY_SETAPPL_PREFIX"/device_name"
-
-/*------------------------------------------> VCONF keys from here will be removed on 2nd week of Mar.*/
-enum {
-       SETTING_PROFILE_NORMAL = 0,
-       SETTING_PROFILE_SILENT,
-       SETTING_PROFILE_DRIVING,
-       SETTING_PROFILE_MEETING,
-       SETTING_PROFILE_OUTDOOR,
-       SETTING_PROFILE_FLIGHT,
-       SETTING_PROFILE_MAX
-};
-
-/* normal profile */
-#define VCONFKEY_SETAPPL_PROFILE_NORMAL_CALL_ALERT_TYPE_INT VCONFKEY_SETAPPL_PREFIX"/normal/call_alert_type"
-#define VCONFKEY_SETAPPL_PROFILE_NORMAL_CALL_TONE_PATH_STR  VCONFKEY_SETAPPL_PREFIX"/normal/call_tone_path"
-#define VCONFKEY_SETAPPL_PROFILE_NORMAL_CALL_ALERT_VIB_INT  VCONFKEY_SETAPPL_PREFIX"/normal/call_alert_vib"
-#define VCONFKEY_SETAPPL_PROFILE_NORMAL_CALL_VOLUME_INT     VCONFKEY_SETAPPL_PREFIX"/normal/call_volume"
-#define VCONFKEY_SETAPPL_PROFILE_NORMAL_MSG_ALERT_TYPE_INT  VCONFKEY_SETAPPL_PREFIX"/normal/msg_alert_type"
-#define VCONFKEY_SETAPPL_PROFILE_NORMAL_MSG_TONE_PATH_STR   VCONFKEY_SETAPPL_PREFIX"/normal/msg_tone_path"
-#define VCONFKEY_SETAPPL_PROFILE_NORMAL_MSG_ALERT_VIB_INT   VCONFKEY_SETAPPL_PREFIX"/normal/msg_alert_vib"
-#define VCONFKEY_SETAPPL_PROFILE_NORMAL_MSG_VOLUME_INT      VCONFKEY_SETAPPL_PREFIX"/normal/msg_volume"
-#define VCONFKEY_SETAPPL_PROFILE_NORMAL_MSG_REPETITION_INT  VCONFKEY_SETAPPL_PREFIX"/normal/msg_repetition"
-#define VCONFKEY_SETAPPL_PROFILE_NORMAL_SYS_TOUCH_SOUND_INT VCONFKEY_SETAPPL_PREFIX"/normal/sys_touch_sound"
-#define VCONFKEY_SETAPPL_PROFILE_NORMAL_SYS_VOLUME_INT      VCONFKEY_SETAPPL_PREFIX"/normal/sys_volume"
-
-/* silent profile */
-#define VCONFKEY_SETAPPL_PROFILE_SILENT_CALL_ALERT_TYPE_INT VCONFKEY_SETAPPL_PREFIX"/silent/call_alert_type"
-#define VCONFKEY_SETAPPL_PROFILE_SILENT_CALL_TONE_PATH_STR  VCONFKEY_SETAPPL_PREFIX"/silent/call_tone_path"
-#define VCONFKEY_SETAPPL_PROFILE_SILENT_CALL_ALERT_VIB_INT  VCONFKEY_SETAPPL_PREFIX"/silent/call_alert_vib"
-#define VCONFKEY_SETAPPL_PROFILE_SILENT_CALL_VOLUME_INT     VCONFKEY_SETAPPL_PREFIX"/silent/call_volume"
-#define VCONFKEY_SETAPPL_PROFILE_SILENT_MSG_ALERT_TYPE_INT  VCONFKEY_SETAPPL_PREFIX"/silent/msg_alert_type"
-#define VCONFKEY_SETAPPL_PROFILE_SILENT_MSG_TONE_PATH_STR   VCONFKEY_SETAPPL_PREFIX"/silent/msg_tone_path"
-#define VCONFKEY_SETAPPL_PROFILE_SILENT_MSG_ALERT_VIB_INT   VCONFKEY_SETAPPL_PREFIX"/silent/msg_alert_vib"
-#define VCONFKEY_SETAPPL_PROFILE_SILENT_MSG_VOLUME_INT      VCONFKEY_SETAPPL_PREFIX"/silent/msg_volume"
-#define VCONFKEY_SETAPPL_PROFILE_SILENT_MSG_REPETITION_INT  VCONFKEY_SETAPPL_PREFIX"/silent/msg_repetition"
-#define VCONFKEY_SETAPPL_PROFILE_SILENT_SYS_TOUCH_SOUND_INT VCONFKEY_SETAPPL_PREFIX"/silent/sys_touch_sound"
-#define VCONFKEY_SETAPPL_PROFILE_SILENT_SYS_VOLUME_INT      VCONFKEY_SETAPPL_PREFIX"/silent/sys_volume"
-
-/*Driving Profile */
-#define VCONFKEY_SETAPPL_PROFILE_DRIVING_CALL_ALERT_TYPE_INT VCONFKEY_SETAPPL_PREFIX"/driving/call_alert_type"
-#define VCONFKEY_SETAPPL_PROFILE_DRIVING_CALL_TONE_PATH_STR  VCONFKEY_SETAPPL_PREFIX"/driving/call_tone_path"
-#define VCONFKEY_SETAPPL_PROFILE_DRIVING_CALL_ALERT_VIB_INT  VCONFKEY_SETAPPL_PREFIX"/driving/call_alert_vib"
-#define VCONFKEY_SETAPPL_PROFILE_DRIVING_CALL_VOLUME_INT     VCONFKEY_SETAPPL_PREFIX"/driving/call_volume"
-#define VCONFKEY_SETAPPL_PROFILE_DRIVING_MSG_ALERT_TYPE_INT  VCONFKEY_SETAPPL_PREFIX"/driving/msg_alert_type"
-#define VCONFKEY_SETAPPL_PROFILE_DRIVING_MSG_TONE_PATH_STR   VCONFKEY_SETAPPL_PREFIX"/driving/msg_tone_path"
-#define VCONFKEY_SETAPPL_PROFILE_DRIVING_MSG_ALERT_VIB_INT   VCONFKEY_SETAPPL_PREFIX"/driving/msg_alert_vib"
-#define VCONFKEY_SETAPPL_PROFILE_DRIVING_MSG_VOLUME_INT      VCONFKEY_SETAPPL_PREFIX"/driving/msg_volume"
-#define VCONFKEY_SETAPPL_PROFILE_DRIVING_MSG_REPETITION_INT  VCONFKEY_SETAPPL_PREFIX"/driving/msg_repetition"
-#define VCONFKEY_SETAPPL_PROFILE_DRIVING_SYS_TOUCH_SOUND_INT VCONFKEY_SETAPPL_PREFIX"/driving/sys_touch_sound"
-#define VCONFKEY_SETAPPL_PROFILE_DRIVING_SYS_VOLUME_INT      VCONFKEY_SETAPPL_PREFIX"/driving/sys_volume"
-
-/* Meeting Profile */
-#define VCONFKEY_SETAPPL_PROFILE_MEETING_CALL_ALERT_TYPE_INT VCONFKEY_SETAPPL_PREFIX"/meeting/call_alert_type"
-#define VCONFKEY_SETAPPL_PROFILE_MEETING_CALL_TONE_PATH_STR  VCONFKEY_SETAPPL_PREFIX"/meeting/call_tone_path"
-#define VCONFKEY_SETAPPL_PROFILE_MEETING_CALL_ALERT_VIB_INT  VCONFKEY_SETAPPL_PREFIX"/meeting/call_alert_vib"
-#define VCONFKEY_SETAPPL_PROFILE_MEETING_CALL_VOLUME_INT     VCONFKEY_SETAPPL_PREFIX"/meeting/call_volume"
-#define VCONFKEY_SETAPPL_PROFILE_MEETING_MSG_ALERT_TYPE_INT  VCONFKEY_SETAPPL_PREFIX"/meeting/msg_alert_type"
-#define VCONFKEY_SETAPPL_PROFILE_MEETING_MSG_TONE_PATH_STR   VCONFKEY_SETAPPL_PREFIX"/meeting/msg_tone_path"
-#define VCONFKEY_SETAPPL_PROFILE_MEETING_MSG_ALERT_VIB_INT   VCONFKEY_SETAPPL_PREFIX"/meeting/msg_alert_vib"
-#define VCONFKEY_SETAPPL_PROFILE_MEETING_MSG_VOLUME_INT      VCONFKEY_SETAPPL_PREFIX"/meeting/msg_volume"
-#define VCONFKEY_SETAPPL_PROFILE_MEETING_MSG_REPETITION_INT  VCONFKEY_SETAPPL_PREFIX"/meeting/msg_repetition"
-#define VCONFKEY_SETAPPL_PROFILE_MEETING_SYS_TOUCH_SOUND_INT VCONFKEY_SETAPPL_PREFIX"/meeting/sys_touch_sound"
-#define VCONFKEY_SETAPPL_PROFILE_MEETING_SYS_VOLUME_INT      VCONFKEY_SETAPPL_PREFIX"/meeting/sys_volume"
-
-/* Outdoor Profile */
-#define VCONFKEY_SETAPPL_PROFILE_OUTDOOR_CALL_ALERT_TYPE_INT VCONFKEY_SETAPPL_PREFIX"/outdoor/call_alert_type"
-#define VCONFKEY_SETAPPL_PROFILE_OUTDOOR_CALL_TONE_PATH_STR  VCONFKEY_SETAPPL_PREFIX"/outdoor/call_tone_path"
-#define VCONFKEY_SETAPPL_PROFILE_OUTDOOR_CALL_ALERT_VIB_INT  VCONFKEY_SETAPPL_PREFIX"/outdoor/call_alert_vib"
-#define VCONFKEY_SETAPPL_PROFILE_OUTDOOR_CALL_VOLUME_INT     VCONFKEY_SETAPPL_PREFIX"/outdoor/call_volume"
-#define VCONFKEY_SETAPPL_PROFILE_OUTDOOR_MSG_ALERT_TYPE_INT  VCONFKEY_SETAPPL_PREFIX"/outdoor/msg_alert_type"
-#define VCONFKEY_SETAPPL_PROFILE_OUTDOOR_MSG_TONE_PATH_STR   VCONFKEY_SETAPPL_PREFIX"/outdoor/msg_tone_path"
-#define VCONFKEY_SETAPPL_PROFILE_OUTDOOR_MSG_ALERT_VIB_INT   VCONFKEY_SETAPPL_PREFIX"/outdoor/msg_alert_vib"
-#define VCONFKEY_SETAPPL_PROFILE_OUTDOOR_MSG_VOLUME_INT      VCONFKEY_SETAPPL_PREFIX"/outdoor/msg_volume"
-#define VCONFKEY_SETAPPL_PROFILE_OUTDOOR_MSG_REPETITION_INT  VCONFKEY_SETAPPL_PREFIX"/outdoor/msg_repetition"
-#define VCONFKEY_SETAPPL_PROFILE_OUTDOOR_SYS_TOUCH_SOUND_INT VCONFKEY_SETAPPL_PREFIX"/outdoor/sys_touch_sound"
-#define VCONFKEY_SETAPPL_PROFILE_OUTDOOR_SYS_VOLUME_INT      VCONFKEY_SETAPPL_PREFIX"/outdoor/sys_volume"
-
-/* Current Profile */
-#define VCONFKEY_SETAPPL_PROFILE_CURRENT_CALL_ALERT_TYPE_INT VCONFKEY_SETAPPL_PREFIX"/current/call_alert_type"
-#define VCONFKEY_SETAPPL_PROFILE_CURRENT_CALL_TONE_PATH_STR  VCONFKEY_SETAPPL_PREFIX"/current/call_tone_path"
-#define VCONFKEY_SETAPPL_PROFILE_CURRENT_CALL_ALERT_VIB_INT  VCONFKEY_SETAPPL_PREFIX"/current/call_alert_vib"
-#define VCONFKEY_SETAPPL_PROFILE_CURRENT_CALL_VOLUME_INT     VCONFKEY_SETAPPL_PREFIX"/current/call_volume"
-#define VCONFKEY_SETAPPL_PROFILE_CURRENT_MSG_ALERT_TYPE_INT  VCONFKEY_SETAPPL_PREFIX"/current/msg_alert_type"
-#define VCONFKEY_SETAPPL_PROFILE_CURRENT_MSG_TONE_PATH_STR   VCONFKEY_SETAPPL_PREFIX"/current/msg_tone_path"
-#define VCONFKEY_SETAPPL_PROFILE_CURRENT_MSG_ALERT_VIB_INT   VCONFKEY_SETAPPL_PREFIX"/current/msg_alert_vib"
-#define VCONFKEY_SETAPPL_PROFILE_CURRENT_MSG_VOLUME_INT      VCONFKEY_SETAPPL_PREFIX"/current/msg_volume"
-#define VCONFKEY_SETAPPL_PROFILE_CURRENT_MSG_REPETITION_INT  VCONFKEY_SETAPPL_PREFIX"/current/msg_repetition"
-#define VCONFKEY_SETAPPL_PROFILE_CURRENT_SYS_TOUCH_SOUND_INT VCONFKEY_SETAPPL_PREFIX"/current/sys_touch_sound"
-#define VCONFKEY_SETAPPL_PROFILE_CURRENT_SYS_VOLUME_INT      VCONFKEY_SETAPPL_PREFIX"/current/sys_volume"
-/*<------------------------------------------ VCONF keys to here will be removed on 2nd week of Mar.*/
-
-/*------------------------------------------> New VCONF keys for sound setting.*/
-enum {
-       SETTING_SOUND_REP_ONCE = 0,
-       SETTING_SOUND_REP_EVERY_2_MIN,
-       SETTING_SOUND_REP_EVERY_5_MIN,
-       SETTING_SOUND_REP_EVERY_10_MIN
-};
-
-#define VCONFKEY_SETAPPL_DEFAULT_CALL_RINGTONE_PATH_STR                        VCONFKEY_SETAPPL_PREFIX"/sound/call/default_ringtone_path"
-#define VCONFKEY_SETAPPL_DEFAULT_NOTI_MSG_RINGTONE_PATH_STR            VCONFKEY_SETAPPL_PREFIX"/sound/noti/default_msg_ringtone_path"
-#define VCONFKEY_SETAPPL_DEFAULT_NOTI_EMAIL_RINGTONE_PATH_STR          VCONFKEY_SETAPPL_PREFIX"/sound/noti/default_email_ringtone_path"
-#define VCONFKEY_SETAPPL_DEFAULT_NOTI_CALENDAR_RINGTONE_PATH_STR       VCONFKEY_SETAPPL_PREFIX"/sound/noti/default_calendar_ringtone_path"
-
-#define VCONFKEY_SETAPPL_SOUND_STATUS_BOOL                             VCONFKEY_SETAPPL_PREFIX"/sound/sound_on"
-#define VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL                         VCONFKEY_SETAPPL_PREFIX"/sound/vibration_on"
-#define VCONFKEY_SETAPPL_USE_CALL_VOLUME_FOR_NOTI_BOOL                 VCONFKEY_SETAPPL_PREFIX"/sound/use_call_volume_for_noti_on"
-#define VCONFKEY_SETAPPL_CALL_RINGTONE_SOUND_VOLUME_INT                        VCONFKEY_SETAPPL_PREFIX"/sound/call/ringtone_sound_volume"
-#define VCONFKEY_SETAPPL_CALL_RINGTONE_PATH_STR                                VCONFKEY_SETAPPL_PREFIX"/sound/call/ringtone_path"
-#define VCONFKEY_SETAPPL_CALL_VIBRATION_PATTERN_INT                    VCONFKEY_SETAPPL_PREFIX"/sound/call/vibration_type"
-#define VCONFKEY_SETAPPL_NOTI_SOUND_VOLUME_INT                         VCONFKEY_SETAPPL_PREFIX"/sound/noti/sound_volume"
-#define VCONFKEY_SETAPPL_NOTI_MSG_ALERT_REP_TYPE_INT                   VCONFKEY_SETAPPL_PREFIX"/sound/noti/msg_alert_rep_type"
-#define VCONFKEY_SETAPPL_NOTI_MSG_RINGTONE_PATH_STR                    VCONFKEY_SETAPPL_PREFIX"/sound/noti/msg_ringtone_path"
-#define VCONFKEY_SETAPPL_NOTI_EMAIL_ALERT_REP_TYPE_INT                 VCONFKEY_SETAPPL_PREFIX"/sound/noti/email_alert_rep_type"
-#define VCONFKEY_SETAPPL_NOTI_EMAIL_RINGTONE_PATH_STR                  VCONFKEY_SETAPPL_PREFIX"/sound/noti/email_ringtone_path"
-#define VCONFKEY_SETAPPL_NOTI_CALENDAR_ALERT_REP_TYPE_INT              VCONFKEY_SETAPPL_PREFIX"/sound/noti/calendar_alert_rep_type"
-#define VCONFKEY_SETAPPL_NOTI_CALENDAR_RINGTONE_PATH_STR               VCONFKEY_SETAPPL_PREFIX"/sound/noti/calendar_ringtone_path"
-#define VCONFKEY_SETAPPL_NOTI_VIBRATION_LEVEL_INT                      VCONFKEY_SETAPPL_PREFIX"/sound/noti/vibration_level"
-#define VCONFKEY_SETAPPL_TOUCH_FEEDBACK_SOUND_VOLUME_INT               VCONFKEY_SETAPPL_PREFIX"/sound/touch_feedback/sound_volume"
-#define VCONFKEY_SETAPPL_TOUCH_FEEDBACK_VIBRATION_LEVEL_INT            VCONFKEY_SETAPPL_PREFIX"/sound/touch_feedback/vibration_level"
-/*<------------------------------------------ New VCONF keys for sound setting.*/
-
-/* USB-SETTING - ty317.kim */
-#define VCONFKEY_SETAPPL_USB_IN_MODE_CHANGE         VCONFKEY_SETAPPL_MEM_PREFIX"/usb_in_mode_change"
-#define VCONFKEY_SETAPPL_SELECT_POPUP_BTN_INT       VCONFKEY_SETAPPL_PREFIX"/select_popup_btn"
-
-/* connectivity */
-#define VCONFKEY_SETAPPL_USB_MODE_INT               VCONFKEY_SETAPPL_MEM_PREFIX"/usb_mode"
-#define VCONFKEY_SETAPPL_USB_SEL_MODE_INT           VCONFKEY_SETAPPL_MEM_PREFIX"/usb_sel_mode"
-#define VCONFKEY_SETAPPL_USB_DEBUG_MODE             VCONFKEY_SETAPPL_PREFIX"/usb_debugmode"
-#define VCONFKEY_SETAPPL_SELECT_NETWORK_INT         VCONFKEY_SETAPPL_PREFIX"/select_network"
-#define VCONFKEY_SETAPPL_NETWORK_MODE_INT           VCONFKEY_SETAPPL_PREFIX"/network_mode"
-#define VCONFKEY_SETAPPL_ASK_ON_CONNECTION_BOOL     VCONFKEY_SETAPPL_PREFIX"/ask_on_con"
-enum {
-       SETTING_USB_NONE_MODE = -1,
-       SETTING_USB_DEFAULT_MODE = 0,
-       SETTING_USB_MASS_STORAGE,
-       SETTING_USB_UNUSED_MODE,
-       SETTING_USB_DEBUG_MODE,
-};                             /* connectivity - usb connection */
-
-/* security */
-#define VCONFKEY_SETAPPL_PHONE_PASSWD_STR                      VCONFKEY_SETAPPL_PREFIX"/phone_passwd"
-#define VCONFKEY_SETAPPL_PRIVACY_PASSWD_STR                    VCONFKEY_SETAPPL_PREFIX"/privacy_passwd"
-#define VCONFKEY_SETAPPL_PIN1_CODE_STR                         VCONFKEY_SETAPPL_PREFIX"/pin1_code"
-#define VCONFKEY_SETAPPL_PIN2_CODE_STR                         VCONFKEY_SETAPPL_PREFIX"/pin2_code"
-#define VCONFKEY_SETAPPL_SIM_ICCID_STR                         VCONFKEY_SETAPPL_PREFIX"/sim_iccid"
-#define VCONFKEY_SETAPPL_STATE_POWER_ON_LOCK_BOOL              VCONFKEY_SETAPPL_PREFIX"/power_on_lock"
-#define VCONFKEY_SETAPPL_STATE_PRIVACY_LOCK_BOOL               VCONFKEY_SETAPPL_PREFIX"/privacy_lock_key"
-#define VCONFKEY_SETAPPL_STATE_SIM_LOCK_BOOL                   VCONFKEY_SETAPPL_PREFIX"/sim_lock"
-#define VCONFKEY_SETAPPL_STATE_PIN_LOCK_BOOL                   VCONFKEY_SETAPPL_PREFIX"/pin_lock"
-#define VCONFKEY_SETAPPL_STATE_PRIVACY_LOCK_SELECT_ALL_BOOL    VCONFKEY_SETAPPL_PREFIX"/privacy_lock/select_all"
-#define VCONFKEY_SETAPPL_STATE_PRIVACY_LOCK_MESSAGE_BOOL       VCONFKEY_SETAPPL_PREFIX"/privacy_lock/message"
-#define VCONFKEY_SETAPPL_STATE_PRIVACY_LOCK_MY_FILES_BOOL      VCONFKEY_SETAPPL_PREFIX"/privacy_lock/my_files"
-#define VCONFKEY_SETAPPL_STATE_PRIVACY_LOCK_CALL_LOG_BOOL      VCONFKEY_SETAPPL_PREFIX"/privacy_lock/call_log"
-#define VCONFKEY_SETAPPL_STATE_PRIVACY_LOCK_CONTACT_BOOL       VCONFKEY_SETAPPL_PREFIX"/privacy_lock/contact"
-#define VCONFKEY_SETAPPL_STATE_PRIVACY_LOCK_CALENDAR_BOOL      VCONFKEY_SETAPPL_PREFIX"/privacy_lock/calendar"
-#define VCONFKEY_SETAPPL_STATE_PRIVACY_LOCK_MEMO_BOOL          VCONFKEY_SETAPPL_PREFIX"/privacy_lock/memo"
-#define VCONFKEY_SETAPPL_STATE_PRIVACY_LOCK_EMAIL_BOOL         VCONFKEY_SETAPPL_PREFIX"/privacy_lock/email"
-#define VCONFKEY_SETAPPL_STATE_FIXED_DIALING_MODE_BOOL         VCONFKEY_SETAPPL_PREFIX"/fixed_dialing_mode"
-/* For security simple password menu by hyejin0906.kim */
-#define VCONFKEY_SETAPPL_STATE_SIMPLE_PASSWORD_BOOL            VCONFKEY_SETAPPL_PREFIX"/simple_password"
-
-/* Find my mobile by byonguk.lee */
-#define VCONFKEY_SETAPPL_FIND_MY_MOBILE_SIM_CHANGE_ALERT_BOOL   VCONFKEY_SETAPPL_PREFIX"/fmm/sim_change_alert"
-#define VCONFKEY_SETAPPL_FIND_MY_MOBILE_RECIPIENTS_STR          VCONFKEY_SETAPPL_PREFIX"/fmm/recipients"
-#define VCONFKEY_SETAPPL_FIND_MY_MOBILE_SENDER_STR              VCONFKEY_SETAPPL_PREFIX"/fmm/sender"
-#define VCONFKEY_SETAPPL_FIND_MY_MOBILE_MESSAGE_STR             VCONFKEY_SETAPPL_PREFIX"/fmm/alert_message"
-#define VCONFKEY_SETAPPL_FIND_MY_MOBILE_REMOTE_CONTROL_BOOL     VCONFKEY_SETAPPL_PREFIX"/fmm/remote_control"
-#define VCONFKEY_SETAPPL_FIND_MY_MOBILE_LOCATION_CONSENT_BOOL   VCONFKEY_SETAPPL_PREFIX"/fmm/location_consent"
-
-/* mobile tracker */
-#define VCONFKEY_SETAPPL_STATE_MOBILE_TRACKER_BOOL              VCONFKEY_SETAPPL_FIND_MY_MOBILE_SIM_CHANGE_ALERT_BOOL
-#define VCONFKEY_SETAPPL_MOBILE_TRACKER_RECIPIENTS_STR          VCONFKEY_SETAPPL_FIND_MY_MOBILE_RECIPIENTS_STR
-#define VCONFKEY_SETAPPL_MOBILE_TRACKER_SENDER_PHONE_STR        VCONFKEY_SETAPPL_FIND_MY_MOBILE_SENDER_STR
-#define VCONFKEY_SETAPPL_MOBILE_TRACKER_MSG_STR                 VCONFKEY_SETAPPL_FIND_MY_MOBILE_MESSAGE_STR
-
-#define VCONFKEY_SETAPPL_MOBILE_TRACKER_PHONE_LOCK_BOOL                VCONFKEY_SETAPPL_PREFIX"/mobile_tracker_phone_lock"
-#define VCONFKEY_SETAPPL_MOBILE_TRACKER_HIDE_USER_DATA_BOOL    VCONFKEY_SETAPPL_PREFIX"/mobile_tracker_hide_user_data"
-
-/* display and light */
-#define VCONFKEY_SETAPPL_FONT_SIZE_INT                         VCONFKEY_SETAPPL_PREFIX"/font_size"
-#define VCONFKEY_SETAPPL_FONT_TYPE_INT                         VCONFKEY_SETAPPL_PREFIX"/font_type"
-#define VCONFKEY_SETAPPL_BRIGHTNESS_INT                                VCONFKEY_SETAPPL_PREFIX"/brightness"
-#define VCONFKEY_SETAPPL_BRIGHTNESS_AUTOMATIC_BOOL             VCONFKEY_SETAPPL_PREFIX"/brightness_automatic"
-#define VCONFKEY_SETAPPL_BACKLIGHT_TIME_INT                    VCONFKEY_SETAPPL_PREFIX"/backlight_time"
-
-/* time and date */
-#define VCONFKEY_SETAPPL_STATE_AUTOMATIC_TIME_UPDATE_BOOL      VCONFKEY_SETAPPL_PREFIX"/automatic_time_update"
-#define VCONFKEY_SETAPPL_STATE_DST_BOOL                                VCONFKEY_SETAPPL_PREFIX"/dst"
-#define VCONFKEY_SETAPPL_TIME_FORMAT_INT                       VCONFKEY_SETAPPL_PREFIX"/time_format"
-#define VCONFKEY_SETAPPL_DATE_FORMAT_INT                       VCONFKEY_SETAPPL_PREFIX"/date_format"
-#define VCONFKEY_SETAPPL_TIMEZONE_ID                           VCONFKEY_SETAPPL_PREFIX"/timezone_id"
-#define VCONFKEY_SETAPPL_TIMEZONE_INT                          VCONFKEY_SETAPPL_PREFIX"/timezone"
-#define VCONFKEY_SETAPPL_CITYNAME_INDEX_INT                    VCONFKEY_SETAPPL_PREFIX"/cityname_id"
-#define VCONFKEY_SETAPPL_WEEKOFDAY_FORMAT_INT                  VCONFKEY_SETAPPL_PREFIX"/weekofday_format"
-
-/* phone */
-#define VCONFKEY_SETAPPL_STATE_LANG_AUTOMATIC_BOOL VCONFKEY_SETAPPL_PREFIX"/lang_automatic"
-#define VCONFKEY_SETAPPL_LANG_INT VCONFKEY_SETAPPL_PREFIX"/lang"
-
-#define VCONFKEY_SETAPPL_STATE_TICKER_NOTI_DISPLAY_CONTENT_BOOL     VCONFKEY_SETAPPL_PREFIX"/ticker_noti/display_content"
-#define VCONFKEY_SETAPPL_STATE_TICKER_NOTI_RECV_SMS_BOOL            VCONFKEY_SETAPPL_PREFIX"/ticker_noti/recv_sms"
-#define VCONFKEY_SETAPPL_STATE_TICKER_NOTI_RECV_MMS_NOTI_BOOL       VCONFKEY_SETAPPL_PREFIX"/ticker_noti/recv_mms_noti"
-#define VCONFKEY_SETAPPL_STATE_TICKER_NOTI_RECV_MMS_BOOL            VCONFKEY_SETAPPL_PREFIX"/ticker_noti/recv_mms"
-#define VCONFKEY_SETAPPL_STATE_TICKER_NOTI_RECV_VOICEMAIL_BOOL      VCONFKEY_SETAPPL_PREFIX"/ticker_noti/recv_voicemail"
-#define VCONFKEY_SETAPPL_STATE_TICKER_NOTI_RECV_EMAIL_BOOL          VCONFKEY_SETAPPL_PREFIX"/ticker_noti/recv_email"
-#define VCONFKEY_SETAPPL_STATE_TICKER_NOTI_RECV_SEVEN_EMAIL_BOOL    VCONFKEY_SETAPPL_PREFIX"/ticker_noti/recv_seven_email"
-#define VCONFKEY_SETAPPL_STATE_TICKER_NOTI_MSG_DELIVERY_REPORT_BOOL VCONFKEY_SETAPPL_PREFIX"/ticker_noti/msg_delivery_report"
-#define VCONFKEY_SETAPPL_STATE_TICKER_NOTI_MSG_READ_REPORT_BOOL     VCONFKEY_SETAPPL_PREFIX"/ticker_noti/msg_read_report"
-#define VCONFKEY_SETAPPL_STATE_TICKER_NOTI_APP_DOWNLOADED_BOOL      VCONFKEY_SETAPPL_PREFIX"/ticker_noti/app_downloaded"
-#define VCONFKEY_SETAPPL_STATE_TICKER_NOTI_FILE_DOWNLOADED_BOOL     VCONFKEY_SETAPPL_PREFIX"/ticker_noti/file_downloaded"
-#define VCONFKEY_SETAPPL_STATE_TICKER_NOTI_IM_BOOL                  VCONFKEY_SETAPPL_PREFIX"/ticker_noti/im"
-#define VCONFKEY_SETAPPL_STATE_TICKER_NOTI_FACE_BOOK_BOOL           VCONFKEY_SETAPPL_PREFIX"/ticker_noti/face_book"
-#define VCONFKEY_SETAPPL_STATE_TICKER_NOTI_MY_SPACE_BOOL            VCONFKEY_SETAPPL_PREFIX"/ticker_noti/my_space"
-#define VCONFKEY_SETAPPL_STATE_TICKER_NOTI_TWITTER_BOOL             VCONFKEY_SETAPPL_PREFIX"/ticker_noti/twitter"
-#define VCONFKEY_SETAPPL_STATE_TICKER_NOTI_LBS_BOOL                 VCONFKEY_SETAPPL_PREFIX"/ticker_noti/lbs"
-#define VCONFKEY_SETAPPL_STATE_TICKER_NOTI_MESSAGES_BOOL                       VCONFKEY_SETAPPL_PREFIX"/ticker_noti/messages"
-#define VCONFKEY_SETAPPL_STATE_TICKER_NOTI_VMAIL_BOOL                          VCONFKEY_SETAPPL_PREFIX"/ticker_noti/vmail"
-#define VCONFKEY_SETAPPL_STATE_TICKER_NOTI_EMAIL_BOOL                          VCONFKEY_SETAPPL_PREFIX"/ticker_noti/email"
-#define VCONFKEY_SETAPPL_STATE_TICKER_NOTI_SNS_BOOL                                    VCONFKEY_SETAPPL_PREFIX"/ticker_noti/sns"
-#define VCONFKEY_SETAPPL_STATE_TICKER_NOTI_FILE_TRAN_BOOL                      VCONFKEY_SETAPPL_PREFIX"/ticker_noti/file_tran"
-#define VCONFKEY_SETAPPL_STATE_TICKER_NOTI_OSP_BOOL                                    VCONFKEY_SETAPPL_PREFIX"/ticker_noti/osp"
-
-#define VCONFKEY_SETAPPL_STATE_DATA_ROAMING_BOOL       VCONFKEY_SETAPPL_PREFIX"/data_roaming"
-
-#define VCONFKEY_SETAPPL_VIB_FEEDBACK_INT VCONFKEY_SETAPPL_PREFIX"/vib_feedback"
-
-#define VCONFKEY_SETAPPL_STATE_TOUCH_PANEL_AUTOLOCK_BOOL VCONFKEY_SETAPPL_PREFIX"/touch_panel_autolock"
-#define VCONFKEY_SETAPPL_STATE_TRANSACTION_TRACKING_BOOL VCONFKEY_SETAPPL_PREFIX"/transaction_tracking"
-#define VCONFKEY_SETAPPL_STATE_EXPIRY_REMINDER_BOOL      VCONFKEY_SETAPPL_PREFIX"/expiry_reminder"
-#define VCONFKEY_SETAPPL_ROAMING_NETWORK_INT VCONFKEY_SETAPPL_PREFIX"/roaming_network"
-
-/* application */
-
-/* menu widget */
-#define VCONFKEY_SETAPPL_STATE_ADAPTIVE_MENU_ORDER_BOOL VCONFKEY_SETAPPL_PREFIX"/adaptive_menu_order"
-#define VCONFKEY_SETAPPL_STATE_USE_NETWORK_BY_WIDGETS_BOOL VCONFKEY_SETAPPL_PREFIX"/use_network_by_widgets"
-
-/* memory */
-#define VCONFKEY_SETAPPL_DEFAULT_MEM_WAP_INT            VCONFKEY_SETAPPL_PREFIX"/default_memory/wap"
-#define VCONFKEY_SETAPPL_DEFAULT_MEM_BLUETOOTH_INT      VCONFKEY_SETAPPL_PREFIX"/default_memory/bluetooth"
-#define VCONFKEY_SETAPPL_DEFAULT_MEM_CAMERA_INT         VCONFKEY_SETAPPL_PREFIX"/default_memory/camera"
-#define VCONFKEY_SETAPPL_DEFAULT_MEM_VOICE_RECORDER_INT VCONFKEY_SETAPPL_PREFIX"/default_memory/voice_recorder"
-#define VCONFKEY_SETAPPL_DEFAULT_MEM_FM_RADIO_INT       VCONFKEY_SETAPPL_PREFIX"/default_memory/fm_radio"
-#define VCONFKEY_SETAPPL_DEFAULT_MEM_ALL_SHARE_INT          VCONFKEY_SETAPPL_PREFIX"/default_memory/all_share"
-#define VCONFKEY_SETAPPL_DEFAULT_MEM_ADOBE_AIR_INT          VCONFKEY_SETAPPL_PREFIX"/default_memory/adobe_air"
-
-/* reset */
-
-/* TV out */
-#define VCONFKEY_SETAPPL_TVOUT_AUTOFULL_SCREEN_BOOL            VCONFKEY_SETAPPL_PREFIX"/tvout/autofull_screen"
-#define VCONFKEY_SETAPPL_TVOUT_TVSYSTEM_INT                    VCONFKEY_SETAPPL_PREFIX"/tvout/tvsystem"
-#define VCONFKEY_SETAPPL_TVOUT_RESOLUTION_INT                  VCONFKEY_SETAPPL_PREFIX"/tvout/resolution"
-#define VCONFKEY_SETAPPL_TVOUT_SCREENSIZE_INT                  VCONFKEY_SETAPPL_PREFIX"/tvout/screensize"
-#define VCONFKEY_SETAPPL_TVOUT_ROTATION_INT                    VCONFKEY_SETAPPL_PREFIX"/tvout/rotation"
-
-/* save Memory */
-
-#define VCONFKEY_SETAPPL_MEM_CUR_PROFILE_INT                           VCONFKEY_SETAPPL_MEM_PREFIX"/cur_profile"
-#define VCONFKEY_SETAPPL_MEM_PROFILE_CURRENT_SYS_TOUCH_SOUND_INT       VCONFKEY_SETAPPL_MEM_PREFIX"/current/sys_touch_sound"
-#define VCONFKEY_SETAPPL_MEM_PROFILE_CURRENT_SYS_VOLUME_INT            VCONFKEY_SETAPPL_MEM_PREFIX"/current/sys_volume"
-#define VCONFKEY_SETAPPL_MEM_VIB_FEEDBACK_INT                          VCONFKEY_SETAPPL_MEM_PREFIX"/vib_feedback"
-
-/* setting - on,off status */
-enum {
-       SETTING_ON_OFF_BTN_OFF = 0,
-       SETTING_ON_OFF_BTN_ON,
-       SETTING_ON_OFF_BTN_MAX
-};
-
-/* profile - call alert type */
-enum {
-       SETTING_CALL_ALERT_TYPE_MELODY = 0,
-       SETTING_CALL_ALERT_TYPE_RAISING_MELODY,
-       SETTING_CALL_ALERT_TYPE_VIB,
-       SETTING_CALL_ALERT_TYPE_VIB_THEN_MELODY,
-       SETTING_CALL_ALERT_TYPE_VIB_AND_MELODY,
-       SETTING_CALL_ALERT_TYPE_VIB_AND_RAISING_MELODY,
-       SETTING_CALL_ALERT_TYPE_MUTE,
-       SETTING_CALL_ALERT_TYPE_MAX
-};
-
-/* profile - call alert vib type */
-enum {
-       SETTING_CALL_ALERT_VIB_TYPE1 = 0,
-       SETTING_CALL_ALERT_VIB_TYPE2,
-       SETTING_CALL_ALERT_VIB_TYPE3,
-       SETTING_CALL_ALERT_VIB_TYPE4,
-       SETTING_CALL_ALERT_VIB_TYPE5,
-       SETTING_CALL_ALERT_VIB_TYPE6,
-       SETTING_CALL_ALERT_VIB_TYPE7,
-       SETTING_CALL_ALERT_VIB_TYPE8,
-       SETTING_CALL_ALERT_VIB_TYPE9,
-       SETTING_CALL_ALERT_VIB_TYPE10,
-       SETTING_CALL_ALERT_VIB_MAX
-};
-
-/* profile - msg alert type */
-enum {
-       SETTING_MSG_ALERT_TYPE_MELODY = 0,
-       SETTING_MSG_ALERT_TYPE_VIB,
-       SETTING_MSG_ALERT_TYPE_RAISING_MELODY,
-       SETTING_MSG_ALERT_TYPE_VOICE,
-       SETTING_MSG_ALERT_TYPE_VIB_THEN_MELODY,
-       SETTING_MSG_ALERT_TYPE_VIB_AND_MELODY,
-       SETTING_MSG_ALERT_TYPE_VIB_AND_RAISING_MELODY,
-       SETTING_MSG_ALERT_TYPE_MUTE,
-       SETTING_MSG_ALERT_TYPE_MAX
-};
-
-/* profile - msg alert vib type */
-enum {
-       SETTING_MSG_ALERT_VIB_TYPE1 = 0,
-       SETTING_MSG_ALERT_VIB_TYPE2,
-       SETTING_MSG_ALERT_VIB_TYPE3,
-       SETTING_MSG_ALERT_VIB_TYPE4,
-       SETTING_MSG_ALERT_VIB_TYPE5,
-       SETTING_MSG_ALERT_VIB_MAX
-};
-
-/* profile - system touch sound */
-enum {
-       SETTING_SYS_TOUCH_SOUND_XYLOPHONE = 0,
-       SETTING_SYS_TOUCH_SOUND_BEEP,
-       SETTING_SYS_TOUCH_SOUND_GLOSSY,
-       SETTING_SYS_TOUCH_SOUND_MUTE,
-       SETTING_SYS_TOUCH_SOUND_MAX
-};
-
-/* network - select network */
-enum {
-       SETTING_SELECT_NETWORK_AUTOMATIC = 0,
-       SETTING_SELECT_NETWORK_MANUAL,
-       SETTING_SELECT_NETWORK_MAX
-};
-
-/* network - network mode */
-enum {
-       SETTING_NETWORK_MODE_AUTOMATIC = 0,
-       SETTING_NETWORK_MODE_GSM_900_1800,
-       SETTING_NETWORK_MODE_GSM_850_1900,
-       SETTING_NETWORK_MODE_UTMS,
-       SETTING_NETWORK_MODE_MAX
-};
-
-/* connectivity - tv out - tv system */
-enum {
-       SETTING_TVOUT_TV_SYSTEM_NTSC = 0,
-       SETTING_TVOUT_TV_SYSTEM_PAL,
-       SETTING_TVOUT_TV_SYSTEM_MAX
-};
-
-/* connectivity - tv out - screen size */
-enum {
-       SETTING_TVOUT_SCREEN_SIZE_NORMAL = 0,
-       SETTING_TVOUT_SCREEN_SIZE_WIDE,
-       SETTING_TVOUT_SCREEN_SIZE_MAX
-};
-
-/* display - font size */
-enum {
-       SETTING_FONT_SIZE_SMALL = 0,
-       SETTING_FONT_SIZE_MIDDLE,
-       SETTING_FONT_SIZE_LARGE,
-       SETTING_FONT_SIZE_MAX
-};
-
-/* display - brightness */
-enum {
-       SETTING_BRIGHTNESS_LEVEL1 = 1,
-       SETTING_BRIGHTNESS_LEVEL2,
-       SETTING_BRIGHTNESS_LEVEL3,
-       SETTING_BRIGHTNESS_LEVEL4,
-       SETTING_BRIGHTNESS_LEVEL5,
-       SETTING_BRIGHTNESS_LEVEL6,
-       SETTING_BRIGHTNESS_LEVEL7,
-       SETTING_BRIGHTNESS_LEVEL8,
-       SETTING_BRIGHTNESS_LEVEL9,
-       SETTING_BRIGHTNESS_LEVEL10
-};
-
-/* display - backlight time */
-enum {
-       SETTING_BACKLIGHT_TIME_8SEC = 8,
-       SETTING_BACKLIGHT_TIME_15SEC = 15,
-       SETTING_BACKLIGHT_TIME_30SEC = 30,
-       SETTING_BACKLIGHT_TIME_1MIN = 60,
-       SETTING_BACKLIGHT_TIME_3MIN = 180,
-       SETTING_BACKLIGHT_TIME_10MIN = 600,
-       SETTING_BACKLIGHT_TIME_MAX
-};
-
-/* time - time format */
-enum {
-       SETTING_TIME_FORMAT_12HOUR = 0,
-       SETTING_TIME_FORMAT_24HOUR,
-       SETTING_TIME_FORMAT_MAX
-};
-
-/* time - date format */
-enum {
-       SETTING_DATE_FORMAT_DD_MM_YYYY = 0,
-       SETTING_DATE_FORMAT_MM_DD_YYYY,
-       SETTING_DATE_FORMAT_YYYY_MM_DD,
-       SETTING_DATE_FORMAT_YYYY_DD_MM,
-       SETTING_DATE_FORMAT_MAX
-};
-
-/* time - week of day format */
-enum {
-       SETTING_WEEKOFDAY_FORMAT_SUNDAY = 0,
-       SETTING_WEEKOFDAY_FORMAT_MONDAY,
-       SETTING_WEEKOFDAY_FORMAT_TUESDAY,
-       SETTING_WEEKOFDAY_FORMAT_WEDNESDAY,
-       SETTING_WEEKOFDAY_FORMAT_THURSDAY,
-       SETTING_WEEKOFDAY_FORMAT_FRIDAY,
-       SETTING_WEEKOFDAY_FORMAT_SATURDAY,
-       SETTING_WEEKOFDAY_FORMAT_MAX
-};
-
-/* phone - lnaguage */
-enum {
-       SETTING_LANG_AUTOMATIC = 0,
-       SETTING_LANG_KOREA = 1,
-       SETTING_LANG_ENGLISH,
-       SETTING_LANG_CHINA,
-       SETTING_LANG_CANTONESE,
-       SETTING_LANG_TAIWAN,
-       SETTING_LANG_GERMAN,
-       SETTING_LANG_DUTCH,
-       SETTING_LANG_SPAINISH,
-       SETTING_LANG_PORTUGUESE,
-       SETTING_LANG_GREEK,
-       SETTING_LANG_ITALIAN,
-       SETTING_LANG_FRENCH,
-       SETTING_LANG_TURKISH,
-       SETTING_LANG_JAPAN,
-       SETTING_LANG_RUSSIAN,
-       SETTING_LANG_MAX
-};
-
-/* phone - vibration feedback */
-enum {
-       SETTING_VIB_FEEDBACK_LEVEL0 = 0,
-       SETTING_VIB_FEEDBACK_LEVEL1,
-       SETTING_VIB_FEEDBACK_LEVEL2,
-       SETTING_VIB_FEEDBACK_LEVEL3,
-       SETTING_VIB_FEEDBACK_LEVEL4,
-       SETTING_VIB_FEEDBACK_LEVEL5
-};
-
-/* memory - default memory */
-enum {
-       SETTING_DEF_MEMORY_PHONE = 0,
-       SETTING_DEF_MEMORY_MMC,
-       SETTING_DEF_MEMORY_MAX
-};
-
-/* phone - license setting */
-enum {
-       SETTING_ROAM_NET_AUTO_DOWNLOAD = 0,
-       SETTING_ROAM_NET_MANUAL,
-       SETTING_ROAM_NET_ALWAYS_REJECT,
-       SETTING_ROAM_NET_MAX
-};
-
-/* Music player */
-#define VCONFKEY_SETAPPL_MUSIC_MENU_ALBUMS_BOOL                        VCONFKEY_SETAPPL_PREFIX"/music-player/albums"
-#define VCONFKEY_SETAPPL_MUSIC_MENU_ARTISTS_BOOL               VCONFKEY_SETAPPL_PREFIX"/music-player/artists"
-#define VCONFKEY_SETAPPL_MUSIC_MENU_GENRES_BOOL                        VCONFKEY_SETAPPL_PREFIX"/music-player/genres"
-#define VCONFKEY_SETAPPL_MUSIC_MENU_COMPOSERS_BOOL             VCONFKEY_SETAPPL_PREFIX"/music-player/composers"
-#define VCONFKEY_SETAPPL_MUSIC_MENU_YEARS_BOOL                 VCONFKEY_SETAPPL_PREFIX"/music-player/years"
-#define VCONFKEY_SETAPPL_MUSIC_MENU_FOLDERS_BOOL               VCONFKEY_SETAPPL_PREFIX"/music-player/folders"
-
-#define VCONFKEY_SETAPPL_MUSIC_MENU_VAL_INT VCONFKEY_SETAPPL_PREFIX"/music-player/menu"
-enum {
-       SETTING_MUSIC_MENU_ALBUM = 0x0001,
-       SETTING_MUSIC_MENU_ARTIST = 0x0002,
-       SETTING_MUSIC_MENU_GENRE = 0x0004,
-       SETTING_MUSIC_MENU_COMPOSER = 0x0008,
-       SETTING_MUSIC_MENU_YEAR = 0x0010,
-       SETTING_MUSIC_MENU_FOLDER = 0x0020
-};
-
-#define VCONFKEY_SETAPPL_MUSIC_EQUALISER_VAL_INT               VCONFKEY_SETAPPL_PREFIX"/music-player/eq_val"
-enum {
-       SETTING_MUSIC_EQ_OFF = 0,
-       SETTING_MUSIC_EQ_AUTO,
-       SETTING_MUSIC_EQ_ROCK,
-       SETTING_MUSIC_EQ_POP,
-       SETTING_MUSIC_EQ_JAZZ,
-       SETTING_MUSIC_EQ_CLASSIC,
-       SETTING_MUSIC_EQ_DANCE,
-       SETTING_MUSIC_EQ_LIVE,
-       SETTING_MUSIC_EQ_NUMS
-};
-
-#define VCONFKEY_SETAPPL_MUSIC_EFFECT_VAL_INT                  VCONFKEY_SETAPPL_PREFIX"/music-player/effect_val"
-enum {
-       SETTING_MUSIC_EFFECT_OFF = 0,
-       SETTING_MUSIC_EFFECT_DYNAMIC,
-       SETTING_MUSIC_EFFECT_WIDE,
-       SETTING_MUSIC_EFFECT_EXTERNALIZATION,
-       SETTING_MUSIC_EFFECT_MUSIC_CLARITY,
-       SETTING_MUSIC_EFFECT_BASS_ENHANCEMENT,
-       SETTING_MUSIC_EFFECT_CONCERT_HALL,
-       SETTING_MUSIC_EFFECT_NUMS
-};
-
-#define VCONFKEY_SETAPPL_MUSIC_SURROUND_CH_STATE_BOOL          VCONFKEY_SETAPPL_PREFIX"/music-player/surround_ch_state"
-
-#define VCONFKEY_SETAPPL_BATTERY_PERCENTAGE_BOOL               VCONFKEY_SETAPPL_PREFIX"/battery_percentage"
-
-/* Accessibility setting */
-#define VCONFKEY_SETAPPL_ACCESSIBILITY_ACCESSIBILITY           VCONFKEY_SETAPPL_PREFIX"/accessibility/accessibility"
-#define VCONFKEY_SETAPPL_ACCESSIBILITY_HIGH_CONTRAST           VCONFKEY_SETAPPL_PREFIX"/accessibility/high_contrast"
-#define VCONFKEY_SETAPPL_ACCESSIBILITY_SCREEN_ZOOM             VCONFKEY_SETAPPL_PREFIX"/accessibility/screen_zoom"
-#define VCONFKEY_SETAPPL_ACCESSIBILITY_FONT_SIZE               VCONFKEY_SETAPPL_PREFIX"/accessibility/font_size"
-#define VCONFKEY_SETAPPL_ACCESSIBILITY_FONT_STYLE              VCONFKEY_SETAPPL_PREFIX"/accessibility/font_style"
-#define VCONFKEY_SETAPPL_ACCESSIBILITY_TORCH_LIGHT             VCONFKEY_SETAPPL_PREFIX"/accessibility/torch_light"
-#define VCONFKEY_SETAPPL_ACCESSIBILITY_MONO_AUDIO              VCONFKEY_SETAPPL_PREFIX"/accessibility/mono_audio"
-#define VCONFKEY_SETAPPL_ACCESSIBILITY_ACCEPT_CALL             VCONFKEY_SETAPPL_PREFIX"/accessibility/accept_call"
-#define VCONFKEY_SETAPPL_ACCESSIBILITY_ENABLE_AUTO_ANSWER      VCONFKEY_SETAPPL_PREFIX"/accessibility/enable_auto_answer"
-#define VCONFKEY_SETAPPL_ACCESSIBILITY_AUTO_ANSWER             VCONFKEY_SETAPPL_PREFIX"/accessibility/auto_answer"
-#define VCONFKEY_SETAPPL_ACCESSIBILITY_POWERKEY_END_CALLS      VCONFKEY_SETAPPL_PREFIX"/accessibility/powerkey_end_calls"
-#define VCONFKEY_SETAPPL_ACCESSIBILITY_MOTION_TRIPLE_TAB       VCONFKEY_SETAPPL_PREFIX"/accessibility/motion_triple_tab"
-#define VCONFKEY_SETAPPL_ACCESSIBILITY_POWER_KEY_HOLD           VCONFKEY_SETAPPL_PREFIX"/accessibility/power_key_hold"
-
-/* Motion setting */
-#define VCONFKEY_SETAPPL_MOTION_ACTIVATION                      VCONFKEY_SETAPPL_PREFIX"/motion_active"
-#define VCONFKEY_SETAPPL_USE_TILT                               VCONFKEY_SETAPPL_PREFIX"/use_tilt"
-#define VCONFKEY_SETAPPL_TILT_SENSITIVITY                       VCONFKEY_SETAPPL_PREFIX"/tilt_sensitivity"
-
-#define VCONFKEY_SETAPPL_USE_PANNING                            VCONFKEY_SETAPPL_PREFIX"/use_panning"
-#define VCONFKEY_SETAPPL_PANNING_SENSITIVITY                    VCONFKEY_SETAPPL_PREFIX"/panning_sensitivity"
-
-#define VCONFKEY_SETAPPL_USE_DOUBLE_TAP                         VCONFKEY_SETAPPL_PREFIX"/use_double_tap"
-#define VCONFKEY_SETAPPL_USE_TURN_OVER                          VCONFKEY_SETAPPL_PREFIX"/use_turn_over"
-
-#define VCONFKEY_SETAPPL_USE_PICK_UP                            VCONFKEY_SETAPPL_PREFIX"/use_pick_up"
-#define VCONFKEY_SETAPPL_USE_DOUBLE_TAP                         VCONFKEY_SETAPPL_PREFIX"/use_double_tap"
-
-#define VCONFKEY_SETAPPL_APP_MOTION_INTERNET                    VCONFKEY_SETAPPL_PREFIX"/motion/app/internet"
-#define VCONFKEY_SETAPPL_APP_MOTION_GALLERY                     VCONFKEY_SETAPPL_PREFIX"/motion/app/gallery"
-
-/**
- * @}
- */
-
-/* ========================== For CISS UI============================= */
-/**
- * @defgroup vconf_key_CISS CISS Keys
- * @ingroup vconf_key
- * @addtogroup vconf_key_CISS
- * @{
- * @brief Maintainer : siwoo0.lee@samsung.com
- */
-#define VCONFKEY_CISSAPPL_PREFIX  "db/ciss/"
-
-#define VCONFKEY_CISSAPPL_SHOW_MY_NUMBER_INT             VCONFKEY_CISSAPPL_PREFIX"/show_my_number"
-#define VCONFKEY_CISSAPPL_AUTO_REJECT_BOOL               VCONFKEY_CISSAPPL_PREFIX"/auto_reject"
-#define VCONFKEY_CISSAPPL_AUTO_REJECT_UNKNOWN_BOOL       VCONFKEY_CISSAPPL_PREFIX"/auto_reject_unknown"
-#define VCONFKEY_CISSAPPL_PREFIX_DIAL_BOOL               VCONFKEY_CISSAPPL_PREFIX"/prefix_dial"
-#define VCONFKEY_CISSAPPL_PREFIX_DIAL_INT                VCONFKEY_CISSAPPL_PREFIX"/prefix_dial_cnt"
-#define VCONFKEY_CISSAPPL_PREFIX_DIAL_NUM1_STR           VCONFKEY_CISSAPPL_PREFIX"/prefix_dial_num1"
-#define VCONFKEY_CISSAPPL_PREFIX_DIAL_NUM2_STR           VCONFKEY_CISSAPPL_PREFIX"/prefix_dial_num2"
-#define VCONFKEY_CISSAPPL_PREFIX_DIAL_NUM3_STR           VCONFKEY_CISSAPPL_PREFIX"/prefix_dial_num3"
-#define VCONFKEY_CISSAPPL_PREFIX_DIAL_NUM4_STR           VCONFKEY_CISSAPPL_PREFIX"/prefix_dial_num4"
-#define VCONFKEY_CISSAPPL_PREFIX_DIAL_NUM5_STR           VCONFKEY_CISSAPPL_PREFIX"/prefix_dial_num5"
-#define VCONFKEY_CISSAPPL_REJECT_CALL_MSG_BOOL           VCONFKEY_CISSAPPL_PREFIX"/reject_call_message"
-#define VCONFKEY_CISSAPPL_REJECT_CALL_MSG_INT            VCONFKEY_CISSAPPL_PREFIX"/reject_call_message_cnt"
-#define VCONFKEY_CISSAPPL_USER_CREATE_MSG1_STR           VCONFKEY_CISSAPPL_PREFIX"/user_create_message1"
-#define VCONFKEY_CISSAPPL_USER_CREATE_MSG2_STR           VCONFKEY_CISSAPPL_PREFIX"/user_create_message2"
-#define VCONFKEY_CISSAPPL_USER_CREATE_MSG3_STR           VCONFKEY_CISSAPPL_PREFIX"/user_create_message3"
-#define VCONFKEY_CISSAPPL_USER_CREATE_MSG4_STR           VCONFKEY_CISSAPPL_PREFIX"/user_create_message4"
-#define VCONFKEY_CISSAPPL_USER_CREATE_MSG5_STR           VCONFKEY_CISSAPPL_PREFIX"/user_create_message5"
-#define VCONFKEY_CISSAPPL_ANSWERING_MODE_INT             VCONFKEY_CISSAPPL_PREFIX"/answering_mode"
-#define VCONFKEY_CISSAPPL_ANSWERING_MODE_TIME_INT        VCONFKEY_CISSAPPL_PREFIX"/answering_mode_time"
-#define VCONFKEY_CISSAPPL_CALL_CONNECT_TONE_BOOL         VCONFKEY_CISSAPPL_PREFIX"/call_connect_tone"
-#define VCONFKEY_CISSAPPL_MINUTE_MINDER_BOOL             VCONFKEY_CISSAPPL_PREFIX"/minute_minder"
-#define VCONFKEY_CISSAPPL_CALL_END_TONE_BOOL             VCONFKEY_CISSAPPL_PREFIX"/call_end_tone"
-#define VCONFKEY_CISSAPPL_ALERT_ON_CALL_INT              VCONFKEY_CISSAPPL_PREFIX"/alert_on_call"
-#define VCONFKEY_CISSAPPL_VIDEO_IMAGE_PATH_STR           VCONFKEY_CISSAPPL_PREFIX"/video_image_path"
-#define VCONFKEY_CISSAPPL_OWN_VIDEO_BOOL                 VCONFKEY_CISSAPPL_PREFIX"/own_video"
-#define VCONFKEY_CISSAPPL_USE_CALL_FAIL_OPTIONS_BOOL     VCONFKEY_CISSAPPL_PREFIX"/use_call_fail_options"
-#define VCONFKEY_CISSAPPL_VOICE_AUTO_REDIAL_BOOL         VCONFKEY_CISSAPPL_PREFIX"/voice_auto_redial"
-#define VCONFKEY_CISSAPPL_VIDEO_AUTO_REDIAL_BOOL         VCONFKEY_CISSAPPL_PREFIX"/video_auto_redial"
-#define VCONFKEY_CISSAPPL_PREFIX_DIAL_VALUE_INT          VCONFKEY_CISSAPPL_PREFIX"/prefix_dial_value"
-#define VCONFKEY_CISSAPPL_REJECT_CALL_MSG_VALUE_INT      VCONFKEY_CISSAPPL_PREFIX"/reject_call_message_value"
-#define VCONFKEY_CISSAPPL_CALL_DIVERTING_INDICATOR_BOOL  VCONFKEY_CISSAPPL_PREFIX"/call_diverting_indicator"
-#define VCONFKEY_CISSAPPL_ANSWERING_KEY_BOOL             VCONFKEY_CISSAPPL_PREFIX"/call_answering_key"
-#define VCONFKEY_CISSAPPL_POWER_KEY_ENDS_CALL_BOOL       VCONFKEY_CISSAPPL_PREFIX"/call_power_key_ends_call"
-
-/**
- * @}
- */
-
-/* =========================== Call app =================================== */
-/**
- * @defgroup vconf_key_CallApp Call Application Keys
- * @ingroup vconf_key
- * @addtogroup vconf_key_CallApp
- * @{
- * @brief Maintainer : alpakook@samsung.com
- */
-#define VCONFKEY_CALL_STATE "memory/call/state"
-enum {
-       VCONFKEY_CALL_OFF = 0x00,
-       VCONFKEY_CALL_VOICE_CONNECTING,
-       VCONFKEY_CALL_VOICE_ACTIVE,
-       VCONFKEY_CALL_VIDEO_CONNECTING,
-       VCONFKEY_CALL_VIDEO_ACTIVE,
-       VCONFKEY_CALL_STATE_MAX
-};
-
-/**
- * @}
- */
-
-/* =============================== Wifi ====================================== */
-/**
- * @defgroup vconf_key_Wifi Wifi Keys
- * @ingroup vconf_key
- * @addtogroup vconf_key_Wifi
- * @{
- * @brief Maintainer : shyeon.kim@samsung.com  sw0927.kim@samsung.com
- */
-#define VCONFKEY_WIFI_STATE "memory/wifi/state"
-enum {
-       VCONFKEY_WIFI_OFF = 0x00,
-       VCONFKEY_WIFI_UNCONNECTED,
-       VCONFKEY_WIFI_CONNECTED,
-       VCONFKEY_WIFI_TRANSFER,
-       VCONFKEY_WIFI_STATE_MAX
-};
-
-#define VCONFKEY_WIFI_STRENGTH "memory/wifi/strength"
-enum {
-       VCONFKEY_WIFI_STRENGTH_MIN = 0,
-       VCONFKEY_WIFI_STRENGTH_MAX = 4
-};
-
-#define VCONFKEY_WIFI_QS_EXIT "memory/wifi/wifi_qs_exit"
-enum {
-       VCONFKEY_WIFI_QS_CANCEL = 0x00,
-       VCONFKEY_WIFI_QS_WIFI_CONNECTED,
-       VCONFKEY_WIFI_QS_3G
-};
-
-#define VCONFKEY_WIFI_ENABLE_QS "db/wifi/enable_quick_start"
-enum {
-       VCONFKEY_WIFI_QS_DISABLE = 0x00,
-       VCONFKEY_WIFI_QS_ENABLE = 0x01
-};
-
-/* Current connected ap's name : string
- * Added by Misun Kim <ms0123.kim@samsung.com>
- */
-#define VCONFKEY_WIFI_CONNECTED_AP_NAME "memory/wifi/connected_ap_name"
-
-/* Current state of wifi UG */
-#define VCONFKEY_WIFI_UG_RUN_STATE "memory/wifi/ug_run_state"
-enum {
-       VCONFKEY_WIFI_UG_RUN_STATE_NULL = 0x00,
-       VCONFKEY_WIFI_UG_RUN_STATE_ON_FOREGROUND,
-       VCONFKEY_WIFI_UG_RUN_STATE_ON_BACKGROUND,
-       VCONFKEY_WIFI_UG_RUN_STATE_OFF,
-       VCONFKEY_WIFI_UG_RUN_STATE_MAX
-};
-
-/*
- * SLP BADA REQUIREMENT - Wi-Fi MAC address
- * Maintainer : s.seo
- */
-#define VCONFKEY_WIFI_BSSID_ADDRESS "db/wifi/bssid_address"
-
-#define VCONFKEY_WIFI_DIRECT_STATE    "memory/wifi_direct/state"
-enum {
- VCONFKEY_WIFI_DIRECT_DEACTIVATED  = 0,
- VCONFKEY_WIFI_DIRECT_ACTIVATED,
- VCONFKEY_WIFI_DIRECT_DISCOVERING,
- VCONFKEY_WIFI_DIRECT_CONNECTED,
- VCONFKEY_WIFI_DIRECT_GROUP_OWNER
-};
-
-
-/**
- * @}
- */
-
-/* ================================= BT =====================================*/
-/**
- * @defgroup vconf_key_BT BT Keys
- * @ingroup vconf_key
- * @addtogroup vconf_key_BT
- * @{
- * @brief Maintainer : sw0312.kim@samsung.com, chanyeol.park@samsung.com
- */
-
-/* Bluetooth Status : int (bit masking value) */
-#define VCONFKEY_BT_STATUS "db/bluetooth/status"
-enum {
-       VCONFKEY_BT_STATUS_OFF = 0x0000,
-       VCONFKEY_BT_STATUS_ON = 0x0001,
-       VCONFKEY_BT_STATUS_BT_VISIBLE = 0x0002,
-       VCONFKEY_BT_STATUS_TRANSFER = 0x0004
-};
-
-/* Local name */
-#define VCONFKEY_BT_LOCAL_NAME "db/bluetooth/localname"
-
-/* Bluetooth Connected Device : int (bit masking value) */
-#define VCONFKEY_BT_DEVICE "memory/bluetooth/device"
-enum {
-       VCONFKEY_BT_DEVICE_NONE = 0x0000,
-       VCONFKEY_BT_DEVICE_HEADSET_CONNECTED = 0x0004,
-       VCONFKEY_BT_DEVICE_A2DP_HEADSET_CONNECTED = 0x0010,
-       VCONFKEY_BT_DEVICE_SAP_CONNECTED = 0x0020,
-       VCONFKEY_BT_DEVICE_PBAP_CONNECTED = 0x0040
-};
-
-/* Media sound path for BT */
-enum {
-       VCONFKEY_BT_PLAYER_SELECT_SPEAKER = 0x00,       /* Media Player Select Speaker */
-       VCONFKEY_BT_PLAYER_SELECT_BLUETOOTH = 0x01,     /* Media Player Select Bluetooth */
-       VCONFKEY_BT_APP_SELECT_SPEAKER = 0x02,  /* BT application Select Speaker */
-       VCONFKEY_BT_APP_SELECT_BLUETOOTH = 0x04 /* BT application Select Bluetooth */
-};
-
-/* Bluetooth SCO Connection state : boolean */
-#define VCONFKEY_BT_HEADSET_SCO "memory/bluetooth/btsco"
-/* SCO connection state */
-enum {
-       VCONFKEY_BT_SCO_DISCONNECT = 0x00,      /* SCO Disconnected */
-       VCONFKEY_BT_SCO_CONNECT = 0x01  /* SCO Connected */
-};
-
-/**
- * @}
- */
-
-/* =========================== Alarm ================================*/
-/**
- * @defgroup vconf_key_Alarm Alarm Keys
- * @ingroup vconf_key
- * @addtogroup vconf_key_Alarm
- * @{
- * @brief Maintainer : jiwon11.lee@samsung.com
- */
-#define VCONFKEY_ALARM_STATE   "db/alarm/state"
-/**
- * @}
- */
-
-/* =========================== Music app ================================*/
-/**
- * @defgroup vconf_key_MusicApp Music Application Keys
- * @ingroup vconf_key
- * @addtogroup vconf_key_MusicApp
- * @{
- * @brief Maintainer : junhyuk7.lee@samsung.com
- */
-#define VCONFKEY_MUSIC_STATE "memory/music/state"
-enum {
-       VCONFKEY_MUSIC_OFF = 0x00,
-       VCONFKEY_MUSIC_PLAY,
-       VCONFKEY_MUSIC_PAUSE,
-       VCONFKEY_MUSIC_STOP,
-       VCONFKEY_MUSIC_STATE_MAX
-};
-
-#define VCONFKEY_MUSIC_PROCESS_STATE "memory/music/process_state"
-enum {
-       VCONFKEY_MUSIC_PROCESS_OFF = 0x00,
-       VCONFKEY_MUSIC_PROCESS_FOREGROUND,
-       VCONFKEY_MUSIC_PROCESS_BACKGROUND,
-       VCONFKEY_MUSIC_PROCESS_STATE_MAX
-};
-
-/**
- * @}
- */
-
-/* ========================== Radio app ===============================*/
-/**
- * @defgroup vconf_key_RadioApp Radio Application Keys
- * @ingroup vconf_key
- * @addtogroup vconf_key_RadioApp
- * @{
- * @brief Maintainer : hk57.kim@samsung.com
- */
-#define VCONFKEY_RADIO_STATE "memory/radio/state"
-enum {
-       VCONFKEY_RADIO_OFF = 0x00,
-       VCONFKEY_RADIO_PLAY,
-       VCONFKEY_RADIO_STOP,
-       VCONFKEY_RADIO_STATE_MAX
-};
-
-#define VCONFKEY_RADIO_TESTMODE    "db/radio/testmode"
-enum {
-       VCONFKEY_RADIO_TEST_OFF = 0,
-       VCONFKEY_RADIO_TEST_ON
-};
-
-/**
- * @}
- */
-
-/* =========================== Task Switcher app =================================== */
-/**
- * @defgroup vconf_key_TaskSwitcherApp Task Switcher Application Keys
- * @ingroup vconf_key
- * @addtogroup vconf_key_TaskSwitcherApp
- * @{
- * @brief Maintainer : noha.park@samsung.com
- */
-#define VCONFKEY_TASKSWITCHER_VIEWTYPE "db/taskswitcher/viewtype"
-enum {
-       VCONFKEY_TASKSWITCHER_VIEWTYPE_LIST = 0x00,
-       VCONFKEY_TASKSWITCHER_VIEWTYPE_CARD,
-       VCONFKEY_TASKSWITCHER_VIEWTYPE_MAX
-};
-
-/**
- * @}
- */
-
-/* =========================== Menu Screen app =================================== */
-/**
- * @defgroup vconf_key_MenuScreenApp Menu Screen Application Keys
- * @ingroup vconf_key
- * @addtogroup vconf_key_MenuScreenApp
- * @{
- * @brief Maintainer : nicesj.park@samsung.com
- */
-#define VCONFKEY_MENUSCREEN_VIEWTYPE "db/menuscreen/viewtype"
-enum {
-       VCONFKEY_MENUSCREEN_VIEWTYPE_DEFAULT = 0x00,
-       VCONFKEY_MENUSCREEN_VIEWTYPE_LIST,
-       VCONFKEY_MENUSCREEN_VIEWTYPE_SPACE,
-       VCONFKEY_MENUSCREEN_VIEWTYPE_MAX
-};
-
-/**
- * @}
- */
-
-/* ========================== Sync ===============================*/
-/**
- * @defgroup vconf_key_Sync Sync Application Keys
- * @ingroup vconf_key
- * @addtogroup vconf_key_Sync
- * @{
- * @brief Maintainer : jyjeong@samsung.com
- */
-#define VCONFKEY_SYNC_STATE "db/sync/state"
-/**
- * @}
- */
-
-/* ========================== Data Router Keys & Values ============================ */
-/**
- * @defgroup vconf_key_DataRouter Data Router Keys
- * @ingroup vconf_key
- * @addtogroup vconf_key_DataRouter
- * @{
- * @brief Maintainer : injun.yang@samsung.com
- */
-#define VCONF_DATAROUTER_PREFIX "memory/data_router"
-
-/**
- * <!-- reg-control keynum=0, value=int -->
- * @brief data router connection method
- */
-#define VCONFKEY_DR_CONNECTION_METHOD_INT      VCONF_DATAROUTER_PREFIX"/conn_method"
-enum {
-       VCONFKEY_DR_NONE = 0,
-       VCONFKEY_DR_USB,
-       VCONFKEY_DR_BLUETOOTH,
-       VCONFKEY_DR_WIFI
-};
-
-#define VCONFKEY_DR_PW_STATUS_CHECK_BOOL       VCONF_DATAROUTER_PREFIX"/pw_status"
-/* FOR CHECKING AUTH STATUS UNDER KIES CONNECTION / REQUESTED BY sunbong.ha / 2011-07-26 */
-#define VCONFKEY_DR_AUTH_STATUS_CHECK_INT      VCONF_DATAROUTER_PREFIX"/auth_status"
-/**
- * @}
- */
-
-/* ========================== Dnet ===============================*/
-/**
- * @defgroup vconf_key_dnet Data Network Keys
- * @ingroup vconf_key
- * @addtogroup vconf_key_dnet
- * @{
- * @brief Maintainer : donghoo.park@samsung.com
- */
-#define VCONFKEY_3G_ENABLE "db/setting/3gEnabled"
-
-#define VCONFKEY_DORMANT_SET "db/dnet/DormantSupport"
-
-#define VCONFKEY_NETWORK_STATUS "memory/dnet/status"
-enum {
-       VCONFKEY_NETWORK_OFF = 0,
-       VCONFKEY_NETWORK_CELLULAR,
-       VCONFKEY_NETWORK_WIFI
-};
-
-#define VCONFKEY_NETWORK_CONFIGURATION_CHANGE_IND "memory/dnet/network_config"
-#define VCONFKEY_NETWORK_IP "memory/dnet/ip"
-#define VCONFKEY_NETWORK_PROXY "memory/dnet/proxy"
-
-#define VCONFKEY_NETWORK_WIFI_STATE "memory/dnet/wifi"
-enum {
-       VCONFKEY_NETWORK_WIFI_OFF,
-       VCONFKEY_NETWORK_WIFI_NOT_CONNECTED,
-       VCONFKEY_NETWORK_WIFI_CONNECTED
-};
-
-#define VCONFKEY_NETWORK_CELLULAR_STATE "memory/dnet/cellular"
-enum {
-       VCONFKEY_NETWORK_CELLULAR_ON,
-       VCONFKEY_NETWORK_CELLULAR_3G_OPTION_OFF,
-       VCONFKEY_NETWORK_CELLULAR_ROAMING_OFF,
-       VCONFKEY_NETWORK_CELLULAR_FLIGHT_MODE,
-       VCONFKEY_NETWORK_CELLULAR_NO_SERVICE
-};
-
-#define VCONFKEY_DNET_STATE "memory/dnet/state"
-enum {
-       VCONFKEY_DNET_OFF = 0x00,
-       VCONFKEY_DNET_NORMAL_CONNECTED,
-       VCONFKEY_DNET_SECURE_CONNECTED,
-       VCONFKEY_DNET_TRANSFER,
-       VCONFKEY_DNET_STATE_MAX
-};
-
-#define VCONFKEY_DNET_INIT  "memory/dnet/init"
-enum {
-       VCONFKEY_DNET_SERVER_NOT_INITED = 0,
-       VCONFKEY_DNET_SERVER_INITED
-};
-
-#define VCONFKEY_NETWORK_CELLULAR_PKT_TOTAL_RCV  "db/dnet/statistics/cellular/totalrcv"
-#define VCONFKEY_NETWORK_CELLULAR_PKT_TOTAL_SNT  "db/dnet/statistics/cellular/totalsnt"
-#define VCONFKEY_NETWORK_CELLULAR_PKT_LAST_RCV  "db/dnet/statistics/cellular/lastrcv"
-#define VCONFKEY_NETWORK_CELLULAR_PKT_LAST_SNT  "db/dnet/statistics/cellular/lastsnt"
-#define VCONFKEY_NETWORK_WIFI_PKT_TOTAL_RCV  "db/dnet/statistics/wifi/totalrcv"
-#define VCONFKEY_NETWORK_WIFI_PKT_TOTAL_SNT  "db/dnet/statistics/wifi/totalsnt"
-#define VCONFKEY_NETWORK_WIFI_PKT_LAST_RCV  "db/dnet/statistics/wifi/lastrcv"
-#define VCONFKEY_NETWORK_WIFI_PKT_LAST_SNT  "db/dnet/statistics/wifi/lastsnt"
-
-/**
- * @}
- */
-
-/* ========================== GPS ===============================*/
-/**
- * @defgroup vconf_key_GPS GPS Application Keys
- * @ingroup vconf_key
- * @addtogroup vconf_key_GPS
- * @{
- * @brief Maintainer : daejins.kim@samsung.com
- */
-#define VCONFKEY_GPS_STATE "memory/gps/state"
-enum {
-       VCONFKEY_GPS_OFF = 0x00,
-       VCONFKEY_GPS_SEARCHING,
-       VCONFKEY_GPS_CONNECTED,
-       VCONFKEY_GPS_STATE_MAX
-};
-/* setting location on/off value */
-#define VCONFKEY_LOCATION_ENABLED "db/location/setting/GpsEnabled"
-/**
- * @}
- */
-
-/* ========================== SNS ===============================*/
-/**
- * @defgroup vconf_key_SNS SNS Application Keys
- * @ingroup vconf_key
- * @addtogroup vconf_key_SNS
- * @{
- * @brief Maintainer : sukbong.lee@samsung.com
- */
-#define VCONFKEY_SNS_FACEBOOK_STATE "db/sns/facebook/state"
-#define VCONFKEY_SNS_MYSPACE_STATE "db/sns/myspace/state"
-#define VCONFKEY_SNS_TWITTER_STATE "db/sns/twitter/state"
-/**
- * @}
- */
-
-/* ========================== Communities ===============================*/
-/**
- * @defgroup vconf_key_Communities Communities Application Keys
- * @ingroup vconf_key
- * @addtogroup vconf_key_Communities
- * @{
- * @brief Maintainer : karam.ko@samsung.com
- */
-#define VCONFKEY_COMMUNITIES_FACEBOOK_STATE "db/communities/facebook/state"
-#define VCONFKEY_COMMUNITIES_MYSPACE_STATE "db/communities/myspace/state"
-#define VCONFKEY_COMMUNITIES_FLICKR_STATE "db/communities/flickr/state"
-#define VCONFKEY_COMMUNITIES_PHOTOBUCKET_STATE "db/communities/photobucket/state"
-#define VCONFKEY_COMMUNITIES_YOUTUBE_STATE "db/communities/youtube/state"
-#define VCONFKEY_COMMUNITIES_PICASA_STATE "db/communities/picasa/state"
-#define VCONFKEY_COMMUNITIES_FRIENDSTER_STATE "db/communities/friendster/state"
-/**
- * @}
- */
-
-/* =================== Input Service Framework Keys & Values ========================*/
-/**
- * @defgroup vconf_key_InputServiceFramework service Keys
- * @ingroup vconf_key
- * @addtogroup vconf_key_InputServiceFramework
- * @{
- * @brief Maintainer : sehwan@samsung.com
- */
-#define VCONFKEY_ISF_PREFIX                            "db/isf"
-#define VCONFKEY_ISF_INPUT_LANG_STR    VCONFKEY_ISF_PREFIX"/input_lang"        /* ex) "french" */
-/**
- * @}
- */
-
-/* ========================== For Logs UI============================= */
-/**
- * @defgroup vconf_key_LogsUI LogsUI application Keys
- * @ingroup vconf_key
- * @addtogroup vconf_key_LogsUI
- * @{
- * @brief Maintainer : sunghee46.kim@samsung.com
- */
-/* This key is deleted following donghee.ye request at 2011-11-09 */
-/* #define LOGS_UNSEEN_MISSED_CALL_COUNT "db/logs/unseen_missed_call_count" */
-
-/**
- * @}
- */
-
-/* =========================== IDLE lock =======================================*/
-/**
- * @defgroup vconf_key_idleLock idleLock Keys
- * @ingroup vconf_key
- * @addtogroup vconf_key_idleLock
- * @{
- * @brief Maintainer : wonil22.choi@samsung.com hyoyoung.chang@samsung.com angelkim@samsung.com
- */
-
-#define VCONFKEY_IDLE_LOCK_STATE "memory/idle_lock/state"
-enum {
-       VCONFKEY_IDLE_UNLOCK = 0x00,
-       VCONFKEY_IDLE_LOCK
-};
-
-/**
- * @ingroup vconf_key
- * @addtogroup vconf_key_idleLock
- * @{
- * @brief Maintainer : jinny.yoon@samsung.com
- */
-#define VCONFKEY_IDLE_LOCK_BGSET "db/idle_lock/bgset"
-
-/**
- * @}
- */
-
-/* =========================== pwlock =======================================*/
-/**
- * @defgroup vconf_key_pwlock Lock application for password verification: phone, pin, sum, network, etc.
- * @ingroup vconf_key
- * @addtogroup vconf_key_pwlock
- * @{
- * @brief Maintainer : seungtaek.chung@samsung.com miju52.lee@samsung.com
- *        Used module : pwlock
- *
- */
-
-#define VCONFKEY_PWLOCK_STATE "memory/pwlock/state"
+#define VCONFKEY_PWLOCK_STATE                       "memory/pwlock/state"
 enum {
+       /** unlocked state in boointg time */
        VCONFKEY_PWLOCK_BOOTING_UNLOCK = 0x00,
+       /** locked state in boointg time */
        VCONFKEY_PWLOCK_BOOTING_LOCK,
+       /** unlocked state in running time */
        VCONFKEY_PWLOCK_RUNNING_UNLOCK,
+       /** locked state in running time */
        VCONFKEY_PWLOCK_RUNNING_LOCK
 };
-/**
- * @}
- */
-
-/* =========================== mobile hotspot =======================================*/
-/**
- * @defgroup vconf_key_mobile_hotspot Mobile hotspot's vconf keys
- * @ingroup vconf_key
- * @addtogroup vconf_key_mobile_hotspot
- * @{
- * @brief Maintainer : bh.shim@samsung.com, sy39.ju@samsung.com
- *        Used module : wifi-efl-ug, wifi-quick-app, setting, ug-kies-via-wifi, usb-setting-app, data-router, libmtp-0
- *
- */
-
-#define VCONFKEY_MOBILE_AP_STATUS "memory/mobile_ap/mobile_ap_status"
-enum {
-       VCONFKEY_MOBILE_AP_STATUS_OFF = 0x00,
-       VCONFKEY_MOBILE_AP_STATUS_ON
-};
-
-#define VCONFKEY_MOBILE_HOTSPOT_MODE "memory/mobile_hotspot/mode"
-enum {
-       VCONFKEY_MOBILE_HOTSPOT_MODE_NONE = 0x00,
-       VCONFKEY_MOBILE_HOTSPOT_MODE_WIFI = 0x01,
-       VCONFKEY_MOBILE_HOTSPOT_MODE_USB = 0x02,
-       VCONFKEY_MOBILE_HOTSPOT_MODE_BT = 0x04
-};
-
-#define VCONFKEY_MOBILE_HOTSPOT_WIFI_KEY "db/mobile_hotspot/wifi_key"
-/* This vconf key's value means the number of connected device to hotspot */
-#define VCONFKEY_MOBILE_HOTSPOT_CONNECTED_DEVICE "memory/mobile_hotspot/connected_device"
-/**
- * @}
- */
-
-/* =========================== CAMERA apps =======================================*/
-/**
- * @defgroup vconf_key_CameraApps camera Keys
- * @ingroup vconf_key
- * @addtogroup vconf_key_CameraApps
- * @{
- * @brief Maintainer :  milkelf.choi@samsung.com, jh1979.park@samsung.com, jm80.yang@samsung.com
- */
-
-#define VCONFKEY_CAMERA_STATE "memory/camera/state"
-
-enum {
-       VCONFKEY_CAMERA_OFF = 0x00,
-       VCONFKEY_CAMERA_ON,
-       VCONFKEY_CAMERA_PREVIEW,
-       VCONFKEY_CAMERA_PREVIEW_LOCK,
-       VCONFKEY_CAMERA_CAPTURING,
-       VCONFKEY_CAMERA_RECORDING,
-       VCONFKEY_CAMERA_RECORDING_LOCK,
-       VCONFKEY_CAMERA_REVIEW,
-       VCONFKEY_CAMERA_STATE_MAX
-};
-
-/**
- * @}
- */
-
-/* =========================== VoiceRecorder app =======================================*/
-/**
- * @defgroup vconf_key_VoicerecorderApp Voice recorder app keys
- * @ingroup vconf_key
- * @addtogroup vconf_key_VoicerecorderApp
- * @{
- * @brief Maintainer : quddls.oh@samsung.com
- */
-#define VCONFKEY_VOICERECORDER_STATE "memory/voicerecorder/state"
-enum {
-       VCONFKEY_VOICERECORDER_OFF = 0x00,
-       VCONFKEY_VOICERECORDER_READY,
-       VCONFKEY_VOICERECORDER_RECORDING,
-       VCONFKEY_VOICERECORDER_PAUSED,
-       VCONFKEY_VOICERECORDER_STATE_MAX
-};
-/**
- * @}
- */
-
-/* ========================== USB setting ====================================== */
-/**
- * @defgroup vconf_key_usb_setting
- * @ingroup vconf_key
- * @addtogroup vconf_key_usb_setting
- * @{
- * @brief Maintainer : Jihye Lim <veronica.lim@samsung.com>
- */
-#define VCONFKEY_USB_STORAGE_STATUS "memory/usb/mass_storage_status"
-enum {
-       VCONFKEY_USB_STORAGE_STATUS_OFF = 0x00,
-       VCONFKEY_USB_STORAGE_STATUS_UMS_ON,
-       VCONFKEY_USB_STORAGE_STATUS_UMS_MMC_ON
-};
-/**
- * @}
- */
-
-/**
- * @defgroup vconf_key_ETC ETC Keys
- * @ingroup vconf_key
- * @addtogroup vconf_key_ETC
- * @{
- * @brief Maintainer :
- * Maybe it is not used.
- */
-
-/* ============================ Calendar Keys & Values ============================*/
-/* Maintainer :
-#define VCONFKEY_CALENDAR_START_WDAY           "db/calendar/start_wday"
-enum {
-   VCONFKEY_CALENDAR_START_SUN = 0x00,
-   VCONFKEY_CALENDAR_START_MON
-};
-
-#define VCONFKEY_CALENDAR_VIEW_BY              "db/calendar/start_wday"
-enum {
-   VCONFKEY_CALENDAR_VIEW_MONTH = 0x00,
-   VCONFKEY_CALENDAR_VIEW_WEEK,
-   VCONFKEY_CALENDAR_VIEW_DAY
-};
-*/
-
-#if 0
-/* ============================ Volume Keys & Values ============================*/
-/* Maintainer :
- */
-#define VCONFKEY_VOLUME_PCM    "db/volume/pcm"
-/* No enum. Refer to src/apps/volume */
-#define VCONFKEY_VOLUME_MODEM  "db/volume/modem"
-enum {
-       VCONFKEY_VOLUME_MUTE = 0x00,
-       VCONFKEY_VOLUME_1,
-       VCONFKEY_VOLUME_2,
-       VCONFKEY_VOLUME_3,
-       VCONFKEY_VOLUME_4,
-       VCONFKEY_VOLUME_5,
-       VCONFKEY_VOLUME_6,
-       VCONFKEY_VOLUME_MAX
-};
-#endif
-
-/* ============================ Lock Keys & Values ============================*/
-/* Maintainer :
-#define VCONFKEY_LOCK_STATE "db/lock/state"
-#define VCONFKEY_LOCK_PIN1(LOCK_STATE) (LOCK_STATE & 0x01)
-#define VCONFKEY_LOCK_PIN2(LOCK_STATE) ((LOCK_STATE >> 1) & 0x01)
-#define VCONFKEY_LOCK_SIM(LOCK_STATE) ((LOCK_STATE >> 2) & 0x01)
-#define VCONFKEY_LOCK_PHONE(LOCK_STATE) ((LOCK_STATE >> 3) & 0x01)
-#define VCONFKEY_LOCK_PIN1_SET(LOCK_STATE) (LOCK_STATE | 0x01)
-#define VCONFKEY_LOCK_PIN2_SET(LOCK_STATE) (LOCK_STATE | (0x01 << 1))
-#define VCONFKEY_LOCK_SIM_SET(LOCK_STATE) (LOCK_STATE | (0x01 << 2))
-#define VCONFKEY_LOCK_PHONE_SET(LOCK_STATE) (LOCK_STATE | (0x01 << 3))
-#define VCONFKEY_LOCK_PIN1_UNSET(LOCK_STATE) (LOCK_STATE & ~0x01)
-#define VCONFKEY_LOCK_PIN2_UNSET(LOCK_STATE) (LOCK_STATE & ~(0x01 << 1))
-#define VCONFKEY_LOCK_SIM_UNSET(LOCK_STATE) (LOCK_STATE & ~(0x01 << 2))
-#define VCONFKEY_LOCK_PHONE_UNSET(LOCK_STATE) (LOCK_STATE & ~(0x01 << 3))
-
-#define VCONFKEY_LOCK_RETRY "db/lock/retry"
-#define VCONFKEY_LOCK_RETRY_PIN1(LOCK_RETRY) (LOCK_RETRY & 0x0f)
-#define VCONFKEY_LOCK_RETRY_PIN2(LOCK_RETRY) ((LOCK_RETRY >> 4) & 0x0f)
-*/
-
-/* ========================== System Keys & Values ============================ */
-/* Maintainer :  */
-/**
- * @defgroup vconf_key_system
- * @ingroup vconf_key
- * @addtogroup vconf_key_system
- * @{
- * @brief Maintainer : Jaeho Lee <jaeho81.lee@samsung.com>
- */
-#define VCONFKEY_SYSTEM_TIMECHANGE "db/system/timechange"
-/**
- * @}
- */
-
-/* ========================== For Myfiles ============================= */
-/**
- * @defgroup vconf_key_myfile myfiles application Keys
- * @ingroup vconf_key
- * @addtogroup vconf_key_myfile
- * @{
- * @brief Maintainer : Jeunghoon Park <jh1979.park@samsung.com>
- */
-#define VCONFKEY_MYFILE_LIST_BY "db/myfile/list_by"
-/**
- * @}
- */
-
-/* ============================ NFC ============================*/
-/**
- * @defgroup vconf_key_NFC 
- * @ingroup vconf_key
- * @addtogroup vconf_key_NFC
- * @{
- * @brief Maintainer : wonkyu.kwon@samsung.com, sc.sohn@samsung.com
- */
-#define  VCONFKEY_NFC_STATE "db/nfc/enable"  /* status of NFC On/Off */
-enum
-{
-    VCONFKEY_NFC_STATE_OFF = 0x00,
-    VCONFKEY_NFC_STATE_ON,
-    VCONFKEY_NFC_STATE_MAX
-};
-
-/* NFC Feature On/Off status used by setting & app using share via*/
-#define  VCONFKEY_NFC_FEATURE "db/nfc/feature"
-enum
-{
-    VCONFKEY_NFC_FEATURE_OFF = 0x00,
-    VCONFKEY_NFC_FEATURE_ON,
-    VCONFKEY_NFC_FEATURE_MAX
-};
-
-/**
- * @}
- */
-
-/* ========================== Call ============================= */
-/**
- * @defgroup vconf_key_call call application Keys
- * @ingroup vconf_key
- * @addtogroup vconf_key_call
- * @{
- * @brief Maintainer : Sungjoon won <sungjoon.won@samsung.com>, js49.lee <jsj49.lee@samsung.com>
- */
-#define VCONFKEY_CALL_VOLUME_LEVEL "db/call/vol_level"
-/**
- * @}
- */
-
-/* ========================== FLASH PLAYER ============================= */
-/**
- * @defgroup vconf_key_call call application Keys
- * @ingroup vconf_key
- * @addtogroup vconf_key_call
- * @{
- * @brief Maintainer : Jeongsu Kim <jst.kim@samsung.com>
- */
-#define VCONFKEY_FLASHPLAYER_FULLSCREEN "memory/flashplayer/fullscreen"
-enum {
- VCONFKEY_FLASHPLAYER_FULLSCREEN_OFF = 0x00,
- VCONFKEY_FLASHPLAYER_FULLSCREEN_ON
-};
-
-/**
- * @}
- */
-
-/* ========================== FACTORY ============================= */
-/**
- * @defgroup vconf_key_factory
- * @ingroup vconf_key
- * @addtogroup vconf_key_factory
- * @{
- * @brief Maintainer : Jisung Ahn <jcastle.ahn@samsung.com>
- */
-#define VCONFKEY_FACTORY_PREFIX "memory/factory"
-
-/* when call connected at factory mode this flag set, write:call read:fta */
-#define VCONFKEY_FACTORY_CALL_CONNECT_STATE VCONFKEY_FACTORY_PREFIX"/call_connected"
-enum
-{
- VCONFKEY_FACTORY_CALL_DISCONNECTED = 0x00,
- VCONFKEY_FACTORY_CALL_CONNECTED
-};
-
 /**
  * @}
  */
index ef3964a1d00bdda83c2fd08fafd3184ccbe25a9c..9b28dc2693d4831287c22e6c7db45e477bfc526e 100755 (executable)
 
 #include <stdio.h>
 #include <unistd.h>
+#include <stdlib.h>
 
 #define VCONF_DLOG_OUT
 
 /************** Error ***************/
 #ifdef VCONF_SYSLOG_OUT
-#include <syslog.h>
-#define VCONF_SYS_LOGD(prio, fmt, arg...) \
-       do { syslog(prio, "[%s:%d] "fmt"\n", __FILE__, __LINE__, ##arg); \
-       } while (0)
-#define VCONF_SYS_LOG(prio, fmt, arg...) \
-       do { syslog(prio, fmt, ##arg); } while (0)
-#define INFO(fmt, arg...) VCONF_SYS_LOG(LOG_INFO, fmt, ##arg)
-#define ERR(fmt, arg...) VCONF_SYS_LOG(LOG_ERR, fmt, ##arg)
+       #include <syslog.h>
+
+       #define INFO(fmt, arg...) \
+               do { \
+                       syslog(LOG_INFO, "[%s:%d] "fmt"\n", __FILE__, __LINE__, ##arg); \
+               }while(0)
+       #define ERR(fmt, arg...) \
+               do { \
+                       syslog(LOG_ERR, "[%s:%d] "fmt"\n", __FILE__, __LINE__, ##arg); \
+               }while(0)
+       #define WARN(fmt, arg...) \
+               do { \
+                       syslog(LOG_ERR, "[%s:%d] "fmt"\n", __FILE__, __LINE__, ##arg); \
+               }while(0)
+
 #elif defined(VCONF_DLOG_OUT)
-#define LOG_TAG                "VCONF"
-#include <dlog.h>
-#define VCONF_DLOG(prio, fmt, arg...) \
-       do { SLOG(prio, LOG_TAG, fmt, ##arg); } while (0)
-#define INFO(fmt, arg...) SLOGI(fmt, ##arg)
-#define ERR(fmt, arg...) SLOGE(fmt, ##arg)
-#define VCONF_DBG(fmt, arg...) SLOGD(fmt, ##arg)
+       #define LOG_TAG "VCONF"
+       #include <dlog.h>
+
+       #define INFO(fmt, arg...) SLOGI(fmt, ##arg)
+       #define ERR(fmt, arg...) SLOGE(fmt, ##arg)
+       #define WARN(fmt, arg...) SLOGW(fmt, ##arg
+
 #else
-#include <syslog.h>
-#define VCONF_PRTD(prio, fmt, arg...) \
-       do { fprintf((LOG_PRI(prio) == LOG_ERR ? stderr : stdout), \
-               "[%s:%d] "fmt"\n", __FILE__, __LINE__, ##arg); \
-       } while (0)
-#define VCONF_PRT(prio, fmt, arg...) \
-       do { fprintf((LOG_PRI(prio) == LOG_ERR ? stderr : stdout), fmt"\n", ##arg); } while (0)
-#define INFO(fmt, arg...) VCONF_PRT(LOG_INFO, fmt, ##arg)
-#define ERR(fmt, arg...) VCONF_PRT(LOG_ERR, fmt, ##arg)
+       #include <stdlib.h>
+
+       #define INFO(fmt, arg...) \
+               do { \
+                       fprintf(stdout,"[%s:%d] "fmt"\n", __FILE__, __LINE__, ##arg); \
+               }while(0)
+       #define WARN(fmt, arg...) \
+               do { \
+                       fprintf(stderr,"[%s:%d] "fmt"\n", __FILE__, __LINE__, ##arg); \
+               }while(0)
+       #define ERR(fmt, arg...) \
+               do { \
+                       fprintf(stderr,"[%s:%d] "fmt"\n", __FILE__, __LINE__, ##arg); \
+               }while(0)
 #endif
 
-#ifdef VCONF_DEBUGGING
-#include <stdlib.h>
 
-#define VCONF_DEBUG(fmt, arg...) \
-       printf("\x1b[105;37m[%d]\x1b[0m(%s)" fmt "\n", getpid(), __FUNCTION__, ##arg)
-#define DBG VCONF_DBG
-#define warn_if(expr, fmt, arg...) do { \
-               if (expr) { \
-                       DBG("(%s) -> "fmt, #expr, ##arg); \
-               } \
-       } while (0)
-#define ret_if(expr) do { \
+/************** Return ***************/
+#define ret_if(expr) \
+       do { \
                if (expr) { \
-                       DBG("(%s) -> %s() return", #expr, __FUNCTION__); \
+                       ERR("(%s) -> %s() return", #expr, __FUNCTION__); \
                        return; \
                } \
        } while (0)
-#define retv_if(expr, val) do { \
+#define retv_if(expr, val) \
+       do { \
                if (expr) { \
-                       DBG("(%s) -> %s() return", #expr, __FUNCTION__); \
+                       ERR("(%s) -> %s() return", #expr, __FUNCTION__); \
                        return (val); \
                } \
        } while (0)
-#define retm_if(expr, fmt, arg...) do { \
+#define retm_if(expr, fmt, arg...) \
+       do { \
                if (expr) { \
                        ERR(fmt, ##arg); \
-                       DBG("(%s) -> %s() return", #expr, __FUNCTION__); \
                        return; \
                } \
        } while (0)
-#define retvm_if(expr, val, fmt, arg...) do { \
+#define retvm_if(expr, val, fmt, arg...) \
+       do { \
                if (expr) { \
                        ERR(fmt, ##arg); \
-                       DBG("(%s) -> %s() return", #expr, __FUNCTION__); \
                        return (val); \
                } \
        } while (0)
-#define retex_if(expr, fmt, arg...) do { \
+#define retex_if(expr, fmt, arg...) \
+       do { \
                if (expr) { \
                        ERR(fmt, ##arg); \
-                       DBG("(%s) -> %s() return", #expr, __FUNCTION__); \
                        goto CATCH; \
                } \
        } while (0)
 
-   /************** TimeCheck ***************/
+
+/************** TimeCheck ***************/
 #ifdef VCONF_TIMECHECK
 #define START_TIME_CHECK \
        init_time();\
 #define START_TIME_CHECK
 #define END_TIME_CHECK
 #endif
-#else
-#define DBG(...)
-#define VCONF_DEBUG(...)
-
-#define warn_if(expr, fmt, arg...) do { \
-               if (expr) { \
-                       ERR(fmt, ##arg); \
-               } \
-       } while (0)
-#define ret_if(expr) do { \
-               if (expr) { \
-                       return; \
-               } \
-       } while (0)
-#define retv_if(expr, val) do { \
-               if (expr) { \
-                       return (val); \
-               } \
-       } while (0)
-#define retm_if(expr, fmt, arg...) do { \
-               if (expr) { \
-                       ERR(fmt, ##arg); \
-                       return; \
-               } \
-       } while (0)
-#define retvm_if(expr, val, fmt, arg...) do { \
-               if (expr) { \
-                       ERR(fmt, ##arg); \
-                       return (val); \
-               } \
-       } while (0)
-#define retex_if(expr, fmt, arg...) do { \
-               if (expr) { \
-                       ERR(fmt, ##arg); \
-                       goto CATCH; \
-               } \
-       } while (0)
 
-#define START_TIME_CHECK
-#define END_TIME_CHECK
-
-#endif
 
 #endif                         /* __VCONF_LOG_H__ */
index 3ab2fa6eb021174fed1e9782cd3374a70fd8be01..1460321ef61e9db4fbe4dc00c8c5ef9522fd719d 100755 (executable)
@@ -94,30 +94,49 @@ extern "C" {
  * \n Use for vconf_get()
  * @see vconf_get()
  */
-       enum get_option_t {
-               VCONF_GET_KEY = 0,
-                   /**< get only keys */
-               VCONF_GET_ALL,
-                   /**< get keys and directorys */
-               VCONF_GET_DIR
-                  /**< get only directorys */
-       };
-       typedef enum get_option_t get_option_t;
-
-       enum vconf_t {
-               VCONF_TYPE_NONE = 0,
-                          /**< Vconf none type for Error detection */
-               VCONF_TYPE_STRING = 40,
-                          /**< Vconf string type */
-               VCONF_TYPE_INT = 41,
-                          /**< Vconf integer type */
-               VCONF_TYPE_DOUBLE = 42,
-                          /**< Vconf double type */
-               VCONF_TYPE_BOOL = 43,
-                          /**< Vconf boolean type */
-               VCONF_TYPE_DIR
-                          /**< Vconf directory type */
-       };
+enum get_option_t {
+       VCONF_GET_KEY = 0,
+           /**< get only keys */
+       VCONF_GET_ALL,
+           /**< get keys and directorys */
+       VCONF_GET_DIR
+          /**< get only directorys */
+};
+typedef enum get_option_t get_option_t;
+
+enum vconf_t {
+       VCONF_TYPE_NONE = 0,
+                  /**< Vconf none type for Error detection */
+       VCONF_TYPE_STRING = 40,
+                  /**< Vconf string type */
+       VCONF_TYPE_INT = 41,
+                  /**< Vconf integer type */
+       VCONF_TYPE_DOUBLE = 42,
+                  /**< Vconf double type */
+       VCONF_TYPE_BOOL = 43,
+                  /**< Vconf boolean type */
+       VCONF_TYPE_DIR
+                  /**< Vconf directory type */
+};
+
+
+/**
+ * keynode_t is an opaque type, it must be
+ * used via accessor functions.
+ * @see vconf_keynode_get_name(), vconf_keynode_get_type()
+ * @see vconf_keynode_get_bool(), vconf_keynode_get_dbl(), vconf_keynode_get_int(), vconf_keynode_get_str()
+ */
+typedef struct _keynode_t {
+       char *keyname;
+       int type;
+       union {
+               int i;
+               int b;
+               double d;
+               char *s;
+       } value;
+       struct _keynode_t *next;
+} keynode_t;
 
 /**
  * keylist_t is an opaque type, it must be
@@ -127,16 +146,12 @@ extern "C" {
  * @see vconf_keylist_del(), vconf_keylist_add_null()
  * @see vconf_keylist_lookup(), vconf_keylist_nextnode(), vconf_keylist_rewind()
  */
-       typedef struct _keylist_t keylist_t;
+typedef struct _keylist_t {
+       int num;
+       keynode_t *head;
+       keynode_t *cursor;
+} keylist_t;
 
-/**
- * keynode_t is an opaque type, it must be
- * used via accessor functions.
- * @see vconf_keynode_get_name(), vconf_keynode_get_type()
- * @see vconf_keynode_get_bool(), vconf_keynode_get_dbl(), vconf_keynode_get_int(), vconf_keynode_get_str()
- * @see vconf_keynode_steal_str()
- */
-       typedef struct _keynode_t keynode_t;
 
 /**
  * This is the signature of a callback function added with vconf_notify_key_changed().
@@ -215,17 +230,6 @@ extern "C" {
  */
        char *vconf_keynode_get_str(keynode_t *keynode);
 
-/**
- * This function steals String value from the keynode,
- * leaving the string value field in keynode set to NULL.
- * @param[in] keynode The Key
- * @return String value that the caller must free, NULL on error
- * @pre Nome
- * @post None
- * @remarks None
- * @see vconf_notify_key_changed(), vconf_keynode_get_name, vconf_keynode_get_bool, vconf_keynode_get_type, vconf_keynode_get_str, vconf_keynode_get_int, vconf_keynode_get_dbl, keynode_t, vconf_t
- */
-       char *vconf_keynode_steal_str(keynode_t *keynode);
 
 /************************************************
  * keylist handling APIs
@@ -253,9 +257,10 @@ extern "C" {
  * @par example
  * @code
     int r =0;
+    keylist_t* pKeyList = NULL;
     pKeyList = vconf_keylist_new();
-    
-    r = vconf_get(pKeyList, KEY_PARENT, VCONF_GET_KEY); 
+
+    r = vconf_get(pKeyList, KEY_PARENT, VCONF_GET_KEY);
     if (r) {
        tet_infoline("vconf_get() failed in positive test case");
        tet_result(TET_FAIL);
@@ -266,13 +271,13 @@ extern "C" {
     vconf_keylist_nextnode(pKeyList);
 
     // Move first position from KeyList
-    r = vconf_keylist_rewind(pKeyList);        
-    if (r<0) { 
+    r = vconf_keylist_rewind(pKeyList);
+    if (r<0) {
        tet_infoline("vconf_keylist_rewind() failed in positive test case");
        tet_result(TET_FAIL);
        return;
     }
-    
+
     while(vconf_keylist_nextnode(pKeyList)) ;
  * @endcode
  */
@@ -306,13 +311,14 @@ extern "C" {
 #include <vconf.h>
 
 int main()
-{      
-       int r = 0;      
+{
+       int r = 0;
        int nResult = 0;
-       keynode_t* pKeyNode = NULL;
+       keylist_t* pKeyList = NULL;
+       keynode_t *pKeyNode;
 
        pKeyList = vconf_keylist_new();
-       r = vconf_get(pKeyList, KEY_PARENT, VCONF_GET_KEY);     
+       r = vconf_get(pKeyList, KEY_PARENT, VCONF_GET_KEY);
        if (r<0) {
                printf("vconf_get() failed in positive test case");
                return -1;
@@ -331,7 +337,7 @@ int main()
                return -1;
 
        }
-       
+
        vconf_keylist_free(pKeyList);
        return 0;
 }
@@ -493,7 +499,7 @@ int main()
  * @pre None
  * @post None
  * @remarks None
- * @see vconf_set_bool(), vconf_set_dbl(), vconf_set_str(), vconf_set_bytes()
+ * @see vconf_set_bool(), vconf_set_dbl(), vconf_set_str()
  */
        int vconf_set_int(const char *in_key, const int intval);
 
@@ -505,7 +511,7 @@ int main()
  * @pre None
  * @post None
  * @remarks None
- * @see vconf_set_int(), vconf_set_dbl(), vconf_set_str(), vconf_set_bytes()
+ * @see vconf_set_int(), vconf_set_dbl(), vconf_set_str()
  * @par example
  * @code
 #include <stdio.h>
@@ -541,7 +547,7 @@ int main()
  * @pre None
  * @post None
  * @remarks None
- * @see vconf_set_int(), vconf_set_bool(), vconf_set_str(), vconf_set_bytes()
+ * @see vconf_set_int(), vconf_set_bool(), vconf_set_str()
  */
        int vconf_set_dbl(const char *in_key, const double dblval);
 
@@ -553,7 +559,7 @@ int main()
  * @pre None
  * @post None
  * @remarks None
- * @see vconf_set_bool(), vconf_set_dbl(), vconf_set_int(), vconf_set_bytes()
+ * @see vconf_set_bool(), vconf_set_dbl(), vconf_set_int()
  */
        int vconf_set_str(const char *in_key, const char *strval);
 
@@ -571,7 +577,7 @@ int main()
  * @par example
  * @code
 #include <stdio.h>
-#include <vconf.h> 
+#include <vconf.h>
 
 int main()
 {
@@ -612,23 +618,22 @@ int main()
 }
  * @endcode
  */
-       int vconf_get(keylist_t *keylist, const char *in_parentDIR,
-                     get_option_t option);
+       int vconf_get(keylist_t *keylist, const char *in_parentDIR, get_option_t option);
 
 /**
  * This function get the integer value of given key.
- * 
+ *
  * @param[in]  in_key  key
  * @param[out] intval output buffer
  * @return 0 on success, -1 on error
  * @pre None
  * @post None
  * @remkar None
- * @see vconf_get_bool, vconf_get_dbl, vconf_get_str, vconf_get_bytes
+ * @see vconf_get_bool, vconf_get_dbl, vconf_get_str
  * @par example
  * @code
 #include <stdio.h>
-#include <vconf.h> 
+#include <vconf.h>
 
 const char *key1_name="db/test/key1";
 
@@ -660,19 +665,19 @@ int main(int argc, char **argv)
  * @pre None
  * @post None
  * @remarks None
- * @see vconf_get_int(), vconf_get_dbl(), vconf_get_str(), vconf_get_bytes()
+ * @see vconf_get_int(), vconf_get_dbl(), vconf_get_str()
  */
        int vconf_get_bool(const char *in_key, int *boolval);
 
 /**
- * This function get the double value of given key. 
+ * This function get the double value of given key.
  * @param[in]  in_key  key
  * @param[out] dblval output buffer
  * @return 0 on success, -1 on error
  * @pre None
  * @post None
  * @remarks None
- * @see vconf_get_int(), vconf_get_bool(), vconf_get_str(), vconf_get_bytes()
+ * @see vconf_get_int(), vconf_get_bool(), vconf_get_str()
  */
        int vconf_get_dbl(const char *in_key, double *dblval);
 
@@ -684,7 +689,7 @@ int main(int argc, char **argv)
  * @pre None
  * @post None
  * @remarks None
- * @see vconf_get_int(), vconf_get_dbl(), vconf_get_bool(), vconf_get_bytes()
+ * @see vconf_get_int(), vconf_get_dbl(), vconf_get_bool()
  * @par example
  * @code
    #include <stdio.h>
@@ -760,7 +765,7 @@ int main(int argc, char **argv)
  * When you have a callback for a certain key, assume that two or more processes are trying to
  * change the value of the key competitively. In this case, your callback function will always
  * get 'CURRENT' value, not the value raised the notify that caused run of the callback.  So,
- * do not use vconf callback when competitive write for a key is happening. In such case, use 
+ * do not use vconf callback when competitive write for a key is happening. In such case, use
  * socket-based IPC(dbus or something else) instead.
  *
  * @param[in]   in_key  key
@@ -833,32 +838,6 @@ int main(int argc, char **argv)
  */
        int vconf_ignore_key_changed(const char *in_key, vconf_callback_fn cb);
 
-/**
- * This function get the binary value of given key up to size bytes.
- * @param[in]  in_key  key
- * @param[out] buf output buffer
- * @param[in]  size the size for reading
- * @return the number of bytes actually read on success, -1 on error
- * @pre None
- * @post None
- * @remarks None
- * @see vconf_get_int(), vconf_get_bool(), vconf_get_str(), vconf_get_dbl()
- **/
-       int vconf_get_bytes(const char *in_key, void *buf, int size);
-
-/**
- * This function set the binary value of given key
- * @param[in]  in_key  key
- * @param[in]  binval binary value to set
- * @param[in]  size  the size for writing
- * @return 0 on success, -1 on error
- * @pre None
- * @post None
- * @remarks None
- * @see vconf_set_int(), vconf_set_bool(), vconf_set_str(), vconf_set_dbl()
- */
-       int vconf_set_bytes(const char *in_key, const void *binval, int size);
-
 #ifdef __cplusplus
 }
 #endif
old mode 100644 (file)
new mode 100755 (executable)
index 1a99812..67085aa
@@ -1,6 +1,6 @@
 Name:       vconf
 Summary:    Configuration system library
-Version:    0.2.23
+Version:    0.2.26
 Release:    1
 Group:      System/Libraries
 License:    Apache License, Version 2.0
@@ -8,10 +8,9 @@ Source0:    %{name}-%{version}.tar.gz
 Requires(post): /sbin/ldconfig
 Requires(postun): /sbin/ldconfig
 BuildRequires:  cmake
-BuildRequires:  pkgconfig(elektra)
 BuildRequires:  pkgconfig(glib-2.0)
-BuildRequires:  pkgconfig(dbus-1)
 BuildRequires:  pkgconfig(dlog)
+BuildRequires:  pkgconfig(vconf-internal-keys)
                
 %description 
 Configuration system library
@@ -32,6 +31,7 @@ Summary:    vconf (devel)
 Group:      Development/Libraries
 Requires:   %{name} = %{version}-%{release}
 Requires:   vconf = %{version}-%{release}
+Requires:   vconf-internal-keys-devel
 
 %description keys-devel
 Vconf key management header files
@@ -48,11 +48,10 @@ make %{?jobs:-j%jobs}
 rm -rf %{buildroot}
 %make_install
 
-mkdir -p %{buildroot}/opt/var/gconf
 mkdir -p %{buildroot}/etc/rc.d/rc3.d
 mkdir -p %{buildroot}/etc/rc.d/rc4.d
-ln -sf /etc/rc.d/init.d/vconf-init %{buildroot}/etc/rc.d/rc3.d/S12vconf-init
-ln -sf /etc/rc.d/init.d/vconf-init %{buildroot}/etc/rc.d/rc4.d/S12vconf-init
+ln -sf /etc/rc.d/init.d/vconf-init %{buildroot}/etc/rc.d/rc3.d/S04vconf-init
+ln -sf /etc/rc.d/init.d/vconf-init %{buildroot}/etc/rc.d/rc4.d/S04vconf-init
 
 %post -p /sbin/ldconfig
 
@@ -61,12 +60,11 @@ ln -sf /etc/rc.d/init.d/vconf-init %{buildroot}/etc/rc.d/rc4.d/S12vconf-init
 %files
 %defattr(-,root,root,-)
 %attr(755,root,root) %{_sysconfdir}/rc.d/init.d/vconf-init
-%{_sysconfdir}/rc.d/rc3.d/S12vconf-init
-%{_sysconfdir}/rc.d/rc4.d/S12vconf-init
+%{_sysconfdir}/rc.d/rc3.d/S04vconf-init
+%{_sysconfdir}/rc.d/rc4.d/S04vconf-init
 %{_bindir}/vconftool
 %attr(644, root, root) /opt/var/kdb/kdb_first_boot
 %{_libdir}/*.so.*
-%attr(777,root,root) /opt/var/gconf
 
 %files devel
 %defattr(-,root,root,-)
@@ -78,3 +76,10 @@ ln -sf /etc/rc.d/init.d/vconf-init %{buildroot}/etc/rc.d/rc4.d/S12vconf-init
 %defattr(-,root,root,-)
 %{_includedir}/vconf/vconf-keys.h
 
+%changelog
+* Tue Aug 14 2012 - Hyungdeuk Kim <hd3.kim@samsung.com>
+- Fix issues related prevent
+- Fix warning msg at build time
+
+* Mon Jul 23 2012 - SeungYeup Kim <sy2004.kim@samsung.com>
+- Enable -f option for force update
diff --git a/test/Makefile b/test/Makefile
new file mode 100644 (file)
index 0000000..09c3378
--- /dev/null
@@ -0,0 +1,23 @@
+CC = gcc
+
+REQUIRED_PKG = vconf ecore
+CFLAGS = -g -Wall
+LDFLAGS =
+ifdef REQUIRED_PKG
+       CFLAGS += `pkg-config --cflags $(REQUIRED_PKG)`
+       LDFLAGS += `pkg-config --libs $(REQUIRED_PKG)`
+endif
+
+SRCS = vconf_notitest.c vconf_timecheck.c vconf_unit_test.c
+OBJECTS = $(SRCS:.c=.o)
+TARGETS = $(OBJECTS:.o=)
+
+
+all: $(TARGETS)
+
+% : %.o
+       $(CC) $(LDFLAGS) -o $@ $<
+
+clean:
+       rm -rf $(OBJECTS) $(TARGETS)
+
diff --git a/test/vconf_notitest.c b/test/vconf_notitest.c
new file mode 100644 (file)
index 0000000..596935a
--- /dev/null
@@ -0,0 +1,120 @@
+/*
+ * vconf
+ *
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Contact: Hakjoo ko <hakjoo.ko@samsung.com>
+ *
+ * This library is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Lesser General Public License as published by the
+ * Free Software Foundation; either version 2.1 of the License, or (at your option)
+ * any later version.
+ * 
+ * This library is distributed in the hope that it will be useful, but WITHOUT ANY
+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+ * License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; if not, write to the Free Software Foundation, Inc., 51
+ * Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ */
+
+
+#include <stdio.h>
+#include <vconf.h>
+#include <Ecore.h>
+#include <gconf/gconf-client.h>
+
+//#define CHECK_THREAD
+//#define CHECK_AFTER_RUN
+
+GMainLoop *event_loop;
+
+void test_cb(keynode_t *key, void* data)
+{
+   printf("\x1b[105;37m[TEST]%s noti get\x1b[0m\n", vconf_keynode_get_name(key));
+   switch(vconf_keynode_get_type(key))
+   {
+      case VCONF_TYPE_INT:
+         printf("key = %s, value = %d(int)\n",
+               vconf_keynode_get_name(key), vconf_keynode_get_int(key));
+         break;
+      case VCONF_TYPE_BOOL:
+         printf("key = %s, value = %d(bool)\n",
+               vconf_keynode_get_name(key), vconf_keynode_get_bool(key));
+         break;
+      case VCONF_TYPE_DOUBLE:
+         printf("key = %s, value = %f(double)\n",
+               vconf_keynode_get_name(key), vconf_keynode_get_dbl(key));
+         break;
+      case VCONF_TYPE_STRING:
+         printf("key = %s, value = %s(string)\n",
+               vconf_keynode_get_name(key), vconf_keynode_get_str(key));
+         break;
+      default:
+         fprintf(stderr, "Unknown Type(%d)\n", vconf_keynode_get_type(key));
+         break;
+   }
+   //vconf_ignore_key_changed(vconf_keynode_get_name(key), test_cb);
+//   sleep(1);
+//   g_main_loop_quit(event_loop);
+   return;
+}
+
+
+#ifdef CHECK_THREAD
+#include <pthread.h>
+
+void *test_thread1(void *arg)
+{
+   if(!vconf_notify_key_changed((char *)arg, test_cb, NULL))
+      printf("%s added\n", (char *)arg);
+   return NULL;
+}
+#endif
+
+#ifdef CHECK_AFTER_RUN
+gboolean timeout_handler(gpointer data)
+{
+   char *key = data;
+   if(!vconf_notify_key_changed(key, test_cb, NULL))
+      printf("%s added\n", key);
+   return FALSE;
+}
+#endif
+
+int main(int argc, char **argv)
+{
+   int i;
+//   char temp[100]="/opt/var/kdb/";
+
+   g_type_init();
+   ecore_init();
+
+   event_loop = g_main_loop_new(NULL, FALSE);
+
+   for(i=1;i<argc;i++) {
+      if(argv[i]) {
+#ifdef CHECK_AFTER_RUN
+         g_timeout_add_seconds(3, (GSourceFunc)timeout_handler, argv[i]);
+#elif defined(CHECK_THREAD)
+         pthread_t test_thread;
+
+         pthread_create(&test_thread, NULL, test_thread1, argv[i]);
+         pthread_detach(test_thread);
+#else
+         vconf_notify_key_changed(argv[i], test_cb, NULL);
+#endif
+
+//      strcat(temp, argv[1]);
+//      open(temp, O_RDONLY);
+      }
+   }
+
+//   g_main_loop_run(event_loop);
+   ecore_main_loop_begin();
+
+   return 0;
+}
diff --git a/test/vconf_timecheck.c b/test/vconf_timecheck.c
new file mode 100644 (file)
index 0000000..20b12a7
--- /dev/null
@@ -0,0 +1,229 @@
+/*
+ * vconf
+ *
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Contact: Hakjoo ko <hakjoo.ko@samsung.com>
+ *
+ * This library is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Lesser General Public License as published by the
+ * Free Software Foundation; either version 2.1 of the License, or (at your option)
+ * any later version.
+ * 
+ * This library is distributed in the hope that it will be useful, but WITHOUT ANY
+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+ * License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; if not, write to the Free Software Foundation, Inc., 51
+ * Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ */
+
+
+#include <stdio.h>
+#include <vconf.h>
+#include <Ecore.h>
+#include <gconf/gconf-client.h>
+
+const char *vconfkeys[5][4]={
+   {"db/timetest/key1", "db/timetest/key2", "db/timetest/key3", "db/timetest/key4"},
+   {"file/timetest/key1", "file/timetest/key2", "file/timetest/key3", "file/timetest/key4"},
+   {"memory/timetest/key1", "memory/timetest/key2", "memory/timetest/key3", "memory/timetest/key4"},
+   {"gconf_l/timetest/key1", "gconf_l/timetest/key2", "gconf_l/timetest/key3", "gconf_l/timetest/key4"},
+   {"gconf_d/timetest/key1", "gconf_d/timetest/key2", "gconf_d/timetest/key3", "gconf_d/timetest/key4"}
+};
+
+void test_cb(void* data)
+{
+   struct timeval tv;
+
+   gettimeofday(&tv, NULL);
+   printf("\x1b[105;37m[VConf]\x1b[0m %d.%6d\n",(int)tv.tv_sec, (int)tv.tv_usec);
+   printf("\x1b[105;37m[VConf](%s)noti get\x1b[0m\n", (char *)data);
+
+   return;
+}
+
+void test_cb2(keynode_t *key, void* data)
+{
+   struct timeval tv;
+
+   gettimeofday(&tv, NULL);
+   printf("\x1b[105;37m[VConf]\x1b[0m %d.%6d\n",(int)tv.tv_sec, (int)tv.tv_usec);
+   printf("\x1b[105;37m[VConf]test_cb2 noti get\x1b[0m\n");
+
+   switch(vconf_keynode_get_type(key))
+   {
+      case VCONF_TYPE_INT:
+         printf("key = %s, value = %d(int)\n",
+               vconf_keynode_get_name(key), vconf_keynode_get_int(key));
+         break;
+      case VCONF_TYPE_BOOL:
+         printf("key = %s, value = %d(bool)\n",
+               vconf_keynode_get_name(key), vconf_keynode_get_bool(key));
+         break;
+      case VCONF_TYPE_DOUBLE:
+         printf("key = %s, value = %f(double)\n",
+               vconf_keynode_get_name(key), vconf_keynode_get_dbl(key));
+         break;
+      case VCONF_TYPE_STRING:
+         printf("key = %s, value = %s(string)\n",
+               vconf_keynode_get_name(key), vconf_keynode_get_str(key));
+         break;
+      default:
+         fprintf(stderr, "Unknown Type(%d)\n", vconf_keynode_get_type(key));
+         break;
+   }
+//   vconf_del_changed_cb2(vconf_keynode_get_name(key), test_cb2);
+   return;
+}
+
+void set_operation(int i)
+{
+   keylist_t *kl=NULL;
+
+   vconf_set_int(vconfkeys[i][0], 1);
+   vconf_set_dbl(vconfkeys[i][1], 0.1);
+   vconf_set_bool(vconfkeys[i][2], 1);
+   vconf_set_str(vconfkeys[i][3], "this is time test");
+
+   kl = vconf_keylist_new();
+   vconf_keylist_add_dbl(kl, vconfkeys[i][0], 0.2);
+   vconf_keylist_add_bool(kl, vconfkeys[i][1], 0);
+   vconf_keylist_add_str(kl, vconfkeys[i][2], "this is time test");
+   vconf_keylist_add_int(kl, vconfkeys[i][3], 2);
+   vconf_set(kl);
+   vconf_keylist_free(kl);
+}
+
+
+void get_operation(int i, const char* parent_dir)
+{
+   keylist_t *kl=NULL;
+   keynode_t *temp_node;
+   int get_int;
+   double get_dbl;
+   char *get_str;
+
+   vconf_get_dbl(vconfkeys[i][0], &get_dbl);
+   vconf_get_bool(vconfkeys[i][1], &get_int);
+   get_str=vconf_get_str(vconfkeys[i][2]);
+   free(get_str);
+   vconf_get_int(vconfkeys[i][3], &get_int);
+
+   kl = vconf_keylist_new();
+   vconf_get(kl, parent_dir, 0);
+   while((temp_node = vconf_keylist_nextnode(kl))) {
+      switch(vconf_keynode_get_type(temp_node)) {
+         case VCONF_TYPE_INT:
+            printf("key = %s, value = %d\n",
+                  vconf_keynode_get_name(temp_node), vconf_keynode_get_int(temp_node));
+            break;
+         case VCONF_TYPE_BOOL:
+            printf("key = %s, value = %d\n",
+                  vconf_keynode_get_name(temp_node), vconf_keynode_get_bool(temp_node));
+            break;
+         case VCONF_TYPE_DOUBLE:
+            printf("key = %s, value = %f\n",
+                  vconf_keynode_get_name(temp_node), vconf_keynode_get_dbl(temp_node));
+            break;
+         case VCONF_TYPE_STRING:
+            printf("key = %s, value = %s\n",
+                  vconf_keynode_get_name(temp_node), vconf_keynode_get_str(temp_node));
+            break;
+         default:
+            printf("Unknown Type\n");
+      }
+   }
+   vconf_keylist_free(kl);
+}
+
+void unset_operation(int i)
+{
+   vconf_unset(vconfkeys[i][0]);
+   vconf_unset(vconfkeys[i][1]);
+   vconf_unset(vconfkeys[i][2]);
+   vconf_unset(vconfkeys[i][3]);
+}
+
+
+
+int main(int argc, char **argv)
+{
+   int operation;
+
+   g_type_init();
+   ecore_init();
+   if(argc < 2) {
+      fprintf(stderr, "1:set(db), 2:set(file), 3:set(memory), 4:set(gconf_d), 5:set(gconf_l) \n");
+      fprintf(stderr, "6:get(db), 7:get(file), 8:get(memory), 9:get(gconf_d), 10:get(gconf_l) \n");
+      fprintf(stderr, "11:unset(db), 12:unset(file), 13:unset(memory), 14:unset(gconf_d), 15:unset(gconf_l) \n");
+      return -1;
+   }
+
+   operation = atoi(argv[1]);
+   switch(operation)
+   {
+      case 1:
+         set_operation(0);
+         break;
+      case 2:
+         set_operation(1);
+         break;
+      case 3:
+         set_operation(2);
+         break;
+      case 4:
+         set_operation(3);
+         break;
+      case 5:
+         set_operation(4);
+         break;
+      case 6:
+         get_operation(0, "db/timetest");
+         break;
+      case 7:
+         get_operation(1, "file/timetest");
+         break;
+      case 8:
+         get_operation(2, "memory/timetest");
+         break;
+      case 9:
+         get_operation(3, "gconf_l/timetest");
+         break;
+      case 10:
+         get_operation(4, "gconf_d/timetest");
+         break;
+      case 11:
+         unset_operation(0);
+         break;
+      case 12:
+         unset_operation(1);
+         break;
+      case 13:
+         unset_operation(2);
+         break;
+      case 14:
+         unset_operation(3);
+         break;
+      case 15:
+         unset_operation(4);
+         break;
+      case 16:
+         vconf_notify_key_changed(vconfkeys[0][1], test_cb2, NULL);
+         vconf_notify_key_changed(vconfkeys[1][1], test_cb2, NULL);
+         vconf_notify_key_changed(vconfkeys[2][1], test_cb2, NULL);
+         vconf_notify_key_changed(vconfkeys[3][1], test_cb2, NULL);
+         vconf_notify_key_changed(vconfkeys[4][1], test_cb2, NULL);
+
+         //ecore_main_loop_begin();
+         GMainLoop *event_loop;
+         event_loop = g_main_loop_new(NULL, FALSE);
+         g_main_loop_run(event_loop);
+         break;
+   }
+
+   return 0;
+}
diff --git a/test/vconf_unit_test.c b/test/vconf_unit_test.c
new file mode 100644 (file)
index 0000000..736c351
--- /dev/null
@@ -0,0 +1,283 @@
+/*
+ * vconf
+ *
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Contact: Hakjoo ko <hakjoo.ko@samsung.com>
+ *
+ * This library is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Lesser General Public License as published by the
+ * Free Software Foundation; either version 2.1 of the License, or (at your option)
+ * any later version.
+ * 
+ * This library is distributed in the hope that it will be useful, but WITHOUT ANY
+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+ * License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; if not, write to the Free Software Foundation, Inc., 51
+ * Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ */
+
+#include <stdio.h>
+#include <vconf.h>
+#include <Ecore.h>
+#include <gconf/gconf-client.h>
+#include <dirent.h>
+
+const char *vconfkeys[5][5]={
+   {"db", "db/unittest/key1", "db/unittest/key2", "db/unittest/key3", "db/unittest/key4"},
+   {"file", "file/unittest/key1", "file/unittest/key2", "file/unittest/key3", "file/unittest/key4"},
+   {"memory", "memory/unittest/key1", "memory/unittest/key2", "memory/unittest/key3", "memory/unittest/key4"},
+   {"gconf_l", "gconf_l/unittest/key1", "gconf_l/unittest/key2", "gconf_l/unittest/key3", "gconf_l/unittest/key4"},
+   {"gconf_d", "gconf_d/unittest/key1", "gconf_d/unittest/key2", "gconf_d/unittest/key3", "gconf_d/unittest/key4"}
+};
+
+#define EPRINT(FMT, ARG...) \
+   fprintf(stderr, "\x1b[31m[VConf Unit Test]\x1b[0m" FMT "\n", ##ARG)
+
+#define PRINT(FMT, ARG...) \
+   fprintf(stdout, "\x1b[33m[VConf Unit Test]\x1b[0m" FMT "\n", ##ARG)
+
+static GMainLoop *event_loop;
+
+void test_cb(keynode_t *key, void* data)
+{
+   switch(vconf_keynode_get_type(key))
+   {
+      case VCONF_TYPE_INT:
+         printf("key = %s, value = %d(int)\n",
+               vconf_keynode_get_name(key), vconf_keynode_get_int(key));
+         break;
+      case VCONF_TYPE_BOOL:
+         printf("key = %s, value = %d(bool)\n",
+               vconf_keynode_get_name(key), vconf_keynode_get_bool(key));
+         break;
+      case VCONF_TYPE_DOUBLE:
+         printf("key = %s, value = %f(double)\n",
+               vconf_keynode_get_name(key), vconf_keynode_get_dbl(key));
+         break;
+      case VCONF_TYPE_STRING:
+         printf("key = %s, value = %s(string)\n",
+               vconf_keynode_get_name(key), vconf_keynode_get_str(key));
+         break;
+      case VCONF_TYPE_NONE:
+         printf("key = %s, deleted\n", vconf_keynode_get_name(key));
+         if(data == (void *)vconfkeys[4][0]) g_main_loop_quit(event_loop);
+         break;
+      default:
+         fprintf(stderr, "Unknown Type(%d)\n", vconf_keynode_get_type(key));
+         break;
+   }
+
+   PRINT("%s Notification OK", (char *)data);
+   return;
+}
+
+void set_operation(int i)
+{
+   keylist_t *kl=NULL;
+
+   if(vconf_set_int(vconfkeys[i][1], 1))
+      EPRINT("vconf_set_int FAIL(%s)", vconfkeys[i][0]);
+   else
+      PRINT("vconf_set_int OK(%s)", vconfkeys[i][0]);
+      
+   if(vconf_set_dbl(vconfkeys[i][2], 0.1))
+      EPRINT("vconf_set_dbl FAIL(%s)", vconfkeys[i][0]);
+   else
+      PRINT("vconf_set_dbl OK(%s)", vconfkeys[i][0]);
+
+   if(vconf_set_bool(vconfkeys[i][3], 1))
+      EPRINT("vconf_set_bool FAIL(%s)", vconfkeys[i][0]);
+   else
+      PRINT("vconf_set_bool OK(%s)", vconfkeys[i][0]);
+
+   if(vconf_set_str(vconfkeys[i][4], "This is UNIT test"))
+      EPRINT("vconf_set_str FAIL(%s)", vconfkeys[i][0]);
+   else
+      PRINT("vconf_set_str OK(%s)", vconfkeys[i][0]);
+
+   kl = vconf_keylist_new();
+   vconf_keylist_add_dbl(kl, vconfkeys[i][1], 0.2);
+   vconf_keylist_add_bool(kl, vconfkeys[i][2], 0);
+   vconf_keylist_add_str(kl, vconfkeys[i][3], "This is UNIT test");
+   vconf_keylist_add_int(kl, vconfkeys[i][4], 2);
+   if(vconf_set(kl))
+      EPRINT("vconf_set FAIL(%s)", vconfkeys[i][0]);
+   else
+      PRINT("vconf_set OK(%s)", vconfkeys[i][0]);
+   vconf_keylist_free(kl);
+
+}
+
+
+void get_operation(int i, const char* parent_dir)
+{
+   keylist_t *kl=NULL;
+   keynode_t *temp_node;
+   int get_int;
+   double get_dbl;
+   char *get_str;
+
+   if(vconf_get_dbl(vconfkeys[i][1], &get_dbl) || get_dbl != 0.2)
+      EPRINT("vconf_get_dbl FAIL(%s)", vconfkeys[i][0]);
+   else
+      PRINT("vconf_get_dbl OK(%s)", vconfkeys[i][0]);
+
+   if(vconf_get_bool(vconfkeys[i][2], &get_int) || get_int != 0)
+      EPRINT("vconf_get_bool FAIL(%s)", vconfkeys[i][0]);
+   else
+      PRINT("vconf_get_bool OK(%s)", vconfkeys[i][0]);
+
+   get_str=vconf_get_str(vconfkeys[i][3]);
+   if(get_str && !strcmp(get_str, "This is UNIT test"))
+      PRINT("vconf_get_str OK(%s)", vconfkeys[i][0]);
+   else
+      EPRINT("vconf_get_str FAIL(%s)", vconfkeys[i][0]);
+   if(get_str) free(get_str);
+
+   if(vconf_get_int(vconfkeys[i][4], &get_int) || get_int != 2)
+      EPRINT("vconf_get_int FAIL(%s)", vconfkeys[i][0]);
+   else
+      PRINT("vconf_get_int OK(%s)", vconfkeys[i][0]);
+
+   kl = vconf_keylist_new();
+   if(vconf_get(kl, parent_dir, 0))
+      EPRINT("vconf_get FAIL(%s)", vconfkeys[i][0]);
+   else
+      PRINT("vconf_get OK(%s)", vconfkeys[i][0]);
+
+   while((temp_node = vconf_keylist_nextnode(kl))) {
+      switch(vconf_keynode_get_type(temp_node)) {
+         case VCONF_TYPE_INT:
+            printf("key = %s, value = %d\n",
+                  vconf_keynode_get_name(temp_node), vconf_keynode_get_int(temp_node));
+            break;
+         case VCONF_TYPE_BOOL:
+            printf("key = %s, value = %d\n",
+                  vconf_keynode_get_name(temp_node), vconf_keynode_get_bool(temp_node));
+            break;
+         case VCONF_TYPE_DOUBLE:
+            printf("key = %s, value = %f\n",
+                  vconf_keynode_get_name(temp_node), vconf_keynode_get_dbl(temp_node));
+            break;
+         case VCONF_TYPE_STRING:
+            printf("key = %s, value = %s\n",
+                  vconf_keynode_get_name(temp_node), vconf_keynode_get_str(temp_node));
+            break;
+         default:
+            printf("Unknown Type\n");
+      }
+   }
+   vconf_keylist_free(kl);
+}
+
+void unset_operation(int i)
+{
+   if(vconf_unset(vconfkeys[i][1]))
+      EPRINT("vconf_unset FAIL(%s)", vconfkeys[i][0]);
+   else
+      PRINT("vconf_unset OK(%s)", vconfkeys[i][0]);
+   if(vconf_unset(vconfkeys[i][2]))
+      EPRINT("vconf_unset FAIL(%s)", vconfkeys[i][0]);
+   else
+      PRINT("vconf_unset OK(%s)", vconfkeys[i][0]);
+   if(vconf_unset(vconfkeys[i][3]))
+      EPRINT("vconf_unset FAIL(%s)", vconfkeys[i][0]);
+   else
+      PRINT("vconf_unset OK(%s)", vconfkeys[i][0]);
+   if(vconf_unset(vconfkeys[i][4]))
+      EPRINT("vconf_unset FAIL(%s)", vconfkeys[i][0]);
+   else
+      PRINT("vconf_unset OK(%s)", vconfkeys[i][0]);
+}
+
+const char *test_dir[5]={
+   "/opt/var/kdb/db/unittest", "/opt/var/kdb/file/unittest", "/var/run/memory/unittest",
+   "/opt/var/gconf/local/unittest", "/opt/var/gconf/unittest"};
+
+void recursive_unset_operation(void)
+{
+   char parent[1024];
+   int i,j;
+   for(i=0;i<5;i++) {
+      for(j=1;j<5;j++)
+         vconf_set_int(vconfkeys[i][j],1);
+
+      sprintf(parent, "%s/unittest", vconfkeys[i][0]);
+      if(vconf_unset_recursive(parent))
+         EPRINT("vconf_unset_recursive FAIL(%s)", parent);
+      else {
+         if(opendir(test_dir[i]))
+            EPRINT("vconf_unset_recursive FAIL(%s)", parent);
+         else
+            PRINT("vconf_unset_recursive OK(%s)", parent);
+      }
+   }
+}
+
+void notify_operation(int i)
+{
+   int j;
+   for(j=1;j<5;j++)
+   {
+      if(vconf_notify_key_changed(vconfkeys[i][j], test_cb, (void *)vconfkeys[i][0])) {
+         if(3==i)
+            PRINT("vconf_notify_key_changed OK(%s)", vconfkeys[i][j]);
+         else
+            EPRINT("vconf_notify_key_changed FAIL(%s)", vconfkeys[i][j]);
+      }else {
+         if(3==i)
+            EPRINT("vconf_notify_key_changed FAIL(%s)", vconfkeys[i][j]);
+         else               
+            PRINT("vconf_notify_key_changed OK(%s)", vconfkeys[i][j]);
+      }
+   }
+}
+   
+int main(int argc, char **argv)
+{
+   g_type_init();
+
+   set_operation(0);
+   set_operation(1);
+   set_operation(2);
+   set_operation(3);
+   set_operation(4);
+   get_operation(0, "db/unittest");
+   get_operation(1, "file/unittest");
+   get_operation(2, "memory/unittest");
+   get_operation(3, "gconf_l/unittest");
+   get_operation(4, "gconf_d/unittest");
+   unset_operation(0);
+   unset_operation(1);
+   unset_operation(2);
+   unset_operation(3);
+   unset_operation(4);
+   recursive_unset_operation();
+   notify_operation(0);
+   notify_operation(1);
+   notify_operation(2);
+   notify_operation(3);
+   notify_operation(4);
+   printf("For Notification TEST, You have to excute below command\n");
+   printf("vconftool set -t int db/unittest/key1 1\n");
+   printf("vconftool set -t int file/unittest/key2 1\n");
+   printf("vconftool set -t int memory/unittest/key3 1\n");
+   printf("vconftool set -t int gconf_d/unittest/key4 1\n");
+   printf("vconftool unset db/unittest/key1\n");
+   printf("vconftool unset file/unittest/key2\n");
+   printf("vconftool unset memory/unittest/key3\n");
+   printf("vconftool unset gconf_d/unittest/key4\n");
+
+   //ecore_main_loop_begin();
+   event_loop = g_main_loop_new(NULL, FALSE);
+   g_main_loop_run(event_loop);
+
+   EPRINT("Did you get 8 Notifications\n");
+
+   return 0;
+}
index 37f73f64e80b621d7000cbdf5fd9d02ba384085c..f60adda36e4515db57f65ce9352f7bcd417d6152 100755 (executable)
@@ -5,4 +5,5 @@ chmod 777 /var/run/memory
 
 # Copy initialized memory backend key
 cp /opt/var/kdb/memory_init/memory/* /var/run/memory -r -p
-sync
+
+touch /tmp/vconf-initialized
\ No newline at end of file
index 7ed30498d0e04bbed049d1f70877d9970c3c3192..fa895f816ab83434e87a08f2cf290b8b579fda5d 100755 (executable)
 
 #define INOTY_EVENT_MASK   (IN_CLOSE_WRITE | IN_DELETE_SELF)
 
-__thread KDB *g_kdb_handle;
-
-int _vconf_set_empty(const char *key)
-{
-       Key *k;
-
-       retvm_if(key == NULL, -1, "Invalid argument: key is NULL");
-
-       KDB_OPEN_HANDLE;
-       retvm_if(g_kdb_handle == NULL, -1, "kdbOpen() failed");
-
-       k = keyNew(key, KEY_MODE, 0666, KEY_END);
-       if (k == NULL) {
-               ERR("kdbNew() failed");
-               return -1;
-       }
-
-       if (kdbSetKey(g_kdb_handle, k) == -1) {
-               ERR("kdbSetKey() failed");
-               keyDel(k);
-               return -1;
-       }
-
-       keyDel(k);
-       return 0;
-}
-
-Key *_vconf_kdb_get(const char *key)
-{
-       Key *k;
-       int ret = 0;
-
-       k = keyNew(key, KEY_END);
-       if (k == NULL) {
-               ERR("kdbNew() failed");
-               return NULL;
-       }
-
-       if (ret = kdbGetKey(g_kdb_handle, k) < 0) {
-               char err_buf[100] = { 0, };
-               strerror_r(errno, err_buf, 100);
-               ERR(" kdbGetKey(%s) failed(%s), %d", key, err_buf, ret);
-               keyDel(k);
-               return NULL;
-       }
-       return k;
-}
-
 /* inotify */
-
 struct noti_node {
        int wd;
-       int backend;
        char *keyname;
        vconf_callback_fn cb;
        void *cb_data;
@@ -95,7 +45,7 @@ struct noti_node {
 typedef struct noti_node notilist;
 static GList *g_notilist;
 
-static int inoti_comp_with_wd(gconstpointer a, gconstpointer b)
+static int _vconf_inoti_comp_with_wd(gconstpointer a, gconstpointer b)
 {
        int r;
 
@@ -106,7 +56,7 @@ static int inoti_comp_with_wd(gconstpointer a, gconstpointer b)
        return r;
 }
 
-static int inoti_comp_with_wd_cb(gconstpointer a, gconstpointer b)
+static int _vconf_inoti_comp_with_wd_cb(gconstpointer a, gconstpointer b)
 {
        int r;
 
@@ -128,29 +78,27 @@ static pthread_mutex_t _kdb_g_ns_mutex = PTHREAD_MUTEX_INITIALIZER;
 
 static GSource *_kdb_handler;
 
-static gboolean _kdb_gio_cb(GIOChannel *src, GIOCondition cond, gpointer data)
+static gboolean _vconf_kdb_gio_cb(GIOChannel *src, GIOCondition cond, gpointer data)
 {
        int fd, r;
        struct inotify_event ie;
 
-       DBG("_kdb_gio_cb function start");
+       INFO("vconf noti function");
 
        fd = g_io_channel_unix_get_fd(src);
        r = read(fd, &ie, sizeof(ie));
 
        while (r > 0) {
-
                INFO("read event from GIOChannel. pid : %d", getpid());
-               
+
                if (g_notilist) {
-                       
-                       struct noti_node *t, *excuted_t = NULL;                 
-                       keynode_t temp_node;
-                       Key *k;
-                       GList *noti_list;
-
-                       retvm_if(!(ie.mask & INOTY_EVENT_MASK),
-                                TRUE, "Invalid argument: ie.mask(%d), ie.len(%d)",
+
+                       struct noti_node *t = NULL;
+                       GList *noti_list = NULL;
+                       keynode_t* keynode = NULL;
+
+                       retvm_if(!(ie.mask & INOTY_EVENT_MASK), TRUE,
+                               "Invalid argument: ie.mask(%d), ie.len(%d)",
                                 ie.mask, ie.len);
 
                        /* pthread_mutex_lock(&_kdb_g_ns_mutex); */
@@ -158,160 +106,54 @@ static gboolean _kdb_gio_cb(GIOChannel *src, GIOCondition cond, gpointer data)
                        noti_list = g_list_first(g_notilist);
 
                        while (noti_list) {
-
                                t = noti_list->data;
 
+                               keynode_t* keynode = _vconf_keynode_new();
+                               retvm_if(keynode == NULL, TRUE, "key malloc fail");
+
                                if( (t) && (t->wd == ie.wd) ) {
-                                       temp_node.keyname = t->keyname;
-                                       k = NULL;
-
-                                       if (!(ie.mask & IN_DELETE_SELF)) {
-                                               KDB_OPEN_HANDLE;
-                                               if (g_kdb_handle == NULL) {
-                                                       ERR("kdbOpen() failed");
-                                                       /* pthread_mutex_unlock
-                                                           (&_kdb_g_ns_mutex); */
-                                                       return TRUE;
-                                               }
-                                               k = _vconf_kdb_get(t->keyname);
+                                       if ((ie.mask & IN_DELETE_SELF)) {
+                                               INFO("Notify that key(%s) is deleted", t->keyname);
+                                               _vconf_keynode_set_keyname(keynode, (const char *)t->keyname);
+                                               _vconf_keynode_set_null(keynode);
+                                               t->cb(keynode, t->cb_data);
+                                               _vconf_kdb_del_notify(t->keyname, t->cb);
+                                       } else {
+                                               _vconf_keynode_set_keyname(keynode, t->keyname);
+                                               _vconf_get_key(keynode);
+                                               t->cb(keynode, t->cb_data);
                                        }
+                               }
+
+                               _vconf_keynode_free(keynode);
 
-                                       if (NULL == k)
-                                               temp_node.type =
-                                                   VCONF_TYPE_NONE;
-                                       else
-                                               temp_node.type =
-                                                   keyGetType(k);
-                                       
-                                       switch (temp_node.type) {
-                                       case VCONF_TYPE_INT:
-                                               temp_node.value.i =
-                                                   atoi(keyValue(k));
-                                               INFO
-                                               ("Notify that key(%s) is %d / %d",
-                                                    temp_node.keyname,
-                                                    temp_node.value.i,
-                                                    getpid());
-                                               break;
-                                       case VCONF_TYPE_DOUBLE:
-                                               temp_node.value.d =
-                                                   atof(keyValue(k));
-                                               INFO
-                                               ("Notify that key(%s) is %f / %d",
-                                                    temp_node.keyname,
-                                                    temp_node.value.d,
-                                                    getpid());
-                                               break;
-                                       case VCONF_TYPE_BOOL:
-                                               temp_node.value.b =
-                                                   !!atoi(keyValue(k));
-                                               INFO
-                                               ("Notify that key(%s) is %d / %d",
-                                                    temp_node.keyname,
-                                                    temp_node.value.b,
-                                                    getpid());
-                                               break;
-                                       case VCONF_TYPE_STRING:
-                                               temp_node.value.s =
-                                                   (char *)keyValue(k);
-                                               INFO
-                                               ("Notify that key(%s) is %s / %d",
-                                                    temp_node.keyname,
-                                                    temp_node.value.s,
-                                                    getpid());
-                                               break;
-                                       default:
-                                               temp_node.value.s =
-                                                   NULL;
-                                               INFO
-                                               ("Notify that key(%s) is deleted",
-                                                   temp_node.keyname);
-                                       }
-                                       t->cb(&temp_node, t->cb_data);
-                                       excuted_t = t;
-                           }
-                               
                                noti_list = g_list_next(noti_list);
                        }
-                       /* pthread_mutex_unlock(&_kdb_g_ns_mutex); */
-
-                       if ((ie.mask & IN_DELETE_SELF) && excuted_t)
-                               _vconf_kdb_del_notify(excuted_t->backend,
-                                                     excuted_t->keyname, NULL);
                }
 
                if (ie.len > 0)
-                       /*read(fd, name, ie.len);*/
                        lseek(fd, ie.len, SEEK_CUR);
 
                r = read(fd, &ie, sizeof(ie));
        }
-
        return TRUE;
 }
 
-#ifdef KER_VER_CHECK
-#include <sys/utsname.h>
-#define PROC_VERSION "/proc/version"
-
-static int kern_ver;           /* Kernel version */
-
-static int get_kernel_ver()
-{
-       struct utsname nm;
-       int ret, fd;
-       char buf[1024];
-       int v1, v2, v3;
-
-       retv_if(kern_ver != 0, kern_ver);
-
-       ret = uname(&nm);
-       if (ret == 0) {
-               strcpy(buf, nm.release);
-
-               ret = sscanf(buf, "%d.%d.%d", &v1, &v2, &v3);
-       } else {
-               fd = open(PROC_VERSION, O_RDONLY);
-               retvm_if(fd == -1, -1, "File open error: %s", strerror(errno));
-
-               memset(buf, 0x0, sizeof(buf));
-               ret = read(fd, buf, sizeof(buf));
-               close(fd);
-
-               ret = sscanf(buf, "Linux version %d.%d.%d", &v1, &v2, &v3);
-       }
-
-       if (ret == 3) {
-               kern_ver = KERNEL_VERSION(v1, v2, v3);
-               return kern_ver;
-       }
-
-       return -1;
-}
-#endif
-
 static int _vconf_kdb_noti_init(void)
 {
        GIOChannel *gio;
 
        pthread_mutex_lock(&_kdb_inoti_fd_mutex);
 
-       retex_if(0 < _kdb_inoti_fd, "Error : invalid _kdb_inoti_fd");
-
-#ifdef KER_VER_CHECK
-       if (get_kernel_ver() < KERNEL_VERSION(2, 6, 13)) {
-               ERR("inotify requires kernel version >= 2.6.13 ");
-               errno = EPERM;
-               goto CATCH;
-       }
-#endif
+       retm_if(0 < _kdb_inoti_fd, "Error : invalid _kdb_inoti_fd");
 
        _kdb_inoti_fd = inotify_init();
        if (_kdb_inoti_fd == -1) {
                char err_buf[100] = { 0, };
                strerror_r(errno, err_buf, sizeof(err_buf));
                ERR("inotify init: %s", err_buf);
-               goto CATCH;
+               pthread_mutex_unlock(&_kdb_inoti_fd_mutex);
+               return VCONF_ERROR;
        }
 
        fcntl(_kdb_inoti_fd, F_SETFD, FD_CLOEXEC);
@@ -325,58 +167,40 @@ static int _vconf_kdb_noti_init(void)
        g_io_channel_set_flags(gio, G_IO_FLAG_NONBLOCK, NULL);
 
        _kdb_handler = g_io_create_watch(gio, G_IO_IN);
-       g_source_set_callback(_kdb_handler, (GSourceFunc) _kdb_gio_cb, NULL,
-                             NULL);
+       g_source_set_callback(_kdb_handler, (GSourceFunc) _vconf_kdb_gio_cb, NULL, NULL);
        g_source_attach(_kdb_handler, NULL);
        g_io_channel_unref(gio);
        g_source_unref(_kdb_handler);
 
-       return 0;
-
- CATCH:
-
-       pthread_mutex_unlock(&_kdb_inoti_fd_mutex);
-
-       return -1;
-
+       return VCONF_OK;
 }
 
 int
-_vconf_kdb_add_notify(int backend_type, const char *keyname,
-                     vconf_callback_fn cb, void *data)
+_vconf_kdb_add_notify(const char *keyname, vconf_callback_fn cb, void *data)
 {
-       char path[PATH_MAX];
+       char path[KEY_PATH];
        int wd, r;
        struct noti_node t, *n;
-       char err_buf[100] = { 0, };
+       char err_buf[ERR_LEN] = { 0, };
        int ret = 0;
        GList *list = NULL;
+       int func_ret = VCONF_OK;
 
-       retvm_if((keyname == NULL
-                 || cb == NULL), -1, "_vconf_kdb_add_notify : Invalid argument - keyname(%s) cb(%p)",
+       retvm_if((keyname == NULL || cb == NULL), VCONF_ERROR,
+               "_vconf_kdb_add_notify : Invalid argument - keyname(%s) cb(%p)",
                 keyname, cb);
 
        if (_kdb_inoti_fd <= 0)
                if (_vconf_kdb_noti_init())
-                       return -1;
-
-       if (VCONF_BACKEND_DB == backend_type)
-               snprintf(path, PATH_MAX, "%s/%s", KDB_USER_DIR, keyname);
-       else if (VCONF_BACKEND_FILE == backend_type)
-               snprintf(path, PATH_MAX, "%s/%s", KDB_SYSTEM_DIR, keyname);
-       else if (VCONF_BACKEND_MEMORY == backend_type)
-               snprintf(path, PATH_MAX, "%s/%s", KDB_MEMORY_DIR, keyname);
-       else {
-               ERR("_vconf_kdb_add_notify : Invalid argument - wrong prefix(%d) of key", backend_type);
-               return -1;
-       }
+                       return VCONF_ERROR;
+
+       ret = _vconf_get_key_path((char*)keyname, path);
+       retvm_if(ret != VCONF_OK, VCONF_ERROR, "Invalid argument: key is not valid");
 
        if (0 != access(path, F_OK)) {
                if (errno == ENOENT) {
                        ERR("_vconf_kdb_add_notify : Key(%s) does not exist", keyname);
-                       return -1;
-                       /* No key creation on adding a callback */
-                       /*_vconf_set_empty(keyname);*/
+                       return VCONF_ERROR;
                }
        }
 
@@ -384,33 +208,31 @@ _vconf_kdb_add_notify(int backend_type, const char *keyname,
        if (wd == -1) {
                strerror_r(errno, err_buf, sizeof(err_buf));
                ERR("_vconf_kdb_add_notify : add noti(%s)", err_buf);
-               return -1;
+               return VCONF_ERROR;
        }
 
        t.wd = wd;
        t.cb = cb;
 
        pthread_mutex_lock(&_kdb_g_ns_mutex);
-       
-       list = g_list_find_custom(g_notilist, &t, (GCompareFunc)inoti_comp_with_wd_cb);
+
+       list = g_list_find_custom(g_notilist, &t, (GCompareFunc)_vconf_inoti_comp_with_wd_cb);
        if (list) {
                ERR("_vconf_kdb_add_notify : key(%s) has same callback(%p)", keyname, cb);
                errno = EALREADY;
-               ret = -1;
+               func_ret = VCONF_ERROR;
                goto out_func;
        }
 
        n = calloc(1, sizeof(notilist));
        if (n == NULL) {
-               memset(err_buf, 0x00, sizeof(err_buf));
                strerror_r(errno, err_buf, sizeof(err_buf));
                ERR("_vconf_kdb_add_notify : add noti(%s)", err_buf);
-               ret = -1;
+               func_ret = VCONF_ERROR;
                goto out_func;
        }
 
        n->wd = wd;
-       n->backend = backend_type;
        n->keyname = strndup(keyname, BUF_LEN);
        n->cb_data = data;
        n->cb = cb;
@@ -425,85 +247,70 @@ _vconf_kdb_add_notify(int backend_type, const char *keyname,
 out_func:
        pthread_mutex_unlock(&_kdb_g_ns_mutex);
 
-       return ret;
+       return func_ret;
 }
 
 int
-_vconf_kdb_del_notify(int backend_type, const char *keyname,
-                     vconf_callback_fn cb)
+_vconf_kdb_del_notify(const char *keyname, vconf_callback_fn cb)
 {
        int wd = 0;
        int r = 0;
        struct noti_node *n = NULL;
        struct noti_node t;
-       char path[PATH_MAX] = { 0, };
+       char path[KEY_PATH] = { 0, };
+       char err_buf[ERR_LEN] = { 0, };
        int del = 0;
        int remain = 0;
        int ret = 0;
+       int func_ret = VCONF_OK;
        GList *noti_list;
 
-       retvm_if(keyname == NULL, -1, "Invalid argument: keyname(%s)", keyname);
-       retvm_if(_kdb_inoti_fd == 0, -1,
-                "Invalid operation: not exist anything for inotify");
-
-       if (VCONF_BACKEND_DB == backend_type)
-               snprintf(path, PATH_MAX, "%s/%s", KDB_USER_DIR, keyname);
-       else if (VCONF_BACKEND_FILE == backend_type)
-               snprintf(path, PATH_MAX, "%s/%s", KDB_SYSTEM_DIR, keyname);
-       else if (VCONF_BACKEND_MEMORY == backend_type)
-               snprintf(path, PATH_MAX, "%s/%s", KDB_MEMORY_DIR, keyname);
-       else {
-               ERR("Invalid argument: wrong prefix of key");
-               ret = -1;
-               goto out_func;
-       }
+       retvm_if(keyname == NULL, VCONF_ERROR, "Invalid argument: keyname(%s)", keyname);
+       retvm_if(_kdb_inoti_fd == 0, VCONF_ERROR, "Invalid operation: not exist anything for inotify");
+
+       ret = _vconf_get_key_path((char*)keyname, path);
+       retvm_if(ret != VCONF_OK, VCONF_ERROR, "Invalid argument: key is not valid");
 
        /* get wd */
        wd = inotify_add_watch(_kdb_inoti_fd, path, INOTY_EVENT_MASK);
        if (wd == -1) {
-               char err_buf[100] = { 0, };
                strerror_r(errno, err_buf, sizeof(err_buf));
-
                ERR("Error: inotify_add_watch() [%s]: %s", path, err_buf);
-               ret = -1;
-               goto out_func;
+               return VCONF_ERROR;
        }
 
        pthread_mutex_lock(&_kdb_g_ns_mutex);
 
        t.wd = wd;
        t.cb = cb;
-       
-       noti_list = g_list_find_custom(g_notilist, &t, (GCompareFunc)inoti_comp_with_wd_cb);
+
+       noti_list = g_list_find_custom(g_notilist, &t, (GCompareFunc)_vconf_inoti_comp_with_wd_cb);
        if(noti_list) {
                del++;
-               
+
                n = noti_list->data;
                g_notilist = g_list_remove(g_notilist, n);
                g_free(n->keyname);
                g_free(n);
 
-               INFO("key(%s) cb is removed. remained noti list total length(%d)", 
+               INFO("key(%s) cb is removed. remained noti list total length(%d)",
                        keyname, g_list_length(g_notilist));
        }
 
        noti_list = NULL;
-       noti_list = g_list_find_custom(g_notilist, &t, (GCompareFunc)inoti_comp_with_wd);
+       noti_list = g_list_find_custom(g_notilist, &t, (GCompareFunc)_vconf_inoti_comp_with_wd);
        if(noti_list == NULL) {
                INFO("all noti for keyname(%s)/wd(%d) is removed", keyname, wd);
 
                r = inotify_rm_watch(_kdb_inoti_fd, wd);
                if(r == -1) {
-                       char err_buf[100] = {0,};
                        strerror_r(errno, err_buf, sizeof(err_buf));
-         
                        ERR("Error: inotify_rm_watch [%s]: %s", keyname, err_buf);
-                       ret = -1;
+                       func_ret = VCONF_ERROR;
                }
        }
 
        if(g_list_length(g_notilist) == 0) {
-               
                close(_kdb_inoti_fd);
                _kdb_inoti_fd = 0;
 
@@ -513,17 +320,16 @@ _vconf_kdb_del_notify(int backend_type, const char *keyname,
                g_list_free(g_notilist);
                g_notilist = NULL;
 
-               INFO("all noti list is freed");         
-       }       
-       
+               INFO("all noti list is freed");
+       }
+
        pthread_mutex_unlock(&_kdb_g_ns_mutex);
 
        if(del == 0) {
                ERR("Error: nothing deleted");
                errno = ENOENT;
-               ret = -1;
+               func_ret = VCONF_ERROR;
        }
 
-out_func:
-       return ret;
+       return func_ret;
 }
diff --git a/vconf.c b/vconf.c
index edd1757dba240e897a814cc8d50b8629c2e09c2d..88708d6c69ad1a6c165e764a2ee0c23c1008c0a5 100755 (executable)
--- a/vconf.c
+++ b/vconf.c
  *
  */
 
-#define _GNU_SOURCE
-
 #include <stdlib.h>
 #include <limits.h>
 #include <string.h>
 #include <errno.h>
 #include <fcntl.h>
 #include "vconf-internals.h"
-
-extern __thread KDB *g_kdb_handle;
+#include <dirent.h>
+#include <sys/stat.h>
+#include <sys/xattr.h>
+#include <ctype.h>
 
 #ifndef API
 #define API __attribute__ ((visibility("default")))
 #endif
 
-#define MAX_ERROR_LOOP_CNT 3
-#define ERROR_LOOP_SLEEP_TIME 50000
+#define VCONF_ERROR_RETRY_CNT 10
+#define VCONF_ERROR_RETRY_SLEEP_UTIME 5000
+
+int IN_SBOX=0;
+
+#define VCONF_MOUNT_PATH "/opt/var/kdb/db"
+#define VCONF_MOUNT_PATH_CHECK \
+do{\
+       if(!IN_SBOX) \
+      IN_SBOX = access("/opt/var/kdb/kdb_first_boot", F_OK) + 2; \
+       if(2==IN_SBOX) return 0;\
+}while(0)
 
-/* #define ADDR_TRANS */
+__thread int is_transaction;
 
 #ifdef VCONF_TIMECHECK
 double correction, startT;
@@ -68,154 +78,104 @@ int init_time(void)
 }
 #endif
 
-static int keynode_set_keyname(keynode_t *keynode, const char *keyname)
+int _vconf_keynode_set_keyname(keynode_t *keynode, const char *keyname)
 {
-       if (keynode->keyname)
-               free(keynode->keyname);
+       if (keynode->keyname) free(keynode->keyname);
        keynode->keyname = strndup(keyname, BUF_LEN);
-       retvm_if(keynode->keyname == NULL, -1, "strndup Fails");
-       return 0;
+       retvm_if(keynode->keyname == NULL, VCONF_ERROR, "strndup Fails");
+       return VCONF_OK;
 }
 
-static inline void keynode_set_dir(keynode_t *keynode)
+static inline void _vconf_keynode_set_dir(keynode_t *keynode)
 {
        keynode->type = VCONF_TYPE_DIR;
 }
 
-static inline void keynode_set_value_int(keynode_t *keynode, const int value)
+static inline void _vconf_keynode_set_value_int(keynode_t *keynode, const int value)
 {
        keynode->type = VCONF_TYPE_INT;
        keynode->value.i = value;
 }
 
-static inline void keynode_set_value_bool(keynode_t *keynode, const int value)
+static inline void _vconf_keynode_set_value_bool(keynode_t *keynode, const int value)
 {
        keynode->type = VCONF_TYPE_BOOL;
        keynode->value.b = !!value;
 }
 
-static inline void keynode_set_value_dbl(keynode_t *keynode, const double value)
+static inline void _vconf_keynode_set_value_dbl(keynode_t *keynode, const double value)
 {
        keynode->type = VCONF_TYPE_DOUBLE;
        keynode->value.d = value;
 }
 
-static inline void keynode_set_value_str(keynode_t *keynode, const char *value)
+static inline void _vconf_keynode_set_value_str(keynode_t *keynode, const char *value)
 {
        keynode->type = VCONF_TYPE_STRING;
-       keynode->value.s = strndup(value, BUF_LEN);
+       keynode->value.s = strdup(value);
+}
+
+inline void _vconf_keynode_set_null(keynode_t *keynode)
+{
+       keynode->type = VCONF_TYPE_NONE;
+       //keynode->value.d = NULL;
 }
 
-static inline keynode_t *keynode_next(keynode_t *keynode)
+static inline keynode_t *_vconf_keynode_next(keynode_t *keynode)
 {
        return keynode->next;
 }
 
-static inline void keynode_free(keynode_t *keynode)
+inline keynode_t *_vconf_keynode_new(void)
 {
-       if (keynode->keyname)
-               free(keynode->keyname);
-       if (keynode->type == VCONF_TYPE_STRING && keynode->value.s)
-               free(keynode->value.s);
-       free(keynode);
+       keynode_t *keynode;
+       keynode = calloc(1, sizeof(keynode_t));
+
+       return keynode;
+}
+
+inline void _vconf_keynode_free(keynode_t *keynode)
+{
+       if(keynode) {
+               if (keynode->keyname)
+                       free(keynode->keyname);
+               if (keynode->type == VCONF_TYPE_STRING && keynode->value.s)
+                       free(keynode->value.s);
+               free(keynode);
+       }
 }
 
-static inline keynode_t *keylist_headnode(keylist_t *keylist)
+static inline keynode_t *_vconf_keylist_headnode(keylist_t *keylist)
 {
        return keylist->head;
 }
 
-static keynode_t *keylist_lookup(keylist_t *keylist, const char *keyname,
+static keynode_t *_vconf_keylist_lookup(keylist_t *keylist, const char *keyname,
                                 keynode_t **before_keynode)
 {
        keynode_t *found_node, *temp_node = NULL;
 
-       found_node = keylist->head;
+       found_node = _vconf_keylist_headnode(keylist);
+
        while (found_node) {
-               if (strlen(found_node->keyname) == strlen(keyname)) {
-                       if (!strncmp
-                           (keyname, found_node->keyname, strlen(keyname))) {
-                               if (before_keynode)
+               if(found_node->keyname == NULL) {
+                       ERR("key node has null keyname");
+                       return NULL;
+               }
+
+               if (!strncmp(keyname, found_node->keyname, strlen(keyname))) {
+                       if (before_keynode) {
                                        *before_keynode = temp_node;
-                               return found_node;
                        }
+                       return found_node;
                }
+
                temp_node = found_node;
-               found_node = keynode_next(found_node);
+               found_node = _vconf_keynode_next(found_node);
        }
        return NULL;
 }
 
-static int trans_keyname(const char *keyname, char **trans_name)
-{
-#ifdef ADDR_TRANS
-       char *_key;
-#endif
-       if (0 ==
-           strncmp(keyname, BACKEND_DB_PREFIX,
-                   sizeof(BACKEND_DB_PREFIX) - 1)) {
-               *trans_name = (char *)keyname;
-               return VCONF_BACKEND_DB;
-       } else if (0 ==
-                  strncmp(keyname, BACKEND_FILE_PREFIX,
-                          sizeof(BACKEND_FILE_PREFIX) - 1)) {
-               *trans_name = (char *)keyname;
-               return VCONF_BACKEND_FILE;
-       } else if (0 ==
-                  strncmp(keyname, BACKEND_MEMORY_PREFIX,
-                          sizeof(BACKEND_MEMORY_PREFIX) - 1)) {
-               *trans_name = (char *)keyname;
-               return VCONF_BACKEND_MEMORY;
-#ifdef ADDR_TRANS
-       } else if (0 ==
-                  strncmp(keyname, BACKEND_USER_PREFIX,
-                          sizeof(BACKEND_USER_PREFIX) - 1)) {
-               /*becasue string has additional character('\0') */
-               _key = malloc(strlen(keyname));
-               strcpy(_key, keyname + 2);
-               memcpy(_key, "db", 2);
-               *trans_name = _key;
-               return VCONF_BACKEND_DB;
-       } else if (0 ==
-                  strncmp(keyname, BACKEND_SYSTEM_PREFIX,
-                          sizeof(BACKEND_SYSTEM_PREFIX) - 1)) {
-               _key = malloc(strlen(keyname));
-               strcpy(_key, keyname + 2);
-               memcpy(_key, "file", 4);
-               *trans_name = _key;
-               return VCONF_BACKEND_FILE;
-#endif
-       } else {
-               ERR("Invalid argument: wrong prefix of key(%s)", keyname);
-               return VCONF_BACKEND_NULL;
-       }
-}
-
-static int check_connetion(int backend, void **gconf_handle)
-{
-       if (backend >= VCONF_BACKEND_DB) {
-               KDB_OPEN_HANDLE;
-               retvm_if(g_kdb_handle == NULL, -1, "kdbOpen() failed");
-       }
-       return 0;
-}
-
-static void _vconf_get_recursive(KeySet **ks, const char *key)
-{
-       KeySet *remove_ks = ksNew(0);
-       Key *k, *parentKey;
-
-       parentKey = keyNew(key, KEY_END);
-       kdbGet(g_kdb_handle, remove_ks, parentKey, KDB_O_NORECURSIVE);
-       keyDel(parentKey);
-       ksRewind(remove_ks);
-       while ((k = ksNext(remove_ks)) != 0)
-               if (keyIsDir(k))
-                       _vconf_get_recursive(ks, keyName(k));
-
-       ksAppend(*ks, remove_ks);
-}
-
 /*
  * This function get Key name of the keynode.
  * @param[in] keynode The Key
@@ -236,16 +196,16 @@ API char *vconf_keynode_get_name(keynode_t *keynode)
  */
 API int vconf_keynode_get_type(keynode_t *keynode)
 {
-       retvm_if(keynode == NULL, -1, "Invalid argument: keynode is NULL");
+       retvm_if(keynode == NULL, VCONF_ERROR, "Invalid argument: keynode is NULL");
 
        return keynode->type;
 }
 
 API int vconf_keynode_get_int(keynode_t *keynode)
 {
-       retvm_if(keynode == NULL, -1, "Invalid argument: keynode is NULL");
-       retvm_if(keynode->type != VCONF_TYPE_INT, -1,
-                "The type of keynode is not INT");
+       retvm_if(keynode == NULL, VCONF_ERROR, "Invalid argument: keynode is NULL");
+       retvm_if(keynode->type != VCONF_TYPE_INT, VCONF_ERROR,
+                "The type(%d) of keynode(%s) is not INT", keynode->type, keynode->keyname);
 
        return keynode->value.i;
 }
@@ -254,7 +214,7 @@ API double vconf_keynode_get_dbl(keynode_t *keynode)
 {
        retvm_if(keynode == NULL, -1.0, "Invalid argument: keynode is NULL");
        retvm_if(keynode->type != VCONF_TYPE_DOUBLE, -1.0,
-                "The type of keynode is not DBL");
+                "The type(%d) of keynode(%s) is not DBL", keynode->type, keynode->keyname);
 
        return keynode->value.d;
 }
@@ -266,9 +226,9 @@ API double vconf_keynode_get_dbl(keynode_t *keynode)
  */
 API int vconf_keynode_get_bool(keynode_t *keynode)
 {
-       retvm_if(keynode == NULL, -1, "Invalid argument: keynode is NULL");
-       retvm_if(keynode->type != VCONF_TYPE_BOOL, -1,
-                "The type of keynode is not BOOL");
+       retvm_if(keynode == NULL, VCONF_ERROR, "Invalid argument: keynode is NULL");
+       retvm_if(keynode->type != VCONF_TYPE_BOOL, VCONF_ERROR,
+                "The type(%d) of keynode(%s) is not BOOL", keynode->type, keynode->keyname);
 
        return !!(keynode->value.b);
 }
@@ -282,23 +242,11 @@ API char *vconf_keynode_get_str(keynode_t *keynode)
 {
        retvm_if(keynode == NULL, NULL, "Invalid argument: keynode is NULL");
        retvm_if(keynode->type != VCONF_TYPE_STRING, NULL,
-                "The type of keynode is not STR");
+               "The type(%d) of keynode(%s) is not STR", keynode->type, keynode->keyname);
 
        return keynode->value.s;
 }
 
-API char *vconf_keynode_steal_str(keynode_t *keynode)
-{
-       char *ret;
-       retvm_if(keynode == NULL, NULL, "Invalid argument: keynode is NULL");
-       retvm_if(keynode->type != VCONF_TYPE_STRING, NULL,
-                "The type of keynode is not STR");
-
-       ret = keynode->value.s;
-       keynode->value.s = NULL;
-       return ret;
-}
-
 /*
  * Allocate, initialize and return a new Keylist object.
  * @return The pointer of New keylist, NULL on error
@@ -318,7 +266,7 @@ API keylist_t *vconf_keylist_new(void)
  */
 API int vconf_keylist_rewind(keylist_t *keylist)
 {
-       retvm_if(keylist == NULL, -1, "Invalid argument: keylist is NULL");
+       retvm_if(keylist == NULL, VCONF_ERROR, "Invalid argument: keylist is NULL");
 
        keylist->cursor = NULL;
 
@@ -334,13 +282,13 @@ API int vconf_keylist_free(keylist_t *keylist)
 {
        keynode_t *keynode, *temp;
 
-       retvm_if(keylist == NULL, -1, "Invalid argument: keylist is NULL");
+       retvm_if(keylist == NULL, VCONF_ERROR, "Invalid argument: keylist is NULL");
 
        if (keylist->num) {
-               keynode = keylist_headnode(keylist);
+               keynode = _vconf_keylist_headnode(keylist);
                while (keynode) {
-                       temp = keynode_next(keynode);
-                       keynode_free(keynode);
+                       temp = _vconf_keynode_next(keynode);
+                       _vconf_keynode_free(keynode);
                        keynode = temp;
                }
        }
@@ -361,12 +309,11 @@ vconf_keylist_lookup(keylist_t *keylist,
 {
        keynode_t *found_node;
 
-       retvm_if(keylist == NULL, -1, "Invalid argument: keylist is NULL");
-       retvm_if(keyname == NULL, -1, "Invalid argument: keyname is NULL");
-       retvm_if(return_node == NULL, -1,
-                "Invalid argument: return_node is NULL");
+       retvm_if(keylist == NULL, VCONF_ERROR, "Invalid argument: keylist is NULL");
+       retvm_if(keyname == NULL, VCONF_ERROR, "Invalid argument: keyname is NULL");
+       retvm_if(return_node == NULL, VCONF_ERROR, "Invalid argument: return_node is NULL");
 
-       found_node = keylist_lookup(keylist, keyname, NULL);
+       found_node = _vconf_keylist_lookup(keylist, keyname, NULL);
        if (NULL == found_node)
                return 0;
 
@@ -386,42 +333,13 @@ API keynode_t *vconf_keylist_nextnode(keylist_t *keylist)
        retvm_if(keylist == NULL, NULL, "Invalid argument: keylist is NULL");
 
        if (keylist->cursor)
-               keylist->cursor = keynode_next(keylist->cursor);
+               keylist->cursor = _vconf_keynode_next(keylist->cursor);
        else
                keylist->cursor = keylist->head;
 
        return keylist->cursor;
 }
 
-static int _vconf_keylist_add_dir(keylist_t *keylist, const char *keyname)
-{
-       keynode_t *keynode, *addition;
-
-       retvm_if(keylist == NULL, -1, "Invalid argument: keylist is NULL");
-       retvm_if(keyname == NULL, -1, "Invalid argument: keyname is NULL");
-
-       if ((keynode = keylist_lookup(keylist, keyname, NULL))) {
-               keynode_set_dir(keynode);
-               return keylist->num;
-       }
-       if ((keynode = keylist_headnode(keylist)))
-               while (keynode_next(keynode))
-                       keynode = keynode_next(keynode);
-
-       addition = calloc(1, sizeof(keynode_t));
-       if (!keynode_set_keyname(addition, keyname)) {
-               keynode_set_dir(addition);
-               if (keylist->head && NULL != keynode)
-                       keynode->next = addition;
-               else
-                       keylist->head = addition;
-               keylist->num += 1;
-       } else
-               ERR("(maybe)not enought memory");
-
-       return keylist->num;
-}
-
 /*
  * This function appends a new Keynode included integer value to the keylist.
  * If same keyname exist, the keynode will change.
@@ -435,20 +353,20 @@ vconf_keylist_add_int(keylist_t *keylist, const char *keyname, const int value)
 {
        keynode_t *keynode, *addition;
 
-       retvm_if(keylist == NULL, -1, "Invalid argument: keylist is NULL");
-       retvm_if(keyname == NULL, -1, "Invalid argument: keyname is NULL");
+       retvm_if(keylist == NULL, VCONF_ERROR, "Invalid argument: keylist is NULL");
+       retvm_if(keyname == NULL, VCONF_ERROR, "Invalid argument: keyname is NULL");
 
-       if ((keynode = keylist_lookup(keylist, keyname, NULL))) {
-               keynode_set_value_int(keynode, value);
+       if ((keynode = _vconf_keylist_lookup(keylist, keyname, NULL))) {
+               _vconf_keynode_set_value_int(keynode, value);
                return keylist->num;
        }
-       if ((keynode = keylist_headnode(keylist)))
-               while (keynode_next(keynode))
-                       keynode = keynode_next(keynode);
+       if ((keynode = _vconf_keylist_headnode(keylist)))
+               while (_vconf_keynode_next(keynode))
+                       keynode = _vconf_keynode_next(keynode);
 
        addition = calloc(1, sizeof(keynode_t));
-       if (!keynode_set_keyname(addition, keyname)) {
-               keynode_set_value_int(addition, value);
+       if (!_vconf_keynode_set_keyname(addition, keyname)) {
+               _vconf_keynode_set_value_int(addition, value);
                if (keylist->head && NULL != keynode)
                        keynode->next = addition;
                else
@@ -473,20 +391,20 @@ vconf_keylist_add_bool(keylist_t *keylist, const char *keyname, const int value)
 {
        keynode_t *keynode, *addition;
 
-       retvm_if(keylist == NULL, -1, "Invalid argument: keylist is NULL");
-       retvm_if(keyname == NULL, -1, "Invalid argument: keyname is NULL");
+       retvm_if(keylist == NULL, VCONF_ERROR, "Invalid argument: keylist is NULL");
+       retvm_if(keyname == NULL, VCONF_ERROR, "Invalid argument: keyname is NULL");
 
-       if ((keynode = keylist_lookup(keylist, keyname, NULL))) {
-               keynode_set_value_bool(keynode, value);
+       if ((keynode = _vconf_keylist_lookup(keylist, keyname, NULL))) {
+               _vconf_keynode_set_value_bool(keynode, value);
                return keylist->num;
        }
-       if ((keynode = keylist_headnode(keylist)))
-               while (keynode_next(keynode))
-                       keynode = keynode_next(keynode);
+       if ((keynode = _vconf_keylist_headnode(keylist)))
+               while (_vconf_keynode_next(keynode))
+                       keynode = _vconf_keynode_next(keynode);
 
        addition = calloc(1, sizeof(keynode_t));
-       if (!keynode_set_keyname(addition, keyname)) {
-               keynode_set_value_bool(addition, value);
+       if (!_vconf_keynode_set_keyname(addition, keyname)) {
+               _vconf_keynode_set_value_bool(addition, value);
                if (keylist->head && NULL != keynode)
                        keynode->next = addition;
                else
@@ -512,20 +430,20 @@ vconf_keylist_add_dbl(keylist_t *keylist,
 {
        keynode_t *keynode, *addition;
 
-       retvm_if(keylist == NULL, -1, "Invalid argument: keylist is NULL");
-       retvm_if(keyname == NULL, -1, "Invalid argument: keyname is NULL");
+       retvm_if(keylist == NULL, VCONF_ERROR, "Invalid argument: keylist is NULL");
+       retvm_if(keyname == NULL, VCONF_ERROR, "Invalid argument: keyname is NULL");
 
-       if ((keynode = keylist_lookup(keylist, keyname, NULL))) {
-               keynode_set_value_dbl(keynode, value);
+       if ((keynode = _vconf_keylist_lookup(keylist, keyname, NULL))) {
+               _vconf_keynode_set_value_dbl(keynode, value);
                return keylist->num;
        }
-       if ((keynode = keylist_headnode(keylist)))
-               while (keynode_next(keynode))
-                       keynode = keynode_next(keynode);
+       if ((keynode = _vconf_keylist_headnode(keylist)))
+               while (_vconf_keynode_next(keynode))
+                       keynode = _vconf_keynode_next(keynode);
 
        addition = calloc(1, sizeof(keynode_t));
-       if (!keynode_set_keyname(addition, keyname)) {
-               keynode_set_value_dbl(addition, value);
+       if (!_vconf_keynode_set_keyname(addition, keyname)) {
+               _vconf_keynode_set_value_dbl(addition, value);
                if (keylist->head && NULL != keynode)
                        keynode->next = addition;
                else
@@ -551,22 +469,22 @@ vconf_keylist_add_str(keylist_t *keylist,
 {
        keynode_t *keynode, *addition;
 
-       retvm_if(keylist == NULL, -1, "Invalid argument: keylist is NULL");
-       retvm_if(keyname == NULL, -1, "Invalid argument: keyname is NULL");
+       retvm_if(keylist == NULL, VCONF_ERROR, "Invalid argument: keylist is NULL");
+       retvm_if(keyname == NULL, VCONF_ERROR, "Invalid argument: keyname is NULL");
 
-       if ((keynode = keylist_lookup(keylist, keyname, NULL))) {
+       if ((keynode = _vconf_keylist_lookup(keylist, keyname, NULL))) {
                if (VCONF_TYPE_STRING == keynode->type && keynode->value.s)
                        free(keynode->value.s);
-               keynode_set_value_str(keynode, value);
+               _vconf_keynode_set_value_str(keynode, value);
                return keylist->num;
        }
-       if (NULL != (keynode = keylist_headnode(keylist)))
-               while (keynode_next(keynode))
-                       keynode = keynode_next(keynode);
+       if (NULL != (keynode = _vconf_keylist_headnode(keylist)))
+               while (_vconf_keynode_next(keynode))
+                       keynode = _vconf_keynode_next(keynode);
 
        addition = calloc(1, sizeof(keynode_t));
-       if (!keynode_set_keyname(addition, keyname)) {
-               keynode_set_value_str(addition, value);
+       if (!_vconf_keynode_set_keyname(addition, keyname)) {
+               _vconf_keynode_set_value_str(addition, value);
                if (keylist->head && NULL != keynode)
                        keynode->next = addition;
                else
@@ -589,20 +507,20 @@ API int vconf_keylist_add_null(keylist_t *keylist, const char *keyname)
 {
        keynode_t *keynode, *addition;
 
-       retvm_if(keylist == NULL, -1, "Invalid argument: keylist is NULL");
-       retvm_if(keyname == NULL, -1, "Invalid argument: keyname is NULL");
+       retvm_if(keylist == NULL, VCONF_ERROR, "Invalid argument: keylist is NULL");
+       retvm_if(keyname == NULL, VCONF_ERROR, "Invalid argument: keyname is NULL");
 
-       if (NULL != (keynode = keylist_lookup(keylist, keyname, NULL))) {
+       if (NULL != (keynode = _vconf_keylist_lookup(keylist, keyname, NULL))) {
                keynode->type = 0;
                keynode->value.d = 0;
                return keylist->num;
        }
-       if ((keynode = keylist_headnode(keylist)))
-               while (keynode_next(keynode))
-                       keynode = keynode_next(keynode);
+       if ((keynode = _vconf_keylist_headnode(keylist)))
+               while (_vconf_keynode_next(keynode))
+                       keynode = _vconf_keynode_next(keynode);
 
        addition = calloc(1, sizeof(keynode_t));
-       if (!keynode_set_keyname(addition, keyname)) {
+       if (!_vconf_keynode_set_keyname(addition, keyname)) {
                if (keylist->head && keynode)
                        keynode->next = addition;
                else
@@ -622,879 +540,1260 @@ API int vconf_keylist_add_null(keylist_t *keylist, const char *keyname)
  */
 API int vconf_keylist_del(keylist_t *keylist, const char *keyname)
 {
-       keynode_t *found_node, *before_node;
+       keynode_t *found_node, *before_node = NULL;
+
+       retvm_if(keylist == NULL, VCONF_ERROR, "Invalid argument: keylist is NULL");
+       retvm_if(keyname == NULL, VCONF_ERROR, "Invalid argument: keyname is NULL");
 
-       retvm_if(keylist == NULL, -1, "Invalid argument: keylist is NULL");
-       retvm_if(keyname == NULL, -1, "Invalid argument: keyname is NULL");
+       if ((found_node = _vconf_keylist_lookup(keylist, keyname, &before_node))) {
+               if(before_node) {
+                       before_node->next = found_node->next;
+               } else {
+                       /* requested key is headnode of keylist */
+                       keylist->head = found_node->next;
+               }
 
-       if ((found_node = keylist_lookup(keylist, keyname, &before_node))) {
-               before_node->next = found_node->next;
-               keynode_free(found_node);
+               _vconf_keynode_free(found_node);
        } else
-               return -2;
+               return VCONF_ERROR;
 
-       return 0;
+       return VCONF_OK;
 }
 
-API int vconf_sync_key(const char *in_key)
-{
-       START_TIME_CHECK 
-
-       int fd;
-       char path[PATH_MAX];
-       char *key;
-       int backend_type;
 
-       backend_type = trans_keyname(in_key, &key);
+int _vconf_get_key_prefix(const char *keyname, int *prefix)
+{
+       if (strncmp(keyname, BACKEND_DB_PREFIX, sizeof(BACKEND_DB_PREFIX) - 1) == 0) {
+               *prefix = VCONF_BACKEND_DB;
+       } else if (0 == strncmp(keyname, BACKEND_FILE_PREFIX, sizeof(BACKEND_FILE_PREFIX) - 1)) {
+               *prefix = VCONF_BACKEND_FILE;
+       } else if (0 == strncmp(keyname, BACKEND_MEMORY_PREFIX, sizeof(BACKEND_MEMORY_PREFIX) - 1)) {
+               *prefix = VCONF_BACKEND_MEMORY;
+       } else {
+               ERR("Invalid argument: wrong prefix of key(%s)", keyname);
+               *prefix = VCONF_BACKEND_NULL;
+               return VCONF_ERROR_WRONG_PREFIX;
+       }
 
-       retvm_if(backend_type != VCONF_BACKEND_FILE, -1,
-                "Invalid argument: file Backend is only valid");
-       snprintf(path, PATH_MAX, "%s/%s", KDB_SYSTEM_DIR, key);
+       return VCONF_OK;
+}
 
-       fd = open(path, O_RDWR);
-       fsync(fd);
-       close(fd);
+int _vconf_get_key_path(const char *keyname, char *path)
+{
+       if (strncmp(keyname, BACKEND_DB_PREFIX, sizeof(BACKEND_DB_PREFIX) - 1) == 0) {
+               snprintf(path, KEY_PATH, "%s%s", BACKEND_SYSTEM_DIR, keyname);
+       } else if (0 == strncmp(keyname, BACKEND_FILE_PREFIX, sizeof(BACKEND_FILE_PREFIX) - 1)) {
+               snprintf(path, KEY_PATH, "%s%s", BACKEND_SYSTEM_DIR, keyname);
+       } else if (0 == strncmp(keyname, BACKEND_MEMORY_PREFIX, sizeof(BACKEND_MEMORY_PREFIX) - 1)) {
+               snprintf(path, KEY_PATH, "%s%s", BACKEND_MEMORY_DIR, keyname);
+       } else {
+               ERR("Invalid argument: wrong prefix of key(%s)", keyname);
+               return VCONF_ERROR_WRONG_PREFIX;
+       }
 
-       return 0;
+       return VCONF_OK;
 }
 
-/*
- * This function set the value of given keys
- * @param[in] keylist the keylist which should contain changed keys
- * @return 0 on success, -1 on error
- */
-API int vconf_set(keylist_t *keylist)
+#ifndef DISABLE_RUNTIME_KEY_CREATION
+static int _vconf_set_key_check_parent_dir(const char* path)
 {
-       START_TIME_CHECK 
-
-       char buf[BUF_LEN] = { 0, };
-       keynode_t *got_node;
-       char *changedname;
-       int backend_type;
-       int error_loop_cnt = 0;
-       KeySet *ks = ksNew(0);
+       int exists = 0;
+       struct stat stat_info;
+       char* parent;
+       char path_buf[KEY_PATH] = {0,};
+       int ret = 0;
 
-       retex_if(keylist == NULL, "Invalid argument: keylist is NULL");
+       mode_t dir_mode =  0664 | 0111;
+
+       parent = strrchr(path, '/');
+       strncpy(path_buf, path, parent-path);
+       path_buf[parent-path]=0;
+
+       exists = stat(path_buf,&stat_info);
+       if(exists){
+               if(mkdir(path_buf, dir_mode) != 0) {
+                       if(errno == ENOENT) {
+                               ret = _vconf_set_key_check_parent_dir((const char*)path_buf);
+                               if(ret != VCONF_OK) return ret;
+                               if(mkdir(path_buf, dir_mode) != 0) {
+                                       ERR("mkdir error(%d)", errno);
+                                       return VCONF_ERROR;
+                               }
+                       }
+               }
+       }
 
-       INFO("(%d)START", keylist->num);
+       return VCONF_OK;
+}
 
-       got_node = keylist_headnode(keylist);
-       while (got_node != NULL) {
-               backend_type = trans_keyname(got_node->keyname, &changedname);
-               if (VCONF_BACKEND_NULL == backend_type) {
-                       got_node = keynode_next(got_node);
-                       continue;
-               }
+static int _vconf_set_key_creation(const char* path)
+{
+       int fd;
+       mode_t temp;
+       temp = umask(0000);
+       fd = open(path, O_RDWR|O_CREAT, S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH);
+       umask(temp);
+       if(fd == -1) {
+               ERR("open(rdwr,create) error\n");
+               return VCONF_ERROR;
+       }
+       close(fd);
 
-               retex_if(-1 == check_connetion(backend_type, NULL),
-                        "Connection Fail(%s)", got_node->keyname);
-
-               switch (backend_type) {
-               case VCONF_BACKEND_DB:
-               case VCONF_BACKEND_FILE:
-               case VCONF_BACKEND_MEMORY:
-                       switch (got_node->type) {
-                       case VCONF_TYPE_INT:
-                               snprintf(buf, BUF_LEN, "%d", got_node->value.i);
-                               ksAppendKey(ks,
-                                           keyNew(changedname, KEY_TYPE,
-                                                  VCONF_TYPE_INT, KEY_VALUE,
-                                                  buf, KEY_END));
-                               break;
-                       case VCONF_TYPE_DOUBLE:
-                               snprintf(buf, BUF_LEN, "%f", got_node->value.d);
-                               ksAppendKey(ks,
-                                           keyNew(changedname, KEY_TYPE,
-                                                  VCONF_TYPE_DOUBLE, KEY_VALUE,
-                                                  buf, KEY_END));
-                               break;
-                       case VCONF_TYPE_BOOL:
-                               snprintf(buf, BUF_LEN, "%d", got_node->value.b);
-                               ksAppendKey(ks,
-                                           keyNew(changedname, KEY_TYPE,
-                                                  VCONF_TYPE_BOOL, KEY_VALUE,
-                                                  buf, KEY_END));
-                               break;
-                       case VCONF_TYPE_STRING:
-                               ksAppendKey(ks,
-                                           keyNew(changedname, KEY_TYPE,
-                                                  VCONF_TYPE_STRING, KEY_VALUE,
-                                                  got_node->value.s, KEY_END));
-                               break;
-                       default:
-                               ERR("Key(%s) has Unknown Type",
-                                   got_node->keyname);
-                       }
-#ifdef ADDR_TRANS
-                       if (got_node->keyname != changedname)
-                               free(changedname);
+       return VCONF_OK;
+}
 #endif
-                       break;
-               default:
-                       ERR("Key(%s) has Unknown Backend", got_node->keyname);
-               }
 
-               got_node = keynode_next(got_node);
-       }
+static int _vconf_set_file_lock(int fd, short type)
+{
+#ifdef HAVE_FCNTL_H
+       int ret = 0;
+       struct flock l;
 
-       if (ksGetSize(ks)) {
-               while (kdbSet(g_kdb_handle, ks, 0, 0)) {
-                       /* We got an error. Retry 5 times. */
-                       if (error_loop_cnt == MAX_ERROR_LOOP_CNT) {
-                               Key *problem;
-                               char keyname[300] = "";
+       l.l_type = type; /*Do read Lock*/
+       l.l_start= 0;       /*Start at begin*/
+       l.l_whence = SEEK_SET;
+       l.l_len = 0;        /*Do it with whole file*/
+       ret = fcntl(fd, F_SETLKW, &l);
+       return ret;
+#else
+       return 0;
+#endif
+}
 
-                               problem = ksCurrent(ks);
-                               if (problem)
-                                       keyGetFullName(problem, keyname,
-                                                      sizeof(keyname));
-                               ERR("kdbSet error: while saving %s", keyname);
+static int _vconf_set_read_lock(int fd)
+{
+       return _vconf_set_file_lock(fd, F_RDLCK);
+}
 
-                               /* And try to set keys again starting 
-                                  from the next key, */
-                               /* unless we reached the end of KeySet */
-                               if (ksNext(ks) == 0)
-                                       break;
-                       } else {
-                               usleep(ERROR_LOOP_SLEEP_TIME);
-                               error_loop_cnt++;
-                       }
-               }
-       }
+static int _vconf_set_write_lock(int fd)
+{
+       return _vconf_set_file_lock(fd, F_WRLCK);
+}
 
-       ksDel(ks);
-       END_TIME_CHECK 
-       return 0;
+static int _vconf_set_unlock(int fd)
+{
+       return _vconf_set_file_lock(fd, F_UNLCK);
+}
 
- CATCH:
+static void _vconf_acquire_transaction_delay(int ms)
+{
+    struct timeval timeout;
+    timeout.tv_sec = ms / 1000 ;
+    timeout.tv_usec = 1000 * ( ms % 1000 );
 
-       ksDel(ks);
-       return -1;
+    select(0, 0, 0, 0, &timeout);
 }
 
-static int _vconf_set_key(Key *k)
+static int _vconf_db_begin_transaction()
 {
-       int error_loop_cnt = 0;
-       while (kdbSetKey(g_kdb_handle, k)) {
-               ERR("kdbSetKey() failed");
+       pid_t value;
+       VCONF_MOUNT_PATH_CHECK;
 
-               if (error_loop_cnt == MAX_ERROR_LOOP_CNT) {
-                       ERR("Retry %d times in error handler", error_loop_cnt);
-                       return -1;
+       if(is_transaction == 0) {
+               value = getpid();
+transaction_retry:
+               if(setxattr(VCONF_MOUNT_PATH, "full_db_transaction_start", &value, sizeof(value), 0) == -1)
+               {
+                       _vconf_acquire_transaction_delay(50);
+                       goto transaction_retry;
                } else {
-                       usleep(ERROR_LOOP_SLEEP_TIME);
-                       error_loop_cnt++;
+                       is_transaction++;
                }
+       } else {
+               is_transaction++;
        }
 
-       return 0;
+       return VCONF_OK;
 }
 
-/*
- * This function set the integer value of given key
- * @param[in]  in_key  key
- * @param[in]  intval integer value to set
- * @return 0 on success, -1 on error
- */
-API int vconf_set_int(const char *in_key, const int intval)
+static int _vconf_db_commit_transaction()
 {
-       START_TIME_CHECK
-
-       char buf[BUF_LEN] = { 0, };
-       char *key;
-       int backend_type;
-       Key *k;
-
-       backend_type = trans_keyname(in_key, &key);
-       retvm_if(backend_type == VCONF_BACKEND_NULL, -1,
-                "Invalid argument: Backend is not valid");
-       retvm_if(-1 == check_connetion(backend_type, NULL), -1,
-                "Connection Fail(%s)", in_key);
-
-       switch (backend_type) {
-       case VCONF_BACKEND_DB:
-       case VCONF_BACKEND_FILE:
-       case VCONF_BACKEND_MEMORY:
-               snprintf(buf, BUF_LEN, "%d", intval);
-
-               k = keyNew(key, KEY_TYPE, VCONF_TYPE_INT, KEY_VALUE, buf,
-                          KEY_END);
-               if (k == NULL) {
-                       ERR("kdbNew() failed");
-#ifdef ADDR_TRANS
-                       if (key != in_key)
-                               free(key);
-#endif
-                       return -1;
-               }
-#ifdef ADDR_TRANS
-               if (key != in_key)
-                       free(key);
-#endif
+       pid_t value;
+       VCONF_MOUNT_PATH_CHECK;
 
-               if (_vconf_set_key(k) < 0) {
-                       keyDel(k);
-                       return -1;
-               }
+       retv_if(is_transaction <= 0, VCONF_ERROR);
 
-               keyDel(k);
-               break;
-       default:
-               ERR("Key(%s) has Unknown Backend", in_key);
+       if(is_transaction == 1) {
+               value = getpid();
+               setxattr(VCONF_MOUNT_PATH, "full_db_transaction_stop", &value, sizeof(value), 0);
+               is_transaction = 0;
+       } else {
+               is_transaction --;
        }
-       INFO("vconf_set_int(%d) : %s(%d) success", getpid(), in_key, intval);
-       END_TIME_CHECK 
+
        return 0;
 }
 
-/*
-* This function set the boolean value of given key
-* @param[in]   in_key  key
-* @param[in]   boolval boolean value to set 
-               (Integer value 1 is 'True', and 0 is 'False')
-* @return 0 on success, -1 on error
-*/
-API int vconf_set_bool(const char *in_key, const int boolval)
+static int _vconf_db_rollback_transaction()
 {
-       START_TIME_CHECK
+       pid_t value;
+       VCONF_MOUNT_PATH_CHECK;
 
-       char buf[BUF_LEN] = { 0, };
-       char *key;
-       int backend_type;
-       Key *k;
-
-       backend_type = trans_keyname(in_key, &key);
-       retvm_if(backend_type == VCONF_BACKEND_NULL, -1,
-                "Invalid argument: Backend is not valid");
-       retvm_if(-1 == check_connetion(backend_type, NULL), -1,
-                "Connection Fail(%s)", in_key);
-
-       switch (backend_type) {
-       case VCONF_BACKEND_DB:
-       case VCONF_BACKEND_FILE:
-       case VCONF_BACKEND_MEMORY:
-               snprintf(buf, BUF_LEN, "%d", !!boolval);
-
-               k = keyNew(key, KEY_TYPE, VCONF_TYPE_BOOL, KEY_VALUE, buf,
-                          KEY_END);
-               if (k == NULL) {
-                       ERR("kdbNew() failed");
-#ifdef ADDR_TRANS
-                       if (key != in_key)
-                               free(key);
-#endif
-                       return -1;
-               }
-#ifdef ADDR_TRANS
-               if (key != in_key)
-                       free(key);
-#endif
-
-               if (_vconf_set_key(k) < 0) {
-                       keyDel(k);
-                       return -1;
-               }
+       retv_if(is_transaction <= 0, VCONF_ERROR);
 
-               keyDel(k);
-               break;
-       default:
-               ERR("Key(%s) has Unknown Backend", in_key);
+       if(is_transaction == 1) {
+               value = getpid();
+               setxattr(VCONF_MOUNT_PATH, "full_db_transaction_rb", &value, sizeof(value), 0);
+               is_transaction = 0;
+       } else {
+               is_transaction --;
        }
-       INFO("vconf_set_bool(%d) : %s(%d) success", getpid(), in_key, boolval);
-       END_TIME_CHECK 
+
        return 0;
 }
 
-/*
- * This function set the double value of given key
- * @param[in]  in_key  key
- * @param[in]  dblval double value to set
- * @return 0 on success, -1 on error
- */
-API int vconf_set_dbl(const char *in_key, const double dblval)
+static int _vconf_set_key_filesys(keynode_t *keynode, int prefix)
 {
-       START_TIME_CHECK
-
-       char buf[BUF_LEN] = { 0, };
-       char *key;
-       int backend_type;
-       Key *k;
-
-       backend_type = trans_keyname(in_key, &key);
-       retvm_if(backend_type == VCONF_BACKEND_NULL, -1,
-                "Invalid argument: Backend is not valid");
-       retvm_if(-1 == check_connetion(backend_type, NULL), -1,
-                "Connection Fail(%s)", in_key);
-
-       switch (backend_type) {
-       case VCONF_BACKEND_DB:
-       case VCONF_BACKEND_FILE:
-       case VCONF_BACKEND_MEMORY:
-               snprintf(buf, BUF_LEN, "%f", dblval);
-
-               k = keyNew(key, KEY_TYPE, VCONF_TYPE_DOUBLE, KEY_VALUE, buf,
-                          KEY_END);
-               if (k == NULL) {
-                       ERR("kdbNew() failed");
-#ifdef ADDR_TRANS
-                       if (key != in_key)
-                               free(key);
-#endif
-                       return -1;
-               }
-#ifdef ADDR_TRANS
-               if (key != in_key)
-                       free(key);
-#endif
+       char path[KEY_PATH] = {0,};
+       FILE *fp = NULL;
+       int ret = -1;
+       int func_ret = VCONF_OK;
+       int err_no = 0;
+       char err_buf[100] = { 0, };
+       int is_write_error = 0;
+
+       errno = 0;
+
+       ret = _vconf_get_key_path(keynode->keyname, path);
+       retv_if(ret != VCONF_OK, ret);
+
+       if( (fp = fopen(path, "w")) == NULL ) {
+               func_ret = VCONF_ERROR_FILE_OPEN;
+               err_no = errno;
+               goto out_return;
+       }
 
-               if (_vconf_set_key(k) < 0) {
-                       keyDel(k);
-                       return -1;
+       if(prefix != VCONF_BACKEND_DB) {
+               _vconf_set_write_lock(fileno(fp));
+               if(errno != 0) {
+                       func_ret = VCONF_ERROR_FILE_LOCK;
+                       err_no = errno;
+                       goto out_close;
                }
-
-               keyDel(k);
-               break;
-       default:
-               ERR("Key(%s) has Unknown Backend", in_key);
        }
-       INFO("vconf_set_dbl(%d) : %s(%f) success", getpid(), in_key, dblval);
-       END_TIME_CHECK 
-       return 0;
-}
 
-/*
- * This function set the string value of given key
- * @param[in]  in_key  key
- * @param[in]  strval string value to set
- * @return 0 on success, -1 on error
- */
-API int vconf_set_str(const char *in_key, const char *strval)
-{
-       START_TIME_CHECK 
-
-       char *key;
-       int backend_type;
-       Key *k;
-
-       retvm_if(strval == NULL, -1, "Invaild argument: strval is NULL");
-
-       backend_type = trans_keyname(in_key, &key);
-       retvm_if(backend_type == VCONF_BACKEND_NULL, -1,
-                "Invalid argument: Backend is not valid");
-       retvm_if(-1 == check_connetion(backend_type, NULL), -1,
-                "Connection Fail(%s)", in_key);
-
-       switch (backend_type) {
-       case VCONF_BACKEND_DB:
-       case VCONF_BACKEND_FILE:
-       case VCONF_BACKEND_MEMORY:
-               k = keyNew(key, KEY_TYPE, VCONF_TYPE_STRING, KEY_VALUE, strval,
-                          KEY_END);
-               if (k == NULL) {
-                       ERR("kdbNew() failed");
-#ifdef ADDR_TRANS
-                       if (key != in_key)
-                               free(key);
-#endif
-                       return -1;
+       /* write key type */
+       ret = fwrite((void *)&(keynode->type), sizeof(int), 1, fp);
+       if(ret <= 0)
+       {
+               if(errno) {
+                       err_no = errno;
+               } else {
+                       errno = EAGAIN;
                }
-#ifdef ADDR_TRANS
-               if (key != in_key)
-                       free(key);
-#endif
+               func_ret = VCONF_ERROR_FILE_WRITE;
+               goto out_unlock;
+       }
 
-               if (_vconf_set_key(k) < 0) {
-                       keyDel(k);
-                       return -1;
+       /* write key value */
+       switch(keynode->type)
+       {
+               case VCONF_TYPE_INT:
+                       ret = fwrite((void *)&(keynode->value.i), sizeof(int), 1, fp);
+                       if(ret <= 0) is_write_error = 1;
+                       break;
+               case VCONF_TYPE_DOUBLE:
+                       ret = fwrite((void *)&(keynode->value.d), sizeof(double), 1, fp);
+                       if(ret <= 0) is_write_error = 1;
+                       break;
+               case VCONF_TYPE_BOOL:
+                       ret = fwrite((void *)&(keynode->value.b), sizeof(int), 1, fp);
+                       if(ret <= 0) is_write_error = 1;
+                       break;
+               case VCONF_TYPE_STRING:
+                       ret = fprintf(fp,"%s",keynode->value.s);
+                       if(ret < strlen(keynode->value.s)) is_write_error = 1;
+                       //ret = fwrite((void *)keynode->value.s, sizeof(char), strlen(keynode->value.s), fp);
+                       break;
+               default :
+                       func_ret = VCONF_ERROR_WRONG_TYPE;
+                       goto out_unlock;
+       }
+       if(is_write_error)
+       {
+               if(errno) {
+                       err_no = errno;
+               } else {
+                       errno = EAGAIN;
                }
-
-               keyDel(k);
-               break;
-       default:
-               ERR("Key(%s) has Unknown Backend", in_key);
+               func_ret = VCONF_ERROR_FILE_WRITE;
+               goto out_unlock;
        }
-       
-       INFO("vconf_set_str(%d) : %s(%s) success", getpid(), in_key, strval);
-       END_TIME_CHECK 
-       return 0;
-}
 
-#if 1
+#ifdef ENABLE_FDATASYNC
+       if(prefix == VCONF_BACKEND_FILE) {
+               fflush(fp);
 
-/*
- * This function set the binary value of given key
- * @param[in]  in_key  key
- * @param[in]  binval binary value to set
- * @param[in]  size  the size for writing
- * @return 0 on success, -1 on error
- */
-API int vconf_set_bytes(const char *in_key, const void *binval, int size)
-{
-       START_TIME_CHECK 
-
-       char *key;
-       int backend_type;
-       Key *k;
-
-       retvm_if(binval == NULL, -1, "Invaild argument: binval is NULL");
-       retvm_if(size < 0, -1, "Invalid argument: size is not valid");
-
-       backend_type = trans_keyname(in_key, &key);
-       retvm_if(backend_type == VCONF_BACKEND_NULL, -1,
-                "Invalid argument: Backend is not valid");
-       retvm_if(-1 == check_connetion(backend_type, NULL), -1,
-                "Connection Fail(%s)", in_key);
-
-       switch (backend_type) {
-       case VCONF_BACKEND_DB:
-       case VCONF_BACKEND_FILE:
-       case VCONF_BACKEND_MEMORY:
-               k = keyNew(key, KEY_TYPE, KEY_TYPE_BINARY, KEY_SIZE, size,
-                          KEY_VALUE, binval, KEY_END);
-               if (k == NULL) {
-                       ERR("kdbNew() failed");
-#ifdef ADDR_TRANS
-                       if (key != in_key)
-                               free(key);
-#endif
-                       return -1;
+               ret = fdatasync(fileno(fp));
+               if(ret == -1) {
+                       err_no = errno;
+                       func_ret = VCONF_ERROR_FILE_SYNC;
                }
-#ifdef ADDR_TRANS
-               if (key != in_key)
-                       free(key);
+       }
 #endif
 
-               if (_vconf_set_key(k) < 0) {
-                       keyDel(k);
-                       return -1;
+out_unlock :
+       if(prefix != VCONF_BACKEND_DB) {
+               _vconf_set_unlock(fileno(fp));
+               if(errno != 0) {
+                       func_ret = VCONF_ERROR_FILE_LOCK;
+                       err_no = errno;
+                       goto out_close;
                }
-
-               keyDel(k);
-               break;
-       default:
-               ERR("Key(%s) has Unknown Backend", in_key);
        }
-       INFO("vconf_set_bytes(%d) : %s success", getpid(), in_key);
-       END_TIME_CHECK 
-       return 0;
-}
-
-/*
- * This function get the binary value of given key up to size bytes.
- * @param[in]  in_key  key
- * @param[out] buf output buffer
- * @param[in]  size the size for reading
- * @return the number of bytes actually read on success, -1 on error
- */
-API int vconf_get_bytes(const char *in_key, void *buf, int size)
-{
-       START_TIME_CHECK char *key;
-       int backend_type, ret = 0;
-       Key *k;
-
-       retvm_if(buf == NULL, -1, "Invaild argument: buffer is NULL");
-       retvm_if(size < 0, -1, "Invalid argument: size is not valid");
-
-       backend_type = trans_keyname(in_key, &key);
-       retvm_if(backend_type == VCONF_BACKEND_NULL, -1,
-                "Invalid argument: Backend is not valid");
-       retvm_if(-1 == check_connetion(backend_type, NULL), -1,
-                "Connection Fail(%s)", in_key);
-
-       switch (backend_type) {
-       case VCONF_BACKEND_DB:
-       case VCONF_BACKEND_FILE:
-       case VCONF_BACKEND_MEMORY:
-               k = _vconf_kdb_get(key);
-#ifdef ADDR_TRANS
-               if (key != in_key)
-                       free(key);
-#endif
-               retvm_if(k == NULL, -1, "kdb get(%s) failed", in_key);
 
-               if ((ret = keyGetBinary(k, buf, size)) < 0) {
-                       /* ERR("Invalid value"); */
-                       keyDel(k);
-                       return -1;
-               }
+out_close :
+       fclose(fp);
 
-               keyDel(k);
-               break;
-       default:
-               ERR("Key(%s) has Unknown Backend", in_key);
+out_return :
+       if(err_no != 0) {
+               strerror_r(err_no, err_buf, 100);
+               ERR("_vconf_set_key_filesys(%d-%s) step(%d) failed(%d / %s)\n", keynode->type, keynode->keyname, func_ret, err_no, err_buf);
        }
-       INFO("key(%s) has bytes data", in_key);
-       END_TIME_CHECK 
-       return ret;
+
+       return func_ret;
 }
-#endif
 
-static int _vconf_check_value_integrity(const void *value, type_t type)
+static int _vconf_set_key(keynode_t *keynode)
 {
-       int i = 0;
+       int func_ret = VCONF_OK;
+       int ret = 0;
+       int is_busy_err = 0;
+       int retry = -1;
+       int prefix = 0;
+       int rc = 0;
 
-       if ((type == VCONF_TYPE_STRING) && (value != NULL)) {
-               return 0;
+       ret = _vconf_get_key_prefix(keynode->keyname, &prefix);
+       retv_if(ret != VCONF_OK, ret);
+
+       if(prefix == VCONF_BACKEND_DB) {
+               _vconf_db_begin_transaction();
        }
 
-       if ((value) && (strlen(value) > 0)) {
-               if ((type == VCONF_TYPE_INT) || 
-                       (type == VCONF_TYPE_BOOL)|| 
-                       (type == VCONF_TYPE_DOUBLE)) {
-                       while (*(((char *)value) + i) != '\0') {
-                               if ( !isdigit(*(((char *)value) + i)) ) {
-                                       if ((type != VCONF_TYPE_BOOL) && 
-                                               (*(((char *)value) + i) != '-')) {
-                                               if ((type == VCONF_TYPE_DOUBLE) && 
-                                                       (*(((char *)value) + i) != '.')) {
-                                                       ERR("ERROR : vconf value is not digit.");
-                                                       return -1;
-                                               }       
+       while((ret = _vconf_set_key_filesys(keynode, prefix)) != VCONF_OK)
+       {
+               is_busy_err = 0;
+               retry++;
+
+               if(ret == VCONF_ERROR_FILE_OPEN)
+               {
+                       switch (errno)
+                       {
+                               /* file is not exist, make path */
+#ifndef DISABLE_RUNTIME_KEY_CREATION
+                               case EFAULT :
+                               case ENOENT :
+                               {
+                                       char path[KEY_PATH] = {0,};
+                                       rc = _vconf_get_key_path(keynode->keyname, path);
+                                       if(rc != VCONF_OK) {
+                                               ERR("_vconf_get_key_path error");
+                                               break;
+                                       }
+
+                                       ret = _vconf_set_key_check_parent_dir(path);
+                                       if(rc != VCONF_OK) {
+                                               ERR("_vconf_set_key_check_parent_dir error : %s", path);
+                                               break;
+                                       }
+
+                                       ret = _vconf_set_key_creation(path);
+                                       if(rc != VCONF_OK) {
+                                               ERR("_vconf_set_key_creation error : %s", path);
+                                               break;
                                        }
+                                       INFO("%s key is created", keynode->keyname);
+                               }
+#endif
+                               case EAGAIN :
+                               case EMFILE :
+                               case ENFILE :
+                               case ETXTBSY :
+                               {
+                                       is_busy_err = 1;
                                }
-                               i++;
                        }
                }
-
-               return 0;
-       } else {
-               ERR("ERROR : vconf value is NULL.");
-               return -2;
-       }
-}
-
-/*
- * This function get the value of given keys
- * @param[in]  keylist keylist
- * @param[in]  in_parentDIR parent DIRECTORY of needed keys
- * @param[in]  option VCONF_GET_KEY|VCONF_GET_DIR|VCONF_GET_ALL
+               else if (ret == VCONF_ERROR_FILE_CHMOD)
+               {
+                       switch (errno)
+                       {
+                               case EINTR :
+                               case EBADF :
+                               {
+                                       is_busy_err = 1;
+                               }
+                       }
+               }
+               else if (ret == VCONF_ERROR_FILE_LOCK)
+               {
+                       switch (errno)
+                       {
+                               case EBADF :
+                               case EACCES :
+                               case EAGAIN :
+                               case ENOLCK :
+                               {
+                                       is_busy_err = 1;
+                               }
+                       }
+               }
+               else if (ret == VCONF_ERROR_FILE_WRITE)
+               {
+                       switch (errno)
+                       {
+                               case 0 :
+                               case EAGAIN :
+                               case EINTR :
+                               case EIO :
+                               case ENOMEM :
+                               {
+                                       is_busy_err = 1;
+                               }
+                       }
+               }
+               else
+               {
+                       is_busy_err = 0;
+               }
+
+               if ((is_busy_err == 1) && (retry < VCONF_ERROR_RETRY_CNT)) {
+                       ERR("%s : write buf error(%d). write will be retried(%d) , usleep time : %d\n", keynode->keyname, ret, retry, (retry)*VCONF_ERROR_RETRY_SLEEP_UTIME);
+                       usleep((retry)*VCONF_ERROR_RETRY_SLEEP_UTIME);
+                       continue;
+               } else {
+                       ERR("%s : write buf error(%d). break. (%d)\n", keynode->keyname, ret, retry);
+                       func_ret = VCONF_ERROR;
+                       break;
+               }
+       }
+
+       if(prefix == VCONF_BACKEND_DB) {
+               if(func_ret == VCONF_ERROR) {
+                       _vconf_db_rollback_transaction();
+               } else {
+                       _vconf_db_commit_transaction();
+               }
+       }
+
+       return func_ret;
+}
+
+/*
+ * This function set the value of given keys
+ * @param[in] keylist the keylist which should contain changed keys
  * @return 0 on success, -1 on error
  */
-API int
-vconf_get(keylist_t *keylist, const char *in_parentDIR, get_option_t option)
+API int vconf_set(keylist_t *keylist)
 {
-       START_TIME_CHECK char *parentDIR;
-       keynode_t *temp_keynode;
-       int backend_type;
-       char orig_keyname[BUF_LEN];
-       int is_getall = 0;
-       KeySet *ks = NULL;
-       Key *k, *parentKey;
-       const void *get_value = NULL;
-#ifdef ADDR_TRANS
-       int changename_type = 0;
-#endif
+       START_TIME_CHECK
 
-       retvm_if(keylist == NULL, -1, "Invalid argument: keylist is NULL");
-       backend_type = trans_keyname(in_parentDIR, &parentDIR);
-       retvm_if(backend_type == VCONF_BACKEND_NULL, -1,
-                "Invalid argument: Backend is not valid");
-
-       if (backend_type >= VCONF_BACKEND_DB) {
-               KDB_OPEN_HANDLE;
-               retvm_if(g_kdb_handle == NULL, -1, "kdbOpen() failed");
-#ifdef ADDR_TRANS
-               if (in_parentDIR != parentDIR) {
-                       if (VCONF_BACKEND_DB == backend_type) {
-                               strncpy(orig_keyname, BACKEND_USER_PREFIX,
-                                       sizeof(BACKEND_USER_PREFIX));
-                               changename_type = 4;
-                       } else if (VCONF_BACKEND_FILE == backend_type) {
-                               strncpy(orig_keyname, BACKEND_SYSTEM_PREFIX,
-                                       sizeof(BACKEND_SYSTEM_PREFIX));
-                               changename_type = 6;
-                       }
+       keynode_t *got_node;
+
+       int func_ret = VCONF_OK;
+       int ret = 0;
+       int prefix = 0;
+
+       retvm_if(keylist == NULL, VCONF_ERROR, "Invalid argument: keylist is NULL");
+
+       INFO("vconf_set (%d)START", keylist->num);
+
+       got_node = _vconf_keylist_headnode(keylist);
+
+       retvm_if(got_node == NULL, VCONF_ERROR, "Invalid argument: headnode is NULL");
+
+       ret = _vconf_get_key_prefix(got_node->keyname, &prefix);
+       retv_if(ret != VCONF_OK, ret);
+
+       if(prefix == VCONF_BACKEND_DB) {
+               _vconf_db_begin_transaction();
+       }
+
+       while (got_node != NULL) {
+               ret = _vconf_set_key(got_node);
+               if(ret != VCONF_OK) {
+                       func_ret = VCONF_ERROR;
                }
-#endif
+
+               got_node = _vconf_keynode_next(got_node);
        }
 
-       switch (backend_type) {
-       case VCONF_BACKEND_DB:
-       case VCONF_BACKEND_FILE:
-       case VCONF_BACKEND_MEMORY:
-               {
-                       ks = ksNew(0);
+       if(prefix == VCONF_BACKEND_DB) {
+               if(func_ret == VCONF_ERROR) {
+                       _vconf_db_rollback_transaction();
+               } else {
+                       _vconf_db_commit_transaction();
+               }
+       }
 
-                       parentKey = keyNew(parentDIR, KEY_END);
-                       temp_keynode = keylist_headnode(keylist);
+       END_TIME_CHECK
 
-                       if ((NULL != temp_keynode) && (VCONF_GET_KEY != option)) {
-                               ERR("Not support mode : Only VCONF_GET_KEY \
-                               option support To retrieve key with keylist");
-                               keyDel(parentKey);
-                               ksDel(ks);
-                               return -1;
-                       }
+       return func_ret;
+}
 
-                       while (temp_keynode != NULL) {
-                               if (temp_keynode->keyname) {
-                                       /* if (0 == strncmp(temp_keynode->keyname, 
-                                          parentDIR, sizeof(parentDIR))) */
-                                       /*kdbGet will handle */
-                                       ksAppendKey(ks,
-                                                   keyNew
-                                                   (temp_keynode->keyname,
-                                                    KEY_END));
-                               }
-                               temp_keynode = keynode_next(temp_keynode);
+API int vconf_sync_key(const char *in_key)
+{
+       START_TIME_CHECK
+
+       int fd;
+       char path[KEY_PATH] = {0,};
+       int ret = -1;
+
+       ret = _vconf_get_key_path(in_key, path);
+       if(ret != VCONF_OK) return VCONF_ERROR;
+
+       fd = open(path, O_RDWR);
+       if(fd == -1) return VCONF_ERROR;
+
+       fsync(fd);
+       close(fd);
+
+       END_TIME_CHECK
+
+       return 0;
+}
+
+/*
+ * This function set the integer value of given key
+ * @param[in]  in_key  key
+ * @param[in]  intval integer value to set
+ * @return 0 on success, -1 on error
+ */
+API int vconf_set_int(const char *in_key, const int intval)
+{
+       START_TIME_CHECK
+
+       retvm_if(in_key == NULL, VCONF_ERROR, "Invalid argument: key is NULL");
+
+       int func_ret = VCONF_OK;
+
+       keynode_t* pKeyNode = _vconf_keynode_new();
+       retvm_if(pKeyNode == NULL, VCONF_ERROR, "key malloc fail");
+
+       func_ret = _vconf_keynode_set_keyname(pKeyNode, in_key);
+       if(func_ret != VCONF_OK) {
+               _vconf_keynode_free(pKeyNode);
+               ERR("set key name error");
+               return VCONF_ERROR;
+       }
+       _vconf_keynode_set_value_int(pKeyNode, intval);
+
+       if (_vconf_set_key(pKeyNode) != VCONF_OK) {
+               ERR("vconf_set_int(%d) : %s(%d) error", getpid(), in_key, intval);
+               func_ret = VCONF_ERROR;
+       } else{
+               INFO("vconf_set_int(%d) : %s(%d) success", getpid(), in_key, intval);
+       }
+
+       _vconf_keynode_free(pKeyNode);
+
+       END_TIME_CHECK
+
+       return func_ret;
+}
+
+/*
+* This function set the boolean value of given key
+* @param[in]   in_key  key
+* @param[in]   boolval boolean value to set
+               (Integer value 1 is 'True', and 0 is 'False')
+* @return 0 on success, -1 on error
+*/
+API int vconf_set_bool(const char *in_key, const int boolval)
+{
+       START_TIME_CHECK
+
+       retvm_if(in_key == NULL, VCONF_ERROR, "Invalid argument: key is NULL");
+
+       int func_ret = VCONF_OK;
+       keynode_t* pKeyNode = _vconf_keynode_new();
+       retvm_if(pKeyNode == NULL, VCONF_ERROR, "key malloc fail");
+
+       func_ret = _vconf_keynode_set_keyname(pKeyNode, in_key);
+       if(func_ret != VCONF_OK) {
+               _vconf_keynode_free(pKeyNode);
+               ERR("set key name error");
+               return VCONF_ERROR;
+       }
+       _vconf_keynode_set_value_bool(pKeyNode, boolval);
+
+       if (_vconf_set_key(pKeyNode) != VCONF_OK) {
+               ERR("vconf_set_bool(%d) : %s(%d) error", getpid(), in_key, boolval);
+               func_ret = VCONF_ERROR;
+       } else {
+               INFO("vconf_set_bool(%d) : %s(%d) success", getpid(), in_key, boolval);
+       }
+
+       _vconf_keynode_free(pKeyNode);
+
+       END_TIME_CHECK
+
+       return func_ret;
+}
+
+/*
+ * This function set the double value of given key
+ * @param[in]  in_key  key
+ * @param[in]  dblval double value to set
+ * @return 0 on success, -1 on error
+ */
+API int vconf_set_dbl(const char *in_key, const double dblval)
+{
+       START_TIME_CHECK
+
+       retvm_if(in_key == NULL, VCONF_ERROR, "Invalid argument: key is NULL");
+
+       int func_ret = VCONF_OK;
+       keynode_t* pKeyNode = _vconf_keynode_new();
+       retvm_if(pKeyNode == NULL, VCONF_ERROR, "key malloc fail");
+
+       func_ret = _vconf_keynode_set_keyname(pKeyNode, in_key);
+       if(func_ret != VCONF_OK) {
+               _vconf_keynode_free(pKeyNode);
+               ERR("set key name error");
+               return VCONF_ERROR;
+       }
+       _vconf_keynode_set_value_dbl(pKeyNode, dblval);
+
+       if (_vconf_set_key(pKeyNode) != VCONF_OK) {
+               ERR("vconf_set_dbl(%d) : %s(%f) error", getpid(), in_key, dblval);
+               func_ret = VCONF_ERROR;
+       } else {
+               INFO("vconf_set_dbl(%d) : %s(%f) success", getpid(), in_key, dblval);
+       }
+
+       _vconf_keynode_free(pKeyNode);
+
+       END_TIME_CHECK
+
+       return func_ret;
+}
+
+/*
+ * This function set the string value of given key
+ * @param[in]  in_key  key
+ * @param[in]  strval string value to set
+ * @return 0 on success, -1 on error
+ */
+API int vconf_set_str(const char *in_key, const char *strval)
+{
+       START_TIME_CHECK
+
+       retvm_if(in_key == NULL, VCONF_ERROR, "Invalid argument: key is NULL");
+       retvm_if(strval == NULL, VCONF_ERROR, "Invalid argument: value is NULL");
+
+       int func_ret = VCONF_OK;
+       keynode_t* pKeyNode = _vconf_keynode_new();
+       retvm_if(pKeyNode == NULL, VCONF_ERROR, "key malloc fail");
+
+       func_ret = _vconf_keynode_set_keyname(pKeyNode, in_key);
+       if(func_ret != VCONF_OK) {
+               _vconf_keynode_free(pKeyNode);
+               ERR("set key name error");
+               return VCONF_ERROR;
+       }
+       _vconf_keynode_set_value_str(pKeyNode, strval);
+
+       if (_vconf_set_key(pKeyNode) != VCONF_OK) {
+               ERR("vconf_set_str(%d) : %s(%s) error", getpid(), in_key, strval);
+               func_ret = VCONF_ERROR;
+       } else {
+               INFO("vconf_set_str(%d) : %s(%s) success", getpid(), in_key, strval);
+       }
+
+       _vconf_keynode_free(pKeyNode);
+
+       END_TIME_CHECK
+
+       return func_ret;
+}
+
+
+#ifdef SUPPORT_ELEKTRA_VALUE_FORMAT
+/* keyFileUnserialize function of ELEKTRA */
+static int _vconf_get_key_elektra_format(keynode_t *keynode, FILE *fp)
+{
+       char version[10] = {0,};
+       char type[5] = {0,};
+       char comment[8] = {0,};
+       char file_buf[BUF_LEN] = {0,};
+       char *value = NULL;
+       int value_size = 0;
+       int err_no = 0;
+       char err_buf[100] = { 0, };
+       int func_ret = VCONF_OK;
+
+       INFO("_vconf_get_key_elektra_format start");
+
+       rewind(fp);
+
+       if (!fgets(version, sizeof(version), fp))
+       {
+               if(ferror(fp)) {
+                       err_no = errno;
+               } else {
+                       err_no = EAGAIN;
+               }
+               func_ret = VCONF_ERROR_FILE_FGETS;
+               goto out_return;
+       }
+       if (strncmp(version,"RG",2)) {
+               func_ret = VCONF_ERROR_WRONG_TYPE;
+               goto out_return;
+       }
+
+       if (!fgets(type, sizeof(type), fp))
+       {
+               if(ferror(fp)) {
+                       err_no = errno;
+               } else {
+                       err_no = EAGAIN;
+               }
+               func_ret = VCONF_ERROR_FILE_FGETS;
+               goto out_return;
+       }
+
+       if (!fgets(comment, sizeof(comment), fp))
+       {
+               if(ferror(fp)) {
+                       err_no = errno;
+               } else {
+                       err_no = EAGAIN;
+               }
+               func_ret = VCONF_ERROR_FILE_FGETS;
+               goto out_return;
+       }
+
+       while(fgets(file_buf, sizeof(file_buf), fp))
+       {
+               if(value) {
+                       value_size = value_size + strlen(file_buf);
+                       value = (char *) realloc(value, value_size);
+                       if(value == NULL) {
+                               func_ret = VCONF_ERROR_NO_MEM;
+                               break;
                        }
+                       strncat(value, file_buf, strlen(file_buf));
+               } else {
+                       value_size = strlen(file_buf) + 1;
+                       value = (char *)malloc(value_size);
+                       if(value == NULL) {
+                               func_ret = VCONF_ERROR_NO_MEM;
+                               break;
+                       }
+                       memset(value, 0x00, value_size);
+                       strncpy(value, file_buf, strlen(file_buf));
+               }
+       }
 
-                       if (VCONF_GET_KEY == option)
-                               kdbGet(g_kdb_handle, ks, parentKey,
-                                      KDB_O_NODIR | KDB_O_NORECURSIVE);
-                       else if (VCONF_GET_ALL == option)
-                               kdbGet(g_kdb_handle, ks, parentKey,
-                                      KDB_O_NORECURSIVE);
-                       else
-                               kdbGet(g_kdb_handle, ks, parentKey,
-                                      KDB_O_DIRONLY | KDB_O_NORECURSIVE);
-
-                       keyDel(parentKey);
-                       ksRewind(ks);
-                       while (((k = ksNext(ks)) != 0)) {
-                               switch (keyGetType(k)) {
+       if(ferror(fp)) {
+               err_no = errno;
+               func_ret = VCONF_ERROR_FILE_FGETS;
+       } else {
+               if(value) {
+                       switch(atoi(type))
+                       {
                                case VCONF_TYPE_INT:
-                                       get_value = keyValue(k);
-                                       if (_vconf_check_value_integrity
-                                           (get_value, VCONF_TYPE_INT) < 0) {
-                                               /* ERROR_HANDLING */
-                                               ERR("_vconf_check_value \
-                                               integrity (INT) Error");
-                                               ksDel(ks);
-                                               return -1;
-                                       }
-#ifdef ADDR_TRANS
-                                       if (changename_type) {
-                                               strncpy(orig_keyname +
-                                                       changename_type,
-                                                       keyName(k) +
-                                                       (changename_type - 2),
-                                                       BUF_LEN - 9);
-                                               vconf_keylist_add_int(keylist,
-                                                                     orig_keyname,
-                                                                     atoi
-                                                                     (get_value));
-                                       } else
-#endif
-                                               vconf_keylist_add_int(keylist,
-                                                                     keyName
-                                                                     (k),
-                                                                     atoi
-                                                                     (get_value));
-
+                               {
+                                       _vconf_keynode_set_value_int(keynode, atoi(value));
                                        break;
+                               }
                                case VCONF_TYPE_DOUBLE:
-                                       get_value = keyValue(k);
-                                       if (_vconf_check_value_integrity
-                                           (get_value,
-                                            VCONF_TYPE_DOUBLE) < 0) {
-                                               /* ERROR_HANDLING */
-                                               ERR("_vconf_check_value \
-                                               integrity (DBL) Error");
-                                               ksDel(ks);
-                                               return -1;
-                                       }
-#ifdef ADDR_TRANS
-                                       if (changename_type) {
-                                               strncpy(orig_keyname +
-                                                       changename_type,
-                                                       keyName(k) +
-                                                       (changename_type - 2),
-                                                       BUF_LEN - 9);
-                                               vconf_keylist_add_dbl(keylist,
-                                                                     orig_keyname,
-                                                                     atof
-                                                                     (get_value));
-                                       } else
-#endif
-                                               vconf_keylist_add_dbl(keylist,
-                                                                     keyName
-                                                                     (k),
-                                                                     atof
-                                                                     (get_value));
+                               {
+                                       _vconf_keynode_set_value_dbl(keynode, atof(value));
                                        break;
+                               }
                                case VCONF_TYPE_BOOL:
-                                       get_value = keyValue(k);
-                                       if (_vconf_check_value_integrity
-                                           (get_value, VCONF_TYPE_BOOL)
-                                           < 0) {
-                                               /* ERROR_HANDLING */
-                                               ERR("_vconf_check_value \
-                                               integrity (BOOL) Error");
-                                               ksDel(ks);
-                                               return -1;
-                                       }
-#ifdef ADDR_TRANS
-                                       if (changename_type) {
-                                               strncpy(orig_keyname +
-                                                       changename_type,
-                                                       keyName(k) +
-                                                       (changename_type - 2),
-                                                       BUF_LEN - 9);
-                                               vconf_keylist_add_bool(keylist,
-                                                                      orig_keyname,
-                                                                      atoi
-                                                                      (get_value));
-                                       } else
-#endif
-                                               vconf_keylist_add_bool(keylist,
-                                                                      keyName
-                                                                      (k),
-                                                                      atoi
-                                                                      (get_value));
+                               {
+                                       _vconf_keynode_set_value_bool(keynode, atoi(value));
                                        break;
+                               }
                                case VCONF_TYPE_STRING:
-                                       get_value = keyValue(k);
-                                       if (_vconf_check_value_integrity
-                                           (get_value,
-                                            VCONF_TYPE_STRING) < 0) {
-                                               /* ERROR_HANDLING */
-                                               ERR("_vconf_check_value \
-                                               integrity (STR) Error");
-                                               ksDel(ks);
-                                               return -1;
-                                       }
-#ifdef ADDR_TRANS
-                                       if (changename_type) {
-                                               strncpy(orig_keyname +
-                                                       changename_type,
-                                                       keyName(k) +
-                                                       (changename_type - 2),
-                                                       BUF_LEN - 9);
-                                               vconf_keylist_add_str(keylist,
-                                                                     orig_keyname,
-                                                                     (char *)
-                                                                     get_value);
-                                       } else
-#endif
-                                               vconf_keylist_add_str(keylist,
-                                                                     keyName
-                                                                     (k),
-                                                                     (char *)
-                                                                     get_value);
+                               {
+                                       _vconf_keynode_set_value_str(keynode, value);
                                        break;
-                               default:
-                                       if (keyIsDir(k)) {
-#ifdef ADDR_TRANS
-                                               if (changename_type) {
-                                                       strncpy(orig_keyname +
-                                                               changename_type,
-                                                               keyName(k) +
-                                                               (changename_type
-                                                                - 2),
-                                                               BUF_LEN - 9);
-                                                       _vconf_keylist_add_dir
-                                                           (keylist,
-                                                            orig_keyname);
-                                               } else
+                               }
+                               default :
+                               {
+                                       func_ret = VCONF_ERROR_WRONG_VALUE;
+                               }
+                       }
+               } else {
+                       if(atoi(type) == VCONF_TYPE_STRING) {
+                               _vconf_keynode_set_value_str(keynode, "");
+                       } else {
+                               func_ret = VCONF_ERROR_WRONG_VALUE;
+                       }
+               }
+       }
+
+out_return :
+       if(err_no != 0) {
+               strerror_r(err_no, err_buf, 100);
+               ERR("_vconf_set_key_filesys(%d/%s) step(%d) failed(%d / %s)\n", keynode->type, keynode->keyname, func_ret, err_no, err_buf);
+       }
+
+       if(value) free(value);
+
+       return func_ret;
+}
 #endif
-                                                       _vconf_keylist_add_dir
-                                                           (keylist,
-                                                            keyName(k));
+
+static int _vconf_get_key_filesys(keynode_t *keynode, int prefix)
+{
+       char path[KEY_PATH] = {0,};
+       int ret = -1;
+       int func_ret = VCONF_OK;
+       char err_buf[100] = { 0, };
+       int err_no = 0;
+       int type = 0;
+       FILE *fp = NULL;
+
+       errno = 0;
+
+       ret = _vconf_get_key_path(keynode->keyname, path);
+       retv_if(ret != VCONF_OK, ret);
+
+       if( (fp = fopen(path, "r")) == NULL ) {
+               func_ret = VCONF_ERROR_FILE_OPEN;
+               err_no = errno;
+               goto out_return;
+       }
+
+       if(prefix != VCONF_BACKEND_DB) {
+               _vconf_set_read_lock(fileno(fp));
+               if(errno != 0) {
+                       func_ret = VCONF_ERROR_FILE_LOCK;
+                       err_no = errno;
+                       goto out_close;
+               }
+       }
+
+       /* read data type */
+       if(!fread((void*)&type, sizeof(int), 1, fp)) {
+               if(ferror(fp)) {
+                       err_no = errno;
+               } else {
+                       errno = EAGAIN;
+               }
+               func_ret = VCONF_ERROR_FILE_FREAD;
+               goto out_unlock;
+       }
+
+       /* read data value */
+       switch(type)
+       {
+               case VCONF_TYPE_INT:
+               {
+                       int value_int = 0;
+                       if(!fread((void*)&value_int, sizeof(int), 1, fp)) {
+                               if(ferror(fp)) {
+                                       err_no = errno;
+                               } else {
+                                       errno = EAGAIN;
+                               }
+                               func_ret = VCONF_ERROR_FILE_FREAD;
+                               goto out_unlock;
+                       } else {
+                               _vconf_keynode_set_value_int(keynode, value_int);
+                       }
+
+                       break;
+               }
+               case VCONF_TYPE_DOUBLE:
+               {
+                       double value_dbl = 0;
+                       if(!fread((void*)&value_dbl, sizeof(double), 1, fp)) {
+                               if(ferror(fp)) {
+                                       err_no = errno;
+                               } else {
+                                       errno = EAGAIN;
+                               }
+                               func_ret = VCONF_ERROR_FILE_FREAD;
+                               goto out_unlock;
+                       } else {
+                               _vconf_keynode_set_value_dbl(keynode, value_dbl);
+                       }
+
+                       break;
+               }
+               case VCONF_TYPE_BOOL:
+               {
+                       int value_int = 0;
+                       if(!fread((void*)&value_int, sizeof(int), 1, fp)) {
+                               if(ferror(fp)) {
+                                       err_no = errno;
+                               } else {
+                                       errno = EAGAIN;
+                               }
+                               func_ret = VCONF_ERROR_FILE_FREAD;
+                               goto out_unlock;
+                       } else {
+                               _vconf_keynode_set_value_bool(keynode, value_int);
+                       }
+
+                       break;
+               }
+               case VCONF_TYPE_STRING:
+               {
+                       char file_buf[BUF_LEN] = {0,};
+                       char *value = NULL;
+                       int value_size = 0;
+
+                       while(fgets(file_buf, sizeof(file_buf), fp))
+                       {
+                               if(value) {
+                                       value_size = value_size + strlen(file_buf);
+                                       value = (char *) realloc(value, value_size);
+                                       if(value == NULL) {
+                                               func_ret = VCONF_ERROR_NO_MEM;
+                                               break;
+                                       }
+                                       strncat(value, file_buf, strlen(file_buf));
+                               } else {
+                                       value_size = strlen(file_buf) + 1;
+                                       value = (char *)malloc(value_size);
+                                       if(value == NULL) {
+                                               func_ret = VCONF_ERROR_NO_MEM;
+                                               break;
                                        }
-                                       /* else ERR("key(%s) has a value of 
-                                          Unknown Type(%d)", 
-                                          keyName(k), keyGetType(k)); */
+                                       memset(value, 0x00, value_size);
+                                       strncpy(value, file_buf, strlen(file_buf));
+                               }
+                       }
+
+                       if(ferror(fp)) {
+                               err_no = errno;
+                               func_ret = VCONF_ERROR_FILE_FGETS;
+                       } else {
+                               if(value) {
+                                       _vconf_keynode_set_value_str(keynode, value);
+                               } else {
+                                       _vconf_keynode_set_value_str(keynode, "");
                                }
                        }
-                       ksDel(ks);
+
                        break;
                }
-       default:
-               ERR("Key(%s) has Unknown Backend", in_parentDIR);
+               default :
+#ifdef SUPPORT_ELEKTRA_VALUE_FORMAT
+                       func_ret = _vconf_get_key_elektra_format(keynode, fp);
+#else
+                       func_ret = VCONF_ERROR_WRONG_TYPE;
+#endif
        }
-       vconf_keylist_rewind(keylist);
-       END_TIME_CHECK return 0;
+
+out_unlock :
+       if(prefix != VCONF_BACKEND_DB) {
+               _vconf_set_unlock(fileno(fp));
+               if(errno != 0) {
+                       func_ret = VCONF_ERROR_FILE_LOCK;
+                       err_no = errno;
+                       goto out_close;
+               }
+       }
+
+out_close :
+       fclose(fp);
+
+out_return :
+       if(err_no != 0) {
+               strerror_r(err_no, err_buf, 100);
+               ERR("_vconf_get_key_filesys(%d-%s) step(%d) failed(%d / %s)\n", keynode->type, keynode->keyname, func_ret, err_no, err_buf);
+       }
+
+       return func_ret;
 }
 
-static void *_vconf_get_key_value(char *key, type_t type, int backend_type)
+
+int _vconf_get_key(keynode_t *keynode)
 {
-       int error_loop_cnt = 0;
-       Key *k;
-       const void *get_value = NULL;
+       int func_ret = VCONF_OK;
+       int ret = 0;
+       int is_busy_err = 0;
+       int retry = -1;
+       int prefix = 0;
 
-       char key_path[PATH_MAX] = {0,};
-       void* return_value = NULL;
-       int val_len = 0;
+       ret = _vconf_get_key_prefix(keynode->keyname, &prefix);
+       retv_if(ret != VCONF_OK, ret);
 
-       if(key == NULL)
-               return NULL;
+       if(prefix == VCONF_BACKEND_DB) {
+               _vconf_db_begin_transaction();
+       }
 
- error_retry:
-       error_loop_cnt++;
-       if (error_loop_cnt == MAX_ERROR_LOOP_CNT + 1) {
-               ERR("_vconf_get_key_value : Retry %d times in error handler", error_loop_cnt - 1);
-               return NULL;
-       } else if(error_loop_cnt > 2) {
-               usleep(ERROR_LOOP_SLEEP_TIME);
-       } else if (error_loop_cnt == 2) {
-               switch(backend_type) {
-                       case VCONF_BACKEND_DB:
-                               snprintf(key_path, PATH_MAX, "%s/%s", KDB_USER_DIR, key);
-                               break;
-                       case VCONF_BACKEND_FILE:
-                               snprintf(key_path, PATH_MAX, "%s/%s", KDB_SYSTEM_DIR, key);
-                               break;
-                       case VCONF_BACKEND_MEMORY:
-                               snprintf(key_path, PATH_MAX, "%s/%s", KDB_MEMORY_DIR, key);
-                               break;
-                       default:
-                               ERR("_vconf_get_key_value : Invalid argument(wrong prefix(%d) of key)", type);
-                               return NULL;
-               }
+       while((ret = _vconf_get_key_filesys(keynode, prefix)) != VCONF_OK)
+       {
+               is_busy_err = 0;
+               retry++;
 
-               if(access(key_path, F_OK) != 0) {
-                       if (errno == ENOENT) {
-                               ERR("_vconf_get_key_value : Key does not exist: %s", key);
-                               return NULL;
+               if(ret == VCONF_ERROR_FILE_OPEN)
+               {
+                       switch (errno)
+                       {
+                               case EAGAIN :
+                               case EMFILE :
+                               case ETXTBSY :
+                               {
+                                       is_busy_err = 1;
+                               }
+                       }
+               }
+               else if (ret == VCONF_ERROR_FILE_LOCK)
+               {
+                       switch (errno)
+                       {
+                               case EBADF :
+                               case EACCES :
+                               case EAGAIN :
+                               case ENOLCK :
+                               {
+                                       is_busy_err = 1;
+                               }
                        }
                }
+               else if (ret == VCONF_ERROR_FILE_FREAD)
+               {
+                       switch (errno)
+                       {
+                               case EAGAIN :
+                               case EINTR :
+                               case EIO :
+                               {
+                                       is_busy_err = 1;
+                               }
+                       }
+               }
+               else
+               {
+                       is_busy_err = 0;
+               }
+
+               if ((is_busy_err == 1) && (retry < VCONF_ERROR_RETRY_CNT)) {
+                       ERR("%s : read buf error(%d). read will be retried(%d) , %d\n", keynode->keyname, ret, retry, (retry)*VCONF_ERROR_RETRY_SLEEP_UTIME);
+                       usleep((retry)*VCONF_ERROR_RETRY_SLEEP_UTIME);
+                       continue;
+               } else {
+                       ERR("%s : read buf error(%d). break\n",  keynode->keyname, ret);
+                       func_ret = VCONF_ERROR;
+                       break;
+               }
+       }
 
-               usleep(ERROR_LOOP_SLEEP_TIME);
+       if(prefix == VCONF_BACKEND_DB) {
+               if(func_ret == VCONF_ERROR) {
+                       _vconf_db_rollback_transaction();
+               } else {
+                       _vconf_db_commit_transaction();
+               }
        }
 
-       k = _vconf_kdb_get(key);
-       if (k == NULL) {
-               ERR("_vconf_get_key_value : kdb Get(%s) failed", key);
-               goto error_retry;
+       return func_ret;
+}
+
+static int _vconf_check_value_integrity(const void *value, int type)
+{
+       int i = 0;
+
+       if ((type == VCONF_TYPE_STRING) && (value != NULL)) {
+               return 0;
        }
 
-       if (keyGetType(k) == type) {
-               if (type == VCONF_TYPE_STRING) {
-                       get_value = takeout_keyValue(k);
+       if ((value) && (strlen(value) > 0)) {
+               if ((type == VCONF_TYPE_INT) ||
+                       (type == VCONF_TYPE_BOOL)||
+                       (type == VCONF_TYPE_DOUBLE)) {
+                       while (*(((char *)value) + i) != '\0') {
+                               if ( !isdigit(*(((char *)value) + i)) ) {
+                                       if ((type != VCONF_TYPE_BOOL) &&
+                                               (*(((char *)value) + i) != '-')) {
+                                               if ((type == VCONF_TYPE_DOUBLE) &&
+                                                       (*(((char *)value) + i) != '.')) {
+                                                       ERR("ERROR : vconf value is not digit.");
+                                                       return -1;
+                                               }
+                                       }
+                               }
+                               i++;
+                       }
+               }
+
+               return 0;
+       } else {
+               ERR("ERROR : vconf value is NULL.");
+               return -2;
+       }
+}
+
+int _vconf_path_is_dir(char* path)
+{
+       struct stat entryInfo;
+
+       if(lstat(path, &entryInfo) == 0 ) {
+               if( S_ISDIR( entryInfo.st_mode ) ) {
+                       return 1;
                } else {
-                       get_value = keyValue(k);
+                       return 0;
+               }
+       } else {
+               return VCONF_ERROR;
+       }
+}
+
+API int vconf_get(keylist_t *keylist, const char *dirpath, get_option_t option)
+{
+       DIR *dir = NULL;
+       struct dirent entry;
+       struct dirent *result = NULL;
+       char full_file_path[KEY_PATH] = {0,};
+       char file_path[KEY_PATH] = {0,};
+       char full_path[KEY_PATH] = {0,};
+       char err_buf[ERR_LEN] = {0,};
+       int rc = 0;
+       int func_ret = 0;
+       int ret = 0;
+       int is_dir = 0;
+       int prefix = 0;
+
+       keynode_t *temp_keynode;
+
+       retvm_if(keylist == NULL, VCONF_ERROR, "Invalid argument: keylist is null");
+       retvm_if(dirpath == NULL, VCONF_ERROR, "Invalid argument: dirpath is null");
+
+       temp_keynode = _vconf_keylist_headnode(keylist);
+
+       if ((NULL != temp_keynode) && (VCONF_GET_KEY != option)) {
+               ERR("Not support mode : Only VCONF_GET_KEY \
+               option support To retrieve key with keylist");
+               return VCONF_ERROR;
+       }
+
+       if(temp_keynode != NULL) {
+               while(_vconf_keynode_next(temp_keynode)) {
+                       temp_keynode = _vconf_keynode_next(temp_keynode);
                }
+       }
+
+       ret = _vconf_get_key_path(dirpath, full_path);
+       retvm_if(ret != VCONF_OK, ret, "Invalid argument: key is not valid");
+
 
-               if (_vconf_check_value_integrity(get_value, type) < 0) {
-                       keyDel(k);
-                       get_value = NULL;
-                       goto error_retry;
+       ret = _vconf_get_key_prefix(dirpath, &prefix);
+       retv_if(ret != VCONF_OK, ret);
+
+       if(prefix == VCONF_BACKEND_DB) {
+               _vconf_db_begin_transaction();
+       }
+
+       is_dir = _vconf_path_is_dir(full_path);
+       if(is_dir == 1) {
+               if((dir=opendir(full_path)) == NULL) {
+                       strerror_r(errno, err_buf, ERR_LEN);
+                       ERR("ERROR : open directory(%s) fail(%s)", dirpath, err_buf);
+                       return VCONF_ERROR;
                }
 
-               return_value = NULL;
+               if((readdir_r(dir, &entry, &result)) != 0) {
+                       closedir(dir);
+                       strerror_r(errno, err_buf, ERR_LEN);
+                       ERR("ERROR : read directory(%s) fail(%s)", dirpath, err_buf);
+                       func_ret = VCONF_ERROR;
+               }
 
-               if(strlen(get_value) == 0) {
-                       return_value = get_value;
-               } else {
-                       val_len = strlen(get_value)+1;
-                       return_value = malloc(val_len);
-                       if(return_value != NULL) {
-                               memset(return_value, 0x00, val_len);
-                               memcpy(return_value, get_value, val_len-1);                             
+               while(result != NULL)
+               {
+                       if(( strcmp( entry.d_name, ".") == 0 ) || ( strcmp( entry.d_name, "..") == 0 )) {
+                           goto NEXT;
+                       }
+
+                       keynode_t* keynode = _vconf_keynode_new();
+                       if(keynode == NULL) {
+                               closedir(dir);
+                               ERR("Invalid argument: key malloc fail");
+                               return VCONF_ERROR;
+                       }
+
+                       snprintf(file_path, KEY_PATH, "%s/%s", dirpath, entry.d_name);
+                       snprintf(full_file_path, KEY_PATH, "%s/%s", full_path, entry.d_name);
+
+                       rc = _vconf_path_is_dir(full_file_path);
+                       if(rc != VCONF_ERROR) {
+                               if(rc == 1) {
+                                       /* directory */
+                                       if(option == VCONF_GET_KEY) {
+                                               goto NEXT;
+                                       } else {
+                                               _vconf_keynode_set_keyname(keynode, file_path);
+                                               _vconf_keynode_set_dir(keynode);
+                                       }
+                               } else {
+                                       _vconf_keynode_set_keyname(keynode, file_path);
+                                       _vconf_get_key(keynode);
+                               }
+
+                               if (keylist->head && temp_keynode != NULL)
+                               {
+                                       temp_keynode->next = keynode;
+                                       temp_keynode = _vconf_keynode_next(temp_keynode);
+                               }
+                               else {
+                                       keylist->head = keynode;
+                                       temp_keynode = keylist->head;
+                               }
+                               keylist->num += 1;
                        } else {
-                               ERR("_vconf_get_key_value : malloc fail");
+                               _vconf_keynode_free(keynode);
+
+                               memset(err_buf, 0x00, sizeof(err_buf));
+                               strerror_r(errno, err_buf, sizeof(err_buf));
+                               ERR("ERROR : get path(%s) fail(%s)", file_path, err_buf);
+                               func_ret = VCONF_ERROR;
+                       }
+
+       NEXT:
+                       if((readdir_r(dir, &entry, &result)) != 0) {
+                               memset(err_buf, 0x00, sizeof(err_buf));
+                               strerror_r(errno, err_buf, sizeof(err_buf));
+                               ERR("ERROR : read directory(%s) fail(%s)", dirpath, err_buf);
+                               func_ret = VCONF_ERROR;
                        }
                }
 
-               keyDel(k);
+               if((closedir(dir)) != 0) {
+                       memset(err_buf, 0x00, sizeof(err_buf));
+                       strerror_r(errno, err_buf, sizeof(err_buf));
+                       ERR("ERROR : close directory(%s) fail(%s)", dirpath, err_buf);
+                       func_ret = VCONF_ERROR;
+               }
+       } else if(is_dir == 0) {
+               keynode_t* keynode = _vconf_keynode_new();
+               retvm_if(keynode == NULL, VCONF_ERROR, "Invalid argument: key malloc fail");
+
+               _vconf_keynode_set_keyname(keynode, dirpath);
+
+               _vconf_get_key(keynode);
 
-               return return_value;
+               if (keylist->head && temp_keynode != NULL) {
+                       temp_keynode->next = keynode;
+                       //temp_keynode = _vconf_keynode_next(temp_keynode);
+               } else {
+                       keylist->head = keynode;
+                       temp_keynode = keylist->head;
+               }
+               keylist->num += 1;
        } else {
-               ERR("_vconf_get_key_value : vconf key type is not int.");
-               keyDel(k);
-               return NULL;
+               return VCONF_ERROR;
+       }
+       vconf_keylist_rewind(keylist);
+
+       if(prefix == VCONF_BACKEND_DB) {
+               if(func_ret == VCONF_ERROR) {
+                       _vconf_db_rollback_transaction();
+               } else {
+                       _vconf_db_commit_transaction();
+               }
        }
+
+       return func_ret;
 }
 
 /*
@@ -1505,42 +1804,30 @@ static void *_vconf_get_key_value(char *key, type_t type, int backend_type)
  */
 API int vconf_get_int(const char *in_key, int *intval)
 {
-       START_TIME_CHECK char *key;
-       int backend_type;
-       void *value = NULL;
-
-       retvm_if(intval == NULL, -1, "vconf_get_int : Invaild argument(%s) - intval is NULL", in_key);
-       backend_type = trans_keyname(in_key, &key);
-       retvm_if(backend_type == VCONF_BACKEND_NULL, -1,
-                "vconf_get_int : Invalid argument - Key(%s) Backend is not valid", in_key);
-       retvm_if(-1 == check_connetion(backend_type, NULL), -1,
-                "vconf_get_int : Connection Fail(%s)", in_key);
-
-       switch (backend_type) {
-       case VCONF_BACKEND_DB:
-       case VCONF_BACKEND_FILE:
-       case VCONF_BACKEND_MEMORY:
-
-               value = _vconf_get_key_value(key, VCONF_TYPE_INT, backend_type);
-#ifdef ADDR_TRANS
-               if (key != in_key)
-                       free(key);
-#endif
-               if (value != NULL) {
-                       *intval = atoi(value);
-                       free(value);
-               } else {
-                       ERR("vconf_get_int : _vconf_get_key_value(%s) fail", in_key);
-                       return -1;
-               }
+       START_TIME_CHECK
+
+       retvm_if(in_key == NULL, VCONF_ERROR, "Invalid argument: key is null");
+       retvm_if(intval == NULL, VCONF_ERROR, "Invalid argument: output buffer is null");
+
+       int func_ret = VCONF_OK;
+       keynode_t* pKeyNode = _vconf_keynode_new();
+       retvm_if(pKeyNode == NULL, VCONF_ERROR, "key malloc fail");
+
+       _vconf_keynode_set_keyname(pKeyNode, in_key);
 
-               break;
-       default:
-               ERR("vconf_get_int : Key(%s) has Unknown Backend", in_key);
-               return -1;
+       if (_vconf_get_key(pKeyNode) != VCONF_OK) {
+               ERR("vconf_get_int(%d) : %s error", getpid(), in_key);
+               func_ret = VCONF_ERROR;
+       } else {
+               *intval = vconf_keynode_get_int(pKeyNode);
+               INFO("vconf_get_int(%d) : %s(%d) success", getpid(), in_key, *intval);
        }
 
-       END_TIME_CHECK return 0;
+       _vconf_keynode_free(pKeyNode);
+
+       END_TIME_CHECK
+
+       return func_ret;
 }
 
 /*
@@ -1551,42 +1838,30 @@ API int vconf_get_int(const char *in_key, int *intval)
  */
 API int vconf_get_bool(const char *in_key, int *boolval)
 {
-       START_TIME_CHECK 
-       char *key;
-       int backend_type;
-       void *value = NULL;
-
-       retvm_if(boolval == NULL, -1, "vconf_get_bool : Invaild argument(%s) - boolval is NULL", in_key);
-       backend_type = trans_keyname(in_key, &key);
-       retvm_if(backend_type == VCONF_BACKEND_NULL, -1,
-                "vconf_get_bool : Invalid argument - Key(%s) Backend is not valid", in_key);
-       retvm_if(-1 == check_connetion(backend_type, NULL), -1,
-                "vconf_get_bool : Connection Fail(%s)", in_key);
-
-       switch (backend_type) {
-       case VCONF_BACKEND_DB:
-       case VCONF_BACKEND_FILE:
-       case VCONF_BACKEND_MEMORY:
-
-               value = _vconf_get_key_value(key, VCONF_TYPE_BOOL, backend_type);
-#ifdef ADDR_TRANS
-               if (key != in_key)
-                       free(key);
-#endif
-               if (value != NULL) {
-                       *boolval = !!atoi(value);
-                       free(value);
-               } else {
-                       ERR("vconf_get_bool : _vconf_get_key_value(%s) fail", in_key);
-                       return -1;
-               }
-               break;
-       default:
-               ERR("vconf_get_bool: Key(%s) has Unknown Backend", in_key);
+       START_TIME_CHECK
+
+       retvm_if(in_key == NULL, VCONF_ERROR, "Invalid argument: key is null");
+       retvm_if(boolval == NULL, VCONF_ERROR, "Invalid argument: output buffer is null");
+
+       int func_ret = VCONF_OK;
+       keynode_t* pKeyNode = _vconf_keynode_new();
+       retvm_if(pKeyNode == NULL, VCONF_ERROR, "key malloc fail");
+
+       _vconf_keynode_set_keyname(pKeyNode, in_key);
+
+       if (_vconf_get_key(pKeyNode) != VCONF_OK) {
+               ERR("vconf_get_bool(%d) : %s error", getpid(), in_key);
+               func_ret = VCONF_ERROR;
+       } else {
+               *boolval = vconf_keynode_get_bool(pKeyNode);
+               INFO("vconf_get_bool(%d) : %s(%d) success", getpid(), in_key, *boolval);
        }
 
+       _vconf_keynode_free(pKeyNode);
+
        END_TIME_CHECK
-       return 0;
+
+       return func_ret;
 }
 
 /*
@@ -1597,41 +1872,30 @@ API int vconf_get_bool(const char *in_key, int *boolval)
  */
 API int vconf_get_dbl(const char *in_key, double *dblval)
 {
-       START_TIME_CHECK char *key;
-       int backend_type;
-       void *value = NULL;
-
-       retvm_if(dblval == NULL, -1, "vconf_get_dbl : Invaild argument(%s) - dblval is NULL)", in_key);
-       backend_type = trans_keyname(in_key, &key);
-       retvm_if(backend_type == VCONF_BACKEND_NULL, -1,
-                "vconf_get_dbl : Invalid argument - Key(%s) Backend is not valid", in_key);
-       retvm_if(-1 == check_connetion(backend_type, NULL), -1,
-                "vconf_get_dbl : Connection Fail(%s)", in_key);
-
-       switch (backend_type) {
-       case VCONF_BACKEND_DB:
-       case VCONF_BACKEND_FILE:
-       case VCONF_BACKEND_MEMORY:
-
-               value = _vconf_get_key_value(key, VCONF_TYPE_DOUBLE, backend_type);
-#ifdef ADDR_TRANS
-               if (key != in_key)
-                       free(key);
-#endif
-               if (value != NULL) {
-                       *dblval = atof(value);
-                       free(value);
-               } else {
-                       ERR("vconf_get_dbl : _vconf_get_key_value(%s) fail", in_key);
-                       return -1;
-               }
-               break;
-       default:
-               ERR("vconf_get_dbl : Key(%s) has Unknown Backend", in_key);
+       START_TIME_CHECK
+
+       retvm_if(in_key == NULL, VCONF_ERROR, "Invalid argument: key is null");
+       retvm_if(dblval == NULL, VCONF_ERROR, "Invalid argument: output buffer is null");
+
+       int func_ret = VCONF_OK;
+       keynode_t* pKeyNode = _vconf_keynode_new();
+       retvm_if(pKeyNode == NULL, VCONF_ERROR, "key malloc fail");
+
+       _vconf_keynode_set_keyname(pKeyNode, in_key);
+
+       if (_vconf_get_key(pKeyNode) != VCONF_OK) {
+               ERR("vconf_get_dbl(%d) : %s error", getpid(), in_key);
+               func_ret = VCONF_ERROR;
+       } else {
+               *dblval = vconf_keynode_get_dbl(pKeyNode);
+               INFO("vconf_get_dbl(%d) : %s(%f) success", getpid(), in_key, *dblval);
        }
-       
+
+       _vconf_keynode_free(pKeyNode);
+
        END_TIME_CHECK
-       return 0;
+
+       return func_ret;
 }
 
 /*
@@ -1641,43 +1905,32 @@ API int vconf_get_dbl(const char *in_key, double *dblval)
  */
 API char *vconf_get_str(const char *in_key)
 {
-       START_TIME_CHECK 
-       char *key;
-       int backend_type;
-       void *value = NULL;
+       START_TIME_CHECK
+
+       retvm_if(in_key == NULL, NULL, "Invalid argument: key is null");
+
+       keynode_t* pKeyNode = _vconf_keynode_new();
+       retvm_if(pKeyNode == NULL, NULL, "key malloc fail");
+
+       _vconf_keynode_set_keyname(pKeyNode, in_key);
+
        char *strval = NULL;
+       char *tempstr = NULL;
 
-       backend_type = trans_keyname(in_key, &key);
-       retvm_if(backend_type == VCONF_BACKEND_NULL, NULL,
-                "vconf_get_str : Invalid argument - Key(%s) Backend is not valid", in_key);
-       retvm_if(-1 == check_connetion(backend_type, NULL), NULL,
-                "vconf_get_str : Connection Fail(%s)", in_key);
-
-       switch (backend_type) {
-       case VCONF_BACKEND_DB:
-       case VCONF_BACKEND_FILE:
-       case VCONF_BACKEND_MEMORY:
-               value = _vconf_get_key_value(key, VCONF_TYPE_STRING, backend_type);
-#ifdef ADDR_TRANS
-               if (key != in_key)
-                       free(key);
-#endif
-               if (value != NULL) {
-                       if(strlen(value) == 0) {
-                               INFO("vconf_get_str : _vconf_get_key_value(%s) is NULL string('')", in_key);
-                       }       
-                       strval = (char *)value;
-               } else {
-                       ERR("vconf_get_str : _vconf_get_key_value(%s) is NULL", in_key);
-                       return NULL;
-               }
-               break;
-       default:
-               ERR("vconf_get_str : Key(%s) has Unknown Backend", in_key);
+       if (_vconf_get_key(pKeyNode) != VCONF_OK) {
+               ERR("vconf_get_str(%d) : %s error", getpid(), in_key);
+       } else {
+               tempstr = vconf_keynode_get_str(pKeyNode);
+               if(tempstr)
+                       strval = strdup(tempstr);
+               INFO("vconf_get_str(%d) : %s success", getpid(), in_key);
        }
 
-       INFO("vconf_get_str : key(%s) is %s", in_key, strval);
-       END_TIME_CHECK return strval;
+       _vconf_keynode_free(pKeyNode);
+
+       END_TIME_CHECK
+
+       return strval;
 }
 
 /*
@@ -1687,48 +1940,34 @@ API char *vconf_get_str(const char *in_key)
  */
 API int vconf_unset(const char *in_key)
 {
-       /* START_TIME_CHECK */
-       char *key;
-       int backend_type;
-       int error_loop_cnt = 0;
-
-       backend_type = trans_keyname(in_key, &key);
-       retvm_if(backend_type == VCONF_BACKEND_NULL, -1,
-                "Invalid argument: Backend is not valid");
-       retvm_if(-1 == check_connetion(backend_type, NULL), -1,
-                "Connection Fail(%s)", in_key);
-
-       switch (backend_type) {
-       case VCONF_BACKEND_DB:
-       case VCONF_BACKEND_FILE:
-       case VCONF_BACKEND_MEMORY:
-
-               while (kdbRemove(g_kdb_handle, key)) {
-                       if (error_loop_cnt == MAX_ERROR_LOOP_CNT) {
-                               ERR("Retry %d times in error handler",
-                                   error_loop_cnt);
-#ifdef ADDR_TRANS
-                               if (key != in_key)
-                                       free(key);
-#endif
-                               return -1;
-                       } else {
-                               usleep(ERROR_LOOP_SLEEP_TIME);
-                               error_loop_cnt++;
-                       }
+       START_TIME_CHECK
+
+       char path[KEY_PATH] = {0,};
+       int ret = -1;
+       int err_retry = VCONF_ERROR_RETRY_CNT;
+       int func_ret = VCONF_OK;
+
+       retvm_if(in_key == NULL, VCONF_ERROR, "Invalid argument: key is null");
+
+       ret = _vconf_get_key_path(in_key, path);
+       retvm_if(ret != VCONF_OK, VCONF_ERROR, "Invalid argument: key is not valid");
+
+       do {
+               ret = remove(path);
+               if(ret == -1) {
+                       ERR("vconf_unset error(%d) : %s", errno, in_key);
+                       func_ret = VCONF_ERROR;
+               } else {
+                       func_ret = VCONF_OK;
+                       break;
                }
-#ifdef ADDR_TRANS
-               if (key != in_key)
-                       free(key);
-#endif
-               break;
-       default:
-               ERR("Key(%s) has Unknown Backend", in_key);
-       }
+       } while(err_retry--);
 
-       INFO("%s End", in_key);
-       /* END_TIME_CHECK */
-       return 0;
+       INFO("vconf_unset success : %s", in_key);
+
+       END_TIME_CHECK
+
+       return func_ret;
 }
 
 /*
@@ -1738,161 +1977,140 @@ API int vconf_unset(const char *in_key)
  */
 API int vconf_unset_recursive(const char *in_dir)
 {
-       START_TIME_CHECK char *key;
-       int backend_type;
-       KeySet *ks;
-       Key *k;
-       int error_loop_cnt = 0;
+       START_TIME_CHECK
+
+       DIR *dir = NULL;
+       struct dirent entry;
+       struct dirent *result = NULL;
+       char fullpath[KEY_PATH] = {0,};
+       char dirpath[KEY_PATH] = {0,};
+       char err_buf[ERR_LEN] = {0,};
+       int rc = 0;
+       int func_ret = 0;
        int ret = 0;
 
-       backend_type = trans_keyname(in_dir, &key);
-       retvm_if(backend_type == VCONF_BACKEND_NULL, -1,
-                "Invalid argument: Backend is not valid");
-       retvm_if(-1 == check_connetion(backend_type, NULL), -1,
-                "Connection Fail(%s)", in_dir);
-
-       switch (backend_type) {
-       case VCONF_BACKEND_DB:
-       case VCONF_BACKEND_FILE:
-       case VCONF_BACKEND_MEMORY:
-               ks = ksNew(0);
-               ksAppendKey(ks, keyNew(key, KEY_END));
-               _vconf_get_recursive(&ks, key);
-
-               if (ksGetSize(ks)) {
-                       ksRewind(ks);
-                       while (((k = ksNext(ks)) != 0)) {
-                               DBG("recursive unset (%s)", 
-                                       keyName(k));
-                               keyRemove(k);
+       retvm_if(in_dir == NULL, VCONF_ERROR, "Invalid argument: dir path is null");
+
+       ret = _vconf_get_key_path(in_dir, dirpath);
+       retvm_if(ret != VCONF_OK, VCONF_ERROR, "Invalid argument: key is not valid");
+
+       if((dir=opendir(dirpath)) == NULL) {
+               strerror_r(errno, err_buf, ERR_LEN);
+               ERR("ERROR : open directory(%s) fail(%s)", in_dir, err_buf);
+               return VCONF_ERROR;
+       }
+
+       if((readdir_r(dir, &entry, &result)) != 0) {
+               strerror_r(errno, err_buf, ERR_LEN);
+               ERR("ERROR : read directory(%s) fail(%s)", in_dir, err_buf);
+               func_ret = VCONF_ERROR;
+       }
+
+       while(result != NULL)
+       {
+               if(( strcmp( entry.d_name, ".") == 0 ) || ( strcmp( entry.d_name, "..") == 0 )) {
+                   goto NEXT;
+               }
+
+               snprintf(fullpath,KEY_PATH, "%s/%s", dirpath, entry.d_name);
+
+               ret = _vconf_path_is_dir(fullpath);
+               if(ret != VCONF_ERROR) {
+                       if(ret == 1) {
+                               rc = vconf_unset_recursive(fullpath);
+                               if(rc == VCONF_ERROR)
+                                       func_ret = VCONF_ERROR;
                        }
 
-                       while (kdbSet(g_kdb_handle, ks, 0, 0)) {
-                               /* We got an error. Warn user. */
-                               Key *problem;
-                               char keyname[300] = "";
-
-                               problem = ksCurrent(ks);
-                               if (problem)
-                                       keyGetFullName(problem, keyname, sizeof(keyname));
-
-                               DBG("kdbSet error: while removing %s. try %d times", 
-                                       keyname, error_loop_cnt+1);
-
-                               /*
-                               retry to unset failed keys for error count times
-                               if unset key is failed for error count times 
-                               try to set keys from the next key
-                               unless we reached the end of KeySet
-                               */      
-                               if (error_loop_cnt == MAX_ERROR_LOOP_CNT) {
-                                       ERR("kdbSet error: while removing %s. error will be returned", 
-                                               keyname);
-                                       ret = -1;
-                                       if (ksNext(ks) == 0)
-                                               break;
-                               } else {
-                                       usleep(ERROR_LOOP_SLEEP_TIME);
-                                       error_loop_cnt++;
-                               }
+                       rc = remove(fullpath);
+                       if(rc == -1) {
+                               memset(err_buf, 0x00, sizeof(err_buf));
+                               strerror_r(errno, err_buf, sizeof(err_buf));
+                               ERR("ERROR : remove path(%s) fail(%s)", in_dir, err_buf);
+                               func_ret = VCONF_ERROR;
                        }
                } else {
-                       ERR("DIR(%s) has no keys or is not Unknown Directory name", 
-                               in_dir);
+                       memset(err_buf, 0x00, sizeof(err_buf));
+                       strerror_r(errno, err_buf, sizeof(err_buf));
+                       ERR("ERROR : remove path(%s) fail(%s)", in_dir, err_buf);
+                       func_ret = VCONF_ERROR;
+               }
+NEXT:
+               if((readdir_r(dir, &entry, &result)) != 0) {
+                       memset(err_buf, 0x00, sizeof(err_buf));
+                       strerror_r(errno, err_buf, sizeof(err_buf));
+                       ERR("ERROR : read directory(%s) fail(%s)", in_dir, err_buf);
+                       func_ret = VCONF_ERROR;
                }
-               
-               ksDel(ks);
-#ifdef ADDR_TRANS
-               if (key != in_dir)
-                       free(key);
-#endif
-               break;
-       default:
-               ERR("Key(%s) has Unknown Backend", in_dir);
        }
 
-       DBG("unset recursive %s End", in_dir);
-       
-       END_TIME_CHECK 
-       return ret;
-}
-
-API int vconf_notify_key_changed
-       (const char *in_key, vconf_callback_fn cb, void *user_data) {
-       /* START_TIME_CHECK */
-       int backend_type;
-       char *key;
-
-       retvm_if(cb == NULL, -1, "Invalid argument: cb(%p)", cb);
-
-       backend_type = trans_keyname(in_key, &key);
-       retvm_if(backend_type == VCONF_BACKEND_NULL, -1,
-                "Invalid argument: (%s)Backend is not valid", in_key);
-
-       switch (backend_type) {
-       case VCONF_BACKEND_DB:
-       case VCONF_BACKEND_FILE:
-       case VCONF_BACKEND_MEMORY:
-               if (_vconf_kdb_add_notify(backend_type, key, cb, user_data)) {
-                       ERR("vconf_notify_key_changed : key(%s) add notify fail",
-                           in_key);
-#ifdef ADDR_TRANS
-                       if (key != in_key)
-                               free(key);
-#endif
-                       return -1;
+       if((closedir(dir)) != 0) {
+               memset(err_buf, 0x00, sizeof(err_buf));
+               strerror_r(errno, err_buf, sizeof(err_buf));
+               ERR("ERROR : close directory(%s) fail(%s)", in_dir, err_buf);
+               func_ret = VCONF_ERROR;
+       }
+#if 0
+       if(func_ret == VCONF_OK) {
+               if((remove(in_dir)) == -1) {
+                       memset(err_buf, 0x00, sizeof(err_buf));
+                       strerror_r(errno, err_buf, sizeof(err_buf));
+                       ERR("ERROR : remove path(%s) fail(%s)", in_dir, err_buf);
+                       func_ret = VCONF_ERROR;
                }
-#ifdef ADDR_TRANS
-               if (key != in_key)
-                       free(key);
+       }
 #endif
-               break;
-       default:
-               ERR("vconf_notify_key_changed : Key(%s) has Unknown Backend", in_key);
+
+       return func_ret;
+}
+
+API int vconf_notify_key_changed(const char *in_key, vconf_callback_fn cb, void *user_data)
+{
+       START_TIME_CHECK
+
+       retvm_if(in_key == NULL, VCONF_ERROR, "Invalid argument: key is null");
+       retvm_if(cb == NULL, VCONF_ERROR, "Invalid argument: cb(%p)", cb);
+
+       if (_vconf_kdb_add_notify(in_key, cb, user_data)) {
+               ERR("vconf_notify_key_changed : key(%s) add notify fail", in_key);
+               return VCONF_ERROR;
        }
 
        INFO("vconf_notify_key_changed : %s noti is added", in_key);
 
-       /* END_TIME_CHECK */
-       return 0;
+       END_TIME_CHECK
+
+       return VCONF_OK;
 }
 
 API int vconf_ignore_key_changed(const char *in_key, vconf_callback_fn cb)
 {
-       /* START_TIME_CHECK */
-       int backend_type;
-       char *key;
-
-       retvm_if(cb == NULL, -1, "Invalid argument: cb(%p)", cb);
-
-       backend_type = trans_keyname(in_key, &key);
-       retvm_if(backend_type == VCONF_BACKEND_NULL, -1,
-                "Invalid argument: (%s)Backend is not valid", in_key);
-
-       switch (backend_type) {
-       case VCONF_BACKEND_DB:
-       case VCONF_BACKEND_FILE:
-       case VCONF_BACKEND_MEMORY:
-               if (_vconf_kdb_del_notify(backend_type, key, cb)) {
-                       ERR("vconf_ignore_key_changed() failed: key(%s)",
-                           in_key);
-#ifdef ADDR_TRANS
-                       if (key != in_key)
-                               free(key);
-#endif
-                       return -1;
-               }
-#ifdef ADDR_TRANS
-               if (key != in_key)
-                       free(key);
-#endif
-               break;
-       default:
-               ERR("Key(%s) has Unknown Backend", in_key);
+       START_TIME_CHECK
+
+       retvm_if(in_key == NULL, VCONF_ERROR, "Invalid argument: key is null");
+       retvm_if(cb == NULL, VCONF_ERROR, "Invalid argument: cb(%p)", cb);
+
+       if (_vconf_kdb_del_notify(in_key, cb)) {
+               ERR("vconf_ignore_key_changed() failed: key(%s)", in_key);
+               return VCONF_ERROR;
        }
 
        INFO("vconf_ignore_key_changed : %s noti removed", in_key);
-       /* END_TIME_CHECK */
+
+       END_TIME_CHECK
+
+       return VCONF_OK;
+}
+
+API mode_t vconf_set_permission(mode_t mode)
+{
+       /* TODO: implement! */
+       return mode;
+}
+
+API int vconf_set_key_permission(const char *in_key, const mode_t mode)
+{
+       /* TODO: implement! */
        return 0;
 }
 
index b0c3e1b3c1e0c91d0d9ac7eb0b9d2d5d7009ea5e..0579157bc0bc00687e1eb141ea1cc36c22ff5df8 100755 (executable)
@@ -31,6 +31,9 @@
 #include <sys/stat.h>
 #include <sys/types.h>
 #include <fcntl.h>
+#include <errno.h>
+
+#include <wordexp.h>
 
 enum {
        VCONFTOOL_TYPE_NO = 0x00,
@@ -42,9 +45,6 @@ enum {
 
 #define BUFSIZE                1024
 
-const int SHARED_PERM = 0664;
-const int USER_PERM = 0644;
-
 const char *BACKEND_DB_PREFIX = "db/";
 const char *BACKEND_FILE_PREFIX = "file/";
 const char *BACKEND_MEMORY_PREFIX = "memory/";
@@ -150,6 +150,151 @@ static int check_type(void)
        return VCONFTOOL_TYPE_NO;
 }
 
+static int __system(char * cmd)
+{
+       int status;
+       pid_t cpid;
+
+       if((cpid = fork()) < 0) {
+               perror("fork");
+               return -1;
+       }
+
+       if (cpid == 0) {
+               /* child */
+               wordexp_t p;
+               char **w;
+
+               wordexp(cmd, &p, 0);
+               w = p.we_wordv;
+
+               execv(w[0], (char *const *)w);
+
+               wordfree(&p);
+
+               _exit(-1);
+       } else {
+               /* parent */
+               if (waitpid(cpid, &status, 0) == -1) {
+                       perror("waitpid failed");
+                       return -1;
+               }
+               if (WIFSIGNALED(status)) {
+                       printf("signal(%d)\n", WTERMSIG(status));
+                       perror("exit by signal");
+                       return -1;
+               }
+               if (!WIFEXITED(status)) {
+                       perror("exit abnormally");
+                       return -1;
+               }
+               if (WIFEXITED(status) && WEXITSTATUS(status)) {
+                       perror("child return error");
+                       return -1;
+               }
+       }
+
+       return 0;
+}
+
+static void disable_invalid_char(char* src)
+{
+       char* tmp;
+
+       for(tmp = src; *tmp; ++tmp)
+       {
+               if( (*tmp == ';') || (*tmp == '|') )
+               {
+                       fprintf(stderr,"invalid char is found\n");
+                       *tmp = '_';
+               }
+       }
+}
+
+static int check_file_path_mode(char* file_path)
+{
+       char szCmd[BUFSIZE] = {0,};
+       int create_file = 0;
+       int set_id = 0;
+       int fd;
+
+       if (guid || uid) {
+               if (getuid() != 0) {
+                       fprintf(stderr,
+                               "Error!\t Only root user can use '-g or -u' option\n");
+                       return -1;
+               }
+
+               set_id = 1;
+       }
+
+       /* Check file path */
+       if (access(file_path, F_OK) != 0) {
+               /* fprintf(stderr,"key does not exist\n"); */
+
+               char szPath[BUFSIZE] = { 0, };
+               char *pCh = strrchr(file_path, '/');
+               strncat(szPath, file_path, pCh - file_path);
+               /* fprintf(stderr, "szPath : %s\n", szPath); */
+
+               /* Check directory & create it */
+               if (access(szPath, F_OK) != 0) {
+                       /* fprintf(stderr,"parent dir does not exist\n"); */
+
+                       snprintf(szCmd, BUFSIZE, "/bin/mkdir %s -p --mode=755", szPath);
+                       disable_invalid_char(szCmd);
+                       if (__system(szCmd)) {
+                               fprintf(stderr,"Fail mkdir() szCmd=%s\n", __FILE__, __LINE__, szCmd);
+                               return -1;
+                       }
+
+               }
+
+               create_file = 1;
+       } else if (!is_forced) {
+               fprintf(stderr, "Key already exist. Use -f option to force update\n");
+               return -1;
+       }
+
+       if(create_file) {
+               /* Create file */
+               mode_t temp;
+               temp = umask(0000);
+               fd = open(file_path, O_RDWR|O_CREAT, S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH);
+               umask(temp);
+               if(fd == -1) {
+                       fprintf(stderr, "open(rdwr,create) error\n");
+                       return -1;
+               }
+               close(fd);
+       }
+
+       if(set_id) {
+               if((fd = open(file_path, O_RDONLY)) == -1) {
+                       fprintf(stderr, "open(rdonly) error\n");
+                       return -1;
+               }
+
+               if(uid) {
+                       if (fchown(fd, atoi(uid), atoi(uid)) == -1) {
+                               fprintf(stderr, "Error!\t Fail to fchown(%d)\n", errno);
+                               close(fd);
+                               return -1;
+                       }
+               } else if (guid) {
+                       if (-1 == fchown(fd, 0, atoi(guid))) {
+                               fprintf(stderr, "Error!\t Fail to fchown()\n");
+                               close(fd);
+                               return -1;
+                       }
+               }
+
+               close(fd);
+       }
+
+       return 0;
+}
+
 static int copy_memory_key(char *pszKey, char *pszOrigin)
 {
        char szCmd[BUFSIZE] = { 0, };
@@ -237,79 +382,39 @@ int main(int argc, char **argv)
                        print_help(argv[0]);
                        return 1;
                }
-#ifdef VCONF_TIMECHECK
-               struct timeval tv;
-
-               gettimeofday(&tv, NULL);
-               printf("\x1b[105;37m[VConftool]\x1b[0m %d.%6d\n",
-                      (int)tv.tv_sec, (int)tv.tv_usec);
-#endif
-
-               /*  Start DAC  *************************************/
-               if (guid || uid) {
-                       if (0 != getuid()) {
-                               fprintf(stderr,
-                                       "Error!\t Only root user can use '-g or -u' option\n");
-                               return -1;
-                       }
-                       if (guid) {
-                               /* TODO; digit check */
-                               group_id = atoi(guid);
-                       }
-                       if (uid) {
-                               user_id = atoi(uid);
-                       }
 
-               }
                if (make_file_path(argv[2], szFilePath)) {
                        fprintf(stderr, "Error!\t Bad prefix\n");
                        return -1;
                }
 
-               /*  End DAC  ****************************************/
-
-               switch (set_type) {
-               case VCONFTOOL_TYPE_STRING:
-                       vconf_set_str(argv[2], argv[3]);
-                       break;
-               case VCONFTOOL_TYPE_INT:
-                       vconf_set_int(argv[2], atoi(argv[3]));
-                       break;
-               case VCONFTOOL_TYPE_DOUBLE:
-                       vconf_set_dbl(argv[2], atof(argv[3]));
-                       break;
-               case VCONFTOOL_TYPE_BOOL:
-                       vconf_set_bool(argv[2], !!atoi(argv[3]));
-                       break;
-
-               default:
-                       fprintf(stderr, "never reach");
-                       exit(1);
+               if (check_file_path_mode(szFilePath)) {
+                       fprintf(stderr, "Error!\t create key %s\n", argv[2]);
+                       return -1;
                }
 
-               /*  Start DAC  ***************************************/
-               if (uid) {
-                       fd = open(szFilePath, O_RDONLY);
-                       if (-1 == fchown(fd, user_id, user_id)) {
-                               fprintf(stderr, "Error!\t Fail to fchown()\n");
-                               return -1;
-                       }
-                       close(fd);
-               } else if (guid) {
-                       fd = open(szFilePath, O_RDONLY);
-                       if (-1 == fchown(fd, 0, group_id)) {
-                               fprintf(stderr, "Error!\t Fail to fchown()\n");
-                               return -1;
-                       }
-                       close(fd);
+               switch (set_type) {
+                       case VCONFTOOL_TYPE_STRING:
+                               vconf_set_str(argv[2], argv[3]);
+                               break;
+                       case VCONFTOOL_TYPE_INT:
+                               vconf_set_int(argv[2], atoi(argv[3]));
+                               break;
+                       case VCONFTOOL_TYPE_DOUBLE:
+                               vconf_set_dbl(argv[2], atof(argv[3]));
+                               break;
+                       case VCONFTOOL_TYPE_BOOL:
+                               vconf_set_bool(argv[2], !!atoi(argv[3]));
+                               break;
+                       default:
+                               fprintf(stderr, "never reach");
+                               exit(1);
                }
-               /*  End DAC  *****************************************/
 
                /* Install memory backend key into flash space *******/
                if (is_initialization) {
                        copy_memory_key(argv[2], szFilePath);
                }
-
                /* End memory backend key into flash space ***********/
 
        } else if (!strncmp(argv[1], "get", 3)) {
@@ -334,11 +439,10 @@ static void get_operation(char *input)
        char *test;
 
        get_keylist = vconf_keylist_new();
-       /* ParentDIR parameter of gconf_client_all_entries 
+       /* ParentDIR parameter of gconf_client_all_entries
        can not include the last slash. */
        if ('/' == input[strlen(input) - 1] && strlen(input) > 8)
                input[strlen(input) - 1] = '\0';
-       VCONF_DEBUG("vconf_get(%p, %s)", get_keylist, input);
 
        vconf_get(get_keylist, input, VCONF_GET_ALL);
        if (!(temp_node = vconf_keylist_nextnode(get_keylist))) {
@@ -349,7 +453,6 @@ static void get_operation(char *input)
                                *(test + 1) = '\0';
                        else
                                *test = '\0';
-                       VCONF_DEBUG("vconf_get(%p, %s)", get_keylist, input);
                        vconf_get(get_keylist, input, VCONF_GET_KEY);
                        temp_node = vconf_keylist_nextnode(get_keylist);
                } else {
@@ -368,7 +471,7 @@ static void get_operation(char *input)
 
 static void recursive_get(char *subDIR, int level)
 {
-       VCONF_DEBUG("%s", subDIR);
+       printf("%s", subDIR);
 
        keylist_t *get_keylist;
        keynode_t *first_node;
@@ -385,42 +488,42 @@ static void recursive_get(char *subDIR, int level)
 static void print_keylist(keylist_t *keylist, keynode_t *temp_node, int level)
 {
        do {
-               switch (vconf_keynode_get_type(temp_node)) {
-               case VCONF_TYPE_INT:
-                       printf("%s, value = %d (int)\n",
-                              vconf_keynode_get_name(temp_node),
-                              vconf_keynode_get_int(temp_node));
-                       get_num++;
-                       break;
-               case VCONF_TYPE_BOOL:
-                       printf("%s, value = %d (bool)\n",
-                              vconf_keynode_get_name(temp_node),
-                              vconf_keynode_get_bool(temp_node));
-                       get_num++;
-                       break;
-               case VCONF_TYPE_DOUBLE:
-                       printf("%s, value = %f (double)\n",
-                              vconf_keynode_get_name(temp_node),
-                              vconf_keynode_get_dbl(temp_node));
-                       get_num++;
-                       break;
-               case VCONF_TYPE_STRING:
-                       printf("%s, value = %s (string)\n",
-                              vconf_keynode_get_name(temp_node),
-                              vconf_keynode_get_str(temp_node));
-                       get_num++;
-                       break;
-               case VCONF_TYPE_DIR:
-                       VCONF_DEBUG("%s(Directory)\n",
-                                   vconf_keynode_get_name(temp_node));
-                       if (is_recursive)
-                               recursive_get(vconf_keynode_get_name(temp_node),
-                                             level + 1);
-                       break;
-               default:
-                       /* fprintf(stderr, "Unknown Type(%d)\n", 
-                       vconf_keynode_get_type(temp_node)); */
-                       break;
+               switch (vconf_keynode_get_type(temp_node))
+               {
+                       case VCONF_TYPE_INT:
+                               printf("%s, value = %d (int)\n",
+                                      vconf_keynode_get_name(temp_node),
+                                      vconf_keynode_get_int(temp_node));
+                               get_num++;
+                               break;
+                       case VCONF_TYPE_BOOL:
+                               printf("%s, value = %d (bool)\n",
+                                      vconf_keynode_get_name(temp_node),
+                                      vconf_keynode_get_bool(temp_node));
+                               get_num++;
+                               break;
+                       case VCONF_TYPE_DOUBLE:
+                               printf("%s, value = %f (double)\n",
+                                      vconf_keynode_get_name(temp_node),
+                                      vconf_keynode_get_dbl(temp_node));
+                               get_num++;
+                               break;
+                       case VCONF_TYPE_STRING:
+                               printf("%s, value = %s (string)\n",
+                                      vconf_keynode_get_name(temp_node),
+                                      vconf_keynode_get_str(temp_node));
+                               get_num++;
+                               break;
+                       case VCONF_TYPE_DIR:
+                               printf("%s(Directory)\n",
+                                       vconf_keynode_get_name(temp_node));
+                               if (is_recursive)
+                                       recursive_get(vconf_keynode_get_name(temp_node),
+                                                     level + 1);
+                               break;
+                       default:
+                               /* fprintf(stderr, "Unknown Type(%d)\n", vconf_keynode_get_type(temp_node)); */
+                               break;
                }
        } while ((temp_node = vconf_keylist_nextnode(keylist)));
 }