X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=daklib%2Fdbconn.py;fp=daklib%2Fdbconn.py;h=4d30e663b994fee443f87aa120dbca0fb9bc1a03;hb=b8690d6b1256a4a95198b874d9eb1aab62a825fb;hp=6782c081145944e57c22a1bf718872e00c7106c9;hpb=76467b7e0ddd35e882cf8ac0ddf3b56c3739315b;p=dak.git diff --git a/daklib/dbconn.py b/daklib/dbconn.py index 6782c081..4d30e663 100755 --- a/daklib/dbconn.py +++ b/daklib/dbconn.py @@ -529,6 +529,25 @@ class DBBinary(ORMObject): dpkg.stdout.close() dpkg.wait() + def read_control(self): + ''' + Reads the control information from a binary. + + @rtype: tuple + @return: (stanza, controldict) stanza is the text of the control + section. controldict is the information in a dictionary + form + ''' + import apt_inst, apt_pk + fullpath = self.poolfile.fullpath + deb_file = open(fullpath, 'r') + stanza = apt_inst.debExtractControl(deb_file).rstrip() + control = dict(apt_pkg.TagSection(stanza)) + deb_file.close() + + return stanza, control + + __all__.append('DBBinary') @session_wrapper @@ -2176,6 +2195,20 @@ class DBSource(ORMObject): return ['source', 'version', 'install_date', 'maintainer', \ 'changedby', 'poolfile', 'install_date'] + def read_control(self): + ''' + Reads the control information from a dsc + + @rtype: tuple + @return: (stanza, controldict) stanza is the text of the control + section. controldict is the information in a dictionary + form + ''' + from debian.debfile import Deb822 + fullpath = self.poolfile.fullpath + fields = Deb822(open(self.poolfile.fullpath, 'r')) + return fields + metadata = association_proxy('key', 'value') __all__.append('DBSource')