4 * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
6 * Contact: Jayoun Lee <airjany@samsung.com>, Sewook Park <sewook7.park@samsung.com>,
7 * Jaeho Lee <jaeho81.lee@samsung.com>, Shobhit Srivastava <shobhit.s@samsung.com>
9 * Licensed under the Apache License, Version 2.0 (the "License");
10 * you may not use this file except in compliance with the License.
11 * You may obtain a copy of the License at
13 * http://www.apache.org/licenses/LICENSE-2.0
15 * Unless required by applicable law or agreed to in writing, software
16 * distributed under the License is distributed on an "AS IS" BASIS,
17 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18 * See the License for the specific language governing permissions and
19 * limitations under the License.
28 /*rpm specific headers*/
35 /* For multi-user support */
36 #include <tzplatform_config.h>
38 #include "librpminternals.h"
40 #define BASEDIR tzplatform_getenv(TZ_SYS_SHARE)
41 #define USER_APP_FOLDER tzplatform_getenv(TZ_USER_APP)
44 void pkg_native_plugin_on_unload(void)
49 int pkg_plugin_app_is_installed(const char *pkgid)
51 _librpm_print(DEBUG_INFO,
52 "pkg_plugin_app_is_installed() is called\n");
53 /* Check for valid arguments */
55 _librpm_print(DEBUG_ERR,
56 "[pkg_plugin_get_app_detail_info_from_package] "
57 "args supplied is NULL\n");
61 ret = _librpm_app_is_installed(pkgid);
63 _librpm_print(DEBUG_ERR, "_librpm_app_is_installed() failed\n");
66 /*1 for installed, 0 for not installed*/
68 return LIBRPM_SUCCESS;
73 int pkg_plugin_get_installed_apps_list(const char *category,
75 package_manager_pkg_info_t **list,
78 return LIBRPM_SUCCESS;
81 int pkg_plugin_get_app_detail_info(const char *pkgid,
82 package_manager_pkg_detail_info_t
85 _librpm_print(DEBUG_INFO,
86 "pkg_plugin_get_app_detail_info() is called\n");
87 /* Check for valid arguments */
88 if (pkgid == NULL || pkg_detail_info == NULL) {
89 _librpm_print(DEBUG_ERR,
90 "[pkg_plugin_get_app_detail_info_from_package] "
91 "args supplied is NULL\n");
94 char dirname[BUFFSIZE] = { '\0' };
96 long long data_size = 0;
97 char buff[256] = {'\0'};
98 time_t install_time = 0;
100 /* pkgtype is by default rpm */
101 strncpy(pkg_detail_info->pkg_type, "rpm", sizeof(pkg_detail_info->pkg_type));
103 /* Get the installed package info from rpm db */
104 ret = _librpm_get_installed_package_info(pkgid, pkg_detail_info);
110 snprintf(dirname, BUFFSIZE-1, "%s/%s/data", USER_APP_FOLDER, pkgid);
111 data_size = _librpm_calculate_dir_size(dirname);
113 _librpm_print(DEBUG_ERR,
114 "Calculate dir size failed\n");
115 pkg_detail_info->data_size = 0 ;
118 data_size += BLOCK_SIZE; /* the function does not adds 4096
119 bytes for the directory size itself*/
120 pkg_detail_info->data_size = data_size/1024 ;
123 /* Min Platform Version */
124 pkg_detail_info->min_platform_version[0] = '\0';
127 pkg_detail_info->optional_id[0] = '\0';
129 /* Total Installed Size*/
130 pkg_detail_info->installed_size = pkg_detail_info->app_size +
131 pkg_detail_info->data_size;
133 snprintf(buff, 256, "db/app-info/%s/installed-time", pkgid);
134 ret = vconf_get_int(buff, (int *)&install_time);
136 _librpm_print(DEBUG_ERR, "get installed time failed\n");
137 pkg_detail_info->installed_time = 0;
140 pkg_detail_info->installed_time = install_time;
143 return LIBRPM_SUCCESS;
146 int pkg_plugin_get_app_detail_info_from_package(const char *pkg_path,
147 package_manager_pkg_detail_info_t
150 _librpm_print(DEBUG_INFO,
151 "pkg_plugin_get_app_detail_info_from_package() is called\n");
153 /* Check for valid arguments */
154 if (pkg_path == NULL || pkg_detail_info == NULL) {
155 _librpm_print(DEBUG_ERR,
156 "[pkg_plugin_get_app_detail_info_from_package]"
157 "args supplied is NULL\n");
162 long long data_size = 0;
164 char dirname[BUFFSIZE] = { '\0' };
165 char buff[256] = {'\0'};
166 time_t install_time = 0;
168 /* populate pkg type */
169 str = strrchr(pkg_path, 46); /* 46 is ASCII for . */
170 strncpy(pkg_detail_info->pkg_type, (str + 1), strlen(str + 1));
172 /* populate rpm header specific info (name, version, description, size)*/
173 ret = _librpm_get_package_header_info(pkg_path, pkg_detail_info);
178 /*get data_size. If pkg is not installed it will be 0*/
179 snprintf(dirname, BUFFSIZE-1, "%s/%s/data",
180 USER_APP_FOLDER, pkg_detail_info->pkgid);
182 data_size = _librpm_calculate_dir_size(dirname);
184 _librpm_print(DEBUG_ERR,
185 "Calculate dir size failed\n");
186 pkg_detail_info->data_size = 0 ;
189 data_size += BLOCK_SIZE; /* the function does not adds 4096
190 bytes for the directory size itself*/
192 pkg_detail_info->data_size = data_size/1024 ;
195 /* Min Platform Version */
196 pkg_detail_info->min_platform_version[0] = '\0';
199 pkg_detail_info->optional_id[0] = '\0';
201 /* Total Installed Size*/
202 pkg_detail_info->installed_size = pkg_detail_info->app_size +
203 pkg_detail_info->data_size;
206 snprintf(buff, 256, "db/app-info/%s/installed-time", pkg_detail_info->pkgid);
207 ret = vconf_get_int(buff, (int *)&install_time);
209 _librpm_print(DEBUG_ERR, "get installed time failed\n");
210 pkg_detail_info->installed_time = 0;
213 pkg_detail_info->installed_time = install_time;
216 return LIBRPM_SUCCESS;
219 API int pkg_plugin_on_load(pkg_plugin_set *set)
221 static int initialized = 0;
227 memset(set, 0x00, sizeof(pkg_plugin_set));
229 rc = rpmReadConfigFiles(NULL, NULL);
233 _librpm_print(DEBUG_ERR, "Unable to read RPM configuration.\n");
239 set->plugin_on_unload = pkg_native_plugin_on_unload;
240 set->pkg_is_installed = pkg_plugin_app_is_installed;
241 set->get_installed_pkg_list = pkg_plugin_get_installed_apps_list;
242 set->get_pkg_detail_info = pkg_plugin_get_app_detail_info;
243 set->get_pkg_detail_info_from_package =
244 pkg_plugin_get_app_detail_info_from_package;
246 return LIBRPM_SUCCESS;