parent
86704da569
commit
85a5a1cfe3
2
CHANGES
2
CHANGES
|
@ -15,7 +15,9 @@
|
|||
- add version check for package with provides and obsoletes.
|
||||
- x86_64 -> athlon, ppc64[ip]series -> ppc64 arch compatibility.
|
||||
- treat missing epoch's exactly the same as Epoch: 0.
|
||||
- add ".arch" suffix to erase colored packages with identical NEVR.
|
||||
- update ja man pages (#92261).
|
||||
- brp-python-bytecompile to automagically bytecode compile python.
|
||||
|
||||
4.1 -> 4.2:
|
||||
- set cachesize without a dbenv, the default is far too small.
|
||||
|
|
|
@ -774,18 +774,21 @@ int rpmErase(rpmts ts, struct rpmInstallArguments_s * ia,
|
|||
|
||||
/* XXX HACK to get rpmdbFindByLabel out of the API */
|
||||
mi = rpmtsInitIterator(ts, RPMDBI_LABEL, *arg, 0);
|
||||
count = rpmdbGetIteratorCount(mi);
|
||||
if (count <= 0) {
|
||||
if (mi == NULL) {
|
||||
rpmMessage(RPMMESS_ERROR, _("package %s is not installed\n"), *arg);
|
||||
numFailed++;
|
||||
} else if (!(count == 1 || (ia->eraseInterfaceFlags & UNINSTALL_ALLMATCHES))) {
|
||||
rpmMessage(RPMMESS_ERROR, _("\"%s\" specifies multiple packages\n"),
|
||||
*arg);
|
||||
numFailed++;
|
||||
} else {
|
||||
Header h; /* XXX iterator owns the reference */
|
||||
count = 0;
|
||||
while ((h = rpmdbNextIterator(mi)) != NULL) {
|
||||
unsigned int recOffset = rpmdbGetIteratorOffset(mi);
|
||||
|
||||
if (!(count++ == 0 || (ia->eraseInterfaceFlags & UNINSTALL_ALLMATCHES))) {
|
||||
rpmMessage(RPMMESS_ERROR, _("\"%s\" specifies multiple packages\n"),
|
||||
*arg);
|
||||
numFailed++;
|
||||
break;
|
||||
}
|
||||
if (recOffset) {
|
||||
(void) rpmtsAddEraseElement(ts, h, recOffset);
|
||||
numPackages++;
|
||||
|
|
98
lib/rpmts.c
98
lib/rpmts.c
|
@ -185,15 +185,113 @@ int rpmtsVerifyDB(rpmts ts)
|
|||
return rpmdbVerify(ts->rootDir);
|
||||
}
|
||||
|
||||
static int isArch(const char * arch)
|
||||
/*@*/
|
||||
{
|
||||
const char ** av;
|
||||
static const char *arches[] = {
|
||||
"i386", "i486", "i586", "i686", "athlon", "x86_64",
|
||||
"alpha", "alphaev5", "alphaev56", "alphapca56", "alphaev6", "alphaev67",
|
||||
"sparc", "sun4", "sun4m", "sun4c", "sun4d", "sparcv9",
|
||||
"sparc64", "sun4u",
|
||||
"mips", "mipsel", "IP",
|
||||
"ppc", "ppciseries", "ppcpseries",
|
||||
"ppc64", "ppc64iseries", "ppc64pseries",
|
||||
"m68k",
|
||||
"rs6000",
|
||||
"ia64",
|
||||
"armv3l", "armv4b", "armv4l",
|
||||
"s390", "i370", "s390x",
|
||||
"sh", "xtensa",
|
||||
"noarch",
|
||||
NULL,
|
||||
};
|
||||
|
||||
for (av = arches; *av != NULL; av++) {
|
||||
if (!strcmp(arch, *av))
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
rpmdbMatchIterator rpmtsInitIterator(const rpmts ts, rpmTag rpmtag,
|
||||
const void * keyp, size_t keylen)
|
||||
{
|
||||
rpmdbMatchIterator mi;
|
||||
const char * arch = NULL;
|
||||
int xx;
|
||||
|
||||
if (ts->rdb == NULL && rpmtsOpenDB(ts, ts->dbmode))
|
||||
return NULL;
|
||||
|
||||
/* Parse out "N(EVR).A" tokens from a label key. */
|
||||
/*@-branchstate@*/
|
||||
if (rpmtag == RPMDBI_LABEL && keyp != NULL) {
|
||||
const char * s = keyp;
|
||||
const char *se;
|
||||
size_t slen = strlen(s);
|
||||
char *t = alloca(slen+1);
|
||||
int level = 0;
|
||||
int c;
|
||||
|
||||
keyp = t;
|
||||
while ((c = *s++) != '\0') {
|
||||
switch (c) {
|
||||
default:
|
||||
*t++ = c;
|
||||
break;
|
||||
case '(':
|
||||
/* XXX Fail if nested parens. */
|
||||
if (level++ != 0) {
|
||||
rpmError(RPMERR_QFMT, _("extra '(' in package label: %s\n"), keyp);
|
||||
return NULL;
|
||||
}
|
||||
/* Parse explicit epoch. */
|
||||
for (se = s; *se && xisdigit(*se); se++)
|
||||
;
|
||||
if (*se == ':') {
|
||||
/* XXX skip explicit epoch's (for now) */
|
||||
*t++ = '-';
|
||||
s = se + 1;
|
||||
} else {
|
||||
/* No Epoch: found. Convert '(' to '-' and chug. */
|
||||
*t++ = '-';
|
||||
}
|
||||
break;
|
||||
case ')':
|
||||
/* XXX Fail if nested parens. */
|
||||
if (--level != 0) {
|
||||
rpmError(RPMERR_QFMT, _("missing '(' in package label: %s\n"), keyp);
|
||||
return NULL;
|
||||
}
|
||||
/* Don't copy trailing ')' */
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (level) {
|
||||
rpmError(RPMERR_QFMT, _("missing ')' in package label: %s\n"), keyp);
|
||||
return NULL;
|
||||
}
|
||||
*t = '\0';
|
||||
t = (char *) keyp;
|
||||
t = strrchr(t, '.');
|
||||
/* Is this a valid ".arch" suffix? */
|
||||
if (t != NULL && isArch(t+1)) {
|
||||
*t++ = '\0';
|
||||
arch = t;
|
||||
}
|
||||
}
|
||||
/*@=branchstate@*/
|
||||
|
||||
mi = rpmdbInitIterator(ts->rdb, rpmtag, keyp, keylen);
|
||||
|
||||
/* Verify header signature/digest during retrieve (if not disabled). */
|
||||
if (mi && !(ts->vsflags & RPMVSF_NOHDRCHK))
|
||||
(void) rpmdbSetHdrChk(mi, ts, headerCheck);
|
||||
|
||||
/* Select specified arch only. */
|
||||
if (arch != NULL)
|
||||
xx = rpmdbSetIteratorRE(mi, RPMTAG_ARCH, RPMMIRE_DEFAULT, arch);
|
||||
return mi;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,116 +1,121 @@
|
|||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) YEAR Free Software Foundation, Inc.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||
# A French translation for rpm messages
|
||||
# Copyright (C) 2003 Free Software Foundation, Inc.
|
||||
# This file is distributed under the same license as the RPM package.
|
||||
# RPM French Translation <rpm-fr@livna.org>, 2003.
|
||||
# JBJ : THANX A LOT !!!
|
||||
#
|
||||
# N'hésitez pas à m'envoyez un courriel si vous avez des
|
||||
# suggestions/corrections.
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: popt 1.6.3\n"
|
||||
"POT-Creation-Date: 2003-03-19 11:03-0500\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"Project-Id-Version: popt 1.8.1\n"
|
||||
"POT-Creation-Date: 2003-03-19 12:16-0500\n"
|
||||
"PO-Revision-Date: 2003-06-22 23:43+0200\n"
|
||||
"Last-Translator: RPM French Translation <rpm-fr@livna.org>\n"
|
||||
"Language-Team: RPM French Translation <rpm-fr@livna.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=CHARSET\n"
|
||||
"Content-Transfer-Encoding: ENCODING\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8-bit\n"
|
||||
|
||||
#: popt.c:34
|
||||
msgid "unknown errno"
|
||||
msgstr ""
|
||||
msgstr "errno inconnu"
|
||||
|
||||
#: popt.c:940
|
||||
#, c-format
|
||||
msgid "option type (%d) not implemented in popt\n"
|
||||
msgstr ""
|
||||
msgstr "type(%d) d'option non implémenté dans popt\n"
|
||||
|
||||
#: popt.c:1160
|
||||
msgid "missing argument"
|
||||
msgstr ""
|
||||
msgstr "argument manquant"
|
||||
|
||||
#: popt.c:1162
|
||||
msgid "unknown option"
|
||||
msgstr ""
|
||||
msgstr "option iconnue"
|
||||
|
||||
#: popt.c:1164
|
||||
msgid "mutually exclusive logical operations requested"
|
||||
msgstr ""
|
||||
msgstr "opérations logiques mutuellement exclusives requises"
|
||||
|
||||
#: popt.c:1166
|
||||
msgid "opt->arg should not be NULL"
|
||||
msgstr ""
|
||||
msgstr "opt->arg ne devrait pas être NULL"
|
||||
|
||||
#: popt.c:1168
|
||||
msgid "aliases nested too deeply"
|
||||
msgstr ""
|
||||
msgstr "les alias sont trop entremellés"
|
||||
|
||||
#: popt.c:1170
|
||||
msgid "error in parameter quoting"
|
||||
msgstr ""
|
||||
msgstr "erreur en citant les paramètres"
|
||||
|
||||
#: popt.c:1172
|
||||
msgid "invalid numeric value"
|
||||
msgstr ""
|
||||
msgstr "valeur numérique invalide"
|
||||
|
||||
#: popt.c:1174
|
||||
msgid "number too large or too small"
|
||||
msgstr ""
|
||||
msgstr "nombre trop grand ou trop petit"
|
||||
|
||||
#: popt.c:1176
|
||||
msgid "memory allocation failed"
|
||||
msgstr ""
|
||||
msgstr "échec de l'allocation de mémoire"
|
||||
|
||||
#: popt.c:1180
|
||||
msgid "unknown error"
|
||||
msgstr ""
|
||||
msgstr "erreur inconnue"
|
||||
|
||||
#: popthelp.c:57
|
||||
msgid "Show this help message"
|
||||
msgstr ""
|
||||
msgstr "Montre ce message d'aide"
|
||||
|
||||
#: popthelp.c:58
|
||||
msgid "Display brief usage message"
|
||||
msgstr ""
|
||||
msgstr "Affiche un bref descriptif de l'utilisation"
|
||||
|
||||
#: popthelp.c:61
|
||||
msgid "Display option defaults in message"
|
||||
msgstr ""
|
||||
msgstr "Afficher les valeurs par défaut des options dans le message"
|
||||
|
||||
#: popthelp.c:103
|
||||
msgid "NONE"
|
||||
msgstr ""
|
||||
msgstr "RIEN"
|
||||
|
||||
#: popthelp.c:105
|
||||
msgid "VAL"
|
||||
msgstr ""
|
||||
msgstr "VAL"
|
||||
|
||||
#: popthelp.c:109
|
||||
msgid "INT"
|
||||
msgstr ""
|
||||
msgstr "ENTIER"
|
||||
|
||||
#: popthelp.c:110
|
||||
msgid "LONG"
|
||||
msgstr ""
|
||||
msgstr "LONG"
|
||||
|
||||
#: popthelp.c:111
|
||||
msgid "STRING"
|
||||
msgstr ""
|
||||
msgstr "CHAINE"
|
||||
|
||||
#: popthelp.c:112
|
||||
msgid "FLOAT"
|
||||
msgstr ""
|
||||
msgstr "FLOTTANT"
|
||||
|
||||
#: popthelp.c:113
|
||||
msgid "DOUBLE"
|
||||
msgstr ""
|
||||
msgstr "DOUBLE"
|
||||
|
||||
#: popthelp.c:114
|
||||
msgid "ARG"
|
||||
msgstr ""
|
||||
msgstr "ARG"
|
||||
|
||||
#: popthelp.c:486
|
||||
msgid "Usage:"
|
||||
msgstr ""
|
||||
msgstr "Utilisation:"
|
||||
|
||||
#: popthelp.c:510
|
||||
msgid "[OPTION...]"
|
||||
msgstr ""
|
||||
msgstr "[OPTION...]"
|
||||
|
|
|
@ -36,7 +36,8 @@ BuildRequires: elfutils-libelf
|
|||
|
||||
BuildRequires: zlib-devel
|
||||
|
||||
BuildRequires: beecrypt-devel >= 0:3.0.0-0.20030603
|
||||
BuildRequires: beecrypt-devel >= 0:3.0.0-2
|
||||
Requires: beecrypt-devel >= 0:3.0.0-2
|
||||
|
||||
# XXX Red Hat 5.2 has not bzip2 or python
|
||||
%if %{with_bzip2}
|
||||
|
|
|
@ -501,7 +501,7 @@ ssize_t fdWrite(void * cookie, const char * buf, size_t count)
|
|||
int fdClose( /*@only@*/ void * cookie)
|
||||
/*@globals errno, fileSystem, systemState, internalState @*/
|
||||
/*@modifies *cookie, errno, fileSystem, systemState, internalState @*/;
|
||||
#define fdCLose(_fd) fdio->close(_fd)
|
||||
#define fdClose(_fd) fdio->close(_fd)
|
||||
|
||||
/**
|
||||
*/
|
||||
|
|
Loading…
Reference in New Issue