From: Soyoung Kim Date: Thu, 21 Feb 2013 08:40:09 +0000 (+0900) Subject: Fixed can't uninstall using pkgid from pkgcmd X-Git-Tag: accepted/tizen_2.1/20130425.023916~20^2~12^2~21 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=d412c1f5e33ba94c695ce88f7793490058553723;p=framework%2Fweb%2Fwrt-installer.git Fixed can't uninstall using pkgid from pkgcmd [Issue#] N/A [Problem] can't uninstall from pkgcmd [Cause] pkg_plugin_app_is_installed() has a bug about pkgid. [Solution] Add routine to get appid if parameter is pkgid in pkg_plugin_app_is_installed(). [SCMRequest] N/A --- diff --git a/src/pkg-manager/backendlib.cpp b/src/pkg-manager/backendlib.cpp index 3eed3f9..37952c1 100644 --- a/src/pkg-manager/backendlib.cpp +++ b/src/pkg-manager/backendlib.cpp @@ -23,6 +23,7 @@ * to package manager */ #include "package-manager-plugin.h" +#include #include #include #include @@ -72,12 +73,28 @@ static void pkg_native_plugin_on_unload() static int pkg_plugin_app_is_installed(const char *pkg_name) { + const char* REG_PKGID_PATTERN = "^[a-zA-Z0-9]{10}$"; LogDebug("pkg_plugin_app_is_installed() is called"); WrtDB::WrtDatabase::attachToThreadRO(); - bool result = WidgetDAOReadOnly::isWidgetInstalled( - DPL::FromUTF8String(pkg_name)); + regex_t reg; + if (regcomp(®, REG_PKGID_PATTERN, REG_NOSUB | REG_EXTENDED) != 0) { + LogDebug("Regcomp failed"); + } + + WrtDB::TizenAppId appid; + + if ((regexec(®, pkg_name, + static_cast(0), NULL, 0) == 0)) + { + WrtDB::TizenPkgId pkgid(DPL::FromUTF8String(pkg_name)); + appid = WidgetDAOReadOnly::getTzAppId(pkgid); + } else { + appid = DPL::FromUTF8String(pkg_name); + } + + bool result = WidgetDAOReadOnly::isWidgetInstalled(appid); WrtDB::WrtDatabase::detachFromThread(); if (result) {