Name: badge
-Summary: badge library
+Summary: Badge library
Version: 0.0.5
-Release: 1
+Release: 0
Group: Application Framework/Libraries
License: Apache-2.0
Source0: %{name}-%{version}.tar.gz
-Source1001: badge.manifest
+Source1001: badge.manifest
+Source1002: init_db.sh
BuildRequires: pkgconfig(aul)
BuildRequires: pkgconfig(dbus-1)
BuildRequires: pkgconfig(dbus-glib-1)
BuildRequires: pkgconfig(dlog)
BuildRequires: pkgconfig(vconf)
BuildRequires: pkgconfig(com-core)
+BuildRequires: pkgconfig(sqlite3)
+BuildRequires: pkgconfig(libtzplatform-config)
BuildRequires: cmake
-BuildRequires: sqlite3
-Requires: libbadge
%description
Badge library.
%package -n libbadge
Summary: Badge Library
-Requires: %{name} = %{version}-%{release}
%description -n libbadge
Badge library.
-
%package devel
Summary: Badge library (devel)
Group: Application Framework/Development
%install
%make_install
-mkdir -p %{buildroot}/opt/dbspace
-sqlite3 %{buildroot}/opt/dbspace/.%{name}.db < %{name}.sql
+install -D -m 0640 %{name}.sql %{buildroot}%{TZ_SYS_SHARE}/%{name}/ressources/%{name}.sql
+install -D -m 0750 %{SOURCE1002} %{buildroot}%{TZ_SYS_SHARE}/%{name}/ressources/init_db.sh
%post -p /sbin/ldconfig -n libbadge
%manifest badge.manifest
%defattr(-,root,root,-)
%{_libdir}/libbadge.so.*
-
-%files
-%manifest %{name}.manifest
-%verify(not md5 size mtime) %config(noreplace) %attr(660,root,app) /opt/dbspace/.%{name}.db-journal
-%verify(not md5 size mtime) %config(noreplace) %attr(660,root,app) /opt/dbspace/.%{name}.db
+%{TZ_SYS_SHARE}/%{name}
+%attr(640,root,%{TZ_SYS_USER_GROUP}) %{TZ_SYS_SHARE}/%{name}/ressources/%{name}.sql
+%attr(750,root,%{TZ_SYS_USER_GROUP}) %{TZ_SYS_SHARE}/%{name}/ressources/init_db.sh
%files devel
%manifest %{name}.manifest
#include <stdlib.h>
#include <stdarg.h>
#include <fcntl.h>
+#include <errno.h>
#include <unistd.h>
#include <glib.h>
#include <dbus/dbus.h>
#include <sqlite3.h>
#include <db-util.h>
+/* For multi-user support */
+#include <tzplatform_config.h>
+
#include "badge_log.h"
#include "badge_error.h"
#include "badge_internal.h"
#define BADGE_TABLE_NAME "badge_data"
#define BADGE_OPTION_TABLE_NAME "badge_option"
-#define BADGE_CHANGED_NOTI "badge_changed"
+#define BADGE_CHANGED_NOTI "badge_changed"
+
+#define BADGE_DB_PATH tzplatform_mkpath(TZ_USER_DB, "badge.db")
+
+#define SCRIPT_INIT_DB tzplatform_mkpath(TZ_SYS_SHARE, "badge/resources/init_db.sh")
struct _badge_h {
char *pkgname;
static GList *g_badge_cb_list;
+static int db_util_open_wrapper(sqlite3 *db)
+{
+ static int init_db = 1;
+ struct stat sts;
+ int sqlret, ret;
+
+ /* Check if the DB exists */
+ if(init_db) {
+ /* If the DB doesn't exist, create it and initialize it */
+ ret = stat(BADGE_DB_PATH, &sts);
+ if (ret == -1 && errno == ENOENT) {
+ DBG("DB %s doesn't exist, it needs to be created and \
+ initialized, calling %s", BADGE_DB_PATH, SCRIPT_INIT_DB);
+ system(SCRIPT_INIT_DB);
+ }
+ init_db = 0;
+ }
+
+ /* Open DB */
+ sqlret = db_util_open(BADGE_DB_PATH, &db, 0);
+
+ return sqlret;
+}
+
static inline long _get_max_len(void)
{
long max = 0;
int sqlret;
badge_error_e ret = BADGE_ERROR_NONE;
badge_error_e result = BADGE_ERROR_NONE;
+ badge_error_e sqlret_open;
if (!pkgname || !existing) {
ERR("pkgname : %s, existing : %p", pkgname, existing);
return BADGE_ERROR_INVALID_DATA;
}
- sqlret = db_util_open(BADGE_DB_PATH, &db, 0);
+ sqlret = db_util_open_wrapper(&db);
if (sqlret != SQLITE_OK || !db) {
ERR("fail to db_util_open - [%d]", sqlret);
return BADGE_ERROR_FROM_DB;
if (!callback)
return BADGE_ERROR_INVALID_DATA;
- sqlret = db_util_open(BADGE_DB_PATH, &db, 0);
+ sqlret = db_util_open_wrapper(&db);
if (sqlret != SQLITE_OK || !db) {
ERR("fail to db_util_open - [%d]", sqlret);
return BADGE_ERROR_FROM_DB;
if (!badge || !badge->pkgname || !badge->writable_pkgs)
return BADGE_ERROR_INVALID_DATA;
- sqlret = db_util_open(BADGE_DB_PATH, &db, 0);
+ sqlret = db_util_open_wrapper(&db);
if (sqlret != SQLITE_OK || !db) {
ERR("fail to db_util_open - [%s][%d]", BADGE_DB_PATH, sqlret);
return BADGE_ERROR_FROM_DB;
if (!pkgname)
return BADGE_ERROR_INVALID_DATA;
- sqlret = db_util_open(BADGE_DB_PATH, &db, 0);
+ sqlret = db_util_open_wrapper(&db);
if (sqlret != SQLITE_OK || !db) {
ERR("fail to db_util_open - [%d]", sqlret);
return BADGE_ERROR_FROM_DB;
if (!pkgname)
return BADGE_ERROR_INVALID_DATA;
- sqlret = db_util_open(BADGE_DB_PATH, &db, 0);
+ sqlret = db_util_open_wrapper(&db);
if (sqlret != SQLITE_OK || !db) {
ERR("fail to db_util_open - [%d]", sqlret);
return BADGE_ERROR_FROM_DB;
if (!count)
return BADGE_ERROR_INVALID_DATA;
- sqlret = db_util_open(BADGE_DB_PATH, &db, 0);
+ sqlret = db_util_open_wrapper(&db);
if (sqlret != SQLITE_OK || !db) {
ERR("fail to db_util_open - [%d]", sqlret);
return BADGE_ERROR_FROM_DB;
if (is_display != 0 && is_display != 1)
return BADGE_ERROR_INVALID_DATA;
- sqlret = db_util_open(BADGE_DB_PATH, &db, 0);
+ sqlret = db_util_open_wrapper(&db);
if (sqlret != SQLITE_OK || !db) {
ERR("fail to db_util_open - [%d]", sqlret);
return BADGE_ERROR_FROM_DB;
if (!is_display)
return BADGE_ERROR_INVALID_DATA;
- sqlret = db_util_open(BADGE_DB_PATH, &db, 0);
+ sqlret = db_util_open_wrapper(&db);
if (sqlret != SQLITE_OK || !db) {
ERR("fail to db_util_open - [%d]", sqlret);
return BADGE_ERROR_FROM_DB;