|
|
@@ -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 /*{{{*/
|
|
|
// ---------------------------------------------------------------------
|
|
|
/* */
|