Use imprimatur to maintain docs.

This commit is contained in:
Sergey Poznyakoff 2012-05-13 15:31:31 +03:00
parent 803b69beb3
commit 00c1786bc2
12 changed files with 45 additions and 342 deletions

1
.gitignore vendored
View file

@ -24,4 +24,5 @@ config.status
configure
core
libtool
m4
stamp-h1

3
.gitmodules vendored Normal file
View file

@ -0,0 +1,3 @@
[submodule "imprimatur"]
path = imprimatur
url = git://git.gnu.org.ua/imprimatur.git

View file

@ -14,6 +14,8 @@
# with this program. If not, see <http://www.gnu.org/licenses/>.
AUTOMAKE_OPTIONS = gnits 1.8
ACLOCAL_AMFLAGS = -I m4 -I imprimatur
if PAM_COND_FSHADOW
FSHADOW_DIR=pam_fshadow
endif
@ -27,6 +29,7 @@ if PAM_COND_LDAPHOME
LDAPHOME_DIR=pam_ldaphome
endif
SUBDIRS = \
imprimatur\
doc\
lib\
$(FSHADOW_DIR)\

View file

@ -1,3 +1,3 @@
#! /bin/sh
test -d m4 || mkdir m4
autoreconf -f -i -s

View file

@ -19,6 +19,7 @@ AC_PREREQ(2.63)
AC_INIT(pam-modules, 1.7, bug-pam-modules@gnu.org.ua)
AC_CONFIG_SRCDIR(pam_fshadow/pam_fshadow.c)
AC_CONFIG_AUX_DIR([build-aux])
AC_CONFIG_MACRO_DIR([m4])
AM_INIT_AUTOMAKE([1.11 no-exeext tar-ustar dist-xz silent-rules])
AM_CONFIG_HEADER(config.h)
@ -188,6 +189,11 @@ AC_ARG_WITH(pamdir,
[PAMDIR=$withval])
AC_SUBST(PAMDIR)
## **************
## Imprimatur
## **************
IMPRIMATUR_INIT
## **************
## Summary
## **************

View file

