# RPM Header Reading Functions

## Introduction

This module allows you to read the meta information stored in the headers of a » RedHat Package Manager (» RPM) file.

## Requirements

The RPMReader extension requires PHP 5.

## Installation

This » PECL extension is not bundled with PHP.

Information for installing this PECL extension may be found in the manual chapter titled Installation of PECL extensions. Additional information such as new releases, downloads, source files, maintainer information, and a CHANGELOG, can be located here: » http://pecl.php.net/package/rpmreader.

## Resource Types

There is one resource type used by the RPMReader module. The resource is a file pointer which identifies the RPM file with which to work.

## Predefined Constants

The constants below are defined by this extension, and will only be available when the extension has either been compiled into PHP or dynamically loaded at runtime.

The following list of constants are used to obtain information using the rpm_get_tag() function. These constants represent the tag number to be retrieved from the RPM file's header section. Descriptions are given below as to what data the tag number constants reference.

`RPMREADER_MINIMUM` (integer)
  The minimum valid value of any RPM tag number.
`RPMREADER_NAME` (integer)
  The name of the RPM package.
`RPMREADER_VERSION` (integer)
  The version of the RPM package.
`RPMREADER_RELEASE` (integer)
  The release of the RPM package.
`RPMREADER_EPOCH` (integer)
`RPMREADER_SERIAL` (integer)
`RPMREADER_SUMMARY` (integer)
  The summary text of the RPM package.
`RPMREADER_DESCRIPTION` (integer)
  The full description text of the RPM package.
`RPMREADER_BUILDTIME` (integer)
  The date and time when the RPM package was built.
`RPMREADER_BUILDHOST` (integer)
  The name of the host on which the RPM package was built.
`RPMREADER_INSTALLTIME` (integer)
`RPMREADER_SIZE` (integer)
  The size of the RPM package.
`RPMREADER_DISTRIBUTION` (integer)
`RPMREADER_VENDOR` (integer)
`RPMREADER_GIF` (integer)
`RPMREADER_XPM` (integer)
`RPMREADER_LICENSE` (integer)
`RPMREADER_COPYRIGHT` (integer)
`RPMREADER_PACKAGER` (integer)
`RPMREADER_GROUP` (integer)
`RPMREADER_SOURCE` (integer)
`RPMREADER_PATCH` (integer)
`RPMREADER_URL` (integer)
`RPMREADER_OS` (integer)
`RPMREADER_ARCH` (integer)
`RPMREADER_PREIN` (integer)
`RPMREADER_POSTIN` (integer)
`RPMREADER_PREUN` (integer)
`RPMREADER_POSTUN` (integer)
`RPMREADER_OLDFILENAMES` (integer)
  The list of files in an RPM package (deprecated format). The correct way is now to use a combination of 3 tags (RPMREADER_BASENAMES, RPMREADER_DIRINDEXES, RPMREADER_DIRNAMES) in what RPM now calls "CompressedFileNames". This tag is still used in older RPM files that did not use the "CompressedFileNames" method and is maintained for backward compatibility.
`RPMREADER_FILESIZES` (integer)
`RPMREADER_FILESTATES` (integer)
`RPMREADER_FILEMODES` (integer)
`RPMREADER_FILERDEVS` (integer)
`RPMREADER_FILEMTIMES` (integer)
`RPMREADER_FILEMD5S` (integer)
`RPMREADER_FILELINKTOS` (integer)
`RPMREADER_FILEFLAGS` (integer)
`RPMREADER_FILEUSERNAME` (integer)
`RPMREADER_FILEGROUPNAME` (integer)
`RPMREADER_ICON` (integer)
`RPMREADER_SOURCERPM` (integer)
`RPMREADER_FILEVERIFYFLAGS` (integer)
`RPMREADER_ARCHIVESIZE` (integer)
`RPMREADER_PROVIDENAME` (integer)
`RPMREADER_PROVIDES` (integer)
`RPMREADER_REQUIREFLAGS` (integer)
`RPMREADER_REQUIRENAME` (integer)
`RPMREADER_REQUIREVERSION` (integer)
`RPMREADER_CONFLICTFLAGS` (integer)
`RPMREADER_CONFLICTNAME` (integer)
`RPMREADER_CONFLICTVERSION` (integer)
`RPMREADER_EXCLUDEARCH` (integer)
`RPMREADER_EXCLUDEOS` (integer)
`RPMREADER_EXCLUSIVEARCH` (integer)
`RPMREADER_EXCLUSIVEOS` (integer)
`RPMREADER_RPMVERSION` (integer)
`RPMREADER_TRIGGERSCRIPTS` (integer)
`RPMREADER_TRIGGERNAME` (integer)
`RPMREADER_TRIGGERVERSION` (integer)
`RPMREADER_TRIGGERFLAGS` (integer)
`RPMREADER_TRIGGERINDEX` (integer)
`RPMREADER_VERIFYSCRIPT` (integer)
`RPMREADER_CHANGELOGTIME` (integer)
  The list of dates from changelog entries.
