logs are changed.
authorDongeup Ham <dongeup.ham@samsung.com>
Thu, 22 Aug 2013 03:06:43 +0000 (12:06 +0900)
committerDongeup Ham <dongeup.ham@samsung.com>
Thu, 22 Aug 2013 03:06:43 +0000 (12:06 +0900)
Change-Id: I728187aa51eeedea66c61cc6708e62e4a25e4f64
Signed-off-by: Dongeup Ham <dongeup.ham@samsung.com>
inc/InstallerDefs.h
src/Context/InstallationContext.h
src/Manager/InstallerManager.cpp
src/Manager/InstallerManager.h
src/Util/InstallerUtil.cpp
src/Util/InstallerUtil.h

index 45ed0de..6526a3c 100755 (executable)
@@ -23,7 +23,7 @@
 
 #include "InstallerUtil.h"
 
-#define OSP_INSTALLER_VERSION "version=[20130819.1]"
+#define OSP_INSTALLER_VERSION "version=[20130822.1]"
 
 #define DIR_BIN                                L"/bin"
 #define DIR_INFO                       L"/info"
index 1519d75..810b789 100755 (executable)
@@ -141,6 +141,8 @@ public:
        Tizen::Base::String __cscInfo;
        Tizen::Base::String __virtualRootPath;
 
+       Tizen::Base::String __packageSize;
+
        int __certType;
        void* __pPkgmgrInstaller;
 
index 6ede15c..828978d 100755 (executable)
@@ -178,6 +178,7 @@ InstallerManager::Construct(const String& path, InstallerOperation operation, In
 
                        __pContext->__inputPath = newPath;
                        __pContext->__installDir = newPath;
+                       __pContext->__packageSize = InstallerUtil::GetDisplaySize(newPath);
                }
                else
                {
@@ -190,6 +191,7 @@ InstallerManager::Construct(const String& path, InstallerOperation operation, In
 
                        installerType = INSTALLER_TYPE_PACKAGE;
                        __pContext->__packagePath = newPath;
+                       __pContext->__packageSize = InstallerUtil::GetDisplaySize(newPath);
                }
 
                if (pOptionalData)
@@ -756,32 +758,39 @@ InstallerManager::PrintResult(void)
                pPackageId = __pContext->__packageId.GetPointer();
        }
 
-       const wchar_t* pMainAppName = L"Unknown";
-       if (!__pContext->__mainAppName.IsEmpty())
+       const wchar_t* pPackageSize = L"0 B";
+       if (!__pContext->__packageSize.IsEmpty())
        {
-               pMainAppName = __pContext->__mainAppName.GetPointer();
+               pPackageSize = __pContext->__packageSize.GetPointer();
        }
 
-       const char* pError = null;
-       (errorType == 0)?(pError = "Success"):(pError = "Failure");
+       const wchar_t* pAppInfoStr = L"Unknown";
+       String appInfoStr = GetAppInfoString();
+       if (!appInfoStr.IsEmpty())
+       {
+               pAppInfoStr = appInfoStr.GetPointer();
+       }
 
+       String error = GetErrorString(errorType);
        int duration = (int)(__endTick - __startTick);
 
        AppLog("==========================================");
-       AppLog(" # operation = %s", pOperation);
-       AppLog(" # %s", OSP_INSTALLER_VERSION);
-       AppLog(" # Package   = [%ls]", pPackageId);
-       AppLog(" # MainApp   = [%ls]", pMainAppName);
+       AppLog(" # osp-installer: %s", OSP_INSTALLER_VERSION);
+       AppLog("------------------------------------------");
+       AppLog(" # Operation = [%s]", pOperation);
+       AppLog(" # Package   = [%ls](%ls)", pPackageId, pPackageSize);
+       AppLog(" # Apps      = [%ls]", pAppInfoStr);
        AppLog(" # Time      = [%d]ms", duration);
-       PrintError(errorType);
+       AppLog(" # Result    = [%ls(%03d)]", error.GetPointer(), errorType);
        AppLog("==========================================");
 
-       fprintf(stderr, "  ## osp-installer: operation=[%s] result=[%s(%03d)] package=[%ls] main appname=[%ls] time=[%d]ms\n",
-                       pOperation, pError, errorType, pPackageId, pMainAppName, duration);
+       fprintf(stderr, "  ## osp-installer: package=[%ls](%ls) operation=[%s] result=[%ls](%03d)\n",
+                       pPackageId, pPackageSize, pOperation, error.GetPointer(), errorType);
+       fprintf(stderr, "  ## osp-installer: apps=[%ls] time=[%d]ms\n", pAppInfoStr, duration);
 }
 
-void
-InstallerManager::PrintError(int errorType)
+String
+InstallerManager::GetErrorString(int errorType)
 {
        const char* pError = null;
 
@@ -868,7 +877,45 @@ InstallerManager::PrintError(int errorType)
                break;
        }
 
-       AppLog(" # Error     = %s(%d)", pError, errorType);
+       String error = pError;
+       return error;
+}
+
+String
+InstallerManager::GetAppInfoString()
+{
+       String appInfoStr;
+       TryReturn(__pContext, appInfoStr, "__pContext is null");
+
+       String appRootPath = __pContext->__rootPath;
+
+       IListT<AppData*>* pAppDataList = __pContext->__pAppDataList;
+       TryReturn(pAppDataList, appInfoStr, "pAppDataList is null.");
+
+       for (int i = 0 ; i < pAppDataList->GetCount(); i++)
+       {
+               AppData* pAppData = null;
+               pAppDataList->GetAt(i, pAppData);
+               TryReturn(pAppData, appInfoStr, "pAppData is null.");
+
+               String destPath = appRootPath + DIR_BIN + L"/" + pAppData->__name + L".exe";
+
+               if (i != 0)
+               {
+                       appInfoStr += L" ";
+               }
+
+               appInfoStr += pAppData->__name;
+               if (pAppData->__main.Equals("True", false) == true)
+               {
+                       appInfoStr += L"(main)";
+               }
+
+               String sizeStr = L"(" + InstallerUtil::GetDisplaySize(destPath) + L")";
+               appInfoStr += sizeStr;
+       }
+
+       return appInfoStr;
 }
 
 int