@ -15,10 +15,9 @@
# with this program. If not, see <http://www.gnu.org/licenses/>.
info_TEXINFOS=pam-modules.texi
pam_modules_TEXINFOS=fdl.texi macros.texi rendition.texi
pam_modules_TEXINFOS=fdl.texi macros.texi
EXTRA_DIST = \
check-docs.sh\
gendocs_template\
mastermenu.el\
untabify.el
@ -26,55 +25,14 @@ EXTRA_DIST = \
clean-local:
rm -rf manual
AM_MAKEINFOFLAGS=@IMPRIMATUR_MAKEINFOFLAGS@
imprimatur_INPUT=$(info_TEXINFOS) $(pam_modules_TEXINFOS)
CHECK_DOCS=$(top_srcdir)/@IMPRIMATUR_MODULE_DIR@/check-docs.sh
include ../imprimatur/imprimatur.mk
# Checking
check-format:
@if test -n "`cat $(info_TEXINFOS) $(pam_modules_TEXINFOS) | tr -d -c '\t'`"; then \
echo "Sources contain tabs; run make untabify"; \
false; \
fi
check-refs:
@for file in $(info_TEXINFOS) $(mailfromd_TEXINFOS); \
do \
sed -e = $$file | \
sed -n 'N;/@FIXME-.*ref/{s/\(^[0-9][0-9]*\).*@FIXME-.*ref{\([^}]*\)}.*/'$$file':\1: \2/gp}'; \
done > $@-t; \
if [ -s $@-t ]; then \
echo "Unresolved cross-references:"; \
cat $@-t;\
rm $@-t; \
else \
rm -f $@-t; \
fi
check-fixmes:
@for file in $(info_TEXINFOS); \
do \
sed -e = $$file | \
sed -n 'N;/@FIXME{/{s/\(^[0-9][0-9]*\).*@FIXME{\([^}]*\).*/'$$file':\1: \2/gp}'; \
done > $@-t; \
if [ -s $@-t ]; then \
echo "Unresolved FIXMEs:"; \
cat $@-t; \
rm $@-t; \
false; \
else \
rm -f $@-t; \
fi
check-unrevised:
@grep -Hn @UNREVISED $(info_TEXINFOS) > $@-t; \
if [ -s $@-t ]; then \
echo "Unrevised nodes:"; \
cat $@-t; \
rm $@-t; \
false;\
else \
rm $@-t; \
fi
check-log-options:
@check-docs.sh "pam_log options" \
@$(CHECK_DOCS) "pam_log options" \
'/struct pam_opt .*\[\] = /,/^}/s/[ \t]*{ *PAM_OPTSTR(\([^,)]*\)).*/\1/p' \
'/@set MODULE pam_log/,/@set MODULE/{s/@value{MODULE}/pam_log/g;there;:here;s/@opindex *\([^@,]*\),.*@command{pam_log}.*/\1/;t lab;b;: lab;{s/^-//;s/^no//;p;}}' \
$(top_srcdir)/pam_log/*.c -- \
@ -85,7 +43,7 @@ check-log-options:
check-all-options:
@for mod in fshadow regex sql; \
do \
check-docs.sh "pam_$$mod options" \
$(CHECK_DOCS) "pam_$$mod options" \
'/struct pam_opt .*\[\] = /,/^}/s/[ \t]*{ *PAM_OPTSTR(\([^,)]*\)).*/\1/;t lab;b;: lab {/audit/d;/debug/d;/waitdebug/d;p}' \
'/@set MODULE pam_'$$mod'/,/@set MODULE/{s/@value{MODULE}/pam_'$$mod'/g;there;:here;s/@opindex *\([^@,]*\),.*@command{pam_'$$mod'}.*/\1/;t lab;b;: lab;{s/^-//;s/^no//;p;}}' \
$(top_srcdir)/pam_$$mod/*.c -- \
@ -94,7 +52,7 @@ check-all-options:
done
check-sql-config:
@check-docs.sh 'SQL configuration keywords' \
@$(CHECK_DOCS) 'SQL configuration keywords' \
's/.*check_boolean_config *("\([^"]*\)".*/\1/p;s/.*find_config *("\([^"]*\)".*/\1/p' \
's/@kwindex *\([^@,]*\).*/\1/p' \
$(top_srcdir)/pam_sql/*.c -- \
@ -103,19 +61,15 @@ check-sql-config:
check-options: check-all-options check-log-options
all-check-docs: check-format check-refs check-fixmes check-unrevised check-options check-sql-config
all-check-docs: imprimatur-basic-checks check-options check-sql-config
check-docs:
$(MAKE) -k all-check-docs
#
master-menu:
emacs -batch -l mastermenu.el -f make-master-menu $(info_TEXINFOS)
untabify:
emacs -batch -l untabify.el $(info_TEXINFOS) $(pam_modules_TEXINFOS)
final: untabify master-menu
master-menu: imprimatur-master-menu
untabify: imprimatur-untabify
final: imprimatur-final
#
@ -123,8 +77,6 @@ final: untabify master-menu
# Just call `make RENDITION=PROOF [target]' if you want PROOF rendition.
RENDITION = DISTRIB
MAKEINFOFLAGS=-D$(RENDITION)
GENDOCS=gendocs.sh
TEXI2DVI=texi2dvi -t '@set $(RENDITION)' -E
@ -134,11 +86,10 @@ TEXI2DVI=texi2dvi -t '@set $(RENDITION)' -E
.PHONY: manual
manual:
TEXINPUTS=$(srcdir):$(top_srcdir)/build-aux:$(TEXINPUTS) \
MAKEINFO="$(MAKEINFO) $(MAKEINFOFLAGS)" \
MAKEINFO="$(MAKEINFO) $(MAKEINFOFLAGS) $(AM_MAKEINFOFLAGS)" \
TEXI2DVI="$(TEXI2DVI) -t @finalout" \
$(GENDOCS) --texi2html $(PACKAGE) '$(PACKAGE_NAME) manual'
manual.tar.bz2: manual
tar cfj manual.tar.bz2 manual

View file

@ -1,74 +0,0 @@
#! /bin/sh
# This file is part of mailfrom filter.
# Copyright (C) 2006-2007, 2010-2011 Sergey Poznyakoff
#
# 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, 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 <http://www.gnu.org/licenses/>.
usage() {
cat <<EOT
usage: $0 item code-sed doc-sed sources -- args...
EOT
}
if [ $# -le 4 ]; then
usage
exit 2
fi
item=$1
shift
codesexp="$1"
shift
docsexp=$1
shift
source=
while [ $# -ne 0 ]
do
if [ "$1" = "--" ]; then
shift
break;
fi
source="$source $1"
shift
done
TEMPDIR=/tmp/mfck.$$
mkdir $TEMPDIR || exit 1
trap 'rm -rf $TEMPDIR' 1 2 13 15
sed -n "$codesexp" $source | sort | uniq > $TEMPDIR/src
$* | \
sed -n '/^@macro/,/^@end macro/d;'"$docsexp" \
| sort | uniq > $TEMPDIR/doc
join -v1 $TEMPDIR/src $TEMPDIR/doc > $TEMPDIR/src-doc
join -v2 $TEMPDIR/src $TEMPDIR/doc > $TEMPDIR/doc-src
(if [ -s $TEMPDIR/src-doc ]; then
echo "Not documented $item:"
cat $TEMPDIR/src-doc
fi
if [ -s $TEMPDIR/doc-src ]; then
echo "Non-existing $item:"
cat $TEMPDIR/doc-src
fi) > $TEMPDIR/report
if [ -s $TEMPDIR/report ]; then
cat $TEMPDIR/report
rm -rf $TEMPDIR
exit 1
else
rm -rf $TEMPDIR
exit 0
fi

View file

@ -1,90 +0,0 @@
;;; mastermenu.el --- Redefinition of texinfo-master-menu-list
;; Copyright (C) 2006, 2007 Free Software Foundation, Inc.
;; Author: Sergey Poznyakoff
;; Maintainer: bug-tar@gnu.org
;; Keywords: maint, tex, docs
;; This file is part of GNU tar documentation suite
;; 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, 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 <http://www.gnu.org/licenses/>.
;;; Commentary:
;; This file redefines texinfo-master-menu-list so that it takes into
;; account included files.
;; Known bugs: @menu without previous sectioning command will inherit
;; documentation string from the previous menu. However, since such a
;; menu is illegal in a texinfo file, we can live with it.
(require 'texinfo)
(require 'texnfo-upd)
(defun texinfo-master-menu-list-recursive (title)
"Auxiliary function used by `texinfo-master-menu-list'."
(save-excursion
(let (master-menu-list)
(while (re-search-forward "\\(^@menu\\|^@include\\)" nil t)
(cond
((string= (match-string 0) "@include")
(skip-chars-forward " \t")
(let ((included-name (let ((start (point)))
(end-of-line)
(skip-chars-backward " \t")
(buffer-substring start (point)))))
(end-of-line)
(let ((prev-title (texinfo-copy-menu-title)))
(save-excursion
(set-buffer (find-file-noselect included-name))
(setq master-menu-list
(append (texinfo-master-menu-list-recursive prev-title)
master-menu-list))))))
(t
(setq master-menu-list
(cons (list
(texinfo-copy-menu)
(let ((menu-title (texinfo-copy-menu-title)))
(if (string= menu-title "")
title
menu-title)))
master-menu-list)))))
master-menu-list)))
(defun texinfo-master-menu-list ()
"Return a list of menu entries and header lines for the master menu,
recursing into included files.
Start with the menu for chapters and indices and then find each
following menu and the title of the node preceding that menu.
The master menu list has this form:
\(\(\(... \"entry-1-2\" \"entry-1\"\) \"title-1\"\)
\(\(... \"entry-2-2\" \"entry-2-1\"\) \"title-2\"\)
...\)
However, there does not need to be a title field."
(reverse (texinfo-master-menu-list-recursive "")))
(defun make-master-menu ()
"Create master menu in the first Emacs argument."
(find-file (car command-line-args-left))
(texinfo-master-menu nil)
(save-buffer))
;;; mastermenu.el ends here

View file

@ -173,7 +173,7 @@ WAITING FOR DEBUG
and waits for @var{interval} seconds (default 3600) before actually
starting to do anything. The developer is supposed to attach to the
process with a debugger, set the @code{interval} variable to 0 and to
continue execution of the module in the debugging mode.
continue execution of the module in the debugging mode.
@end table
@cindex PAM item expansion
@ -194,37 +194,37 @@ or numeric).
@table @samp
@item service
@code{PAM_SERVICE}. The service name (which identifies
@code{PAM_SERVICE}. The service name (which identifies
the @acronym{PAM} stack that will be used).
@item user
@code{PAM_USER}. The username of the entity under whose identity
@code{PAM_USER}. The username of the entity under whose identity
service will be given.
@item tty
@code{PAM_TTY}. The terminal name: prefixed by
@code{PAM_TTY}. The terminal name: prefixed by
@samp{/dev/} if it is a device file; for graphical, X-based,
applications the value for this item is usually the @env{$DISPLAY}
environment variable.
@item rhost
@code{PAM_RHOST}. The requesting hostname (the hostname of the machine
from which the @code{PAM_RUSER} entity is requesting service). That is
@code{PAM_RHOST}. The requesting hostname (the hostname of the machine
from which the @code{PAM_RUSER} entity is requesting service). That is
@samp{@code{PAM_RUSER}@@@code{PAM_RHOST}} identifies the requesting
user. In some applications, @code{PAM_RHOST} may be @samp{NULL}.
user. In some applications, @code{PAM_RHOST} may be @samp{NULL}.
@item ruser
@code{PAM_RUSER}. The requesting entity: user's sername for a locally
requesting user or a remote requesting user. In some cases,
@code{PAM_RUSER}. The requesting entity: user's sername for a locally
requesting user or a remote requesting user. In some cases,
@code{PAM_RUSER} may be @samp{NULL}.
@item prompt
@code{PAM_USER_PROMPT}. The string used when prompting for a user's
name. The default value for this string is @samp{Please enter
@code{PAM_USER_PROMPT}. The string used when prompting for a user's
name. The default value for this string is @samp{Please enter
username: }.
@item password
@code{PAM_AUTHTOK}. The authentication token (often a password).
@code{PAM_AUTHTOK}. The authentication token (often a password).
@end table
Item expansion is used by @command{pam_log}, @command{pam_mysql}
@ -314,7 +314,7 @@ Print program version and copyright information and exit.
@prindex pam_fshadow
The @command{pam_fshadow} module provides authentication against an
alternative @file{shadow} file, or @file{passwd} / @file{shadow} pair
(or pairs). There are two main operation modes: @dfn{plain} mode, in which
(or pairs). There are two main operation modes: @dfn{plain} mode, in which
@command{pam_fshadow} uses only one @file{passwd}/@file{shadow} pair,
and @dfn{virtual domain} mode, which allows to select the pair to use
based on the authentication token (the user name). First, let's
@ -490,12 +490,12 @@ This section summarizes all @command{pam_fshadow} command line options:
@opsummary{nopasswd}
@item nopasswd
Use only @file{shadow} for authentication. @xref{pam_fshadow common
Use only @file{shadow} for authentication. @xref{pam_fshadow common
options, nopasswd}.
@opsummary{noshadow}
@item nopasswd
Use only @file{passwd} for authentication. @xref{pam_fshadow common
Use only @file{passwd} for authentication. @xref{pam_fshadow common
options, noshadow}.
@opsummary{regex}
@ -641,7 +641,7 @@ the interaction is defined to be: ignore matches before the
@end table
Any delimiter can be used in lieue of @samp{/}, the only requirement being
that it be used consistently throughout the expression. For example,
that it be used consistently throughout the expression. For example,
the following two expressions are equivalent:
@smallexample

View file

@ -1,85 +0,0 @@
@c Let's use the concept of 'renditions' by Fra@,{c}ois Pinard
@c I extended it by adding a FIXME_FOOTNOTE variable, which controls
@c whether FIXME information should be placed in footnotes or
@c inlined.
@c ======================================================================
@c This document has three levels of rendition: PUBLISH, DISTRIB or PROOF,
@c as decided by @set symbols. The PUBLISH rendition does not show
@c notes or marks asking for revision. Most users will prefer having more
@c information, even if this information is not fully revised for adequacy,
@c so DISTRIB is the default for distributions. The PROOF rendition
@c show all marks to the point of ugliness, but is nevertheless useful to
@c those working on the manual itself.
@c ======================================================================
@c Set this symbol if you wish FIXMEs to appear in footnotes, instead
@c of being inserted into the text.
@c @set PROOF_FOOTNOTED
@ifclear PUBLISH
@ifclear DISTRIB
@ifclear PROOF
@set DISTRIB
@end ifclear
@end ifclear
@end ifclear
@ifset PUBLISH
@set RENDITION The book, version
@end ifset
@ifset DISTRIB
@set RENDITION FTP release, version
@end ifset
@ifset PROOF
@set RENDITION Proof reading version
@end ifset
@c Output marks for nodes needing revision, but not in PUBLISH rendition.
@macro UNREVISED
@ifclear PUBLISH
@quotation
@emph{(This message will disappear, once this node revised.)}
@end quotation
@end ifclear
@end macro
@c Output various FIXME information only in PROOF rendition.
@macro FIXME{string}
@ifset PROOF
@ifset PROOF_FOOTNOTED
@footnote{@strong{FIXME:} \string\}
@end ifset
@ifclear PROOF_FOOTNOTED
@cartouche
@strong{<FIXME>} \string\ @strong{</>}
@end cartouche
@end ifclear
@end ifset
@end macro
@macro FIXME-ref{string}
@ifset PROOF
@strong{<REF>} \string\ @strong{</>}
@end ifset
@end macro
@macro FIXME-pxref{string}
@ifset PROOF
@strong{<PXREF>} \string\ @strong{</>}
@end ifset
@end macro
@macro FIXME-xref{string}
@ifset PROOF
@strong{<XREF>} \string\ @strong{</>}
@end ifset
@end macro

View file

@ -1,13 +0,0 @@
;;;; Untabify the sources.
;;;; Usage: emacs -batch -l untabify.el [file ...]
(defun global-untabify (buflist)
(mapcar
(lambda (bufname)
(set-buffer (find-file bufname))
(untabify (point-min) (point-max))
(save-buffer)
(kill-buffer (current-buffer)))
buflist))
(global-untabify command-line-args-left)

1
imprimatur Submodule

@ -0,0 +1 @@
Subproject commit f32ef1983968e755cd580b06e369476d7e7f88b6