bundle_free(b);
}
+static void __put_cache_with_info(const char *checksum, const char *info, uid_t uid)
+{
+ char buf[PATH_MAX];
+
+ snprintf(buf, sizeof(buf), "@APP_SELECTOR %s", info);
+ __put_cache(checksum, buf, uid);
+}
+
static void __invalidate_cache(uid_t uid)
{
int ret;
int pkg_count = 0;
int ret = -1;
char *appid;
+ int l;
GSList *pkg_list = NULL;
char *query = NULL;
if (appid) {
_D("Hit! %s / %s", checksum, appid);
-
- if (!strcmp(appid, "^")) {
- free(appid);
- g_free(checksum);
- __free_resolve_info_data(&info);
- return AUL_SVC_RET_ENOMATCH;
+ l = strlen("@APP_SELECTOR ");
+ if (!strncmp("@APP_SELECTOR ", appid, l)) {
+ bundle_add(b, AUL_SVC_K_URI_R_INFO, &appid[l]);
+ ret = __run_svc_with_pkgname(APP_SELECTOR, b, request_code,
+ cbfunc, data, uid);
+ } else if (!strcmp(appid, "^")) {
+ ret = AUL_SVC_RET_ENOMATCH;
+ } else {
+ ret = __run_svc_with_pkgname(appid, b, request_code,
+ cbfunc, data, uid);
}
-
- ret = __run_svc_with_pkgname(appid, b, request_code,
- cbfunc, data, uid);
free(appid);
g_free(checksum);
__free_resolve_info_data(&info);
}
} else if (pkg_count > 1) {
bundle_add(b, AUL_SVC_K_URI_R_INFO, info.uri);
+ __put_cache_with_info(checksum, info.uri, uid);
ret = __run_svc_with_pkgname(APP_SELECTOR, b, request_code,
cbfunc, data, uid);
goto end;
}
} else if (pkg_count > 1) {
bundle_add(b, AUL_SVC_K_URI_R_INFO, info.uri_r_info);
+ __put_cache_with_info(checksum, info.uri_r_info, uid);
ret = __run_svc_with_pkgname(APP_SELECTOR, b, request_code,
cbfunc, data, uid);
goto end;
return AUL_SVC_RET_ENOMATCH;
} else {
bundle_add(b, AUL_SVC_K_URI_R_INFO, info.scheme);
+ __put_cache_with_info(checksum, info.scheme, uid);
ret = __run_svc_with_pkgname(APP_SELECTOR, b, request_code,
cbfunc, data, uid);
}