uint32_t TDNFCliGetErrorString( uint32_t dwErrorCode, char** ppszError ) { uint32_t dwError = 0; char* pszError = NULL; int i = 0; int nCount = 0; TDNF_ERROR_DESC arErrorDesc[] = TDNF_CLI_ERROR_TABLE; nCount = sizeof(arErrorDesc)/sizeof(arErrorDesc[0]); for(i = 0; i < nCount; i++) { if (dwErrorCode == arErrorDesc[i].nCode) { dwError = TDNFAllocateString(arErrorDesc[i].pszDesc, &pszError); BAIL_ON_CLI_ERROR(dwError); break; } } *ppszError = pszError; cleanup: return dwError; error: TDNF_CLI_SAFE_FREE_MEMORY(pszError); goto cleanup; }
uint32_t AddSetOpt( PTDNF_CMD_ARGS pCmdArgs, const char* pszOptArg ) { uint32_t dwError = 0; PTDNF_CMD_OPT pCmdOpt = NULL; if(!pCmdArgs || IsNullOrEmptyString(pszOptArg)) { dwError = ERROR_TDNF_CLI_INVALID_ARGUMENT; BAIL_ON_CLI_ERROR(dwError); } dwError = GetOptionAndValue(pszOptArg, &pCmdOpt); BAIL_ON_CLI_ERROR(dwError); if(!strcmp(pCmdOpt->pszOptName, "tdnf.conf")) { TDNF_CLI_SAFE_FREE_MEMORY(pCmdArgs->pszConfFile); dwError = TDNFAllocateString( pCmdOpt->pszOptValue, &pCmdArgs->pszConfFile); BAIL_ON_CLI_ERROR(dwError); } cleanup: if(pCmdOpt) { TDNFFreeCmdOpt(pCmdOpt); } return dwError; error: TDNF_CLI_SAFE_FREE_MEMORY(pCmdArgs->pszConfFile); goto cleanup; }
uint32_t PrintError( uint32_t dwErrorCode ) { uint32_t dwError = 0; char* pszError = NULL; if(dwErrorCode < ERROR_TDNF_BASE) { dwError = TDNFCliGetErrorString(dwErrorCode, &pszError); BAIL_ON_CLI_ERROR(dwError); } else { dwError = TDNFGetErrorString(dwErrorCode, &pszError); BAIL_ON_CLI_ERROR(dwError); } if(dwErrorCode == ERROR_TDNF_CLI_NOTHING_TO_DO) { dwErrorCode = 0; } if(dwErrorCode) { printf("Error(%d) : %s\n", dwErrorCode, pszError); } else { printf("%s\n", pszError); } cleanup: TDNF_CLI_SAFE_FREE_MEMORY(pszError); return dwError; error: printf( "Retrieving error string for %d failed with %d\n", dwErrorCode, dwError); goto cleanup; }
uint32_t TDNFCliInfoCommand( PTDNF pTdnf, PTDNF_CMD_ARGS pCmdArgs ) { uint32_t dwError = 0; char* pszFormattedSize = NULL; PTDNF_PKG_INFO pPkgInfo = NULL; PTDNF_PKG_INFO pPkg = NULL; PTDNF_LIST_ARGS pInfoArgs = NULL; uint32_t unCount = 0; uint32_t dwIndex = 0; uint32_t unTotalSize = 0; dwError = TDNFCliParseInfoArgs(pCmdArgs, &pInfoArgs); BAIL_ON_CLI_ERROR(dwError); dwError = TDNFInfo( pTdnf, pInfoArgs->nScope, pInfoArgs->ppszPackageNameSpecs, &pPkgInfo, &unCount); BAIL_ON_CLI_ERROR(dwError); for(dwIndex = 0; dwIndex < unCount; ++dwIndex) { pPkg = &pPkgInfo[dwIndex]; printf("Name : %s\n", pPkg->pszName); printf("Arch : %s\n", pPkg->pszArch); printf("Epoch : %d\n", pPkg->dwEpoch); printf("Version : %s\n", pPkg->pszVersion); printf("Release : %s\n", pPkg->pszRelease); printf("Install Size : %s (%u)\n", pPkg->pszFormattedSize, pPkg->dwInstallSizeBytes); printf("Repo : %s\n", pPkg->pszRepoName); printf("Summary : %s\n", pPkg->pszSummary); printf("URL : %s\n", pPkg->pszURL); printf("License : %s\n", pPkg->pszLicense); printf("Description : %s\n", pPkg->pszDescription); printf("\n"); unTotalSize += pPkg->dwInstallSizeBytes; } dwError = TDNFUtilsFormatSize(unTotalSize, &pszFormattedSize); BAIL_ON_CLI_ERROR(dwError); printf("\nTotal Size: %s (%u)\n", pszFormattedSize, unTotalSize); cleanup: if(pInfoArgs) { TDNFFreeListArgs(pInfoArgs); } if(pPkgInfo) { TDNFFreePackageInfoArray(pPkgInfo, unCount); } TDNF_CLI_SAFE_FREE_MEMORY(pszFormattedSize); return dwError; error: goto cleanup; }