rpm  4.5
Data Structures | Macros | Typedefs | Enumerations | Functions | Variables
formats.c File Reference
#include "system.h"
#include "rpmio_internal.h"
#include <rpmlib.h>
#include <rpmmacro.h>
#include <rpmuuid.h>
#include <rpmds.h>
#include <rpmfi.h>
#include "legacy.h"
#include "argv.h"
#include "ugid.h"
#include "misc.h"
#include "fs.h"
#include "debug.h"
Include dependency graph for formats.c:

Go to the source code of this file.

Data Structures

struct  key_s
 

Macros

#define _RPMEVR_INTERNAL
 

Typedefs

typedef struct key_s KEY
 

Enumerations

enum  keyStat_e {
  STAT_KEYS_NONE = 0, STAT_KEYS_DEV = (1U << 0), STAT_KEYS_INO = (1U << 1), STAT_KEYS_MODE = (1U << 2),
  STAT_KEYS_NLINK = (1U << 3), STAT_KEYS_UID = (1U << 4), STAT_KEYS_GID = (1U << 5), STAT_KEYS_RDEV = (1U << 6),
  STAT_KEYS_SIZE = (1U << 7), STAT_KEYS_BLKSIZE = (1U << 8), STAT_KEYS_BLOCKS = (1U << 9), STAT_KEYS_ATIME = (1U << 10),
  STAT_KEYS_CTIME = (1U << 11), STAT_KEYS_MTIME = (1U << 12), STAT_KEYS_SLINK = (1U << 14), STAT_KEYS_DIGEST = (1U << 15),
  STAT_KEYS_UNAME = (1U << 17), STAT_KEYS_GNAME = (1U << 18)
}
 Bit field enum for stat(2) keys. More...
 
enum  keyUuids_e {
  UUID_KEYS_NONE = (0U << 0), UUID_KEYS_V1 = (1U << 0), UUID_KEYS_V3 = (3U << 0), UUID_KEYS_V4 = (4U << 0),
  UUID_KEYS_V5 = (5U << 0)
}
 Bit field enum for stat(2) keys. More...
 

Functions

static char * rpmPermsString (int mode)
 
static char * triggertypeFormat (HE_t he, const char **av)
 Identify type of trigger.
 
static char * permsFormat (HE_t he, const char **av)
 Format file permissions for display.
 
static char * fflagsFormat (HE_t he, const char **av)
 Format file flags for display.
 
static char * armorFormat (HE_t he, const char **av)
 Wrap a pubkey in ascii armor for display.
 
static char * base64Format (HE_t he, const char **av)
 Encode binary data in base64 for display.
 
static size_t xmlstrlen (const char *s)
 Return length of string represented with xml characters substituted.
 
static char * xmlstrcpy (char *t, const char *s)
 Copy source string to target, substituting for xml characters.
 
static char * strdup_locale_convert (const char *buffer, const char *tocode)
 
static char * cdataFormat (HE_t he, const char **av)
 Encode string for use in XML CDATA.
 
static char * iconvFormat (HE_t he, const char **av)
 Convert string encoding.
 
static char * xmlFormat (HE_t he, const char **av)
 Wrap tag data in simple header xml markup.
 
static size_t yamlstrlen (const char *s, int lvl)
 Return length of string represented with yaml indentation.
 
static char * yamlstrcpy (char *t, const char *s, int lvl)
 Copy source string to target, indenting for yaml.
 
static char * yamlFormat (HE_t he, const char **av)
 Wrap tag data in simple header yaml markup.
 
static char * pgpsigFormat (HE_t he, const char **av)
 Display signature fingerprint and time.
 
static char * depflagsFormat (HE_t he, const char **av)
 Format dependency flags for display.
 
static int instprefixTag (Header h, HE_t he)
 Retrieve install prefixes.
 
static int tv2uuidv1 (Header h, HE_t he, struct timeval *tv)
 Convert unix timeval to UUIDv1.
 
static int tag2uuidv1 (Header h, HE_t he)
 Retrieve time and convert to UUIDv1.
 
static int installtime_uuidTag (Header h, HE_t he)
 Retrieve install time and convert to UUIDv1.
 
static int buildtime_uuidTag (Header h, HE_t he)
 Retrieve build time and convert to UUIDv1.
 
static int origintime_uuidTag (Header h, HE_t he)
 Retrieve origin time and convert to UUIDv1.
 
static int installtid_uuidTag (Header h, HE_t he)
 Retrieve install tid and convert to UUIDv1.
 
static int removetid_uuidTag (Header h, HE_t he)
 Retrieve remove tid and convert to UUIDv1.
 
static int origintid_uuidTag (Header h, HE_t he)
 Retrieve origin tid and convert to UUIDv1.
 
static int str2uuid (HE_t he, const char **av, int version, char *val)
 Convert tag string to UUID.
 
static int tag2uuidv5 (Header h, HE_t he)
 Retrieve tag and convert to UUIDv5.
 
static int pkguuidTag (Header h, HE_t he)
 Retrieve pkgid and convert to UUIDv5.
 
static int sourcepkguuidTag (Header h, HE_t he)
 Retrieve sourcepkgid and convert to UUIDv5.
 
static int hdruuidTag (Header h, HE_t he)
 Retrieve hdrid and convert to UUIDv5.
 
static int triggercondsTag (Header h, HE_t he)
 Retrieve trigger info.
 
static int triggertypeTag (Header h, HE_t he)
 Retrieve trigger type info.
 
static int i18nTag (Header h, HE_t he)
 Retrieve i18n text.
 
static int localeTag (Header h, HE_t he)
 Retrieve text and convert to locale.
 
static int summaryTag (Header h, HE_t he)
 Retrieve summary text.
 
static int descriptionTag (Header h, HE_t he)
 Retrieve description text.
 
static int changelognameTag (Header h, HE_t he)
 
static int changelogtextTag (Header h, HE_t he)
 
static int groupTag (Header h, HE_t he)
 Retrieve group text.
 
