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}")
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})
#!/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
#!/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
/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
/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
+++ /dev/null
-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
+++ /dev/null
-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)
+++ /dev/null
-usr/bin
-usr/sbin
+++ /dev/null
-CMakeLists.txt
+++ /dev/null
-@PREFIX@/lib/*.so.*
-@PREFIX@/bin/vconftool
-/opt/var/kdb/kdb_first_boot
-/etc/rc.d/init.d/vconf-init
+++ /dev/null
-#!/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
+++ /dev/null
-@PREFIX@/include/vconf/vconf.h
-@PREFIX@/lib/*.so
-@PREFIX@/lib/pkgconfig/*.pc
-
+++ /dev/null
-@PREFIX@/include/vconf/vconf-keys.h
+++ /dev/null
-#!/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
#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)
+
--- /dev/null
+/*
+ * 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
+*/
+
+/**
+@}
+*/
--- /dev/null
+/*
+ * 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;
+}
#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;
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 {
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 */
} 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
#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
-};
-
/**
* @}
*/
#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__ */
* \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
* @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().
*/
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
* @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);
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
*/
#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;
return -1;
}
-
+
vconf_keylist_free(pKeyList);
return 0;
}
* @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);
* @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>
* @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);
* @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);
* @par example
* @code
#include <stdio.h>
-#include <vconf.h>
+#include <vconf.h>
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";
* @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);
* @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>
* 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
*/
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
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
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
Group: Development/Libraries
Requires: %{name} = %{version}-%{release}
Requires: vconf = %{version}-%{release}
+Requires: vconf-internal-keys-devel
%description keys-devel
Vconf key management header files
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
%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,-)
%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
--- /dev/null
+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)
+
--- /dev/null
+/*
+ * 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;
+}
--- /dev/null
+/*
+ * 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;
+}
--- /dev/null
+/*
+ * 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;
+}
# 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
#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;
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;
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;
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); */
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);
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;
}
}
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;
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;
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;
}
*
*/
-#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;
}
#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
*/
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;
}
{
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;
}
*/
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);
}
{
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
*/
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;
{
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;
}
}
{
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;
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.
{
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
{
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
{
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
{
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
{
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
*/
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;
}
/*
*/
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;
}
/*
*/
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;
}
/*
*/
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;
}
/*
*/
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;
}
/*
*/
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;
}
/*
*/
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;
}
#include <sys/stat.h>
#include <sys/types.h>
#include <fcntl.h>
+#include <errno.h>
+
+#include <wordexp.h>
enum {
VCONFTOOL_TYPE_NO = 0x00,
#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/";
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, };
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)) {
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))) {
*(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 {
static void recursive_get(char *subDIR, int level)
{
- VCONF_DEBUG("%s", subDIR);
+ printf("%s", subDIR);
keylist_t *get_keylist;
keynode_t *first_node;
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)));
}