diff options
author | Michael Vogt <egon@bottom> | 2007-06-06 22:42:22 +0200 |
---|---|---|
committer | Michael Vogt <egon@bottom> | 2007-06-06 22:42:22 +0200 |
commit | 90485a0039fcf308b0d7fc056d39ee4b91b76c58 (patch) | |
tree | 76390aa848c02583f0fa425fde39c5a8ff0f8d7a /apt-pkg/deb/debrecords.cc | |
parent | b4dd017206dc92782462dde702076c389567fb57 (diff) | |
parent | c2f2b86252cec3a9ec68df2f55850067faa705d6 (diff) |
* implement SourceVer() in pkgRecords
(thanks to Daniel Burrows for the patch!)
* merged from Christian Perrier:
* mr.po: New Marathi translation Closes: #416806
* zh_CN.po: Updated by Eric Pareja Closes: #416822
* tl.po: Updated by Eric Pareja Closes: #416638
* gl.po: Updated by Jacobo Tarrio
Closes: #412828
* da.po: Updated by Claus Hindsgaul
Closes: #409483
* fr.po: Remove a non-breakable space for usability
issues. Closes: #408877
* ru.po: Updated Russian translation. Closes: #405476
* *.po: Unfuzzy after upstream typo corrections
* NMU
* Fix broken use of awk in apt-key that caused removal of the wrong keys
from the keyring. Closes: #412572
Diffstat (limited to 'apt-pkg/deb/debrecords.cc')
-rw-r--r-- | apt-pkg/deb/debrecords.cc | 28 |
1 files changed, 27 insertions, 1 deletions
diff --git a/apt-pkg/deb/debrecords.cc b/apt-pkg/deb/debrecords.cc index c3e579ad1..26ca36799 100644 --- a/apt-pkg/deb/debrecords.cc +++ b/apt-pkg/deb/debrecords.cc @@ -92,18 +92,44 @@ string debRecordParser::LongDesc() return Section.FindS("Description"); } /*}}}*/ + +static const char *SourceVerSeparators = " ()"; + // RecordParser::SourcePkg - Return the source package name if any /*{{{*/ // --------------------------------------------------------------------- /* */ string debRecordParser::SourcePkg() { string Res = Section.FindS("Source"); - string::size_type Pos = Res.find(' '); + string::size_type Pos = Res.find_first_of(SourceVerSeparators); if (Pos == string::npos) return Res; return string(Res,0,Pos); } /*}}}*/ +// RecordParser::SourceVer - Return the source version number if present /*{{{*/ +// --------------------------------------------------------------------- +/* */ +string debRecordParser::SourceVer() +{ + string Pkg = Section.FindS("Source"); + string::size_type Pos = Pkg.find_first_of(SourceVerSeparators); + if (Pos == string::npos) + return ""; + + string::size_type VerStart = Pkg.find_first_not_of(SourceVerSeparators, Pos); + if(VerStart == string::npos) + return ""; + + string::size_type VerEnd = Pkg.find_first_of(SourceVerSeparators, VerStart); + if(VerEnd == string::npos) + // Corresponds to the case of, e.g., "foo (1.2" without a closing + // paren. Be liberal and guess what it means. + return string(Pkg, VerStart); + else + return string(Pkg, VerStart, VerEnd - VerStart); +} + /*}}}*/ // RecordParser::GetRec - Return the whole record /*{{{*/ // --------------------------------------------------------------------- /* */ |