Example #1
0
uint32_t
TDNFCliParseInfoArgs(
    PTDNF_CMD_ARGS pCmdArgs,
    PTDNF_LIST_ARGS* ppListArgs
    )
{
    return TDNFCliParseListArgs(
        pCmdArgs,
        ppListArgs);
}
Example #2
0
uint32_t
TDNFCliListCommand(
    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;
    PTDNF_LIST_ARGS pListArgs = NULL;

    #define MAX_COL_LEN 256
    char szNameAndArch[MAX_COL_LEN] = {0};
    char szVersionAndRelease[MAX_COL_LEN] = {0};

    #define COL_COUNT 3 
    //Name.Arch | Version-Release | Repo
    int nColPercents[COL_COUNT] = {55, 25, 15};
    int nColWidths[COL_COUNT] = {0};

    dwError = TDNFCliParseListArgs(pCmdArgs, &pListArgs);
    BAIL_ON_CLI_ERROR(dwError);

    dwError = TDNFList(
                  pTdnf,
                  pListArgs->nScope,
                  pListArgs->ppszPackageNameSpecs,
                  &pPkgInfo,
                  &unCount);
    BAIL_ON_CLI_ERROR(dwError);

    dwError = GetColumnWidths(COL_COUNT, nColPercents, nColWidths);
    BAIL_ON_CLI_ERROR(dwError);

    for(dwIndex = 0; dwIndex < unCount; ++dwIndex)
    {
        pPkg = &pPkgInfo[dwIndex];

        memset(szNameAndArch, 0, MAX_COL_LEN);
        if(snprintf(
            szNameAndArch,
            MAX_COL_LEN,
            "%s.%s",
            pPkg->pszName,
            pPkg->pszArch) < 0)
        {
            dwError = errno;
            BAIL_ON_CLI_ERROR(dwError);
        }

        memset(szVersionAndRelease, 0, MAX_COL_LEN);
        if(snprintf(
            szVersionAndRelease,
            MAX_COL_LEN,
            "%s-%s",
            pPkg->pszVersion,
            pPkg->pszRelease) < 0)
        {
            dwError = errno;
            BAIL_ON_CLI_ERROR(dwError);
        }

        printf(
            "%-*s%-*s%*s\n",
            nColWidths[0],
            szNameAndArch,
            nColWidths[1],
            szVersionAndRelease,
            nColWidths[2],
            pPkg->pszRepoName);
    }

cleanup:
    if(pListArgs)
    {
        TDNFFreeListArgs(pListArgs);
    }
    if(pPkgInfo)
    {
        TDNFFreePackageInfoArray(pPkgInfo, unCount);
    }
    return dwError;

error:
    goto cleanup;
}