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.
23 #include <pkgmgr_installer.h>
27 #include "rpm-installer-util.h"
28 #include "rpm-installer.h"
30 #define VCONF_LOCATION "db"
31 #define VCONF_RPM_INSTALLER VCONF_LOCATION"/private/rpm-installer"
33 #define VCONF_RPM_INSTALLER_BACKEND_STATE \
34 VCONF_RPM_INSTALLER"/state"
35 #define VCONF_RPM_INSTALLER_BACKEND_STATEINFO \
36 VCONF_RPM_INSTALLER"/stateinfo"
38 #define VCONF_RPM_INSTALLER_LAST_REQUESTINFO_COMMAND \
39 VCONF_RPM_INSTALLER"/requestinfo/command"
40 #define VCONF_RPM_INSTALLER_LAST_REQUESTINFO_PKGNAME \
41 VCONF_RPM_INSTALLER"/requestinfo/pkgname"
42 #define VCONF_RPM_INSTALLER_LAST_REQUESTINFO_OPTIONS \
43 VCONF_RPM_INSTALLER"/requestinfo/options"
45 #define ERR_RETURN_LEN 256
47 extern pkgmgr_installer *pi;
48 extern char *gpkgname;
49 extern int broadcast_disable;
51 int _ri_get_backend_state()
56 // _LOGD("_ri_get_backend_state\n");
57 ret = vconf_get_int(VCONF_RPM_INSTALLER_BACKEND_STATE, &state);
60 "_ri_get_backend_state: vconf_get_int FAIL\n");
67 int _ri_set_backend_state(int state)
72 vconf_unset_recursive(VCONF_RPM_INSTALLER);
75 // _LOGD("_ri_set_backend_state\n");
76 ret = vconf_set_int(VCONF_RPM_INSTALLER_BACKEND_STATE, state);
79 "_ri_set_backend_state: vconf_set_int FAIL\n");
85 int _ri_get_backend_state_info()
89 ret = vconf_get_int(VCONF_RPM_INSTALLER_BACKEND_STATEINFO, &state);
92 "_ri_get_backend_state_info: vconf_get_int FAIL\n");
95 /* _LOGD("_ri_get_backend_state_info state[%d]\n", state);*/
100 int _ri_set_backend_state_info(int state)
103 // _LOGD("_ri_set_backend_state_info %d\n", state);
104 ret = vconf_set_int(VCONF_RPM_INSTALLER_BACKEND_STATEINFO, state);
107 "_ri_set_backend_state_info: vconf_set_int FAIL\n");
112 int _ri_get_last_input_info(char **pkgid, int *preqcommand, int *poptions)
115 if (!pkgid || !preqcommand || !poptions)
117 ret = vconf_get_int(VCONF_RPM_INSTALLER_LAST_REQUESTINFO_COMMAND,
121 "_ri_get_last_input_info: VCONF_RPM_INSTALLER_LAST_REQUESTINFO_COMMAND: vconf_get_int FAIL\n");
123 ret = vconf_get_int(VCONF_RPM_INSTALLER_LAST_REQUESTINFO_OPTIONS,
127 "_ri_get_last_input_info: VCONF_RPM_INSTALLER_LAST_REQUESTINFO_OPTIONS: vconf_get_int FAIL\n");
129 *pkgid = vconf_get_str(VCONF_RPM_INSTALLER_LAST_REQUESTINFO_PKGNAME);
133 void _ri_save_last_input_info(char *pkgid, int reqcommand, int options)
135 keylist_t *kl = NULL;
136 kl = vconf_keylist_new();
139 ret = vconf_keylist_add_int(kl,
140 VCONF_RPM_INSTALLER_LAST_REQUESTINFO_COMMAND,
143 _LOGE("vconf_keylist_add_int FAIL\n");
144 ret = vconf_keylist_add_str(kl,
145 VCONF_RPM_INSTALLER_LAST_REQUESTINFO_PKGNAME,
148 _LOGE("vconf_keylist_add_str FAIL\n");
149 ret = vconf_keylist_add_int(kl,
150 VCONF_RPM_INSTALLER_LAST_REQUESTINFO_OPTIONS,
153 _LOGE("vconf_keylist_add_int FAIL\n");
157 "_ri_save_last_input_info: Failure in writing vconf\n");
159 ret = vconf_keylist_free(kl);
161 _LOGE("vconf_keylist_free FAIL\n");
164 void _ri_broadcast_privilege_notification(const char *pkgid, const char *pkgtype, const char *key, const char *val)
168 if (broadcast_disable || pi == NULL || val == NULL)
171 _LOGE("pkgid=[%s], key[%s], val=[%s]", pkgid, key, val);
172 pkgmgr_installer_send_signal(pi, pkgtype, pkgid, key, val);
175 void _ri_broadcast_status_notification(const char *pkgid, char *pkg_type, char *key, char *val)
177 const char *pkgid_tmp = pkgid;
178 char buf[ERR_RETURN_LEN] = {'\0'};
181 if (broadcast_disable)
185 if (gpkgname != NULL)
186 pkgid_tmp = gpkgname;
192 _LOGE("Failure in sending broadcast message\n");
196 if (strcmp(key,PKGMGR_INSTALLER_INSTALL_PERCENT_KEY_STR) == 0) {
199 _LOGD("pkgid=[%s], key=[%s], val=[%s]\n", pkgid_tmp, key, val);
201 snprintf(buf, ERR_RETURN_LEN - 1, "%d", ret_val);
202 pkgmgr_installer_send_signal(pi, pkg_type, pkgid_tmp, key, buf);
205 ret_val = _ri_string_to_error_no(val);
207 _LOGD( "pkgid=[%s], key=[%s], val=[%s]\n", pkgid_tmp, key, val);
209 if (ret_val == RPM_INSTALLER_ERR_UNKNOWN){
210 pkgmgr_installer_send_signal(pi, pkg_type, pkgid_tmp, key, val);
213 snprintf(buf, ERR_RETURN_LEN - 1, "%d:%s", ret_val, val);
214 pkgmgr_installer_send_signal(pi, pkg_type, pkgid_tmp, key, buf);