EXPORT_API
int badge_create(const char *pkgname, const char *writable_pkg)
{
+ if (pkgname == NULL)
+ return BADGE_ERROR_INVALID_PARAMETER;
+
return badge_create_for_uid(pkgname, writable_pkg, getuid());
}
int badge_new(const char *writable_app_id)
{
dlog_print(DLOG_WARN, LOG_TAG, "DEPRECATION WARNING: badge_new() is deprecated and will be removed from next release. Use badge_add() instead.");
+ if (writable_app_id == NULL)
+ return BADGE_ERROR_INVALID_PARAMETER;
+
return badge_new_for_uid(writable_app_id, getuid());
}
EXPORT_API
int badge_remove(const char *app_id)
{
+ if (app_id == NULL)
+ return BADGE_ERROR_INVALID_PARAMETER;
+
return badge_remove_for_uid(app_id, getuid());
}
EXPORT_API
int badge_is_existing(const char *app_id, bool *existing)
{
+ if (app_id == NULL || existing == NULL)
+ return BADGE_ERROR_INVALID_PARAMETER;
+
return badge_is_existing_for_uid(app_id, existing, getuid());
}
EXPORT_API
int badge_foreach(badge_foreach_cb callback, void *user_data)
{
+ if (callback == NULL)
+ return BADGE_ERROR_INVALID_PARAMETER;
+
return badge_foreach_for_uid(callback, user_data, getuid());
}
EXPORT_API
int badge_set_count(const char *app_id, unsigned int count)
{
+ if (app_id == NULL)
+ return BADGE_ERROR_INVALID_PARAMETER;
+
return badge_set_count_for_uid(app_id, count, getuid());
}
EXPORT_API
int badge_get_count(const char *app_id, unsigned int *count)
{
+ if (app_id == NULL || count == NULL)
+ return BADGE_ERROR_INVALID_PARAMETER;
+
return badge_get_count_for_uid(app_id, count, getuid());
}
EXPORT_API
int badge_set_display(const char *app_id, unsigned int is_display)
{
+ if (app_id == NULL)
+ return BADGE_ERROR_INVALID_PARAMETER;
+
return badge_set_display_for_uid(app_id, is_display, getuid());
}
EXPORT_API
int badge_get_display(const char *app_id, unsigned int *is_display)
{
+ if (app_id == NULL || is_display == NULL)
+ return BADGE_ERROR_INVALID_PARAMETER;
+
return badge_get_display_for_uid(app_id, is_display, getuid());
}
EXPORT_API
int badge_register_changed_cb(badge_change_cb callback, void *data)
{
+ if (callback == NULL)
+ return BADGE_ERROR_INVALID_PARAMETER;
+
return badge_register_changed_cb_for_uid(callback, data, getuid());
}
EXPORT_API
int badge_unregister_changed_cb(badge_change_cb callback)
{
+ if (callback == NULL)
+ return BADGE_ERROR_INVALID_PARAMETER;
+
return badge_unregister_changed_cb_for_uid(callback, getuid());
}
return bd;
}
-int _badge_register_changed_cb(badge_change_cb callback, void *data, uid_t uid)
-{
- struct _badge_cb_data *bd = NULL;
- GList *badge_cb_list = NULL;
- GList *badge_found_list = NULL;
- int ret;
-
- if (callback == NULL)
- return BADGE_ERROR_INVALID_PARAMETER;
-
- if (_badge_cb_hash == NULL)
- _badge_cb_hash = g_hash_table_new(g_direct_hash, g_direct_equal);
-
- badge_cb_list = (GList *)g_hash_table_lookup(_badge_cb_hash, GUINT_TO_POINTER(uid));
-
- if (badge_cb_list == NULL) {
- bd = __malloc_badge_cb_data(callback, data);
- if (!bd)
- return BADGE_ERROR_OUT_OF_MEMORY;
-
- badge_cb_list = g_list_append(badge_cb_list, bd);
- g_hash_table_insert(_badge_cb_hash, GUINT_TO_POINTER(uid), badge_cb_list);
- } else {
- badge_found_list = g_list_find_custom(g_list_first(badge_cb_list), (gconstpointer)callback,
- (GCompareFunc)_badge_data_compare);
- if (badge_found_list) {
- bd = g_list_nth_data(badge_found_list, 0);
- bd->data = data;
- } else {
- bd = __malloc_badge_cb_data(callback, data);
- if (!bd)
- return BADGE_ERROR_OUT_OF_MEMORY;
- badge_cb_list = g_list_append(badge_cb_list, bd);
- }
- }
-
- ret = _badge_changed_monitor_init(uid);
- if (ret == BADGE_ERROR_NONE) {
- ret = badge_ipc_init_badge(uid);
- if (ret != BADGE_ERROR_NONE && ret != BADGE_ERROR_NOT_EXIST)
- return ret;
- } else {
- /* LCOV_EXCL_START */
- ERR("badge_ipc_monitor_init err : %d", ret);
- _badge_unregister_changed_cb(callback, uid);
- return ret;
- /* LCOV_EXCL_STOP */
- }
- return BADGE_ERROR_NONE;
-}
-
-int _badge_unregister_changed_cb(badge_change_cb callback, uid_t uid)
-{
- GList *badge_cb_list = NULL;
- GList *badge_delete_list = NULL;
- struct _badge_cb_data *bd = NULL;
-
- if (callback == NULL)
- return BADGE_ERROR_INVALID_PARAMETER;
-
- if (_badge_cb_hash == NULL)
- return BADGE_ERROR_INVALID_PARAMETER;
-
- badge_cb_list = (GList *)g_hash_table_lookup(_badge_cb_hash, GUINT_TO_POINTER(uid));
-
- if (badge_cb_list == NULL)
- return BADGE_ERROR_INVALID_PARAMETER;
-
- badge_delete_list = g_list_find_custom(g_list_first(badge_cb_list), (gconstpointer)callback,
- (GCompareFunc)_badge_data_compare);
-
- if (badge_delete_list) {
- bd = g_list_nth_data(badge_delete_list, 0);
- badge_cb_list = g_list_delete_link(badge_cb_list, badge_delete_list);
- free(bd);
- } else {
- return BADGE_ERROR_INVALID_PARAMETER;
- }
-
- if (badge_cb_list == NULL)
- g_hash_table_steal(_badge_cb_hash, GUINT_TO_POINTER(uid));
- else
- g_hash_table_replace(_badge_cb_hash, GUINT_TO_POINTER(uid), badge_cb_list);
-
- if (g_hash_table_size(_badge_cb_hash) == 0)
- _badge_chanaged_monitor_fini();
-
- return BADGE_ERROR_NONE;
-}
-
int _badge_free(badge_h *badge)
{
if (!badge)
char *caller = NULL;
int err = BADGE_ERROR_NONE;
- if (pkgname == NULL)
- return BADGE_ERROR_INVALID_PARAMETER;
-
-
caller = _badge_get_pkgname_by_pid();
if (!caller) {
ERR("fail to get caller pkgname");
char *caller = NULL;
int result = BADGE_ERROR_NONE;
- if (app_id == NULL)
- return BADGE_ERROR_INVALID_PARAMETER;
-
caller = _badge_get_pkgname_by_pid();
if (!caller) {
ERR("fail to get caller pkgname");
char *caller = NULL;
int result = BADGE_ERROR_NONE;
- if (app_id == NULL)
- return BADGE_ERROR_INVALID_PARAMETER;
-
DBG("app_id %s, count %d", app_id, count);
caller = _badge_get_pkgname_by_pid();
int badge_get_count_for_uid(const char *app_id, unsigned int *count, uid_t uid)
{
int result = BADGE_ERROR_NONE;
- if (app_id == NULL || count == NULL)
- return BADGE_ERROR_INVALID_PARAMETER;
result = badge_ipc_request_get_count(app_id, count, uid);
if (result == BADGE_ERROR_IO_ERROR)
char *caller = NULL;
int result = BADGE_ERROR_NONE;
- if (app_id == NULL)
- return BADGE_ERROR_INVALID_PARAMETER;
-
caller = _badge_get_pkgname_by_pid();
if (!caller) {
ERR("fail to get caller pkgname");
int badge_get_display_for_uid(const char *app_id, unsigned int *is_display, uid_t uid)
{
int result = BADGE_ERROR_NONE;
- if (app_id == NULL || is_display == NULL)
- return BADGE_ERROR_INVALID_PARAMETER;
result = badge_ipc_request_get_display(app_id, is_display, uid);
if (result == BADGE_ERROR_IO_ERROR)
EXPORT_API
int badge_register_changed_cb_for_uid(badge_change_cb callback, void *data, uid_t uid)
{
- if (callback == NULL)
- return BADGE_ERROR_INVALID_PARAMETER;
+ struct _badge_cb_data *bd = NULL;
+ GList *badge_cb_list = NULL;
+ GList *badge_found_list = NULL;
+ int ret;
+
+ if (_badge_cb_hash == NULL)
+ _badge_cb_hash = g_hash_table_new(g_direct_hash, g_direct_equal);
+
+ badge_cb_list = (GList *)g_hash_table_lookup(_badge_cb_hash, GUINT_TO_POINTER(uid));
+
+ if (badge_cb_list == NULL) {
+ bd = __malloc_badge_cb_data(callback, data);
+ if (!bd)
+ return BADGE_ERROR_OUT_OF_MEMORY;
+
+ badge_cb_list = g_list_append(badge_cb_list, bd);
+ g_hash_table_insert(_badge_cb_hash, GUINT_TO_POINTER(uid), badge_cb_list);
+ } else {
+ badge_found_list = g_list_find_custom(g_list_first(badge_cb_list), (gconstpointer)callback,
+ (GCompareFunc)_badge_data_compare);
+ if (badge_found_list) {
+ bd = g_list_nth_data(badge_found_list, 0);
+ bd->data = data;
+ } else {
+ bd = __malloc_badge_cb_data(callback, data);
+ if (!bd)
+ return BADGE_ERROR_OUT_OF_MEMORY;
+ badge_cb_list = g_list_append(badge_cb_list, bd);
+ }
+ }
- return _badge_register_changed_cb(callback, data, uid);
+ ret = _badge_changed_monitor_init(uid);
+ if (ret == BADGE_ERROR_NONE) {
+ ret = badge_ipc_init_badge(uid);
+ if (ret != BADGE_ERROR_NONE && ret != BADGE_ERROR_NOT_EXIST)
+ return ret;
+ } else {
+ /* LCOV_EXCL_START */
+ ERR("badge_ipc_monitor_init err : %d", ret);
+ badge_unregister_changed_cb_for_uid(callback, uid);
+ return ret;
+ /* LCOV_EXCL_STOP */
+ }
+ return BADGE_ERROR_NONE;
}
EXPORT_API
int badge_unregister_changed_cb_for_uid(badge_change_cb callback, uid_t uid)
{
- if (callback == NULL)
+ GList *badge_cb_list = NULL;
+ GList *badge_delete_list = NULL;
+ struct _badge_cb_data *bd = NULL;
+
+ if (_badge_cb_hash == NULL)
+ return BADGE_ERROR_INVALID_PARAMETER;
+
+ badge_cb_list = (GList *)g_hash_table_lookup(_badge_cb_hash, GUINT_TO_POINTER(uid));
+
+ if (badge_cb_list == NULL)
return BADGE_ERROR_INVALID_PARAMETER;
- return _badge_unregister_changed_cb(callback, uid);
+ badge_delete_list = g_list_find_custom(g_list_first(badge_cb_list), (gconstpointer)callback,
+ (GCompareFunc)_badge_data_compare);
+
+ if (badge_delete_list) {
+ bd = g_list_nth_data(badge_delete_list, 0);
+ badge_cb_list = g_list_delete_link(badge_cb_list, badge_delete_list);
+ free(bd);
+ } else {
+ return BADGE_ERROR_INVALID_PARAMETER;
+ }
+
+ if (badge_cb_list == NULL)
+ g_hash_table_steal(_badge_cb_hash, GUINT_TO_POINTER(uid));
+ else
+ g_hash_table_replace(_badge_cb_hash, GUINT_TO_POINTER(uid), badge_cb_list);
+
+ if (g_hash_table_size(_badge_cb_hash) == 0)
+ _badge_chanaged_monitor_fini();
+
+ return BADGE_ERROR_NONE;
}