5 #include <privilege_db_manager.h>
6 #include "privilege_information.h"
9 #define LOG_TAG "PRIVILEGE_INFO"
12 #define TryReturn(condition, expr, returnValue, ...) \
21 #define PI_API __attribute__((visibility("default")))
26 PRVINFO_ERROR_NO_MATCHING_PRIVILEGE = TIZEN_ERROR_PRIVILEGE_INFORMATION | 0x01
27 }privilege_info_internal_error_e;
29 int privilege_info_get_display_name_string_id(const char* api_version, const char *privilege, char **display_name_string_id)
31 TryReturn(api_version != NULL,, PRVINFO_ERROR_INVALID_PARAMETER, "[PRVINFO_ERROR_INVALID_PARAMETER] api_version is NULL");
32 TryReturn(privilege != NULL,, PRVINFO_ERROR_INVALID_PARAMETER, "[PRVINFO_ERROR_INVALID_PARAMETER] privilege is NULL");
37 int ret = privilege_db_manager_get_privilege_display(PRIVILEGE_DB_MANAGER_PACKAGE_TYPE_CORE, privilege, api_version, &temp);
39 if(ret == PRIVILEGE_DB_MANAGER_ERR_NONE)
43 *display_name_string_id = NULL;
45 else if(strcmp(temp,"") == 0)
47 *display_name_string_id = NULL;
54 else if(ret != PRIVILEGE_DB_NO_EXIST_RESULT)
56 goto err_internal_error;
66 ret = privilege_db_manager_get_privilege_display(PRIVILEGE_DB_MANAGER_PACKAGE_TYPE_WRT, privilege, api_version, &temp);
68 if(ret == PRIVILEGE_DB_MANAGER_ERR_NONE)
72 goto err_no_matching_privilege;
74 else if(strcmp(temp,"") == 0)
76 goto err_no_matching_privilege;
83 else if(ret == PRIVILEGE_DB_NO_EXIST_RESULT)
85 goto err_no_matching_privilege;
89 goto err_internal_error;
93 *display_name_string_id = (char*)calloc(strlen(temp) + 1, sizeof(char));
94 TryReturn(*display_name_string_id != NULL, free(temp), PRVINFO_ERROR_OUT_OF_MEMORY, "[PRVINFO_ERROR_OUT_OF_MEMORY] Memory allocation is failed.");
95 memcpy(*display_name_string_id, temp, strlen(temp));
96 LOGD("display_name_string_id = %s", *display_name_string_id);
98 return PRVINFO_ERROR_NONE;
100 err_no_matching_privilege:
101 *display_name_string_id = NULL;
103 return PRVINFO_ERROR_NO_MATCHING_PRIVILEGE;
107 return PRVINFO_ERROR_INTERNAL_ERROR;
111 int privilege_info_get_display_name_by_string_id(const char *string_id, char **display_name)
114 TryReturn(string_id != NULL,, PRVINFO_ERROR_INVALID_PARAMETER, "[PRVINFO_ERROR_INVALID_PARAMETER] string_id is NULL");
116 temp = dgettext("privilege", string_id);
118 *display_name = (char*)calloc(strlen(temp) + 1, sizeof(char));
119 TryReturn(*display_name != NULL,, PRVINFO_ERROR_OUT_OF_MEMORY, "[PRVINFO_ERROR_OUT_OF_MEMORY] Memory allocation failed.");
121 memcpy(*display_name, temp, strlen(temp));
123 return PRVINFO_ERROR_NONE;
127 int privilege_info_get_display_name(const char* api_version, const char* privilege, char** display_name)
130 char* display_name_string_id = NULL;
132 TryReturn(api_version != NULL,, PRVINFO_ERROR_INVALID_PARAMETER, "[PRVINFO_ERROR_INVALID_PARAMETER] api_version is NULL");
133 TryReturn(privilege != NULL,, PRVINFO_ERROR_INVALID_PARAMETER, "[PRVINFO_ERROR_INVALID_PARAMETER] privilege is NULL");
135 ret = privilege_info_get_display_name_string_id(api_version, privilege, &display_name_string_id);
137 if(ret == PRVINFO_ERROR_NO_MATCHING_PRIVILEGE)
139 char* tempPrivilege = NULL;
144 tempPrivilege = strdup(privilege);
145 TryReturn(tempPrivilege != NULL, free(tempPrivilege), PRVINFO_ERROR_OUT_OF_MEMORY, "[PRVINFO_ERROR_OUT_OF_MEMORY] tempPrivilege's strdup is failed.");
147 token = strtok_r(tempPrivilege, "/", &save);
151 token = strtok_r(NULL, "/", &save);
153 *display_name = (char*)calloc(strlen(temp) + 1, sizeof(char));
154 TryReturn(*display_name != NULL, free(tempPrivilege), PRVINFO_ERROR_OUT_OF_MEMORY, "[PRVINFO_ERROR_OUT_OF_MEMORY] Memory allocation failed.");
155 memcpy(*display_name, temp, strlen(temp));
158 else if(ret == PRVINFO_ERROR_NONE)
160 ret = privilege_info_get_display_name_by_string_id(display_name_string_id, display_name);
161 free(display_name_string_id);
162 TryReturn(ret == PRVINFO_ERROR_NONE,, PRVINFO_ERROR_OUT_OF_MEMORY, "[PRVINFO_ERROR_OUT_OF_MEMORY] Memory allocation failed.");
166 return PRVINFO_ERROR_INTERNAL_ERROR;
168 return PRVINFO_ERROR_NONE;
172 int privilege_info_get_description_string_id(const char* api_version, const char *privilege, char **description_string_id)
174 TryReturn(api_version != NULL,, PRVINFO_ERROR_INVALID_PARAMETER, "[PRVINFO_ERROR_INVALID_PARAMETER] api_version is NULL");
175 TryReturn(privilege != NULL,, PRVINFO_ERROR_INVALID_PARAMETER, "[PRVINFO_ERROR_INVALID_PARAMETER] privilege is NULL");
180 int ret = privilege_db_manager_get_privilege_description(PRIVILEGE_DB_MANAGER_PACKAGE_TYPE_CORE, privilege, api_version, &temp);
182 if(ret == PRIVILEGE_DB_MANAGER_ERR_NONE)
186 *description_string_id = NULL;
188 else if(strcmp(temp, "") == 0)
190 *description_string_id = NULL;
197 else if(ret != PRIVILEGE_DB_NO_EXIST_RESULT)
199 goto err_internal_error;
208 ret = privilege_db_manager_get_privilege_description(PRIVILEGE_DB_MANAGER_PACKAGE_TYPE_WRT, privilege, api_version, &temp);
210 if(ret == PRIVILEGE_DB_MANAGER_ERR_NONE)
214 goto err_no_matching_privilege;
216 else if(strcmp(temp,"") == 0)
218 goto err_no_matching_privilege;
225 else if(ret == PRIVILEGE_DB_NO_EXIST_RESULT)
227 goto err_no_matching_privilege;
231 goto err_internal_error;
235 *description_string_id = (char*)calloc(strlen(temp) + 1, sizeof(char));
236 TryReturn(*description_string_id != NULL, free(temp), PRVINFO_ERROR_OUT_OF_MEMORY, "[PRVINFO_ERROR_OUT_OF_MEMORY] Memory allocation is failed.");
237 memcpy(*description_string_id, temp, strlen(temp));
238 LOGD("description_string_id = %s", *description_string_id);
240 return PRVINFO_ERROR_NONE;
242 err_no_matching_privilege:
243 *description_string_id = NULL;
245 return PRVINFO_ERROR_NO_MATCHING_PRIVILEGE;
249 return PRVINFO_ERROR_INTERNAL_ERROR;
252 int privilege_info_get_description_by_string_id(const char *string_id, char **description)
255 TryReturn(string_id != NULL,, PRVINFO_ERROR_INVALID_PARAMETER, "[PRVINFO_ERROR_INVALID_PARAMETER] string_id is NULL");
257 temp = dgettext("privilege", string_id);
259 *description = (char*)calloc(strlen(temp) + 1, sizeof(char));
260 TryReturn(*description != NULL,, PRVINFO_ERROR_OUT_OF_MEMORY, "[PRVINFO_ERROR_OUT_OF_MEMORY] Memory allocation failed.");
262 memcpy(*description, temp, strlen(temp));
264 return PRVINFO_ERROR_NONE;
268 int privilege_info_get_description(const char* api_version, const char* privilege, char** description)
271 char* description_string_id = NULL;
273 TryReturn(api_version != NULL,, PRVINFO_ERROR_INVALID_PARAMETER, "[PRVINFO_ERROR_INVALID_PARAMETER] api_version is NULL");
274 TryReturn(privilege != NULL,, PRVINFO_ERROR_INVALID_PARAMETER, "[PRVINFO_ERROR_INVALID_PARAMETER] privilege is NULL");
276 ret = privilege_info_get_description_string_id(api_version, privilege, &description_string_id);
278 if(ret == PRVINFO_ERROR_NO_MATCHING_PRIVILEGE)
281 temp = dgettext("privilege", "IDS_TPLATFORM_BODY_THIS_PRIVILEGE_IS_NOT_DEFINED");
282 *description = (char*)calloc(strlen(temp) + 1, sizeof(char));
283 TryReturn(*description != NULL,, PRVINFO_ERROR_OUT_OF_MEMORY, "[PRVINFO_ERROR_OUT_OF_MEMORY] Memory allocation failed.");
285 memcpy(*description, temp, strlen(temp));
287 else if(ret == PRVINFO_ERROR_NONE)
289 ret = privilege_info_get_description_by_string_id(description_string_id, description);
290 free(description_string_id);
291 TryReturn(ret == PRVINFO_ERROR_NONE,, PRVINFO_ERROR_OUT_OF_MEMORY, "[PRVINFO_ERROR_OUT_OF_MEMORY] Memory allocation failed.");
295 return PRVINFO_ERROR_INTERNAL_ERROR;
297 return PRVINFO_ERROR_NONE;
300 int privilege_info_get_display_name_string_id_by_pkgtype(const char* package_type, const char* api_version, const char *privilege, char **display_name_string_id)
302 TryReturn(package_type != NULL,, PRVINFO_ERROR_INVALID_PARAMETER, "[PRVINFO_ERROR_INVALID_PARAMETER] package_type is NULL");
303 TryReturn(api_version != NULL,, PRVINFO_ERROR_INVALID_PARAMETER, "[PRVINFO_ERROR_INVALID_PARAMETER] api_version is NULL");
304 TryReturn(privilege != NULL,, PRVINFO_ERROR_INVALID_PARAMETER, "[PRVINFO_ERROR_INVALID_PARAMETER] privilege is NULL");
308 // Check package_type
310 if(strcmp(package_type,"PRVINFO_PACKAGE_TYPE_NATIVE") == 0)
312 LOGD("package_type = %s", package_type);
314 else if(strcmp(package_type,"PRVINFO_PACKAGE_TYPE_WEB") == 0)
316 LOGD("package_type = %s", package_type);
317 ret = privilege_db_manager_get_privilege_display(PRIVILEGE_DB_MANAGER_PACKAGE_TYPE_WRT, privilege, api_version, &temp);
318 if(ret == PRIVILEGE_DB_MANAGER_ERR_NONE)
322 *display_name_string_id = NULL;
324 else if(strcmp(temp,"") == 0)
326 *display_name_string_id = NULL;
333 else if(ret != PRIVILEGE_DB_NO_EXIST_RESULT)
335 goto err_internal_error;
346 LOGD("package_type = %s", package_type);
348 return PRVINFO_ERROR_INVALID_PARAMETER;
351 ret = privilege_db_manager_get_privilege_display(PRIVILEGE_DB_MANAGER_PACKAGE_TYPE_CORE, privilege, api_version, &temp);
353 if(ret == PRIVILEGE_DB_MANAGER_ERR_NONE)
357 goto err_no_matching_privilege;
359 else if(strcmp(temp, "") == 0)
361 goto err_no_matching_privilege;
368 else if(ret == PRIVILEGE_DB_NO_EXIST_RESULT)
370 goto err_no_matching_privilege;
374 goto err_internal_error;
378 *display_name_string_id = (char*)calloc(strlen(temp) + 1, sizeof(char));
379 TryReturn(*display_name_string_id != NULL, free(temp), PRVINFO_ERROR_OUT_OF_MEMORY, "[PRVINFO_ERROR_OUT_OF_MEMORY] Memory allocation is failed.");
380 memcpy(*display_name_string_id, temp, strlen(temp));
381 LOGD("display_name_string_id = %s", *display_name_string_id);
383 return PRVINFO_ERROR_NONE;
385 err_no_matching_privilege:
386 *display_name_string_id = NULL;
388 return PRVINFO_ERROR_NO_MATCHING_PRIVILEGE;
392 return PRVINFO_ERROR_INTERNAL_ERROR;
396 int privilege_info_get_display_name_by_pkgtype(const const char* package_type, const char* api_version, const char* privilege, char** display_name)
399 char* display_name_string_id = NULL;
401 TryReturn(package_type != NULL,, PRVINFO_ERROR_INVALID_PARAMETER, "[PRVINFO_ERROR_INVALID_PARAMETER] package_type is NULL");
402 TryReturn(api_version != NULL,, PRVINFO_ERROR_INVALID_PARAMETER, "[PRVINFO_ERROR_INVALID_PARAMETER] api_version is NULL");
403 TryReturn(privilege != NULL,, PRVINFO_ERROR_INVALID_PARAMETER, "[PRVINFO_ERROR_INVALID_PARAMETER] privilege is NULL");
405 ret = privilege_info_get_display_name_string_id_by_pkgtype(package_type, api_version, privilege, &display_name_string_id);
407 if(ret == PRVINFO_ERROR_NO_MATCHING_PRIVILEGE)
409 char* tempPrivilege = NULL;
413 tempPrivilege = strdup(privilege);
414 TryReturn(tempPrivilege != NULL, free(tempPrivilege), PRVINFO_ERROR_OUT_OF_MEMORY, "[PRVINFO_ERROR_OUT_OF_MEMORY] tempPrivilege's strdup is failed.");
415 token = strtok_r(tempPrivilege, "/", &save);
419 token = strtok_r(NULL, "/", &save);
421 *display_name = (char*)calloc(strlen(temp) + 1, sizeof(char));
422 TryReturn(*display_name != NULL, free(tempPrivilege), PRVINFO_ERROR_OUT_OF_MEMORY, "[PRVINFO_ERROR_OUT_OF_MEMORY] Memory allocation failed.");
423 memcpy(*display_name, temp, strlen(temp));
426 else if(ret == PRVINFO_ERROR_NONE)
428 ret = privilege_info_get_display_name_by_string_id(display_name_string_id, display_name);
429 free(display_name_string_id);
430 TryReturn(ret == PRVINFO_ERROR_NONE,, PRVINFO_ERROR_OUT_OF_MEMORY, "[PRVINFO_ERROR_OUT_OF_MEMORY] Memory allocation failed.");
434 return PRVINFO_ERROR_INTERNAL_ERROR;
436 return PRVINFO_ERROR_NONE;
440 int privilege_info_get_description_string_id_by_pkgtype(const char* package_type, const char* api_version, const char *privilege, char **description_string_id)
442 TryReturn(package_type != NULL,, PRVINFO_ERROR_INVALID_PARAMETER, "[PRVINFO_ERROR_INVALID_PARAMETER] package_type is NULL");
443 TryReturn(api_version != NULL,, PRVINFO_ERROR_INVALID_PARAMETER, "[PRVINFO_ERROR_INVALID_PARAMETER] api_version is NULL");
444 TryReturn(privilege != NULL,, PRVINFO_ERROR_INVALID_PARAMETER, "[PRVINFO_ERROR_INVALID_PARAMETER] privilege is NULL");
448 // Check package_type
451 if(strcmp(package_type,"PRVINFO_PACKAGE_TYPE_WEB") == 0)
453 LOGD("package_type = %s", package_type);
454 ret = privilege_db_manager_get_privilege_description(PRIVILEGE_DB_MANAGER_PACKAGE_TYPE_WRT, privilege, api_version, &temp);
455 if(ret == PRIVILEGE_DB_MANAGER_ERR_NONE)
459 *description_string_id = NULL;
461 else if(strcmp(temp,"") == 0)
463 *description_string_id = NULL;
470 else if(ret != PRIVILEGE_DB_NO_EXIST_RESULT)
472 goto err_internal_error;
481 else if(strcmp(package_type,"PRVINFO_PACKAGE_TYPE_NATIVE") == 0)
483 LOGD("package_type = %s", package_type);
487 LOGD("package_type = %s", package_type);
489 return PRVINFO_ERROR_INVALID_PARAMETER;
492 ret = privilege_db_manager_get_privilege_description(PRIVILEGE_DB_MANAGER_PACKAGE_TYPE_CORE, privilege, api_version, &temp);
494 if(ret == PRIVILEGE_DB_MANAGER_ERR_NONE)
498 goto err_no_matching_privilege;
500 else if(strcmp(temp,"") == 0)
502 goto err_no_matching_privilege;
509 else if(ret == PRIVILEGE_DB_NO_EXIST_RESULT)
511 goto err_no_matching_privilege;
515 goto err_internal_error;
520 *description_string_id = (char*)calloc(strlen(temp) + 1, sizeof(char));
521 TryReturn(*description_string_id != NULL, free(temp), PRVINFO_ERROR_OUT_OF_MEMORY, "[PRVINFO_ERROR_OUT_OF_MEMORY] Memory allocation is failed.");
522 memcpy(*description_string_id, temp, strlen(temp));
523 LOGD("description_string_id = %s", *description_string_id);
525 return PRVINFO_ERROR_NONE;
527 err_no_matching_privilege:
528 *description_string_id = NULL;
530 return PRVINFO_ERROR_NO_MATCHING_PRIVILEGE;
534 return PRVINFO_ERROR_INTERNAL_ERROR;
538 int privilege_info_get_description_by_pkgtype(const char* package_type, const char* api_version, const char* privilege, char** description)
541 char* description_string_id = NULL;
543 TryReturn(package_type != NULL,, PRVINFO_ERROR_INVALID_PARAMETER, "[PRVINFO_ERROR_INVALID_PARAMETER] package_type is NULL");
544 TryReturn(api_version != NULL,, PRVINFO_ERROR_INVALID_PARAMETER, "[PRVINFO_ERROR_INVALID_PARAMETER] api_version is NULL");
545 TryReturn(privilege != NULL,, PRVINFO_ERROR_INVALID_PARAMETER, "[PRVINFO_ERROR_INVALID_PARAMETER] privilege is NULL");
547 ret = privilege_info_get_description_string_id_by_pkgtype(package_type, api_version, privilege, &description_string_id);
549 if(ret == PRVINFO_ERROR_NO_MATCHING_PRIVILEGE)
552 temp = dgettext("privilege", "IDS_TPLATFORM_BODY_THIS_PRIVILEGE_IS_NOT_DEFINED");
553 *description = (char*)calloc(strlen(temp) + 1, sizeof(char));
554 TryReturn(*description != NULL,, PRVINFO_ERROR_OUT_OF_MEMORY, "[PRVINFO_ERROR_OUT_OF_MEMORY] Memory allocation failed.");
555 memcpy(*description, temp, strlen(temp));
556 //return PRVINFO_ERROR_NO_MATCHING_PRIVILEGE;
558 else if(ret == PRVINFO_ERROR_NONE)
560 ret = privilege_info_get_description_by_string_id(description_string_id, description);
561 free(description_string_id);
562 TryReturn(ret == PRVINFO_ERROR_NONE,, PRVINFO_ERROR_OUT_OF_MEMORY, "[PRVINFO_ERROR_OUT_OF_MEMORY] Memory allocation failed.");
566 return PRVINFO_ERROR_INTERNAL_ERROR;
568 return PRVINFO_ERROR_NONE;