fix wrong db command
[platform/core/appfw/pkgmgr-info.git] / parser / pkgmgr_parser.h
1 /*
2  * pkgmgr-info
3  *
4  * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
5  *
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>
8  *
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
12  *
13  * http://www.apache.org/licenses/LICENSE-2.0
14  *
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.
20  *
21  */
22
23 #ifndef __PKGMGR_PARSER_H__
24 #define __PKGMGR_PARSER_H__
25
26 /**
27  * @file pkgmgr_parser.h
28  * @author Sewook Park <sewook7.park@samsung.com>
29  * @author Shobhit Srivastava <shobhit.s@samsung.com>
30  * @version 0.1
31  * @brief    This file declares API of pkgmgr_parser
32  * @addtogroup          APPLICATION_FRAMEWORK
33  * @{
34  *
35  * @defgroup            PackageManagerParser
36  * @section             Header Header file to include:
37  * @code
38  * #include             <pkgmgr_parser.h>
39  * @endcode
40  *
41  * @}
42  */
43
44 #include <libxml/xmlreader.h>
45
46 /* For multi-user support */
47 #include <tzplatform_config.h>
48 #include "pkgmgrinfo_basic.h"
49
50 #ifdef __cplusplus
51 extern "C" {
52 #endif
53
54 #ifndef DEPRECATED
55 #define DEPRECATED      __attribute__ ((__deprecated__))
56 #endif
57
58 #define DEFAULT_LOCALE          "No Locale"
59
60 #define PKG_PARSERLIB   "parserlib:"
61 #define PKG_PARSER_CONF_PATH    SYSCONFDIR "/package-manager/parser_path.conf"
62
63 #define PKG_STRING_LEN_MAX 1024
64
65 #define PKGMGR_PARSER_EMPTY_STR         ""
66 #define GLOBAL_USER tzplatform_getuid(TZ_SYS_GLOBALAPP_USER)
67
68 /**
69  * @brief Structure which is used by metadata plugin
70  */
71 typedef struct {
72         const char *key;
73         const char *value;
74 } __metadata_t;
75
76
77 /**
78  * @brief Structure which is used by category plugin
79  */
80 typedef struct {
81         const char *name;
82 } __category_t;
83
84 /* operation_type */
85 typedef enum {
86         ACTION_INSTALL = 0,
87         ACTION_UPGRADE,
88         ACTION_UNINSTALL,
89         ACTION_FOTA,
90         ACTION_MAX
91 } ACTION_TYPE;
92
93 /**
94  * @brief API return values
95  */
96 enum {
97         PM_PARSER_R_EINVAL = -2,                /**< Invalid argument */
98         PM_PARSER_R_ERROR = -1,         /**< General error */
99         PM_PARSER_R_OK = 0                      /**< General success */
100 };
101
102 /**
103  * @fn int pkgmgr_parser_parse_manifest_for_installation(const char *manifest, char *const tagv[])
104  * @fn int pkgmgr_parser_parse_usr_manifest_for_installation(const char *manifest, uid_t uid, char *const tagv[])
105  * @brief       This API parses the manifest file of the package after installation and stores the data in DB.
106  *
107  * @par         This API is for package-manager installer backends.
108  * @par Sync (or) Async : Synchronous API
109  *
110  * @param[in]   manifest        pointer to package manifest file
111  * @param[in]   uid     the addressee user id of the instruction
112  * @param[in]   tagv            array of xml tags or NULL
113  * @return      0 if success, error code(<0) if fail
114  * @retval      PMINFO_R_OK     success
115  * @retval      PMINFO_R_EINVAL invalid argument
116  * @retval      PMINFO_R_ERROR  internal error
117  * @pre         None
118  * @post                None
119  * @code
120 static int parse_manifest_file_for_installation(const char *manifest)
121 {
122         int ret = 0;
123         ret = pkgmgr_parser_parse_manifest_for_installation(manifest, NULL);
124         if (ret)
125                 return -1;
126         return 0;
127 }
128  * @endcode
129  */
130 int pkgmgr_parser_parse_manifest_for_installation(const char *manifest, char *const tagv[]) DEPRECATED;
131 int pkgmgr_parser_parse_usr_manifest_for_installation(const char *manifest, uid_t uid, char *const tagv[]) DEPRECATED;
132 int pkgmgr_parser_process_manifest_x_for_installation(manifest_x* mfx, const char *manifest);
133 int pkgmgr_parser_process_usr_manifest_x_for_installation(manifest_x* mfx, const char *manifest, uid_t uid);
134
135 /**
136  * @fn int pkgmgr_parser_parse_usr_manifest_for_upgrade(const char *manifest,  uid_t uid, char *const tagv[])
137  * @fn int pkgmgr_parser_parse_manifest_for_upgrade(const char *manifest, char *const tagv[])
138  * @brief       This API parses the manifest file of the package after upgrade and stores the data in DB.
139  *
140  * @par         This API is for package-manager installer backends.
141  * @par Sync (or) Async : Synchronous API
142  *
143  * @param[in]   manifest        pointer to package manifest file
144  * @param[in]   uid     the addressee user id of the instruction
145  * @param[in]   tagv            array of xml tags or NULL
146  * @return      0 if success, error code(<0) if fail
147  * @retval      PMINFO_R_OK     success
148  * @retval      PMINFO_R_EINVAL invalid argument
149  * @retval      PMINFO_R_ERROR  internal error
150  * @pre         None
151  * @post                None
152  * @code
153 static int parse_manifest_file_for_upgrade(const char *manifest)
154 {
155         int ret = 0;
156         ret = pkgmgr_parser_parse_manifest_for_upgrade(manifest, NULL);
157         if (ret)
158                 return -1;
159         return 0;
160 }
161  * @endcode
162  */
163 int pkgmgr_parser_parse_manifest_for_upgrade(const char *manifest, char *const tagv[]) DEPRECATED;
164 int pkgmgr_parser_parse_usr_manifest_for_upgrade(const char *manifest, uid_t uid, char *const tagv[]) DEPRECATED;
165 int pkgmgr_parser_process_manifest_x_for_upgrade(manifest_x* mfx, const char *manifest);
166 int pkgmgr_parser_process_usr_manifest_x_for_upgrade(manifest_x* mfx, const char *manifest, uid_t uid);
167
168 /**
169  * @fn int pkgmgr_parser_parse_manifest_for_uninstallation(const char *manifest, char *const tagv[])
170  * @fn int pkgmgr_parser_parse_usr_manifest_for_uninstallation(const char *manifest, uid_t uid, char *const tagv[])
171  * @brief       This API parses the manifest file of the package after uninstallation and deletes the data from DB.
172  *
173  * @par         This API is for package-manager installer backends.
174  * @par Sync (or) Async : Synchronous API
175  *
176  * @param[in]   manifest        pointer to package manifest file
177  * @param[in]   uid     the addressee user id of the instruction
178  * @param[in]   tagv            array of xml tags or NULL
179  * @return      0 if success, error code(<0) if fail
180  * @retval      PMINFO_R_OK     success
181  * @retval      PMINFO_R_EINVAL invalid argument
182  * @retval      PMINFO_R_ERROR  internal error
183  * @pre         None
184  * @post                None
185  * @code
186 static int parse_manifest_file_for_uninstallation(const char *manifest)
187 {
188         int ret = 0;
189         ret = pkgmgr_parser_parse_manifest_for_uninstallation(manifest, NULL);
190         if (ret)
191                 return -1;
192         return 0;
193 }
194  * @endcode
195  */
196 int pkgmgr_parser_parse_manifest_for_uninstallation(const char *manifest, char *const tagv[]) DEPRECATED;
197 int pkgmgr_parser_parse_usr_manifest_for_uninstallation(const char *manifest, uid_t uid, char *const tagv[]) DEPRECATED;
198 int pkgmgr_parser_process_manifest_x_for_uninstallation(manifest_x* mfx, const char *manifest);
199 int pkgmgr_parser_process_usr_manifest_x_for_uninstallation(manifest_x* mfx, const char *manifest, uid_t uid);
200
201 /**
202  * @fn int pkgmgr_parser_check_manifest_validation(const char *manifest)
203  * @brief       This API validates the manifest file against the manifest schema.
204  *
205  * @par         This API is for package-manager installer backends.
206  * @par Sync (or) Async : Synchronous API
207  *
208  * @param[in]   manifest        pointer to package manifest file
209  * @return      0 if success, error code(<0) if fail
210  * @retval      PMINFO_R_OK     success
211  * @retval      PMINFO_R_EINVAL invalid argument
212  * @retval      PMINFO_R_ERROR  internal error
213  * @pre         None
214  * @post                None
215  * @code
216 static int validate_manifest_file(const char *manifest)
217 {
218         int ret = 0;
219         ret = pkgmgr_parser_check_manifest_validation(manifest);
220         if (ret)
221                 return -1;
222         return 0;
223 }
224  * @endcode
225  */
226 int pkgmgr_parser_check_manifest_validation(const char *manifest);
227
228 /**
229  * @fn void pkgmgr_parser_free_manifest_xml(manifest_x *mfx)
230  * @brief       This API will free the manifest pointer by recursively freeing all sub elements.
231  *
232  * @par         This API is for package-manager installer backends.
233  * @par Sync (or) Async : Synchronous API
234  *
235  * @param[in]   mfx     pointer to parsed manifest data
236  * @pre         pkgmgr_parser_process_manifest_xml()
237  * @post                None
238  * @code
239 static int parse_manifest_file(const char *manifest)
240 {
241         manifest_x *mfx = NULL
242         mfx = pkgmgr_parser_process_manifest_xml(manifest);
243         if (mfx == NULL)
244                 return -1;
245         printf("Parsing Manifest Success\n");
246         pkgmgr_parser_free_manifest_xml(mfx);
247         return 0;
248 }
249  * @endcode
250  */
251 void pkgmgr_parser_free_manifest_xml(manifest_x *mfx);
252
253 /**
254  * @fn manifest_x *pkgmgr_parser_process_manifest_xml(const char *manifest)
255  * @fn manifest_x *pkgmgr_parser_usr_process_manifest_xml(const char *manifest, uid_t uid)
256  * @brief       This API parses the manifest file and stores all the data in the manifest structure.
257  *
258  * @par         This API is for package-manager installer backends.
259  * @par Sync (or) Async : Synchronous API
260  *
261  * @param[in]   manifest        pointer to package manifest file
262  * @param[in]   uid     the addressee user id of the instruction
263  * @return      manifest pointer on success, NULL on failure
264  * @pre         None
265  * @post                pkgmgr_parser_free_manifest_xml()
266  * @code
267 static int parse_manifest_file(const char *manifest)
268 {
269         manifest_x *mfx = NULL
270         mfx = pkgmgr_parser_process_manifest_xml(manifest);
271         if (mfx == NULL)
272                 return -1;
273         printf("Parsing Manifest Success\n");
274         pkgmgr_parser_free_manifest_xml(mfx);
275         return 0;
276 }
277  * @endcode
278  */
279 manifest_x *pkgmgr_parser_process_manifest_xml(const char *manifest) DEPRECATED;
280 manifest_x *pkgmgr_parser_usr_process_manifest_xml(const char *manifest, uid_t uid) DEPRECATED;
281
282 /** @} */
283 #ifdef __cplusplus
284 }
285 #endif
286 #endif                          /* __PKGMGR_PARSER_H__ */