Doxygen annotations for config files.
authorjbj <devnull@localhost>
Tue, 10 Apr 2001 12:36:45 +0000 (12:36 +0000)
committerjbj <devnull@localhost>
Tue, 10 Apr 2001 12:36:45 +0000 (12:36 +0000)
Doxygen annotations for rpmdep section.
Add manifests for install modes.

CVS patchset: 4675
CVS date: 2001/04/10 12:36:45

27 files changed:
Doxyfile.in
build/buildio.h
lib/depends.h
lib/fprint.h
lib/fsm.c
lib/fsm.h
lib/hash.h
lib/manifest.c [new file with mode: 0644]
lib/manifest.h [new file with mode: 0644]
lib/md5.h
lib/misc.h
lib/oldrpmdb.h
lib/psm.c
lib/psm.h
lib/query.c
lib/rpmdb.h
lib/rpminstall.c
lib/rpmlead.h
lib/rpmlib.h
lib/stringbuf.h
macros.in
po/rpm.pot
python/hash.h
rpmio/rpmerr.h
rpmio/rpmlog.h
rpmpopt.in
rpmrc.in

index 69b98ff..7ab2489 100644 (file)
@@ -14,7 +14,7 @@
 #---------------------------------------------------------------------------
 
 # The PROJECT_NAME tag is a single word (or a sequence of words surrounded 
 #---------------------------------------------------------------------------
 
 # 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@
 
 
 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, 
 # 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 
 
 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 
 
 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 
 
 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
 
 
 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. 
 # 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 
 
 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). 
 
 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_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 
 
 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 
 
 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
 
 
 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. 
 # 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 
 
 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 
 
 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 
 
 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 
 
 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
 
 
 STRIP_CODE_COMMENTS    = YES
 
@@ -143,47 +143,53 @@ STRIP_CODE_COMMENTS    = YES
 
 CASE_SENSE_NAMES       = 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 
 # 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 
 
 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 
 
 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
 
 
 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 
 # 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] 
 
 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 
 
 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
 
 
 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. 
 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
 
 
 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       = 
 
 
 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:". 
 # 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                = 
 
 
 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 
 # 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 
 
 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 
 
 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
 
 
 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 
 #---------------------------------------------------------------------------
 
 # 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 
 
 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 
 
 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 
 
 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 
 
 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           = 
 
 
 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 
 # 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 \
 
 INPUT                  = \
        ./Doxyheader \
-       ./macros \
        ./build.c \
        ./build.h \
        ./config.h \
        ./build.c \
        ./build.h \
        ./config.h \
+       ./debug.h \
+       ./macros \
        ./rpmqv.c \
        ./rpmqv.c \
+       ./rpmpopt-@VERSION@ \
+       ./rpmrc \
        ./rpm2cpio.c \
        ./system.h \
        ./build/build.c \
        ./rpm2cpio.c \
        ./system.h \
        ./build/build.c \
@@ -422,6 +431,7 @@ INPUT                  = \
        ./popt/poptint.h \
        ./popt/poptparse.c \
        ./python/hash.c \
        ./popt/poptint.h \
        ./popt/poptparse.c \
        ./python/hash.c \
+       ./python/hash.h \
        ./python/rpmmodule.c \
        ./python/upgrade.c \
        ./python/upgrade.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 
 # 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. 
 
 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 
 
 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 
 
 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 
 
 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 
 
 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 
 
 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             = 
 
 
 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 
 # 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 
 
 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
 
 
 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 
 
 # 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 
 
 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 
 
 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          = 
 
 
 IGNORE_PREFIX          = 
 
@@ -522,13 +532,13 @@ IGNORE_PREFIX          =
 #---------------------------------------------------------------------------
 
 # If the GENERATE_HTML tag is set to YES (the default) Doxygen will 
 #---------------------------------------------------------------------------
 
 # 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 
 
 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
 
 
 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 
 # 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 
 
 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) 
 
 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
 
 
 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 
 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 
 
 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]) 
 
 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
 
 
 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+ 
 # 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 
 
 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
 
 
 TREEVIEW_WIDTH         = 250
 
