'\" t .\" Title: HEADACHE .\" Author: Sylvain Le Gall .\" Generator: DocBook XSL Stylesheets vsnapshot .\" Date: Feb 15, 2004 .\" Manual: [FIXME: manual] .\" Source: [FIXME: source] .\" Language: English .\" .TH "HEADACHE" "1" "Feb 15, 2004" "[FIXME: source]" "[FIXME: manual]" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" headache \- A program to manage the license of your source file\&. .SH "SYNOPSIS" .HP \w'\fBheadache\fR\ 'u \fBheadache\fR [\-h\ \fIfile\fR] [\-c\ \fIfile\fR] [\-r] [\-help | \-\-help] \fIfile\fR... .SH "DESCRIPTION" .PP This manual page documents briefly the \fBheadache\fR command\&. .PP This manual page was written for the Debian GNU/Linux distribution because the original program does not have a manual page\&. .PP It is a common usage to put at the beginning of source code files a short header giving, for instance, some copyright information\&. \fBheadache\fR is a simple and lightweight tool for managing easily these headers\&. Among its functionalities, one may mention: .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} Headers must generally be generated as comments in source code files\&. \fBheadache\fR deals with different files types and generates for each of them headers in an appropriate format\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} Headers automatically detects existing headers and removes them\&. Thus, you can use it to update headers in a set of files\&. .RE .sp .SH "COMMAND LINE OPTIONS" .PP file .RS 4 Name of one file to process .RE .PP \-h file .RS 4 Create a header with text coming from file .RE .PP \-c file .RS 4 Read the given configuration file .RE .PP \-help, \-\-help .RS 4 Display the option list of \fBheadache\fR .RE .SH "USAGE" .PP Let us illustrate the use of this tool with a small example\&. Assume you have a small project mixing C and Caml code consisting in three files \*(Aqfoo\&.c\*(Aq, \*(Aqbar\&.ml\*(Aq and \*(Aqbar\&.mli\*(Aq\*(Aq, and you want to equip them with some header\&. First of all, write a header file, i\&.e\&. a plain text file including the information headers must mention\&. An example of such a file is given in figure 1\&. In the following, we assume this file is named \*(Aqmyheader\*(Aq and is in the same directory as source files\&. .PP Then, in order to generate headers, just run the command : \fB\fBheadache\fR\fR\fB \-h \fR\fBmyheader\fR\fB \fR\fBfoo\&.c\fR\fB \fR\fBbar\&.ml\fR\fB \fR\fBbar\&.mli\fR\fB \fR .PP Each file is equipped with an header including the text given in the header file \*(Aqmyheader\*(Aq, surrounded by some extra characters depending on its format making it a comment (e\&.g\&. \*(Aq(*\*(Aq and \*(Aq*)\*(Aq in \*(Aq\&.ml\*(Aq files)\&. If you update the header file \*(Aqmyheader\*(Aq, you simply need to re\-run the above command to update headers in source code files\&. .PP Similarly, running : \fB\fBheadache\fR\fR\fB \-r \fR\fBfoo\&.c\fR\fB \fR\fBbar\&.ml\fR\fB \fR\fBbar\&.mli\fR\fB \fR removes any existing in files \*(Aqfoo\&.c\*(Aq, \*(Aqbar\&.ml\*(Aq and \*(Aqbar\&.mli\*(Aq\&. Files which do not have a header are kept unchanged\&. .SH "CONFIGURATION FILE" .PP File types and format of header may be specified by a configuration file\&. By default, the default builtin configuration file given in figure 2 is used\&. You can also use your own configuration file thanks to the \fB\-c\fR option : \fB\fBheadache\fR\fR\fB \-c \fR\fBmyconfig\fR\fB \-h \fR\fBmyheader\fR\fB \fR\fBfoo\&.c\fR\fB \fR\fBbar\&.ml\fR\fB \fR\fBbar\&.mli\fR\fB \fR .PP In order to write your own configuration, you can follow the example given in figure 2\&. A configuration file consists in a list of entries separated by the character \*(Aq|\*(Aq\&. Each of them is made of two parts separated by an \*(Aq\->\*(Aq\&. .PP The first one is a regular expression\&. (Regular expression are enclosed within double quotes and have the same syntax as in Gnu Emacs\&.) \fBheadache\fR determines file types according to file basenames; thus, each file is dealt with using the first line its name matches\&. .PP The second one describes the format of headers for files of this type\&. It consists of the name of a model (e\&.g\&. \*(Aqframe\*(Aq), possibly followed by a list of arguments\&. Arguments are named: \*(Aqopen:"(*"\*(Aq means that the value of the argument \*(Aqopen\*(Aq is \*(Aq(*\*(Aq\&. \fBheadache\fR currently supports three models and a special keyword: .PP frame .RS 4 With this model, headers are generated in a frame\&. This model requires three arguments: \*(Aqopen\*(Aq and \*(Aqclose\*(Aq (the opening and closing sequences for comments) and \*(Aqline\*(Aq (the character used to make the horizontal lines of the frame)\&. Two optional arguments may be used \*(Aqmargin\*(Aq (a string printed between the left and right side of the frame and the border, by default two spaces) and \*(Aqwidth\*(Aq (the width of the inside of the frame, default is 68)\&. .RE .PP lines .RS 4 Headers are typeset between two lines\&. Three arguments must be provided: \*(Aqopen\*(Aq and \*(Aqclose\*(Aq (the opening and closing sequences for comments), \*(Aqline\*(Aq (the character used to make the horizontal lines)\&. Three optional arguments are allowed: \*(Aqbegin\*(Aq (a string typeset at the beginning of each line, by default two spaces), \*(Aqlast\*(Aq (a string typeset at the beginning of the last line) and \*(Aqwidth\*(Aq (the width of the lines, default is 70)\&. .RE .PP no .RS 4 This model generates no header and has no argument\&. .RE .PP skip .RS 4 Skip line corresponding to one of the "match" parameters regexp\&. For this kind of line, every first part pattern that matches the file basename is taken into account\&. .RE .SH "SEE ALSO" .PP /usr/share/doc/headache/manual\&.html .SH "AUTHOR" .PP This manual page was written by Sylvain Le Gall Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Lesser General Public License, Version 2\&.1 or any later version published by the Free Software Foundation; considering as source code all the file that enable the production of this manpage\&. .SH "AUTHOR" .PP \fBSylvain Le Gall\fR <\&gildor@debian\&.org\&> .RS 4 Author. .RE .SH "COPYRIGHT" .br Copyright \(co 2003, 2004, 2005, 2006 Sylvain Le Gall .br