static int dbinstanceTag (Header h, HE_t he)
 Retrieve db instance from header.
 
static int headerstartoffTag (Header h, HE_t he)
 Retrieve starting byte offset of header.
 
static int headerendoffTag (Header h, HE_t he)
 Retrieve ending byte offset of header.
 
static int pkgoriginTag (Header h, HE_t he)
 Retrieve package origin from header.
 
static int pkgbaseurlTag (Header h, HE_t he)
 Retrieve package baseurl from header.
 
static int pkgdigestTag (Header h, HE_t he)
 Retrieve package digest from header.
 
static int pkgmtimeTag (Header h, HE_t he)
 Retrieve *.rpm package st->st_mtime from header.
 
static int pkgsizeTag (Header h, HE_t he)
 Retrieve *.rpm package st->st_size from header.
 
static char * hGetNVRA (Header h)
 Return (malloc'd) header name-version-release.arch string.
 
static int nvraTag (Header h, HE_t he)
 Retrieve N-V-R.A compound string from header.
 
static int _fnTag (Header h, HE_t he)
 Retrieve file paths.
 
static int filepathsTag (Header h, HE_t he)
 
static int origpathsTag (Header h, HE_t he)
 
static int fsnamesTag (Header h, HE_t he)
 Retrieve mounted file system paths.
 
static int fssizesTag (Header h, HE_t he)
 Retrieve mounted file system space.
 
static int fileclassTag (Header h, HE_t he)
 Retrieve file classes.
 
static int filecontextsTag (Header h, HE_t he)
 Retrieve file contexts from header.
 
static int fscontextsTag (Header h, HE_t he)
 Retrieve file contexts from file system.
 
static int recontextsTag (Header h, HE_t he)
 Retrieve file contexts from policy RE's.
 
static int fileprovideTag (Header h, HE_t he)
 Retrieve file provides.
 
static int filerequireTag (Header h, HE_t he)
 Retrieve file requires.
 
static int missingokTag (Header h, HE_t he)
 Retrieve Requires(missingok): array for Suggests: or Enhances:.
 
static int PRCOSkip (rpmTag tag, rpmTagData N, rpmTagData EVR, rpmTagData F, uint32_t i)
 
static int PRCOxmlTag (Header h, HE_t he, rpmTag EVRtag, rpmTag Ftag)
 
static int PxmlTag (Header h, HE_t he)
 
static int RxmlTag (Header h, HE_t he)
 
static int CxmlTag (Header h, HE_t he)
 
static int OxmlTag (Header h, HE_t he)
 
static size_t sqlstrlen (const char *s)
 Return length of string represented with single quotes doubled.
 
static char * sqlstrcpy (char *t, const char *s)
 Copy source string to target, doubling single quotes.
 
static char * sqlescapeFormat (HE_t he, const char **av)
 Encode string for use in SQL statements.
 
static int PRCOsqlTag (Header h, HE_t he, rpmTag EVRtag, rpmTag Ftag)
 
static int PsqlTag (Header h, HE_t he)
 
static int RsqlTag (Header h, HE_t he)
 
static int CsqlTag (Header h, HE_t he)
 
static int OsqlTag (Header h, HE_t he)
 
static int FDGSkip (rpmTagData DN, rpmTagData BN, rpmTagData DI, uint32_t i)
 
static int FDGxmlTag (Header h, HE_t he, int lvl)
 
static int F1xmlTag (Header h, HE_t he)
 
static int F2xmlTag (Header h, HE_t he)
 
static int FDGsqlTag (Header h, HE_t he, int lvl)
 
static int F1sqlTag (Header h, HE_t he)
 
static int F2sqlTag (Header h, HE_t he)
 
static char * bncdataFormat (HE_t he, const char **av)
 Encode the basename of a string for use in XML CDATA.
 
static int keyCmp (const void *a, const void *b)
 
static uint32_t keyValue (KEY *keys, size_t nkeys, const char *name)
 
static char * digestFormat (HE_t he, const char **av)
 Return digest of tag data.
 
static char * statFormat (HE_t he, const char **av)
 Return file info.
 
static char * uuidFormat (HE_t he, const char **av)
 Reformat tag string as a UUID.
 
static char * rpnFormat (HE_t he, const char **av)
 Return arithmetic expressions of input.
 

Variables

static const char uuid_ns [] = "ns:URL"
 
static const char uuid_auth [] = "%{?_uuid_auth}%{!?_uuid_auth:http://rpm5.org}"
 
static const char uuid_path [] = "%{?_uuid_path}%{!?_uuid_path:/package}"
 
static int uuid_version = 5
 
static const char * language = "LANGUAGE"
 
static const char * _macro_i18ndomains = "%{?_i18ndomains}"
 
static KEY keyDigests []
 
static size_t nkeyDigests = sizeof(keyDigests) / sizeof(keyDigests[0])
 
static KEY keyStat []
 
static size_t nkeyStat = sizeof(keyStat) / sizeof(keyStat[0])
 
static KEY keyUuids []
 
static size_t nkeyUuids = sizeof(keyUuids) / sizeof(keyUuids[0])
 
struct headerSprintfExtension_s rpmHeaderFormats []
 Table of query format extensions.
 

Macro Definition Documentation

#define _RPMEVR_INTERNAL

Definition at line 12 of file formats.c.

Typedef Documentation

typedef struct key_s KEY

Enumeration Type Documentation

enum keyStat_e

Bit field enum for stat(2) keys.

Enumerator:
STAT_KEYS_NONE 
STAT_KEYS_DEV 

st_dev

STAT_KEYS_INO 

st_ino

STAT_KEYS_MODE 

st_mode

STAT_KEYS_NLINK 

st_nlink

STAT_KEYS_UID 

st_uid

STAT_KEYS_GID 

st_gid

STAT_KEYS_RDEV 

st_rdev

STAT_KEYS_SIZE 

st_size

STAT_KEYS_BLKSIZE 

st_blksize

STAT_KEYS_BLOCKS 

st_blocks

STAT_KEYS_ATIME 

st_atime

STAT_KEYS_CTIME 

st_ctime

STAT_KEYS_MTIME 

st_mtime

STAT_KEYS_SLINK 

symlink

STAT_KEYS_DIGEST 

digest

STAT_KEYS_UNAME 

user name

STAT_KEYS_GNAME 

group name

Definition at line 2808 of file formats.c.

enum keyUuids_e

Bit field enum for stat(2) keys.

Enumerator:
UUID_KEYS_NONE 
UUID_KEYS_V1 
UUID_KEYS_V3 
UUID_KEYS_V4 
UUID_KEYS_V5 

Definition at line 2885 of file formats.c.

Function Documentation

static int _fnTag ( Header  h,
HE_t  he 
)
static

Retrieve file paths.

Parameters
hheader
Return values
*hetag container
Returns
0 on success

Definition at line 1857 of file formats.c.

References rpmDataType_u::argv, _HE_s::c, _HE_s::freeData, _HE_s::p, RPM_STRING_ARRAY_TYPE, rpmfiBuildFNames(), _HE_s::t, and _HE_s::tag.

Referenced by filepathsTag(), and origpathsTag().

static char* armorFormat ( HE_t  he,
const char **  av 
)
static

Wrap a pubkey in ascii armor for display.

Todo:
Permit selectable display formats (i.e. binary).
Parameters
hetag container
avparameter array (or NULL)
Returns
formatted string

Definition at line 177 of file formats.c.

References _, _free(), _HE_s::c, _HE_s::ix, _HE_s::p, PGPARMOR_PUBKEY, PGPARMOR_SIGNATURE, pgpArmorWrap(), rpmDataType_u::ptr, RPM_ASN1_TYPE, RPM_BIN_TYPE, RPM_CHAR_TYPE, RPM_I18NSTRING_TYPE, RPM_INT16_TYPE, RPM_INT32_TYPE, RPM_INT64_TYPE, RPM_INT8_TYPE, RPM_NULL_TYPE, RPM_OPENPGP_TYPE, RPM_STRING_ARRAY_TYPE, RPM_STRING_TYPE, rpmDataType_u::str, _HE_s::t, rpmDataType_u::ui8p, and xstrdup().

static char* base64Format ( HE_t  he,
const char **  av 
)
static

Encode binary data in base64 for display.

Todo:
Permit selectable display formats (i.e. binary).
Parameters
hetag container
avparameter array (or NULL)
Returns
formatted string

Definition at line 233 of file formats.c.

References _, _free(), _HE_s::c, _HE_s::ix, _HE_s::p, rpmDataType_u::ptr, RPM_ASN1_TYPE, RPM_BIN_TYPE, RPM_OPENPGP_TYPE, stpcpy(), _HE_s::t, xcalloc(), and xstrdup().

Referenced by xmlFormat(), and yamlFormat().

static char* bncdataFormat ( HE_t  he,
const char **  av 
)
static

Encode the basename of a string for use in XML CDATA.

Parameters
hetag container
avparameter array (or NULL)
Returns
formatted string

Definition at line 2740 of file formats.c.

References _, _free(), _HE_s::p, RPM_STRING_TYPE, rpmDataType_u::str, strdup_locale_convert(), _HE_s::t, xcalloc(), xmlstrcpy(), xmlstrlen(), and xstrdup().

static int buildtime_uuidTag ( Header  h,
HE_t  he 
)
static

Retrieve build time and convert to UUIDv1.

Parameters
hheader
Return values
*hetag container
Returns
0 on success

Definition at line 1051 of file formats.c.

References RPMTAG_BUILDTIME, _HE_s::tag, and tag2uuidv1().

static char* cdataFormat ( HE_t  he,
const char **  av 
)
static

Encode string for use in XML CDATA.

Parameters
hetag container
avparameter array (or NULL)
Returns
formatted string

Definition at line 425 of file formats.c.

References _, _free(), _HE_s::ix, _HE_s::p, RPM_STRING_TYPE, rpmDataType_u::str, strdup_locale_convert(), _HE_s::t, xcalloc(), xmlstrcpy(), xmlstrlen(), and xstrdup().

static int changelognameTag ( Header  h,
HE_t  he 
)
static

Definition at line 1567 of file formats.c.

References localeTag(), RPMTAG_CHANGELOGNAME, and _HE_s::tag.

static int changelogtextTag ( Header  h,
HE_t  he 
)
static

Definition at line 1574 of file formats.c.

References localeTag(), RPMTAG_CHANGELOGTEXT, and _HE_s::tag.

static int CsqlTag ( Header  h,
HE_t  he 
)
static
static int CxmlTag ( Header  h,
HE_t  he 
)
static
static int dbinstanceTag ( Header  h,
HE_t  he 
)
static

Retrieve db instance from header.

Parameters
hheader
Return values
*hetag container
Returns
0 on success

Definition at line 1602 of file formats.c.

References _HE_s::c, _HE_s::freeData, headerGetInstance(), rpmDataType_u::i32p, _HE_s::p, RPM_INT32_TYPE, RPMTAG_DBINSTANCE, _HE_s::t, _HE_s::tag, and xmalloc().

static char* depflagsFormat ( HE_t  he,
const char **  av 
)
static

Format dependency flags for display.

Parameters
hetag container
avparameter array (or NULL)
Returns
formatted string

Definition at line 895 of file formats.c.

References _, alloca(), rpmDataType_u::i64p, _HE_s::ix, _HE_s::p, rpmDataType_u::ptr, RPM_INT64_TYPE, RPMSENSE_EQUAL, RPMSENSE_GREATER, RPMSENSE_LESS, RPMSENSE_SENSEMASK, stpcpy(), _HE_s::t, and xstrdup().

Referenced by triggercondsTag().

static int descriptionTag ( Header  h,
HE_t  he 
)
static

Retrieve description text.

Parameters
hheader
Return values
*hetag container
Returns
0 on success

Definition at line 1559 of file formats.c.

References i18nTag(), RPMTAG_DESCRIPTION, and _HE_s::tag.

static char* digestFormat ( HE_t  he,
const char **  av 
)
static

Return digest of tag data.

Parameters
hetag container
avparameter list (NULL uses md5)
Returns
formatted string

Definition at line 2947 of file formats.c.

References _, _HE_s::c, _HE_s::ix, keyValue(), nkeyDigests, _HE_s::p, PGPHASHALGO_SHA1, rpmDataType_u::ptr, RPM_BIN_TYPE, RPM_STRING_TYPE, RPM_UINT64_TYPE, rpmDigestFinal(), rpmDigestInit(), rpmDigestUpdate(), rpmDataType_u::str, _HE_s::t, rpmDataType_u::ui64p, and xstrdup().

static int F1sqlTag ( Header  h,
HE_t  he 
)
static

Definition at line 2720 of file formats.c.

References FDGsqlTag(), RPMTAG_BASENAMES, and _HE_s::tag.

static int F1xmlTag ( Header  h,
HE_t  he 
)
static

Definition at line 2587 of file formats.c.

References FDGxmlTag(), RPMTAG_BASENAMES, and _HE_s::tag.

static int F2sqlTag ( Header  h,
HE_t  he 
)
static

Definition at line 2727 of file formats.c.

References FDGsqlTag(), RPMTAG_BASENAMES, and _HE_s::tag.

static int F2xmlTag ( Header  h,
HE_t  he 
)
static

Definition at line 2594 of file formats.c.

References FDGxmlTag(), RPMTAG_BASENAMES, and _HE_s::tag.

static int FDGSkip ( rpmTagData  DN,
rpmTagData  BN,
rpmTagData  DI,
uint32_t  i 
)
static

Definition at line 2457 of file formats.c.

References rpmDataType_u::argv, and rpmDataType_u::ui32p.

Referenced by FDGsqlTag(), and FDGxmlTag().

static int FDGsqlTag ( Header  h,
HE_t  he,
int  lvl 
)
static
static int FDGxmlTag ( Header  h,
HE_t  he,
int  lvl 
)
static
static char* fflagsFormat ( HE_t  he,
const char **  av 
)
static

Format file flags for display.

Parameters
hetag container
avparameter array (or NULL)
Returns
formatted string

Definition at line 135 of file formats.c.

References _, rpmDataType_u::i64p, _HE_s::ix, _HE_s::p, rpmDataType_u::ptr, RPM_INT64_TYPE, RPMFILE_CONFIG, RPMFILE_DOC, RPMFILE_GHOST, RPMFILE_LICENSE, RPMFILE_MISSINGOK, RPMFILE_NOREPLACE, RPMFILE_README, RPMFILE_SPECFILE, _HE_s::t, and xstrdup().

static int fileclassTag ( Header  h,
HE_t  he 
)
static

Retrieve file classes.

Parameters
hheader
Return values
*hetag container
Returns
0 on success

Definition at line 1955 of file formats.c.

References rpmDataType_u::argv, _HE_s::c, _HE_s::freeData, _HE_s::p, RPM_STRING_ARRAY_TYPE, rpmfiBuildFClasses(), and _HE_s::t.

static int filecontextsTag ( Header  h,
HE_t  he 
)
static

Retrieve file contexts from header.

Parameters
hheader
Return values
*hetag container
Returns
0 on success

Definition at line 1972 of file formats.c.

References rpmDataType_u::argv, _HE_s::c, _HE_s::freeData, _HE_s::p, RPM_STRING_ARRAY_TYPE, rpmfiBuildFContexts(), and _HE_s::t.

static int filepathsTag ( Header  h,
HE_t  he 
)
static

Definition at line 1866 of file formats.c.

References _fnTag(), RPMTAG_BASENAMES, and _HE_s::tag.

static int fileprovideTag ( Header  h,
HE_t  he 
)
static

Retrieve file provides.

Parameters
hheader
Return values
*hetag container
Returns
0 on success

Definition at line 2023 of file formats.c.

References rpmDataType_u::argv, _HE_s::c, _HE_s::freeData, _HE_s::p, RPM_STRING_ARRAY_TYPE, rpmfiBuildFDeps(), RPMTAG_PROVIDENAME, and _HE_s::t.

static int filerequireTag ( Header  h,
HE_t  he 
)
static

Retrieve file requires.

Parameters
hheader
Return values
*hetag container
Returns
0 on success

Definition at line 2040 of file formats.c.

References rpmDataType_u::argv, _HE_s::c, _HE_s::freeData, _HE_s::p, RPM_STRING_ARRAY_TYPE, rpmfiBuildFDeps(), RPMTAG_REQUIRENAME, and _HE_s::t.

static int fscontextsTag ( Header  h,
HE_t  he 
)
static

Retrieve file contexts from file system.

Parameters
hheader
Return values
*hetag container
Returns
0 on success

Definition at line 1989 of file formats.c.

References rpmDataType_u::argv, _HE_s::c, _HE_s::freeData, _HE_s::p, RPM_STRING_ARRAY_TYPE, rpmfiBuildFSContexts(), and _HE_s::t.

static int fsnamesTag ( Header  h,
HE_t  he 
)
static

Retrieve mounted file system paths.

Parameters
hheader
Return values
*hetag container
Returns
0 on success

Definition at line 1886 of file formats.c.

References rpmDataType_u::argv, _HE_s::c, _HE_s::freeData, _HE_s::p, RPM_STRING_ARRAY_TYPE, rpmGetFilesystemList(), and _HE_s::t.

static int fssizesTag ( Header  h,
HE_t  he 
)
static

Retrieve mounted file system space.

Parameters
hheader
Return values
*hetag container
Returns
0 on success

Definition at line 1908 of file formats.c.

References _free(), alloca(), _HE_s::c, _HE_s::freeData, headerGetEntry(), _HE_s::p, rpmDataType_u::ptr, RPM_INT64_TYPE, rpmfiBuildFNames(), rpmGetFilesystemList(), rpmGetFilesystemUsage(), RPMTAG_BASENAMES, RPMTAG_FILESIZES, _HE_s::t, _HE_s::tag, rpmDataType_u::ui32p, rpmDataType_u::ui64p, and xcalloc().

static int groupTag ( Header  h,
HE_t  he 
)
static

Retrieve group text.

Parameters
hheader
Return values
*hetag container
Returns
0 on success

Definition at line 1587 of file formats.c.

References i18nTag(), RPMTAG_GROUP, and _HE_s::tag.

static int hdruuidTag ( Header  h,
HE_t  he 
)
static

Retrieve hdrid and convert to UUIDv5.

Parameters
hheader
Return values
*hetag container
Returns
0 on success

Definition at line 1241 of file formats.c.

References RPMTAG_HDRID, _HE_s::tag, and tag2uuidv5().

static int headerendoffTag ( Header  h,
HE_t  he 
)
static

Retrieve ending byte offset of header.

Parameters
hheader
Return values
*hetag container
Returns
0 on success

Definition at line 1648 of file formats.c.

References _HE_s::c, _HE_s::freeData, headerGetEndOff(), _HE_s::p, RPM_INT64_TYPE, RPMTAG_HEADERENDOFF, _HE_s::t, _HE_s::tag, rpmDataType_u::ui64p, and xmalloc().

static int headerstartoffTag ( Header  h,
HE_t  he 
)
static

Retrieve starting byte offset of header.

Parameters
hheader
Return values
*hetag container
Returns
0 on success

Definition at line 1625 of file formats.c.

References _HE_s::c, _HE_s::freeData, headerGetStartOff(), _HE_s::p, RPM_INT64_TYPE, RPMTAG_HEADERSTARTOFF, _HE_s::t, _HE_s::tag, rpmDataType_u::ui64p, and xmalloc().

static char* hGetNVRA ( Header  h)
static

Return (malloc'd) header name-version-release.arch string.

Parameters
hheader
Returns
name-version-release.arch string

Definition at line 1805 of file formats.c.

References headerNEVRA(), stpcpy(), V, and xmalloc().

Referenced by nvraTag().

static int i18nTag ( Header  h,
HE_t  he 
)
static

Retrieve i18n text.

Parameters
hheader
Return values
*hetag container
Returns
0 on success

Definition at line 1393 of file formats.c.

References _free(), _macro_i18ndomains, alloca(), _HE_s::c, dgettext, _HE_s::freeData, getenv(), headerGetEntry(), language, _HE_s::p, rpmDataType_u::ptr, RPM_STRING_TYPE, rpmExpand(), RPMTAG_NAME, setenv(), rpmDataType_u::str, _HE_s::t, _HE_s::tag, tagName(), unsetenv(), xstrdup(), and xstrtolocale().

Referenced by descriptionTag(), groupTag(), and summaryTag().

static char* iconvFormat ( HE_t  he,
const char **  av 
)
static

Convert string encoding.

Parameters
hetag container
avparameter list (NULL assumes UTF-8)
Returns
formatted string

Definition at line 456 of file formats.c.

References _, _HE_s::ix, _HE_s::p, RPM_STRING_TYPE, rpmDataType_u::str, strdup_locale_convert(), _HE_s::t, and xstrdup().

static int installtid_uuidTag ( Header  h,
HE_t  he 
)
static

Retrieve install tid and convert to UUIDv1.

Parameters
hheader
Return values
*hetag container
Returns
0 on success

Definition at line 1077 of file formats.c.

References RPMTAG_INSTALLTID, _HE_s::tag, and tag2uuidv1().

static int installtime_uuidTag ( Header  h,
HE_t  he 
)
static

Retrieve install time and convert to UUIDv1.

Parameters
hheader
Return values
*hetag container
Returns
0 on success

Definition at line 1038 of file formats.c.

References RPMTAG_INSTALLTIME, _HE_s::tag, and tag2uuidv1().

static int instprefixTag ( Header  h,
HE_t  he 
)
static

Retrieve install prefixes.

Parameters
hheader
Return values
*hetag container
Returns
0 on success

Definition at line 946 of file formats.c.

References rpmDataType_u::argv, _HE_s::c, _HE_s::freeData, headerFreeData(), headerGetEntry(), _HE_s::p, rpmDataType_u::ptr, RPM_STRING_TYPE, RPMTAG_INSTALLPREFIX, RPMTAG_INSTPREFIXES, rpmDataType_u::str, _HE_s::t, _HE_s::tag, and xstrdup().

static int keyCmp ( const void *  a,
const void *  b 
)
static

Definition at line 2918 of file formats.c.

References name.

Referenced by keyValue().

static uint32_t keyValue ( KEY keys,
size_t  nkeys,
const char *  name 
)
static

Definition at line 2927 of file formats.c.

References keyCmp(), key_s::name, and key_s::value.

Referenced by digestFormat(), statFormat(), and uuidFormat().

static int localeTag ( Header  h,
HE_t  he 
)
static
static int missingokTag ( Header  h,
HE_t  he 
)
static

Retrieve Requires(missingok): array for Suggests: or Enhances:.

Parameters
hheader
Return values
*hetag container
Returns
0 on success

Definition at line 2057 of file formats.c.

References rpmDataType_u::argv, argvAdd(), argvFree(), _HE_s::c, _HE_s::freeData, _HE_s::p, RPM_STRING_ARRAY_TYPE, rpmdsDNEVR(), rpmdsFlags(), rpmdsFree(), rpmdsInit(), rpmdsNew(), rpmdsNext(), RPMTAG_REQUIRENAME, stpcpy(), _HE_s::t, and xcalloc().

static int nvraTag ( Header  h,
HE_t  he 
)
static

Retrieve N-V-R.A compound string from header.

Parameters
hheader
Return values
*hetag container
Returns
0 on success

Definition at line 1837 of file formats.c.

References _HE_s::c, _HE_s::freeData, hGetNVRA(), _HE_s::p, RPM_STRING_TYPE, rpmDataType_u::str, and _HE_s::t.

static int origintid_uuidTag ( Header  h,
HE_t  he 
)
static

Retrieve origin tid and convert to UUIDv1.

Parameters
hheader
Return values
*hetag container
Returns
0 on success

Definition at line 1103 of file formats.c.

References RPMTAG_ORIGINTID, _HE_s::tag, and tag2uuidv1().

static int origintime_uuidTag ( Header  h,
HE_t  he 
)
static

Retrieve origin time and convert to UUIDv1.

Parameters
hheader
Return values
*hetag container
Returns
0 on success

Definition at line 1064 of file formats.c.

References RPMTAG_ORIGINTIME, _HE_s::tag, and tag2uuidv1().

static int origpathsTag ( Header  h,
HE_t  he 
)
static

Definition at line 1873 of file formats.c.

References _fnTag(), RPMTAG_ORIGBASENAMES, and _HE_s::tag.

static int OsqlTag ( Header  h,
HE_t  he 
)
static
static int OxmlTag ( Header  h,
HE_t  he 
)
static
static char* permsFormat ( HE_t  he,
const char **  av 
)
static

Format file permissions for display.

Parameters
hetag container
avparameter array (or NULL)
Returns
formatted string

Definition at line 113 of file formats.c.

References _, rpmDataType_u::i64p, _HE_s::ix, _HE_s::p, RPM_INT64_TYPE, rpmPermsString(), _HE_s::t, and xstrdup().

static char* pgpsigFormat ( HE_t  he,
const char **  av 
)
static
static int pkgbaseurlTag ( Header  h,
HE_t  he 
)
static

Retrieve package baseurl from header.

Parameters
hheader
Return values
*hetag container
Returns
0 on success

Definition at line 1699 of file formats.c.

References _HE_s::c, _HE_s::freeData, headerGetBaseURL(), headerGetEntry(), _HE_s::p, RPM_STRING_TYPE, RPMTAG_PACKAGEBASEURL, rpmDataType_u::str, _HE_s::t, _HE_s::tag, and xstrdup().

static int pkgdigestTag ( Header  h,
HE_t  he 
)
static

Retrieve package digest from header.

Parameters
hheader
Return values
*hetag container
Returns
0 on success

Definition at line 1729 of file formats.c.

References _HE_s::c, _HE_s::freeData, headerGetDigest(), _HE_s::p, RPM_STRING_TYPE, RPMTAG_PACKAGEDIGEST, rpmDataType_u::str, _HE_s::t, _HE_s::tag, and xstrdup().

static int pkgmtimeTag ( Header  h,
HE_t  he 
)
static

Retrieve *.rpm package st->st_mtime from header.

Parameters
hheader
Return values
*hetag container
Returns
0 on success

Definition at line 1758 of file formats.c.

References _HE_s::c, _HE_s::freeData, headerGetStatbuf(), _HE_s::p, RPM_UINT64_TYPE, RPMTAG_PACKAGETIME, _HE_s::t, _HE_s::tag, rpmDataType_u::ui64p, and xmalloc().

static int pkgoriginTag ( Header  h,
HE_t  he 
)
static

Retrieve package origin from header.

Parameters
hheader
Return values
*hetag container
Returns
0 on success

Definition at line 1671 of file formats.c.

References _HE_s::c, _HE_s::freeData, headerGetEntry(), headerGetOrigin(), _HE_s::p, RPM_STRING_TYPE, RPMTAG_PACKAGEORIGIN, rpmDataType_u::str, _HE_s::t, _HE_s::tag, and xstrdup().

static int pkgsizeTag ( Header  h,
HE_t  he 
)
static

Retrieve *.rpm package st->st_size from header.

Parameters
hheader
Return values
*hetag container
Returns
0 on success

Definition at line 1782 of file formats.c.

References _HE_s::c, _HE_s::freeData, headerGetStatbuf(), _HE_s::p, RPM_UINT64_TYPE, RPMTAG_PACKAGESIZE, _HE_s::t, _HE_s::tag, rpmDataType_u::ui64p, and xmalloc().

static int pkguuidTag ( Header  h,
HE_t  he 
)
static

Retrieve pkgid and convert to UUIDv5.

Parameters
hheader
Return values
*hetag container
Returns
0 on success

Definition at line 1215 of file formats.c.

References RPMTAG_PKGID, _HE_s::tag, and tag2uuidv5().

static int PRCOSkip ( rpmTag  tag,
rpmTagData  N,
rpmTagData  EVR,
rpmTagData  F,
uint32_t  i 
)
static

Definition at line 2108 of file formats.c.

References rpmDataType_u::argv, RPMTAG_REQUIRENAME, and rpmDataType_u::ui32p.

Referenced by PRCOsqlTag(), and PRCOxmlTag().

static int PRCOsqlTag ( Header  h,
HE_t  he,
rpmTag  EVRtag,
rpmTag  Ftag 
)
static
static int PRCOxmlTag ( Header  h,
HE_t  he,
rpmTag  EVRtag,
rpmTag  Ftag 
)
static
static int PsqlTag ( Header  h,
HE_t  he 
)
static
static int PxmlTag ( Header  h,
HE_t  he 
)
static
static int recontextsTag ( Header  h,
HE_t  he 
)
static

Retrieve file contexts from policy RE's.

Parameters
hheader
Return values
*hetag container
Returns
0 on success

Definition at line 2006 of file formats.c.

References rpmDataType_u::argv, _HE_s::c, _HE_s::freeData, _HE_s::p, RPM_STRING_ARRAY_TYPE, rpmfiBuildREContexts(), and _HE_s::t.

static int removetid_uuidTag ( Header  h,
HE_t  he 
)
static

Retrieve remove tid and convert to UUIDv1.

Parameters
hheader
Return values
*hetag container
Returns
0 on success

Definition at line 1090 of file formats.c.

References RPMTAG_REMOVETID, _HE_s::tag, and tag2uuidv1().

static char* rpmPermsString ( int  mode)
static

Definition at line 28 of file formats.c.

References S_ISLNK, S_ISSOCK, and xstrdup().

Referenced by permsFormat(), and printFileInfo().

static char* rpnFormat ( HE_t  he,
const char **  av 
)
static

Return arithmetic expressions of input.

Parameters
hetag container
avparameter list (NULL uses sha1)
Returns
formatted string

Definition at line 3214 of file formats.c.

References _, alloca(), argvCount(), _HE_s::c, intFormat(), _HE_s::p, RPM_STRING_TYPE, RPM_UINT64_TYPE, rpmDataType_u::str, _HE_s::t, _HE_s::tag, rpmDataType_u::ui64p, xisdigit(), and xstrdup().

static int RsqlTag ( Header  h,
HE_t  he 
)
static
static int RxmlTag ( Header  h,
HE_t  he 
)
static
static int sourcepkguuidTag ( Header  h,
HE_t  he 
)
static

Retrieve sourcepkgid and convert to UUIDv5.

Parameters
hheader
Return values
*hetag container
Returns
0 on success

Definition at line 1228 of file formats.c.

References RPMTAG_SOURCEPKGID, _HE_s::tag, and tag2uuidv5().

static char* sqlescapeFormat ( HE_t  he,
const char **  av 
)
static

Encode string for use in SQL statements.

Parameters
hetag container
avparameter array (or NULL)
Returns
formatted string

Definition at line 2307 of file formats.c.

References _, _free(), _HE_s::ix, _HE_s::p, RPM_STRING_TYPE, sqlstrcpy(), sqlstrlen(), rpmDataType_u::str, strdup_locale_convert(), _HE_s::t, xcalloc(), and xstrdup().

static char* sqlstrcpy ( char *  t,
const char *  s 
)
static

Copy source string to target, doubling single quotes.

Parameters
ttarget sql string
ssource string
Returns
target sql string

Definition at line 2285 of file formats.c.

Referenced by sqlescapeFormat().

static size_t sqlstrlen ( const char *  s)
static

Return length of string represented with single quotes doubled.

Parameters
sstring
Returns
length of sql string

Definition at line 2263 of file formats.c.

Referenced by sqlescapeFormat().

static char* statFormat ( HE_t  he,
const char **  av 
)
static
static int str2uuid ( HE_t  he,
const char **  av,
int  version,
char *  val 
)
static

Convert tag string to UUID.

Parameters
hetag container
avparameter list (or NULL) version UUID version
Return values
valUUID string
Returns
0 on success

Definition at line 1127 of file formats.c.

References _free(), _HE_s::c, _HE_s::freeData, headerFreeData(), _HE_s::p, rpmDataType_u::ptr, RPM_BIN_TYPE, RPM_STRING_TYPE, rpmGetPath(), rpmDataType_u::str, _HE_s::t, _HE_s::tag, tagName(), rpmDataType_u::ui8p, uuid_auth, uuid_ns, uuid_path, uuid_version, and xcalloc().

Referenced by tag2uuidv5(), and uuidFormat().

static char* strdup_locale_convert ( const char *  buffer,
const char *  tocode 
)
static

Definition at line 329 of file formats.c.

References errno, and xstrdup().

Referenced by bncdataFormat(), cdataFormat(), iconvFormat(), and sqlescapeFormat().

static int summaryTag ( Header  h,
HE_t  he 
)
static

Retrieve summary text.

Parameters
hheader
Return values
*hetag container
Returns
0 on success

Definition at line 1545 of file formats.c.

References i18nTag(), RPMTAG_SUMMARY, and _HE_s::tag.

static int tag2uuidv1 ( Header  h,
HE_t  he 
)
static

Retrieve time and convert to UUIDv1.

Parameters
hheader
Return values
*hetag container
Returns
0 on success

Definition at line 1019 of file formats.c.

References _HE_s::c, headerFreeData(), headerGetEntry(), _HE_s::p, rpmDataType_u::ptr, _HE_s::t, _HE_s::tag, tv2uuidv1(), and rpmDataType_u::ui32p.

Referenced by buildtime_uuidTag(), installtid_uuidTag(), installtime_uuidTag(), origintid_uuidTag(), origintime_uuidTag(), and removetid_uuidTag().

static int tag2uuidv5 ( Header  h,
HE_t  he 
)
static

Retrieve tag and convert to UUIDv5.

Parameters
hheader
Return values
*hetag container
Returns
0 on success

Definition at line 1176 of file formats.c.

References _HE_s::c, _HE_s::freeData, headerFreeData(), headerGetEntry(), _HE_s::p, rpmDataType_u::ptr, RPM_BIN_TYPE, RPM_STRING_TYPE, str2uuid(), _HE_s::t, _HE_s::tag, rpmDataType_u::ui8p, and xmalloc().

Referenced by hdruuidTag(), pkguuidTag(), and sourcepkguuidTag().

static int triggercondsTag ( Header  h,
HE_t  he 
)
static
static char* triggertypeFormat ( HE_t  he,
const char **  av 
)
static

Identify type of trigger.

Parameters
hetag container
avparameter array (or NULL)
Returns
formatted string

Definition at line 82 of file formats.c.

References _, rpmDataType_u::i64p, _HE_s::ix, _HE_s::p, rpmDataType_u::ptr, RPM_INT64_TYPE, _HE_s::t, and xstrdup().

static int triggertypeTag ( Header  h,
HE_t  he 
)
static

Retrieve trigger type info.

Parameters
hheader
Return values
*hetag container
Returns
0 on success

Definition at line 1328 of file formats.c.

References rpmDataType_u::argv, _HE_s::c, _HE_s::freeData, headerFreeData(), headerGetEntry(), rpmDataType_u::i32p, _HE_s::p, rpmDataType_u::ptr, RPM_STRING_ARRAY_TYPE, RPMTAG_TRIGGERFLAGS, RPMTAG_TRIGGERINDEX, RPMTAG_TRIGGERSCRIPTS, _HE_s::t, xmalloc(), and xstrdup().

static int tv2uuidv1 ( Header  h,
HE_t  he,
struct timeval *  tv 
)
static

Convert unix timeval to UUIDv1.

Parameters
hheader
Return values
*hetag container
Parameters
tvunix timeval
Returns
0 on success

Definition at line 976 of file formats.c.

References _free(), _HE_s::c, _HE_s::freeData, _HE_s::p, rpmDataType_u::ptr, RPM_BIN_TYPE, _HE_s::t, rpmDataType_u::ui8p, and xcalloc().

Referenced by tag2uuidv1().

static char* uuidFormat ( HE_t  he,
const char **  av 
)
static

Reformat tag string as a UUID.

Parameters
hetag container
avparameter list (NULL uses UUIDv5)
Returns
formatted string

Definition at line 3152 of file formats.c.

References _, _free(), alloca(), _HE_s::c, _HE_s::ix, keyValue(), _HE_s::p, rpmDataType_u::ptr, RPM_STRING_TYPE, rpmDataType_u::str, str2uuid(), _HE_s::t, _HE_s::tag, UUID_KEYS_V1, UUID_KEYS_V3, UUID_KEYS_V4, UUID_KEYS_V5, xmalloc(), and xstrdup().

static char* xmlFormat ( HE_t  he,
const char **  av 
)
static
static char* xmlstrcpy ( char *  t,
const char *  s 
)
static

Copy source string to target, substituting for xml characters.

Parameters
ttarget xml string
ssource string
Returns
target xml string

Definition at line 310 of file formats.c.

References stpcpy().

Referenced by bncdataFormat(), cdataFormat(), FDGxmlTag(), PRCOxmlTag(), and xmlFormat().

static size_t xmlstrlen ( const char *  s)
static

Return length of string represented with xml characters substituted.

Parameters
sstring
Returns
length of xml string

Definition at line 286 of file formats.c.

Referenced by bncdataFormat(), cdataFormat(), FDGxmlTag(), PRCOxmlTag(), and xmlFormat().

static char* yamlFormat ( HE_t  he,
const char **  av 
)
static
static char* yamlstrcpy ( char *  t,
const char *  s,
int  lvl 
)
static

Copy source string to target, indenting for yaml.

Parameters
ttarget yaml string
ssource string
lvlindentation level
Returns
target yaml string

Definition at line 613 of file formats.c.

References indent.

Referenced by yamlFormat().

static size_t yamlstrlen ( const char *  s,
int  lvl 
)
static

Return length of string represented with yaml indentation.

Parameters
sstring
lvlindentation level
Returns
length of yaml string

Definition at line 586 of file formats.c.

References indent.

Referenced by yamlFormat().

Variable Documentation

const char* _macro_i18ndomains = "%{?_i18ndomains}"
static

Definition at line 1385 of file formats.c.

Referenced by i18nTag().

KEY keyDigests[]
static
Initial value:
= {
{ "adler32", PGPHASHALGO_ADLER32 },
{ "crc32", PGPHASHALGO_CRC32 },
{ "crc64", PGPHASHALGO_CRC64 },
{ "haval160", PGPHASHALGO_HAVAL_5_160 },
{ "jlu32", PGPHASHALGO_JLU32 },
{ "md2", PGPHASHALGO_MD2 },
{ "md4", PGPHASHALGO_MD4 },
{ "md5", PGPHASHALGO_MD5 },
{ "rmd128", PGPHASHALGO_RIPEMD128 },
{ "rmd160", PGPHASHALGO_RIPEMD160 },
{ "rmd256", PGPHASHALGO_RIPEMD256 },
{ "rmd320", PGPHASHALGO_RIPEMD320 },
{ "salsa10", PGPHASHALGO_SALSA10 },
{ "salsa20", PGPHASHALGO_SALSA20 },
{ "sha1", PGPHASHALGO_SHA1 },
{ "sha224", PGPHASHALGO_SHA224 },
{ "sha256", PGPHASHALGO_SHA256 },
{ "sha384", PGPHASHALGO_SHA384 },
{ "sha512", PGPHASHALGO_SHA512 },
{ "tiger192", PGPHASHALGO_TIGER192 },
}

Definition at line 2780 of file formats.c.

KEY keyStat[]
static

Definition at line 2836 of file formats.c.

KEY keyUuids[]
static
Initial value:
= {
{ "v1", UUID_KEYS_V1 },
{ "v3", UUID_KEYS_V3 },
{ "v4", UUID_KEYS_V4 },
{ "v5", UUID_KEYS_V5 },
}

Definition at line 2900 of file formats.c.

const char* language = "LANGUAGE"
static

Definition at line 1382 of file formats.c.

Referenced by i18nTag().

size_t nkeyDigests = sizeof(keyDigests) / sizeof(keyDigests[0])
static

Definition at line 2803 of file formats.c.

Referenced by digestFormat(), and statFormat().

size_t nkeyStat = sizeof(keyStat) / sizeof(keyStat[0])
static

Definition at line 2880 of file formats.c.

size_t nkeyUuids = sizeof(keyUuids) / sizeof(keyUuids[0])
static

Definition at line 2913 of file formats.c.

struct headerSprintfExtension_s rpmHeaderFormats[]
const char uuid_auth[] = "%{?_uuid_auth}%{!?_uuid_auth:http://rpm5.org}"
static

Definition at line 1113 of file formats.c.

Referenced by str2uuid().

const char uuid_ns[] = "ns:URL"
static

Definition at line 1111 of file formats.c.

Referenced by str2uuid().

const char uuid_path[] = "%{?_uuid_path}%{!?_uuid_path:/package}"
static

Definition at line 1115 of file formats.c.

Referenced by str2uuid().

int uuid_version = 5
static

Definition at line 1117 of file formats.c.

Referenced by str2uuid().