@@ -611,57 +621,57 @@ TREEVIEW_WIDTH         = 250
 #---------------------------------------------------------------------------
 
 # If the GENERATE_LATEX tag is set to YES (the default) Doxygen will 
 #---------------------------------------------------------------------------
 
 # 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 
 
 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 
 
 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 
 
 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 
 
 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 
 
 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 
 
 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 
 
 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. 
 
 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
 
 
 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 
 
 # 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 
 
 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
 
 
 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. 
 # 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 
 
 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    = 
 
 
 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 
 #---------------------------------------------------------------------------
 # 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 
 
 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 
 
 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
 
 
 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 
 
 # 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 
 
 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 
 
 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 
 
 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 
 
 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 
 
 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  = 
 
 
 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 
 # 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. 
 
 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      = 
 
 
 EXPAND_AS_DEFINED      = 
 
@@ -782,23 +797,23 @@ EXPAND_AS_DEFINED      =
 # Configuration::addtions related to external references   
 #---------------------------------------------------------------------------
 
 # 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 
 
 # 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 
 
 # 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 
 
 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
 
 
 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 
 # 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
 
 
 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 
 # 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 
 
 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 
 
 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 
 
 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 
 
 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               = 
 
 
 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 
 # (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
 
 
 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 
 # (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 
 
 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 
 
 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
 
 
 DOT_CLEANUP            = YES
 
@@ -883,41 +898,41 @@ DOT_CLEANUP            = YES
 #---------------------------------------------------------------------------
 
 # The SEARCHENGINE tag specifies whether or not a search engine should be 
 #---------------------------------------------------------------------------
 
 # 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. 
 
 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 
 
 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 
 
 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 
 
 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 
 
 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 
 
 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          = 
 
 EXT_DOC_PATHS          = 
index dd80378..2f67ff0 100644 (file)
@@ -3,7 +3,9 @@
 
 /** \ingroup rpmbuild
  * \file build/buildio.h
 
 /** \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"
  */
 
 #include "psm.h"
index 8786c1c..e5f5e79 100644 (file)
@@ -1,13 +1,14 @@
 #ifndef H_DEPENDS
 #define H_DEPENDS
 
 #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>
 
  */
 
 #include <header.h>
 
