uint32_t TDNFCliCheckUpdateCommand( PTDNF pTdnf, PTDNF_CMD_ARGS pCmdArgs ) { uint32_t dwError = 0; PTDNF_PKG_INFO pPkgInfo = NULL; PTDNF_PKG_INFO pPkg = NULL; uint32_t unCount = 0; uint32_t dwIndex = 0; char** ppszPackageArgs = NULL; int nPackageCount = 0; if(!pTdnf || !pCmdArgs) { dwError = ERROR_TDNF_CLI_INVALID_ARGUMENT; BAIL_ON_CLI_ERROR(dwError); } dwError = TDNFCliParsePackageArgs( pCmdArgs, &ppszPackageArgs, &nPackageCount); BAIL_ON_CLI_ERROR(dwError); dwError = TDNFCheckUpdates( pTdnf, ppszPackageArgs, &pPkgInfo, &unCount); BAIL_ON_CLI_ERROR(dwError); for(dwIndex = 0; dwIndex < unCount; ++dwIndex) { pPkg = &pPkgInfo[dwIndex]; printf("%*s\r", 80, pPkg->pszRepoName); printf("%*s-%s\r", 50, pPkg->pszVersion, pPkg->pszRelease); printf("%s.%s", pPkg->pszName, pPkg->pszArch); printf("\n"); } cleanup: TDNF_CLI_SAFE_FREE_STRINGARRAY(ppszPackageArgs); if(pPkgInfo) { TDNFFreePackageInfoArray(pPkgInfo, unCount); } return dwError; error: goto cleanup; }
uint32_t TDNFCliParsePackageArgs( PTDNF_CMD_ARGS pCmdArgs, char*** pppszPackageArgs, int* pnPackageCount ) { uint32_t dwError = 0; char** ppszPackageArgs = NULL; int nPackageCount = 0; int nIndex = 0; if(!pCmdArgs || !pppszPackageArgs || !pnPackageCount) { dwError = ERROR_TDNF_INVALID_PARAMETER; BAIL_ON_CLI_ERROR(dwError); } nPackageCount = pCmdArgs->nCmdCount - 1; if(nPackageCount < 0) { dwError = ERROR_TDNF_CLI_NOT_ENOUGH_ARGS; BAIL_ON_CLI_ERROR(dwError); } dwError = TDNFAllocateMemory( nPackageCount + 1, sizeof(char*), (void**)&ppszPackageArgs); BAIL_ON_CLI_ERROR(dwError); for(nIndex = 0; nIndex < nPackageCount; ++nIndex) { dwError = TDNFAllocateString( pCmdArgs->ppszCmds[nIndex+1], &ppszPackageArgs[nIndex]); BAIL_ON_CLI_ERROR(dwError); } *pppszPackageArgs = ppszPackageArgs; cleanup: return dwError; error: if(pppszPackageArgs) { *pppszPackageArgs = NULL; } TDNF_CLI_SAFE_FREE_STRINGARRAY(ppszPackageArgs); goto cleanup; }