summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKyuho Jo <kyuho.jo@samsung.com>2015-11-10 12:15:42 +0900
committerKyuho Jo <kyuho.jo@samsung.com>2015-11-10 12:27:30 +0900
commit21d49c6eb66f6b7aea697db8faac70a0ebaea9e9 (patch)
tree216e6a3d5c0418d9425f6251e11072813d4d37d4
parentdfd21265704d9b67ccc7348b787a2710d3c318ce (diff)
downloadshortcut-21d49c6eb66f6b7aea697db8faac70a0ebaea9e9.tar.gz
shortcut-21d49c6eb66f6b7aea697db8faac70a0ebaea9e9.tar.bz2
shortcut-21d49c6eb66f6b7aea697db8faac70a0ebaea9e9.zip
Change-Id: I64a1f9ab319d7d2c9477ac51d6f69fdeaf488b7d Signed-off-by: Kyuho Jo <kyuho.jo@samsung.com>
-rwxr-xr-xlib/CMakeLists.txt4
-rwxr-xr-xlib/include/dlist.h44
-rwxr-xr-xlib/include/shortcut.h207
-rwxr-xr-xlib/include/shortcut_manager.h26
-rwxr-xr-xlib/include/shortcut_private.h165
-rwxr-xr-xlib/src/dlist.c190
-rw-r--r--[-rwxr-xr-x]lib/src/shortcut_manager.c (renamed from lib/src/main.c)445
-rwxr-xr-xpackaging/libshortcut.spec22
-rw-r--r--pkgmgr_shortcut/CMakeLists.txt1
-rwxr-xr-xpkgmgr_shortcut/src/service_register.c6
10 files changed, 97 insertions, 1013 deletions
diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt
index 3c19d1d..dffc802 100755
--- a/lib/CMakeLists.txt
+++ b/lib/CMakeLists.txt
@@ -32,10 +32,10 @@ SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS}")
ADD_DEFINITIONS("-DPREFIX=\"${PREFIX}\"")
ADD_DEFINITIONS("-DLOG_TAG=\"SHORTCUT\"")
ADD_DEFINITIONS("-D_USE_ECORE_TIME_GET")
+ADD_DEFINITIONS("-DDB_PATH=\"${DB_PATH}\"")
ADD_LIBRARY(${PROJECT_NAME} SHARED
- src/main.c
- src/dlist.c
+ src/shortcut_manager.c
)
TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${svc_pkgs_LDFLAGS})
diff --git a/lib/include/dlist.h b/lib/include/dlist.h
deleted file mode 100755
index c892923..0000000
--- a/lib/include/dlist.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Copyright (c) 2011 - 2015 Samsung Electronics Co., Ltd. All rights reserved.
- *
- * 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.
- *
-*/
-
-#define dlist_remove_data(list, data) do { \
- struct dlist *l; \
- l = dlist_find_data(list, data); \
- list = dlist_remove(list, l); \
-} while (0)
-
-#define dlist_foreach(list, l, data) \
- for ((l) = (list); (l) && ((data) = dlist_data(l)); (l) = dlist_next(l))
-
-#define dlist_foreach_safe(list, l, n, data) \
- for ((l) = (list), (n) = dlist_next(l); \
- (l) && ((data) = dlist_data(l)); \
- (l) = (n), (n) = dlist_next(l))
-
-struct dlist;
-
-extern struct dlist *dlist_append(struct dlist *list, void *data);
-extern struct dlist *dlist_prepend(struct dlist *list, void *data);
-extern struct dlist *dlist_remove(struct dlist *list, struct dlist *l);
-extern struct dlist *dlist_find_data(struct dlist *list, void *data);
-extern void *dlist_data(struct dlist *l);
-extern struct dlist *dlist_next(struct dlist *l);
-extern struct dlist *dlist_prev(struct dlist *l);
-extern int dlist_count(struct dlist *l);
-extern struct dlist *dlist_nth(struct dlist *l, int nth);
-
-/* End of a file */
diff --git a/lib/include/shortcut.h b/lib/include/shortcut.h
index 95d7bad..7d35a35 100755
--- a/lib/include/shortcut.h
+++ b/lib/include/shortcut.h
@@ -85,16 +85,6 @@ enum shortcut_internal_type {
DYNAMICBOX_TYPE_UNKNOWN = 0x1FFF0000, /**< Error */
};
-/**
- * @brief Enumeration for values of shortcut response types.
- * @since_tizen 2.3
- */
-enum shortcut_internal_error_e {
- SHORTCUT_ERROR = 0x80000000, /**< MSB(1). Check this using the #SHORTCUT_STATUS_IS_ERROR macro */
- SHORTCUT_STATUS_CARED = 0x08000000, /**< Shortcut status is already cared. Check this using the #SHORTCUT_STATUS_IS_CARED macro */
- SHORTCUT_ERROR_BUSY = TIZEN_ERROR_RESOURCE_BUSY, /**< Receiver is busy, try again later */
- SHORTCUT_ERROR_UNSUPPORTED = SHORTCUT_ERROR | 0x0400 /**< Shortcut is not supported */
-};
/**
* @brief Definition for a macro to check type.
@@ -107,200 +97,9 @@ enum shortcut_internal_error_e {
*/
#define ADD_TO_HOME_IS_DYNAMICBOX(type) (!!((type) & 0x10000000))
-
-/**
- * @brief Definition for a macro to check the request status.
- * @since_tizen 2.3
- * @param[in] type The status
- * @return bool
- * @retval true(1) Error
- * @retval false(0) Not an error
- * @see shortcut_error_e
- */
-#define SHORTCUT_STATUS_IS_ERROR(type) (!!((type) & SHORTCUT_ERROR))
-
-/**
- * @brief Definition for a macro to check the request status.
- * @since_tizen 2.3
- * @param[in] type The status
- * @return bool
- * @retval true(1) Shortcut request is already handled by the requestee (homescreen, viewer, ...)
- * @retval false(0) Request result should be cared by the requestor
- * @see shortcut_error_e
- */
-#define SHORTCUT_STATUS_IS_CARED(type) (!!((type) & SHORTCUT_STATUS_CARED))
-
-/**
- * @brief Definition for filtering the pure error code from the given status.
- * @since_tizen 2.3
- * @param[in] status The status
- * @return The status code (error)
- * @see shortcut_error_e
- */
-#define SHORTCUT_ERROR_CODE(status) ((status) & ~SHORTCUT_STATUS_CARED)
-
-/**
- * @internal
- *
- * @brief Supports the add_to_home feature, should invoke this.
- *
- * @details
- * Sync (or) Async:
- * This is an asynchronous API.
- *
- * Important Notes:\n
- * Application must check the return value of this function.\n
- * Application must check the return status from the callback function.\n
- * Application should set the callback function to get the result of this request.
- *
- * Prospective Clients:
- * Inhouse Apps.
- *
- * @since_tizen 2.3
- *
- * @privlevel public
- * @privilege %http://tizen.org/privilege/shortcut
- *
- * @remarks If a homescreen does not support this feature, you will get a proper error code.
- * @param[in] appid The package name of the owner of this shortcut
- * @param[in] name The name of the created shortcut icon
- * @param[in] type The type of shortcuts (dynamicbox or shortcut, and its size if it is for the dynamicbox)
- * @param[in] content_info The specific information for delivering to the viewer for creating a shortcut
- * @param[in] icon The absolute path of an icon file
- * @param[in] allow_duplicate @c 1 if it accepts the duplicated shortcut,
- * otherwise @c 0
- * @param[in] result_cb The address of the callback function that is called when the result comes back from the viewer
- * @param[in] data The callback data that is used in the callback function
- *
- * @return The return type (int)
- * @retval 0 Succeeded to send the request
- * @retval #SHORTCUT_ERROR_FAULT Unrecoverable error
- * @retval #SHORTCUT_ERROR_INVALID_PARAMETER Shortcut request is not valid, invalid parameter or invalid argument value
- * @retval #SHORTCUT_ERROR_COMM Connection is not estabilished. or there is a problem in the communication
- * @retval #SHORTCUT_ERROR_OUT_OF_MEMORY Memory is not enough to handle a new request
- * @retval #SHORTCUT_ERROR_IO_ERROR Unable to access the file or DB. Check your resource files
- * @retval #SHORTCUT_ERROR_PERMISSION_DENIED Has no permission to add a shortcut
- * @retval #SHORTCUT_ERROR_NOT_SUPPORTED Shortcut is not supported
- *
- * @pre You have to prepare the callback function.
- *
- * @post You have to check the return status from the callback function which is passed by the argument.
- *
- * @see result_internal_cb_t
- *
- * @par Example
- * @code
- *
- * #include <stdio.h>
- * #include <shortcut.h>
- *
- * static int result_cb(int ret, int pid, void *data)
- * {
- * if (ret < 0)
- * printf("Failed to add a shortcut: %s\n", perror(ret));
- *
- * printf("Processed by the %d\n", pid);
- * return 0;
- * }
- *
- * static int app_create(void *data)
- * {
- * add_to_home_shortcut("org.tizen.gallery", "With friends",
- * LAUNCH_BY_URI, "gallery:0000-0000",
- * "/opt/media/Pictures/Friends.jpg", 0, result_cb, NULL);
- * return 0;
- * }
- *
- * int main(int argc, char *argv[])
- * {
- * appcore....
- * }
- *
- * @endcode
- */
-extern int add_to_home_shortcut(const char *appid, const char *name, int type, const char *content_info, const char *icon, int allow_duplicate, result_internal_cb_t result_cb, void *data);
-
-/**
- * @internal
- *
- * @brief Supports the add_to_home feature, should invoke this.
- *
- * @details
- * Sync (or) Async:
- * This is an asynchronous API.
- *
- * Important Notes:\n
- * Application must check the return value of this function.\n
- * Application must check the return status from the callback function.\n
- * Application should set the callback function to get the result of this request.
- *
- * Prospective Clients:
- * Inhouse Apps.
- *
- * @since_tizen 2.3
- *
- * @privlevel public
- * @privilege %http://tizen.org/privilege/shortcut
- *
- * @remarks If a homescreen does not support this feature, you will get a proper error code.
- * @param[in] appid The package name of the owner of this shortcut
- * @param[in] name The name of the created shortcut icon
- * @param[in] type The type of shortcuts (dynamicbox or shortcut, and its size if it is for the dynamicbox)
- * @param[in] content_info The specific information for delivering to the viewer for creating a shortcut
- * @param[in] icon The absolute path of an icon file
- * @param[in] period The update period
- * @param[in] allow_duplicate @c 1 if it accepts the duplicated shortcut,
- * otherwise @c 0
- * @param[in] result_cb The address of the callback function that is called when the result comes back from the viewer
- * @param[in] data The callback data that is used in the callback function
- *
- * @return The return type (int)
- * @retval 0 Succeeded to send the request
- * @retval #SHORTCUT_ERROR_FAULT Unrecoverable error
- * @retval #SHORTCUT_ERROR_INVALID_PARAMETER Shortcut request is not valid, invalid parameter or invalid argument value
- * @retval #SHORTCUT_ERROR_COMM Connection is not established or there is a problem in the communication
- * @retval #SHORTCUT_ERROR_OUT_OF_MEMORY Memory is not enough to handle a new request
- * @retval #SHORTCUT_ERROR_IO_ERROR Unable to access the file or DB Check your resource files
- * @retval #SHORTCUT_ERROR_PERMISSION_DENIED Has no permission to add a shortcut
- * @retval #SHORTCUT_ERROR_NOT_SUPPORTED Shortcut is not supported
- *
- * @pre You have to prepare the callback function.
- *
- * @post You have to check the return status from the callback function which is passed by the argument.
- *
- * @see result_internal_cb_t
- *
- * @par Example
- * @code
- *
- * #include <stdio.h>
- * #include <shortcut.h>
- *
- * static int result_cb(int ret, int pid, void *data)
- * {
- * if (ret < 0)
- * printf("Failed to add a shortcut: %s\n", perror(ret));
- *
- * printf("Processed by the %d\n", pid);
- * return 0;
- * }
- *
- * static int app_create(void *data)
- * {
- * add_to_home_dynamicbox("org.tizen.gallery.dynamicbox", "With friends",
- * LAUNCH_BY_URI, "gallery:0000-0000",
- * "/opt/media/Pictures/Friends.jpg", -1.0f, 0, result_cb, NULL);
- * return 0;
- * }
- *
- * int main(int argc, char *argv[])
- * {
- * appcore....
- * }
- *
- * @endcode
- */
-extern int add_to_home_dynamicbox(const char *appid, const char *name, int type, const char *content, const char *icon, double period, int allow_duplicate, result_internal_cb_t result_cb, void *data);
+/* DEPRECATED API */
+extern int add_to_home_shortcut(const char *appid, const char *name, int type, const char *content_info, const char *icon, int allow_duplicate, result_internal_cb_t result_cb, void *data) __attribute__((deprecated));
+extern int add_to_home_dynamicbox(const char *appid, const char *name, int type, const char *content, const char *icon, double period, int allow_duplicate, result_internal_cb_t result_cb, void *data) __attribute__((deprecated));
/**
* @}
diff --git a/lib/include/shortcut_manager.h b/lib/include/shortcut_manager.h
index 69b4248..441df55 100755
--- a/lib/include/shortcut_manager.h
+++ b/lib/include/shortcut_manager.h
@@ -174,7 +174,7 @@ typedef int (*result_cb_t)(int ret, void *data);
extern int shortcut_add_to_home(const char *name, shortcut_type type, const char *uri, const char *icon, int allow_duplicate, result_cb_t result_cb, void *data);
/**
- * @brief Adds a shortcut widget to home, asynchronously.
+ * @brief Adds a widget to home, asynchronously.
* @remarks If a homescreen does not support this feature, you will get a proper error code.\n
* Application must check the return value of this function.\n
* Application must check the return status from the callback function.\n
@@ -184,23 +184,23 @@ extern int shortcut_add_to_home(const char *name, shortcut_type type, const char
* @privlevel public
* @privilege %http://tizen.org/privilege/shortcut
*
- * @param[in] name The name of the created shortcut widget
+ * @param[in] name The name of the created widget. Will be shown when the widget is not prepared.
* @param[in] size_type The size of widget
- * @param[in] uri URI of the resource what to be executed
- * @param[in] icon The absolute path of an icon file
+ * @param[in] widget_id Widget id
+ * @param[in] icon The absolute path of an icon file. Will be shown when the widget is not prepared.
* @param[in] period The Update period in seconds
- * @param[in] allow_duplicate @c 1 if it accepts the duplicated shortcut, otherwise @c 0
+ * @param[in] allow_duplicate @c 1 if it accepts the duplicated widget, otherwise @c 0
* @param[in] result_cb The address of the callback function that is called when the result comes back from the viewer
* @param[in] data The callback data that is used in the callback function
*
* @return #SHORTCUT_ERROR_NONE on success, other value on failure
* @retval #SHORTCUT_ERROR_FAULT Unrecoverable error
- * @retval #SHORTCUT_ERROR_INVALID_PARAMETER Shortcut request is not valid, invalid parameter or invalid argument value
+ * @retval #SHORTCUT_ERROR_INVALID_PARAMETER Invalid parameter or invalid argument value
* @retval #SHORTCUT_ERROR_COMM Connection is not established or there is a problem in the communication
* @retval #SHORTCUT_ERROR_OUT_OF_MEMORY Memory is not enough to handle a new request
* @retval #SHORTCUT_ERROR_IO_ERROR Unable to access the file or DB Check your resource files
- * @retval #SHORTCUT_ERROR_PERMISSION_DENIED Has no permission to add a shortcut
- * @retval #SHORTCUT_ERROR_NOT_SUPPORTED Shortcut is not supported
+ * @retval #SHORTCUT_ERROR_PERMISSION_DENIED Has no permission to add a widget
+ * @retval #SHORTCUT_ERROR_NOT_SUPPORTED Widget is not supported
*
* @pre You have to prepare the callback function.
*
@@ -218,7 +218,7 @@ extern int shortcut_add_to_home(const char *name, shortcut_type type, const char
* static int result_cb(int ret, int pid, void *data)
* {
* if (ret < 0)
- * dlog_print("Failed to add a shortcut: %s\n", perror(ret));
+ * dlog_print("Failed to add a widget: %s\n", perror(ret));
*
* dlog_print("Processed by the %d\n", pid);
* return 0;
@@ -226,15 +226,15 @@ extern int shortcut_add_to_home(const char *name, shortcut_type type, const char
*
* static int app_create(void *data)
* {
- * shortcut_add_to_home_widget("With friends",
- * WIDGET_SIZE_1x1, "gallery:0000-0000",
- * "/opt/media/Pictures/Friends.jpg", -1.0f, 0, result_cb, NULL);
+ * shortcut_add_to_home_widget("alter_name",
+ * WIDGET_SIZE_1x1, "org.tizen.testwidget",
+ * "/opt/media/Pictures/alter_icon.png", -1.0f, 0, result_cb, NULL);
* return 0;
* }
*
* @endcode
*/
-extern int shortcut_add_to_home_widget(const char *name, shortcut_widget_size_e size, const char *uri, const char *icon, double period, int allow_duplicate, result_cb_t result_cb, void *data);
+extern int shortcut_add_to_home_widget(const char *name, shortcut_widget_size_e size, const char *widget_id, const char *icon, double period, int allow_duplicate, result_cb_t result_cb, void *data);
/**
diff --git a/lib/include/shortcut_private.h b/lib/include/shortcut_private.h
index b69df43..260668c 100755
--- a/lib/include/shortcut_private.h
+++ b/lib/include/shortcut_private.h
@@ -36,169 +36,4 @@ extern FILE *__file_log_fp;
#define DEFAULT_ICON_LAYOUT ""
#define DEFAULT_ICON_GROUP ""
-/**
- * @brief Definition for a macro to check the request type.
- * @since_tizen 2.3
- * @param[in] type Request type
- * @return bool
- * @retval true(1) Shortcut remove request
- * @retval false(0) Not a remove request
- * @see shortcut_type
- */
-#define ADD_TO_HOME_IS_REMOVE_SHORTCUT(type) (!!((type) & SHORTCUT_REMOVE))
-
-/**
- * @brief Definition for a macro to check the request type.
- * @since_tizen 2.3
- * @param[in] type Request type
- * @return bool
- * @retval true(1) Dynamicbox remove request
- * @retval false(0) Not a remove request
- * @see shortcut_type
- */
-#define ADD_TO_HOME_IS_REMOVE_DYNAMICBOX(type) (!!((type) & DYNAMICBOX_REMOVE))
-
-/**
- *
- *
- * @brief The application, which supporting the add_to_home feature, should invoke this.
- *
- * @details
- * Sync (or) Async:
- * This is an asynchronous API.
- *
- * Important Notes:\n
- * Application must check the return value of this function.\n
- * Application must check the return status from the callback function\n
- * Application should set the callback function to get the result of this request.
- *
- * Prospective Clients:
- * Inhouse Apps.
- *
- * @since_tizen 2.3
- *
- * @remarks - If a homescreen does not support this feature, you will get proper error code.
- * @param[in] appid Package name of owner of this shortcut.
- * @param[in] name Name for created shortcut icon.
- * @param[in] content_info Specific information for delivering to the viewer for creating a shortcut.
- * @param[in] result_cb Address of callback function which will be called when the result comes back from the viewer.
- * @param[in] data Callback data which will be used in callback function
- *
- * @return Return Type (int)
- * \retval 0 Succeed to send the request
- * \retval #SHORTCUT_ERROR_FAULT Unrecoverable error
- * \retval #SHORTCUT_ERROR_INVALID_PARAMETER Shortcut request is not valid, invalid parameter or invalid argument value
- * \retval #SHORTCUT_ERROR_COMM Connection is not estabilished. or there is a problem of communication
- * \retval #SHORTCUT_ERROR_OUT_OF_MEMORY Memory is not enough to handle new request
- * \retval #SHORTCUT_ERROR_IO_ERROR Unable to access file or DB. Check your resource files
- * \retval #SHORTCUT_ERROR_PERMISSION_DENIED Has no permission to add a shortcut
- *
- * @pre You have to prepare the callback function
- *
- * @post You have to check the return status from callback function which is passed by argument.
- *
- * @see result_internal_cb_t
- *
- * @par Example
- * @code
- *
- * #include <stdio.h>
- * #include <shortcut.h>
- *
- * static int result_cb(int ret, int pid, void *data)
- * {
- * if (ret < 0)
- * printf("Failed to add a shortcut: %s\n", perror(ret));
- *
- * printf("Processed by the %d\n", pid);
- * return 0;
- * }
- *
- * static int app_create(void *data)
- * {
-5 * add_to_home_remove_shortcut("org.tizen.gallery.dynamicbox", "With friends",
- * "gallery:0000-0000",
- * result_cb, NULL);
- * return 0;
- * }
- *
- * int main(int argc, char *argv[])
- * {
- * appcore....
- * }
- *
- * @endcode
- */
-extern int add_to_home_remove_shortcut(const char *appid, const char *name, const char *content_info, result_internal_cb_t result_cb, void *data);
-
-/**
- *
- *
- * @brief The application, which supporting the add_to_home feature, should invoke this.
- *
- * @details
- * Sync (or) Async:
- * This is an asynchronous API.
- *
- * Important Notes:\n
- * Application must check the return value of this function.\n
- * Application must check the return status from the callback function\n
- * Application should set the callback function to get the result of this request.
- *
- * Prospective Clients:
- * Inhouse Apps.
- *
- * @since_tizen 2.3
- *
- * @remarks - If a homescreen does not support this feature, you will get proper error code.
- * @param[in] appid Package name of owner of this shortcut.
- * @param[in] name Name for created shortcut icon.
- * @param[in] result_cb Address of callback function which will be called when the result comes back from the viewer.
- * @param[in] data Callback data which will be used in callback function
- *
- * @return Return Type (int)
- * \retval 0 Succeed to send the request
- * \retval #SHORTCUT_ERROR_FAULT Unrecoverable error
- * \retval #SHORTCUT_ERROR_INVALID_PARAMETER Shortcut request is not valid, invalid parameter or invalid argument value
- * \retval #SHORTCUT_ERROR_COMM Connection is not estabilished. or there is a problem of communication
- * \retval #SHORTCUT_ERROR_OUT_OF_MEMORY Memory is not enough to handle new request
- * \retval #SHORTCUT_ERROR_IO_ERROR Unable to access file or DB. Check your resource files
- * \retval #SHORTCUT_ERROR_PERMISSION_DENIED Has no permission to add a shortcut
- *
- * @pre You have to prepare the callback function
- *
- * @post You have to check the return status from callback function which is passed by argument.
- *
- * @see result_internal_cb_t
- *
- * @par Example
- * @code
- *
- * #include <stdio.h>
- * #include <shortcut.h>
- *
- * static int result_cb(int ret, int pid, void *data)
- * {
- * if (ret < 0)
- * printf("Failed to add a shortcut: %s\n", perror(ret));
- *
- * printf("Processed by the %d\n", pid);
- * return 0;
- * }
- *
- * static int app_create(void *data)
- * {
- * add_to_home_remove_dynamicbox("org.tizen.gallery.dynamicbox", "With friends", result_cb, NULL);
- * return 0;
- * }
- *
- * int main(int argc, char *argv[])
- * {
- * appcore....
- * }
- *
- * @endcode
- */
-extern int add_to_home_remove_dynamicbox(const char *appid, const char *name, result_internal_cb_t result_cb, void *data);
-
/* End of a file */
diff --git a/lib/src/dlist.c b/lib/src/dlist.c
deleted file mode 100755
index 71ec556..0000000
--- a/lib/src/dlist.c
+++ /dev/null
@@ -1,190 +0,0 @@
-/*
- * Copyright (c) 2011 - 2015 Samsung Electronics Co., Ltd. All rights reserved.
- *
- * 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 <stdio.h>
-#include <stdlib.h>
-#include <assert.h>
-
-#include "dlist.h"
-
-/*!
- * \brief
- * This dlist is called Modified Doubly Linked List.
- *
- * Noramlly, The dobule linked list contains address of previous and next element.
- * This dlist also contains them, but the tail element only contains prev address.
- *
- * The head element's prev pointer indicates the last element.
- * But the last element's next pointer indicates NIL.
- *
- * So we can find the last element while crawling this DList
- * But we have to remember the address of the head element.
- */
-
-struct dlist {
- struct dlist *next;
- struct dlist *prev;
- void *data;
-};
-
-struct dlist *dlist_append(struct dlist *list, void *data)
-{
- struct dlist *item;
-
- item = malloc(sizeof(*item));
- if (!item) {
- return NULL;
- }
-
- item->next = NULL;
- item->data = data;
-
- if (!list) {
- item->prev = item;
-
- list = item;
- } else {
- item->prev = list->prev;
- item->prev->next = item;
- list->prev = item;
- }
-
- assert(!list->prev->next && "item NEXT");
-
- return list;
-}
-
-struct dlist *dlist_prepend(struct dlist *list, void *data)
-{
- struct dlist *item;
-
- item = malloc(sizeof(*item));
- if (!item) {
- return NULL;
- }
-
- item->data = data;
-
- if (!list) {
- item->prev = item;
- item->next = NULL;
- } else {
- if (list->prev->next) {
- list->prev->next = item;
- }
-
- item->prev = list->prev;
- item->next = list;
-
- list->prev = item;
-
- }
-
- return item;
-}
-
-struct dlist *dlist_remove(struct dlist *list, struct dlist *l)
-{
- if (!list || !l) {
- return NULL;
- }
-
- if (l == list) {
- list = l->next;
- } else {
- l->prev->next = l->next;
- }
-
- if (l->next) {
- l->next->prev = l->prev;
- }
- /*!
- * \note
- * If the removed entry 'l' has no next element, it is the last element.
- * In this case, check the existence of the list first,
- * and if the list is not empty, update the 'prev' of the list (which is a head element of the list)
- *
- * If we didn't care about this, the head element(list) can indicates the invalid element.
- */
- else if (list) {
- list->prev = l->prev;
- }
-
- free(l);
- return list;
-}
-
-struct dlist *dlist_find_data(struct dlist *list, void *data)
-{
- struct dlist *l;
- void *_data;
-
- dlist_foreach(list, l, _data) {
- if (data == _data) {
- return l;
- }
- }
-
- return NULL;
-}
-
-void *dlist_data(struct dlist *l)
-{
- return l ? l->data : NULL;
-}
-
-struct dlist *dlist_next(struct dlist *l)
-{
- return l ? l->next : NULL;
-}
-
-struct dlist *dlist_prev(struct dlist *l)
-{
- return l ? l->prev : NULL;
-}
-
-int dlist_count(struct dlist *l)
-{
- register int i;
- struct dlist *n;
- void *data;
-
- i = 0;
- dlist_foreach(l, n, data) {
- i++;
- }
-
- return i;
-}
-
-struct dlist *dlist_nth(struct dlist *l, int nth)
-{
- register int i;
- struct dlist *n;
-
- i = 0;
- for (n = l; n; n = n->next) {
- if (i == nth) {
- return n;
- }
- i++;
- }
-
- return NULL;
-}
-
-/* End of a file */
diff --git a/lib/src/main.c b/lib/src/shortcut_manager.c
index 1b03ace..67542dc 100755..100644
--- a/lib/src/main.c
+++ b/lib/src/shortcut_manager.c
@@ -46,6 +46,8 @@
int errno;
+static inline int make_connection(void);
+
static struct info {
const char *dbfile;
sqlite3 *handle;
@@ -63,78 +65,13 @@ static struct info {
.server_fd = -1,
.client_fd = -1,
.socket_file = "/tmp/.shortcut.service",
- .dbfile = "/usr/dbspace/.shortcut_service.db",
+ .dbfile = DB_PATH,
.handle = NULL,
.initialized = 0,
.db_opened = 0,
.timer_id = 0,
};
-
-static inline int make_connection(void);
-
-
-static struct packet *remove_shortcut_handler(pid_t pid, int handle, const struct packet *packet)
-{
- const char *appid;
- const char *name;
- const char *content_info;
- int ret;
- int sender_pid;
-
- if (!packet) {
- ErrPrint("Packet is NIL, maybe disconnected?\n");
- return NULL;
- }
-
- if (packet_get(packet, "isss", &sender_pid, &appid, &name, &content_info) != 4) {
- ErrPrint("Invalid apcket\n");
- return NULL;
- }
-
- DbgPrint("appid[%s], name[%s], content_info[%s]\n", appid, name, content_info);
-
- if (s_info.server_cb.request_cb) {
- ret = s_info.server_cb.request_cb(appid, name, SHORTCUT_REMOVE, content_info, NULL, sender_pid, -1.0f, 0, s_info.server_cb.data);
- } else {
- ret = SHORTCUT_ERROR_UNSUPPORTED;
- }
-
- return packet_create_reply(packet, "i", ret);
-}
-
-
-
-static struct packet *remove_shortcut_widget_handler(pid_t pid, int handle, const struct packet *packet)
-{
- const char *appid;
- const char *name;
- int ret;
- int sender_pid;
-
- if (!packet) {
- ErrPrint("PAcket is NIL, maybe disconnected?\n");
- return NULL;
- }
-
- if (packet_get(packet, "iss", &sender_pid, &appid, &name) != 3) {
- ErrPrint("Invalid packet\n");
- return NULL;
- }
-
- DbgPrint("appid[%s], name[%s]\n", appid, name);
-
- if (s_info.server_cb.request_cb) {
- ret = s_info.server_cb.request_cb(appid, name, DYNAMICBOX_REMOVE, NULL, NULL, sender_pid, -1.0f, 0, s_info.server_cb.data);
- } else {
- ret = SHORTCUT_ERROR_UNSUPPORTED;
- }
-
- return packet_create_reply(packet, "i", ret);
-}
-
-
-
static struct packet *add_shortcut_handler(pid_t pid, int handle, const struct packet *packet)
{
const char *appid;
@@ -143,7 +80,7 @@ static struct packet *add_shortcut_handler(pid_t pid, int handle, const struct p
const char *content;
const char *icon;
int allow_duplicate;
- int ret;
+ int ret = SHORTCUT_ERROR_NONE;
int sender_pid;
if (!packet) {
@@ -160,7 +97,11 @@ static struct packet *add_shortcut_handler(pid_t pid, int handle, const struct p
if (s_info.server_cb.request_cb) {
ret = s_info.server_cb.request_cb(appid, name, type, content, icon, sender_pid, -1.0f, allow_duplicate, s_info.server_cb.data);
} else {
- ret = SHORTCUT_ERROR_UNSUPPORTED;
+ ret = SHORTCUT_ERROR_NOT_SUPPORTED;
+ }
+
+ if (ret != SHORTCUT_ERROR_NONE) {
+ ErrPrint("ret [%d]\n", ret);
}
return packet_create_reply(packet, "i", ret);
@@ -170,53 +111,40 @@ static struct packet *add_shortcut_handler(pid_t pid, int handle, const struct p
static struct packet *add_shortcut_widget_handler(pid_t pid, int handle, const struct packet *packet)
{
- const char *appid;
+ const char *widget_id;
const char *name;
int type;
const char *content;
const char *icon;
double period;
int allow_duplicate;
- int ret;
+ int ret = SHORTCUT_ERROR_NONE;
int sender_pid;
if (!packet) {
return NULL;
}
- if (packet_get(packet, "ississdi", &sender_pid, &appid, &name, &type, &content, &icon, &period, &allow_duplicate) != 8) {
+ if (packet_get(packet, "ississdi", &sender_pid, &widget_id, &name, &type, &content, &icon, &period, &allow_duplicate) != 8) {
ErrPrint("Invalid packet\n");
return NULL;
}
- DbgPrint("appid[%s], name[%s], type[0x%x], content[%s], icon[%s], period[%lf], allow_duplicate[%d]\n", appid, name, type, content, icon, period, allow_duplicate);
+ DbgPrint("widget_id[%s], name[%s], type[0x%x], content[%s], icon[%s], period[%lf], allow_duplicate[%d]\n", widget_id, name, type, content, icon, period, allow_duplicate);
if (s_info.server_cb.request_cb) {
- ret = s_info.server_cb.request_cb(appid, name, type, content, icon, sender_pid, period, allow_duplicate, s_info.server_cb.data);
+ ret = s_info.server_cb.request_cb(widget_id, name, type, content, icon, sender_pid, period, allow_duplicate, s_info.server_cb.data);
} else {
ret = 0;
}
- return packet_create_reply(packet, "i", ret);
-}
-
-
-
-static void master_started_cb(keynode_t *node, void *user_data)
-{
- int state = 0;
-
- if (vconf_get_bool(VCONFKEY_MASTER_STARTED, &state) < 0) {
- ErrPrint("Unable to get \"%s\"\n", VCONFKEY_MASTER_STARTED);
+ if (ret != SHORTCUT_ERROR_NONE) {
+ ErrPrint("ret [%d]\n", ret);
}
- if (state == 1 && make_connection() == SHORTCUT_ERROR_NONE) {
- (void)vconf_ignore_key_changed(VCONFKEY_MASTER_STARTED, master_started_cb);
- }
+ return packet_create_reply(packet, "i", ret);
}
-
-
int shortcut_is_master_ready(void)
{
int ret = -1, is_master_started = 0;
@@ -232,7 +160,18 @@ int shortcut_is_master_ready(void)
return is_master_started;
}
+static void master_started_cb(keynode_t *node, void *user_data)
+{
+ int state = 0;
+
+ if (vconf_get_bool(VCONFKEY_MASTER_STARTED, &state) < 0) {
+ ErrPrint("Unable to get \"%s\"\n", VCONFKEY_MASTER_STARTED);
+ }
+ if (state == 1 && make_connection() == SHORTCUT_ERROR_NONE) {
+ (void)vconf_ignore_key_changed(VCONFKEY_MASTER_STARTED, master_started_cb);
+ }
+}
static gboolean timeout_cb(void *data)
{
@@ -274,8 +213,6 @@ static int disconnected_cb(int handle, void *data)
return 0;
}
-
-
static inline int make_connection(void)
{
int ret;
@@ -289,18 +226,6 @@ static inline int make_connection(void)
.cmd = "add_shortcut_widget",
.handler = add_shortcut_widget_handler,
},
- {
- .cmd = "rm_shortcut",
- .handler = remove_shortcut_handler,
- },
- {
- .cmd = "rm_shortcut_widget",
- .handler = remove_shortcut_widget_handler,
- },
- {
- .cmd = NULL,
- .handler = NULL,
- },
};
if (s_info.initialized == 0) {
@@ -378,7 +303,7 @@ static char *_shortcut_get_pkgname_by_pid(void)
dup_pkgname = strdup(pkgname);
if (!dup_pkgname)
- ErrPrint("Heap: %s\n", strerror(errno));
+ ErrPrint("Heap: %d\n", errno);
return dup_pkgname;
}
@@ -412,15 +337,12 @@ EAPI int shortcut_set_request_cb(shortcut_request_cb request_cb, void *data)
}
-
struct result_cb_item {
result_internal_cb_t result_internal_cb;
result_cb_t result_cb;
void *data;
};
-
-
static int shortcut_send_cb(pid_t pid, int handle, const struct packet *packet, void *data)
{
struct result_cb_item *item = data;
@@ -434,6 +356,12 @@ static int shortcut_send_cb(pid_t pid, int handle, const struct packet *packet,
ret = SHORTCUT_ERROR_INVALID_PARAMETER;
}
+ if (ret != SHORTCUT_ERROR_NONE) {
+ DbgPrint("Packet reply [%d]\n", ret);
+ if (ret == SHORTCUT_ERROR_PERMISSION_DENIED)
+ ret =SHORTCUT_ERROR_NONE;
+ }
+
if (item->result_internal_cb) {
ret = item->result_internal_cb(ret, pid, item->data);
} else if (item->result_cb) {
@@ -446,204 +374,20 @@ static int shortcut_send_cb(pid_t pid, int handle, const struct packet *packet,
}
-
-EAPI int add_to_home_remove_shortcut(const char *appid, const char *name, const char *content_info, result_internal_cb_t result_cb, void *data)
+EAPI int add_to_home_shortcut(const char *appid, const char *name, int type, const char *content, const char *icon, int allow_duplicate, result_internal_cb_t result_cb, void *data)
{
- struct packet *packet;
- struct result_cb_item *item;
- int ret;
-
- if (!appid || !name) {
- ErrPrint("Invalid argument\n");
- return SHORTCUT_ERROR_INVALID_PARAMETER;
- }
-
- if (!s_info.initialized) {
- s_info.initialized = 1;
- com_core_add_event_callback(CONNECTOR_DISCONNECTED, disconnected_cb, NULL);
- }
-
- if (s_info.client_fd < 0) {
- static struct method service_table[] = {
- {
- .cmd = NULL,
- .handler = NULL,
- },
- };
-
- s_info.client_fd = com_core_packet_client_init(s_info.socket_file, 0, service_table);
- if (s_info.client_fd < 0) {
- ErrPrint("Failed to make connection\n");
- return SHORTCUT_ERROR_COMM;
- }
- }
-
- item = malloc(sizeof(*item));
- if (!item) {
- ErrPrint("Heap: %s\n", strerror(errno));
- return SHORTCUT_ERROR_OUT_OF_MEMORY;
- }
-
- item->result_internal_cb = result_cb;
- item->result_cb = NULL;
- item->data = data;
-
- packet = packet_create("rm_shortcut", "isss", getpid(), appid, name, content_info);
- if (!packet) {
- ErrPrint("Failed to build a packet\n");
- free(item);
- return SHORTCUT_ERROR_FAULT;
- }
-
- ret = com_core_packet_async_send(s_info.client_fd, packet, 0.0f, shortcut_send_cb, item);
- if (ret < 0) {
- packet_destroy(packet);
- free(item);
- com_core_packet_client_fini(s_info.client_fd);
- s_info.client_fd = SHORTCUT_ERROR_INVALID_PARAMETER;
- return SHORTCUT_ERROR_COMM;
- }
-
+ /*Deprecated API */
return SHORTCUT_ERROR_NONE;
}
-
-
-EAPI int add_to_home_remove_dynamicbox(const char *appid, const char *name, result_internal_cb_t result_cb, void *data)
+EAPI int add_to_home_dynamicbox(const char *appid, const char *name, int type, const char *content, const char *icon, double period, int allow_duplicate, result_internal_cb_t result_cb, void *data)
{
- struct packet *packet;
- struct result_cb_item *item;
- int ret;
-
- if (!appid || !name) {
- ErrPrint("Invalid argument\n");
- return SHORTCUT_ERROR_INVALID_PARAMETER;
- }
-
- if (!s_info.initialized) {
- s_info.initialized = 1;
- com_core_add_event_callback(CONNECTOR_DISCONNECTED, disconnected_cb, NULL);
- }
-
- if (s_info.client_fd < 0) {
- static struct method service_table[] = {
- {
- .cmd = NULL,
- .handler = NULL,
- },
- };
-
-
- s_info.client_fd = com_core_packet_client_init(s_info.socket_file, 0, service_table);
- if (s_info.client_fd < 0) {
- ErrPrint("Failed to make connection\n");
- return SHORTCUT_ERROR_COMM;
- }
- }
-
- item = malloc(sizeof(*item));
- if (!item) {
- ErrPrint("Heap: %s\n", strerror(errno));
- return SHORTCUT_ERROR_OUT_OF_MEMORY;
- }
-
- item->result_internal_cb = result_cb;
- item->result_cb = NULL;
- item->data = data;
-
- packet = packet_create("rm_dynamicbox", "iss", getpid(), appid, name);
- if (!packet) {
- ErrPrint("Failed to build a packet\n");
- free(item);
- return SHORTCUT_ERROR_FAULT;
- }
-
- ret = com_core_packet_async_send(s_info.client_fd, packet, 0.0f, shortcut_send_cb, item);
- if (ret < 0) {
- packet_destroy(packet);
- free(item);
- com_core_packet_client_fini(s_info.client_fd);
- s_info.client_fd = SHORTCUT_ERROR_INVALID_PARAMETER;
- return SHORTCUT_ERROR_COMM;
- }
-
+ /*Deprecated API */
return SHORTCUT_ERROR_NONE;
}
-EAPI int add_to_home_shortcut(const char *appid, const char *name, int type, const char *content, const char *icon, int allow_duplicate, result_internal_cb_t result_cb, void *data)
-{
- struct packet *packet;
- struct result_cb_item *item;
- int ret;
-
- if (!appid || ADD_TO_HOME_IS_DYNAMICBOX(type)) {
- ErrPrint("Invalid type used for adding a shortcut\n");
- return SHORTCUT_ERROR_INVALID_PARAMETER;
- }
-
- if (!s_info.initialized) {
- s_info.initialized = 1;
- com_core_add_event_callback(CONNECTOR_DISCONNECTED, disconnected_cb, NULL);
- }
-
- if (s_info.client_fd < 0) {
- static struct method service_table[] = {
- {
- .cmd = NULL,
- .handler = NULL,
- },
- };
-
- s_info.client_fd = com_core_packet_client_init(s_info.socket_file, 0, service_table);
- if (s_info.client_fd < 0) {
- ErrPrint("Failed to make connection\n");
- return SHORTCUT_ERROR_COMM;
- }
- }
-
- item = malloc(sizeof(*item));
- if (!item) {
- ErrPrint("Heap: %s\n", strerror(errno));
- return SHORTCUT_ERROR_OUT_OF_MEMORY;
- }
-
- item->result_internal_cb = result_cb;
- item->result_cb = NULL;
- item->data = data;
-
- if (!name) {
- name = "";
- }
-
- if (!content) {
- content = "";
- }
-
- if (!icon) {
- icon = "";
- }
-
- packet = packet_create("add_shortcut", "ississi", getpid(), appid, name, type, content, icon, allow_duplicate);
- if (!packet) {
- ErrPrint("Failed to build a packet\n");
- free(item);
- return SHORTCUT_ERROR_FAULT;
- }
-
- ret = com_core_packet_async_send(s_info.client_fd, packet, 0.0f, shortcut_send_cb, item);
- if (ret < 0) {
- packet_destroy(packet);
- free(item);
- com_core_packet_client_fini(s_info.client_fd);
- s_info.client_fd = SHORTCUT_ERROR_INVALID_PARAMETER;
- return SHORTCUT_ERROR_COMM;
- }
-
- return SHORTCUT_ERROR_NONE;
-}
-
EAPI int shortcut_add_to_home(const char *name, shortcut_type type, const char *uri, const char *icon, int allow_duplicate, result_cb_t result_cb, void *data)
{
struct packet *packet;
@@ -690,7 +434,7 @@ EAPI int shortcut_add_to_home(const char *name, shortcut_type type, const char *
if (appid) {
free(appid);
}
- ErrPrint("Heap: %s\n", strerror(errno));
+ ErrPrint("Heap: %d\n", errno);
return SHORTCUT_ERROR_OUT_OF_MEMORY;
}
@@ -737,81 +481,24 @@ EAPI int shortcut_add_to_home(const char *name, shortcut_type type, const char *
}
-EAPI int add_to_home_dynamicbox(const char *appid, const char *name, int type, const char *content, const char *icon, double period, int allow_duplicate, result_internal_cb_t result_cb, void *data)
-{
- struct packet *packet;
- struct result_cb_item *item;
- int ret;
-
- if (!appid || !ADD_TO_HOME_IS_DYNAMICBOX(type)) {
- ErrPrint("Invalid type is used for adding a dynamicbox\n");
- return SHORTCUT_ERROR_INVALID_PARAMETER;
- }
-
- if (!s_info.initialized) {
- s_info.initialized = 1;
- com_core_add_event_callback(CONNECTOR_DISCONNECTED, disconnected_cb, NULL);
- }
-
- if (s_info.client_fd < 0) {
- static struct method service_table[] = {
- {
- .cmd = NULL,
- .handler = NULL,
- },
- };
-
- s_info.client_fd = com_core_packet_client_init(s_info.socket_file, 0, service_table);
- if (s_info.client_fd < 0) {
- return SHORTCUT_ERROR_COMM;
- }
- }
-
- item = malloc(sizeof(*item));
- if (!item) {
- ErrPrint("Heap: %s\n", strerror(errno));
- return SHORTCUT_ERROR_OUT_OF_MEMORY;
- }
-
- item->result_internal_cb = result_cb;
- item->result_cb = NULL;
- item->data = data;
-
- packet = packet_create("add_shortcut_widget", "ississdi", getpid(), appid, name, type, content, icon, period, allow_duplicate);
- if (!packet) {
- ErrPrint("Failed to build a packet\n");
- free(item);
- return SHORTCUT_ERROR_FAULT;
- }
-
- ret = com_core_packet_async_send(s_info.client_fd, packet, 0.0f, shortcut_send_cb, item);
- if (ret < 0) {
- packet_destroy(packet);
- free(item);
- com_core_packet_client_fini(s_info.client_fd);
- s_info.client_fd = SHORTCUT_ERROR_INVALID_PARAMETER;
- return SHORTCUT_ERROR_COMM;
- }
-
- return SHORTCUT_ERROR_NONE;
-}
-
-
-EAPI int shortcut_add_to_home_widget(const char *name, shortcut_widget_size_e size, const char *uri, const char *icon, double period, int allow_duplicate, result_cb_t result_cb, void *data)
+EAPI int shortcut_add_to_home_widget(const char *name, shortcut_widget_size_e size, const char *widget_id, const char *icon, double period, int allow_duplicate, result_cb_t result_cb, void *data)
{
struct packet *packet;
struct result_cb_item *item;
char *appid = NULL;
int ret;
+ int err = SHORTCUT_ERROR_NONE;
if (name == NULL) {
ErrPrint("AppID is null\n");
- return SHORTCUT_ERROR_INVALID_PARAMETER;
+ err = SHORTCUT_ERROR_INVALID_PARAMETER;
+ goto out;
}
if (!SHORTCUT_IS_WIDGET_SIZE(size)) {
ErrPrint("Invalid type used for adding a widget\n");
- return SHORTCUT_ERROR_INVALID_PARAMETER;
+ err = SHORTCUT_ERROR_INVALID_PARAMETER;
+ goto out;
}
appid = _shortcut_get_pkgname_by_pid();
@@ -831,25 +518,28 @@ EAPI int shortcut_add_to_home_widget(const char *name, shortcut_widget_size_e si
s_info.client_fd = com_core_packet_client_init(s_info.socket_file, 0, service_table);
if (s_info.client_fd < 0) {
- return SHORTCUT_ERROR_COMM;
+ err = SHORTCUT_ERROR_COMM;
+ goto out;
}
}
item = malloc(sizeof(*item));
if (!item) {
- ErrPrint("Heap: %s\n", strerror(errno));
- return SHORTCUT_ERROR_OUT_OF_MEMORY;
+ ErrPrint("Heap: %d\n", errno);
+ err = SHORTCUT_ERROR_OUT_OF_MEMORY;
+ goto out;
}
item->result_internal_cb = NULL;
item->result_cb = result_cb;
item->data = data;
- packet = packet_create("add_shortcut_widget", "ississdi", getpid(), appid, name, size, uri, icon, period, allow_duplicate);
+ packet = packet_create("add_shortcut_widget", "ississdi", getpid(), widget_id, name, size, NULL, icon, period, allow_duplicate);
if (!packet) {
ErrPrint("Failed to build a packet\n");
free(item);
- return SHORTCUT_ERROR_FAULT;
+ err = SHORTCUT_ERROR_FAULT;
+ goto out;
}
ret = com_core_packet_async_send(s_info.client_fd, packet, 0.0f, shortcut_send_cb, item);
@@ -858,29 +548,29 @@ EAPI int shortcut_add_to_home_widget(const char *name, shortcut_widget_size_e si
free(item);
com_core_packet_client_fini(s_info.client_fd);
s_info.client_fd = SHORTCUT_ERROR_INVALID_PARAMETER;
- return SHORTCUT_ERROR_COMM;
+ err = SHORTCUT_ERROR_COMM;
+ goto out;
}
+out:
+ if (appid)
+ free(appid);
- return SHORTCUT_ERROR_NONE;
+ return err;
}
-
-
static inline int open_db(void)
{
int ret;
ret = db_util_open(s_info.dbfile, &s_info.handle, DB_UTIL_REGISTER_HOOK_METHOD);
if (ret != SQLITE_OK) {
- DbgPrint("Failed to open a %s. error [%d]\n", s_info.dbfile, ret);
+ DbgPrint("Failed to open a %s\n", s_info.dbfile);
return SHORTCUT_ERROR_IO_ERROR;
}
return SHORTCUT_ERROR_NONE;
}
-
-
/*!
* \note this function will returns allocated(heap) string
*/
@@ -925,7 +615,7 @@ static inline int get_i18n_name(const char *lang, int id, char **name, char **ic
if (_name && strlen((const char *)_name)) {
*name = strdup((const char *)_name);
if (!*name) {
- ErrPrint("strdup: %s\n", strerror(errno));
+ ErrPrint("strdup: %d\n", errno);
ret = -ENOMEM;
goto out;
}
@@ -939,7 +629,7 @@ static inline int get_i18n_name(const char *lang, int id, char **name, char **ic
if (_icon && strlen((const char *)_icon)) {
*icon = strdup((const char *)_icon);
if (!*icon) {
- ErrPrint("strdup: %s\n", strerror(errno));
+ ErrPrint("strdup: %d\n", errno);
ret = -ENOMEM;
if (name && *name) {
free(*name);
@@ -958,8 +648,6 @@ out:
return ret;
}
-
-
static inline char *cur_locale(void)
{
char *language;
@@ -983,18 +671,13 @@ static inline char *cur_locale(void)
} else {
language = strdup("en-us");
if (!language) {
- ErrPrint("Heap: %s\n", strerror(errno));
+ ErrPrint("Heap: %d\n", errno);
}
}
return language;
}
-
-
-/*!
- * \note READ ONLY DB
- */
EAPI int shortcut_get_list(const char *package_name, shortcut_list_cb list_cb, void *data)
{
sqlite3_stmt *stmt;
diff --git a/packaging/libshortcut.spec b/packaging/libshortcut.spec
index 11ff7fa..fd422fb 100755
--- a/packaging/libshortcut.spec
+++ b/packaging/libshortcut.spec
@@ -1,6 +1,6 @@
Name: libshortcut
Summary: Shortcut add feature supporting library
-Version: 0.6.14
+Version: 0.6.16
Release: 0
Group: Applications/Core Applications
License: Apache-2.0
@@ -49,26 +49,26 @@ export CXXFLAGS="${CXXFLAGS} -DTIZEN_ENGINEER_MODE"
export FFLAGS="${FFLAGS} -DTIZEN_ENGINEER_MODE"
%endif
-%cmake . -DSYSCONFDIR=%{_sysconfdir}
+%cmake . -DSYSCONFDIR=%{_sysconfdir} -DDB_PATH=%{TZ_SYS_DB}/.shortcut_service.db
make %{?jobs:-j%jobs}
%install
rm -rf %{buildroot}
%make_install
-mkdir -p %{buildroot}/usr/dbspace
+mkdir -p %{buildroot}%{TZ_SYS_DB}
%post
/sbin/ldconfig
-if [ ! -d /usr/dbspace ]
+if [ ! -d %{TZ_SYS_DB} ]
then
- mkdir /usr/dbspace
+ mkdir %{TZ_SYS_DB}
fi
-if [ ! -f /usr/dbspace/.shortcut_service.db ]
+if [ ! -f %{TZ_SYS_DB}/.shortcut_service.db ]
then
- sqlite3 /usr/dbspace/.shortcut_service.db 'PRAGMA journal_mode = PERSIST;
+ sqlite3 %{TZ_SYS_DB}/.shortcut_service.db 'PRAGMA journal_mode = PERSIST;
CREATE TABLE shortcut_service (
id INTEGER PRIMARY KEY AUTOINCREMENT,
pkgid TEXT,
@@ -87,10 +87,10 @@ then
'
fi
-chmod 664 /usr/dbspace/.shortcut_service.db
-chmod 664 /usr/dbspace/.shortcut_service.db-journal
-chsmack -a User::Home /usr/dbspace/.shortcut_service.db
-chsmack -a User::Home /usr/dbspace/.shortcut_service.db-journal
+chmod 664 %{TZ_SYS_DB}/.shortcut_service.db
+chmod 664 %{TZ_SYS_DB}/.shortcut_service.db-journal
+chsmack -a User::Home %{TZ_SYS_DB}/.shortcut_service.db
+chsmack -a User::Home %{TZ_SYS_DB}/.shortcut_service.db-journal
%postun -n %{name} -p /sbin/ldconfig
diff --git a/pkgmgr_shortcut/CMakeLists.txt b/pkgmgr_shortcut/CMakeLists.txt
index bcb4f0a..2207ec7 100644
--- a/pkgmgr_shortcut/CMakeLists.txt
+++ b/pkgmgr_shortcut/CMakeLists.txt
@@ -18,6 +18,7 @@ SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS} -g -Wall -Werror")
ADD_DEFINITIONS("-DPREFIX=\"${PREFIX}\"")
ADD_DEFINITIONS("-DLOG_TAG=\"PKGMGR_SHORTCUT\"")
+ADD_DEFINITIONS("-DDB_PATH=\"${DB_PATH}\"")
ADD_LIBRARY(${PROJECT_NAME} SHARED
src/service_register.c
diff --git a/pkgmgr_shortcut/src/service_register.c b/pkgmgr_shortcut/src/service_register.c
index 190e351..d5763bf 100755
--- a/pkgmgr_shortcut/src/service_register.c
+++ b/pkgmgr_shortcut/src/service_register.c
@@ -69,7 +69,7 @@ static struct {
const char *dbfile;
sqlite3 *handle;
} s_info = {
- .dbfile = "/usr/dbspace/.shortcut_service.db",
+ .dbfile = DB_PATH,
.handle = NULL,
};
@@ -744,7 +744,7 @@ static int db_init(void)
}
if (lstat(s_info.dbfile, &stat) < 0) {
- ErrPrint("%s\n", strerror(errno));
+ ErrPrint("%d\n", errno);
db_util_close(s_info.handle);
s_info.handle = NULL;
return -EIO;
@@ -815,7 +815,7 @@ static inline struct i18n_name *create_i18n_name(xmlChar *lang, xmlChar *name, x
i18n = malloc(sizeof(*i18n));
if (!i18n) {
- ErrPrint("Heap: %s\n", strerror(errno));
+ ErrPrint("Heap: %d\n", errno);
return NULL;
}