diff options
| author | 2007-09-30 18:34:17 +0200 | |
|---|---|---|
| committer | 2007-09-30 18:34:17 +0200 | |
| commit | 400fc71e7887799b3b55d7d429303275311b3dee (patch) | |
| tree | abe67def2afd45cc5db8ed725c557186c19eeb7d /lib/DpkgControl.py | |
| parent | 649a6c98836e828f9b9713cd2aa44fa29a2482b2 (diff) | |
Minor changes for package building
* I'm the new Maintainer (Closes: #414621)
* build package with cdbs
* add XS-Vcs tags to git archive
* move python-dev and python-support to B-Depends (instead of B-D-I) to clam
lintian
Diffstat (limited to 'lib/DpkgControl.py')
| -rwxr-xr-x | lib/DpkgControl.py | 156 |
1 files changed, 0 insertions, 156 deletions
diff --git a/lib/DpkgControl.py b/lib/DpkgControl.py deleted file mode 100755 index 38147c7..0000000 --- a/lib/DpkgControl.py +++ /dev/null @@ -1,156 +0,0 @@ -# DpkgControl.py -# -# This module implements control file parsing. -# -# DpkgParagraph is a low-level class, that reads/parses a single paragraph -# from a file object. -# -# DpkgControl uses DpkgParagraph in a loop, pulling out the value of a -# defined key(package), and using that as a key in it's internal -# dictionary. -# -# DpkgSourceControl grabs the first paragraph from the file object, stores -# it in object.source, then passes control to DpkgControl.load, to parse -# the rest of the file. -# -# To test this, pass it a filetype char, a filename, then, optionally, -# the key to a paragraph to display, and if a fourth arg is given, only -# show that field. -# -# Copyright 2001 Adam Heath <doogie@debian.org> -# -# This file is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - -import re, string -from DpkgDatalist import * -from minidinstall.SignedFile import * -from types import ListType - -class DpkgParagraph(DpkgOrderedDatalist): - caseSensitive = 0 - trueFieldCasing = {} - - def setCaseSensitive( self, value ): self.caseSensitive = value - - def load( self, f ): - "Paragraph data from a file object." - key = None - value = None - while 1: - line = f.readline() - if not line: - return - # skip blank lines until we reach a paragraph - if line == '\n': - if not self: - continue - else: - return - line = line[ :-1 ] - if line[ 0 ] != ' ': - key, value = string.split( line, ":", 1 ) - if value: value = value[ 1: ] - if not self.caseSensitive: - newkey = string.lower( key ) - if not self.trueFieldCasing.has_key( key ): - self.trueFieldCasing[ newkey ] = key - key = newkey - else: - if isinstance( value, ListType ): - value.append( line[ 1: ] ) - else: - value = [ value, line[ 1: ] ] - self[ key ] = value - - def _storeField( self, f, value, lead = " " ): - if isinstance( value, ListType ): - value = string.join( map( lambda v, lead = lead: v and ( lead + v ) or v, value ), "\n" ) - else: - if value: value = lead + value - f.write( "%s\n" % ( value ) ) - - def _store( self, f ): - "Write our paragraph data to a file object" - for key in self.keys(): - value = self[ key ] - if self.trueFieldCasing.has_key( key ): - key = self.trueFieldCasing[ key ] - f.write( "%s:" % key ) - self._storeField( f, value ) - -class DpkgControl(DpkgOrderedDatalist): - - key = "package" - caseSensitive = 0 - - def setkey( self, key ): self.key = key - def setCaseSensitive( self, value ): self.caseSensitive = value - - def _load_one( self, f ): - p = DpkgParagraph( None ) - p.setCaseSensitive( self.caseSensitive ) - p.load( f ) - return p - - def load( self, f ): - while 1: - p = self._load_one( f ) - if not p: break - self[ p[ self.key ] ] = p - - def _store( self, f ): - "Write our control data to a file object" - - for key in self.keys(): - self[ key ]._store( f ) - f.write( "\n" ) - -class DpkgSourceControl( DpkgControl ): - source = None - - def load( self, f ): - f = SignedFile(f) - self.source = self._load_one( f ) - DpkgControl.load( self, f ) - - def __repr__( self ): - return self.source.__repr__() + "\n" + DpkgControl.__repr__( self ) - - def _store( self, f ): - "Write our control data to a file object" - self.source._store( f ) - f.write( "\n" ) - DpkgControl._store( self, f ) - -if __name__ == "__main__": - import sys - types = { 'p' : DpkgParagraph, 'c' : DpkgControl, 's' : DpkgSourceControl } - type = sys.argv[ 1 ] - if not types.has_key( type ): - print "Unknown type `%s'!" % type - sys.exit( 1 ) - file = open( sys.argv[ 2 ], "r" ) - data = types[ type ]() - data.load( file ) - if len( sys.argv ) > 3: - para = data[ sys.argv[ 3 ] ] - if len( sys.argv ) > 4: - para._storeField( sys.stdout, para[ sys.argv[ 4 ] ], "" ) - else: - para._store( sys.stdout ) - else: - data._store( sys.stdout ) - -# vim:ts=4:sw=4:et: |
