mirror of https://github.com/vmware/tdnf.git
reposync: add TDNFDownloadPackageToTree() function
This commit is contained in:
parent
9089cce071
commit
3edb3e0f3f
|
@ -1125,7 +1125,7 @@ TDNFRepoSync(
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
dwError = TDNFAllocateString(pReposyncArgs->pszDownloadPath, &pszRootPath);
|
dwError = TDNFNormalizePath(pReposyncArgs->pszDownloadPath, &pszRootPath);
|
||||||
BAIL_ON_TDNF_ERROR(dwError);
|
BAIL_ON_TDNF_ERROR(dwError);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1154,7 +1154,7 @@ TDNFRepoSync(
|
||||||
dwError = TDNFUtilsMakeDir(pszDir);
|
dwError = TDNFUtilsMakeDir(pszDir);
|
||||||
BAIL_ON_TDNF_ERROR(dwError);
|
BAIL_ON_TDNF_ERROR(dwError);
|
||||||
|
|
||||||
dwError = TDNFDownloadPackageToDirectory(pTdnf,
|
dwError = TDNFDownloadPackageToTree(pTdnf,
|
||||||
pPkgInfo->pszLocation, pPkgInfo->pszName,
|
pPkgInfo->pszLocation, pPkgInfo->pszName,
|
||||||
pPkgInfo->pszRepoName, pszDir,
|
pPkgInfo->pszRepoName, pszDir,
|
||||||
&pszFilePath);
|
&pszFilePath);
|
||||||
|
|
|
@ -291,6 +291,16 @@ TDNFDownloadPackageToCache(
|
||||||
char** ppszFilePath
|
char** ppszFilePath
|
||||||
);
|
);
|
||||||
|
|
||||||
|
uint32_t
|
||||||
|
TDNFDownloadPackageToTree(
|
||||||
|
PTDNF pTdnf,
|
||||||
|
const char* pszPackageLocation,
|
||||||
|
const char* pszPkgName,
|
||||||
|
const char* pszRepoName,
|
||||||
|
char* pszNormalRpmCacheDir,
|
||||||
|
char** ppszFilePath
|
||||||
|
);
|
||||||
|
|
||||||
uint32_t
|
uint32_t
|
||||||
TDNFDownloadPackageToDirectory(
|
TDNFDownloadPackageToDirectory(
|
||||||
PTDNF pTdnf,
|
PTDNF pTdnf,
|
||||||
|
|
|
@ -992,11 +992,6 @@ TDNFDownloadPackageToCache(
|
||||||
uint32_t dwError = 0;
|
uint32_t dwError = 0;
|
||||||
char* pszRpmCacheDir = NULL;
|
char* pszRpmCacheDir = NULL;
|
||||||
char* pszNormalRpmCacheDir = NULL;
|
char* pszNormalRpmCacheDir = NULL;
|
||||||
char* pszFilePath = NULL;
|
|
||||||
char* pszNormalPath = NULL;
|
|
||||||
char* pszFilePathCopy = NULL;
|
|
||||||
char* pszDownloadCacheDir = NULL;
|
|
||||||
char* pszRemotePath = NULL;
|
|
||||||
|
|
||||||
if(!pTdnf ||
|
if(!pTdnf ||
|
||||||
IsNullOrEmptyString(pszPackageLocation) ||
|
IsNullOrEmptyString(pszPackageLocation) ||
|
||||||
|
@ -1020,6 +1015,58 @@ TDNFDownloadPackageToCache(
|
||||||
&pszNormalRpmCacheDir);
|
&pszNormalRpmCacheDir);
|
||||||
BAIL_ON_TDNF_ERROR(dwError);
|
BAIL_ON_TDNF_ERROR(dwError);
|
||||||
|
|
||||||
|
dwError = TDNFDownloadPackageToTree(pTdnf,
|
||||||
|
pszPackageLocation,
|
||||||
|
pszPkgName,
|
||||||
|
pszRepoName,
|
||||||
|
pszNormalRpmCacheDir,
|
||||||
|
ppszFilePath);
|
||||||
|
BAIL_ON_TDNF_ERROR(dwError);
|
||||||
|
cleanup:
|
||||||
|
TDNF_SAFE_FREE_MEMORY(pszNormalRpmCacheDir);
|
||||||
|
TDNF_SAFE_FREE_MEMORY(pszRpmCacheDir);
|
||||||
|
return dwError;
|
||||||
|
error:
|
||||||
|
goto cleanup;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* TDNFDownloadPackageToTree()
|
||||||
|
*
|
||||||
|
* Download a package while preserving the directory path. For example,
|
||||||
|
* if pszPackageLocation is "RPMS/x86_64/foo-1.2-3.rpm, the destination will
|
||||||
|
* be downloaded under the destination directory in RPMS/x86_64/foo-1.2-3.rpm
|
||||||
|
* (so 'RPMS/x86_64/' will be preserved).
|
||||||
|
*/
|
||||||
|
|
||||||
|
uint32_t
|
||||||
|
TDNFDownloadPackageToTree(
|
||||||
|
PTDNF pTdnf,
|
||||||
|
const char* pszPackageLocation,
|
||||||
|
const char* pszPkgName,
|
||||||
|
const char* pszRepoName,
|
||||||
|
char* pszNormalRpmCacheDir,
|
||||||
|
char** ppszFilePath
|
||||||
|
)
|
||||||
|
{
|
||||||
|
uint32_t dwError = 0;
|
||||||
|
char* pszFilePath = NULL;
|
||||||
|
char* pszNormalPath = NULL;
|
||||||
|
char* pszFilePathCopy = NULL;
|
||||||
|
char* pszDownloadCacheDir = NULL;
|
||||||
|
char* pszRemotePath = NULL;
|
||||||
|
|
||||||
|
if(!pTdnf ||
|
||||||
|
IsNullOrEmptyString(pszPackageLocation) ||
|
||||||
|
IsNullOrEmptyString(pszPkgName) ||
|
||||||
|
IsNullOrEmptyString(pszRepoName) ||
|
||||||
|
IsNullOrEmptyString(pszNormalRpmCacheDir) ||
|
||||||
|
!ppszFilePath)
|
||||||
|
{
|
||||||
|
dwError = ERROR_TDNF_INVALID_PARAMETER;
|
||||||
|
BAIL_ON_TDNF_ERROR(dwError);
|
||||||
|
}
|
||||||
|
|
||||||
dwError = TDNFPathFromUri(pszPackageLocation, &pszRemotePath);
|
dwError = TDNFPathFromUri(pszPackageLocation, &pszRemotePath);
|
||||||
if (dwError == ERROR_TDNF_URL_INVALID)
|
if (dwError == ERROR_TDNF_URL_INVALID)
|
||||||
{
|
{
|
||||||
|
@ -1030,7 +1077,7 @@ TDNFDownloadPackageToCache(
|
||||||
dwError = TDNFAllocateStringPrintf(
|
dwError = TDNFAllocateStringPrintf(
|
||||||
&pszFilePath,
|
&pszFilePath,
|
||||||
"%s/%s",
|
"%s/%s",
|
||||||
pszRpmCacheDir,
|
pszNormalRpmCacheDir,
|
||||||
pszRemotePath);
|
pszRemotePath);
|
||||||
BAIL_ON_TDNF_ERROR(dwError);
|
BAIL_ON_TDNF_ERROR(dwError);
|
||||||
|
|
||||||
|
@ -1085,8 +1132,6 @@ TDNFDownloadPackageToCache(
|
||||||
cleanup:
|
cleanup:
|
||||||
TDNF_SAFE_FREE_MEMORY(pszFilePath);
|
TDNF_SAFE_FREE_MEMORY(pszFilePath);
|
||||||
TDNF_SAFE_FREE_MEMORY(pszFilePathCopy);
|
TDNF_SAFE_FREE_MEMORY(pszFilePathCopy);
|
||||||
TDNF_SAFE_FREE_MEMORY(pszRpmCacheDir);
|
|
||||||
TDNF_SAFE_FREE_MEMORY(pszNormalRpmCacheDir);
|
|
||||||
TDNF_SAFE_FREE_MEMORY(pszRemotePath);
|
TDNF_SAFE_FREE_MEMORY(pszRemotePath);
|
||||||
return dwError;
|
return dwError;
|
||||||
|
|
||||||
|
@ -1096,6 +1141,14 @@ error:
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* TDNFDownloadPackageToDirectory()
|
||||||
|
*
|
||||||
|
* Download a package withou preserving the directory path. For example,
|
||||||
|
* if pszPackageLocation is "RPMS/x86_64/foo-1.2-3.rpm, the destination will
|
||||||
|
* be downloaded under the destination directory (pszDirectory) as foo-1.2-3.rpm
|
||||||
|
* (so RPMS/x86_64/ will be stripped).
|
||||||
|
*/
|
||||||
|
|
||||||
uint32_t
|
uint32_t
|
||||||
TDNFDownloadPackageToDirectory(
|
TDNFDownloadPackageToDirectory(
|
||||||
|
|
Loading…
Reference in New Issue