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