index 530d113..20b5c8b 100755 (executable)
@@ -47,7 +47,6 @@ public:
        bool RemoveGarbage(const Tizen::Base::String& filePath);
 
        void PrintResult(void);
-       void PrintError(int errorType);
 
        int GetErrorType(void) const;
        void SetErrorType(int errorType);
@@ -94,6 +93,9 @@ private:
 
        static int ParseCommandArg(int argc, char **argv, int *mode, char *buf, InstallerOption& option);
 
+       Tizen::Base::String GetErrorString(int errorType);
+       Tizen::Base::String GetAppInfoString();
+
 private:
        static InstallerManager* __pInstallerManager;
        InstallationContext* __pContext;
index fe5cb5b..b2086ee 100755 (executable)
@@ -1232,3 +1232,128 @@ InstallerUtil::IsAuthorSignatureVerificationEnabled()
 
        return false;
 }
+
+long long
+InstallerUtil::GetDirectorySize(const String& rootPath)
+{
+       long long total = 0;
+       long long ret = 0;
+       int q = 0;
+       int r = 0;
+       DIR *dp = NULL;
+       struct dirent *ep = NULL;
+       struct stat fileinfo;
+       char file[FILENAME_MAX] = { 0, };
+       char *pDirName = null;
+
+       pDirName = _StringConverter::CopyToCharArrayN(rootPath);
+       TryCatch(pDirName, total = 0, "[osp-installer][libtpk] pDirName is null");
+
+       dp = opendir(pDirName);
+       TryCatch(dp, total = 0, "[osp-installer][libtpk] dp is null");
+
+       while ((ep = readdir(dp)) != NULL)
+       {
+               if (!strcmp(ep->d_name, ".") || !strcmp(ep->d_name, ".."))
+               {
+                       continue;
+               }
+
+               snprintf(file, FILENAME_MAX, "%s/%s", pDirName, ep->d_name);
+
+               if (lstat(file, &fileinfo) < 0)
+               {
+                       continue;
+               }
+
+               if (S_ISLNK(fileinfo.st_mode))
+               {
+                       AppLog("SYMLINK=%s", file);
+                       total += INSTALLER_BLOCK_SIZE;
+                       continue;
+               }
+               else if (S_ISDIR(fileinfo.st_mode))
+               {
+                       ret = GetDirectorySize(file);
+                       ret += fileinfo.st_size;
+                       total += ret;
+                       AppLog("DIR=%s, size=%d[%d KB],", file, (int)ret, (int)(ret/1024));
+               }
+               else
+               {
+                       /*It is a file. Calculate the actual size occupied (in terms of 4096 blocks)*/
+                       q = (fileinfo.st_size / INSTALLER_BLOCK_SIZE);
+                       r = (fileinfo.st_size % INSTALLER_BLOCK_SIZE);
+                       if (r)
+                       {
+                               q++;
+                       }
+                       total += q * INSTALLER_BLOCK_SIZE;
+
+                       if (q)
+                       {
+                               // AppLog("File=%s, size=%d[%d KB]", file, (q * INSTALLER_BLOCK_SIZE), (q * INSTALLER_BLOCK_SIZE)/1024);
+                       }
+               }
+       }
+
+       closedir(dp);
+       dp = null;
+
+CATCH:
+       delete [] pDirName;
+
+       return total;
+}
+
+String
+InstallerUtil::GetDisplaySize(const Tizen::Base::String& path)
+{
+       long long int size = 0;
+       float sizeRes = 0.0;
+       String unitStr = L"0 B";
+       result r = E_SUCCESS;
+
+       FileAttributes attr;
+       r = File::GetAttributes(path, attr);
+       TryReturn(!IsFailed(r), unitStr, "File::GetAttributes() failed");
+
+       if (attr.IsDirectory())
+       {
+               size = GetDirectorySize(path);
+
+               // root directory
+               size += INSTALLER_BLOCK_SIZE;
+               AppLog("DIR=%ls, size=%d[%d KB],", path.GetPointer(), (int)size, (int)(size/1024));
+       }
+       else
+       {
+               size = attr.GetFileSize();
+       }
+
+       if (size >= 1024*1024*1024)
+       {
+               sizeRes = size / (1024*1024*1024.0);
+               unitStr = L"GB";
+       }
+       else if (size >= 1024*1024)
+       {
+               sizeRes = size / (1024*1024.0);
+               unitStr = L"MB";
+       }
+       else if (size >= 1024)
+       {
+               sizeRes = size / 1024.0;
+               unitStr = L"KB";
+       }
+       else
+       {
+               sizeRes = size;
+               unitStr = L"B";
+       }
+
+       String resStr;
+       resStr.Format(128, L"%.1f %ls", sizeRes, unitStr.GetPointer());
+
+       return resStr;
+}
index 7a016cd..c114da1 100755 (executable)
@@ -95,6 +95,8 @@ public:
        static bool IsDefaultExternalStorage();
        static bool IsSignatureVerificationEnabled();
        static bool IsAuthorSignatureVerificationEnabled();
+       static Tizen::Base::String GetDisplaySize(const Tizen::Base::String& path);
+       static long long GetDirectorySize(const Tizen::Base::String& rootPath);
 
 private:
        static char LogChangeHexToStr(int hex);