|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
#define _GNU_SOURCE
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
#include <stdio.h>
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
#include <stdlib.h>
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
#include <unistd.h>
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
#include <errno.h>
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
#include <assert.h>
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
#include <argp.h>
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
#include <rpm/rpmlib.h>
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
#include <err.h>
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
typedef enum {
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
RPMNVRCMP,
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
VERSNVRCMP,
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
RPMVERCMP,
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
STRVERSCMP,
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
} comparitors;
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
static comparitors comparitor = RPMNVRCMP;
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
static inline void *xmalloc(size_t sz)
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
{
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
void *ret = malloc(sz);
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
assert(sz == 0 || ret != NULL);
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
return ret;
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
}
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
static inline void *xrealloc(void *p, size_t sz)
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
{
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
void *ret = realloc(p, sz);
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
assert(sz == 0 || ret != NULL);
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
return ret;
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
}
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
static inline char *xstrdup(const char * const s)
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
{
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
void *ret = strdup(s);
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
assert(s == NULL || ret != NULL);
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
return ret;
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
}
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
static size_t
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
read_file (const char *input, char **ret)
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
{
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
FILE *in;
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
size_t s;
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
size_t sz = 2048;
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
size_t offset = 0;
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
char *text;
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
if (!strcmp(input, "-"))
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
in = stdin;
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
else
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
in = fopen(input, "r");
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
text = xmalloc (sz);
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
if (!in)
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
err(1, "cannot open `%s'", input);
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
while ((s = fread (text + offset, 1, sz - offset, in)) != 0)
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
{
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
offset += s;
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
if (sz - offset == 0)
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
{
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
sz += 2048;
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
text = xrealloc (text, sz);
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
}
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
}
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
text[offset] = '\0';
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
*ret = text;
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
if (in != stdin)
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
fclose(in);
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
return offset + 1;
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
}
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
/* returns name/version/release */
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
/* NULL string pointer returned if nothing found */
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
static void
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
split_package_string (char *package_string, char **name,
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
char **version, char **release)
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
{
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
char *package_version, *package_release;
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
/* Release */
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
package_release = strrchr (package_string, '-');
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
if (package_release != NULL)
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
*package_release++ = '\0';
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
*release = package_release;
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
/* Version */
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
package_version = strrchr(package_string, '-');
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
if (package_version != NULL)
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
*package_version++ = '\0';
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
*version = package_version;
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
/* Name */
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
*name = package_string;
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
/* Bubble up non-null values from release to name */
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
if (*name == NULL)
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
{
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
*name = (*version == NULL ? *release : *version);
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
*version = *release;
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
*release = NULL;
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
}
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
if (*version == NULL)
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
{
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
*version = *release;
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
*release = NULL;
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
}
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
}
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
static int
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
cmprpmversp(const void *p1, const void *p2)
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
{
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
return rpmvercmp(*(char * const *)p1, *(char * const *)p2);
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
}
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
static int
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
cmpstrversp(const void *p1, const void *p2)
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
{
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
return strverscmp(*(char * const *)p1, *(char * const *)p2);
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
}
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
/*
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
* package name-version-release comparator for qsort
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
* expects p, q which are pointers to character strings (char *)
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
* which will not be altered in this function
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
*/
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
static int
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
package_version_compare (const void *p, const void *q)
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
{
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
char *local_p, *local_q;
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
char *lhs_name, *lhs_version, *lhs_release;
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
char *rhs_name, *rhs_version, *rhs_release;
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
int vercmpflag = 0;
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
int (*cmp)(const char *s1, const char *s2);
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
switch(comparitor)
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
{
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
default: /* just to shut up -Werror=maybe-uninitialized */
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
case RPMNVRCMP:
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
cmp = rpmvercmp;
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
break;
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
case VERSNVRCMP:
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
cmp = strverscmp;
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
break;
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
case RPMVERCMP:
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
return cmprpmversp(p, q);
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
break;
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
case STRVERSCMP:
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
return cmpstrversp(p, q);
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
break;
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
}
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
local_p = alloca (strlen (*(char * const *)p) + 1);
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
local_q = alloca (strlen (*(char * const *)q) + 1);
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
/* make sure these allocated */
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
assert (local_p);
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
assert (local_q);
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
strcpy (local_p, *(char * const *)p);
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
strcpy (local_q, *(char * const *)q);
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
split_package_string (local_p, &lhs_name, &lhs_version, &lhs_release);
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
split_package_string (local_q, &rhs_name, &rhs_version, &rhs_release);
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
/* Check Name and return if unequal */
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
vercmpflag = cmp ((lhs_name == NULL ? "" : lhs_name),
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
(rhs_name == NULL ? "" : rhs_name));
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
if (vercmpflag != 0)
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
return vercmpflag;
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
/* Check version and return if unequal */
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
vercmpflag = cmp ((lhs_version == NULL ? "" : lhs_version),
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
(rhs_version == NULL ? "" : rhs_version));
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
if (vercmpflag != 0)
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
return vercmpflag;
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
/* Check release and return the version compare value */
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
vercmpflag = cmp ((lhs_release == NULL ? "" : lhs_release),
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
(rhs_release == NULL ? "" : rhs_release));
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
return vercmpflag;
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
}
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
static void
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
add_input (const char *filename, char ***package_names, size_t *n_package_names)
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
{
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
char *orig_input_buffer = NULL;
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
char *input_buffer;
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
char *position_of_newline;
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
char **names = *package_names;
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
char **new_names = NULL;
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
size_t n_names = *n_package_names;
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
if (!*package_names)
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
new_names = names = xmalloc (sizeof (char *) * 2);
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
if (read_file (filename, &orig_input_buffer) < 2)
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
{
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
if (new_names)
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
free (new_names);
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
if (orig_input_buffer)
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
free (orig_input_buffer);
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
return;
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
}
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
input_buffer = orig_input_buffer;
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
while (input_buffer && *input_buffer &&
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
(position_of_newline = strchrnul (input_buffer, '\n')))
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
{
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
size_t sz = position_of_newline - input_buffer;
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
char *new;
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
if (sz == 0)
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
{
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
input_buffer = position_of_newline + 1;
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
continue;
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
}
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
new = xmalloc (sz+1);
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
strncpy (new, input_buffer, sz);
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
new[sz] = '\0';
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
names = xrealloc (names, sizeof (char *) * (n_names + 1));
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
names[n_names] = new;
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
n_names++;
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
/* move buffer ahead to next line */
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
input_buffer = position_of_newline + 1;
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
if (*position_of_newline == '\0')
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
input_buffer = NULL;
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
}
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
free (orig_input_buffer);
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
*package_names = names;
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
*n_package_names = n_names;
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
}
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
static char *
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
help_filter (int key, const char *text, void *input __attribute__ ((unused)))
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
{
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
return (char *)text;
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
}
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
static struct argp_option options[] = {
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
{ "comparitor", 'c', "COMPARITOR", 0, "[rpm-nvr-cmp|vers-nvr-cmp|rpmvercmp|strverscmp]", 0},
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
{ 0, }
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
};
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
struct arguments
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
{
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
size_t ninputs;
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
size_t input_max;
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
char **inputs;
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
};
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
static error_t
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
argp_parser (int key, char *arg, struct argp_state *state)
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
{
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
struct arguments *arguments = state->input;
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
switch (key)
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
{
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
case 'c':
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
if (!strcmp(arg, "rpm-nvr-cmp") || !strcmp(arg, "rpmnvrcmp"))
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
comparitor = RPMNVRCMP;
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
else if (!strcmp(arg, "vers-nvr-cmp") || !strcmp(arg, "versnvrcmp"))
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
comparitor = VERSNVRCMP;
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
else if (!strcmp(arg, "rpmvercmp"))
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
comparitor = RPMVERCMP;
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
else if (!strcmp(arg, "strverscmp"))
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
comparitor = STRVERSCMP;
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
else
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
err(1, "Invalid comparitor \"%s\"", arg);
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
break;
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
case ARGP_KEY_ARG:
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
assert (arguments->ninputs < arguments->input_max);
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
arguments->inputs[arguments->ninputs++] = xstrdup (arg);
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
break;
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
default:
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
return ARGP_ERR_UNKNOWN;
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
}
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
return 0;
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
}
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
static struct argp argp = {
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
options, argp_parser, "[INPUT_FILES]",
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
"Sort a list of strings in RPM version sort order.",
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
NULL, help_filter, NULL
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
};
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
int
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
main (int argc, char *argv[])
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
{
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
struct arguments arguments;
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
char **package_names = NULL;
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
size_t n_package_names = 0;
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
int i;
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
memset (&arguments, 0, sizeof (struct arguments));
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
arguments.input_max = argc+1;
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
arguments.inputs = xmalloc ((arguments.input_max + 1)
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
* sizeof (arguments.inputs[0]));
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
memset (arguments.inputs, 0, (arguments.input_max + 1)
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
* sizeof (arguments.inputs[0]));
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
/* Parse our arguments */
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
if (argp_parse (&argp, argc, argv, 0, 0, &arguments) != 0)
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
errx(1, "%s", "Error in parsing command line arguments\n");
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
/* If there's no inputs in argv, add one for stdin */
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
if (!arguments.ninputs)
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
{
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
arguments.ninputs = 1;
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
arguments.inputs[0] = xmalloc (2);
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
strcpy(arguments.inputs[0], "-");
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
}
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
for (i = 0; i < arguments.ninputs; i++)
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
add_input(arguments.inputs[i], &package_names, &n_package_names);
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
if (package_names == NULL || n_package_names < 1)
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
errx(1, "Invalid input");
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
qsort (package_names, n_package_names, sizeof (char *),
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
package_version_compare);
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
/* send sorted list to stdout */
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
for (i = 0; i < n_package_names; i++)
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
{
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
fprintf (stdout, "%s\n", package_names[i]);
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
free (package_names[i]);
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
}
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
free (package_names);
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
for (i = 0; i < arguments.ninputs; i++)
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
free (arguments.inputs[i]);
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
free (arguments.inputs);
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
return 0;
|
|
![](https://seccdn.libravatar.org/avatar/ea4840855a8a2d18e052a519bb780f817a45cc3e7e1b65e2ee9a2389dc824d95?s=16&d=retro) |
415ad45 |
}
|