-/**
+/** \ingroup rpmdep
  * Dependncy ordering information.
  */
 struct tsortInfo {
  * Dependncy ordering information.
  */
 struct tsortInfo {
@@ -23,7 +24,7 @@ struct tsortInfo {
     int                tsi_qcnt;
 } ;
 
     int                tsi_qcnt;
 } ;
 
-/**
+/** \ingroup rpmdep
  * Info about a single package to be installed.
  */
 struct availablePackage {
  * Info about a single package to be installed.
  */
 struct availablePackage {
@@ -49,7 +50,7 @@ struct availablePackage {
 /*@null@*/ FD_t fd;
 } ;
 
 /*@null@*/ FD_t fd;
 } ;
 
-/**
+/** \ingroup rpmdep
  * A single available item (e.g. a Provides: dependency).
  */
 struct availableIndexEntry {
  * A single available item (e.g. a Provides: dependency).
  */
 struct availableIndexEntry {
@@ -61,7 +62,7 @@ struct availableIndexEntry {
     } type;                            /*!< Type of available item. */
 } ;
 
     } type;                            /*!< Type of available item. */
 } ;
 
-/**
+/** \ingroup rpmdep
  * Index of all available items.
  */
 struct availableIndex {
  * Index of all available items.
  */
 struct availableIndex {
@@ -69,7 +70,7 @@ struct availableIndex {
     int size;                          /*!< No. of available items. */
 } ;
 
     int size;                          /*!< No. of available items. */
 } ;
 
-/**
+/** \ingroup rpmdep
  * A file to be installed/removed.
  */
 struct fileIndexEntry {
  * A file to be installed/removed.
  */
 struct fileIndexEntry {
@@ -78,7 +79,7 @@ struct fileIndexEntry {
 /*@dependent@*/ const char * baseName; /*!< File basename. */
 } ;
 
 /*@dependent@*/ const char * baseName; /*!< File basename. */
 } ;
 
-/**
+/** \ingroup rpmdep
  * A directory to be installed/removed.
  */
 struct dirInfo {
  * A directory to be installed/removed.
  */
 struct dirInfo {
@@ -88,7 +89,7 @@ struct dirInfo {
     int numFiles;                      /*!< No. files in directory. */
 } ;
 
     int numFiles;                      /*!< No. files in directory. */
 } ;
 
-/**
+/** \ingroup rpmdep
  * Set of available packages, items, and directories.
  */
 struct availableList {
  * Set of available packages, items, and directories.
  */
 struct availableList {
@@ -101,7 +102,7 @@ struct availableList {
 /*@owned@*/ struct dirInfo * dirs;     /*!< Set of directories. */
 } ;
 
 /*@owned@*/ struct dirInfo * dirs;     /*!< Set of directories. */
 } ;
 
-/**
+/** \ingroup rpmdep
  * A single package instance to be installed/removed atomically.
  */
 struct transactionElement {
  * A single package instance to be installed/removed atomically.
  */
 struct transactionElement {
@@ -118,7 +119,7 @@ struct transactionElement {
     } u;
 } ;
 
     } u;
 } ;
 
-/**
+/** \ingroup rpmdep
  * The set of packages to be installed/removed atomically.
  */
 struct rpmTransactionSet_s {
  * The set of packages to be installed/removed atomically.
  */
 struct rpmTransactionSet_s {
@@ -151,7 +152,7 @@ struct rpmTransactionSet_s {
     int id;                    /*!< Transaction id. */
 } ;
 
     int id;                    /*!< Transaction id. */
 } ;
 
-/**
+/** \ingroup rpmdep
  * Problems encountered while checking dependencies.
  */
 struct problemsSet {
  * Problems encountered while checking dependencies.
  */
 struct problemsSet {
@@ -165,7 +166,7 @@ extern "C" {
 #endif
 
 /* XXX lib/scriptlet.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.
  * Compare package name-version-release from header with dependency, looking
  * for overlap.
  * @deprecated Remove from API when obsoletes is correctly eliminated.
index 26de6d8..baa6e11 100644 (file)
@@ -1,7 +1,8 @@
 #ifndef H_FINGERPRINT
 #define H_FINGERPRINT
 
 #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".
  */
 
  * Identify a file name path by a unique "finger print".
  */
 
index 0983a8e..4357cc9 100644 (file)
--- a/lib/fsm.c
+++ b/lib/fsm.c
@@ -1,6 +1,6 @@
 /** \ingroup payload
  * \file lib/fsm.c
 /** \ingroup payload
  * \file lib/fsm.c
- *  Handle payloads within rpm packages.
+ * File state machine to handle a payload from a package.
  */
 
 #include "system.h"
  */
 
 #include "system.h"
index e8e1b0f..34b82cb 100644 (file)
--- a/lib/fsm.h
+++ b/lib/fsm.h
@@ -1,7 +1,9 @@
 #ifndef H_FSM
 #define H_FSM
 
 #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>
  */
 
 #include <rpmlib.h>
index 0cd98e0..48ff9ca 100644 (file)
@@ -1,7 +1,8 @@
 #ifndef H_HASH
 #define H_HASH
 
 #ifndef H_HASH
 #define H_HASH
 
-/** \file lib/hash.h
+/**
+ * \file lib/hash.h
  * Hash table implemenation.
  */
 
  * Hash table implemenation.
  */
 
diff --git a/lib/manifest.c b/lib/manifest.c
new file mode 100644 (file)
index 0000000..30345cf
--- /dev/null
@@ -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 (file)
index 0000000..15371a8
--- /dev/null
@@ -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 */
index 8415c77..bfa2e64 100644 (file)
--- a/lib/md5.h
+++ b/lib/md5.h
@@ -1,7 +1,8 @@
 #ifndef MD5_H
 #define MD5_H
 
 #ifndef MD5_H
 #define MD5_H
 
-/** \file lib/md5.h
+/**
+ * \file lib/md5.h
  * @todo Eliminate, use rpmio version instead.
  */
 
  * @todo Eliminate, use rpmio version instead.
  */
 
index f481edb..8f443f0 100644 (file)
@@ -1,7 +1,8 @@
 #ifndef H_MISC
 #define H_MISC
 
 #ifndef H_MISC
 #define H_MISC
 
-/** \file lib/misc.h
+/**
+ * \file lib/misc.h
  *
  */
 
  *
  */
 
index cce86cb..5eb925a 100644 (file)
@@ -1,7 +1,8 @@
 #ifndef _H_OLDRPMDB
 #define _H_OLDRPMDB
 
 #ifndef _H_OLDRPMDB
 #define _H_OLDRPMDB
 
-/** \file lib/oldrpmdb.h
+/**
+ * \file lib/oldrpmdb.h
  *
  */
 
  *
  */
 
index 2b55fbb..5825465 100644 (file)
--- a/lib/psm.c
+++ b/lib/psm.c
@@ -1,5 +1,6 @@
 /** \ingroup rpmtrans payload
  * \file lib/psm.c
 /** \ingroup rpmtrans payload
  * \file lib/psm.c
+ * Package state machine to handle a package from a transaction set.
  */
 
 #include "system.h"
  */
 
 #include "system.h"
index f39c18f..d04c365 100644 (file)
--- a/lib/psm.h
+++ b/lib/psm.h
@@ -1,7 +1,9 @@
 #ifndef H_PSM
 #define H_PSM
 
 #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>
  */
 
 #include <rpmlib.h>
index d94e550..cf3b414 100644 (file)
@@ -542,7 +542,7 @@ restart:
 
            /* Try to read a package manifest. */
            fd = Fopen(fileURL, "r.fpio");
 
            /* 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);
                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) {
            /* 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);
                retcode = 1;
            }
            Fclose(fd);
index 9954bc4..9beead9 100644 (file)
@@ -3,7 +3,7 @@
 
 /** \ingroup rpmdb dbi db1 db3
  * \file lib/rpmdb.h
 
 /** \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>
  */
 
 #include <rpmlib.h>
index 7d881b0..351b3d9 100644 (file)
@@ -8,6 +8,7 @@
 #include <rpmmacro.h>
 #include <rpmurl.h>
 
 #include <rpmmacro.h>
 #include <rpmurl.h>
 
+#include "manifest.h"
 #include "misc.h"
 #include "debug.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)
 {
                           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 {
 #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);
                                  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,
 
 /** @todo Generalize --freshen policies. */
 int rpmInstall(const char * rootdir, const char ** fileArgv,
-               rpmtransFlags transFlags, 
+               rpmtransFlags transFlags,
                rpmInstallInterfaceFlags interfaceFlags,
                rpmInstallInterfaceFlags interfaceFlags,
-               rpmprobFilterFlags probFilter, 
+               rpmprobFilterFlags probFilter,
                rpmRelocation * relocations)
 {
                rpmRelocation * relocations)
 {
+    rpmTransactionSet ts = NULL;
+    int notifyFlags = interfaceFlags | (rpmIsVerbose() ? INSTALL_LABEL : 0 );
     rpmdb db = NULL;
     rpmdb db = NULL;
-    FD_t fd;
-    int i;
-    int mode, rc, major;
     const char ** pkgURL = NULL;
     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;
     int numFailed = 0;
-    Header h;
-    int isSource;
-    rpmTransactionSet ts = NULL;
-    int numConflicts;
     int stopInstall = 0;
     int stopInstall = 0;
-    int notifyFlags = interfaceFlags | (rpmIsVerbose() ? INSTALL_LABEL : 0 );
     int dbIsOpen = 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;
 
     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:
        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:
        }   break;
        case URL_IS_PATH:
        default:
-           pkgURL[i++] = *fileURL;
+           pkgURL[pkgx] = fileURL;
+           fileURL = NULL;
+           pkgx++;
            break;
        }
     }
            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;
        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)) {
        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);
            if (fd) Fclose(fd);
-           numFailed++;
-           pkgURL[i] = NULL;
+           numFailed++; *fnp = NULL;
            continue;
        }
 
            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);
                                        "%{_dbpath}", NULL);
-                       rpmMessage(RPMMESS_ERROR, 
+                   rpmMessage(RPMMESS_ERROR,
                                _("cannot open Packages database in %s\n"), dn);
                                _("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)) {
                                       (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);
                               _("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);
                               (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"),
                            _("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;
        }
            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);
 
                numSRPMS, numRPMS);
 
-    if (numFailed) goto errxit;
+    if (numFailed) goto exit;
 
     if (numRPMS && !(interfaceFlags & INSTALL_NODEPS)) {
        struct rpmDependencyConflict * conflicts;
 
     if (numRPMS && !(interfaceFlags & INSTALL_NODEPS)) {
        struct rpmDependencyConflict * conflicts;
+       int numConflicts;
+
        if (rpmdepCheck(ts, &conflicts, &numConflicts)) {
            numFailed = numPkgs;
            stopInstall = 1;
        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"));
        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) {
                                    NULL, &probs, transFlags, probFilter);
 
        if (rc < 0) {
@@ -486,13 +518,11 @@ int rpmInstall(const char * rootdir, const char ** fileArgv,
        if (probs) rpmProblemSetFree(probs);
     }
 
        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)) {
     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;
                           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);
     pkgURL = _free(pkgURL);
-
-    /* FIXME how do we close our various fd's? */
-
     if (dbIsOpen) rpmdbClose(db);
     if (dbIsOpen) rpmdbClose(db);
-
     return numFailed;
     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,
 }
 
 int rpmErase(const char * rootdir, const char ** argv,
-               rpmtransFlags transFlags, 
+               rpmtransFlags transFlags,
                rpmEraseInterfaceFlags interfaceFlags)
 {
     rpmdb db;
                rpmEraseInterfaceFlags interfaceFlags)
 {
     rpmdb db;
@@ -549,7 +567,7 @@ int rpmErase(const char * rootdir, const char ** argv,
     int numPackages = 0;
     rpmProblemSet probs;
 
     int numPackages = 0;
     rpmProblemSet probs;
 
-    if (transFlags & RPMTRANS_FLAG_TEST) 
+    if (transFlags & RPMTRANS_FLAG_TEST)
        mode = O_RDONLY;
     else
        mode = O_RDWR | O_EXCL;
        mode = O_RDONLY;
     else
        mode = O_RDWR | O_EXCL;
index c04312e..4ed9d62 100644 (file)
@@ -3,7 +3,7 @@
 
 /** \ingroup lead
  * \file lib/rpmlead.h
 
 /** \ingroup lead
  * \file lib/rpmlead.h
- *
+ * Routines to read and write an rpm lead structure for a a package.
  */
 
 #include <rpmlib.h>
  */
 
 #include <rpmlib.h>
index db3d711..53c160f 100644 (file)
@@ -1,8 +1,8 @@
 #ifndef H_RPMLIB
 #define        H_RPMLIB
 
 #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
  *
  */
 
  *
  */
 
index 95474cb..cc48fac 100644 (file)
@@ -5,21 +5,44 @@
  *
  */
 
  *
  */
 
+/**
+ */
 typedef /*@abstract@*/ struct StringBufRec *StringBuf;
 
 #ifdef __cplusplus
 extern "C" {
 #endif
 
 typedef /*@abstract@*/ struct StringBufRec *StringBuf;
 
 #ifdef __cplusplus
 extern "C" {
 #endif
 
+/**
+ */
 /*@only@*/ StringBuf newStringBuf(void);
 /*@only@*/ StringBuf newStringBuf(void);
+
+/**
+ */
 void freeStringBuf( /*@only@*/ StringBuf sb);
 void freeStringBuf( /*@only@*/ StringBuf sb);
+
+/**
+ */
 void truncStringBuf(StringBuf sb);
 void truncStringBuf(StringBuf sb);
+
+/**
+ */
 /*@observer@*/ char *getStringBuf(StringBuf sb);
 /*@observer@*/ char *getStringBuf(StringBuf sb);
+
+/**
+ */
 void stripTrailingBlanksStringBuf(StringBuf sb);
 
 void stripTrailingBlanksStringBuf(StringBuf sb);
 
+/**
+ */
 #define appendStringBuf(sb, s)     appendStringBufAux(sb, s, 0)
 #define appendStringBuf(sb, s)     appendStringBufAux(sb, s, 0)
+
+/**
+ */
 #define appendLineStringBuf(sb, s) appendStringBufAux(sb, s, 1)
 
 #define appendLineStringBuf(sb, s) appendStringBufAux(sb, s, 1)
 
+/**
+ */
 void appendStringBufAux(StringBuf sb, const char *s, int nl);
 
 #ifdef __cplusplus
 void appendStringBufAux(StringBuf sb, const char *s, int nl);
 
 #ifdef __cplusplus
index b6b786e..9411a5c 100644 (file)
--- 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
 #
 # \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
 #
 # This is a global RPM configuration file. All changes made here will
 # be lost when the rpm package is upgraded. Any per-system configuration
index e03991b..d3f4955 100644 (file)
@@ -6,7 +6,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 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"
 "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 ""
 
 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 ""
 #, 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 ""
 
 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 ""
 #, 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
 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 ""
 
 msgid "(not a number)"
 msgstr ""
 
@@ -2529,32 +2529,32 @@ msgstr ""
 msgid "%9d %s\n"
 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 #, 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 ""
 
 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 ""
 
 #, 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@
 #, 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@
 #, c-format
 msgid "missing { after %"
 msgstr ""
 
 #. @-observertrans@
-#: lib/header.c:1980
+#: lib/header.c:2008
 msgid "missing } after %{"
 msgstr ""
 
 #. @-observertrans@
 msgid "missing } after %{"
 msgstr ""
 
 #. @-observertrans@
-#: lib/header.c:1994
+#: lib/header.c:2022
 msgid "empty tag format"
 msgstr ""
 
 #. @-observertrans@
 msgid "empty tag format"
 msgstr ""
 
 #. @-observertrans@
-#: lib/header.c:2006
+#: lib/header.c:2034
 msgid "empty tag name"
 msgstr ""
 
 #. @-observertrans@
 msgid "empty tag name"
 msgstr ""
 
 #. @-observertrans@
-#: lib/header.c:2023
+#: lib/header.c:2051
 msgid "unknown tag"
 msgstr ""
 
 #. @-observertrans@
 msgid "unknown tag"
 msgstr ""
 
 #. @-observertrans@
-#: lib/header.c:2050
+#: lib/header.c:2078
 msgid "] expected at end of array"
 msgstr ""
 
 #. @-observertrans@
 msgid "] expected at end of array"
 msgstr ""
 
 #. @-observertrans@
-#: lib/header.c:2068
+#: lib/header.c:2096
 msgid "unexpected ]"
 msgstr ""
 
 #. @-observertrans@
 msgid "unexpected ]"
 msgstr ""
 
 #. @-observertrans@
-#: lib/header.c:2072
+#: lib/header.c:2100
 msgid "unexpected }"
 msgstr ""
 
 #. @-observertrans@
 msgid "unexpected }"
 msgstr ""
 
 #. @-observertrans@
-#: lib/header.c:2132
+#: lib/header.c:2160
 msgid "? expected in expression"
 msgstr ""
 
 #. @-observertrans@
 msgid "? expected in expression"
 msgstr ""
 
 #. @-observertrans@
-#: lib/header.c:2141
+#: lib/header.c:2169
 msgid "{ expected after ? in expression"
 msgstr ""
 
 #. @-observertrans@
 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@
 msgid "} expected in expression"
 msgstr ""
 
 #. @-observertrans@
-#: lib/header.c:2164
+#: lib/header.c:2192
 msgid ": expected following ? subexpression"
 msgstr ""
 
 #. @-observertrans@
 msgid ": expected following ? subexpression"
 msgstr ""
 
 #. @-observertrans@
-#: lib/header.c:2180
+#: lib/header.c:2208
 msgid "{ expected after : in expression"
 msgstr ""
 
 #. @-observertrans@
 msgid "{ expected after : in expression"
 msgstr ""
 
 #. @-observertrans@
-#: lib/header.c:2205
+#: lib/header.c:2233
 msgid "| expected at end of expression"
 msgstr ""
 
 msgid "| expected at end of expression"
 msgstr ""
 
-#: lib/header.c:2376
+#: lib/header.c:2404
 msgid "(unknown type)"
 msgstr ""
 
 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 ""
 #, 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 ""
 
 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 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 ""
 
 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, c-format
 msgid "unpacking of archive failed%s%s: %s\n"
 msgstr ""
 
-#: lib/psm.c:1523
+#: lib/psm.c:1524
 msgid " on file "
 msgstr ""
 
 msgid " on file "
 msgstr ""
 
-#: lib/psm.c:1774
+#: lib/psm.c:1775
 #, c-format
 msgid "%s: running %s script(s) (if any)\n"
 msgstr ""
 #, 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 ""
 
 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 ""
 #, 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 ""
 
 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
 #, c-format
-msgid "%s: Fread failed: %s\n"
+msgid "%s: read manifest failed: %s\n"
 msgstr ""
 
 #: lib/query.c:599
 msgstr ""
 
 #: lib/query.c:599
@@ -3110,7 +3110,7 @@ msgstr ""
 msgid "record %d could not be read\n"
 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 ""
 #, c-format
 msgid "package %s is not installed\n"
 msgstr ""
@@ -3129,6 +3129,11 @@ msgstr ""
 msgid "%s: Fwrite failed: %s\n"
 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"
 #: 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 ""
 
 msgid "failed to remove directory %s: %s\n"
 msgstr ""
 
-#: lib/rpminstall.c:149
+#: lib/rpminstall.c:162
 msgid "Preparing..."
 msgstr ""
 
 msgid "Preparing..."
 msgstr ""
 
-#: lib/rpminstall.c:151
+#: lib/rpminstall.c:164
 msgid "Preparing packages for installation..."
 msgstr ""
 
 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
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 msgid "failed dependencies:\n"
 msgstr ""
 
-#: lib/rpminstall.c:467
+#: lib/rpminstall.c:507
 msgid "installing binary packages\n"
 msgstr ""
 
 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 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 ""
 
 #, c-format
 msgid "cannot open %s: %s\n"
 msgstr ""
 
-#: lib/rpminstall.c:627
+#: lib/rpminstall.c:652
 #, c-format
 msgid "Installing %s\n"
 msgstr ""
 #, c-format
 msgid "Installing %s\n"
 msgstr ""
@@ -3679,48 +3656,48 @@ msgstr ""
 msgid "You must set \"%%_pgp_name\" in your macro file\n"
 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 ""
 
 msgid "========== relocations\n"
 msgstr ""
 
-#: lib/transaction.c:407
+#: lib/transaction.c:423
 #, c-format
 msgid "%5d exclude  %s\n"
 msgstr ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, 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 ""
 
 #, c-format
 msgid "relocating directory %s to %s\n"
 msgstr ""
 
-#: lib/transaction.c:617
+#: lib/transaction.c:771
 #, c-format
 #, c-format
-msgid "excluding directory %s\n"
+msgid "%s skipped due to missingok flag\n"
 msgstr ""
 
 msgstr ""
 
-#: lib/transaction.c:741
+#: lib/transaction.c:1359
 #, c-format
 #, c-format
-msgid "%s skipped due to missingok flag\n"
+msgid "excluding directory %s\n"
 msgstr ""
 
 #: lib/verify.c:61
 msgstr ""
 
 #: lib/verify.c:61
@@ -3731,20 +3708,20 @@ msgstr ""
 msgid "do not execute %verifyscript (if any)"
 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 ""
 
 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 ""
 
 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 ""
 
 #, c-format
 msgid "missing    %s"
 msgstr ""
 
-#: lib/verify.c:425
+#: lib/verify.c:429
 #, c-format
 msgid "Unsatisfied dependencies for %s-%s-%s: "
 msgstr ""
 #, c-format
 msgid "Unsatisfied dependencies for %s-%s-%s: "
 msgstr ""
index 954ad3b..714cc46 100644 (file)
@@ -1,6 +1,10 @@
 #ifndef H_HASH
 #define H_HASH
 
 #ifndef H_HASH
 #define H_HASH
 
+/** \ingroup python
+ * \file python/hash.h 
+ */
+
 struct hash_table;
 typedef struct hash_table * hashTable;
 
 struct hash_table;
 typedef struct hash_table * hashTable;
 
index 8eda49f..57b47e3 100644 (file)
@@ -78,16 +78,17 @@ typedef enum rpmerrCode_e {
     RPMERR_QFMT                = _em(125), /*!< */
     RPMERR_DBCONFIG    = _em(126), /*!< */
     RPMERR_DBERR       = _em(127), /*!< */
     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_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_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 */
 
     RPMERR_BADSIGTYPE  = _em(200), /*!< Unknown signature type */
     RPMERR_SIGGEN      = _em(201), /*!< Error generating signature */
index bbf568e..b259c35 100644 (file)
@@ -4,7 +4,7 @@
 /** \ingroup rpmio
  * \file rpmio/rpmlog.h
  * Yet Another syslog(3) API clone.
 /** \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>
  */
 
 #include <stdarg.h>
index f42308b..3473598 100644 (file)
@@ -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
 #
 # 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 !#:+'
 rpmv   alias --ftpproxy        --define '_ftpproxy !#:+'
 rpmv   alias --httpport        --define '_httpport !#:+'
 rpmv   alias --httpproxy       --define '_httpproxy !#:+'
+
+# \endverbatim
+#*/
index c89af95..fbe17a4 100644 (file)
--- 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
 #
 # 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
 
 
 macrofiles:    @RPMCONFIGDIR@/macros:@RPMCONFIGDIR@/%{_target}/macros:@SYSCONFIGDIR@/macros.specspo:@SYSCONFIGDIR@/macros.db1:@SYSCONFIGDIR@/macros:@SYSCONFIGDIR@/%{_target}/macros:~/.rpmmacros
 
+# \endverbatim
+#*/