Skip to content

fix regular expression used for matching RCS keywords

The function RcsKeywords.expand_keyword() uses a regular expression to detect keywords in lines of a file. This expression treated the closing $-sign of the keyword as optional. This fails when a line contains an invalid keyword declaration which lacks the trailing $-sign, followed by a valid keyword declaration.

For example, consider this line from a file in the ccvs CVS repository:

#ident "@(#)cvs/contrib/pcl-cvs:$Name: Id"

Here, the CVS server expands the Id keyword, and it does not expand the Name keyword (which lacks a trailing $-sign).

Our regular expression would split this line into two match groups:

1: #ident "@(#)cvs/contrib/pcl-cvs:$Name: $ 2: Id$

Neither match produces a valid keyword and hence expand_keyword() would not expand keywords on this line.

Tweak our test data to cover the above example, and fix the regular expression such that the trailing $-sign is required. With this change in place we match the Id part of the above example and expand keywords on this line just like the CVS server does.


Migrated from D6684 (view on Phabricator)

Merge request reports