Skip to content

Commit

Permalink
Merge pull request #463 from oliverkurth/topic/okurth/no-clone-cmd-args
Browse files Browse the repository at this point in the history
remove TDNFCloneCmdArgs()
  • Loading branch information
oliverkurth authored Jan 8, 2024
2 parents a5c2345 + 2beeaeb commit a32029d
Show file tree
Hide file tree
Showing 4 changed files with 49 additions and 167 deletions.
50 changes: 43 additions & 7 deletions client/api.c
Original file line number Diff line number Diff line change
Expand Up @@ -606,6 +606,8 @@ TDNFOpenHandle(
PSolvSack pSack = NULL;
char *pszCacheDir = NULL;
char *pszRepoDir = NULL;
char *pszConfFile = NULL;
char *pszConfFileInstallRoot = NULL;
int nHasOptReposDir = 0;
int nHasOptCacheDir = 0;
PTDNF_CMD_OPT pOpt = NULL;
Expand All @@ -626,12 +628,48 @@ TDNFOpenHandle(
dwError = TDNFAllocateMemory(1, sizeof(TDNF), (void**)&pTdnf);
BAIL_ON_TDNF_ERROR(dwError);

dwError = TDNFCloneCmdArgs(pArgs, &pTdnf->pArgs);
BAIL_ON_TDNF_ERROR(dwError);
pTdnf->pArgs = pArgs;

/* if using --installroot, we prefer the tdnf.conf from the
installroot unless a tdnf.conf location is explicitely set */
if(IsNullOrEmptyString(pArgs->pszConfFile) &&
!IsNullOrEmptyString(pArgs->pszInstallRoot) &&
strcmp(pArgs->pszInstallRoot, "/"))
{
/* no conf file explicitely set in args,
but using --installroot */

int nExists = 0;

/* prepend installroot to tdnf.conf location */
dwError = TDNFJoinPath(&pszConfFileInstallRoot,
pArgs->pszInstallRoot,
TDNF_CONF_FILE,
NULL);
BAIL_ON_TDNF_ERROR(dwError);

dwError = TDNFIsFileOrSymlink(pszConfFileInstallRoot, &nExists);
BAIL_ON_TDNF_ERROR(dwError);

/* if we find tdnf.conf inside the install root use it,
otherwise use tdnf.conf from the host */
dwError = TDNFAllocateString(
nExists ? pszConfFileInstallRoot : TDNF_CONF_FILE,
&pszConfFile);
BAIL_ON_TDNF_ERROR(dwError);
}
else
{
dwError = TDNFAllocateString(
pArgs->pszConfFile ?
pArgs->pszConfFile : TDNF_CONF_FILE,
&pszConfFile);
BAIL_ON_TDNF_ERROR(dwError);
}

dwError = TDNFReadConfig(
pTdnf,
pTdnf->pArgs->pszConfFile,
pszConfFile,
TDNF_CONF_GROUP);
BAIL_ON_TDNF_ERROR(dwError);

Expand Down Expand Up @@ -750,6 +788,8 @@ TDNFOpenHandle(
cleanup:
TDNF_SAFE_FREE_MEMORY(pszCacheDir);
TDNF_SAFE_FREE_MEMORY(pszRepoDir);
TDNF_SAFE_FREE_MEMORY(pszConfFile);
TDNF_SAFE_FREE_MEMORY(pszConfFileInstallRoot);
return dwError;

error:
Expand Down Expand Up @@ -2515,10 +2555,6 @@ TDNFCloseHandle(
{
TDNFFreeConfig(pTdnf->pConf);
}
if(pTdnf->pArgs)
{
TDNFFreeCmdArgs(pTdnf->pArgs);
}
if(pTdnf->pSack)
{
SolvFreeSack(pTdnf->pSack);
Expand Down
150 changes: 0 additions & 150 deletions client/init.c
Original file line number Diff line number Diff line change
Expand Up @@ -8,156 +8,6 @@

#include "includes.h"

uint32_t
TDNFCloneCmdArgs(
PTDNF_CMD_ARGS pCmdArgsIn,
PTDNF_CMD_ARGS* ppCmdArgs
)
{
uint32_t dwError = 0;
int nIndex = 0;
PTDNF_CMD_ARGS pCmdArgs = NULL;
char *pszConfFileInstallRoot = NULL;

dwError = TDNFAllocateMemory(
1,
sizeof(TDNF_CMD_ARGS),
(void**)&pCmdArgs);
BAIL_ON_TDNF_ERROR(dwError);

pCmdArgs->nAllDeps = pCmdArgsIn->nAllDeps;
pCmdArgs->nAllowErasing = pCmdArgsIn->nAllowErasing;
pCmdArgs->nAssumeNo = pCmdArgsIn->nAssumeNo;
pCmdArgs->nAssumeYes = pCmdArgsIn->nAssumeYes;
pCmdArgs->nBest = pCmdArgsIn->nBest;
pCmdArgs->nCacheOnly = pCmdArgsIn->nCacheOnly;
pCmdArgs->nDebugSolver = pCmdArgsIn->nDebugSolver;
pCmdArgs->nNoDeps = pCmdArgsIn->nNoDeps;
pCmdArgs->nNoGPGCheck = pCmdArgsIn->nNoGPGCheck;
pCmdArgs->nNoOutput = pCmdArgsIn->nNoOutput;
pCmdArgs->nQuiet = pCmdArgsIn->nQuiet;
pCmdArgs->nRefresh = pCmdArgsIn->nRefresh;
pCmdArgs->nRpmVerbosity = pCmdArgsIn->nRpmVerbosity;
pCmdArgs->nShowDuplicates= pCmdArgsIn->nShowDuplicates;
pCmdArgs->nShowHelp = pCmdArgsIn->nShowHelp;
pCmdArgs->nShowVersion = pCmdArgsIn->nShowVersion;
pCmdArgs->nVerbose = pCmdArgsIn->nVerbose;
pCmdArgs->nIPv4 = pCmdArgsIn->nIPv4;
pCmdArgs->nIPv6 = pCmdArgsIn->nIPv6;
pCmdArgs->nDisableExcludes = pCmdArgsIn->nDisableExcludes;
pCmdArgs->nDownloadOnly = pCmdArgsIn->nDownloadOnly;
pCmdArgs->nNoAutoRemove = pCmdArgsIn->nNoAutoRemove;
pCmdArgs->nJsonOutput = pCmdArgsIn->nJsonOutput;
pCmdArgs->nTestOnly = pCmdArgsIn->nTestOnly;
pCmdArgs->nSkipBroken = pCmdArgsIn->nSkipBroken;
pCmdArgs->nSource = pCmdArgsIn->nSource;
pCmdArgs->nBuildDeps = pCmdArgsIn->nBuildDeps;

pCmdArgs->nArgc = pCmdArgsIn->nArgc;
pCmdArgs->ppszArgv = pCmdArgsIn->ppszArgv;

dwError = TDNFAllocateString(
pCmdArgsIn->pszInstallRoot,
&pCmdArgs->pszInstallRoot);
BAIL_ON_TDNF_ERROR(dwError);

/* if using --installroot, we prefer the tdnf.conf from the
installroot unless a tdnf.conf location is explicitely set */
if(IsNullOrEmptyString(pCmdArgsIn->pszConfFile) &&
!IsNullOrEmptyString(pCmdArgsIn->pszInstallRoot) &&
strcmp(pCmdArgsIn->pszInstallRoot, "/"))
{
/* no conf file explicitely set in args,
but using --installroot */

int nExists = 0;

/* prepend installroot to tdnf.conf location */
dwError = TDNFJoinPath(&pszConfFileInstallRoot,
pCmdArgsIn->pszInstallRoot,
TDNF_CONF_FILE,
NULL);
BAIL_ON_TDNF_ERROR(dwError);

dwError = TDNFIsFileOrSymlink(pszConfFileInstallRoot, &nExists);
BAIL_ON_TDNF_ERROR(dwError);

/* if we find tdnf.conf inside the install root use it,
otherwise use tdnf.conf from the host */
dwError = TDNFAllocateString(
nExists ? pszConfFileInstallRoot : TDNF_CONF_FILE,
&pCmdArgs->pszConfFile);
BAIL_ON_TDNF_ERROR(dwError);
}
else
{
dwError = TDNFAllocateString(
pCmdArgsIn->pszConfFile ?
pCmdArgsIn->pszConfFile : TDNF_CONF_FILE,
&pCmdArgs->pszConfFile);
BAIL_ON_TDNF_ERROR(dwError);
}

if(!IsNullOrEmptyString(pCmdArgsIn->pszReleaseVer))
{
dwError = TDNFAllocateString(
pCmdArgsIn->pszReleaseVer,
&pCmdArgs->pszReleaseVer);
BAIL_ON_TDNF_ERROR(dwError);
}

if(!IsNullOrEmptyString(pCmdArgsIn->pszDownloadDir))
{
dwError = TDNFAllocateString(
pCmdArgsIn->pszDownloadDir,
&pCmdArgs->pszDownloadDir);
BAIL_ON_TDNF_ERROR(dwError);
}

pCmdArgs->nCmdCount = pCmdArgsIn->nCmdCount;
dwError = TDNFAllocateMemory(
pCmdArgs->nCmdCount + 1,
sizeof(char*),
(void**)&pCmdArgs->ppszCmds);
BAIL_ON_TDNF_ERROR(dwError);

for(nIndex = 0; nIndex < pCmdArgs->nCmdCount; ++nIndex)
{
dwError = TDNFAllocateString(
pCmdArgsIn->ppszCmds[nIndex],
&pCmdArgs->ppszCmds[nIndex]);
BAIL_ON_TDNF_ERROR(dwError);
}

if(pCmdArgsIn->pSetOpt)
{
dwError = TDNFCloneSetOpts(pCmdArgsIn->pSetOpt,
&pCmdArgs->pSetOpt);
BAIL_ON_TDNF_ERROR(dwError);
}
else /* if there are no setopt values, prime it to ensure non null */
{
dwError = AddSetOptWithValues(
pCmdArgs,
TDNF_SETOPT_NAME_DUMMY,
TDNF_SETOPT_VALUE_DUMMY);
BAIL_ON_TDNF_ERROR(dwError);
}

*ppCmdArgs = pCmdArgs;

cleanup:
TDNF_SAFE_FREE_MEMORY(pszConfFileInstallRoot);
return dwError;

error:
if(ppCmdArgs)
{
*ppCmdArgs = NULL;
}
TDNFFreeCmdArgs(pCmdArgs);
goto cleanup;
}

uint32_t
TDNFCloneSetOpts(
Expand Down
6 changes: 0 additions & 6 deletions client/prototypes.h
Original file line number Diff line number Diff line change
Expand Up @@ -58,12 +58,6 @@ TDNFFetchRemoteGPGKey(
);

//init.c
uint32_t
TDNFCloneCmdArgs(
PTDNF_CMD_ARGS pCmdArgsIn,
PTDNF_CMD_ARGS* ppCmdArgs
);

uint32_t
TDNFCloneSetOpts(
PTDNF_CMD_OPT pCmdOptIn,
Expand Down
10 changes: 6 additions & 4 deletions common/setopt.c
Original file line number Diff line number Diff line change
Expand Up @@ -213,17 +213,19 @@ TDNFHasOpt(
PTDNF_CMD_OPT pOpt = NULL;
int nHasOpt = 0;

if(!pArgs || !pArgs->pSetOpt ||
if(!pArgs ||
IsNullOrEmptyString(pszOptName) || !pnHasOpt)
{
dwError = ERROR_TDNF_INVALID_PARAMETER;
BAIL_ON_TDNF_ERROR(dwError);
}

dwError = _TDNFGetCmdOpt(pArgs, pszOptName, &pOpt);
BAIL_ON_TDNF_ERROR(dwError);
if (pArgs->pSetOpt) {
dwError = _TDNFGetCmdOpt(pArgs, pszOptName, &pOpt);
BAIL_ON_TDNF_ERROR(dwError);

nHasOpt = 1;
nHasOpt = 1;
}

*pnHasOpt = nHasOpt;

Expand Down

0 comments on commit a32029d

Please sign in to comment.