예제 #1
0
파일: main.c 프로젝트: xiaolin-vmware/tdnf
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;
}
예제 #2
0
파일: setopt.c 프로젝트: jreypo/tdnf
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;
}
예제 #3
0
파일: main.c 프로젝트: xiaolin-vmware/tdnf
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;
}
예제 #4
0
파일: main.c 프로젝트: xiaolin-vmware/tdnf
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;
}