Make cpio maps totally opaque.
CVS patchset: 4487 CVS date: 2001/01/22 19:11:19
This commit is contained in:
parent
4a0c7b16a8
commit
15439b46c0
1
CHANGES
1
CHANGES
|
@ -1,5 +1,6 @@
|
|||
4.0.2 -> 4.0.3
|
||||
- cpio mappings carry dirname/basename, not absolute path.
|
||||
- fix: check waitpid return code.
|
||||
|
||||
4.0 -> 4.0.[12]
|
||||
- add doxygen and lclint annotations most everywhere.
|
||||
|
|
155
lib/cpio.c
155
lib/cpio.c
|
@ -8,6 +8,10 @@
|
|||
*/
|
||||
|
||||
#include "system.h"
|
||||
#include <rpmlib.h>
|
||||
|
||||
#include "depends.h"
|
||||
#include "install.h"
|
||||
#include "cpio.h"
|
||||
#include "rpmerr.h"
|
||||
#include "debug.h"
|
||||
|
@ -24,7 +28,7 @@
|
|||
struct hardLink {
|
||||
struct hardLink * next;
|
||||
const char ** files; /* nlink of these, used by install */
|
||||
const struct cpioFileMapping ** fileMaps;
|
||||
const void ** fileMaps;
|
||||
dev_t dev;
|
||||
ino_t inode;
|
||||
int nlink;
|
||||
|
@ -84,9 +88,9 @@ static int mapFlags(const void * this, cpioMapFlags mask) {
|
|||
return (map->mapFlags & mask);
|
||||
}
|
||||
|
||||
static const char * mapArchivePath(const void * this) {
|
||||
static /*@only@*/ const char * mapArchivePath(const void * this) {
|
||||
const struct cpioFileMapping * map = this;
|
||||
return map->archivePath;
|
||||
return xstrdup(map->archivePath);
|
||||
}
|
||||
|
||||
static /*@only@*/ const char * mapFsPath(const void * this) {
|
||||
|
@ -117,33 +121,73 @@ static const char * mapMd5sum(const void * this) {
|
|||
}
|
||||
|
||||
struct mapi {
|
||||
const struct cpioFileMapping * mappings;
|
||||
union {
|
||||
const struct cpioFileMapping * mappings;
|
||||
TFI_t fi;
|
||||
} u;
|
||||
int numMappings;
|
||||
int i;
|
||||
};
|
||||
|
||||
static void mapFreeIterator(/*@only@*/ void * mi) {
|
||||
free(mi);
|
||||
static int cpioFileMapCmp(const void * a, const void * b) {
|
||||
const char * afn = ((const struct cpioFileMapping *)a)->archivePath;
|
||||
const char * bfn = ((const struct cpioFileMapping *)b)->archivePath;
|
||||
|
||||
/* Match payloads with ./ prefixes as well. */
|
||||
if (afn[0] == '.' && afn[1] == '/') afn += 2;
|
||||
if (bfn[0] == '.' && bfn[1] == '/') bfn += 2;
|
||||
|
||||
return strcmp(afn, bfn);
|
||||
}
|
||||
|
||||
static void * mapInitIterator(const struct cpioFileMapping * mappings,
|
||||
int numMappings)
|
||||
{
|
||||
struct mapi * mapi = xmalloc(sizeof(*mapi));
|
||||
mapi->mappings = mappings;
|
||||
static const void * mapFind(const void * this, const char * hdrPath) {
|
||||
const struct mapi * mapi = this;
|
||||
const struct cpioFileMapping * map;
|
||||
struct cpioFileMapping needle;
|
||||
|
||||
needle.archivePath = hdrPath;
|
||||
map = bsearch(&needle, mapi->u.mappings, mapi->numMappings,
|
||||
sizeof(needle), cpioFileMapCmp);
|
||||
return map;
|
||||
}
|
||||
|
||||
static const void * mapLink(const void * this) {
|
||||
const struct cpioFileMapping * map = this;
|
||||
return map;
|
||||
}
|
||||
|
||||
static void mapFree(const void * this) {
|
||||
return;
|
||||
}
|
||||
|
||||
static void mapFreeIterator(/*@only@*/ void * this) {
|
||||
if (this)
|
||||
free(this);
|
||||
}
|
||||
|
||||
static void * mapInitIterator(const void * this, int numMappings) {
|
||||
struct mapi * mapi;
|
||||
|
||||
if (this == NULL)
|
||||
return NULL;
|
||||
mapi = xcalloc(sizeof(*mapi), 1);
|
||||
mapi->u.mappings = this;
|
||||
mapi->numMappings = numMappings;
|
||||
mapi->i = 0;
|
||||
|
||||
qsort((void *)mapi->u.mappings, numMappings, sizeof(*mapi->u.mappings),
|
||||
cpioFileMapCmp);
|
||||
|
||||
return mapi;
|
||||
}
|
||||
|
||||
static const struct cpioFileMapping * mapNextIterator(void * mi)
|
||||
{
|
||||
struct mapi * mapi = mi;
|
||||
static const void * mapNextIterator(void * this) {
|
||||
struct mapi * mapi = this;
|
||||
const struct cpioFileMapping * map;
|
||||
|
||||
if (!(mapi->i < mapi->numMappings))
|
||||
return NULL;
|
||||
map = mapi->mappings + mapi->i;
|
||||
map = mapi->u.mappings + mapi->i;
|
||||
mapi->i++;
|
||||
return map;
|
||||
}
|
||||
|
@ -346,18 +390,6 @@ static int getNextHeader(FD_t cfd, struct cpioHeader * hdr)
|
|||
return 0;
|
||||
}
|
||||
|
||||
int cpioFileMapCmp(const void * a, const void * b)
|
||||
{
|
||||
const char * afn = ((const struct cpioFileMapping *)a)->archivePath;
|
||||
const char * bfn = ((const struct cpioFileMapping *)b)->archivePath;
|
||||
|
||||
/* Match payloads with ./ prefixes as well. */
|
||||
if (afn[0] == '.' && afn[1] == '/') afn += 2;
|
||||
if (bfn[0] == '.' && bfn[1] == '/') bfn += 2;
|
||||
|
||||
return strcmp(afn, bfn);
|
||||
}
|
||||
|
||||
/* This could trash files in the path! I'm not sure that's a good thing */
|
||||
/**
|
||||
* @param path directory path
|
||||
|
@ -785,12 +817,13 @@ static int eatBytes(FD_t cfd, int amount)
|
|||
}
|
||||
|
||||
/** @todo Verify payload MD5 sum. */
|
||||
int cpioInstallArchive(FD_t cfd, const struct cpioFileMapping * mappings,
|
||||
int cpioInstallArchive(FD_t cfd, const void * mappings,
|
||||
int numMappings, cpioCallback cb, void * cbData,
|
||||
const char ** failedFile)
|
||||
{
|
||||
struct cpioHeader ch, *hdr = &ch;
|
||||
struct cpioFileMapping * map = NULL;
|
||||
const void * mapi = mapInitIterator(mappings, numMappings);
|
||||
const void * map = NULL;
|
||||
struct cpioCallbackInfo cbInfo = { NULL, 0, 0, 0 };
|
||||
struct hardLink * links = NULL;
|
||||
struct hardLink * li = NULL;
|
||||
|
@ -820,21 +853,17 @@ int cpioInstallArchive(FD_t cfd, const struct cpioFileMapping * mappings,
|
|||
rpmError(RPMERR_BADPACKAGE, _("getNextHeader: %s\n"),
|
||||
cpioStrerror(rc));
|
||||
#endif
|
||||
return rc;
|
||||
goto exit;
|
||||
}
|
||||
st = &hdr->sb;
|
||||
|
||||
if (!strcmp(hdr->path, TRAILER))
|
||||
break;
|
||||
|
||||
if (mappings) {
|
||||
struct cpioFileMapping needle;
|
||||
needle.archivePath = hdr->path;
|
||||
map = bsearch(&needle, mappings, numMappings, sizeof(needle),
|
||||
cpioFileMapCmp);
|
||||
}
|
||||
if (mapi)
|
||||
map = mapFind(mapi, hdr->path);
|
||||
|
||||
if (mappings && !map) {
|
||||
if (mapi && map == NULL) {
|
||||
eatBytes(cfd, st->st_size);
|
||||
} else {
|
||||
if (map) {
|
||||
|
@ -961,7 +990,11 @@ int cpioInstallArchive(FD_t cfd, const struct cpioFileMapping * mappings,
|
|||
if (md5sum)
|
||||
free(md5sum);
|
||||
#endif
|
||||
rc = 0;
|
||||
|
||||
exit:
|
||||
if (mapi)
|
||||
mapFreeIterator(mapi);
|
||||
return rc;
|
||||
}
|
||||
|
||||
|
@ -975,13 +1008,14 @@ int cpioInstallArchive(FD_t cfd, const struct cpioFileMapping * mappings,
|
|||
* @return 0 on success
|
||||
*/
|
||||
static int writeFile(FD_t cfd, const struct stat * st,
|
||||
const struct cpioFileMapping * map, /*@out@*/ size_t * sizep,
|
||||
const void * map, /*@out@*/ size_t * sizep,
|
||||
int writeData)
|
||||
/*@modifies cfd, *sizep @*/
|
||||
{
|
||||
const char * fsPath = mapFsPath(map);
|
||||
const char * archivePath = !mapFlags(map, CPIO_MAP_PATH)
|
||||
? fsPath : mapArchivePath(map);
|
||||
const char * archivePath = NULL;
|
||||
const char * hdrPath = !mapFlags(map, CPIO_MAP_PATH)
|
||||
? fsPath : (archivePath = mapArchivePath(map));
|
||||
struct cpioCrcPhysicalHeader hdr;
|
||||
char buf[8192], symbuf[2048];
|
||||
dev_t num;
|
||||
|
@ -1030,12 +1064,12 @@ static int writeFile(FD_t cfd, const struct stat * st,
|
|||
num = major((unsigned)st->st_rdev); SET_NUM_FIELD(hdr.rdevMajor, num, buf);
|
||||
num = minor((unsigned)st->st_rdev); SET_NUM_FIELD(hdr.rdevMinor, num, buf);
|
||||
|
||||
num = strlen(archivePath) + 1; SET_NUM_FIELD(hdr.namesize, num, buf);
|
||||
num = strlen(hdrPath) + 1; SET_NUM_FIELD(hdr.namesize, num, buf);
|
||||
memcpy(hdr.checksum, "00000000", 8);
|
||||
|
||||
if ((rc = safewrite(cfd, &hdr, PHYS_HDR_SIZE)) != PHYS_HDR_SIZE)
|
||||
goto exit;
|
||||
if ((rc = safewrite(cfd, archivePath, num)) != num)
|
||||
if ((rc = safewrite(cfd, hdrPath, num)) != num)
|
||||
goto exit;
|
||||
size = PHYS_HDR_SIZE + num;
|
||||
if ((rc = padoutfd(cfd, &size, 4)))
|
||||
|
@ -1141,17 +1175,18 @@ static int writeLinkedFile(FD_t cfd, const struct hardLink * hlink,
|
|||
/*@modifies cfd, *sizep, *failedFile @*/
|
||||
{
|
||||
struct cpioCallbackInfo cbInfo = { NULL, 0, 0, 0 };
|
||||
const void * map = NULL;
|
||||
size_t total = 0;
|
||||
const struct cpioFileMapping * map;
|
||||
size_t size;
|
||||
int i, rc;
|
||||
int rc = 0;
|
||||
int i;
|
||||
|
||||
for (i = hlink->nlink - 1; i > hlink->linksLeft; i--) {
|
||||
map = hlink->fileMaps[i];
|
||||
if ((rc = writeFile(cfd, &hlink->sb, map, &size, 0)) != 0) {
|
||||
if (failedFile)
|
||||
*failedFile = mapFsPath(map);;
|
||||
return rc;
|
||||
*failedFile = mapFsPath(map);
|
||||
goto exit;
|
||||
}
|
||||
|
||||
total += size;
|
||||
|
@ -1159,7 +1194,9 @@ static int writeLinkedFile(FD_t cfd, const struct hardLink * hlink,
|
|||
if (cb) {
|
||||
cbInfo.file = mapArchivePath(map);
|
||||
cb(&cbInfo, cbData);
|
||||
free((void *)cbInfo.file);
|
||||
}
|
||||
mapFree(map); map = NULL;
|
||||
}
|
||||
|
||||
i = hlink->linksLeft;
|
||||
|
@ -1168,8 +1205,8 @@ static int writeLinkedFile(FD_t cfd, const struct hardLink * hlink,
|
|||
if (sizep)
|
||||
*sizep = total;
|
||||
if (failedFile)
|
||||
*failedFile = mapFsPath(map);;
|
||||
return rc;
|
||||
*failedFile = mapFsPath(map);
|
||||
goto exit;
|
||||
}
|
||||
total += size;
|
||||
|
||||
|
@ -1179,17 +1216,22 @@ static int writeLinkedFile(FD_t cfd, const struct hardLink * hlink,
|
|||
if (cb) {
|
||||
cbInfo.file = mapArchivePath(map);
|
||||
cb(&cbInfo, cbData);
|
||||
free((void *)cbInfo.file);
|
||||
}
|
||||
rc = 0;
|
||||
|
||||
return 0;
|
||||
exit:
|
||||
if (map)
|
||||
mapFree(map);
|
||||
return rc;
|
||||
}
|
||||
|
||||
int cpioBuildArchive(FD_t cfd, const struct cpioFileMapping * mappings,
|
||||
int cpioBuildArchive(FD_t cfd, const void * mappings,
|
||||
int numMappings, cpioCallback cb, void * cbData,
|
||||
unsigned int * archiveSize, const char ** failedFile)
|
||||
{
|
||||
size_t size, totalsize = 0;
|
||||
int rc;
|
||||
void * mapi = mapInitIterator(mappings, numMappings);
|
||||
const void * map;
|
||||
struct cpioCallbackInfo cbInfo = { NULL, 0, 0, 0 };
|
||||
struct cpioCrcPhysicalHeader hdr;
|
||||
/*@-fullinitblock@*/
|
||||
|
@ -1197,12 +1239,12 @@ int cpioBuildArchive(FD_t cfd, const struct cpioFileMapping * mappings,
|
|||
/*@=fullinitblock@*/
|
||||
struct stat * st = (struct stat *) &hlinkList.sb;
|
||||
struct hardLink * hlink;
|
||||
void * mapi;
|
||||
const struct cpioFileMapping * map;
|
||||
size_t totalsize = 0;
|
||||
size_t size;
|
||||
int rc;
|
||||
|
||||
hlinkList.next = NULL;
|
||||
|
||||
mapi = mapInitIterator(mappings, numMappings);
|
||||
while ((map = mapNextIterator(mapi)) != NULL) {
|
||||
const char * fsPath;
|
||||
|
||||
|
@ -1230,7 +1272,7 @@ int cpioBuildArchive(FD_t cfd, const struct cpioFileMapping * mappings,
|
|||
hlinkList.next = hlink;
|
||||
}
|
||||
|
||||
hlink->fileMaps[--hlink->linksLeft] = map;
|
||||
hlink->fileMaps[--hlink->linksLeft] = mapLink(map);
|
||||
|
||||
if (hlink->linksLeft == 0) {
|
||||
struct hardLink * prev;
|
||||
|
@ -1263,6 +1305,7 @@ int cpioBuildArchive(FD_t cfd, const struct cpioFileMapping * mappings,
|
|||
if (cb) {
|
||||
cbInfo.file = mapArchivePath(map);
|
||||
cb(&cbInfo, cbData);
|
||||
free((void *)cbInfo.file);
|
||||
}
|
||||
|
||||
totalsize += size;
|
||||
|
|
|
@ -114,7 +114,7 @@ typedef void (*cpioCallback) (struct cpioCallbackInfo * filespec, void * data);
|
|||
* @retval failedFile file name (malloc'ed) that caused failure (if any)
|
||||
* @return 0 on success
|
||||
*/
|
||||
int cpioInstallArchive(FD_t cfd, const struct cpioFileMapping * mappings,
|
||||
int cpioInstallArchive(FD_t cfd, const void * mappings,
|
||||
int numMappings, cpioCallback cb, void * cbData,
|
||||
/*@out@*/const char ** failedFile)
|
||||
/*@modifies fileSystem, cfd, *failedFile @*/;
|
||||
|
@ -130,11 +130,12 @@ int cpioInstallArchive(FD_t cfd, const struct cpioFileMapping * mappings,
|
|||
* @retval failedFile file name (malloc'ed) that caused failure (if any)
|
||||
* @return 0 on success
|
||||
*/
|
||||
int cpioBuildArchive(FD_t cfd, const struct cpioFileMapping * mappings,
|
||||
int cpioBuildArchive(FD_t cfd, const void * mappings,
|
||||
int numMappings, cpioCallback cb, void * cbData,
|
||||
unsigned int * archiveSize, /*@out@*/const char ** failedFile)
|
||||
/*@modifies fileSystem, cfd, *archiveSize, *failedFile @*/;
|
||||
|
||||
#ifdef DYING
|
||||
/** \ingroup payload
|
||||
* Compare two cpio file map entries (qsort/bsearch).
|
||||
* This is designed to be qsort/bsearch compatible.
|
||||
|
@ -143,6 +144,7 @@ int cpioBuildArchive(FD_t cfd, const struct cpioFileMapping * mappings,
|
|||
* @return result of comparison
|
||||
*/
|
||||
int cpioFileMapCmp(const void * a, const void * b) /*@*/;
|
||||
#endif
|
||||
|
||||
/** \ingroup payload
|
||||
* Return formatted error message on payload handling failure.
|
||||
|
|
|
@ -118,6 +118,8 @@ struct transactionElement {
|
|||
} u;
|
||||
} ;
|
||||
|
||||
/**
|
||||
*/
|
||||
struct transactionFileInfo_s {
|
||||
/* for all packages */
|
||||
enum rpmTransactionType type;
|
||||
|
@ -136,6 +138,8 @@ struct transactionFileInfo_s {
|
|||
int dc; /*!< No. of directories. */
|
||||
int bnlmax; /*!< Length (in bytes) of longest base name. */
|
||||
int dnlmax; /*!< Length (in bytes) of longest dir name. */
|
||||
int magic;
|
||||
#define TFIMAGIC 0x09697923
|
||||
/* these are for TR_ADDED packages */
|
||||
const char ** flinks; /*!< file links (from header) */
|
||||
struct availablePackage * ap;
|
||||
|
|
|
@ -190,12 +190,13 @@ static int assembleFileList(TFI_t fi, Header h,
|
|||
fsizes = fi->fsizes;
|
||||
actions = fi->actions;
|
||||
} else {
|
||||
headerGetEntry(h, RPMTAG_DIRNAMES, NULL, (void **) &dnl, NULL);
|
||||
headerGetEntryMinMemory(h, RPMTAG_DIRNAMES, NULL, (void **) &dnl, NULL);
|
||||
mem->dnl = dnl;
|
||||
headerGetEntry(h, RPMTAG_DIRINDEXES, NULL, (void **) &dil, NULL);
|
||||
headerGetEntryMinMemory(h, RPMTAG_BASENAMES,NULL, (void **) &bnl, NULL);
|
||||
mem->bnl = bnl;
|
||||
headerGetEntry(h, RPMTAG_BASENAMES, NULL, (void **) &bnl, NULL);
|
||||
if (!headerGetEntry(h, RPMTAG_FILEMD5S, NULL, (void **) &fmd5s, NULL))
|
||||
if (!headerGetEntryMinMemory(h, RPMTAG_FILEMD5S, NULL,
|
||||
(void **) &fmd5s, NULL))
|
||||
fmd5s = NULL;
|
||||
mem->md5sums = fmd5s;
|
||||
headerGetEntry(h, RPMTAG_FILEFLAGS, NULL, (void **) &fflags, NULL);
|
||||
|
@ -591,7 +592,8 @@ static void callback(struct cpioCallbackInfo * cpioInfo, void * data)
|
|||
* @param archiveSize @todo Document.
|
||||
* @return 0 on success
|
||||
*/
|
||||
static int installArchive(FD_t fd, XFI_t files, int fileCount,
|
||||
static int installArchive(const rpmTransactionSet ts, TFI_t fi,
|
||||
FD_t fd, XFI_t files, int fileCount,
|
||||
rpmCallbackFunction notify, rpmCallbackData notifyData,
|
||||
const void * pkgKey, Header h,
|
||||
/*@out@*/ const char ** specFile, int archiveSize)
|
||||
|
@ -646,7 +648,9 @@ static int installArchive(FD_t fd, XFI_t files, int fileCount,
|
|||
mappedFiles++;
|
||||
}
|
||||
|
||||
#ifdef DYING
|
||||
qsort(map, mappedFiles, sizeof(*map), cpioFileMapCmp);
|
||||
#endif
|
||||
}
|
||||
|
||||
if (notify)
|
||||
|
@ -722,7 +726,7 @@ static int installSources(Header h, const char * rootDir, FD_t fd,
|
|||
int fileCount = 0;
|
||||
uint_32 * archiveSizePtr = NULL;
|
||||
fileMemory fileMem = NULL;
|
||||
XFI_t files = NULL;
|
||||
XFI_t files = NULL, file;
|
||||
int i;
|
||||
const char * currDir = NULL;
|
||||
uid_t currUid = getuid();
|
||||
|
@ -797,30 +801,29 @@ static int installSources(Header h, const char * rootDir, FD_t fd,
|
|||
/* we can't remap v1 packages */
|
||||
assembleFileList(NULL, h, &fileMem, &fileCount, &files, 0);
|
||||
|
||||
for (i = 0; i < fileCount; i++) {
|
||||
files[i].uid = currUid;
|
||||
files[i].gid = currGid;
|
||||
for (i = 0, file = files; i < fileCount; i++, file++) {
|
||||
file->uid = currUid;
|
||||
file->gid = currGid;
|
||||
}
|
||||
|
||||
if (headerIsEntry(h, RPMTAG_COOKIE))
|
||||
for (i = 0; i < fileCount; i++)
|
||||
if (files[i].flags & RPMFILE_SPECFILE) break;
|
||||
for (i = 0, file = files; i < fileCount; i++, file++)
|
||||
if (file->flags & RPMFILE_SPECFILE) break;
|
||||
|
||||
if (i == fileCount) {
|
||||
/* find the spec file by name */
|
||||
for (i = 0; i < fileCount; i++) {
|
||||
const char * t = files[i].cpioPath;
|
||||
t += strlen(files[i].cpioPath) - 5;
|
||||
for (i = 0, file = files; i < fileCount; i++, file++) {
|
||||
const char * t = file->cpioPath;
|
||||
t += strlen(file->cpioPath) - 5;
|
||||
if (!strcmp(t, ".spec")) break;
|
||||
}
|
||||
}
|
||||
|
||||
if (i < fileCount) {
|
||||
char *t = alloca(strlen(_specdir) + strlen(files[i].cpioPath) + 5);
|
||||
char *t = alloca(strlen(_specdir) + strlen(file->cpioPath) + 5);
|
||||
(void)stpcpy(stpcpy(t, _specdir), "/");
|
||||
rpmCleanPath(t);
|
||||
files[i].dn = t;
|
||||
files[i].bn = files[i].cpioPath;
|
||||
file->dn = t;
|
||||
file->bn = file->cpioPath;
|
||||
specFileIndex = i;
|
||||
} else {
|
||||
rpmError(RPMERR_NOSPEC,
|
||||
|
@ -839,7 +842,7 @@ static int installSources(Header h, const char * rootDir, FD_t fd,
|
|||
|
||||
currDir = currentDirectory();
|
||||
Chdir(_sourcedir);
|
||||
if (installArchive(fd, fileCount > 0 ? files : NULL,
|
||||
if (installArchive(NULL, NULL, fd, fileCount > 0 ? files : NULL,
|
||||
fileCount, notify, notifyData, NULL, h,
|
||||
specFileIndex >= 0 ? NULL : &specFile,
|
||||
archiveSizePtr ? *archiveSizePtr : 0)) {
|
||||
|
@ -1163,7 +1166,7 @@ int installBinaryPackage(const rpmTransactionSet ts, Header h, TFI_t fi)
|
|||
}
|
||||
|
||||
/* the file pointer for fd is pointing at the cpio archive */
|
||||
rc = installArchive(alp->fd, files, fileCount,
|
||||
rc = installArchive(ts, fi, alp->fd, files, fileCount,
|
||||
ts->notify, ts->notifyData, alp->key,
|
||||
h, NULL, archiveSize);
|
||||
if (rc)
|
||||
|
|
|
@ -1526,6 +1526,7 @@ int rpmRunTransactions( rpmTransactionSet ts,
|
|||
int preTransCount;
|
||||
|
||||
memset(fi, 0, sizeof(*fi));
|
||||
fi->magic = TFIMAGIC;
|
||||
preTrans = NULL;
|
||||
preTransCount = 0;
|
||||
|
||||
|
|
79
po/rpm.pot
79
po/rpm.pot
|
@ -6,7 +6,7 @@
|
|||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"POT-Creation-Date: 2001-01-21 18:24-0500\n"
|
||||
"POT-Creation-Date: 2001-01-22 14:07-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"
|
||||
|
@ -2190,55 +2190,55 @@ msgstr ""
|
|||
msgid "line %d: Bad %s number: %s\n"
|
||||
msgstr ""
|
||||
|
||||
#: lib/cpio.c:508
|
||||
#: lib/cpio.c:540
|
||||
#, c-format
|
||||
msgid "can't rename %s to %s: %s\n"
|
||||
msgstr ""
|
||||
|
||||
#: lib/cpio.c:514
|
||||
#: lib/cpio.c:546
|
||||
#, c-format
|
||||
msgid "can't unlink %s: %s\n"
|
||||
msgstr ""
|
||||
|
||||
#: lib/cpio.c:820
|
||||
#: lib/cpio.c:853
|
||||
#, c-format
|
||||
msgid "getNextHeader: %s\n"
|
||||
msgstr ""
|
||||
|
||||
#: lib/cpio.c:1320
|
||||
#: lib/cpio.c:1363
|
||||
#, c-format
|
||||
msgid "(error 0x%x)"
|
||||
msgstr ""
|
||||
|
||||
#: lib/cpio.c:1323
|
||||
#: lib/cpio.c:1366
|
||||
msgid "Bad magic"
|
||||
msgstr ""
|
||||
|
||||
#: lib/cpio.c:1324
|
||||
#: lib/cpio.c:1367
|
||||
msgid "Bad/unreadable header"
|
||||
msgstr ""
|
||||
|
||||
#: lib/cpio.c:1342
|
||||
#: lib/cpio.c:1385
|
||||
msgid "Header size too big"
|
||||
msgstr ""
|
||||
|
||||
#: lib/cpio.c:1343
|
||||
#: lib/cpio.c:1386
|
||||
msgid "Unknown file type"
|
||||
msgstr ""
|
||||
|
||||
#: lib/cpio.c:1344
|
||||
#: lib/cpio.c:1387
|
||||
msgid "Missing hard link"
|
||||
msgstr ""
|
||||
|
||||
#: lib/cpio.c:1345
|
||||
#: lib/cpio.c:1388
|
||||
msgid "MD5 sum mismatch"
|
||||
msgstr ""
|
||||
|
||||
#: lib/cpio.c:1346
|
||||
#: lib/cpio.c:1389
|
||||
msgid "Internal error"
|
||||
msgstr ""
|
||||
|
||||
#: lib/cpio.c:1355
|
||||
#: lib/cpio.c:1398
|
||||
msgid " failed - "
|
||||
msgstr ""
|
||||
|
||||
|
@ -2517,7 +2517,7 @@ msgstr ""
|
|||
msgid "dataLength() RPM_STRING_TYPE count must be 1.\n"
|
||||
msgstr ""
|
||||
|
||||
#: lib/header.c:207 lib/header.c:1015 lib/install.c:395
|
||||
#: lib/header.c:207 lib/header.c:1015 lib/install.c:396
|
||||
#, c-format
|
||||
msgid "Data type %d not supported\n"
|
||||
msgstr ""
|
||||
|
@ -2602,17 +2602,17 @@ msgstr ""
|
|||
msgid "(unknown type)"
|
||||
msgstr ""
|
||||
|
||||
#: lib/install.c:220
|
||||
#: lib/install.c:221
|
||||
#, c-format
|
||||
msgid " file: %s%s action: %s\n"
|
||||
msgstr ""
|
||||
|
||||
#: lib/install.c:246
|
||||
#: lib/install.c:247
|
||||
#, c-format
|
||||
msgid "user %s does not exist - using root\n"
|
||||
msgstr ""
|
||||
|
||||
#: lib/install.c:253
|
||||
#: lib/install.c:254
|
||||
#, c-format
|
||||
msgid "group %s does not exist - using root\n"
|
||||
msgstr ""
|
||||
|
@ -2620,90 +2620,90 @@ msgstr ""
|
|||
#. this would probably be a good place to check if disk space
|
||||
#. was used up - if so, we should return a different error
|
||||
#. XXX FIXME: Fclose with libio destroys errno
|
||||
#: lib/install.c:684
|
||||
#: lib/install.c:688
|
||||
#, c-format
|
||||
msgid "unpacking of archive failed%s%s: %s\n"
|
||||
msgstr ""
|
||||
|
||||
#: lib/install.c:685
|
||||
#: lib/install.c:689
|
||||
msgid " on file "
|
||||
msgstr ""
|
||||
|
||||
#: lib/install.c:733
|
||||
#: lib/install.c:737
|
||||
msgid "installing a source package\n"
|
||||
msgstr ""
|
||||
|
||||
#: lib/install.c:753
|
||||
#: lib/install.c:757
|
||||
#, c-format
|
||||
msgid "cannot create sourcedir %s\n"
|
||||
msgstr ""
|
||||
|
||||
#: lib/install.c:760 lib/install.c:790
|
||||
#: lib/install.c:764 lib/install.c:794
|
||||
#, c-format
|
||||
msgid "cannot write to %s\n"
|
||||
msgstr ""
|
||||
|
||||
#: lib/install.c:764
|
||||
#: lib/install.c:768
|
||||
#, c-format
|
||||
msgid "sources in: %s\n"
|
||||
msgstr ""
|
||||
|
||||
#: lib/install.c:784
|
||||
#: lib/install.c:788
|
||||
#, c-format
|
||||
msgid "cannot create specdir %s\n"
|
||||
msgstr ""
|
||||
|
||||
#: lib/install.c:794
|
||||
#: lib/install.c:798
|
||||
#, c-format
|
||||
msgid "spec file in: %s\n"
|
||||
msgstr ""
|
||||
|
||||
#: lib/install.c:827 lib/install.c:857
|
||||
#: lib/install.c:830 lib/install.c:860
|
||||
msgid "source package contains no .spec file\n"
|
||||
msgstr ""
|
||||
|
||||
#: lib/install.c:877
|
||||
#: lib/install.c:880
|
||||
#, c-format
|
||||
msgid "renaming %s to %s\n"
|
||||
msgstr ""
|
||||
|
||||
#: lib/install.c:879 lib/install.c:1149 lib/uninstall.c:43
|
||||
#: lib/install.c:882 lib/install.c:1152 lib/uninstall.c:43
|
||||
#, c-format
|
||||
msgid "rename of %s to %s failed: %s\n"
|
||||
msgstr ""
|
||||
|
||||
#: lib/install.c:974
|
||||
#: lib/install.c:977
|
||||
msgid "source package expected, binary found\n"
|
||||
msgstr ""
|
||||
|
||||
#: lib/install.c:1013
|
||||
#: lib/install.c:1016
|
||||
#, c-format
|
||||
msgid "package: %s-%s-%s files test = %d\n"
|
||||
msgstr ""
|
||||
|
||||
#: lib/install.c:1054
|
||||
#: lib/install.c:1057
|
||||
msgid "stopping install as we're running --test\n"
|
||||
msgstr ""
|
||||
|
||||
#: lib/install.c:1059
|
||||
#: lib/install.c:1062
|
||||
msgid "running preinstall script (if any)\n"
|
||||
msgstr ""
|
||||
|
||||
#: lib/install.c:1066
|
||||
#: lib/install.c:1069
|
||||
msgid "skipping %s-%s-%s install, %%pre scriptlet failed rc %d\n"
|
||||
msgstr ""
|
||||
|
||||
#: lib/install.c:1103
|
||||
#: lib/install.c:1106
|
||||
#, c-format
|
||||
msgid "%s%s created as %s\n"
|
||||
msgstr ""
|
||||
|
||||
#: lib/install.c:1144
|
||||
#: lib/install.c:1147
|
||||
#, c-format
|
||||
msgid "%s saved as %s\n"
|
||||
msgstr ""
|
||||
|
||||
#: lib/install.c:1229
|
||||
#: lib/install.c:1232
|
||||
msgid "running postinstall scripts (if any)\n"
|
||||
msgstr ""
|
||||
|
||||
|
@ -3554,7 +3554,12 @@ msgstr ""
|
|||
msgid "Please contact rpm-list@redhat.com\n"
|
||||
msgstr ""
|
||||
|
||||
#: lib/scriptlet.c:241
|
||||
#: lib/scriptlet.c:231
|
||||
#, c-format
|
||||
msgid "execution of %s scriptlet from %s-%s-%s failed, waitpid returned %s\n"
|
||||
msgstr ""
|
||||
|
||||
#: lib/scriptlet.c:238
|
||||
#, c-format
|
||||
msgid "execution of %s scriptlet from %s-%s-%s failed, exit status %d\n"
|
||||
msgstr ""
|
||||
|
|
|
@ -157,6 +157,10 @@ typedef /*@abstract@*/ struct rpmlogRec_s {
|
|||
const char * message;
|
||||
} * rpmlogRec;
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Return number of rpmError() ressages.
|
||||
* @return number of messages
|
||||
|
@ -175,10 +179,6 @@ int rpmlogGetNrecs(void);
|
|||
*/
|
||||
void rpmlogPrint(FILE *f);
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Close desriptor used to write to system logger.
|
||||
* @todo Implement.
|
||||
|
|
Loading…
Reference in New Issue