|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
/** \ingroup rpmio
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
* \file lib/rpmgi.c
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
*/
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
#include "system.h"
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
#include <errno.h>
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
#include <rpm/rpmtypes.h>
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
#include <rpm/rpmlib.h> /* rpmReadPackageFile */
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
#include <rpm/rpmts.h>
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
#include <rpm/rpmmacro.h> /* XXX rpmExpand */
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
#include <rpm/rpmfileutil.h>
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
#include <rpm/rpmlog.h>
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
#include "lib/rpmgi.h"
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
#include "lib/manifest.h"
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
#include "debug.h"
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
#define MANIFEST_RECURSIONS 1000 /* Max. number of allowed manifest recursions */
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
RPM_GNUC_INTERNAL
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
rpmgiFlags giFlags = RPMGI_NONE;
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
/** \ingroup rpmgi
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
*/
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
struct rpmgi_s {
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
rpmts ts; /*!< Iterator transaction set. */
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
rpmgiFlags flags; /*!< Iterator control bits. */
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
int i; /*!< Element index. */
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
int errors;
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
ARGV_t argv;
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
int argc;
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
int curLvl; /*!< Current recursion level */
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
int recLvls[MANIFEST_RECURSIONS]; /*!< Reversed end index for given level */
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
};
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
/**
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
* Open a file after macro expanding path.
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
* @todo There are two error messages printed on header, then manifest failures.
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
* @param path file path
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
* @param fmode open mode
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
* @return file handle
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
*/
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
static FD_t rpmgiOpen(const char * path, const char * fmode)
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
{
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
char * fn = rpmExpand(path, NULL);
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
FD_t fd = Fopen(fn, fmode);
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
if (fd == NULL || Ferror(fd)) {
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
rpmlog(RPMLOG_ERR, _("open of %s failed: %s\n"), fn, Fstrerror(fd));
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
if (fd != NULL) (void) Fclose(fd);
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
fd = NULL;
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
}
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
free(fn);
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
return fd;
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
}
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
/**
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
* Load manifest into iterator arg list.
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
* @param gi generalized iterator
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
* @param path file path
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
* @return RPMRC_OK on success
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
*/
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
static rpmRC rpmgiLoadManifest(rpmgi gi, const char * path)
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
{
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
FD_t fd = rpmgiOpen(path, "r.ufdio");
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
rpmRC rpmrc = RPMRC_FAIL;
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
if (fd != NULL) {
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
rpmrc = rpmReadPackageManifest(fd, &gi->argc, &gi->argv);
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
(void) Fclose(fd);
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
}
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
return rpmrc;
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
}
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
/**
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
* Return header from package.
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
* @param gi generalized iterator
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
* @param path file path
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
* @retval hdrp header (NULL on failure)
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
* @return 1 if path could be opened, 0 if not
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
*/
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
static int rpmgiReadHeader(rpmgi gi, const char * path, Header * hdrp)
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
{
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
FD_t fd = rpmgiOpen(path, "r.ufdio");
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
Header h = NULL;
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
if (fd != NULL) {
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
/* XXX what if path needs expansion? */
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
rpmRC rpmrc = rpmReadPackageFile(gi->ts, fd, path, &h);
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
(void) Fclose(fd);
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
switch (rpmrc) {
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
case RPMRC_NOTFOUND:
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
/* XXX Read a package manifest. Restart ftswalk on success. */
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
case RPMRC_FAIL:
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
default:
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
h = headerFree(h);
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
break;
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
case RPMRC_NOTTRUSTED:
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
case RPMRC_NOKEY:
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
case RPMRC_OK:
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
break;
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
}
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
}
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
*hdrp = h;
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
return (fd != NULL);
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
}
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
/**
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
* Read next header from package, lazily expanding manifests as found.
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
* @todo An empty file read as manifest truncates argv returning RPMRC_NOTFOUND.
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
* @todo Chained manifests lose an arg someplace.
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
* @param gi generalized iterator
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
* @return header on success
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
*/
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
static Header rpmgiLoadReadHeader(rpmgi gi)
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
{
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
Header h = NULL;
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
if (gi->argv != NULL && gi->argv[gi->i] != NULL)
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
do {
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
char * fn = gi->argv[gi->i];
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
int rc;
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
while (gi->recLvls[gi->curLvl] > gi->argc - gi->i)
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
gi->curLvl--;
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
rc = rpmgiReadHeader(gi, fn, &h);
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
if (h != NULL || (gi->flags & RPMGI_NOMANIFEST) || rc == 0)
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
break;
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
if (gi->curLvl == MANIFEST_RECURSIONS - 1) {
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
rpmlog(RPMLOG_ERR,
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
_("Max level of manifest recursion exceeded: %s\n"), fn);
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
break;
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
}
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
gi->curLvl++;
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
gi->recLvls[gi->curLvl] = gi->argc - gi->i;
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
/* Not a header, so try for a manifest. */
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
gi->argv[gi->i] = NULL; /* Mark the insertion point */
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
if (rpmgiLoadManifest(gi, fn) != RPMRC_OK) {
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
gi->argv[gi->i] = fn; /* Manifest failed, restore fn */
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
rpmlog(RPMLOG_ERR,
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
_("%s: not an rpm package (or package manifest)\n"), fn);
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
break;
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
}
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
fn = _free(fn);
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
} while (1);
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
return h;
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
}
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
/**
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
* Append globbed arg list to iterator.
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
* @param gi generalized iterator
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
* @param argv arg list to be globbed (or NULL)
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
*/
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
static void rpmgiGlobArgv(rpmgi gi, ARGV_const_t argv)
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
{
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
if (argv == NULL) return;
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
/* XXX Expand globs only if requested */
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
if ((gi->flags & RPMGI_NOGLOB)) {
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
argvAppend(&gi->argv, argv);
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
} else {
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
const char * arg;
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
while ((arg = *argv++) != NULL) {
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
char * t = rpmEscapeSpaces(arg);
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
char ** av = NULL;
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
if (rpmGlob(t, NULL, &av) == 0) {
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
argvAppend(&gi->argv, av);
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
argvFree(av);
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
}
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
free(t);
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
}
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
}
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
gi->argc = argvCount(gi->argv);
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
return;
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
}
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
rpmgi rpmgiFree(rpmgi gi)
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
{
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
if (gi != NULL) {
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
rpmtsFree(gi->ts);
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
argvFree(gi->argv);
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
memset(gi, 0, sizeof(*gi)); /* XXX trash and burn */
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
free(gi);
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
}
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
return NULL;
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
}
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
rpmgi rpmgiNew(rpmts ts, rpmgiFlags flags, ARGV_const_t argv)
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
{
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
rpmgi gi = xcalloc(1, sizeof(*gi));
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
gi->ts = rpmtsLink(ts);
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
gi->flags = flags;
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
gi->i = -1;
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
gi->errors = 0;
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
gi->argv = argvNew();
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
gi->argc = 0;
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
rpmgiGlobArgv(gi, argv);
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
gi->curLvl = 0;
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
gi->recLvls[gi->curLvl] = 1;
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
return gi;
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
}
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
Header rpmgiNext(rpmgi gi)
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
{
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
Header h = NULL;
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
if (gi != NULL && ++gi->i >= 0) {
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
/*
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
* Read next header, lazily expanding manifests as found,
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
* count + skip errors.
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
*/
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
while (gi->i < gi->argc) {
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
if ((h = rpmgiLoadReadHeader(gi)) != NULL)
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
break;
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
gi->errors++;
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
gi->i++;
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
}
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
/* Out of things to try, end of iteration */
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
if (h == NULL)
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
gi->i = -1;
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
}
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
return h;
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
}
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
int rpmgiNumErrors(rpmgi gi)
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
{
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
return (gi != NULL ? gi->errors : -1);
|
|
![](https://seccdn.libravatar.org/avatar/7eafec293cdc84ccc79910e3192915e78e6e34e812c9116c61cc64bf13dc271a?s=16&d=retro) |
2ff057 |
}
|