`RPMREADER_CHANGELOGNAME` (integer)
  The list of changelog entry names.
`RPMREADER_CHANGELOGTEXT` (integer)
  The list of the text from changelog entries.
`RPMREADER_PREINPROG` (integer)
`RPMREADER_POSTINPROG` (integer)
`RPMREADER_PREUNPROG` (integer)
`RPMREADER_POSTUNPROG` (integer)
`RPMREADER_BUILDARCHS` (integer)
`RPMREADER_OBSOLETENAME` (integer)
`RPMREADER_OBSOLETES` (integer)
`RPMREADER_VERIFYSCRIPTPROG` (integer)
`RPMREADER_TRIGGERSCRIPTPROG` (integer)
`RPMREADER_COOKIE` (integer)
`RPMREADER_FILEDEVICES` (integer)
`RPMREADER_FILEINODES` (integer)
`RPMREADER_FILELANGS` (integer)
`RPMREADER_PREFIXES` (integer)
`RPMREADER_INSTPREFIXES` (integer)
`RPMREADER_PROVIDEFLAGS` (integer)
`RPMREADER_PROVIDEVERSION` (integer)
`RPMREADER_OBSOLETEFLAGS` (integer)
`RPMREADER_OBSOLETEVERSION` (integer)
`RPMREADER_DIRINDEXES` (integer)
  The list of indices that relate directory names to files in the RPM package. This tag is used in conjunction with RPMREADER_BASENAMES and RPMREADER_DIRNAMES to reconstruct filenames in the RPM package stored with the new "CompressedFileNames" method in RPM.
`RPMREADER_BASENAMES` (integer)
  The list of the names of files in the RPM package without path information. This tag is used in conjunction with RPMREADER_DIRINDEXES and RPMREADER_DIRNAMES to reconstruct filenames in the RPM package stored with the new "CompressedFileNames" method in RPM.
`RPMREADER_DIRNAMES` (integer)
  The list of directory names used by files in the RPM package. This tag is used in conjunction with RPMREADER_BASENAMES and RPMREADER_DIRINDEXES to reconstruct filenames in the RPM package stored with the new "CompressedFileNames" method in RPM.
`RPMREADER_OPTFLAGS` (integer)
`RPMREADER_DISTURL` (integer)
`RPMREADER_PAYLOADFORMAT` (integer)
`RPMREADER_PAYLOADCOMPRESSOR` (integer)
`RPMREADER_PAYLOADFLAGS` (integer)
`RPMREADER_INSTALLCOLOR` (integer)
`RPMREADER_INSTALLTID` (integer)
`RPMREADER_REMOVETID` (integer)
`RPMREADER_RHNPLATFORM` (integer)
`RPMREADER_PLATFORM` (integer)
`RPMREADER_PATCHESNAME` (integer)
`RPMREADER_PATCHESFLAGS` (integer)
`RPMREADER_PATCHESVERSION` (integer)
`RPMREADER_CACHECTIME` (integer)
`RPMREADER_CACHEPKGPATH` (integer)
`RPMREADER_CACHEPKGSIZE` (integer)
`RPMREADER_CACHEPKGMTIME` (integer)
`RPMREADER_FILECOLORS` (integer)
`RPMREADER_FILECLASS` (integer)
`RPMREADER_CLASSDICT` (integer)
`RPMREADER_FILEDEPENDSX` (integer)
`RPMREADER_FILEDEPENDSN` (integer)
`RPMREADER_DEPENDSDICT` (integer)
`RPMREADER_SOURCEPKGID` (integer)
`RPMREADER_FILECONTEXTS` (integer)
`RPMREADER_FSCONTEXTS` (integer)
`RPMREADER_RECONTEXTS` (integer)
`RPMREADER_POLICIES` (integer)
`RPMREADER_MAXIMUM` (integer)
  The maximum valid value of any RPM tag number.

## Examples

This example will open an RPM file and read the name, version, and release from the RPM file, echo the results, and close the RPM file.

Example#1 Basic RPMReader Example

`<?php
$filename = "/path/to/file.rpm";
// open file
$rpmr = rpm_open($filename);
// get "Name" tag
$name = rpm_get_tag($rpmr, RPMREADER_NAME);
// get "Version" tag
$ver = rpm_get_tag($rpmr, RPMREADER_VERSION);
// get "Release" tag
$rel = rpm_get_tag($rpmr, RPMREADER_RELEASE);
echo "$name-$ver-$rel<br>\n";
// close file
rpm_close($rpmr);
?>`

## Table of Contents

- rpm_close — Closes an RPM file
- rpm_get_tag — Retrieves a header tag from an RPM file
- rpm_is_valid — Tests a filename for validity as an RPM file
- rpm_open — Opens an RPM file
- rpm_version — Returns a string representing the current version of the rpmreader extension