//
// aegis - project change supervisor
// Copyright (C) 2007, 2008, 2010, 2012 Peter Miller
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 3 of the License, or (at
// your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see .
//
#ifndef AEDE_POLICY_VALIDATION_FILES_GPL_VERSION_H
#define AEDE_POLICY_VALIDATION_FILES_GPL_VERSION_H
#include
/**
* The validation_files_gpl_version class is used to represent a check
* of the GPL version number in the file header comments.
*/
class validation_files_gpl_version:
public validation_files
{
public:
/**
* The destructor.
*/
virtual ~validation_files_gpl_version();
private:
/**
* The default constructor.
*/
validation_files_gpl_version(int version);
public:
/**
* The create class method is used to create new dynamically
* allocated instances of this class.
*/
static pointer create(int version);
/**
* The create class method is used to create new dynamically
* allocated instances of this class.
*/
static pointer create3(void);
protected:
// See base class for documentation
bool check(change::pointer cp, fstate_src_ty *src);
// See base class for documentation.
bool check_binaries(void) const;
private:
/**
* The version instance variable is used to remember the desired
* version number of the GNU GPL cited in file header comments.
*/
int version;
/**
* The match function is used to match a buffer full of text against an
* address pattern.
*
* @param text
* The text to be matched to the pattern.
* @param nbytes
* The length of the text to be matched by the pattern.
* @param pattern
* The pattern to be matched to. NUL terminated C string. All
* isalpha(c) are litterals. The star (*) character marks where
* where the version number occurs in the pattern. Runs
* of !isalnum(c) wild match runs of !isalnum(c) in the text.
*
* @returns
* 0 for no match, or line number for a match
*/
int match(const char *text, long nbytes, const char *pattern) const;
/**
* The copy constructor. Do not use.
*/
validation_files_gpl_version(const validation_files_gpl_version &);
/**
* The assignment operator. Do not use.
*/
validation_files_gpl_version &operator=(
const validation_files_gpl_version &);
};
#endif // AEDE_POLICY_VALIDATION_FILES_GPL_VERSION_H
// vim: set ts=8 sw=4 et :