# Tom Lord's Hackery

# The `.c File Template`

> Note:

> Substrings of the form "@NAME@" should be replaced by a module-specific string.

        /* @THISFILE@:
         *
         ****************************************************************
         * Copyright (C) @YEAR@ @NAME@
         *
         * See the file "COPYING" for further information about
         * the copyright and warranty status of this work.
         */

        /* Includes
         *
         * This section should contain exactly (a) those `#include' directives
         * needed to make this file compilable plus (b) an include
         * directive which includes the `.h' file corresponding to this
         * `.c' file.
         *
         * (Including the `.h' file, while not always strictly necessary,
         * helps to ensure that the definitions in this file agree with
         * the declarations in that file.)
         *
         * Consequently, there must always be at least one `#include'
         * directive:
         */

        #include "@HFILE@"

        /* Typedefs
         *
         * Declare structure, union, and enum tags and file-specific
         * `typedef'-s here.   Do /not/ declare structure, union, or
         * enum types here (only their tags).
         */

        /* __STDC__ prototypes for static functions */

        /* This section must contain static declarations for all functions
         * defined as `static' in this file.
         *
         * \\/NOTE/\\ This section is often deleted and replaced by
         * automatically calculated declarations.  It is therefore vital
         * that this section contain nothing other than such declarations.
         */

        /* Type and Global Declarations
         *
         * Declare all types declared in this file and define all
         * global variables used in this file in this section.
         *
         * Macros used in more than one function should be defined here
         * as well.
         */

        /* Code */

        /* This section may be expanded into several pages.
         *
         * Almost always, each page should contain exactly one
         * function definition.   In exceptional cases, if
         * a static one or two line "helper function" is needed by only
         * one function in the file, it may be included on the same
         * page as that function, after that function's definition.
         *
         * (The one-function-per-page rule make the file easier
         * to navigate using the paging commands found in most editors.
         * The rule to put helper functions *after* the function that
         * needs them preserves the property that if the cursor is
         * located near a page separator character, you can probably see the
         * name of the function defined on the page following that
         * character.)
         *
         * All but the most trivial functions must use the standard
         * template for `libarch' functions.  That template is separate
         * from this one which is for the overall structure of a `.c'
         * file.
         */

        /* arch-tag: @NAME@ @DATE@ (@THISFILE@)
         */

## Copyright

Copyright (C) 2004 Tom Lord

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 2, 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, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.

See the file `COPYING` for further information about the copyright and warranty status of this work.

home

## GNU Arch

what is GNU Arch?

GNU Arch Bug Database

popular GNU Arch links

GNU Arch development roadmap

popular GNU Arch writings