X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Fafm-db.c;h=8cf3b3799e46a7d06e31c70912828215c4274888;hb=dfd49d8fe0bcbc4d794b5a8d56447dd7129aa853;hp=869a0f0d96c070efb9e16b19cae4793fd28d643f;hpb=69df60bd6622a56200d2d03e1b7d899569adf650;p=src%2Fapp-framework-main.git diff --git a/src/afm-db.c b/src/afm-db.c index 869a0f0..8cf3b37 100644 --- a/src/afm-db.c +++ b/src/afm-db.c @@ -482,10 +482,31 @@ struct json_object *afm_db_application_list(struct afm_db *afdb) */ struct json_object *afm_db_get_application(struct afm_db *afdb, const char *id) { + int i; struct json_object *result; - if (!afm_db_ensure_applications(afdb) && json_object_object_get_ex( - afdb->applications.direct, id, &result)) + + if (afm_db_ensure_applications(afdb)) + return NULL; + + /* search case sensitively */ + if (json_object_object_get_ex( afdb->applications.direct, id, &result)) return json_object_get(result); + + /* fallback to a case insensitive search */ + i = json_object_array_length(afdb->applications.pubarr); + while (i) { + result = json_object_array_get_idx(afdb->applications.pubarr, --i); + if (result + && json_object_object_get_ex(result, "id", &result) + && !strcasecmp(id, json_object_get_string(result))) { + if (json_object_object_get_ex( afdb->applications.direct, + json_object_get_string(result), + &result)) + return json_object_get(result); + else + return NULL; + } + } return NULL; }