I did not write any article on coccigrep since the 1.0 release. Here is an update on what has been added to the software since that release.
C++ support
Coccinelle has a basic C++ support which can be activated by using the –cpp flag in coccigrep.
Patches information
The -L -v options on command line will display a description of the match available on the system.
$ coccigrep -L -v
set: Search where a given attribute of structure 'type' is set
* Confidence: 80%
* Author: Eric Leblond
* Arguments: type, attribute
* Revision: 2
For the developer, this is obtained from structured comments put at the start of the cocci file:
$ head src/data/set.cocci
// Author: Eric Leblond
// Desc: Search where a given attribute of structure 'type' is set
// Confidence: 80%
// Arguments: type, attribute
// Revision: 2
@init@
This is thus an easy way to document the search operation. Please note, that this will also work for the operations put in the user or system custom directory.
Context line display improvement
Guillaume Nault has contributed a series of patches that greatly improved the display of context lines:
$ coccigrep -C 3 -t Packet -a flags -o set decode*c
decode.c-90 - }
decode.c-91 -
decode.c-92 - PACKET_INITIALIZE(p);
decode.c:93 (Packet *p): p->flags |= PKT_ALLOC;
decode.c-94 -
decode.c-95 - SCLogDebug("allocated a new packet only using alloc...");
decode.c-96 -
Documentation
A man page is now available.
Python 2.5 support
The 1.6 release came with a code modification that permit coccigrep to run with python 2.5. Some users seem to still use this old version of Python and the support was not requiring to degrade coccigrep code. It has even improved it.
Option to read file lists from a file
Thomas Graf has contributed the -l option which provides a way to specify a file containing the list of the files to search in.
Operation improvement
The set operation has been improved and is now more accurate thanks to the support of all related operators.
Conclusion
Coccigrep is becoming more and more mature over time. The existing code base remains and a polishing work is currently under progress. One last point on the project is that some Linux and *BSD distribution seems to have done packages. This is the case of Aur, Gentoo, NetBSD, OpenBSD, Mandriva and soon Debian if the intention to package is confirmed.