summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Doxyfile.in235
-rw-r--r--build/buildio.h4
-rw-r--r--lib/depends.h27
-rw-r--r--lib/fprint.h3
-rw-r--r--lib/fsm.c2
-rw-r--r--lib/fsm.h4
-rw-r--r--lib/hash.h3
-rw-r--r--lib/manifest.c162
-rw-r--r--lib/manifest.h32
-rw-r--r--lib/md5.h3
-rw-r--r--lib/misc.h3
-rw-r--r--lib/oldrpmdb.h3
-rw-r--r--lib/psm.c1
-rw-r--r--lib/psm.h4
-rw-r--r--lib/query.c6
-rw-r--r--lib/rpmdb.h2
-rw-r--r--lib/rpminstall.c468
-rw-r--r--lib/rpmlead.h2
-rw-r--r--lib/rpmlib.h4
-rw-r--r--lib/stringbuf.h23
-rw-r--r--macros.in4
-rw-r--r--po/rpm.pot207
-rw-r--r--python/hash.h4
-rw-r--r--rpmio/rpmerr.h17
-rw-r--r--rpmio/rpmlog.h2
-rw-r--r--rpmpopt.in5
-rw-r--r--rpmrc.in7
27 files changed, 746 insertions, 491 deletions
diff --git a/Doxyfile.in b/Doxyfile.in
index 69b98ffdb..7ab248928 100644
--- a/Doxyfile.in
+++ b/Doxyfile.in
@@ -14,7 +14,7 @@
#---------------------------------------------------------------------------
# The PROJECT_NAME tag is a single word (or a sequence of words surrounded
-# by quotes) that should identify the project.
+# by quotes) that should identify the project.
PROJECT_NAME = @PACKAGE@
@@ -36,25 +36,25 @@ OUTPUT_DIRECTORY = @WITH_APIDOCS_TARGET@
# information to generate all constant output in the proper language.
# The default language is English, other supported languages are:
# Dutch, French, Italian, Czech, Swedish, German, Finnish, Japanese,
-# Korean, Hungarian, Norwegian, Spanish, Romanian, Russian, Croatian,
-# Polish, Portuguese and Slovene.
+# Korean, Hungarian, Norwegian, Spanish, Romanian, Russian, Croatian,
+# Polish, Portuguese, Brazilian and Slovene.
OUTPUT_LANGUAGE = English
# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in
# documentation are documented, even if no documentation was available.
# Private class members and static file members will be hidden unless
-# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
+# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
EXTRACT_ALL = YES
# If the EXTRACT_PRIVATE tag is set to YES all private members of a class
-# will be included in the documentation.
+# will be included in the documentation.
EXTRACT_PRIVATE = NO
# If the EXTRACT_STATIC tag is set to YES all static members of a file
-# will be included in the documentation.
+# will be included in the documentation.
EXTRACT_STATIC = YES
@@ -62,40 +62,40 @@ EXTRACT_STATIC = YES
# undocumented members of documented classes, files or namespaces.
# If set to NO (the default) these members will be included in the
# various overviews, but no documentation section is generated.
-# This option has no effect if EXTRACT_ALL is enabled.
+# This option has no effect if EXTRACT_ALL is enabled.
HIDE_UNDOC_MEMBERS = NO
# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all
# undocumented classes that are normally visible in the class hierarchy.
# If set to NO (the default) these class will be included in the various
-# overviews. This option has no effect if EXTRACT_ALL is enabled.
+# overviews. This option has no effect if EXTRACT_ALL is enabled.
HIDE_UNDOC_CLASSES = NO
# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will
# include brief member descriptions after the members that are listed in
# the file and class documentation (similar to JavaDoc).
-# Set to NO to disable this.
+# Set to NO to disable this.
BRIEF_MEMBER_DESC = YES
# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend
# the brief description of a member or function before the detailed description.
# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
-# brief descriptions will be completely suppressed.
+# brief descriptions will be completely suppressed.
REPEAT_BRIEF = YES
# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
# Doxygen will generate a detailed section even if there is only a brief
-# description.
+# description.
ALWAYS_DETAILED_SEC = NO
# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full
# path before files name in the file list and in the header files. If set
-# to NO the shortest path that makes the file name unique will be used.
+# to NO the shortest path that makes the file name unique will be used.
FULL_PATH_NAMES = YES
@@ -109,29 +109,29 @@ STRIP_FROM_PATH = @TOP_SOURCEDIR@/
# The INTERNAL_DOCS tag determines if documentation
# that is typed after a \internal command is included. If the tag is set
# to NO (the default) then the documentation will be excluded.
-# Set it to YES to include the internal documentation.
+# Set it to YES to include the internal documentation.
INTERNAL_DOCS = YES
# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will
# generate a class diagram (in Html and LaTeX) for classes with base or
-# super classes. Setting the tag to NO turns the diagrams off.
+# super classes. Setting the tag to NO turns the diagrams off.
CLASS_DIAGRAMS = YES
# If the SOURCE_BROWSER tag is set to YES then a list of source files will
-# be generated. Documented entities will be cross-referenced with these sources.
+# be generated. Documented entities will be cross-referenced with these sources.
SOURCE_BROWSER = YES
# Setting the INLINE_SOURCES tag to YES will include the body
-# of functions and classes directly in the documentation.
+# of functions and classes directly in the documentation.
INLINE_SOURCES = NO
# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct
# doxygen to hide any special comment blocks from generated source code
-# fragments. Normal C and C++ comments will always remain visible.
+# fragments. Normal C and C++ comments will always remain visible.
STRIP_CODE_COMMENTS = YES
@@ -143,47 +143,53 @@ STRIP_CODE_COMMENTS = YES
CASE_SENSE_NAMES = YES
+# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter
+# (but less readable) file names. This can be useful is your file systems
+# doesn't support long names like on DOS, Mac, or CD-ROM.
+
+#SHORT_NAMES = NO
+
# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen
# will show members with their full class and namespace scopes in the
-# documentation. If set to YES the scope will be hidden.
+# documentation. If set to YES the scope will be hidden.
HIDE_SCOPE_NAMES = NO
# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen
# will generate a verbatim copy of the header file for each class for
-# which an include is specified. Set to NO to disable this.
+# which an include is specified. Set to NO to disable this.
VERBATIM_HEADERS = YES
# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen
# will put list of the files that are included by a file in the documentation
-# of that file.
+# of that file.
SHOW_INCLUDE_FILES = YES
-# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen
-# will interpret the first line (until the first dot) of a JavaDoc-style
-# comment as the brief description. If set to NO, the JavaDoc
-# comments will behave just like the Qt-style comments (thus requiring an
+# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen
+# will interpret the first line (until the first dot) of a JavaDoc-style
+# comment as the brief description. If set to NO, the JavaDoc
+# comments will behave just like the Qt-style comments (thus requiring an
# explict @brief command for a brief description.
JAVADOC_AUTOBRIEF = YES
# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented
# member inherits the documentation from any documented member that it
-# reimplements.
+# reimplements.
INHERIT_DOCS = YES
# If the INLINE_INFO tag is set to YES (the default) then a tag [inline]
-# is inserted in the documentation for inline members.
+# is inserted in the documentation for inline members.
INLINE_INFO = YES
# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen
# will sort the (detailed) documentation of file and class members
# alphabetically by member name. If set to NO the members will appear in
-# declaration order.
+# declaration order.
SORT_MEMBER_DOCS = YES
@@ -195,12 +201,12 @@ SORT_MEMBER_DOCS = YES
DISTRIBUTE_GROUP_DOC = NO
# The TAB_SIZE tag can be used to set the number of spaces in a tab.
-# Doxygen uses this value to replace tabs by spaces in code fragments.
+# Doxygen uses this value to replace tabs by spaces in code fragments.
TAB_SIZE = 8
-# The ENABLE_SECTIONS tag can be used to enable conditional
-# documentation sections, marked by \if sectionname ... \endif.
+# The ENABLED_SECTIONS tag can be used to enable conditional
+# documentation sections, marked by \if sectionname ... \endif.
ENABLED_SECTIONS =
@@ -227,7 +233,7 @@ GENERATE_BUGLIST = YES
# For example adding "sideeffect=\par Side Effects:\n" will allow you to
# put the command \sideeffect (or @sideeffect) in the documentation, which
# will result in a user defined paragraph with heading "Side Effects:".
-# You can put \n's in the value part of an alias to insert newlines.
+# You can put \n's in the value part of an alias to insert newlines.
ALIASES =
@@ -237,20 +243,20 @@ ALIASES =
# here it will be hidden. Use a value of 0 to hide initializers completely.
# The appearance of the initializer of individual variables and defines in the
# documentation can be controlled using \showinitializer or \hideinitializer
-# command in the documentation regardless of this setting.
+# command in the documentation regardless of this setting.
MAX_INITIALIZER_LINES = 30
# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources
# only. Doxygen will then generate output that is more tailored for C.
# For instance some of the names that are used will be different. The list
-# of all members will be omitted, etc.
+# of all members will be omitted, etc.
OPTIMIZE_OUTPUT_FOR_C = YES
# Set the SHOW_USED_FILES tag to NO to disable the list of files generated
# at the bottom of the documentation of classes and structs. If set to YES the
-# list will mention the files that were used to generate the documentation.
+# list will mention the files that were used to generate the documentation.
SHOW_USED_FILES = YES
@@ -259,32 +265,32 @@ SHOW_USED_FILES = YES
#---------------------------------------------------------------------------
# The QUIET tag can be used to turn on/off the messages that are generated
-# by doxygen. Possible values are YES and NO. If left blank NO is used.
+# by doxygen. Possible values are YES and NO. If left blank NO is used.
QUIET = NO
# The WARNINGS tag can be used to turn on/off the warning messages that are
# generated by doxygen. Possible values are YES and NO. If left blank
-# NO is used.
+# NO is used.
WARNINGS = YES
# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings
# for undocumented members. If EXTRACT_ALL is set to YES then this flag will
-# automatically be disabled.
+# automatically be disabled.
WARN_IF_UNDOCUMENTED = YES
# The WARN_FORMAT tag determines the format of the warning messages that
# doxygen can produce. The string should contain the $file, $line, and $text
# tags, which will be replaced by the file and line number from which the
-# warning originated and the warning text.
+# warning originated and the warning text.
WARN_FORMAT = "$file:$line: $text"
# The WARN_LOGFILE tag can be used to specify a file to which warning
# and error messages should be written. If left blank the output is written
-# to stderr.
+# to stderr.
WARN_LOGFILE =
@@ -295,15 +301,18 @@ WARN_LOGFILE =
# The INPUT tag can be used to specify the files and/or directories that contain
# documented source files. You may enter file names like "myfile.cpp" or
# directories like "/usr/src/myproject". Separate the files or directories
-# with spaces.
+# with spaces.
INPUT = \
./Doxyheader \
- ./macros \
./build.c \
./build.h \
./config.h \
+ ./debug.h \
+ ./macros \
./rpmqv.c \
+ ./rpmpopt-@VERSION@ \
+ ./rpmrc \
./rpm2cpio.c \
./system.h \
./build/build.c \
@@ -422,6 +431,7 @@ INPUT = \
./popt/poptint.h \
./popt/poptparse.c \
./python/hash.c \
+ ./python/hash.h \
./python/rpmmodule.c \
./python/upgrade.c \
./python/upgrade.h \
@@ -438,44 +448,44 @@ INPUT = \
# If the value of the INPUT tag contains directories, you can use the
# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
# and *.h) to filter out the source-files in the directories. If left
-# blank all files are included.
+# blank all files are included.
FILE_PATTERNS = *.c *.h
# The RECURSIVE tag can be used to turn specify whether or not subdirectories
# should be searched for input files as well. Possible values are YES and NO.
-# If left blank NO is used.
+# If left blank NO is used.
RECURSIVE = NO
# The EXCLUDE tag can be used to specify files and/or directories that should
# excluded from the INPUT source files. This way you can easily exclude a
-# subdirectory from a directory tree whose root is specified with the INPUT tag.
+# subdirectory from a directory tree whose root is specified with the INPUT tag.
EXCLUDE =
# If the value of the INPUT tag contains directories, you can use the
# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
-# certain files from those directories.
+# certain files from those directories.
EXCLUDE_PATTERNS =
# The EXAMPLE_PATH tag can be used to specify one or more files or
# directories that contain example code fragments that are included (see
-# the \include command).
+# the \include command).
EXAMPLE_PATH = @TOP_SOURCEDIR@/doc/manual
# If the value of the EXAMPLE_PATH tag contains directories, you can use the
# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
# and *.h) to filter out the source-files in the directories. If left
-# blank all files are included.
+# blank all files are included.
EXAMPLE_PATTERNS =
# The IMAGE_PATH tag can be used to specify one or more files or
# directories that contain image that are included in the documentation (see
-# the \image command).
+# the \image command).
IMAGE_PATH =
@@ -484,13 +494,13 @@ IMAGE_PATH =
# by executing (via popen()) the command <filter> <input-file>, where <filter>
# is the value of the INPUT_FILTER tag, and <input-file> is the name of an
# input file. Doxygen will then use the output that the filter program writes
-# to standard output.
+# to standard output.
INPUT_FILTER =
# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
# INPUT_FILTER) will be used to filter the input files when producing source
-# files to browse.
+# files to browse.
FILTER_SOURCE_FILES = NO
@@ -500,20 +510,20 @@ FILTER_SOURCE_FILES = NO
# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index
# of all compounds will be generated. Enable this if the project
-# contains a lot of classes, structs, unions or interfaces.
+# contains a lot of classes, structs, unions or interfaces.
ALPHABETICAL_INDEX = NO
# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then
# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns
-# in which this list will be split (can be a number in the range [1..20])
+# in which this list will be split (can be a number in the range [1..20])
COLS_IN_ALPHA_INDEX = 5
# In case all classes in a project start with a common prefix, all
# classes will be put under the same header in the alphabetical index.
# The IGNORE_PREFIX tag can be used to specify one or more prefixes that
-# should be ignored while generating the index headers.
+# should be ignored while generating the index headers.
IGNORE_PREFIX =
@@ -522,13 +532,13 @@ IGNORE_PREFIX =
#---------------------------------------------------------------------------
# If the GENERATE_HTML tag is set to YES (the default) Doxygen will
-# generate HTML output.
+# generate HTML output.
GENERATE_HTML = YES
# The HTML_OUTPUT tag is used to specify where the HTML docs will be put.
# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `html' will be used as the default path.
+# put in front of it. If left blank `html' will be used as the default path.
HTML_OUTPUT = html
@@ -547,20 +557,20 @@ HTML_FOOTER =
# The HTML_STYLESHEET tag can be used to specify a user defined cascading
# style sheet that is used by each HTML page. It can be used to
# fine-tune the look of the HTML output. If the tag is left blank doxygen
-# will generate a default style sheet
+# will generate a default style sheet
HTML_STYLESHEET =
# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes,
# files or namespaces will be aligned in HTML using tables. If set to
-# NO a bullet list will be used.
+# NO a bullet list will be used.
HTML_ALIGN_MEMBERS = YES
# If the GENERATE_HTMLHELP tag is set to YES, additional index files
# will be generated that can be used as input for tools like the
# Microsoft HTML help workshop to generate a compressed HTML help file (.chm)
-# of the generated HTML documentation.
+# of the generated HTML documentation.
GENERATE_HTMLHELP = NO
@@ -577,18 +587,18 @@ GENERATE_CHI = NO
BINARY_TOC = NO
# The TOC_EXPAND flag can be set YES to add extra items for group members
-# to the contents of the Html help documentation and to the tree view.
+# to the contents of the Html help documentation and to the tree view.
TOC_EXPAND = NO
# The DISABLE_INDEX tag can be used to turn on/off the condensed index at
# top of each HTML page. The value NO (the default) enables the index and
-# the value YES disables it.
+# the value YES disables it.
DISABLE_INDEX = NO
# This tag can be used to set the number of enum values (range [1..20])
-# that doxygen will group on one line in the generated HTML documentation.
+# that doxygen will group on one line in the generated HTML documentation.
ENUM_VALUES_PER_LINE = 4
@@ -596,13 +606,13 @@ ENUM_VALUES_PER_LINE = 4
# generated containing a tree-like index structure (just like the one that
# is generated for HTML Help). For this to work a browser that supports
# JavaScript and frames is required (for instance Netscape 4.0+
-# or Internet explorer 4.0+).
+# or Internet explorer 4.0+).
GENERATE_TREEVIEW = NO
# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be
# used to set the initial width (in pixels) of the frame in which the tree
-# is shown.
+# is shown.
TREEVIEW_WIDTH = 250
@@ -611,57 +621,57 @@ TREEVIEW_WIDTH = 250
#---------------------------------------------------------------------------
# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will
-# generate Latex output.
+# generate Latex output.
GENERATE_LATEX = NO
# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put.
# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `latex' will be used as the default path.
+# put in front of it. If left blank `latex' will be used as the default path.
LATEX_OUTPUT = latex
# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact
# LaTeX documents. This may be useful for small projects and may help to
-# save some trees in general.
+# save some trees in general.
COMPACT_LATEX = NO
# The PAPER_TYPE tag can be used to set the paper type that is used
# by the printer. Possible values are: a4, a4wide, letter, legal and
-# executive. If left blank a4wide will be used.
+# executive. If left blank a4wide will be used.
PAPER_TYPE = letter
# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX
-# packages that should be included in the LaTeX output.
+# packages that should be included in the LaTeX output.
EXTRA_PACKAGES =
# The LATEX_HEADER tag can be used to specify a personal LaTeX header for
# the generated latex document. The header should contain everything until
# the first chapter. If it is left blank doxygen will generate a
-# standard header. Notice: only use this tag if you know what you are doing!
+# standard header. Notice: only use this tag if you know what you are doing!
LATEX_HEADER =
# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated
# is prepared for conversion to pdf (using ps2pdf). The pdf file will
# contain links (just like the HTML output) instead of page references
-# This makes the output suitable for online browsing using a pdf viewer.
+# This makes the output suitable for online browsing using a pdf viewer.
PDF_HYPERLINKS = NO
# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of
# plain latex in the generated Makefile. Set this option to YES to get a
-# higher quality PDF documentation.
+# higher quality PDF documentation.
USE_PDFLATEX = NO
# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode.
# command to the generated LaTeX files. This will instruct LaTeX to keep
# running if errors occur, instead of asking the user for help.
-# This option is also used when generating formulas in HTML.
+# This option is also used when generating formulas in HTML.
LATEX_BATCHMODE = NO
@@ -677,13 +687,13 @@ GENERATE_RTF = NO
# The RTF_OUTPUT tag is used to specify where the RTF docs will be put.
# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `rtf' will be used as the default path.
+# put in front of it. If left blank `rtf' will be used as the default path.
RTF_OUTPUT = rtf
# If the COMPACT_RTF tag is set to YES Doxygen generates more compact
# RTF documents. This may be useful for small projects and may help to
-# save some trees in general.
+# save some trees in general.
COMPACT_RTF = NO
@@ -692,33 +702,38 @@ COMPACT_RTF = NO
# contain links (just like the HTML output) instead of page references.
# This makes the output suitable for online browsing using a WORD or other.
# programs which support those fields.
-# Note: wordpad (write) and others do not support links.
+# Note: wordpad (write) and others do not support links.
RTF_HYPERLINKS = NO
# Load stylesheet definitions from file. Syntax is similar to doxygen's
# config file, i.e. a series of assigments. You only have to provide
-# replacements, missing definitions are set to their default value.
+# replacements, missing definitions are set to their default value.
RTF_STYLESHEET_FILE =
+# Set optional variables used in the generation of an rtf document.
+# Syntax is similar to doxygen's config file.
+
+#+RTF_EXTENSIONS_FILE =
+
#---------------------------------------------------------------------------
# configuration options related to the man page output
#---------------------------------------------------------------------------
# If the GENERATE_MAN tag is set to YES (the default) Doxygen will
-# generate man pages
+# generate man pages
GENERATE_MAN = YES
# The MAN_OUTPUT tag is used to specify where the man pages will be put.
# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `man' will be used as the default path.
+# put in front of it. If left blank `man' will be used as the default path.
MAN_OUTPUT = man
# The MAN_EXTENSION tag determines the extension that is added to
-# the generated man pages (default is the subroutine's section .3)
+# the generated man pages (default is the subroutine's section .3)
MAN_EXTENSION = .3
@@ -728,38 +743,38 @@ MAN_EXTENSION = .3
# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will
# evaluate all C-preprocessor directives found in the sources and include
-# files.
+# files.
ENABLE_PREPROCESSING = YES
# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro
# names in the source code. If set to NO (the default) only conditional
# compilation will be performed. Macro expansion can be done in a controlled
-# way by setting EXPAND_ONLY_PREDEF to YES.
+# way by setting EXPAND_ONLY_PREDEF to YES.
MACRO_EXPANSION = YES
# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES
# then the macro expansion is limited to the macros specified with the
-# PREDEFINED and EXPAND_AS_PREDEFINED tags.
+# PREDEFINED and EXPAND_AS_PREDEFINED tags.
EXPAND_ONLY_PREDEF = NO
# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files
-# in the INCLUDE_PATH (see below) will be search if a #include is found.
+# in the INCLUDE_PATH (see below) will be search if a #include is found.
SEARCH_INCLUDES = YES
# The INCLUDE_PATH tag can be used to specify one or more directories that
# contain include files that are not input files but should be processed by
-# the preprocessor.
+# the preprocessor.
INCLUDE_PATH =
# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
# patterns (like *.h and *.hpp) to filter out the header-files in the
# directories. If left blank, the patterns specified with FILE_PATTERNS will
-# be used.
+# be used.
INCLUDE_FILE_PATTERNS =
@@ -767,14 +782,14 @@ INCLUDE_FILE_PATTERNS =
# are defined before the preprocessor is started (similar to the -D option of
# gcc). The argument of the tag is a list of macros of the form: name
# or name=definition (no spaces). If the definition and the = are
-# omitted =1 is assumed.
+# omitted =1 is assumed.
PREDEFINED =
# If the MACRO_EXPANSION and EXPAND_PREDEF_ONLY tags are set to YES then
# this tag can be used to specify a list of macro names that should be expanded.
# The macro definition that is found in the sources will be used.
-# Use the PREDEFINED tag if you want to use a different macro definition.
+# Use the PREDEFINED tag if you want to use a different macro definition.
EXPAND_AS_DEFINED =
@@ -782,23 +797,23 @@ EXPAND_AS_DEFINED =
# Configuration::addtions related to external references
#---------------------------------------------------------------------------
-# The TAGFILES tag can be used to specify one or more tagfiles.
+# The TAGFILES tag can be used to specify one or more tagfiles.
-TAGFILES =
+TAGFILES =
# When a file name is specified after GENERATE_TAGFILE, doxygen will create
-# a tag file that is based on the input files it reads.
+# a tag file that is based on the input files it reads.
-GENERATE_TAGFILE =
+GENERATE_TAGFILE = Doxytags
# If the ALLEXTERNALS tag is set to YES all external classes will be listed
# in the class index. If set to NO only the inherited external classes
-# will be listed.
+# will be listed.
ALLEXTERNALS = NO
# The PERL_PATH should be the absolute path and name of the perl script
-# interpreter (i.e. the result of `which perl').
+# interpreter (i.e. the result of `which perl').
PERL_PATH = /usr/bin/perl
@@ -809,7 +824,7 @@ PERL_PATH = /usr/bin/perl
# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
# available from the path. This tool is part of Graphviz, a graph visualization
# toolkit from AT&T and Lucent Bell Labs. The other options in this section
-# have no effect if this option is set to NO (the default)
+# have no effect if this option is set to NO (the default)
HAVE_DOT = NO
@@ -823,30 +838,30 @@ CLASS_GRAPH = YES
# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen
# will generate a graph for each documented class showing the direct and
# indirect implementation dependencies (inheritance, containment, and
-# class references variables) of the class with other documented classes.
+# class references variables) of the class with other documented classes.
COLLABORATION_GRAPH = YES
# If the ENABLE_PREPROCESSING, INCLUDE_GRAPH, and HAVE_DOT tags are set to
# YES then doxygen will generate a graph for each documented file showing
# the direct and indirect include dependencies of the file with other
-# documented files.
+# documented files.
INCLUDE_GRAPH = YES
# If the ENABLE_PREPROCESSING, INCLUDED_BY_GRAPH, and HAVE_DOT tags are set to
# YES then doxygen will generate a graph for each documented header file showing
-# the documented files that directly or indirectly include this file
+# the documented files that directly or indirectly include this file
INCLUDED_BY_GRAPH = YES
# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen
-# will graphical hierarchy of all classes instead of a textual one.
+# will graphical hierarchy of all classes instead of a textual one.
GRAPHICAL_HIERARCHY = YES
# The tag DOT_PATH can be used to specify the path where the dot tool can be
-# found. If left blank, it is assumed the dot tool can be found on the path.
+# found. If left blank, it is assumed the dot tool can be found on the path.
DOT_PATH =
@@ -854,7 +869,7 @@ DOT_PATH =
# (in pixels) of the graphs generated by dot. If a graph becomes larger than
# this value, doxygen will try to truncate the graph, so that it fits within
# the specified constraint. Beware that most browsers cannot cope with very
-# large images.
+# large images.
MAX_DOT_GRAPH_WIDTH = 1024
@@ -862,19 +877,19 @@ MAX_DOT_GRAPH_WIDTH = 1024
# (in pixels) of the graphs generated by dot. If a graph becomes larger than
# this value, doxygen will try to truncate the graph, so that it fits within
# the specified constraint. Beware that most browsers cannot cope with very
-# large images.
+# large images.
MAX_DOT_GRAPH_HEIGHT = 1024
# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will
# generate a legend page explaining the meaning of the various boxes and
-# arrows in the dot generated graphs.
+# arrows in the dot generated graphs.
GENERATE_LEGEND = YES
# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will
# remove the intermedate dot files that are used to generate
-# the various graphs.
+# the various graphs.
DOT_CLEANUP = YES
@@ -883,41 +898,41 @@ DOT_CLEANUP = YES
#---------------------------------------------------------------------------
# The SEARCHENGINE tag specifies whether or not a search engine should be
-# used. If set to NO the values of all tags below this one will be ignored.
+# used. If set to NO the values of all tags below this one will be ignored.
SEARCHENGINE = NO
# The CGI_NAME tag should be the name of the CGI script that
# starts the search engine (doxysearch) with the correct parameters.
-# A script with this name will be generated by doxygen.
+# A script with this name will be generated by doxygen.
CGI_NAME = search.cgi
# The CGI_URL tag should be the absolute URL to the directory where the
# cgi binaries are located. See the documentation of your http daemon for
-# details.
+# details.
CGI_URL =
# The DOC_URL tag should be the absolute URL to the directory where the
# documentation is located. If left blank the absolute path to the
-# documentation, with file:// prepended to it, will be used.
+# documentation, with file:// prepended to it, will be used.
DOC_URL =
# The DOC_ABSPATH tag should be the absolute path to the directory where the
# documentation is located. If left blank the directory on the local machine
-# will be used.
+# will be used.
DOC_ABSPATH =
# The BIN_ABSPATH tag must point to the directory where the doxysearch binary
-# is installed.
+# is installed.
BIN_ABSPATH = /usr/local/bin/
# The EXT_DOC_PATHS tag can be used to specify one or more paths to
# documentation generated for other projects. This allows doxysearch to search
-# the documentation for these projects as well.
+# the documentation for these projects as well.
EXT_DOC_PATHS =
diff --git a/build/buildio.h b/build/buildio.h
index dd80378f2..2f67ff00f 100644
--- a/build/buildio.h
+++ b/build/buildio.h
@@ -3,7 +3,9 @@
/** \ingroup rpmbuild
* \file build/buildio.h
- * XXX this information will move elsewhere eventually
+ * Routines to read and write packages.
+ * @deprecated this information will move elsewhere eventually.
+ * @todo Eliminate, merge into rpmlib.
*/
#include "psm.h"
diff --git a/lib/depends.h b/lib/depends.h
index 8786c1ced..e5f5e79a6 100644
--- a/lib/depends.h
+++ b/lib/depends.h
@@ -1,13 +1,14 @@
#ifndef H_DEPENDS
#define H_DEPENDS
-/** \file lib/depends.h
- *
+/** \ingroup rpmdep rpmtrans
+ * \file lib/depends.h
+ * Structures used for dependency checking.
*/
#include <header.h>
-/**
+/** \ingroup rpmdep
* Dependncy ordering information.
*/
struct tsortInfo {
@@ -23,7 +24,7 @@ struct tsortInfo {
int tsi_qcnt;
} ;
-/**
+/** \ingroup rpmdep
* Info about a single package to be installed.
*/
struct availablePackage {
@@ -49,7 +50,7 @@ struct availablePackage {
/*@null@*/ FD_t fd;
} ;
-/**
+/** \ingroup rpmdep
* A single available item (e.g. a Provides: dependency).
*/
struct availableIndexEntry {
@@ -61,7 +62,7 @@ struct availableIndexEntry {
} type; /*!< Type of available item. */
} ;
-/**
+/** \ingroup rpmdep
* Index of all available items.
*/
struct availableIndex {
@@ -69,7 +70,7 @@ struct availableIndex {
int size; /*!< No. of available items. */
} ;
-/**
+/** \ingroup rpmdep
* A file to be installed/removed.
*/
struct fileIndexEntry {
@@ -78,7 +79,7 @@ struct fileIndexEntry {
/*@dependent@*/ const char * baseName; /*!< File basename. */
} ;
-/**
+/** \ingroup rpmdep
* A directory to be installed/removed.
*/
struct dirInfo {
@@ -88,7 +89,7 @@ struct dirInfo {
int numFiles; /*!< No. files in directory. */
} ;
-/**
+/** \ingroup rpmdep
* Set of available packages, items, and directories.
*/
struct availableList {
@@ -101,7 +102,7 @@ struct availableList {
/*@owned@*/ struct dirInfo * dirs; /*!< Set of directories. */
} ;
-/**
+/** \ingroup rpmdep
* A single package instance to be installed/removed atomically.
*/
struct transactionElement {
@@ -118,7 +119,7 @@ struct transactionElement {
} u;
} ;
-/**
+/** \ingroup rpmdep
* The set of packages to be installed/removed atomically.
*/
struct rpmTransactionSet_s {
@@ -151,7 +152,7 @@ struct rpmTransactionSet_s {
int id; /*!< Transaction id. */
} ;
-/**
+/** \ingroup rpmdep
* Problems encountered while checking dependencies.
*/
struct problemsSet {
@@ -165,7 +166,7 @@ extern "C" {
#endif
/* XXX lib/scriptlet.c */
-/**
+/** \ingroup rpmdep
* Compare package name-version-release from header with dependency, looking
* for overlap.
* @deprecated Remove from API when obsoletes is correctly eliminated.
diff --git a/lib/fprint.h b/lib/fprint.h
index 26de6d820..baa6e11d9 100644
--- a/lib/fprint.h
+++ b/lib/fprint.h
@@ -1,7 +1,8 @@
#ifndef H_FINGERPRINT
#define H_FINGERPRINT
-/** \file lib/fprint.h
+/** \ingroup rpmtrans
+ * \file lib/fprint.h
* Identify a file name path by a unique "finger print".
*/
diff --git a/lib/fsm.c b/lib/fsm.c
index 0983a8ef8..4357cc967 100644
--- a/lib/fsm.c
+++ b/lib/fsm.c
@@ -1,6 +1,6 @@
/** \ingroup payload
* \file lib/fsm.c
- * Handle payloads within rpm packages.
+ * File state machine to handle a payload from a package.
*/
#include "system.h"
diff --git a/lib/fsm.h b/lib/fsm.h
index e8e1b0fb9..34b82cb90 100644
--- a/lib/fsm.h
+++ b/lib/fsm.h
@@ -1,7 +1,9 @@
#ifndef H_FSM
#define H_FSM
-/** \file lib/fsm.h
+/** \ingroup payload
+ * \file lib/fsm.h
+ * File state machine to handle a payload within an rpm package.
*/
#include <rpmlib.h>
diff --git a/lib/hash.h b/lib/hash.h
index 0cd98e08a..48ff9cab7 100644
--- a/lib/hash.h
+++ b/lib/hash.h
@@ -1,7 +1,8 @@
#ifndef H_HASH
#define H_HASH
-/** \file lib/hash.h
+/**
+ * \file lib/hash.h
* Hash table implemenation.
*/
diff --git a/lib/manifest.c b/lib/manifest.c
new file mode 100644
index 000000000..30345cfa0
--- /dev/null
+++ b/lib/manifest.c
@@ -0,0 +1,162 @@
+/** \ingroup rpmcli
+ * \file lib/manifest.c
+ */
+
+#include "system.h"
+
+#include <rpmio_internal.h>
+#include "stringbuf.h"
+#include "manifest.h"
+#include "misc.h"
+#include "debug.h"
+
+/*@access StringBuf @*/
+
+/**
+ * Wrapper to free(3), hides const compilation noise, permit NULL, return NULL.
+ * @param this memory to free
+ * @retval NULL always
+ */
+static /*@null@*/ void * _free(/*@only@*/ /*@null@*/ const void * this) {
+ if (this) free((void *)this);
+ return NULL;
+}
+
+char * rpmPermsString(int mode)
+{
+ char *perms = xstrdup("----------");
+
+ if (S_ISDIR(mode))
+ perms[0] = 'd';
+ else if (S_ISLNK(mode))
+ perms[0] = 'l';
+ else if (S_ISFIFO(mode))
+ perms[0] = 'p';
+ else if (S_ISSOCK(mode))
+ perms[0] = 's';
+ else if (S_ISCHR(mode))
+ perms[0] = 'c';
+ else if (S_ISBLK(mode))
+ perms[0] = 'b';
+
+ /*@-unrecog@*/
+ if (mode & S_IRUSR) perms[1] = 'r';
+ if (mode & S_IWUSR) perms[2] = 'w';
+ if (mode & S_IXUSR) perms[3] = 'x';
+
+ if (mode & S_IRGRP) perms[4] = 'r';
+ if (mode & S_IWGRP) perms[5] = 'w';
+ if (mode & S_IXGRP) perms[6] = 'x';
+
+ if (mode & S_IROTH) perms[7] = 'r';
+ if (mode & S_IWOTH) perms[8] = 'w';
+ if (mode & S_IXOTH) perms[9] = 'x';
+
+ if (mode & S_ISUID)
+ perms[3] = ((mode & S_IXUSR) ? 's' : 'S');
+
+ if (mode & S_ISGID)
+ perms[6] = ((mode & S_IXGRP) ? 's' : 'S');
+
+ if (mode & S_ISVTX)
+ perms[9] = ((mode & S_IXOTH) ? 't' : 'T');
+ /*@=unrecog@*/
+
+ return perms;
+}
+
+/**@todo Infinite loops through manifest files exist, operator error for now. */
+int rpmReadPackageManifest(FD_t fd, int * argcPtr, const char *** argvPtr)
+{
+ StringBuf sb = newStringBuf();
+ char * s, *se;
+ int ac = 0;
+ const char ** av = NULL;
+ int argc = (argcPtr ? *argcPtr : 0);
+ const char ** argv = (argvPtr ? *argvPtr : NULL);
+ int rc = 0;
+ int i;
+
+ while (1) {
+ char line[BUFSIZ];
+
+ /* Read next line. */
+ s = fgets(line, sizeof(line) - 1, fdGetFp(fd));
+ if (s == NULL) {
+ /* XXX Ferror check needed */
+ break;
+ }
+
+ /* Skip comments. */
+ if ((se = strchr(s, '#')) != NULL) *se = '\0';
+
+ /* Trim white space. */
+ se = s + strlen(s);
+ while (se > s && (se[-1] == '\n' || se[-1] == '\r'))
+ *(--se) = '\0';
+ while (*s && strchr(" \f\n\r\t\v", *s) != NULL)
+ s++;
+ if (*s == '\0') continue;
+
+ /* Insure that file contains only ASCII */
+ if (*s < 32) {
+ rc = 1;
+ goto exit;
+ }
+
+ /* Concatenate next line in buffer. */
+ *se++ = ' ';
+ *se = '\0';
+ appendStringBuf(sb, s);
+ }
+
+ if (s == NULL) /* XXX always true */
+ s = getStringBuf(sb);
+
+ if (!(s && *s)) {
+ rc = 1;
+ goto exit;
+ }
+
+ /* Glob manifest items. */
+ rc = rpmGlob(s, &ac, &av);
+ if (rc) goto exit;
+
+ /* Find 1st existing unprocessed arg. */
+ for (i = 0; i < argc; i++)
+ if (argv && argv[i]) break;
+
+ /* Concatenate existing unprocessed args after manifest contents. */
+ if (argv && i < argc) {
+ int nac = ac + (argc - i);
+ const char ** nav = xcalloc((nac + 1), sizeof(*nav));
+
+ if (ac)
+ memcpy(nav, av, ac * sizeof(*nav));
+ if ((argc - i) > 0)
+ memcpy(nav + ac, argv + i, (argc - i) * sizeof(*nav));
+ nav[nac] = NULL;
+
+ *argvPtr = argv = _free(argv);
+ av = _free(av);
+ av = nav;
+ ac = nac;
+ }
+
+ /* Save new argc/argv list. */
+ if (argvPtr) {
+ *argvPtr = _free(*argvPtr);
+ *argvPtr = av;
+ }
+ if (argcPtr)
+ *argcPtr = ac;
+
+exit:
+ if (argvPtr == NULL || (rc != 0 && av)) {
+ for (i = 0; i < ac; i++)
+ av[i] = _free(av[i]);
+ av = _free(av);
+ }
+ freeStringBuf(sb);
+ return rc;
+}
diff --git a/lib/manifest.h b/lib/manifest.h
new file mode 100644
index 000000000..15371a874
--- /dev/null
+++ b/lib/manifest.h
@@ -0,0 +1,32 @@
+#ifndef H_MANIFEST
+#define H_MANIFEST
+
+/**
+ * \file lib/manifest.h
+ * Routines to expand a manifest containing glob expressions into an argv list.
+ */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * Return ls(1)-like formatted mode string.
+ * @param mode file mode
+ * @return (malloc'd) formatted mode string
+ */
+char * rpmPermsString(int mode);
+
+/**
+ * Read manifest, glob items, and append to existing args.
+ * @param fd manifest file handle
+ * @retval argcPtr no. of args
+ * @retval argvPtr args themselves
+ */
+int rpmReadPackageManifest(FD_t fd, int * argcPtr, const char *** argvPtr);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* H_MANIFEST */
diff --git a/lib/md5.h b/lib/md5.h
index 8415c7767..bfa2e64bd 100644
--- a/lib/md5.h
+++ b/lib/md5.h
@@ -1,7 +1,8 @@
#ifndef MD5_H
#define MD5_H
-/** \file lib/md5.h
+/**
+ * \file lib/md5.h
* @todo Eliminate, use rpmio version instead.
*/
diff --git a/lib/misc.h b/lib/misc.h
index f481edbbc..8f443f07e 100644
--- a/lib/misc.h
+++ b/lib/misc.h
@@ -1,7 +1,8 @@
#ifndef H_MISC
#define H_MISC
-/** \file lib/misc.h
+/**
+ * \file lib/misc.h
*
*/
diff --git a/lib/oldrpmdb.h b/lib/oldrpmdb.h
index cce86cb0e..5eb925ae4 100644
--- a/lib/oldrpmdb.h
+++ b/lib/oldrpmdb.h
@@ -1,7 +1,8 @@
#ifndef _H_OLDRPMDB
#define _H_OLDRPMDB
-/** \file lib/oldrpmdb.h
+/**
+ * \file lib/oldrpmdb.h
*
*/
diff --git a/lib/psm.c b/lib/psm.c
index 2b55fbb1b..582546539 100644
--- a/lib/psm.c
+++ b/lib/psm.c
@@ -1,5 +1,6 @@
/** \ingroup rpmtrans payload
* \file lib/psm.c
+ * Package state machine to handle a package from a transaction set.
*/
#include "system.h"
diff --git a/lib/psm.h b/lib/psm.h
index f39c18fee..d04c365c8 100644
--- a/lib/psm.h
+++ b/lib/psm.h
@@ -1,7 +1,9 @@
#ifndef H_PSM
#define H_PSM
-/** \file lib/psm.h
+/** \ingroup rpmtrans payload
+ * \file lib/psm.h
+ * Package state machine to handle a package from a transaction set.
*/
#include <rpmlib.h>
diff --git a/lib/query.c b/lib/query.c
index d94e5503b..cf3b414ba 100644
--- a/lib/query.c
+++ b/lib/query.c
@@ -542,7 +542,7 @@ restart:
/* Try to read a package manifest. */
fd = Fopen(fileURL, "r.fpio");
- if (Ferror(fd)) {
+ if (fd == NULL || Ferror(fd)) {
rpmError(RPMERR_OPEN, _("open of %s failed: %s\n"), fileURL,
Fstrerror(fd));
if (fd) Fclose(fd);
@@ -553,8 +553,8 @@ restart:
/* Read list of packages from manifest. */
retcode = rpmReadPackageManifest(fd, &ac, &av);
if (retcode) {
- rpmError(RPMERR_QUERY, _("%s: Fread failed: %s\n"), fileURL,
- Fstrerror(fd));
+ rpmError(RPMERR_MANIFEST, _("%s: read manifest failed: %s\n"),
+ fileURL, Fstrerror(fd));
retcode = 1;
}
Fclose(fd);
diff --git a/lib/rpmdb.h b/lib/rpmdb.h
index 9954bc4e9..9beead972 100644
--- a/lib/rpmdb.h
+++ b/lib/rpmdb.h
@@ -3,7 +3,7 @@
/** \ingroup rpmdb dbi db1 db3
* \file lib/rpmdb.h
- * Access RPM indices using Berkeley db[123] interface.
+ * Access RPM indices using Berkeley DB interface(s).
*/
#include <rpmlib.h>
diff --git a/lib/rpminstall.c b/lib/rpminstall.c
index 7d881b0e5..351b3d9e6 100644
--- a/lib/rpminstall.c
+++ b/lib/rpminstall.c
@@ -8,6 +8,7 @@
#include <rpmmacro.h>
#include <rpmurl.h>
+#include "manifest.h"
#include "misc.h"
#include "debug.h"
@@ -87,8 +88,8 @@ static void printHash(const unsigned long amount, const unsigned long total)
/**
*/
-static void * showProgress(const void * arg, const rpmCallbackType what,
- const unsigned long amount,
+static void * showProgress(const void * arg, const rpmCallbackType what,
+ const unsigned long amount,
const unsigned long total,
const void * pkgKey, void * data)
{
@@ -130,7 +131,7 @@ static void * showProgress(const void * arg, const rpmCallbackType what,
#endif
fflush(stdout);
} else {
- s = headerSprintf(h, "%{NAME}-%{VERSION}-%{RELEASE}",
+ s = headerSprintf(h, "%{NAME}-%{VERSION}-%{RELEASE}",
rpmTagTable, rpmHeaderFormats, NULL);
fprintf(stdout, "%s\n", s);
fflush(stdout);
@@ -185,266 +186,297 @@ static void * showProgress(const void * arg, const rpmCallbackType what,
/** @todo Generalize --freshen policies. */
int rpmInstall(const char * rootdir, const char ** fileArgv,
- rpmtransFlags transFlags,
+ rpmtransFlags transFlags,
rpmInstallInterfaceFlags interfaceFlags,
- rpmprobFilterFlags probFilter,
+ rpmprobFilterFlags probFilter,
rpmRelocation * relocations)
{
+ rpmTransactionSet ts = NULL;
+ int notifyFlags = interfaceFlags | (rpmIsVerbose() ? INSTALL_LABEL : 0 );
rpmdb db = NULL;
- FD_t fd;
- int i;
- int mode, rc, major;
const char ** pkgURL = NULL;
- const char ** tmppkgURL = NULL;
- const char ** fileURL;
- int numPkgs;
- int numTmpPkgs = 0, numRPMS = 0, numSRPMS = 0;
+ char * pkgState = NULL;
+ const char ** fnp;
+ const char * fileURL = NULL;
+ int numPkgs = 0;
+ int numRPMS = 0;
+ int numSRPMS = 0;
int numFailed = 0;
- Header h;
- int isSource;
- rpmTransactionSet ts = NULL;
- int numConflicts;
int stopInstall = 0;
- int notifyFlags = interfaceFlags | (rpmIsVerbose() ? INSTALL_LABEL : 0 );
int dbIsOpen = 0;
- const char ** sourceURL;
- rpmRelocation * defaultReloc;
-
- if (transFlags & RPMTRANS_FLAG_TEST)
- mode = O_RDONLY;
- else
- mode = O_RDWR | O_CREAT; /* XXX can't O_EXCL */
+ rpmRelocation * defaultReloc = relocations;
+ const char ** sourceURL = NULL;
+ int prevx;
+ int pkgx;
+ const char ** argv = NULL;
+ int argc = 0;
+ const char ** av = NULL;
+ int ac = 0;
+ Header h;
+ FD_t fd;
+ int rc;
+ int i;
- for (defaultReloc = relocations; defaultReloc && defaultReloc->oldPath;
- defaultReloc++);
+ while (defaultReloc && defaultReloc->oldPath)
+ defaultReloc++;
if (defaultReloc && !defaultReloc->newPath) defaultReloc = NULL;
- rpmMessage(RPMMESS_DEBUG, _("counting packages to install\n"));
- for (fileURL = fileArgv, numPkgs = 0; *fileURL; fileURL++, numPkgs++)
- ;
-
- rpmMessage(RPMMESS_DEBUG, _("found %d packages\n"), numPkgs);
+ /* Build fully globbed list of arguments in argv[argc]. */
+ for (fnp = fileArgv; *fnp; fnp++) {
+ av = _free(av);
+ ac = 0;
+ rc = rpmGlob(*fnp, &ac, &av);
+ if (rc || ac == 0) continue;
- pkgURL = xcalloc( (numPkgs + 1), sizeof(*pkgURL) );
- tmppkgURL = xcalloc( (numPkgs + 1), sizeof(*tmppkgURL) );
+ if (argc == 0)
+ argv = xmalloc((argc+2) * sizeof(*argv));
+ else
+ argv = xrealloc(argv, (argc+2) * sizeof(*argv));
+ memcpy(argv+argc, av, ac * sizeof(*av));
+ argc += ac;
+ argv[argc] = NULL;
+ }
+ av = _free(av);
+
+ numPkgs = 0;
+ prevx = 0;
+ pkgx = 0;
+
+restart:
+ /* Allocate sufficient storage for next set of args. */
+ if (pkgx >= numPkgs) {
+ numPkgs = pkgx + argc;
+ pkgURL = (pkgURL == NULL)
+ ? xmalloc( (numPkgs + 1) * sizeof(*pkgURL))
+ : xrealloc(pkgURL, (numPkgs + 1) * sizeof(*pkgURL));
+ memset(pkgURL + pkgx, 0, ((argc + 1) * sizeof(*pkgURL)));
+ pkgState = (pkgState == NULL)
+ ? xmalloc( (numPkgs + 1) * sizeof(*pkgState))
+ : xrealloc(pkgState, (numPkgs + 1) * sizeof(*pkgState));
+ memset(pkgState + pkgx, 0, ((argc + 1) * sizeof(*pkgState)));
+ }
- rpmMessage(RPMMESS_DEBUG, _("looking for packages to download\n"));
- for (fileURL = fileArgv, i = 0; *fileURL; fileURL++) {
+ /* Retrieve next set of args, cache on local storage. */
+ for (i = 0; i < argc; i++) {
+ fileURL = _free(fileURL);
+ fileURL = argv[i];
+ argv[i] = NULL;
- switch (urlIsURL(*fileURL)) {
+ switch (urlIsURL(fileURL)) {
case URL_IS_FTP:
case URL_IS_HTTP:
- { int myrc;
- int j;
- const char *tfn;
- int argc = 0;
- const char ** argv = NULL;
-
- myrc = rpmGlob(*fileURL, &argc, &argv);
- if (myrc) {
- rpmMessage(RPMMESS_ERROR,
- _("skipping %s - rpmGlob failed(%d)\n"),
- *fileURL, myrc);
- numFailed++;
- pkgURL[i] = NULL;
- break;
- }
- if (argc > 1) {
- numPkgs += argc - 1;
- pkgURL = xrealloc(pkgURL, (numPkgs + 1) * sizeof(*pkgURL));
- tmppkgURL = xrealloc(tmppkgURL, (numPkgs + 1) * sizeof(*tmppkgURL));
- }
-
- for (j = 0; j < argc; j++) {
-
- if (rpmIsVerbose())
- fprintf(stdout, _("Retrieving %s\n"), argv[j]);
+ { const char *tfn;
- { char tfnbuf[64];
- strcpy(tfnbuf, "rpm-xfer.XXXXXX");
- /*@-unrecog@*/ mktemp(tfnbuf) /*@=unrecog@*/;
- tfn = rpmGenPath(rootdir, "%{_tmppath}/", tfnbuf);
- }
+ if (rpmIsVerbose())
+ fprintf(stdout, _("Retrieving %s\n"), fileURL);
- /* XXX undefined %{name}/%{version}/%{release} here */
- /* XXX %{_tmpdir} does not exist */
- rpmMessage(RPMMESS_DEBUG, _(" ... as %s\n"), tfn);
- myrc = urlGetFile(argv[j], tfn);
- if (myrc < 0) {
- rpmMessage(RPMMESS_ERROR,
- _("skipping %s - transfer failed - %s\n"),
- argv[j], ftpStrerror(myrc));
- numFailed++;
- pkgURL[i] = NULL;
- tfn = _free(tfn);
- } else {
- tmppkgURL[numTmpPkgs++] = pkgURL[i++] = tfn;
- }
+ { char tfnbuf[64];
+ strcpy(tfnbuf, "rpm-xfer.XXXXXX");
+ /*@-unrecog@*/ mktemp(tfnbuf) /*@=unrecog@*/;
+ tfn = rpmGenPath(rootdir, "%{_tmppath}/", tfnbuf);
}
- if (argv) {
- for (j = 0; j < argc; j++)
- argv[j] = _free(argv[j]);
- argv = _free(argv);
+
+ /* XXX undefined %{name}/%{version}/%{release} here */
+ /* XXX %{_tmpdir} does not exist */
+ rpmMessage(RPMMESS_DEBUG, _(" ... as %s\n"), tfn);
+ rc = urlGetFile(fileURL, tfn);
+ if (rc < 0) {
+ rpmMessage(RPMMESS_ERROR,
+ _("skipping %s - transfer failed - %s\n"),
+ fileURL, ftpStrerror(rc));
+ numFailed++;
+ pkgURL[pkgx] = NULL;
+ tfn = _free(tfn);
+ break;
}
+ pkgState[pkgx] = 1;
+ pkgURL[pkgx] = tfn;
+ pkgx++;
} break;
case URL_IS_PATH:
default:
- pkgURL[i++] = *fileURL;
+ pkgURL[pkgx] = fileURL;
+ fileURL = NULL;
+ pkgx++;
break;
}
}
- pkgURL[i] = NULL;
- tmppkgURL[numTmpPkgs] = NULL;
-
- sourceURL = alloca(sizeof(*sourceURL) * i);
+ fileURL = _free(fileURL);
- rpmMessage(RPMMESS_DEBUG, _("retrieved %d packages\n"), numTmpPkgs);
+ if (numFailed) goto exit;
- if (numFailed) goto errxit;
-
- /**
- * Build up the transaction set. As a special case, v1 source packages
- * are installed right here, only because they don't have headers and
- * would create all sorts of confusion later.
- */
- for (fileURL = pkgURL; *fileURL; fileURL++) {
+ /* Continue processing file arguments, building transaction set. */
+ for (fnp = pkgURL+prevx; *fnp; fnp++, prevx++) {
const char * fileName;
rpmRC rpmrc;
+ int isSource;
+
+ rpmMessage(RPMMESS_DEBUG, "============== %s\n", *fnp);
+ (void) urlPath(*fnp, &fileName);
- (void) urlPath(*fileURL, &fileName);
- fd = Fopen(*fileURL, "r.ufdio");
+ /* Try to read the header from a package file. */
+ fd = Fopen(*fnp, "r.ufdio");
if (fd == NULL || Ferror(fd)) {
- rpmMessage(RPMMESS_ERROR, _("cannot open file %s: %s\n"),
- *fileURL, Fstrerror(fd));
+ rpmError(RPMERR_OPEN, _("open of %s failed: %s\n"), *fnp,
+ Fstrerror(fd));
if (fd) Fclose(fd);
- numFailed++;
- pkgURL[i] = NULL;
+ numFailed++; *fnp = NULL;
continue;
}
- rpmrc = rpmReadPackageHeader(fd, &h, &isSource, &major, NULL);
+ rpmrc = rpmReadPackageHeader(fd, &h, &isSource, NULL, NULL);
+ Fclose(fd);
- switch (rpmrc) {
- case RPMRC_BADMAGIC:
- Fclose(fd);
- rpmMessage(RPMMESS_ERROR,
- _("%s does not appear to be a RPM package\n"),
- *fileURL);
- numFailed++;
- pkgURL[i] = NULL;
- break;
- case RPMRC_FAIL:
- case RPMRC_SHORTREAD:
- default:
- rpmMessage(RPMMESS_ERROR, _("%s cannot be installed\n"), *fileURL);
- numFailed++;
- pkgURL[i] = NULL;
- break;
- case RPMRC_BADSIZE:
- case RPMRC_OK:
- if (isSource) {
- sourceURL[numSRPMS++] = fileName;
- Fclose(fd);
- } else {
- if (!dbIsOpen) {
- if (rpmdbOpen(rootdir, &db, mode, 0644)) {
- const char *dn;
- dn = rpmGetPath( (rootdir ? rootdir : ""),
+ if (rpmrc == RPMRC_FAIL || rpmrc == RPMRC_SHORTREAD) {
+ numFailed++; *fnp = NULL;
+ continue;
+ }
+ if ((rpmrc == RPMRC_OK || rpmrc == RPMRC_BADSIZE) && isSource) {
+ rpmMessage(RPMMESS_DEBUG, "\tadded source rpm[%d]\n", numSRPMS);
+ sourceURL = (sourceURL == NULL)
+ ? xmalloc( (numSRPMS + 2) * sizeof(*sourceURL))
+ : xrealloc(sourceURL, (numSRPMS + 2) * sizeof(*sourceURL));
+ sourceURL[numSRPMS++] = *fnp;
+ *fnp = NULL;
+ continue;
+ }
+ if (rpmrc == RPMRC_OK || rpmrc == RPMRC_BADSIZE) {
+ if (!dbIsOpen) {
+ int mode = (transFlags & RPMTRANS_FLAG_TEST)
+ ? O_RDONLY : (O_RDWR | O_CREAT);
+
+ if (rpmdbOpen(rootdir, &db, mode, 0644)) {
+ const char *dn;
+ dn = rpmGetPath( (rootdir ? rootdir : ""),
"%{_dbpath}", NULL);
- rpmMessage(RPMMESS_ERROR,
+ rpmMessage(RPMMESS_ERROR,
_("cannot open Packages database in %s\n"), dn);
- dn = _free(dn);
- numFailed++;
- pkgURL[i] = NULL;
- break;
- }
- ts = rpmtransCreateSet(db, rootdir);
- dbIsOpen = 1;
+ dn = _free(dn);
+ numFailed++; *fnp = NULL;
+ break;
}
+ ts = rpmtransCreateSet(db, rootdir);
+ dbIsOpen = 1;
+ }
- if (defaultReloc) {
- const char ** paths;
- int c;
+ if (defaultReloc) {
+ const char ** paths;
+ int pft;
+ int c;
- if (headerGetEntry(h, RPMTAG_PREFIXES, NULL,
+ if (headerGetEntry(h, RPMTAG_PREFIXES, &pft,
(void **) &paths, &c) && (c == 1)) {
- defaultReloc->oldPath = xstrdup(paths[0]);
- paths = _free(paths);
- } else {
- const char * name;
- headerNVR(h, &name, NULL, NULL);
- rpmMessage(RPMMESS_ERROR,
+ defaultReloc->oldPath = xstrdup(paths[0]);
+ paths = headerFreeData(paths, pft);
+ } else {
+ const char * name;
+ headerNVR(h, &name, NULL, NULL);
+ rpmMessage(RPMMESS_ERROR,
_("package %s is not relocateable\n"), name);
-
- goto errxit;
- /*@notreached@*/
- }
+ numFailed++;
+ goto exit;
+ /*@notreached@*/
}
+ }
- /* On --freshen, verify package is installed and newer */
- if (interfaceFlags & INSTALL_FRESHEN) {
- rpmdbMatchIterator mi;
- const char * name;
- Header oldH;
- int count;
-
- headerNVR(h, &name, NULL, NULL);
- mi = rpmdbInitIterator(db, RPMTAG_NAME, name, 0);
- count = rpmdbGetIteratorCount(mi);
- while ((oldH = rpmdbNextIterator(mi)) != NULL) {
- if (rpmVersionCompare(oldH, h) < 0)
- continue;
- /* same or newer package already installed */
- count = 0;
- break;
- }
- rpmdbFreeIterator(mi);
- if (count == 0) {
- headerFree(h);
- Fclose(fd);
- break; /* XXX out of switch */
- }
- /* Package is newer than those currently installed. */
+ /* On --freshen, verify package is installed and newer */
+ if (interfaceFlags & INSTALL_FRESHEN) {
+ rpmdbMatchIterator mi;
+ const char * name;
+ Header oldH;
+ int count;
+
+ headerNVR(h, &name, NULL, NULL);
+ mi = rpmdbInitIterator(db, RPMTAG_NAME, name, 0);
+ count = rpmdbGetIteratorCount(mi);
+ while ((oldH = rpmdbNextIterator(mi)) != NULL) {
+ if (rpmVersionCompare(oldH, h) < 0)
+ continue;
+ /* same or newer package already installed */
+ count = 0;
+ break;
+ }
+ rpmdbFreeIterator(mi);
+ if (count == 0) {
+ headerFree(h);
+ continue;
+ break; /* XXX out of switch */
}
+ /* Package is newer than those currently installed. */
+ }
- rc = rpmtransAddPackage(ts, h, NULL, fileName,
+ rc = rpmtransAddPackage(ts, h, NULL, fileName,
(interfaceFlags & INSTALL_UPGRADE) != 0,
relocations);
+ headerFree(h); /* XXX reference held by transaction set */
+ if (defaultReloc)
+ defaultReloc->oldPath = _free(defaultReloc->oldPath);
- headerFree(h); /* XXX reference held by transaction set */
- Fclose(fd);
-
- switch(rc) {
- case 0:
- break;
- case 1:
- rpmMessage(RPMMESS_ERROR,
- _("error reading from file %s\n"), *fileURL);
- goto errxit;
- /*@notreached@*/ break;
- case 2:
- rpmMessage(RPMMESS_ERROR,
+ switch(rc) {
+ case 0:
+ rpmMessage(RPMMESS_DEBUG, "\tadded binary rpm[%d]\n", numRPMS);
+ break;
+ case 1:
+ rpmMessage(RPMMESS_ERROR,
+ _("error reading from file %s\n"), *fnp);
+ numFailed++;
+ goto exit;
+ /*@notreached@*/ break;
+ case 2:
+ rpmMessage(RPMMESS_ERROR,
_("file %s requires a newer version of RPM\n"),
- *fileURL);
- goto errxit;
- /*@notreached@*/ break;
- }
+ *fnp);
+ numFailed++;
+ goto exit;
+ /*@notreached@*/ break;
+ }
- defaultReloc->oldPath = _free(defaultReloc->oldPath);
+ numRPMS++;
+ continue;
+ }
- numRPMS++;
- }
+ if (rpmrc != RPMRC_BADMAGIC) {
+ rpmMessage(RPMMESS_ERROR, _("%s cannot be installed\n"), *fnp);
+ numFailed++; *fnp = NULL;
break;
}
+
+ /* Try to read a package manifest. */
+ fd = Fopen(*fnp, "r.fpio");
+ if (fd == NULL || Ferror(fd)) {
+ rpmError(RPMERR_OPEN, _("open of %s failed: %s\n"), *fnp,
+ Fstrerror(fd));
+ if (fd) Fclose(fd);
+ numFailed++; *fnp = NULL;
+ break;
+ }
+
+ /* Read list of packages from manifest. */
+ rc = rpmReadPackageManifest(fd, &argc, &argv);
+ if (rc)
+ rpmError(RPMERR_MANIFEST, _("%s: read manifest failed: %s\n"),
+ fileURL, Fstrerror(fd));
+ Fclose(fd);
+
+ /* If successful, restart the query loop. */
+ if (rc == 0) {
+ prevx++;
+ goto restart;
+ }
+
+ numFailed++; *fnp = NULL;
+ break;
}
- rpmMessage(RPMMESS_DEBUG, _("found %d source and %d binary packages\n"),
+ rpmMessage(RPMMESS_DEBUG, _("found %d source and %d binary packages\n"),
numSRPMS, numRPMS);
- if (numFailed) goto errxit;
+ if (numFailed) goto exit;
if (numRPMS && !(interfaceFlags & INSTALL_NODEPS)) {
struct rpmDependencyConflict * conflicts;
+ int numConflicts;
+
if (rpmdepCheck(ts, &conflicts, &numConflicts)) {
numFailed = numPkgs;
stopInstall = 1;
@@ -473,7 +505,7 @@ int rpmInstall(const char * rootdir, const char ** fileArgv,
packagesTotal = numRPMS;
#endif
rpmMessage(RPMMESS_DEBUG, _("installing binary packages\n"));
- rc = rpmRunTransactions(ts, showProgress, (void *) ((long)notifyFlags),
+ rc = rpmRunTransactions(ts, showProgress, (void *) ((long)notifyFlags),
NULL, &probs, transFlags, probFilter);
if (rc < 0) {
@@ -486,13 +518,11 @@ int rpmInstall(const char * rootdir, const char ** fileArgv,
if (probs) rpmProblemSetFree(probs);
}
- if (numRPMS && ts) rpmtransFree(ts);
-
if (numSRPMS && !stopInstall) {
for (i = 0; i < numSRPMS; i++) {
fd = Fopen(sourceURL[i], "r.ufdio");
if (fd == NULL || Ferror(fd)) {
- rpmMessage(RPMMESS_ERROR, _("cannot open file %s: %s\n"),
+ rpmMessage(RPMMESS_ERROR, _("cannot open file %s: %s\n"),
sourceURL[i], Fstrerror(fd));
if (fd) Fclose(fd);
continue;
@@ -508,33 +538,21 @@ int rpmInstall(const char * rootdir, const char ** fileArgv,
}
}
- for (i = 0; i < numTmpPkgs; i++) {
- Unlink(tmppkgURL[i]);
- tmppkgURL[i] = _free(tmppkgURL[i]);
+exit:
+ if (ts) rpmtransFree(ts);
+ for (i = 0; i < numPkgs; i++) {
+ if (pkgState[i] == 1)
+ Unlink(pkgURL[i]);
+ pkgURL[i] = _free(pkgURL[i]);
}
- tmppkgURL = _free(tmppkgURL);
+ pkgState = _free(pkgState);
pkgURL = _free(pkgURL);
-
- /* FIXME how do we close our various fd's? */
-
if (dbIsOpen) rpmdbClose(db);
-
return numFailed;
-
-errxit:
- if (numRPMS && ts) rpmtransFree(ts);
- if (tmppkgURL) {
- for (i = 0; i < numTmpPkgs; i++)
- tmppkgURL[i] = _free(tmppkgURL[i]);
- tmppkgURL = _free(tmppkgURL);
- }
- pkgURL = _free(pkgURL);
- if (dbIsOpen) rpmdbClose(db);
- return numPkgs;
}
int rpmErase(const char * rootdir, const char ** argv,
- rpmtransFlags transFlags,
+ rpmtransFlags transFlags,
rpmEraseInterfaceFlags interfaceFlags)
{
rpmdb db;
@@ -549,7 +567,7 @@ int rpmErase(const char * rootdir, const char ** argv,
int numPackages = 0;
rpmProblemSet probs;
- if (transFlags & RPMTRANS_FLAG_TEST)
+ if (transFlags & RPMTRANS_FLAG_TEST)
mode = O_RDONLY;
else
mode = O_RDWR | O_EXCL;
diff --git a/lib/rpmlead.h b/lib/rpmlead.h
index c04312e9d..4ed9d623e 100644
--- a/lib/rpmlead.h
+++ b/lib/rpmlead.h
@@ -3,7 +3,7 @@
/** \ingroup lead
* \file lib/rpmlead.h
- *
+ * Routines to read and write an rpm lead structure for a a package.
*/
#include <rpmlib.h>
diff --git a/lib/rpmlib.h b/lib/rpmlib.h
index db3d71186..53c160ff9 100644
--- a/lib/rpmlib.h
+++ b/lib/rpmlib.h
@@ -1,8 +1,8 @@
#ifndef H_RPMLIB
#define H_RPMLIB
-/** \file lib/rpmlib.h
- * \ingroup rpmcli rpmrc rpmdep rpmtrans rpmdb lead signature header payload dbi
+/** \ingroup rpmcli rpmrc rpmdep rpmtrans rpmdb lead signature header payload dbi
+ * \file lib/rpmlib.h
*
*/
diff --git a/lib/stringbuf.h b/lib/stringbuf.h
index 95474cbde..cc48fac95 100644
--- a/lib/stringbuf.h
+++ b/lib/stringbuf.h
@@ -5,21 +5,44 @@
*
*/
+/**
+ */
typedef /*@abstract@*/ struct StringBufRec *StringBuf;
#ifdef __cplusplus
extern "C" {
#endif
+/**
+ */
/*@only@*/ StringBuf newStringBuf(void);
+
+/**
+ */
void freeStringBuf( /*@only@*/ StringBuf sb);
+
+/**
+ */
void truncStringBuf(StringBuf sb);
+
+/**
+ */
/*@observer@*/ char *getStringBuf(StringBuf sb);
+
+/**
+ */
void stripTrailingBlanksStringBuf(StringBuf sb);
+/**
+ */
#define appendStringBuf(sb, s) appendStringBufAux(sb, s, 0)
+
+/**
+ */
#define appendLineStringBuf(sb, s) appendStringBufAux(sb, s, 1)
+/**
+ */
void appendStringBufAux(StringBuf sb, const char *s, int nl);
#ifdef __cplusplus
diff --git a/macros.in b/macros.in
index b6b786ea6..9411a5cb7 100644
--- a/macros.in
+++ b/macros.in
@@ -1,7 +1,7 @@
-#/*! \page mconfig Current default macro definitions
+#/*! \page config_macros Default configuration: /usr/lib/rpm/macros
# \verbatim
#
-# $Id: macros.in,v 1.73 2001/03/17 19:55:09 jbj Exp $
+# $Id: macros.in,v 1.74 2001/04/10 12:36:45 jbj Exp $
#
# This is a global RPM configuration file. All changes made here will
# be lost when the rpm package is upgraded. Any per-system configuration
diff --git a/po/rpm.pot b/po/rpm.pot
index e03991b0f..d3f49558e 100644
--- a/po/rpm.pot
+++ b/po/rpm.pot
@@ -6,7 +6,7 @@
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
-"POT-Creation-Date: 2001-03-23 10:10-0500\n"
+"POT-Creation-Date: 2001-04-04 13:52-0400\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"
@@ -1861,7 +1861,7 @@ msgstr ""
msgid "Could not open %s: %s\n"
msgstr ""
-#: build/pack.c:489 lib/psm.c:1447
+#: build/pack.c:489 lib/psm.c:1448
#, c-format
msgid "Unable to write package: %s\n"
msgstr ""
@@ -1891,7 +1891,7 @@ msgstr ""
msgid "Unable to write payload to %s: %s\n"
msgstr ""
-#: build/pack.c:571 lib/psm.c:1683
+#: build/pack.c:571 lib/psm.c:1684
#, c-format
msgid "Wrote: %s\n"
msgstr ""
@@ -2487,7 +2487,7 @@ msgid ""
msgstr ""
#: lib/formats.c:28 lib/formats.c:54 lib/formats.c:83 lib/formats.c:124
-#: lib/header.c:2597 lib/header.c:2614 lib/header.c:2634
+#: lib/header.c:2625 lib/header.c:2642 lib/header.c:2662
msgid "(not a number)"
msgstr ""
@@ -2529,32 +2529,32 @@ msgstr ""
msgid "%9d %s\n"
msgstr ""
-#: lib/fsm.c:1041
+#: lib/fsm.c:1040
#, c-format
msgid "%s directory created with perms %04o.\n"
msgstr ""
-#: lib/fsm.c:1343 lib/fsm.c:1460
+#: lib/fsm.c:1342 lib/fsm.c:1459
#, c-format
msgid "%s saved as %s\n"
msgstr ""
-#: lib/fsm.c:1485
+#: lib/fsm.c:1484
#, c-format
msgid "%s rmdir of %s failed: Directory not empty\n"
msgstr ""
-#: lib/fsm.c:1490
+#: lib/fsm.c:1489
#, c-format
msgid "%s rmdir of %s failed: %s\n"
msgstr ""
-#: lib/fsm.c:1499
+#: lib/fsm.c:1498
#, c-format
msgid "%s unlink of %s failed: %s\n"
msgstr ""
-#: lib/fsm.c:1516
+#: lib/fsm.c:1515
#, c-format
msgid "%s created as %s\n"
msgstr ""
@@ -2564,92 +2564,92 @@ msgstr ""
msgid "dataLength() RPM_STRING_TYPE count must be 1.\n"
msgstr ""
-#: lib/header.c:207 lib/header.c:1082 lib/psm.c:377
+#: lib/header.c:207 lib/header.c:1110 lib/psm.c:378
#, c-format
msgid "Data type %d not supported\n"
msgstr ""
-#: lib/header.c:1505
+#: lib/header.c:1533
#, c-format
msgid "Bad count for headerAddEntry(): %d\n"
msgstr ""
#. @-observertrans@
-#: lib/header.c:1950
+#: lib/header.c:1978
#, c-format
msgid "missing { after %"
msgstr ""
#. @-observertrans@
-#: lib/header.c:1980
+#: lib/header.c:2008
msgid "missing } after %{"
msgstr ""
#. @-observertrans@
-#: lib/header.c:1994
+#: lib/header.c:2022
msgid "empty tag format"
msgstr ""
#. @-observertrans@
-#: lib/header.c:2006
+#: lib/header.c:2034
msgid "empty tag name"
msgstr ""
#. @-observertrans@
-#: lib/header.c:2023
+#: lib/header.c:2051
msgid "unknown tag"
msgstr ""
#. @-observertrans@
-#: lib/header.c:2050
+#: lib/header.c:2078
msgid "] expected at end of array"
msgstr ""
#. @-observertrans@
-#: lib/header.c:2068
+#: lib/header.c:2096
msgid "unexpected ]"
msgstr ""
#. @-observertrans@
-#: lib/header.c:2072
+#: lib/header.c:2100
msgid "unexpected }"
msgstr ""
#. @-observertrans@
-#: lib/header.c:2132
+#: lib/header.c:2160
msgid "? expected in expression"
msgstr ""
#. @-observertrans@
-#: lib/header.c:2141
+#: lib/header.c:2169
msgid "{ expected after ? in expression"
msgstr ""
#. @-observertrans@
-#: lib/header.c:2154 lib/header.c:2195
+#: lib/header.c:2182 lib/header.c:2223
msgid "} expected in expression"
msgstr ""
#. @-observertrans@
-#: lib/header.c:2164
+#: lib/header.c:2192
msgid ": expected following ? subexpression"
msgstr ""
#. @-observertrans@
-#: lib/header.c:2180
+#: lib/header.c:2208
msgid "{ expected after : in expression"
msgstr ""
#. @-observertrans@
-#: lib/header.c:2205
+#: lib/header.c:2233
msgid "| expected at end of expression"
msgstr ""
-#: lib/header.c:2376
+#: lib/header.c:2404
msgid "(unknown type)"
msgstr ""
-#: lib/misc.c:328 lib/misc.c:333 lib/misc.c:339
+#: lib/misc.c:338 lib/misc.c:343 lib/misc.c:349
#, c-format
msgid "error creating temporary file %s\n"
msgstr ""
@@ -2932,64 +2932,64 @@ msgstr ""
msgid "unknown error %d encountered while manipulating package %s"
msgstr ""
-#: lib/psm.c:564
+#: lib/psm.c:565
#, c-format
msgid "cannot create %s %s\n"
msgstr ""
-#: lib/psm.c:570
+#: lib/psm.c:571
#, c-format
msgid "cannot write to %s\n"
msgstr ""
-#: lib/psm.c:604
+#: lib/psm.c:605
msgid "source package expected, binary found\n"
msgstr ""
-#: lib/psm.c:706
+#: lib/psm.c:707
msgid "source package contains no .spec file\n"
msgstr ""
-#: lib/psm.c:954
+#: lib/psm.c:955
#, c-format
msgid "execution of %s scriptlet from %s-%s-%s failed, waitpid returned %s\n"
msgstr ""
-#: lib/psm.c:961
+#: lib/psm.c:962
#, c-format
msgid "execution of %s scriptlet from %s-%s-%s failed, exit status %d\n"
msgstr ""
-#: lib/psm.c:1265
+#: lib/psm.c:1266
#, c-format
msgid "%s: %s-%s-%s has %d files, test = %d\n"
msgstr ""
-#: lib/psm.c:1378
+#: lib/psm.c:1379
#, c-format
msgid "%s: %s scriptlet failed (%d), skipping %s-%s-%s\n"
msgstr ""
-#: lib/psm.c:1484
+#: lib/psm.c:1485
#, c-format
msgid "user %s does not exist - using root\n"
msgstr ""
-#: lib/psm.c:1493
+#: lib/psm.c:1494
#, c-format
msgid "group %s does not exist - using root\n"
msgstr ""
-#: lib/psm.c:1522
+#: lib/psm.c:1523
#, c-format
msgid "unpacking of archive failed%s%s: %s\n"
msgstr ""
-#: lib/psm.c:1523
+#: lib/psm.c:1524
msgid " on file "
msgstr ""
-#: lib/psm.c:1774
+#: lib/psm.c:1775
#, c-format
msgid "%s: running %s script(s) (if any)\n"
msgstr ""
@@ -3037,7 +3037,7 @@ msgstr ""
msgid "can't query %s: %s\n"
msgstr ""
-#: lib/query.c:514 lib/query.c:546
+#: lib/query.c:514 lib/query.c:546 lib/rpminstall.c:320 lib/rpminstall.c:447
#, c-format
msgid "open of %s failed: %s\n"
msgstr ""
@@ -3051,9 +3051,9 @@ msgstr ""
msgid "old format source packages cannot be queried\n"
msgstr ""
-#: lib/query.c:556 lib/rpmchecksig.c:87
+#: lib/query.c:556 lib/rpminstall.c:457
#, c-format
-msgid "%s: Fread failed: %s\n"
+msgid "%s: read manifest failed: %s\n"
msgstr ""
#: lib/query.c:599
@@ -3110,7 +3110,7 @@ msgstr ""
msgid "record %d could not be read\n"
msgstr ""
-#: lib/query.c:744 lib/rpminstall.c:566
+#: lib/query.c:744 lib/rpminstall.c:591
#, c-format
msgid "package %s is not installed\n"
msgstr ""
@@ -3129,6 +3129,11 @@ msgstr ""
msgid "%s: Fwrite failed: %s\n"
msgstr ""
+#: lib/rpmchecksig.c:87
+#, c-format
+msgid "%s: Fread failed: %s\n"
+msgstr ""
+
#: lib/rpmchecksig.c:121 lib/rpmchecksig.c:253
#, c-format
msgid "%s: readLead failed\n"
@@ -3341,122 +3346,94 @@ msgstr ""
msgid "failed to remove directory %s: %s\n"
msgstr ""
-#: lib/rpminstall.c:149
+#: lib/rpminstall.c:162
msgid "Preparing..."
msgstr ""
-#: lib/rpminstall.c:151
+#: lib/rpminstall.c:164
msgid "Preparing packages for installation..."
msgstr ""
-#: lib/rpminstall.c:210
-msgid "counting packages to install\n"
-msgstr ""
-
-#: lib/rpminstall.c:214
-#, c-format
-msgid "found %d packages\n"
-msgstr ""
-
-#: lib/rpminstall.c:219
-msgid "looking for packages to download\n"
-msgstr ""
-
-#: lib/rpminstall.c:234
-#, c-format
-msgid "skipping %s - rpmGlob failed(%d)\n"
-msgstr ""
-
-#: lib/rpminstall.c:249
+#: lib/rpminstall.c:271
#, c-format
msgid "Retrieving %s\n"
msgstr ""
#. XXX undefined %{name}/%{version}/%{release} here
#. XXX %{_tmpdir} does not exist
-#: lib/rpminstall.c:259
+#: lib/rpminstall.c:281
#, c-format
msgid " ... as %s\n"
msgstr ""
-#: lib/rpminstall.c:263
+#: lib/rpminstall.c:285
#, c-format
msgid "skipping %s - transfer failed - %s\n"
msgstr ""
-#: lib/rpminstall.c:290
-#, c-format
-msgid "retrieved %d packages\n"
-msgstr ""
-
-#: lib/rpminstall.c:306 lib/rpminstall.c:487
-#, c-format
-msgid "cannot open file %s: %s\n"
-msgstr ""
-
-#: lib/rpminstall.c:320
-#, c-format
-msgid "%s does not appear to be a RPM package\n"
-msgstr ""
-
-#: lib/rpminstall.c:328 lib/rpminstall.c:634
-#, c-format
-msgid "%s cannot be installed\n"
-msgstr ""
-
-#: lib/rpminstall.c:344
+#: lib/rpminstall.c:353
#, c-format
msgid "cannot open Packages database in %s\n"
msgstr ""
-#: lib/rpminstall.c:366
+#: lib/rpminstall.c:375
#, c-format
msgid "package %s is not relocateable\n"
msgstr ""
-#: lib/rpminstall.c:411
+#: lib/rpminstall.c:421
#, c-format
msgid "error reading from file %s\n"
msgstr ""
-#: lib/rpminstall.c:416
+#: lib/rpminstall.c:427
#, c-format
msgid "file %s requires a newer version of RPM\n"
msgstr ""
-#: lib/rpminstall.c:433
+#: lib/rpminstall.c:439 lib/rpminstall.c:659
+#, c-format
+msgid "%s cannot be installed\n"
+msgstr ""
+
+#: lib/rpminstall.c:471
#, c-format
msgid "found %d source and %d binary packages\n"
msgstr ""
-#: lib/rpminstall.c:446
+#: lib/rpminstall.c:486
msgid "failed dependencies:\n"
msgstr ""
-#: lib/rpminstall.c:467
+#: lib/rpminstall.c:507
msgid "installing binary packages\n"
msgstr ""
-#: lib/rpminstall.c:553
+#: lib/rpminstall.c:525
+#, c-format
+msgid "cannot open file %s: %s\n"
+msgstr ""
+
+#: lib/rpminstall.c:578
#, c-format
msgid "cannot open %s/packages.rpm\n"
msgstr ""
-#: lib/rpminstall.c:569
+#: lib/rpminstall.c:594
#, c-format
msgid "\"%s\" specifies multiple packages\n"
msgstr ""
-#: lib/rpminstall.c:592
+#: lib/rpminstall.c:617
msgid "removing these packages would break dependencies:\n"
msgstr ""
-#: lib/rpminstall.c:621
+#: lib/rpminstall.c:646
#, c-format
msgid "cannot open %s: %s\n"
msgstr ""
-#: lib/rpminstall.c:627
+#: lib/rpminstall.c:652
#, c-format
msgid "Installing %s\n"
msgstr ""
@@ -3679,48 +3656,48 @@ msgstr ""
msgid "You must set \"%%_pgp_name\" in your macro file\n"
msgstr ""
-#: lib/transaction.c:404
+#: lib/transaction.c:420
msgid "========== relocations\n"
msgstr ""
-#: lib/transaction.c:407
+#: lib/transaction.c:423
#, c-format
msgid "%5d exclude %s\n"
msgstr ""
-#: lib/transaction.c:410
+#: lib/transaction.c:426
#, c-format
msgid "%5d relocate %s -> %s\n"
msgstr ""
-#: lib/transaction.c:484
+#: lib/transaction.c:495
#, c-format
msgid "excluding multilib path %s%s\n"
msgstr ""
-#: lib/transaction.c:533
+#: lib/transaction.c:557
#, c-format
msgid "excluding %s %s\n"
msgstr ""
-#: lib/transaction.c:540
+#: lib/transaction.c:567
#, c-format
msgid "relocating %s to %s\n"
msgstr ""
-#: lib/transaction.c:612
+#: lib/transaction.c:642
#, c-format
msgid "relocating directory %s to %s\n"
msgstr ""
-#: lib/transaction.c:617
+#: lib/transaction.c:771
#, c-format
-msgid "excluding directory %s\n"
+msgid "%s skipped due to missingok flag\n"
msgstr ""
-#: lib/transaction.c:741
+#: lib/transaction.c:1359
#, c-format
-msgid "%s skipped due to missingok flag\n"
+msgid "excluding directory %s\n"
msgstr ""
#: lib/verify.c:61
@@ -3731,20 +3708,20 @@ msgstr ""
msgid "do not execute %verifyscript (if any)"
msgstr ""
-#: lib/verify.c:253
+#: lib/verify.c:257
msgid "package lacks both user name and id lists (this should never happen)\n"
msgstr ""
-#: lib/verify.c:271
+#: lib/verify.c:275
msgid "package lacks both group name and id lists (this should never happen)\n"
msgstr ""
-#: lib/verify.c:344
+#: lib/verify.c:348
#, c-format
msgid "missing %s"
msgstr ""
-#: lib/verify.c:425
+#: lib/verify.c:429
#, c-format
msgid "Unsatisfied dependencies for %s-%s-%s: "
msgstr ""
diff --git a/python/hash.h b/python/hash.h
index 954ad3bf4..714cc4626 100644
--- a/python/hash.h
+++ b/python/hash.h
@@ -1,6 +1,10 @@
#ifndef H_HASH
#define H_HASH
+/** \ingroup python
+ * \file python/hash.h
+ */
+
struct hash_table;
typedef struct hash_table * hashTable;
diff --git a/rpmio/rpmerr.h b/rpmio/rpmerr.h
index 8eda49fee..57b47e3ae 100644
--- a/rpmio/rpmerr.h
+++ b/rpmio/rpmerr.h
@@ -78,16 +78,17 @@ typedef enum rpmerrCode_e {
RPMERR_QFMT = _em(125), /*!< */
RPMERR_DBCONFIG = _em(126), /*!< */
RPMERR_DBERR = _em(127), /*!< */
- RPMERR_BADPACKAGE = _em(128), /*!< */
- RPMERR_FREELIST = _em(129), /*!< */
- RPMERR_DATATYPE = _em(130), /*!< */
+ RPMERR_BADPACKAGE = _em(128), /*!< getNextHeader: %s */
+ RPMERR_FREELIST = _em(129), /*!< free list corrupt (%u)- please ... */
+ RPMERR_DATATYPE = _em(130), /*!< Data type %d not supported */
RPMERR_BUILDROOT = _em(131), /*!< */
- RPMERR_MAKETEMP = _em(132), /*!< */
- RPMERR_FWRITE = _em(133), /*!< */
- RPMERR_FREAD = _em(134), /*!< */
- RPMERR_READLEAD = _em(135), /*!< */
- RPMERR_WRITELEAD = _em(136), /*!< */
+ RPMERR_MAKETEMP = _em(132), /*!< makeTempFile failed */
+ RPMERR_FWRITE = _em(133), /*!< %s: Fwrite failed: %s */
+ RPMERR_FREAD = _em(134), /*!< %s: Fread failed: %s */
+ RPMERR_READLEAD = _em(135), /*!< %s: readLead failed */
+ RPMERR_WRITELEAD = _em(136), /*!< %s: writeLead failed: %s */
RPMERR_QUERYINFO = _en(137), /*!< */
+ RPMERR_MANIFEST = _en(138), /*!< %s: read manifest failed: %s */
RPMERR_BADSIGTYPE = _em(200), /*!< Unknown signature type */
RPMERR_SIGGEN = _em(201), /*!< Error generating signature */
diff --git a/rpmio/rpmlog.h b/rpmio/rpmlog.h
index bbf568e51..b259c3531 100644
--- a/rpmio/rpmlog.h
+++ b/rpmio/rpmlog.h
@@ -4,7 +4,7 @@
/** \ingroup rpmio
* \file rpmio/rpmlog.h
* Yet Another syslog(3) API clone.
- * Used by rpm to unify rpmError() and rpmMessage().
+ * Used to unify rpmError() and rpmMessage() interfaces in rpm.
*/
#include <stdarg.h>
diff --git a/rpmpopt.in b/rpmpopt.in
index f42308b7a..3473598ab 100644
--- a/rpmpopt.in
+++ b/rpmpopt.in
@@ -1,3 +1,5 @@
+#/*! \page config_rpmpopt Default configuration: /usr/lib/rpm/rpmpopt-@VERSION@
+# \verbatim
#
# This file *should not be modified*. Local customizations
# belong in /etc/popt, not here. This file will be replaced
@@ -279,3 +281,6 @@ rpmv alias --ftpport --define '_ftpport !#:+'
rpmv alias --ftpproxy --define '_ftpproxy !#:+'
rpmv alias --httpport --define '_httpport !#:+'
rpmv alias --httpproxy --define '_httpproxy !#:+'
+
+# \endverbatim
+#*/
diff --git a/rpmrc.in b/rpmrc.in
index c89af9535..fbe17a4dd 100644
--- a/rpmrc.in
+++ b/rpmrc.in
@@ -1,4 +1,7 @@
-# $Id: rpmrc.in,v 2.34 2001/02/27 21:30:27 jbj Exp $
+#/*! \page config_rpmrc Default configuration: /usr/lib/rpm/rpmrc
+# \verbatim
+#
+# $Id: rpmrc.in,v 2.35 2001/04/10 12:36:45 jbj Exp $
#
# This is a global RPM configuration file. All changes made here will
# be lost when the rpm package is upgraded. Any per-system configuration
@@ -294,3 +297,5 @@ buildarch_compat: s390: noarch
macrofiles: @RPMCONFIGDIR@/macros:@RPMCONFIGDIR@/%{_target}/macros:@SYSCONFIGDIR@/macros.specspo:@SYSCONFIGDIR@/macros.db1:@SYSCONFIGDIR@/macros:@SYSCONFIGDIR@/%{_target}/macros:~/.rpmmacros
+# \endverbatim
+#*/