Merge ^/head r319548 through r319778.

This commit is contained in:
Dimitry Andric 2017-06-10 13:22:49 +00:00
commit 686fb94a00
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/projects/clang500-import/; revision=319779
1331 changed files with 85227 additions and 456752 deletions

View file

@ -127,7 +127,7 @@ TGTS= all all-man buildenv buildenvvars buildkernel buildworld \
installworld kernel-toolchain libraries lint maninstall \
obj objlink rerelease showconfig tags toolchain update \
_worldtmp _legacy _bootstrap-tools _cleanobj _obj \
_build-tools _compiler-metadata _cross-tools _includes _libraries \
_build-tools _build-metadata _cross-tools _includes _libraries \
build32 distribute32 install32 buildsoft distributesoft installsoft \
builddtb xdev xdev-build xdev-install \
xdev-links native-xtools stageworld stagekernel stage-packages \

View file

@ -643,6 +643,51 @@ LIBCOMPAT= SOFT
.include "Makefile.libcompat"
.endif
# META_MODE normally ignores host file changes since every build updates
# timestamps (see NO_META_IGNORE_HOST in sys.mk). There are known times
# when the ABI breaks though that we want to force rebuilding WORLDTMP
# to get updated host tools.
.if ${MK_META_MODE} == "yes" && defined(NO_CLEAN) && \
!defined(NO_META_IGNORE_HOST) && !defined(NO_META_IGNORE_HOST_HEADERS)
# r318736 - ino64 major ABI breakage
META_MODE_BAD_ABI_VERS+= 1200031
.if !defined(OBJDIR_HOST_OSRELDATE)
.if exists(${OBJTREE}${.CURDIR}/host-osreldate.h)
OBJDIR_HOST_OSRELDATE!= \
awk '/^\#define[[:space:]]*__FreeBSD_version/ { print $$3 }' \
${OBJTREE}${.CURDIR}/host-osreldate.h
.else
OBJDIR_HOST_OSRELDATE= 0
.endif
.export OBJDIR_HOST_OSRELDATE
.endif
# Note that this logic is the opposite of normal BOOTSTRAP handling. We want
# to compare the WORLDTMP's OSRELDATE to the host's OSRELDATE. If the WORLDTMP
# is older than the ABI-breakage OSRELDATE of the HOST then we rebuild.
.for _ver in ${META_MODE_BAD_ABI_VERS}
.if ${OSRELDATE} >= ${_ver} && ${OBJDIR_HOST_OSRELDATE} < ${_ver}
_meta_mode_need_rebuild= ${_ver}
.endif
.endfor
.if defined(_meta_mode_need_rebuild)
.info META_MODE: Rebuilding host tools due to ABI breakage in __FreeBSD_version ${_meta_mode_need_rebuild}.
NO_META_IGNORE_HOST_HEADERS= 1
.export NO_META_IGNORE_HOST_HEADERS
.endif
.endif
# This is only used for META_MODE+filemon to track what the oldest
# __FreeBSD_version is in WORLDTMP. This purposely does NOT have
# a make dependency on /usr/include/osreldate.h as the file should
# only be copied when it is missing or meta mode determines it has changed.
# Since host files are normally ignored without NO_META_IGNORE_HOST
# the file will never be updated unless that flag is specified. This
# allows tracking the oldest osreldate to force rebuilds via
# META_MODE_BADABI_REVS above.
host-osreldate.h: # DO NOT ADD /usr/include/osreldate.h here
@cp -f /usr/include/osreldate.h ${.TARGET}
WMAKE= ${WMAKEENV} ${MAKE} ${WORLD_FLAGS} -f Makefile.inc1 DESTDIR=${WORLDTMP}
IMAKEENV= ${CROSSENV}
@ -820,12 +865,13 @@ _cross-tools:
@rm -f ${.OBJDIR}/compiler-metadata.mk
${_+_}cd ${.CURDIR}; ${XMAKE} cross-tools
${_+_}cd ${.CURDIR}; ${XMAKE} kernel-tools
_compiler-metadata:
_build-metadata:
@echo
@echo "--------------------------------------------------------------"
@echo ">>> stage 3.1: recording compiler metadata"
@echo ">>> stage 3.1: recording build metadata"
@echo "--------------------------------------------------------------"
${_+_}cd ${.CURDIR}; ${WMAKE} compiler-metadata.mk
${_+_}cd ${.CURDIR}; ${WMAKE} host-osreldate.h
_includes:
@echo
@echo "--------------------------------------------------------------"
@ -864,7 +910,7 @@ WMAKE_TGTS+= _cleanobj
WMAKE_TGTS+= _obj
.endif
WMAKE_TGTS+= _build-tools _cross-tools
WMAKE_TGTS+= _compiler-metadata
WMAKE_TGTS+= _build-metadata
WMAKE_TGTS+= _includes
.endif
.if !defined(NO_LIBS)
@ -1964,7 +2010,7 @@ NXBMAKE= ${NXBENV} ${MAKE} \
MACHINE=${TARGET} MACHINE_ARCH=${TARGET_ARCH} \
MK_GDB=no MK_TESTS=no \
SSP_CFLAGS= \
MK_HTML=no NO_LINT=yes MK_MAN=no \
MK_HTML=no NO_LINT=yes MK_MAN=no MK_MAN_UTILS=yes \
-DNO_PIC MK_PROFILE=no -DNO_SHARED \
-DNO_CPU_CFLAGS MK_WARNS=no MK_CTF=no \
MK_CLANG_EXTRAS=no MK_CLANG_FULL=no \
@ -2038,6 +2084,8 @@ native-xtools: .PHONY
usr.bin/lex \
usr.bin/limits \
usr.bin/lorder \
${_libopenbsd} \
${_makewhatis} \
usr.bin/mktemp \
usr.bin/mt \
usr.bin/patch \
@ -2528,8 +2576,8 @@ check-old: check-old-files check-old-libs check-old-dirs .PHONY
# showconfig - show build configuration.
#
showconfig: .PHONY
@(${MAKE} -n -f ${.CURDIR}/sys/conf/kern.opts.mk -V dummy -dg1; \
${MAKE} -n -f ${.CURDIR}/share/mk/src.opts.mk -V dummy -dg1) 2>&1 | grep ^MK_ | sort -u
@(${MAKE} -n -f ${.CURDIR}/sys/conf/kern.opts.mk -V dummy -dg1 UPDATE_DEPENDFILE=no NO_OBJ=yes; \
${MAKE} -n -f ${.CURDIR}/share/mk/src.opts.mk -V dummy -dg1 UPDATE_DEPENDFILE=no NO_OBJ=yes) 2>&1 | grep ^MK_ | sort -u
.if !empty(KRNLOBJDIR) && !empty(KERNCONF)
DTBOUTPUTPATH= ${KRNLOBJDIR}/${KERNCONF}/

View file

@ -150,6 +150,492 @@ OLD_FILES+=usr/lib/clang/4.0.0/lib/freebsd/libclang_rt.ubsan_standalone_cxx-x86_
OLD_DIRS+=usr/lib/clang/4.0.0/lib/freebsd
OLD_DIRS+=usr/lib/clang/4.0.0/lib
OLD_DIRS+=usr/lib/clang/4.0.0
# 20170609: drop obsolete manpage link (if_rtwn.ko -> rtwn.ko)
OLD_FILES+=usr/share/man/man4/if_rtwn.4.gz
# 20170531: removal of groff
OLD_FILES+=usr/bin/addftinfo
OLD_FILES+=usr/bin/afmtodit
OLD_FILES+=usr/bin/checknr
OLD_FILES+=usr/bin/colcrt
OLD_FILES+=usr/bin/eqn
OLD_FILES+=usr/bin/grn
OLD_FILES+=usr/bin/grodvi
OLD_FILES+=usr/bin/groff
OLD_FILES+=usr/bin/grog
OLD_FILES+=usr/bin/grolbp
OLD_FILES+=usr/bin/grolj4
OLD_FILES+=usr/bin/grops
OLD_FILES+=usr/bin/grotty
OLD_FILES+=usr/bin/hpftodit
OLD_FILES+=usr/bin/indxbib
OLD_FILES+=usr/bin/lkbib
OLD_FILES+=usr/bin/lookbib
OLD_FILES+=usr/bin/mmroff
OLD_FILES+=usr/bin/neqn
OLD_FILES+=usr/bin/nroff
OLD_FILES+=usr/bin/pfbtops
OLD_FILES+=usr/bin/pic
OLD_FILES+=usr/bin/post-grohtml
OLD_FILES+=usr/bin/pre-grohtml
OLD_FILES+=usr/bin/psroff
OLD_FILES+=usr/bin/refer
OLD_FILES+=usr/bin/tbl
OLD_FILES+=usr/bin/tfmtodit
OLD_FILES+=usr/bin/troff
OLD_FILES+=usr/bin/vgrind
OLD_FILES+=usr/libexec/vfontedpr
OLD_FILES+=usr/share/dict/eign
OLD_FILES+=usr/share/groff_font/devX100-12/CB
OLD_FILES+=usr/share/groff_font/devX100-12/CBI
OLD_FILES+=usr/share/groff_font/devX100-12/CI
OLD_FILES+=usr/share/groff_font/devX100-12/CR
OLD_FILES+=usr/share/groff_font/devX100-12/DESC
OLD_FILES+=usr/share/groff_font/devX100-12/HB
OLD_FILES+=usr/share/groff_font/devX100-12/HBI
OLD_FILES+=usr/share/groff_font/devX100-12/HI
OLD_FILES+=usr/share/groff_font/devX100-12/HR
OLD_FILES+=usr/share/groff_font/devX100-12/NB
OLD_FILES+=usr/share/groff_font/devX100-12/NBI
OLD_FILES+=usr/share/groff_font/devX100-12/NI
OLD_FILES+=usr/share/groff_font/devX100-12/NR
OLD_FILES+=usr/share/groff_font/devX100-12/S
OLD_FILES+=usr/share/groff_font/devX100-12/TB
OLD_FILES+=usr/share/groff_font/devX100-12/TBI
OLD_FILES+=usr/share/groff_font/devX100-12/TI
OLD_FILES+=usr/share/groff_font/devX100-12/TR
OLD_DIRS+=usr/share/groff_font/devX100-12
OLD_FILES+=usr/share/groff_font/devX100/CB
OLD_FILES+=usr/share/groff_font/devX100/CBI
OLD_FILES+=usr/share/groff_font/devX100/CI
OLD_FILES+=usr/share/groff_font/devX100/CR
OLD_FILES+=usr/share/groff_font/devX100/DESC
OLD_FILES+=usr/share/groff_font/devX100/HB
OLD_FILES+=usr/share/groff_font/devX100/HBI
OLD_FILES+=usr/share/groff_font/devX100/HI
OLD_FILES+=usr/share/groff_font/devX100/HR
OLD_FILES+=usr/share/groff_font/devX100/NB
OLD_FILES+=usr/share/groff_font/devX100/NBI
OLD_FILES+=usr/share/groff_font/devX100/NI
OLD_FILES+=usr/share/groff_font/devX100/NR
OLD_FILES+=usr/share/groff_font/devX100/S
OLD_FILES+=usr/share/groff_font/devX100/TB
OLD_FILES+=usr/share/groff_font/devX100/TBI
OLD_FILES+=usr/share/groff_font/devX100/TI
OLD_FILES+=usr/share/groff_font/devX100/TR
OLD_DIRS+=usr/share/groff_font/devX100
OLD_FILES+=usr/share/groff_font/devX75-12/CB
OLD_FILES+=usr/share/groff_font/devX75-12/CBI
OLD_FILES+=usr/share/groff_font/devX75-12/CI
OLD_FILES+=usr/share/groff_font/devX75-12/CR
OLD_FILES+=usr/share/groff_font/devX75-12/DESC
OLD_FILES+=usr/share/groff_font/devX75-12/HB
OLD_FILES+=usr/share/groff_font/devX75-12/HBI
OLD_FILES+=usr/share/groff_font/devX75-12/HI
OLD_FILES+=usr/share/groff_font/devX75-12/HR
OLD_FILES+=usr/share/groff_font/devX75-12/NB
OLD_FILES+=usr/share/groff_font/devX75-12/NBI
OLD_FILES+=usr/share/groff_font/devX75-12/NI
OLD_FILES+=usr/share/groff_font/devX75-12/NR
OLD_FILES+=usr/share/groff_font/devX75-12/S
OLD_FILES+=usr/share/groff_font/devX75-12/TB
OLD_FILES+=usr/share/groff_font/devX75-12/TBI
OLD_FILES+=usr/share/groff_font/devX75-12/TI
OLD_FILES+=usr/share/groff_font/devX75-12/TR
OLD_DIRS+=usr/share/groff_font/devX75-12
OLD_FILES+=usr/share/groff_font/devX75/CB
OLD_FILES+=usr/share/groff_font/devX75/CBI
OLD_FILES+=usr/share/groff_font/devX75/CI
OLD_FILES+=usr/share/groff_font/devX75/CR
OLD_FILES+=usr/share/groff_font/devX75/DESC
OLD_FILES+=usr/share/groff_font/devX75/HB
OLD_FILES+=usr/share/groff_font/devX75/HBI
OLD_FILES+=usr/share/groff_font/devX75/HI
OLD_FILES+=usr/share/groff_font/devX75/HR
OLD_FILES+=usr/share/groff_font/devX75/NB
OLD_FILES+=usr/share/groff_font/devX75/NBI
OLD_FILES+=usr/share/groff_font/devX75/NI
OLD_FILES+=usr/share/groff_font/devX75/NR
OLD_FILES+=usr/share/groff_font/devX75/S
OLD_FILES+=usr/share/groff_font/devX75/TB
OLD_FILES+=usr/share/groff_font/devX75/TBI
OLD_FILES+=usr/share/groff_font/devX75/TI
OLD_FILES+=usr/share/groff_font/devX75/TR
OLD_DIRS+=usr/share/groff_font/devX75
OLD_FILES+=usr/share/groff_font/devascii/B
OLD_FILES+=usr/share/groff_font/devascii/BI
OLD_FILES+=usr/share/groff_font/devascii/CW
OLD_FILES+=usr/share/groff_font/devascii/DESC
OLD_FILES+=usr/share/groff_font/devascii/I
OLD_FILES+=usr/share/groff_font/devascii/L
OLD_FILES+=usr/share/groff_font/devascii/R
OLD_FILES+=usr/share/groff_font/devascii/S
OLD_DIRS+=usr/share/groff_font/devascii
OLD_FILES+=usr/share/groff_font/devcp1047/B
OLD_FILES+=usr/share/groff_font/devcp1047/BI
OLD_FILES+=usr/share/groff_font/devcp1047/CW
OLD_FILES+=usr/share/groff_font/devcp1047/DESC
OLD_FILES+=usr/share/groff_font/devcp1047/I
OLD_FILES+=usr/share/groff_font/devcp1047/L
OLD_FILES+=usr/share/groff_font/devcp1047/R
OLD_FILES+=usr/share/groff_font/devcp1047/S
OLD_DIRS+=usr/share/groff_font/devcp1047
OLD_FILES+=usr/share/groff_font/devdvi/CW
OLD_FILES+=usr/share/groff_font/devdvi/CWEC
OLD_FILES+=usr/share/groff_font/devdvi/CWI
OLD_FILES+=usr/share/groff_font/devdvi/CWIEC
OLD_FILES+=usr/share/groff_font/devdvi/CWITC
OLD_FILES+=usr/share/groff_font/devdvi/CWTC
OLD_FILES+=usr/share/groff_font/devdvi/CompileFonts
OLD_FILES+=usr/share/groff_font/devdvi/DESC
OLD_FILES+=usr/share/groff_font/devdvi/EX
OLD_FILES+=usr/share/groff_font/devdvi/HB
OLD_FILES+=usr/share/groff_font/devdvi/HBEC
OLD_FILES+=usr/share/groff_font/devdvi/HBI
OLD_FILES+=usr/share/groff_font/devdvi/HBIEC
OLD_FILES+=usr/share/groff_font/devdvi/HBITC
OLD_FILES+=usr/share/groff_font/devdvi/HBTC
OLD_FILES+=usr/share/groff_font/devdvi/HI
OLD_FILES+=usr/share/groff_font/devdvi/HIEC
OLD_FILES+=usr/share/groff_font/devdvi/HITC
OLD_FILES+=usr/share/groff_font/devdvi/HR
OLD_FILES+=usr/share/groff_font/devdvi/HREC
OLD_FILES+=usr/share/groff_font/devdvi/HRTC
OLD_FILES+=usr/share/groff_font/devdvi/MI
OLD_FILES+=usr/share/groff_font/devdvi/Makefile
OLD_FILES+=usr/share/groff_font/devdvi/S
OLD_FILES+=usr/share/groff_font/devdvi/SA
OLD_FILES+=usr/share/groff_font/devdvi/SB
OLD_FILES+=usr/share/groff_font/devdvi/SC
OLD_FILES+=usr/share/groff_font/devdvi/TB
OLD_FILES+=usr/share/groff_font/devdvi/TBEC
OLD_FILES+=usr/share/groff_font/devdvi/TBI
OLD_FILES+=usr/share/groff_font/devdvi/TBIEC
OLD_FILES+=usr/share/groff_font/devdvi/TBITC
OLD_FILES+=usr/share/groff_font/devdvi/TBTC
OLD_FILES+=usr/share/groff_font/devdvi/TI
OLD_FILES+=usr/share/groff_font/devdvi/TIEC
OLD_FILES+=usr/share/groff_font/devdvi/TITC
OLD_FILES+=usr/share/groff_font/devdvi/TR
OLD_FILES+=usr/share/groff_font/devdvi/TREC
OLD_FILES+=usr/share/groff_font/devdvi/TRTC
OLD_FILES+=usr/share/groff_font/devdvi/ec.map
OLD_FILES+=usr/share/groff_font/devdvi/msam.map
OLD_FILES+=usr/share/groff_font/devdvi/msbm.map
OLD_FILES+=usr/share/groff_font/devdvi/tc.map
OLD_FILES+=usr/share/groff_font/devdvi/texb.map
OLD_FILES+=usr/share/groff_font/devdvi/texex.map
OLD_FILES+=usr/share/groff_font/devdvi/texi.map
OLD_FILES+=usr/share/groff_font/devdvi/texmi.map
OLD_FILES+=usr/share/groff_font/devdvi/texr.map
OLD_FILES+=usr/share/groff_font/devdvi/texsy.map
OLD_FILES+=usr/share/groff_font/devdvi/textex.map
OLD_FILES+=usr/share/groff_font/devdvi/textt.map
OLD_DIRS+=usr/share/groff_font/devdvi
OLD_FILES+=usr/share/groff_font/devhtml/B
OLD_FILES+=usr/share/groff_font/devhtml/BI
OLD_FILES+=usr/share/groff_font/devhtml/CB
OLD_FILES+=usr/share/groff_font/devhtml/CBI
OLD_FILES+=usr/share/groff_font/devhtml/CI
OLD_FILES+=usr/share/groff_font/devhtml/CR
OLD_FILES+=usr/share/groff_font/devhtml/DESC
OLD_FILES+=usr/share/groff_font/devhtml/I
OLD_FILES+=usr/share/groff_font/devhtml/R
OLD_FILES+=usr/share/groff_font/devhtml/S
OLD_DIRS+=usr/share/groff_font/devhtml
OLD_FILES+=usr/share/groff_font/devkoi8-r/B
OLD_FILES+=usr/share/groff_font/devkoi8-r/BI
OLD_FILES+=usr/share/groff_font/devkoi8-r/CW
OLD_FILES+=usr/share/groff_font/devkoi8-r/DESC
OLD_FILES+=usr/share/groff_font/devkoi8-r/I
OLD_FILES+=usr/share/groff_font/devkoi8-r/L
OLD_FILES+=usr/share/groff_font/devkoi8-r/R
OLD_FILES+=usr/share/groff_font/devkoi8-r/S
OLD_DIRS+=usr/share/groff_font/devkoi8-r
OLD_FILES+=usr/share/groff_font/devlatin1/B
OLD_FILES+=usr/share/groff_font/devlatin1/BI
OLD_FILES+=usr/share/groff_font/devlatin1/CW
OLD_FILES+=usr/share/groff_font/devlatin1/DESC
OLD_FILES+=usr/share/groff_font/devlatin1/I
OLD_FILES+=usr/share/groff_font/devlatin1/L
OLD_FILES+=usr/share/groff_font/devlatin1/R
OLD_FILES+=usr/share/groff_font/devlatin1/S
OLD_DIRS+=usr/share/groff_font/devlatin1
OLD_FILES+=usr/share/groff_font/devlbp/CB
OLD_FILES+=usr/share/groff_font/devlbp/CI
OLD_FILES+=usr/share/groff_font/devlbp/CR
OLD_FILES+=usr/share/groff_font/devlbp/DESC
OLD_FILES+=usr/share/groff_font/devlbp/EB
OLD_FILES+=usr/share/groff_font/devlbp/EI
OLD_FILES+=usr/share/groff_font/devlbp/ER
OLD_FILES+=usr/share/groff_font/devlbp/HB
OLD_FILES+=usr/share/groff_font/devlbp/HBI
OLD_FILES+=usr/share/groff_font/devlbp/HI
OLD_FILES+=usr/share/groff_font/devlbp/HNB
OLD_FILES+=usr/share/groff_font/devlbp/HNBI
OLD_FILES+=usr/share/groff_font/devlbp/HNI
OLD_FILES+=usr/share/groff_font/devlbp/HNR
OLD_FILES+=usr/share/groff_font/devlbp/HR
OLD_FILES+=usr/share/groff_font/devlbp/TB
OLD_FILES+=usr/share/groff_font/devlbp/TBI
OLD_FILES+=usr/share/groff_font/devlbp/TI
OLD_FILES+=usr/share/groff_font/devlbp/TR
OLD_DIRS+=usr/share/groff_font/devlbp
OLD_FILES+=usr/share/groff_font/devlj4/AB
OLD_FILES+=usr/share/groff_font/devlj4/ABI
OLD_FILES+=usr/share/groff_font/devlj4/AI
OLD_FILES+=usr/share/groff_font/devlj4/ALBB
OLD_FILES+=usr/share/groff_font/devlj4/ALBR
OLD_FILES+=usr/share/groff_font/devlj4/AOB
OLD_FILES+=usr/share/groff_font/devlj4/AOI
OLD_FILES+=usr/share/groff_font/devlj4/AOR
OLD_FILES+=usr/share/groff_font/devlj4/AR
OLD_FILES+=usr/share/groff_font/devlj4/CB
OLD_FILES+=usr/share/groff_font/devlj4/CBI
OLD_FILES+=usr/share/groff_font/devlj4/CI
OLD_FILES+=usr/share/groff_font/devlj4/CLARENDON
OLD_FILES+=usr/share/groff_font/devlj4/CORONET
OLD_FILES+=usr/share/groff_font/devlj4/CR
OLD_FILES+=usr/share/groff_font/devlj4/DESC
OLD_FILES+=usr/share/groff_font/devlj4/GB
OLD_FILES+=usr/share/groff_font/devlj4/GBI
OLD_FILES+=usr/share/groff_font/devlj4/GI
OLD_FILES+=usr/share/groff_font/devlj4/GR
OLD_FILES+=usr/share/groff_font/devlj4/LGB
OLD_FILES+=usr/share/groff_font/devlj4/LGI
OLD_FILES+=usr/share/groff_font/devlj4/LGR
OLD_FILES+=usr/share/groff_font/devlj4/MARIGOLD
OLD_FILES+=usr/share/groff_font/devlj4/OB
OLD_FILES+=usr/share/groff_font/devlj4/OBI
OLD_FILES+=usr/share/groff_font/devlj4/OI
OLD_FILES+=usr/share/groff_font/devlj4/OR
OLD_FILES+=usr/share/groff_font/devlj4/S
OLD_FILES+=usr/share/groff_font/devlj4/SYMBOL
OLD_FILES+=usr/share/groff_font/devlj4/TB
OLD_FILES+=usr/share/groff_font/devlj4/TBI
OLD_FILES+=usr/share/groff_font/devlj4/TI
OLD_FILES+=usr/share/groff_font/devlj4/TNRB
OLD_FILES+=usr/share/groff_font/devlj4/TNRBI
OLD_FILES+=usr/share/groff_font/devlj4/TNRI
OLD_FILES+=usr/share/groff_font/devlj4/TNRR
OLD_FILES+=usr/share/groff_font/devlj4/TR
OLD_FILES+=usr/share/groff_font/devlj4/UB
OLD_FILES+=usr/share/groff_font/devlj4/UBI
OLD_FILES+=usr/share/groff_font/devlj4/UCB
OLD_FILES+=usr/share/groff_font/devlj4/UCBI
OLD_FILES+=usr/share/groff_font/devlj4/UCI
OLD_FILES+=usr/share/groff_font/devlj4/UCR
OLD_FILES+=usr/share/groff_font/devlj4/UI
OLD_FILES+=usr/share/groff_font/devlj4/UR
OLD_FILES+=usr/share/groff_font/devlj4/WINGDINGS
OLD_DIRS+=usr/share/groff_font/devlj4
OLD_FILES+=usr/share/groff_font/devps/AB
OLD_FILES+=usr/share/groff_font/devps/ABI
OLD_FILES+=usr/share/groff_font/devps/AI
OLD_FILES+=usr/share/groff_font/devps/AR
OLD_FILES+=usr/share/groff_font/devps/BMB
OLD_FILES+=usr/share/groff_font/devps/BMBI
OLD_FILES+=usr/share/groff_font/devps/BMI
OLD_FILES+=usr/share/groff_font/devps/BMR
OLD_FILES+=usr/share/groff_font/devps/CB
OLD_FILES+=usr/share/groff_font/devps/CBI
OLD_FILES+=usr/share/groff_font/devps/CI
OLD_FILES+=usr/share/groff_font/devps/CR
OLD_FILES+=usr/share/groff_font/devps/DESC
OLD_FILES+=usr/share/groff_font/devps/EURO
OLD_FILES+=usr/share/groff_font/devps/HB
OLD_FILES+=usr/share/groff_font/devps/HBI
OLD_FILES+=usr/share/groff_font/devps/HI
OLD_FILES+=usr/share/groff_font/devps/HNB
OLD_FILES+=usr/share/groff_font/devps/HNBI
OLD_FILES+=usr/share/groff_font/devps/HNI
OLD_FILES+=usr/share/groff_font/devps/HNR
OLD_FILES+=usr/share/groff_font/devps/HR
OLD_FILES+=usr/share/groff_font/devps/Makefile
OLD_FILES+=usr/share/groff_font/devps/NB
OLD_FILES+=usr/share/groff_font/devps/NBI
OLD_FILES+=usr/share/groff_font/devps/NI
OLD_FILES+=usr/share/groff_font/devps/NR
OLD_FILES+=usr/share/groff_font/devps/PB
OLD_FILES+=usr/share/groff_font/devps/PBI
OLD_FILES+=usr/share/groff_font/devps/PI
OLD_FILES+=usr/share/groff_font/devps/PR
OLD_FILES+=usr/share/groff_font/devps/S
OLD_FILES+=usr/share/groff_font/devps/SS
OLD_FILES+=usr/share/groff_font/devps/TB
OLD_FILES+=usr/share/groff_font/devps/TBI
OLD_FILES+=usr/share/groff_font/devps/TI
OLD_FILES+=usr/share/groff_font/devps/TR
OLD_FILES+=usr/share/groff_font/devps/ZCMI
OLD_FILES+=usr/share/groff_font/devps/ZD
OLD_FILES+=usr/share/groff_font/devps/ZDR
OLD_FILES+=usr/share/groff_font/devps/afmname
OLD_FILES+=usr/share/groff_font/devps/dingbats.map
OLD_FILES+=usr/share/groff_font/devps/dingbats.rmap
OLD_FILES+=usr/share/groff_font/devps/download
OLD_FILES+=usr/share/groff_font/devps/freeeuro.pfa
OLD_FILES+=usr/share/groff_font/devps/lgreekmap
OLD_FILES+=usr/share/groff_font/devps/prologue
OLD_FILES+=usr/share/groff_font/devps/symbol.sed
OLD_FILES+=usr/share/groff_font/devps/symbolchars
OLD_FILES+=usr/share/groff_font/devps/symbolsl.afm
OLD_FILES+=usr/share/groff_font/devps/symbolsl.pfa
OLD_FILES+=usr/share/groff_font/devps/text.enc
OLD_FILES+=usr/share/groff_font/devps/textmap
OLD_FILES+=usr/share/groff_font/devps/zapfdr.pfa
OLD_DIRS+=usr/share/groff_font/devps
OLD_FILES+=usr/share/groff_font/devutf8/B
OLD_FILES+=usr/share/groff_font/devutf8/BI
OLD_FILES+=usr/share/groff_font/devutf8/CW
OLD_FILES+=usr/share/groff_font/devutf8/DESC
OLD_FILES+=usr/share/groff_font/devutf8/I
OLD_FILES+=usr/share/groff_font/devutf8/L
OLD_FILES+=usr/share/groff_font/devutf8/R
OLD_FILES+=usr/share/groff_font/devutf8/S
OLD_DIRS+=usr/share/groff_font/devutf8
OLD_DIRS+=usr/share/groff_font
OLD_FILES+=usr/share/man/man1/addftinfo.1.gz
OLD_FILES+=usr/share/man/man1/afmtodit.1.gz
OLD_FILES+=usr/share/man/man1/checknr.1.gz
OLD_FILES+=usr/share/man/man1/colcrt.1.gz
OLD_FILES+=usr/share/man/man1/eqn.1.gz
OLD_FILES+=usr/share/man/man1/grn.1.gz
OLD_FILES+=usr/share/man/man1/grodvi.1.gz
OLD_FILES+=usr/share/man/man1/groff.1.gz
OLD_FILES+=usr/share/man/man1/grog.1.gz
OLD_FILES+=usr/share/man/man1/grolbp.1.gz
OLD_FILES+=usr/share/man/man1/grolj4.1.gz
OLD_FILES+=usr/share/man/man1/grops.1.gz
OLD_FILES+=usr/share/man/man1/grotty.1.gz
OLD_FILES+=usr/share/man/man1/hpftodit.1.gz
OLD_FILES+=usr/share/man/man1/indxbib.1.gz
OLD_FILES+=usr/share/man/man1/lkbib.1.gz
OLD_FILES+=usr/share/man/man1/lookbib.1.gz
OLD_FILES+=usr/share/man/man1/mmroff.1.gz
OLD_FILES+=usr/share/man/man1/neqn.1.gz
OLD_FILES+=usr/share/man/man1/nroff.1.gz
OLD_FILES+=usr/share/man/man1/pfbtops.1.gz
OLD_FILES+=usr/share/man/man1/pic.1.gz
OLD_FILES+=usr/share/man/man1/psroff.1.gz
OLD_FILES+=usr/share/man/man1/refer.1.gz
OLD_FILES+=usr/share/man/man1/tbl.1.gz
OLD_FILES+=usr/share/man/man1/tfmtodit.1.gz
OLD_FILES+=usr/share/man/man1/troff.1.gz
OLD_FILES+=usr/share/man/man1/vgrind.1.gz
OLD_FILES+=usr/share/man/man5/groff_font.5.gz
OLD_FILES+=usr/share/man/man5/groff_out.5.gz
OLD_FILES+=usr/share/man/man5/groff_tmac.5.gz
OLD_FILES+=usr/share/man/man5/lj4_font.5.gz
OLD_FILES+=usr/share/man/man5/tmac.5.gz
OLD_FILES+=usr/share/man/man5/vgrindefs.5.gz
OLD_FILES+=usr/share/man/man7/ditroff.7.gz
OLD_FILES+=usr/share/man/man7/groff.7.gz
OLD_FILES+=usr/share/man/man7/groff_char.7.gz
OLD_FILES+=usr/share/man/man7/groff_diff.7.gz
OLD_FILES+=usr/share/man/man7/groff_man.7.gz
OLD_FILES+=usr/share/man/man7/groff_mdoc.7.gz
OLD_FILES+=usr/share/man/man7/groff_me.7.gz
OLD_FILES+=usr/share/man/man7/groff_mm.7.gz
OLD_FILES+=usr/share/man/man7/groff_mmse.7.gz
OLD_FILES+=usr/share/man/man7/groff_ms.7.gz
OLD_FILES+=usr/share/man/man7/groff_trace.7.gz
OLD_FILES+=usr/share/man/man7/groff_www.7.gz
OLD_FILES+=usr/share/man/man7/mdoc.samples.7.gz
OLD_FILES+=usr/share/man/man7/me.7.gz
OLD_FILES+=usr/share/man/man7/mm.7.gz
OLD_FILES+=usr/share/man/man7/mmse.7.gz
OLD_FILES+=usr/share/man/man7/ms.7.gz
OLD_FILES+=usr/share/man/man7/orig_me.7.gz
OLD_FILES+=usr/share/man/man7/roff.7.gz
OLD_FILES+=usr/share/me/acm.me
OLD_FILES+=usr/share/me/chars.me
OLD_FILES+=usr/share/me/deltext.me
OLD_FILES+=usr/share/me/eqn.me
OLD_FILES+=usr/share/me/float.me
OLD_FILES+=usr/share/me/footnote.me
OLD_FILES+=usr/share/me/index.me
OLD_FILES+=usr/share/me/letterhead.me
OLD_FILES+=usr/share/me/local.me
OLD_FILES+=usr/share/me/null.me
OLD_FILES+=usr/share/me/refer.me
OLD_FILES+=usr/share/me/revisions
OLD_FILES+=usr/share/me/sh.me
OLD_FILES+=usr/share/me/tbl.me
OLD_FILES+=usr/share/me/thesis.me
OLD_DIRS+=usr/share/me
OLD_FILES+=usr/share/misc/vgrindefs
OLD_FILES+=usr/share/misc/vgrindefs.db
OLD_FILES+=usr/share/tmac/X.tmac
OLD_FILES+=usr/share/tmac/Xps.tmac
OLD_FILES+=usr/share/tmac/a4.tmac
OLD_FILES+=usr/share/tmac/an-old.tmac
OLD_FILES+=usr/share/tmac/an.tmac
OLD_FILES+=usr/share/tmac/andoc.tmac
OLD_FILES+=usr/share/tmac/composite.tmac
OLD_FILES+=usr/share/tmac/cp1047.tmac
OLD_FILES+=usr/share/tmac/devtag.tmac
OLD_FILES+=usr/share/tmac/doc.tmac
OLD_FILES+=usr/share/tmac/dvi.tmac
OLD_FILES+=usr/share/tmac/e.tmac
OLD_FILES+=usr/share/tmac/ec.tmac
OLD_FILES+=usr/share/tmac/eqnrc
OLD_FILES+=usr/share/tmac/europs.tmac
OLD_FILES+=usr/share/tmac/html-end.tmac
OLD_FILES+=usr/share/tmac/html.tmac
OLD_FILES+=usr/share/tmac/hyphen.ru
OLD_FILES+=usr/share/tmac/hyphen.us
OLD_FILES+=usr/share/tmac/hyphenex.us
OLD_FILES+=usr/share/tmac/koi8-r.tmac
OLD_FILES+=usr/share/tmac/latin1.tmac
OLD_FILES+=usr/share/tmac/latin2.tmac
OLD_FILES+=usr/share/tmac/latin9.tmac
OLD_FILES+=usr/share/tmac/lbp.tmac
OLD_FILES+=usr/share/tmac/lj4.tmac
OLD_FILES+=usr/share/tmac/m.tmac
OLD_FILES+=usr/share/tmac/man.local
OLD_FILES+=usr/share/tmac/man.tmac
OLD_FILES+=usr/share/tmac/mandoc.tmac
OLD_FILES+=usr/share/tmac/mdoc.local
OLD_FILES+=usr/share/tmac/mdoc.tmac
OLD_FILES+=usr/share/tmac/mdoc/doc-common
OLD_FILES+=usr/share/tmac/mdoc/doc-ditroff
OLD_FILES+=usr/share/tmac/mdoc/doc-nroff
OLD_FILES+=usr/share/tmac/mdoc/doc-syms
OLD_FILES+=usr/share/tmac/mdoc/fr.ISO8859-1
OLD_FILES+=usr/share/tmac/mdoc/ru.KOI8-R
OLD_DIRS+=usr/share/tmac/mdoc
OLD_FILES+=usr/share/tmac/me.tmac
OLD_FILES+=usr/share/tmac/mm/0.MT
OLD_FILES+=usr/share/tmac/mm/4.MT
OLD_FILES+=usr/share/tmac/mm/5.MT
OLD_FILES+=usr/share/tmac/mm/locale
OLD_FILES+=usr/share/tmac/mm/mm.tmac
OLD_FILES+=usr/share/tmac/mm/mmse.tmac
OLD_FILES+=usr/share/tmac/mm/ms.cov
OLD_FILES+=usr/share/tmac/mm/se_locale
OLD_FILES+=usr/share/tmac/mm/se_ms.cov
OLD_DIRS+=usr/share/tmac/mm
OLD_FILES+=usr/share/tmac/ms.tmac
OLD_FILES+=usr/share/tmac/mse.tmac
OLD_FILES+=usr/share/tmac/papersize.tmac
OLD_FILES+=usr/share/tmac/pic.tmac
OLD_FILES+=usr/share/tmac/ps.tmac
OLD_FILES+=usr/share/tmac/psatk.tmac
OLD_FILES+=usr/share/tmac/psold.tmac
OLD_FILES+=usr/share/tmac/pspic.tmac
OLD_FILES+=usr/share/tmac/s.tmac
OLD_FILES+=usr/share/tmac/safer.tmac
OLD_FILES+=usr/share/tmac/tmac.orig_me
OLD_FILES+=usr/share/tmac/tmac.vgrind
OLD_FILES+=usr/share/tmac/trace.tmac
OLD_FILES+=usr/share/tmac/troffrc
OLD_FILES+=usr/share/tmac/troffrc-end
OLD_FILES+=usr/share/tmac/tty-char.tmac
OLD_FILES+=usr/share/tmac/tty.tmac
OLD_FILES+=usr/share/tmac/unicode.tmac
OLD_FILES+=usr/share/tmac/www.tmac
OLD_DIRS+=usr/share/tmac
# 20170607: remove incorrect atf_check(1) manpage link
OLD_FILES+=usr/share/man/man1/atf_check.1.gz
# 20170601: remove stale manpage
OLD_FILES+=usr/share/man/man2/cap_rights_get.2.gz
# 20170601: old libifconfig and libifc
@ -177,60 +663,109 @@ OLD_FILES+=usr/share/doc/papers/newvm.ascii.gz
OLD_FILES+=usr/share/doc/papers/releng.ascii.gz
OLD_FILES+=usr/share/doc/papers/sysperf.ascii.gz
OLD_FILES+=usr/share/doc/papers/timecounter.ascii.gz
OLD_DIRS+=usr/share/doc/papers
OLD_FILES+=usr/share/doc/psd/01.cacm/paper.ascii.gz
OLD_DIRS+=usr/share/doc/psd/01.cacm
OLD_FILES+=usr/share/doc/psd/02.implement/paper.ascii.gz
OLD_DIRS+=usr/share/doc/psd/02.implement
OLD_FILES+=usr/share/doc/psd/03.iosys/paper.ascii.gz
OLD_DIRS+=usr/share/doc/psd/03.iosys
OLD_FILES+=usr/share/doc/psd/04.uprog/paper.ascii.gz
OLD_DIRS+=usr/share/doc/psd/04.uprog
OLD_FILES+=usr/share/doc/psd/05.sysman/paper.ascii.gz
OLD_DIRS+=usr/share/doc/psd/05.sysman
OLD_FILES+=usr/share/doc/psd/06.Clang/paper.ascii.gz
OLD_DIRS+=usr/share/doc/psd/06.Clang
OLD_FILES+=usr/share/doc/psd/12.make/paper.ascii.gz
OLD_DIRS+=usr/share/doc/psd/12.make
OLD_FILES+=usr/share/doc/psd/13.rcs/paper.ascii.gz
OLD_DIRS+=usr/share/doc/psd/13.rcs
OLD_FILES+=usr/share/doc/psd/13.rcs/rcs_func.ascii.gz
OLD_DIRS+=usr/share/doc/psd/13.rcs
OLD_FILES+=usr/share/doc/psd/15.yacc/paper.ascii.gz
OLD_DIRS+=usr/share/doc/psd/15.yacc
OLD_FILES+=usr/share/doc/psd/16.lex/paper.ascii.gz
OLD_DIRS+=usr/share/doc/psd/16.lex
OLD_FILES+=usr/share/doc/psd/17.m4/paper.ascii.gz
OLD_DIRS+=usr/share/doc/psd/17.m4
OLD_FILES+=usr/share/doc/psd/18.gprof/paper.ascii.gz
OLD_DIRS+=usr/share/doc/psd/18.gprof
OLD_FILES+=usr/share/doc/psd/20.ipctut/paper.ascii.gz
OLD_DIRS+=usr/share/doc/psd/20.ipctut
OLD_FILES+=usr/share/doc/psd/21.ipc/paper.ascii.gz
OLD_DIRS+=usr/share/doc/psd/21.ipc
OLD_FILES+=usr/share/doc/psd/22.rpcgen/paper.ascii.gz
OLD_DIRS+=usr/share/doc/psd/22.rpcgen
OLD_FILES+=usr/share/doc/psd/23.rpc/paper.ascii.gz
OLD_DIRS+=usr/share/doc/psd/23.rpc
OLD_FILES+=usr/share/doc/psd/24.xdr/paper.ascii.gz
OLD_DIRS+=usr/share/doc/psd/24.xdr
OLD_FILES+=usr/share/doc/psd/25.xdrrfc/paper.ascii.gz
OLD_DIRS+=usr/share/doc/psd/25.xdrrfc
OLD_FILES+=usr/share/doc/psd/26.rpcrfc/paper.ascii.gz
OLD_DIRS+=usr/share/doc/psd/26.rpcrfc
OLD_FILES+=usr/share/doc/psd/27.nfsrfc/paper.ascii.gz
OLD_DIRS+=usr/share/doc/psd/27.nfsrfc
OLD_FILES+=usr/share/doc/psd/Title.ascii.gz
OLD_FILES+=usr/share/doc/psd/contents.ascii.gz
OLD_DIRS+=usr/share/doc/psd/
OLD_FILES+=usr/share/doc/smm/01.setup/paper.ascii.gz
OLD_DIRS+=usr/share/doc/smm/01.setup
OLD_FILES+=usr/share/doc/smm/02.config/paper.ascii.gz
OLD_DIRS+=usr/share/doc/smm/02.config
OLD_FILES+=usr/share/doc/smm/03.fsck/paper.ascii.gz
OLD_DIRS+=usr/share/doc/smm/03.fsck
OLD_FILES+=usr/share/doc/smm/04.quotas/paper.ascii.gz
OLD_DIRS+=usr/share/doc/smm/04.quotas
OLD_FILES+=usr/share/doc/smm/05.fastfs/paper.ascii.gz
OLD_DIRS+=usr/share/doc/smm/05.fastfs
OLD_FILES+=usr/share/doc/smm/06.nfs/paper.ascii.gz
OLD_DIRS+=usr/share/doc/smm/06.nfs
OLD_FILES+=usr/share/doc/smm/07.lpd/paper.ascii.gz
OLD_DIRS+=usr/share/doc/smm/07.lpd
OLD_FILES+=usr/share/doc/smm/08.sendmailop/paper.ascii.gz
OLD_DIRS+=usr/share/doc/smm/08.sendmailop
OLD_FILES+=usr/share/doc/smm/11.timedop/paper.ascii.gz
OLD_DIRS+=usr/share/doc/smm/11.timedop
OLD_FILES+=usr/share/doc/smm/12.timed/paper.ascii.gz
OLD_DIRS+=usr/share/doc/smm/12.timed
OLD_FILES+=usr/share/doc/smm/18.net/paper.ascii.gz
OLD_DIRS+=usr/share/doc/smm/18.net
OLD_FILES+=usr/share/doc/smm/Title.ascii.gz
OLD_FILES+=usr/share/doc/smm/contents.ascii.gz
OLD_DIRS+=usr/share/doc/smm
OLD_FILES+=usr/share/doc/usd/04.csh/paper.ascii.gz
OLD_DIRS+=usr/share/doc/usd/04.csh
OLD_FILES+=usr/share/doc/usd/05.dc/paper.ascii.gz
OLD_DIRS+=usr/share/doc/usd/05.dc
OLD_FILES+=usr/share/doc/usd/06.bc/paper.ascii.gz
OLD_DIRS+=usr/share/doc/usd/06.bc
OLD_FILES+=usr/share/doc/usd/07.mail/paper.ascii.gz
OLD_DIRS+=usr/share/doc/usd/07.mail
OLD_FILES+=usr/share/doc/usd/10.exref/paper.ascii.gz
OLD_FILES+=usr/share/doc/usd/10.exref/summary.ascii.gz
OLD_DIRS+=usr/share/doc/usd/10.exref
OLD_FILES+=usr/share/doc/usd/11.edit/paper.ascii.gz
OLD_DIRS+=usr/share/doc/usd/11.edit
OLD_FILES+=usr/share/doc/usd/12.vi/paper.ascii.gz
OLD_FILES+=usr/share/doc/usd/12.vi/summary.ascii.gz
OLD_FILES+=usr/share/doc/usd/12.vi/viapwh.ascii.gz
OLD_DIRS+=usr/share/doc/usd/12.vi
OLD_FILES+=usr/share/doc/usd/13.viref/paper.ascii.gz
OLD_DIRS+=usr/share/doc/usd/13.viref
OLD_FILES+=usr/share/doc/usd/18.msdiffs/paper.ascii.gz
OLD_DIRS+=usr/share/doc/usd/18.msdiffs
OLD_FILES+=usr/share/doc/usd/19.memacros/paper.ascii.gz
OLD_DIRS+=usr/share/doc/usd/19.memacros
OLD_FILES+=usr/share/doc/usd/20.meref/paper.ascii.gz
OLD_DIRS+=usr/share/doc/usd/20.meref
OLD_FILES+=usr/share/doc/usd/21.troff/paper.ascii.gz
OLD_DIRS+=usr/share/doc/usd/21.troff
OLD_FILES+=usr/share/doc/usd/22.trofftut/paper.ascii.gz
OLD_DIRS+=usr/share/doc/usd/22.trofftut
OLD_FILES+=usr/share/doc/usd/Title.ascii.gz
OLD_FILES+=usr/share/doc/usd/contents.ascii.gz
OLD_DIRS+=usr/share/doc/usd
# 20170523: 64-bit inode support, library version bumps
OLD_LIBS+=lib/libzfs.so.2
OLD_LIBS+=usr/lib/libarchive.so.6

View file

@ -81,6 +81,14 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 12.x IS SLOW:
For further comments/feedback, poke adrian@ .
20170531:
The GNU roff toolchain has been removed from base. To render manpages
which are not supported by mandoc(1), man(1) can fallback on GNU roff
from ports (and recommends to install it).
To render roff(7) documents, consider using GNU roff from ports or the
heirloom doctools roff toolchain from ports via pkg install groff or
via pkg install heirloom-doctools.
20170523:
The "ino64" 64-bit inode project has been committed, which extends
a number of types to 64 bits. Upgrading in place requires care and

View file

@ -6,8 +6,14 @@ NETBSD_ATF_TESTS_SH= cat_test
${PACKAGE}FILES+= d_align.in
${PACKAGE}FILES+= d_align.out
${PACKAGE}FILES+= d_b_output.in
${PACKAGE}FILES+= d_b_output.out
${PACKAGE}FILES+= d_se_output.in
${PACKAGE}FILES+= d_se_output.out
${PACKAGE}FILES+= d_s_output.in
${PACKAGE}FILES+= d_s_output.out
${PACKAGE}FILES+= d_vt_output.in
${PACKAGE}FILES+= d_vt_output.out
.include <netbsd-tests.test.mk>

View file

@ -1,7 +1,11 @@
# @(#)Makefile 8.1 (Berkeley) 5/31/93
# $FreeBSD$
.include <src.opts.mk>
PACKAGE=runtime
PROG= chmod
SUBDIR.${MK_TESTS}+= tests
.include <bsd.prog.mk>

5
bin/chmod/tests/Makefile Normal file
View file

@ -0,0 +1,5 @@
# $FreeBSD$
ATF_TESTS_SH+= chmod_test
.include <bsd.test.mk>

160
bin/chmod/tests/chmod_test.sh Executable file
View file

@ -0,0 +1,160 @@
#
# Copyright (c) 2017 Dell EMC
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
# 1. Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
#
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.
#
# $FreeBSD$
atf_test_case RH_flag
RH_flag_head()
{
atf_set "descr" "Verify that setting modes recursively via -R doesn't " \
"affect symlinks specified via the arguments when -H " \
"is specified"
}
RH_flag_body()
{
atf_check mkdir -m 0777 -p A/B
atf_check ln -s B A/C
atf_check chmod -h 0777 A/C
atf_check -o inline:'40755\n40777\n120777\n' stat -f '%p' A A/B A/C
atf_check chmod -RH 0700 A
atf_check -o inline:'40700\n40700\n120700\n' stat -f '%p' A A/B A/C
atf_check chmod -RH 0600 A/C
atf_check -o inline:'40700\n40600\n120700\n' stat -f '%p' A A/B A/C
}
atf_test_case RL_flag
RL_flag_head()
{
atf_set "descr" "Verify that setting modes recursively via -R doesn't " \
"affect symlinks specified via the arguments when -L " \
"is specified"
}
RL_flag_body()
{
atf_check mkdir -m 0777 -p A/B
atf_check ln -s B A/C
atf_check chmod -h 0777 A/C
atf_check -o inline:'40755\n40777\n120777\n' stat -f '%p' A A/B A/C
atf_check chmod -RL 0700 A
atf_check -o inline:'40700\n40700\n120777\n' stat -f '%p' A A/B A/C
atf_check chmod -RL 0600 A/C
atf_check -o inline:'40700\n40600\n120777\n' stat -f '%p' A A/B A/C
}
atf_test_case RP_flag
RP_flag_head()
{
atf_set "descr" "Verify that setting modes recursively via -R doesn't " \
"affect symlinks specified via the arguments when -P " \
"is specified"
}
RP_flag_body()
{
atf_check mkdir -m 0777 -p A/B
atf_check ln -s B A/C
atf_check chmod -h 0777 A/C
atf_check -o inline:'40755\n40777\n120777\n' stat -f '%p' A A/B A/C
atf_check chmod -RP 0700 A
atf_check -o inline:'40700\n40700\n120700\n' stat -f '%p' A A/B A/C
atf_check chmod -RP 0600 A/C
atf_check -o inline:'40700\n40700\n120600\n' stat -f '%p' A A/B A/C
}
atf_test_case f_flag cleanup
f_flag_head()
{
atf_set "descr" "Verify that setting a mode for a file with -f " \
"doesn't emit an error message/exit with a non-zero " \
"code"
}
f_flag_body()
{
atf_check truncate -s 0 foo bar
atf_check chmod 0750 foo bar
atf_check chflags uchg foo
atf_check -e not-empty -s not-exit:0 chmod 0700 foo bar
atf_check -o inline:'100750\n100700\n' stat -f '%p' foo bar
atf_check -s exit:0 chmod -f 0600 foo bar
atf_check -o inline:'100750\n100600\n' stat -f '%p' foo bar
}
f_flag_cleanup()
{
atf_check chflags 0 foo
}
atf_test_case h_flag
h_flag_head()
{
atf_set "descr" "Verify that setting a mode for a file with -f " \
"doesn't emit an error message/exit with a non-zero " \
"code"
}
h_flag_body()
{
atf_check truncate -s 0 foo
atf_check chmod 0600 foo
atf_check -o inline:'100600\n' stat -f '%p' foo
umask 0077
atf_check ln -s foo bar
atf_check -o inline:'100600\n120700\n' stat -f '%p' foo bar
atf_check chmod -h 0500 bar
atf_check -o inline:'100600\n120500\n' stat -f '%p' foo bar
atf_check chmod 0660 bar
atf_check -o inline:'100660\n120500\n' stat -f '%p' foo bar
}
atf_test_case v_flag
v_flag_head()
{
atf_set "descr" "Verify that setting a mode with -v emits the file when " \
"doesn't emit an error message/exit with a non-zero " \
"code"
}
v_flag_body()
{
atf_check truncate -s 0 foo bar
atf_check chmod 0600 foo
atf_check chmod 0750 bar
atf_check -o 'inline:bar\n' chmod -v 0600 foo bar
atf_check chmod -v 0600 foo bar
for f in foo bar; do
echo "$f: 0100600 [-rw------- ] -> 0100700 [-rwx------ ]";
done > output.txt
atf_check -o file:output.txt chmod -vv 0700 foo bar
atf_check chmod -vv 0700 foo bar
}
atf_init_test_cases()
{
atf_add_test_case RH_flag
atf_add_test_case RL_flag
atf_add_test_case RP_flag
atf_add_test_case f_flag
atf_add_test_case h_flag
atf_add_test_case v_flag
}

View file

@ -26,6 +26,27 @@
# $FreeBSD$
atf_test_case max_seek
max_seek_head()
{
atf_set "descr" "dd(1) can seek by the maximum amount"
}
max_seek_body()
{
case `df -T . | tail -n 1 | cut -wf 2` in
"ufs")
atf_skip "UFS's maximum file size is too small";;
"zfs") ;; # ZFS is fine
"tmpfs")
atf_skip "tmpfs can't create arbitrarily large spare files";;
*) atf_skip "Unknown file system";;
esac
touch f.in
seek=`echo "2^63 / 4096 - 1" | bc`
atf_check -s exit:0 -e ignore dd if=f.in of=f.out bs=4096 seek=$seek
}
atf_test_case seek_overflow
seek_overflow_head()
{
@ -33,14 +54,7 @@ seek_overflow_head()
}
seek_overflow_body()
{
atf_expect_fail "fails with 'dd: truncating f.out: File too large' - bug 219757"
touch f.in
# Positive tests
seek=`echo "2^63 / 4096 - 1" | bc`
atf_check -s exit:0 -e ignore dd if=f.in of=f.out bs=4096 seek=$seek
# Negative tests
seek=`echo "2^63 / 4096" | bc`
atf_check -s not-exit:0 -e match:"seek offsets cannot be larger than" \
dd if=f.in of=f.out bs=4096 seek=$seek
@ -50,5 +64,6 @@ seek_overflow_body()
atf_init_test_cases()
{
atf_add_test_case seek_overflow
atf_add_test_case max_seek
atf_add_test_case seek_overflow
}

View file

@ -1,7 +1,13 @@
# @(#)Makefile 8.1 (Berkeley) 5/31/93
# $FreeBSD$
.include <src.opts.mk>
PACKAGE=runtime
PROG= echo
.if ${MK_TESTS} != "no"
SUBDIR+= tests
.endif
.include <bsd.prog.mk>

5
bin/echo/tests/Makefile Normal file
View file

@ -0,0 +1,5 @@
# $FreeBSD$
ATF_TESTS_SH+= echo_test
.include <bsd.test.mk>

View file

@ -1,7 +1,6 @@
#! /bin/sed -f
#
# Copyright (c) 1988, 1993
# The Regents of the University of California. All rights reserved.
# Copyright 2017 Shivansh Rai
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
@ -11,18 +10,11 @@
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
# 3. All advertising materials mentioning features or use of this software
# must display the following acknowledgement:
# This product includes software developed by the University of
# California, Berkeley and its contributors.
# 4. Neither the name of the University nor the names of its contributors
# may be used to endorse or promote products derived from this software
# without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
@ -31,14 +23,33 @@
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.
#
# @(#)strip.sed 8.1 (Berkeley) 6/5/93
# $FreeBSD$
#
/%beginstrip%/{
h
s/.*/.\\" This version has had comments stripped; an unstripped version is available./p
g
atf_test_case n_output
n_output_head() {
atf_set "descr" "Verify that echo(1) does not print the trailing " \
"newline character with option '-n'"
}
n_output_body() {
atf_check -s ignore -o inline:"Hello world" \
/bin/echo -n "Hello world"
}
atf_test_case append_c_output
append_c_output_head() {
atf_set "descr" "Verify that echo(1) does not print the trailing newline " \
"character when '\c' is appended to the end of the string"
}
append_c_output_body() {
atf_check -s ignore -o inline:"Hello world" \
/bin/echo "Hello world\c"
}
atf_init_test_cases()
{
atf_add_test_case n_output
atf_add_test_case append_c_output
}
/%beginstrip%/,$s/[. ][ ]*\\".*//
/^$/d
/\\n@/d

View file

@ -1,6 +1,8 @@
# @(#)Makefile 8.2 (Berkeley) 5/31/93
# $FreeBSD$
.include <src.opts.mk>
PACKAGE=runtime
PROG= ln
MAN= ln.1 symlink.7
@ -8,4 +10,8 @@ MAN= ln.1 symlink.7
LINKS= ${BINDIR}/ln ${BINDIR}/link
MLINKS= ln.1 link.1
.if ${MK_TESTS} != "no"
SUBDIR+= tests
.endif
.include <bsd.prog.mk>

5
bin/ln/tests/Makefile Normal file
View file

@ -0,0 +1,5 @@
# $FreeBSD$
ATF_TESTS_SH+= ln_test
.include <bsd.test.mk>

217
bin/ln/tests/ln_test.sh Normal file
View file

@ -0,0 +1,217 @@
#
# Copyright 2017 Shivansh Rai
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
# 1. Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
#
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.
#
# $FreeBSD$
#
set_umask()
{
if ! umask 022; then
atf_fail "setting umask failed"
fi
}
atf_test_case L_flag
L_flag_head()
{
atf_set "descr" "Verify that when creating a hard link to a " \
"symbolic link, '-L' option creates a hard" \
"link to the target of the symbolic link"
}
L_flag_body()
{
set_umask
atf_check touch A
atf_check ln -s A B
atf_check ln -L B C
stat_A=$(stat -f %i A)
stat_C=$(stat -f %i C)
atf_check_equal "$stat_A" "$stat_C"
atf_check -o inline:'B: symbolic link to A\n' file B
}
atf_test_case P_flag
P_flag_head()
{
atf_set "descr" "Verify that when creating a hard link to a " \
"symbolic link, '-P' option creates a hard " \
"link to the symbolic link itself"
}
P_flag_body()
{
set_umask
atf_check touch A
atf_check ln -s A B
atf_check ln -P B C
stat_B=$(stat -f %i B)
stat_C=$(stat -f %i C)
atf_check_equal "$stat_B" "$stat_C"
}
atf_test_case f_flag
f_flag_head()
{
atf_set "descr" "Verify that if the target file already exists, " \
"'-f' option unlinks it so that link may occur"
}
f_flag_body()
{
set_umask
atf_check touch A B
atf_check ln -f A B
stat_A=$(stat -f %i A)
stat_B=$(stat -f %i B)
atf_check_equal "$stat_A" "$stat_B"
}
atf_test_case target_exists_hard
target_exists_hard_head()
{
atf_set "descr" "Verify whether creating a hard link fails if the " \
"target file already exists"
}
target_exists_hard_body()
{
atf_check touch A B
atf_check -s exit:1 -e inline:'ln: B: File exists\n' \
ln A B
}
atf_test_case target_exists_symbolic
target_exists_symbolic_head()
{
atf_set "descr" "Verify whether creating a symbolic link fails if " \
"the target file already exists"
}
target_exists_symbolic_body()
{
atf_check touch A B
atf_check -s exit:1 -e inline:'ln: B: File exists\n' \
ln -s A B
}
atf_test_case shf_flag_dir
shf_flag_dir_head() {
atf_set "descr" "Verify that if the target directory is a symbolic " \
"link, '-shf' option prevents following the link"
}
shf_flag_dir_body()
{
atf_check mkdir -m 0777 A B
atf_check ln -s A C
atf_check ln -shf B C
atf_check -o inline:'C: symbolic link to B\n' file C
}
atf_test_case snf_flag_dir
snf_flag_dir_head() {
atf_set "descr" "Verify that if the target directory is a symbolic " \
"link, '-snf' option prevents following the link"
}
snf_flag_dir_body()
{
atf_check mkdir -m 0777 A B
atf_check ln -s A C
atf_check ln -snf B C
atf_check -o inline:'C: symbolic link to B\n' file C
}
atf_test_case sf_flag
sf_flag_head()
{
atf_set "descr" "Verify that if the target file already exists, " \
"'-sf' option unlinks it and creates a symbolic link " \
"to the source file"
}
sf_flag_body()
{
atf_check touch A B
atf_check ln -sf A B
atf_check -o inline:'B: symbolic link to A\n' file B
}
atf_test_case s_flag
s_flag_head()
{
atf_set "descr" "Verify that '-s' option creates a symbolic link"
}
s_flag_body()
{
set_umask
atf_check touch A
atf_check ln -s A B
atf_check -o inline:'B: symbolic link to A\n' file B
}
atf_test_case s_flag_broken
s_flag_broken_head()
{
atf_set "descr" "Verify that if the source file does not exists, '-s' " \
"option creates a broken symbolic link to the source file"
}
s_flag_broken_body()
{
atf_check ln -s A B
atf_check -o inline:'B: broken symbolic link to A\n' file B
}
atf_test_case sw_flag
sw_flag_head()
{
atf_set "descr" "Verify that '-sw' option produces a warning if the " \
"source of a symbolic link does not currently exist"
}
sw_flag_body()
{
atf_check -s exit:0 -e inline:'ln: warning: A: No such file or directory\n' \
ln -sw A B
atf_check -o inline:'B: broken symbolic link to A\n' file B
}
atf_init_test_cases()
{
atf_add_test_case L_flag
atf_add_test_case P_flag
atf_add_test_case f_flag
atf_add_test_case target_exists_hard
atf_add_test_case target_exists_symbolic
atf_add_test_case shf_flag_dir
atf_add_test_case snf_flag_dir
atf_add_test_case sf_flag
atf_add_test_case s_flag
atf_add_test_case s_flag_broken
atf_add_test_case sw_flag
}

View file

@ -29,7 +29,7 @@
.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
.\" POSSIBILITY OF SUCH DAMAGE.
.\"
.Dd August 21, 2015
.Dd June 5, 2017
.Dt PKILL 1
.Os
.Sh NAME
@ -176,6 +176,8 @@ Select only the newest (most recently started) of the matching processes.
.It Fl o
Select only the oldest (least recently started) of the matching processes.
.It Fl q
For
.Nm pgrep ,
Do not write anything to standard output.
.It Fl s Ar sid
Restrict matches to processes with a session ID in the comma-separated

View file

@ -41,6 +41,9 @@
# without job control.
# The -h flag specifies that this command is to be excluded from systems
# based on the NO_HISTORY compile-time symbol.
# The -n flag specifies that this command can safely be run in the same
# process when it is the only command in a command substitution. Some
# commands have special logic defined in safe_builtin().
# The -s flag specifies that this is a POSIX 'special built-in' command.
# The rest of the line specifies the command name or names used to run the
# command. The entry for bltincmd, which is run when the user does not specify
@ -48,43 +51,43 @@
#
# NOTE: bltincmd must come first!
bltincmd builtin
bltincmd -n builtin
aliascmd alias
bgcmd -j bg
bindcmd bind
breakcmd -s break -s continue
cdcmd cd chdir
commandcmd command
commandcmd -n command
dotcmd -s .
echocmd echo
echocmd -n echo
evalcmd -s eval
execcmd -s exec
exitcmd -s exit
letcmd let
exportcmd -s export -s readonly
#exprcmd expr
falsecmd false
falsecmd -n false
fgcmd -j fg
freebsd_wordexpcmd freebsd_wordexp
getoptscmd getopts
hashcmd hash
histcmd -h fc
jobidcmd jobid
jobscmd jobs
killcmd kill
jobidcmd -n jobid
jobscmd -n jobs
killcmd -n kill
localcmd local
printfcmd printf
pwdcmd pwd
printfcmd -n printf
pwdcmd -n pwd
readcmd read
returncmd -s return
setcmd -s set
setvarcmd setvar
shiftcmd -s shift
testcmd test [
timescmd -s times
testcmd -n test [
timescmd -n -s times
trapcmd -s trap
truecmd -s : true
typecmd type
truecmd -n -s : true
typecmd -n type
ulimitcmd ulimit
umaskcmd umask
unaliascmd unalias

View file

@ -73,7 +73,7 @@ extern volatile sig_atomic_t intpending;
#define INTOFF suppressint++
#define INTON { if (--suppressint == 0 && intpending) onint(); }
#define is_int_on() suppressint
#define SETINTON(s) suppressint = (s)
#define SETINTON(s) do { suppressint = (s); if (suppressint == 0 && intpending) onint(); } while (0)
#define FORCEINTON {suppressint = 0; if (intpending) onint();}
#define SET_PENDING_INT intpending = 1
#define CLEAR_PENDING_INT intpending = 0

View file

@ -470,6 +470,7 @@ evalredir(union node *n, int flags)
if (e == EXERROR || e == EXEXEC) {
if (in_redirect) {
exitstatus = 2;
FORCEINTON;
return;
}
}
@ -799,11 +800,8 @@ xtracecommand(struct arglist *varlist, int argc, char **argv)
static int
safe_builtin(int idx, int argc, char **argv)
{
if (idx == BLTINCMD || idx == COMMANDCMD || idx == ECHOCMD ||
idx == FALSECMD || idx == JOBIDCMD || idx == JOBSCMD ||
idx == KILLCMD || idx == PRINTFCMD || idx == PWDCMD ||
idx == TESTCMD || idx == TIMESCMD || idx == TRUECMD ||
idx == TYPECMD)
/* Generated from builtins.def. */
if (safe_builtin_always(idx))
return (1);
if (idx == EXPORTCMD || idx == TRAPCMD || idx == ULIMITCMD ||
idx == UMASKCMD)

View file

@ -376,10 +376,10 @@ histcmd(int argc, char **argv __unused)
char *editcmd;
fclose(efp);
INTON;
editcmd = stalloc(strlen(editor) + strlen(editfile) + 2);
sprintf(editcmd, "%s %s", editor, editfile);
evalstring(editcmd, 0); /* XXX - should use no JC command */
INTON;
readcmdfile(editfile); /* XXX - should read back - quick tst */
unlink(editfile);
}

View file

@ -66,6 +66,9 @@ const unsigned char builtincmd[] = {'
awk '{ for (i = 2 ; i <= NF ; i++) {
if ($i == "-s") {
spc = 1;
} else if ($i == "-n") {
# Handled later for builtins.h
continue
} else {
printf "\t\"\\%03o\\%03o%s\"\n", length($i), (spc ? 128 : 0) + NR-1, $i
spc = 0;
@ -90,4 +93,45 @@ extern int (*const builtinfunc[])(int, char **);
extern const unsigned char builtincmd[];
'
awk '{ printf "int %s(int, char **);\n", $1}' $temp
# Build safe_builtin_always()
cat <<EOF
static inline int
safe_builtin_always(int idx)
{
EOF
awk '
BEGIN { printed = 0 }
{
for (i = 2 ; i <= NF ; i++) {
if ($i == "-s") {
continue
} else if ($i == "-n") {
nofork = 1;
} else {
if (nofork == 0) {
continue
}
if (printed == 1) {
printf " || \n\t "
} else {
printf "\tif ("
}
printf "idx == " toupper($1)
printed = 1
nofork = 0;
# Only need to check each once
break
}
}
}' $temp
cat << EOF
)
return (1);
return(0);
}
EOF
rm -f $temp

View file

@ -29,6 +29,7 @@ ${PACKAGE}FILES+= redirection-error4.0
${PACKAGE}FILES+= redirection-error5.0
${PACKAGE}FILES+= redirection-error6.0
${PACKAGE}FILES+= redirection-error7.0
${PACKAGE}FILES+= redirection-error8.0
${PACKAGE}FILES+= write-error1.0
.include <bsd.test.mk>

View file

@ -0,0 +1,5 @@
# $FreeBSD$
$SH -c '{ { :; } </var/empty/x; } 2>/dev/null || kill -INT $$; echo continued'
r=$?
[ "$r" -gt 128 ] && [ "$(kill -l "$r")" = INT ]

View file

@ -0,0 +1,46 @@
/*
* This file and its contents are supplied under the terms of the
* Common Development and Distribution License ("CDDL"), version 1.0.
* You may only use this file in accordance with the terms of version
* 1.0 of the CDDL.
*
* A full copy of the text of the CDDL should have accompanied this
* source. A copy of the CDDL is also available via the Internet at
* http://www.illumos.org/license/CDDL.
*/
/*
* Copyright 2017 Panzura. All rights reserved.
*/
/*
* ASSERTION:
* Positive test for normalization() of stddev()
*
* SECTION: Aggregations/Normalization
*
*/
#pragma D option quiet
#pragma D option aggrate=1ms
#pragma D option switchrate=50ms
BEGIN
{
i = 0;
}
tick-100ms
/i < 11/
{
@ = stddev(i * 100);
i++;
}
tick-100ms
/i == 11/
{
printf("normalized data:\n");
normalize(@, 10);
exit(0);
}

View file

@ -0,0 +1,3 @@
normalized data:
31

View file

@ -23,7 +23,7 @@
.\"
.\" $FreeBSD$
.\"
.Dd May 31, 2016
.Dd June 7, 2017
.Dt ZPOOL-FEATURES 7
.Os
.Sh NAME
@ -48,13 +48,15 @@ to send file systems between pools.
Since most features can be enabled independently of each other the on\-disk
format of the pool is specified by the set of all features marked as
.Sy active
on the pool. If the pool was created by another software version this set may
on the pool.
If the pool was created by another software version this set may
include unsupported features.
.Ss Identifying features
Every feature has a guid of the form
.Sy com.example:feature_name .
The reverse DNS name ensures that the feature's guid is unique across all ZFS
implementations. When unsupported features are encountered on a pool they will
implementations.
When unsupported features are encountered on a pool they will
be identified by their guids.
Refer to the documentation for the ZFS implementation that created the pool
for information about those features.
@ -283,7 +285,8 @@ configuration.
.El
.Pp
This features allows ZFS to maintain more information about how free space
is organized within the pool. If this feature is
is organized within the pool.
If this feature is
.Sy enabled ,
ZFS will
set this feature to
@ -337,7 +340,8 @@ All bookmarks in the pool can be listed by running
.El
.Pp
Once this feature is enabled ZFS records the transaction group number
in which new features are enabled. This has no user-visible impact,
in which new features are enabled.
This has no user-visible impact,
but other features may depend on this feature.
.Pp
This feature becomes
@ -493,10 +497,6 @@ and will return to being
once all filesystems that have ever had their checksum set to
.Sy sha512
are destroyed.
.Pp
Booting off of a pools utilizing SHA-512/256 is
.Em NOT
yet supported.
.It Sy skein
.Bl -column "READ\-ONLY COMPATIBLE" "org.illumos:skein"
.It GUID Ta org.illumos:skein
@ -539,12 +539,6 @@ and will return to being
once all filesystems that have ever had their checksum set to
.Sy skein
are destroyed.
.Pp
Booting off of pools using
.Sy skein
is
.Em NOT
supported.
.El
.Sh SEE ALSO
.Xr zpool 8

View file

@ -3316,6 +3316,7 @@ zfs_create(libzfs_handle_t *hdl, const char *path, zfs_type_t type,
char errbuf[1024];
uint64_t zoned;
enum lzc_dataset_type ost;
zpool_handle_t *zpool_handle;
(void) snprintf(errbuf, sizeof (errbuf), dgettext(TEXT_DOMAIN,
"cannot create '%s'"), path);
@ -3355,7 +3356,8 @@ zfs_create(libzfs_handle_t *hdl, const char *path, zfs_type_t type,
if (p != NULL)
*p = '\0';
zpool_handle_t *zpool_handle = zpool_open(hdl, pool_path);
if ((zpool_handle = zpool_open(hdl, pool_path)) == NULL)
return (-1);
if (props && (props = zfs_valid_proplist(hdl, type, props,
zoned, NULL, zpool_handle, errbuf)) == 0) {

View file

@ -169,6 +169,8 @@ ${PACKAGE}FILES= \
tst.sizedkeys.d.out \
tst.stddev.d \
tst.stddev.d.out \
tst.stddev.normalize.d \
tst.stddev.normalize.d.out \
tst.subr.d \
tst.sum.d \
tst.sum.d.out \

View file

@ -1,55 +0,0 @@
Groff Bug Report
Please read the PROBLEMS file before sending in a bug report.
Please fill in all fields, even if you think they are not relevant.
Please delete the text in brackets before sending it in.
Please report separate bugs separately.
Send the completed form to bug-groff@gnu.org
GROFF VERSION:
[The version of groff you are using. For example, `1.05']
MACHINE:
[The machine you are using. For example, `Sun SPARCstation 2']
OS:
[The operating system you are using. For example, `SunOS 4.1.1']
COMPILER:
[The compiler you are used to compile groff. For example, `g++ 1.40.3']
INPUT FILES:
[Include all the files necessary to reproduce the problem that are not
part of the standard groff distribution. This includes font
description files, DESC files and macro files (with the exception of
the -ms and -mm macros: we have them). Send them as a shell archive or
as a uuencoded, compressed tar file.
It's easier for us if you can provide an example that doesn't depend on
any macro package, but obviously if you're reporting a problem with a
macro package that won't be possible. Also a short example is more
convenient than a long one, but don't worry if you can't find a short
example. Don't say something like ``any file that X'': Always send a
definite example.]
COMMAND LINE:
[The command line that we should run in order to observe the bug. For
example, `gtroff -Tps bug.tr'. If the command line uses -ms or -mm,
say whether these refer to the groff versions or the Unix versions of
the macros.]
DESCRIPTION OF INCORRECT BEHAVIOUR:
[What goes wrong when that command line is run? For example, `gtroff
gets a segmentation fault', or `The output looks bad because the bar
over the x is too long and is too far over to the left.' If you get an
error message, include it here without modification: Don't edit it to
make it more readable.]
SUGGESTED FIX [optional]:
[If you can suggest a fix for the problem, include a context diff here.
But don't delay sending in a bug report in the hope of finding a fix.
Guesses about the cause of the bug are not usually helpful.]

View file

@ -1,340 +0,0 @@
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Library General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
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 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, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Library General
Public License instead of this License.

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -1,397 +0,0 @@
GNU Free Documentation License
Version 1.2, November 2002
Copyright (C) 2000,2001,2002 Free Software Foundation, Inc.
51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
0. PREAMBLE
The purpose of this License is to make a manual, textbook, or other
functional and useful document "free" in the sense of freedom: to
assure everyone the effective freedom to copy and redistribute it,
with or without modifying it, either commercially or noncommercially.
Secondarily, this License preserves for the author and publisher a way
to get credit for their work, while not being considered responsible
for modifications made by others.
This License is a kind of "copyleft", which means that derivative
works of the document must themselves be free in the same sense. It
complements the GNU General Public License, which is a copyleft
license designed for free software.
We have designed this License in order to use it for manuals for free
software, because free software needs free documentation: a free
program should come with manuals providing the same freedoms that the
software does. But this License is not limited to software manuals;
it can be used for any textual work, regardless of subject matter or
whether it is published as a printed book. We recommend this License
principally for works whose purpose is instruction or reference.
1. APPLICABILITY AND DEFINITIONS
This License applies to any manual or other work, in any medium, that
contains a notice placed by the copyright holder saying it can be
distributed under the terms of this License. Such a notice grants a
world-wide, royalty-free license, unlimited in duration, to use that
work under the conditions stated herein. The "Document", below,
refers to any such manual or work. Any member of the public is a
licensee, and is addressed as "you". You accept the license if you
copy, modify or distribute the work in a way requiring permission
under copyright law.
A "Modified Version" of the Document means any work containing the
Document or a portion of it, either copied verbatim, or with
modifications and/or translated into another language.
A "Secondary Section" is a named appendix or a front-matter section of
the Document that deals exclusively with the relationship of the
publishers or authors of the Document to the Document's overall subject
(or to related matters) and contains nothing that could fall directly
within that overall subject. (Thus, if the Document is in part a
textbook of mathematics, a Secondary Section may not explain any
mathematics.) The relationship could be a matter of historical
connection with the subject or with related matters, or of legal,
commercial, philosophical, ethical or political position regarding
them.
The "Invariant Sections" are certain Secondary Sections whose titles
are designated, as being those of Invariant Sections, in the notice
that says that the Document is released under this License. If a
section does not fit the above definition of Secondary then it is not
allowed to be designated as Invariant. The Document may contain zero
Invariant Sections. If the Document does not identify any Invariant
Sections then there are none.
The "Cover Texts" are certain short passages of text that are listed,
as Front-Cover Texts or Back-Cover Texts, in the notice that says that
the Document is released under this License. A Front-Cover Text may
be at most 5 words, and a Back-Cover Text may be at most 25 words.
A "Transparent" copy of the Document means a machine-readable copy,
represented in a format whose specification is available to the
general public, that is suitable for revising the document
straightforwardly with generic text editors or (for images composed of
pixels) generic paint programs or (for drawings) some widely available
drawing editor, and that is suitable for input to text formatters or
for automatic translation to a variety of formats suitable for input
to text formatters. A copy made in an otherwise Transparent file
format whose markup, or absence of markup, has been arranged to thwart
or discourage subsequent modification by readers is not Transparent.
An image format is not Transparent if used for any substantial amount
of text. A copy that is not "Transparent" is called "Opaque".
Examples of suitable formats for Transparent copies include plain
ASCII without markup, Texinfo input format, LaTeX input format, SGML
or XML using a publicly available DTD, and standard-conforming simple
HTML, PostScript or PDF designed for human modification. Examples of
transparent image formats include PNG, XCF and JPG. Opaque formats
include proprietary formats that can be read and edited only by
proprietary word processors, SGML or XML for which the DTD and/or
processing tools are not generally available, and the
machine-generated HTML, PostScript or PDF produced by some word
processors for output purposes only.
The "Title Page" means, for a printed book, the title page itself,
plus such following pages as are needed to hold, legibly, the material
this License requires to appear in the title page. For works in
formats which do not have any title page as such, "Title Page" means
the text near the most prominent appearance of the work's title,
preceding the beginning of the body of the text.
A section "Entitled XYZ" means a named subunit of the Document whose
title either is precisely XYZ or contains XYZ in parentheses following
text that translates XYZ in another language. (Here XYZ stands for a
specific section name mentioned below, such as "Acknowledgements",
"Dedications", "Endorsements", or "History".) To "Preserve the Title"
of such a section when you modify the Document means that it remains a
section "Entitled XYZ" according to this definition.
The Document may include Warranty Disclaimers next to the notice which
states that this License applies to the Document. These Warranty
Disclaimers are considered to be included by reference in this
License, but only as regards disclaiming warranties: any other
implication that these Warranty Disclaimers may have is void and has
no effect on the meaning of this License.
2. VERBATIM COPYING
You may copy and distribute the Document in any medium, either
commercially or noncommercially, provided that this License, the
copyright notices, and the license notice saying this License applies
to the Document are reproduced in all copies, and that you add no other
conditions whatsoever to those of this License. You may not use
technical measures to obstruct or control the reading or further
copying of the copies you make or distribute. However, you may accept
compensation in exchange for copies. If you distribute a large enough
number of copies you must also follow the conditions in section 3.
You may also lend copies, under the same conditions stated above, and
you may publicly display copies.
3. COPYING IN QUANTITY
If you publish printed copies (or copies in media that commonly have
printed covers) of the Document, numbering more than 100, and the
Document's license notice requires Cover Texts, you must enclose the
copies in covers that carry, clearly and legibly, all these Cover
Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
the back cover. Both covers must also clearly and legibly identify
you as the publisher of these copies. The front cover must present
the full title with all words of the title equally prominent and
visible. You may add other material on the covers in addition.
Copying with changes limited to the covers, as long as they preserve
the title of the Document and satisfy these conditions, can be treated
as verbatim copying in other respects.
If the required texts for either cover are too voluminous to fit
legibly, you should put the first ones listed (as many as fit
reasonably) on the actual cover, and continue the rest onto adjacent
pages.
If you publish or distribute Opaque copies of the Document numbering
more than 100, you must either include a machine-readable Transparent
copy along with each Opaque copy, or state in or with each Opaque copy
a computer-network location from which the general network-using
public has access to download using public-standard network protocols
a complete Transparent copy of the Document, free of added material.
If you use the latter option, you must take reasonably prudent steps,
when you begin distribution of Opaque copies in quantity, to ensure
that this Transparent copy will remain thus accessible at the stated
location until at least one year after the last time you distribute an
Opaque copy (directly or through your agents or retailers) of that
edition to the public.
It is requested, but not required, that you contact the authors of the
Document well before redistributing any large number of copies, to give
them a chance to provide you with an updated version of the Document.
4. MODIFICATIONS
You may copy and distribute a Modified Version of the Document under
the conditions of sections 2 and 3 above, provided that you release
the Modified Version under precisely this License, with the Modified
Version filling the role of the Document, thus licensing distribution
and modification of the Modified Version to whoever possesses a copy
of it. In addition, you must do these things in the Modified Version:
A. Use in the Title Page (and on the covers, if any) a title distinct
from that of the Document, and from those of previous versions
(which should, if there were any, be listed in the History section
of the Document). You may use the same title as a previous version
if the original publisher of that version gives permission.
B. List on the Title Page, as authors, one or more persons or entities
responsible for authorship of the modifications in the Modified
Version, together with at least five of the principal authors of the
Document (all of its principal authors, if it has fewer than five),
unless they release you from this requirement.
C. State on the Title page the name of the publisher of the
Modified Version, as the publisher.
D. Preserve all the copyright notices of the Document.
E. Add an appropriate copyright notice for your modifications
adjacent to the other copyright notices.
F. Include, immediately after the copyright notices, a license notice
giving the public permission to use the Modified Version under the
terms of this License, in the form shown in the Addendum below.
G. Preserve in that license notice the full lists of Invariant Sections
and required Cover Texts given in the Document's license notice.
H. Include an unaltered copy of this License.
I. Preserve the section Entitled "History", Preserve its Title, and add
to it an item stating at least the title, year, new authors, and
publisher of the Modified Version as given on the Title Page. If
there is no section Entitled "History" in the Document, create one
stating the title, year, authors, and publisher of the Document as
given on its Title Page, then add an item describing the Modified
Version as stated in the previous sentence.
J. Preserve the network location, if any, given in the Document for
public access to a Transparent copy of the Document, and likewise
the network locations given in the Document for previous versions
it was based on. These may be placed in the "History" section.
You may omit a network location for a work that was published at
least four years before the Document itself, or if the original
publisher of the version it refers to gives permission.
K. For any section Entitled "Acknowledgements" or "Dedications",
Preserve the Title of the section, and preserve in the section all
the substance and tone of each of the contributor acknowledgements
and/or dedications given therein.
L. Preserve all the Invariant Sections of the Document,
unaltered in their text and in their titles. Section numbers
or the equivalent are not considered part of the section titles.
M. Delete any section Entitled "Endorsements". Such a section
may not be included in the Modified Version.
N. Do not retitle any existing section to be Entitled "Endorsements"
or to conflict in title with any Invariant Section.
O. Preserve any Warranty Disclaimers.
If the Modified Version includes new front-matter sections or
appendices that qualify as Secondary Sections and contain no material
copied from the Document, you may at your option designate some or all
of these sections as invariant. To do this, add their titles to the
list of Invariant Sections in the Modified Version's license notice.
These titles must be distinct from any other section titles.
You may add a section Entitled "Endorsements", provided it contains
nothing but endorsements of your Modified Version by various
parties--for example, statements of peer review or that the text has
been approved by an organization as the authoritative definition of a
standard.
You may add a passage of up to five words as a Front-Cover Text, and a
passage of up to 25 words as a Back-Cover Text, to the end of the list
of Cover Texts in the Modified Version. Only one passage of
Front-Cover Text and one of Back-Cover Text may be added by (or
through arrangements made by) any one entity. If the Document already
includes a cover text for the same cover, previously added by you or
by arrangement made by the same entity you are acting on behalf of,
you may not add another; but you may replace the old one, on explicit
permission from the previous publisher that added the old one.
The author(s) and publisher(s) of the Document do not by this License
give permission to use their names for publicity for or to assert or
imply endorsement of any Modified Version.
5. COMBINING DOCUMENTS
You may combine the Document with other documents released under this
License, under the terms defined in section 4 above for modified
versions, provided that you include in the combination all of the
Invariant Sections of all of the original documents, unmodified, and
list them all as Invariant Sections of your combined work in its
license notice, and that you preserve all their Warranty Disclaimers.
The combined work need only contain one copy of this License, and
multiple identical Invariant Sections may be replaced with a single
copy. If there are multiple Invariant Sections with the same name but
different contents, make the title of each such section unique by
adding at the end of it, in parentheses, the name of the original
author or publisher of that section if known, or else a unique number.
Make the same adjustment to the section titles in the list of
Invariant Sections in the license notice of the combined work.
In the combination, you must combine any sections Entitled "History"
in the various original documents, forming one section Entitled
"History"; likewise combine any sections Entitled "Acknowledgements",
and any sections Entitled "Dedications". You must delete all sections
Entitled "Endorsements".
6. COLLECTIONS OF DOCUMENTS
You may make a collection consisting of the Document and other documents
released under this License, and replace the individual copies of this
License in the various documents with a single copy that is included in
the collection, provided that you follow the rules of this License for
verbatim copying of each of the documents in all other respects.
You may extract a single document from such a collection, and distribute
it individually under this License, provided you insert a copy of this
License into the extracted document, and follow this License in all
other respects regarding verbatim copying of that document.
7. AGGREGATION WITH INDEPENDENT WORKS
A compilation of the Document or its derivatives with other separate
and independent documents or works, in or on a volume of a storage or
distribution medium, is called an "aggregate" if the copyright
resulting from the compilation is not used to limit the legal rights
of the compilation's users beyond what the individual works permit.
When the Document is included in an aggregate, this License does not
apply to the other works in the aggregate which are not themselves
derivative works of the Document.
If the Cover Text requirement of section 3 is applicable to these
copies of the Document, then if the Document is less than one half of
the entire aggregate, the Document's Cover Texts may be placed on
covers that bracket the Document within the aggregate, or the
electronic equivalent of covers if the Document is in electronic form.
Otherwise they must appear on printed covers that bracket the whole
aggregate.
8. TRANSLATION
Translation is considered a kind of modification, so you may
distribute translations of the Document under the terms of section 4.
Replacing Invariant Sections with translations requires special
permission from their copyright holders, but you may include
translations of some or all Invariant Sections in addition to the
original versions of these Invariant Sections. You may include a
translation of this License, and all the license notices in the
Document, and any Warranty Disclaimers, provided that you also include
the original English version of this License and the original versions
of those notices and disclaimers. In case of a disagreement between
the translation and the original version of this License or a notice
or disclaimer, the original version will prevail.
If a section in the Document is Entitled "Acknowledgements",
"Dedications", or "History", the requirement (section 4) to Preserve
its Title (section 1) will typically require changing the actual
title.
9. TERMINATION
You may not copy, modify, sublicense, or distribute the Document except
as expressly provided for under this License. Any other attempt to
copy, modify, sublicense or distribute the Document is void, and will
automatically terminate your rights under this License. However,
parties who have received copies, or rights, from you under this
License will not have their licenses terminated so long as such
parties remain in full compliance.
10. FUTURE REVISIONS OF THIS LICENSE
The Free Software Foundation may publish new, revised versions
of the GNU Free Documentation License from time to time. Such new
versions will be similar in spirit to the present version, but may
differ in detail to address new problems or concerns. See
http://www.gnu.org/copyleft/.
Each version of the License is given a distinguishing version number.
If the Document specifies that a particular numbered version of this
License "or any later version" applies to it, you have the option of
following the terms and conditions either of that specified version or
of any later version that has been published (not as a draft) by the
Free Software Foundation. If the Document does not specify a version
number of this License, you may choose any version ever published (not
as a draft) by the Free Software Foundation.
ADDENDUM: How to use this License for your documents
To use this License in a document you have written, include a copy of
the License in the document and put the following copyright and
license notices just after the title page:
Copyright (c) YEAR YOUR NAME.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.2
or any later version published by the Free Software Foundation;
with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
A copy of the license is included in the section entitled "GNU
Free Documentation License".
If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts,
replace the "with...Texts." line with this:
with the Invariant Sections being LIST THEIR TITLES, with the
Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
If you have Invariant Sections without Cover Texts, or some other
combination of the three, merge those two alternatives to suit the
situation.
If your document contains nontrivial examples of program code, we
recommend releasing these examples in parallel under your choice of
free software license, such as the GNU General Public License,
to permit their use in free software.

View file

@ -1,3 +0,0 @@
$FreeBSD$
*/arch
*/src/libs/snprintf

View file

@ -1,31 +0,0 @@
$FreeBSD$
This directory contains virgin copies of the original distribution files
on a "vendor" branch. Do not, under any circumstances, attempt to upgrade
the files in this directory via patches and a cvs commit.
To upgrade to a newer version of groff, when it is available:
1. Unpack the new version into an empty directory.
[Do not make ANY changes to the files.]
2. Use the command:
cvs import -m 'Virgin import of FSF groff v<version>' \
src/contrib/groff FSF v<version>
For example, to do the import of version 1.19.2, I typed:
cvs import -m 'Virgin import of FSF groff v1.19.2' \
src/contrib/groff FSF v1_19_2
3. Follow the instructions printed out in step 2 to resolve any
conflicts between local FreeBSD changes and the newer version.
Do not, under any circumstances, deviate from this procedure.
To make local changes to groff, simply patch and commit to the main
branch (aka HEAD). Never make local changes on the FSF branch.
All local changes should be submitted to Werner Lemberg <wl@gnu.org> or
Ted Harding <ted.harding@nessie.mcc.ac.uk> for inclusion in the next
vendor release.
ru@FreeBSD.org - 20 October 2005

View file

@ -1,50 +0,0 @@
To install groff, follow the instructions in the file INSTALL.gen.
This file contains information that supplements those instructions.
(For instructions how to build groff with DJGPP tools for MS-DOS and
MS-Windows, see the file arch/djgpp/README.)
(For instructions how to build groff with the MinGW tools for
MS-Windows, see the file README.MinGW.)
groff is written in C++, so you will need a C++ compiler. The C++
source files use a suffix of `.cpp', so your C++ compiler must be able
to handle this. If you don't already have a C++ compiler, I suggest
gcc 2.7.1 or later (gcc version 2 includes GNU C++ as well as GNU C).
From gcc 2.5, it is no longer necessary to install libg++: the C++
header files needed by groff are created by the gcc installation
process. To override configure's choice of C++ compiler, you can set
the CXX environment variable.
If you have a library that provides a faster malloc than your system's
usual malloc, it is good idea to include it in LIBS. For example,
using the malloc that comes with GNU Emacs version 20 can give a
worthwhile (and sometimes spectacular) performance improvement.
If you want A4 or letter paper format and the configure script produces
an incorrect guess, say
PAGE=xxx ./configure
where `xxx' should be either `A4' or `letter'. Note that this will only
affect the paper selection of some device drivers like grops (which can
be still overridden on the command line). For compatibility with
ditroff, the default page length in gtroff is always 11 inches. The
page length can be changed with the `pl' request.
When you have built groff, you can use the test-groff script to try
groff out on one of the man pages. (Use the .n files not the .man
files.) The test-groff script sets up environment variables to allow
groff to run without being installed. For example, you could do
./test-groff -man -Tascii src/roff/groff/groff.n | less
To get a DVI, PDF, or HTML version of the groff texinfo manual, say `make
groff.dvi', `make groff.pdf', or `make groff.html', respectively, in the
`doc' subdirectory (after configuring the groff package). Note that you
need texinfo version 4.6 as a prerequisite. Neither older versions nor
texinfo 4.7 (due to a bug) will work.
If you have problems, read the PROBLEMS file. If this doesn't help
send a bug report using the form in the file BUG-REPORT.

View file

@ -1,231 +0,0 @@
Installation Instructions
*************************
Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004 Free
Software Foundation, Inc.
This file is free documentation; the Free Software Foundation gives
unlimited permission to copy, distribute and modify it.
Basic Installation
==================
These are generic installation instructions.
The `configure' shell script attempts to guess correct values for
various system-dependent variables used during compilation. It uses
those values to create a `Makefile' in each directory of the package.
It may also create one or more `.h' files containing system-dependent
definitions. Finally, it creates a shell script `config.status' that
you can run in the future to recreate the current configuration, and a
file `config.log' containing compiler output (useful mainly for
debugging `configure').
It can also use an optional file (typically called `config.cache'
and enabled with `--cache-file=config.cache' or simply `-C') that saves
the results of its tests to speed up reconfiguring. (Caching is
disabled by default to prevent problems with accidental use of stale
cache files.)
If you need to do unusual things to compile the package, please try
to figure out how `configure' could check whether to do them, and mail
diffs or instructions to the address given in the `README' so they can
be considered for the next release. If you are using the cache, and at
some point `config.cache' contains results you don't want to keep, you
may remove or edit it.
The file `configure.ac' (or `configure.in') is used to create
`configure' by a program called `autoconf'. You only need
`configure.ac' if you want to change it or regenerate `configure' using
a newer version of `autoconf'.
The simplest way to compile this package is:
1. `cd' to the directory containing the package's source code and type
`./configure' to configure the package for your system. If you're
using `csh' on an old version of System V, you might need to type
`sh ./configure' instead to prevent `csh' from trying to execute
`configure' itself.
Running `configure' takes awhile. While running, it prints some
messages telling which features it is checking for.
2. Type `make' to compile the package.
3. Optionally, type `make check' to run any self-tests that come with
the package.
4. Type `make install' to install the programs and any data files and
documentation.
5. You can remove the program binaries and object files from the
source code directory by typing `make clean'. To also remove the
files that `configure' created (so you can compile the package for
a different kind of computer), type `make distclean'. There is
also a `make maintainer-clean' target, but that is intended mainly
for the package's developers. If you use it, you may have to get
all sorts of other programs in order to regenerate files that came
with the distribution.
Compilers and Options
=====================
Some systems require unusual options for compilation or linking that the
`configure' script does not know about. Run `./configure --help' for
details on some of the pertinent environment variables.
You can give `configure' initial values for configuration parameters
by setting variables in the command line or in the environment. Here
is an example:
./configure CC=c89 CFLAGS=-O2 LIBS=-lposix
*Note Defining Variables::, for more details.
Compiling For Multiple Architectures
====================================
You can compile the package for more than one kind of computer at the
same time, by placing the object files for each architecture in their
own directory. To do this, you must use a version of `make' that
supports the `VPATH' variable, such as GNU `make'. `cd' to the
directory where you want the object files and executables to go and run
the `configure' script. `configure' automatically checks for the
source code in the directory that `configure' is in and in `..'.
If you have to use a `make' that does not support the `VPATH'
variable, you have to compile the package for one architecture at a
time in the source code directory. After you have installed the
package for one architecture, use `make distclean' before reconfiguring
for another architecture.
Installation Names
==================
By default, `make install' will install the package's files in
`/usr/local/bin', `/usr/local/man', etc. You can specify an
installation prefix other than `/usr/local' by giving `configure' the
option `--prefix=PREFIX'.
You can specify separate installation prefixes for
architecture-specific files and architecture-independent files. If you
give `configure' the option `--exec-prefix=PREFIX', the package will
use PREFIX as the prefix for installing programs and libraries.
Documentation and other data files will still use the regular prefix.
In addition, if you use an unusual directory layout you can give
options like `--bindir=DIR' to specify different values for particular
kinds of files. Run `configure --help' for a list of the directories
you can set and what kinds of files go in them.
If the package supports it, you can cause programs to be installed
with an extra prefix or suffix on their names by giving `configure' the
option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
Optional Features
=================
Some packages pay attention to `--enable-FEATURE' options to
`configure', where FEATURE indicates an optional part of the package.
They may also pay attention to `--with-PACKAGE' options, where PACKAGE
is something like `gnu-as' or `x' (for the X Window System). The
`README' should mention any `--enable-' and `--with-' options that the
package recognizes.
For packages that use the X Window System, `configure' can usually
find the X include and library files automatically, but if it doesn't,
you can use the `configure' options `--x-includes=DIR' and
`--x-libraries=DIR' to specify their locations.
Specifying the System Type
==========================
There may be some features `configure' cannot figure out automatically,
but needs to determine by the type of machine the package will run on.
Usually, assuming the package is built to be run on the _same_
architectures, `configure' can figure that out, but if it prints a
message saying it cannot guess the machine type, give it the
`--build=TYPE' option. TYPE can either be a short name for the system
type, such as `sun4', or a canonical name which has the form:
CPU-COMPANY-SYSTEM
where SYSTEM can have one of these forms:
OS KERNEL-OS
See the file `config.sub' for the possible values of each field. If
`config.sub' isn't included in this package, then this package doesn't
need to know the machine type.
If you are _building_ compiler tools for cross-compiling, you should
use the `--target=TYPE' option to select the type of system they will
produce code for.
If you want to _use_ a cross compiler, that generates code for a
platform different from the build platform, you should specify the
"host" platform (i.e., that on which the generated programs will
eventually be run) with `--host=TYPE'.
Sharing Defaults
================
If you want to set default values for `configure' scripts to share, you
can create a site shell script called `config.site' that gives default
values for variables like `CC', `cache_file', and `prefix'.
`configure' looks for `PREFIX/share/config.site' if it exists, then
`PREFIX/etc/config.site' if it exists. Or, you can set the
`CONFIG_SITE' environment variable to the location of the site script.
A warning: not all `configure' scripts look for a site script.
Defining Variables
==================
Variables not defined in a site shell script can be set in the
environment passed to `configure'. However, some packages may run
configure again during the build, and the customized values of these
variables may be lost. In order to avoid this problem, you should set
them in the `configure' command line, using `VAR=value'. For example:
./configure CC=/usr/local2/bin/gcc
will cause the specified gcc to be used as the C compiler (unless it is
overridden in the site shell script).
`configure' Invocation
======================
`configure' recognizes the following options to control how it operates.
`--help'
`-h'
Print a summary of the options to `configure', and exit.
`--version'
`-V'
Print the version of Autoconf used to generate the `configure'
script, and exit.
`--cache-file=FILE'
Enable the cache: use and save the results of the tests in FILE,
traditionally `config.cache'. FILE defaults to `/dev/null' to
disable caching.
`--config-cache'
`-C'
Alias for `--cache-file=config.cache'.
`--quiet'
`--silent'
`-q'
Do not print messages saying which checks are being made. To
suppress all normal output, redirect it to `/dev/null' (any error
messages will still be shown).
`--srcdir=DIR'
Look for the package's source code in directory DIR. Usually
`configure' can determine that directory automatically.
`configure' also accepts some other, not widely useful, options. Run
`configure --help' for more details.

View file

@ -1,21 +0,0 @@
LICENSE
The groff program is a free software project. It is licensed under
the GNU General Public License (GNU GPL), version 2 or later.
The file COPYING in the top directory of the groff source package
contains a copy of the GPL that was downloaded from the GNU web site
http://www.gnu.org/copyleft/gpl.txt at 1 dec 2003.
All files of the groff source package are licensed under this version
of the GPL (or licenses which are compatible with the GPL).
You are free to choose version 2 or any subsequent version of the GPL.
The GPL names an address where you can get the actual version by
normal post. Further information is found in the internet at
http://www.gnu.org/copyleft.
The groff program is a GNU package, and the copyright of all files of
the groff source package which are under the GPL has been assigned to
the Free Sofware Foundation (FSF). Information on GNU and FSF is
found at http://www.fsf.org/.

View file

@ -1,164 +0,0 @@
MANIFEST
Last update: 26 May 2005
This file is part of groff, the GNU roff type-setting system.
Copyright (C) 2001, 2003, 2004, 2005 Free Software Foundation, Inc.
written by Bernd Warken <bwarken@mayn.de>
maintained by Werner Lemberg <wl@gnu.org>
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.1 or
any later version published by the Free Software Foundation; with the
Invariant Sections being this .ig-section and AUTHORS, with no
Front-Cover Texts, and with no Back-Cover Texts.
A copy of the Free Documentation License is included as a file called
FDL in the main directory of the groff source package.
########################################################################
This file gives an overview of the directories and the main files of
the groff source distribution.
1) The top directory.
BUG-REPORT A template for bug-reports.
ChangeLog Log of the changes in the different groff versions.
COPYING The GNU General Public License (GPL).
FDL The Free Documentation License (FDL).
INSTALL Information on compiling and installing groff.
INSTALL.gen Generic information on configuration and compiling.
LICENSE Licensing information.
MANIFEST The file you are reading.
MORE.STUFF Useful stuff in other packages.
NEWS Recent user-visible changes in groff.
PROBLEMS Tips to handle known critical situations.
PROJECTS Long-term additions to groff.
README Availability and contact information for groff.
README.MinGW Build information for MinGW.
TODO Things planned for future groff versions.
All other files in the top directory are related to the configuration,
compilation, and install processes.
2) The directory structure
./arch Data that is special for different architectures.
djgpp Data special for the 32-bit DOS compiler djgpp.
misc Data needed for various platforms.
./contrib Part of groff, but maintained by other people.
eqn2graph Convert equations created with EQN into different
graphical formats.
gdiffmk An improved implementation of the diffmk command to mark
differences between groff/nroff/troff files.
grap2graph Convert grap diagraps into different graphical formats.
groffer A wrapper to conveniently view roff files.
mm The groff mm macro package.
mom The groff mom macro package.
pdfmark A package to add PDF marks to groff documents, together
with a shell script (pdfroff) for easy creation of PDF
documents.
pic2graph Convert PIC diagrams into different graphical formats.
./doc Manuals and tutorials to groff aspects.
./font Device information and fonts.
devX100 100dpi device for X Window System.
devX100-12 100dpi device with narrower font (for 12pt base font).
devX75 75dpi device for X Window System.
devX75-12 75dpi device with narrower font (for 12pt base font).
devascii Text device for ASCII output.
devcp1047 EBCDIC device.
devdvi TeX DVI device.
devhtml HTML device.
devlatin1 Text device for latin-1 (ISO 8859-1) output.
devlbp Device for Canon CAPSL laser printers.
devlj4 Device for HP Laserjet 4, PCL 5, and compatible printers.
devps PostScript device.
devutf8 Text device for Unicode output.
./man Some groff manual pages of more general character.
./src Everything written in programming languages.
./src/devices The postprocessors.
grodvi TeX DVI output.
grohtml HTML output.
grolbp Canon printers.
grolj4 HP Laserjet 4, PCL 5, and compatible printers.
grops PostScript output.
grotty Text output.
xditview A groff (pre)viewer for the X Window system.
./src/include The *.h C/C++ include files.
./src/libs C++ code common to several parts of the groff sources.
libbib Library of bibliographic functions.
libdriver Parser for intermediate output and postprocessor code.
libgroff Library for general support functions used everywhere.
libxutil Utility functions for xditview and xtotroff.
snprintf An implementation of snprintf() and friends.
./src/preproc Preprocessors.
eqn Mathematical formulae.
grn Gremlin pictures.
html The preprocessor part of grohtml.
pic Diagram drawer.
refer Bibliographic references.
soelim File inclusion using tmac path.
tbl Tables.
./src/roff Front-end programs.
groff Wrapper around troff. This is the main user program.
grog Guess groff command line options.
nroff Emulate classical nroff text formatter.
troff Main roff formatter program.
./src/utils Utility programs around groff.
addftinfo Add information to old troff font files for use with groff.
afmtodit Create font description files for the PostScript device.
hpftodit Create font description files for the LJ4 device.
indxbib Make inverted index for bibliographic databases.
lkbib Search bibliographic databases.
lookbib Interactively search bibliographic databases.
pfbtops Translate a PostScript font in PFB format to PFA.
tfmtodit Create font description files for TeX DVI device.
xtotroff Create font description files for xditview.
./tmac Macro files.
3) Documentation
The groff documentation is scattered upon several places.
- The main directory contains documents related to the groff source.
The README file contains the information needed to get the groff
package, report bugs, and contact the developers.
- The man-page of each program (section 1) is kept in the source
directory of the program.
- The man-pages for the other sections are found in `src/man'.
- Documentation in other formats are located in the `doc' directory,
including the groff info file, tutorials, and manuals.
4) The roff parser
The parsing of the roff language is done by troff. The input is converted
to tokens in `src/roff/troff/input.cpp' and transformed into `nodes' by
`src/roff/troff/env.cpp' and `src/roff/troff/node.cpp'. From these, the
intermediate output is generated (also in `node.cpp').
5) Postprocessing
The parser for the intermediate output and the postprocessing is in
`src/libs/libdriver/input.cpp'. This is used by all postprocessors.

View file

@ -1,198 +0,0 @@
More stuff for groff
====================
Windows 32
----------
Here two ports using the gcc compiler and other GNU tools:
. Cygwin:
http://sources.redhat.com/cygwin/
Look for a convenient mirror site in
http://sources.redhat.com/cygwin/mirrors.html
At any of those mirrors, groff can be found in the directory
latest/groff.
. Kees Zeelenberg <c.zeelenberg@hccnet.nl>:
http://gnuwin32.sourceforge.net/packages/groffl.htm
This port includes recent versions of grap and deroff.
dos
---
Binaries for Eli Zaretskii's port using the djgpp compiler are available
from
ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2gnu/gro*b.zip
and its mirrors; for installation details please read `arch/djgpp/README'.
This port also runs on Windows 32 systems, except Windows 2000.
grap
----
An implementation of Kernighan & Bentley's grap language for typesetting
graphs. Written by Ted Faber <faber@lunabase.org>. The actual version
can be found at
http://www.lunabase.org/~faber/Vault/software/grap/
A djgpp port which runs on dos and most Windows 32 systems (Windows 95,
Windows 98, Windows NT) done by Kees Zeelenberg <c.zeelenberg@hccnet.nl>
is available from
ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2apps/
It is intended to be used with the djgpp port of groff.
A Windows 32 port is included in the groff package available from
http://gnuwin32.sourceforge.net/
plot2dev
--------
This utility program can convert plot graphics to either pic or gremlin
files. It has been written by Richard Murphey <richard-murphey@rice.edu>
and Daniel Senderowicz <daniel@synchrods.com> (who has added the gremlin
driver). The actual version can be found as
ftp://ftp.ffii.org/pub/groff/plot2dev-x.x.tar.gz
troffcvt
--------
From the web page:
troffcvt is a translator that turns troff input into a form that can be
more easily processed. The troffcvt distribution comes with
postprocessors that turn troffcvt into various destination formats such
as HTML (Hypertext Markup Language), RTF (Rich Text Format) or plain
text.
Note that you need a lot of additional packages to compile troffcvt;
everything is available from
http://www.primate.wisc.edu/software/troffcvt/
unroff
------
From the README file:
Unroff is a Scheme-based, programmable, extensible troff translator with
a back-end for the Hypertext Markup Language. Unroff is free software
and is distributed both as source and as precompiled binaries.
http://www.informatik.uni-bremen.de/~net/unroff/unroff.html
You need als Elk, the Scheme based Extension Language Kit, which is
available from
http://www.informatik.uni-bremen.de/~net/elk
deroff
------
Deroff removes roff constructs from documents for the purpose of indexing,
spell checking etc.
Michael Haardt's <michael@moria.de> implementation is a little smarter
than traditional implementations, because it knows about certain -man and
-mm macros. It is able to generate a word list for spell checking tools
or omit headers for sentence analysis tools. It can further generate
cpp-style #line lines.
http://www.moria.de/deroff/
Version 1.6 compiled with DJGPP (for MS-DOS and all Windows 32 systems,
i.e. Windows 95, Windows 98, Windows NT) is available from
ftp://ftp.simtel.net/pub/simtelnet/gnu/djgpp/v2apps/
and its mirrors.
A Windows 32 port of version 1.8 is available from
http://gnuwin32.sourceforge.net/
David Frey <dfrey@debian.org> has also written a deroff implementation
for Debian; it is available from
ftp://ftp.debian.org/debian/pool/main/d/deroff/
miscellaneous
-------------
. Ralph Corderoy's excellent page on troff:
www.troff.org
There are links for virtually everything related to troff.
. Dr. Robert Hermann's groff gems are available from
http://www.eas.slu.edu/People/RBHerrmann/GROFF/index.html
At present there are examples for
o creating business cards
o using groff to make large format posters for presentations
. Robert Marks's collection of useful macros and scripts is available from
http://www.agsm.edu.au/~bobm/odds+ends/scripts.html
Description:
o `polish': Is a sed (= the Unix stream editor) script that does many
things to ASCII text. Amongst other things, it breaks lines at new
sentences, reduces upper-case acronyms by one point size, adds
diacriticals, changes simple quotes into smart quotes, and makes a few
simple grammar checks. The best way to see what it does is to run it
as a sed script file (or files) on a text file and then compare the
output file with the original.
o `DropCaps' is a troff script which replaces the initial letters of
paragraphs immediately after H1 and H2 headings with drop-capitals of
specified point size, and automatically flows the text around the new
drop cap.
o `AJM Header' is a set of troff macros used in production of the
Australian Journal of Management. They use the Memorandum Macros (mm)
of AT&T, and so should be invoked with the UNIX troff -mm flag; they
should also work with the GNU troff -mm flag.
. Thomas Baruchel <baruchel@libertysurf.fr> has developed Meta-tbl, a tbl
postprocessor to manipulate table cells (like adding gray shades). The
latest version can be found at
http://perso.libertysurf.fr/baruchel/
. gpresent, written by Bob Diertens <bobd@science.uva.nl>. From the README
file:
gpresent is a package for making presentation with groff and acroread.
It consist of a set of macros to be used with groff and a post-processor
for manipulating the PostScript output of groff. Without the use of the
PAUSE macro, it can also be used for making slides.
It is available from
www.science.uva.nl/~bobd/useful/gpresent/
documentation
-------------
Many documents related to the original versions of troff, ditroff, pic,
and others can be accessed from the following web pages:
http://www.cs.bell-labs.com/cm/cs/cstr.html
http://www.cs.bell-labs.com/cm/cs/papers.html

View file

@ -1,25 +0,0 @@
# Copyright (C) 1989-2000 Free Software Foundation, Inc.
# Written by James Clark (jjc@jclark.com)
#
# This file is part of groff.
#
# groff 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.
#
# groff 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 groff; see the file COPYING. If not, write to the Free Software
# Foundation, 51 Franklin St - Fifth Floor, Boston, MA 02110-1301, USA.
SHELL=/bin/sh
.PHONY: all
all:
$(SHELL) configure
$(MAKE) all

View file

@ -1,33 +0,0 @@
# Makefile.ccpg
MAKEFILEPARTS=\
$(top_srcdir)/Makefile.comm \
$(top_builddir)/Makefile.cfg \
$(srcdir)/Makefile.sub \
$(top_srcdir)/Makefile.ccpg \
Makefile.dep
all: $(PROG) $(MANPAGES)
$(PROG): $(OBJS) $(XLIBS)
$(LINK.cpp) -o $@ $(OBJS) $(XLIBS) $(EXTRA_LDFLAGS) $(LIBS) $(MLIB)
install_bin: install_prog
install_prog: $(PROG)
install_data: install_man
install_man: $(MANPAGES)
uninstall_sub: uninstall_prog uninstall_man
depend: depend_src
depend.temp: $(GENSRCS) $(YTABC)
distfiles: $(YTABC)
TAGS: TAGS_src
TAGS_src: $(CCSRCS) $(CSRCS) $(GRAM) $(HDRS)
Makefile: $(MAKEFILEPARTS)
Makefile.dep:
touch Makefile.dep
$(top_builddir)/stamp-h $(MANPAGES): $(top_srcdir)/VERSION $(top_srcdir)/REVISION
pure: $(PROG).pure
$(PROG).pure: $(OBJS) $(XLIBS)
$(PURIFY) $(PURIFYCCFLAGS) \
$(LINK.cpp) -o $@ $(OBJS) $(XLIBS) $(LIBS) $(MLIB)

View file

@ -1,304 +0,0 @@
# Copyright (C) 1989-2000, 2002, 2003, 2004 Free Software Foundation, Inc.
# Written by James Clark (jjc@jclark.com)
#
# This file is part of groff.
#
# groff 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.
#
# groff 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 groff; see the file COPYING. If not, write to the Free Software
# Foundation, 51 Franklin St - Fifth Floor, Boston, MA 02110-1301, USA.
#
# Makefile.comm
#
INCLUDES=-I. -I$(srcdir) \
-I$(top_builddir)/src/include -I$(top_srcdir)/src/include
ALL_CCFLAGS=$(INCLUDES) $(CCDEFINES) $(CCFLAGS) $(CPPFLAGS)
COMPILE.cpp=$(CCC) $(ALL_CCFLAGS) -c
ALL_CFLAGS=$(INCLUDES) $(CDEFINES) $(CFLAGS) $(CPPFLAGS)
COMPILE.c=$(CC) $(ALL_CFLAGS) -c
LINK.cpp=$(CCC) $(CCFLAGS) $(LDFLAGS)
LINK.c=$(CC) $(CFLAGS) $(LDFLAGS)
LIBGROFF=$(top_builddir)/src/libs/libgroff/libgroff.$(LIBEXT)
LIBBIB=$(top_builddir)/src/libs/libbib/libbib.$(LIBEXT)
LIBDRIVER=$(top_builddir)/src/libs/libdriver/libdriver.$(LIBEXT)
LIBXUTIL=$(top_builddir)/src/libs/libxutil/libxutil.$(LIBEXT)
MLIB=
XLIBS=
YTABH=
YTABC=
GRAM=
LIBCLEAN=
CLEANADD=
CLEANDIRADD=
CLEANNOTSRCDIRADD=
MOSTLYCLEANFILES=$(MANCLEAN) $(PROG) $(OBJS) $(GENSRCS) $(GENHDRS) \
depend.temp core y.output $(CLEANADD)
CLEANFILES=$(LIBCLEAN)
DISTCLEANFILES=TAGS Makefile Makefile.dep
REALCLEANFILES=$(YTABC) $(YTABH)
NAMEPREFIX=
HDRS=
MANPAGES=$(MAN1) $(MAN5) $(MAN7)
MANCLEAN=$(MANPAGES)
fontsubdir=$(fontdir)/dev$(DEV)
all install install_bin install_data TAGS depend distfiles uninstall_sub:
install: prefix_must_exist install_bin install_data
uninstall: uninstall_sub
pure:
.PHONY: all clean distclean mostlyclean realclean extraclean depend distfiles
.PHONY: install install_bin install_data prefix_must_exist
.PHONY: uninstall uninstall_sub
.PHONY: pure
prefix_must_exist:
@test -d $(prefix) \
|| (echo ; \
echo The prefix directory \`$(prefix)\' doesn\'t exist; \
echo ; \
exit 1)
mostlyclean:
-rm -f $(MOSTLYCLEANFILES)
-rm -rf $(CLEANDIRADD)
-@if test `cd $(srcdir); pwd` = `pwd`; then \
:; \
else \
rm -f $(CLEANNOTSRCDIRADD); \
fi
clean: mostlyclean
-rm -f $(CLEANFILES)
distclean: clean
-rm -f $(DISTCLEANFILES)
-@if test `cd $(srcdir); pwd` = `pwd`; then \
:; \
else \
rm -f $(YTABC) $(YTABH); \
fi
realclean: distclean
-rm -f $(REALCLEANFILES)
extraclean: distclean
-rm -f \#* *~ =* core junk grot old temp tmp tem *.new *.old *.orig
.SUFFIXES:
.SUFFIXES: .o .obj .cpp .c .y .man .n
.cpp.o:
$(COMPILE.cpp) $(EXTRA_CCFLAGS) $<
.c.o:
$(COMPILE.c) $(EXTRA_CFLAGS) $<
.cpp.obj:
$(COMPILE.cpp) $(EXTRA_CCFLAGS) $<
.c.obj:
$(COMPILE.c) $(EXTRA_CFLAGS) $<
.y.cpp:
if test -n "$(YTABH)"; then \
$(YACC) $(YACCFLAGS) -d $<; \
else \
$(YACC) $(YACCFLAGS) $<; \
fi
-test -f y.tab.h && mv y.tab.h y_tab.h
-test -f y.tab.c && mv y.tab.c y_tab.c
mv y_tab.c $(YTABC)
test -z "$(YTABH)" || mv y_tab.h $(YTABH)
# The next rule is needed for make of Solaris 2.5.1 to override its
# built-in .y.o rule (which takes precedence over the .y.cpp rule above).
.y.o:
if test -n "$(YTABH)"; then \
$(YACC) $(YACCFLAGS) -d $<; \
else \
$(YACC) $(YACCFLAGS) $<; \
fi
-test -f y.tab.h && mv y.tab.h y_tab.h
-test -f y.tab.c && mv y.tab.c y_tab.c
mv y_tab.c $(YTABC)
test -z "$(YTABH)" || mv y_tab.h $(YTABH)
$(COMPILE.cpp) $(EXTRA_CCFLAGS) $(YTABC)
.man.n:
@echo Making $@ from $<
@-rm -f $@
@sed -e "s|@BINDIR@|$(bindir)|g" \
-e "s|@FONTDIR@|$(fontdir)|g" \
-e "s|@LOCALFONTDIR@|$(localfontdir)|g" \
-e "s|@LEGACYFONTDIR@|$(legacyfontdir)|g" \
-e "s|@MACRODIR@|$(tmacdir)|g" \
-e "s|@SYSTEMMACRODIR@|$(systemtmacdir)|g" \
-e "s|@LOCALMACRODIR@|$(localtmacdir)|g" \
-e "s|@DOCDIR@|$(docdir)|g" \
-e "s|@EXAMPLEDIR@|$(exampledir)|g" \
-e "s|@HTMLDOCDIR@|$(htmldocdir)|g" \
-e "s|@PDFDOCDIR@|$(pdfdocdir)|g" \
-e "s|@DEVICE@|$(DEVICE)|g" \
-e "s|@DEFAULT_INDEX@|$(indexdir)/$(indexname)|g" \
-e "s|@DEFAULT_INDEX_NAME@|$(indexname)|g" \
-e "s|@INDEX_SUFFIX@|$(indexext)|g" \
-e "s|@COMMON_WORDS_FILE@|$(common_words_file)|g" \
-e "s|@MAN1EXT@|$(man1ext)|g" \
-e "s|@MAN5EXT@|$(man5ext)|g" \
-e "s|@MAN7EXT@|$(man7ext)|g" \
-e "s|@TMAC_S_PREFIX@|$(tmac_s_prefix)|g" \
-e "s|@TMAC_M_PREFIX@|$(tmac_m_prefix)|g" \
-e "s|@TMAC_AN_PREFIX@|$(tmac_an_prefix)|g" \
-e "s|@TMAC_MDIR@|$(tmacdir)/mm|g" \
-e "s|@BROKEN_SPOOLER_FLAGS@|$(BROKEN_SPOOLER_FLAGS)|g" \
-e "s|@VERSION@|$(version)$(revision)|g" \
-e "s|@MDATE@|`$(SHELL) $(top_srcdir)/mdate.sh $<`|g" \
-e "s|@g@|$(g)|g" \
-e "s!@G@!`echo $(g) | tr [a-z] [A-Z]`!g" \
$< >$@
.PHONY: install_man
install_man:
-test -d $(manroot) || $(mkinstalldirs) $(manroot)
-test -d $(man1dir) || $(mkinstalldirs) $(man1dir)
@-pages="$(MAN1)"; \
for p in $$pages; do \
prog=`basename $$p .n`; \
target=$(man1dir)/$(NAMEPREFIX)$$prog.$(man1ext); \
rm -f $$target; \
echo $(INSTALL_DATA) $$p $$target; \
$(INSTALL_DATA) $$p $$target; \
done
-test -d $(man5dir) || $(mkinstalldirs) $(man5dir)
@-pages="$(MAN5)"; \
for p in $$pages; do \
target=$(man5dir)/`basename $$p .n`.$(man5ext); \
rm -f $$target; \
echo $(INSTALL_DATA) $$p $$target; \
$(INSTALL_DATA) $$p $$target; \
done
-test -d $(man7dir) || $(mkinstalldirs) $(man7dir)
@-pages="$(MAN7)"; \
for p in $$pages; do \
target=$(man7dir)/`basename $$p .n`.$(man7ext); \
rm -f $$target; \
echo $(INSTALL_DATA) $$p $$target; \
$(INSTALL_DATA) $$p $$target; \
done
.PHONY: uninstall_man
uninstall_man:
@-pages="$(MAN1)"; \
for p in $$pages; do \
target=$(man1dir)/$(NAMEPREFIX)`basename $$p .n`.$(man1ext); \
echo rm -f $$target; \
rm -f $$target; \
done
@-pages="$(MAN5)"; \
for p in $$pages; do \
target=$(man5dir)/`basename $$p .n`.$(man5ext); \
echo rm -f $$target; \
rm -f $$target; \
done
@-pages="$(MAN7)"; \
for p in $$pages; do \
target=$(man7dir)/`basename $$p .n`.$(man7ext); \
echo rm -f $$target; \
rm -f $$target; \
done
.PHONY: install_prog
install_prog:
-test -d $(bindir) || $(mkinstalldirs) $(bindir)
rm -f $(bindir)/$(NAMEPREFIX)$(PROG)
$(INSTALL_PROGRAM) $(PROG) $(bindir)/$(NAMEPREFIX)$(PROG)
.PHONY: uninstall_prog
uninstall_prog:
-rm -f $(bindir)/$(NAMEPREFIX)$(PROG)
.PHONY: install_dev
install_dev:
-test -d $(datadir) || $(mkinstalldirs) $(datadir)
-test -d $(dataprogramdir) || $(mkinstalldirs) $(dataprogramdir)
-test -d $(datasubdir) || $(mkinstalldirs) $(datasubdir)
-test -d $(fontdir) || $(mkinstalldirs) $(fontdir)
-test -d $(fontsubdir) || $(mkinstalldirs) $(fontsubdir)
-if test -d $(srcdir)/generate; then \
test -d $(fontsubdir)/generate \
|| $(mkinstalldirs) $(fontsubdir)/generate; \
fi
-test -z "$(DEVFILES)" \
|| for f in ""$(DEVFILES); do \
rm -f $(fontsubdir)/$$f; \
if test -f $$f; then \
$(INSTALL_DATA) $$f $(fontsubdir)/$$f; \
else \
$(INSTALL_DATA) $(srcdir)/$$f $(fontsubdir)/$$f; \
fi; \
done
-test -z "$(DEVSCRIPTS)" \
|| for f in ""$(DEVSCRIPTS); do \
rm -f $(fontsubdir)/$$f; \
if test -f $$f; then \
$(INSTALL_SCRIPT) $$f $(fontsubdir)/$$f; \
else \
$(INSTALL_SCRIPT) $(srcdir)/$$f $(fontsubdir)/$$f; \
fi; \
done
.PHONY: uninstall_dev
uninstall_dev:
-test -z "$(DEVFILES)$(DEVSCRIPTS)" \
|| for f in ""$(DEVFILES) $(DEVSCRIPTS); do \
rm -f $(fontsubdir)/$$f; \
done
-test -d $(fontsubdir)/generate && rmdir $(fontsubdir)/generate
-rmdir $(fontsubdir)
.PHONY: depend_src
depend_src: depend.temp
mv depend.temp Makefile.dep
depend.temp: FORCE
> depend.temp;
if test -f "$(srcdir)/$(YTABC)"; then \
ytabc="$(srcdir)/$(YTABC)"; \
else \
ytabc="$(YTABC)"; \
fi; \
test -z "$(CCSRCS)$(YTABC)" \
|| $(CCC) $(ALL_CCFLAGS) -MM $(CCSRCS) $$ytabc >>depend.temp
test -z "$(CSRCS)" \
|| $(CC) $(ALL_CFLAGS) -MM $(CSRCS) >>depend.temp
test -z "$(YTABH)" \
|| (sed -e 's|$(YTABH)|$(YTABC)|g' depend.temp >depend1.temp; \
mv depend1.temp depend.temp)
.PHONY: TAGS_src
TAGS_src:
$(ETAGS) $(ETAGSFLAGS) $(CCSRCS) $(CSRCS)
test -z "$(GRAM)$(HDRS)" \
|| $(ETAGS) $(ETAGSFLAGS) -a $(ETAGSCCFLAG) $(GRAM) $(HDRS)
# This rule is only considered for the subdir_Makefile target.
Makefile:
-rm -f Makefile
echo srcdir=$(srcdir) >>Makefile
echo VPATH=$(VPATH) >>Makefile
cat $(MAKEFILEPARTS) /dev/null >>Makefile
FORCE:
.NOEXPORT:

View file

@ -1,27 +0,0 @@
# Makefile.cpg
MAKEFILEPARTS=\
$(top_srcdir)/Makefile.comm \
$(top_builddir)/Makefile.cfg \
$(srcdir)/Makefile.sub \
$(top_srcdir)/Makefile.cpg \
Makefile.dep
all: $(PROG) $(MANPAGES)
$(PROG): $(OBJS) $(XLIBS)
$(LINK.c) -o $@ $(OBJS) $(XLIBS) $(EXTRA_LDFLAGS) $(LIBS) $(MLIB)
install_bin: install_prog
install_prog: $(PROG)
install_data: install_man
install_man: $(MANPAGES)
uninstall_sub: uninstall_prog uninstall_man
depend: depend_src
depend.temp: $(GENSRCS) $(YTABC)
distfiles: $(YTABC)
TAGS: TAGS_src
TAGS_src: $(CCSRCS) $(CSRCS) $(GRAM) $(HDRS)
Makefile: $(MAKEFILEPARTS)
Makefile.dep:
touch Makefile.dep
$(top_builddir)/stamp-h $(MANPAGES): $(top_srcdir)/VERSION $(top_srcdir)/REVISION

View file

@ -1,4 +0,0 @@
all: $(DEVFILES) $(DEVSCRIPTS)
install_data: install_dev
uninstall_sub: uninstall_dev
install_dev: $(DEVFILES) $(DEVSCRIPTS)

View file

@ -1,776 +0,0 @@
# Copyright (C) 1989-2000, 2001, 2002, 2003, 2004, 2005
# Free Software Foundation, Inc.
# Written by James Clark (jjc@jclark.com)
#
# This file is part of groff.
#
# groff 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.
#
# groff 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 groff; see the file COPYING. If not, write to the Free Software
# Foundation, 51 Franklin St - Fifth Floor, Boston, MA 02110-1301, USA.
SHELL=@SHELL@
srcdir=@srcdir@
top_srcdir=@abs_top_srcdir@
VPATH=@srcdir@
top_builddir=@abs_top_builddir@
# `RT_SEP' is the operating system's native PATH SEPARATOR CHAR, which
# is to be used in runtime PATHs compiled into groff executables.
RT_SEP=@GROFF_PATH_SEPARATOR@
# `SH_SEP' is a alternative PATH SEPARATOR CHAR, to be used in shell
# scripts and makefile rules; it may be the same as `RT_SEP', but,
# particularly in some Microsoft environments, it may differ.
SH_SEP=@PATH_SEPARATOR@
version=`cat $(top_srcdir)/VERSION`
# No additional number if revision is zero.
revision=`sed -e 's/^0$$//' -e 's/^[1-9].*$$/.&/' $(top_srcdir)/REVISION`
# Define `page' to be letter if your PostScript printer uses 8.5x11
# paper (USA) and define it to be A4, if it uses A4 paper (rest of the
# world).
PAGE=@PAGE@
# The name of the ghostscript program. Normally, gs, on GNU/Linux
# but it might be different on MS-DOS/MS-WIN32 systems.
GHOSTSCRIPT=@GHOSTSCRIPT@
# `ALT_GHOSTSCRIPT_PROGS' specifies a list alternative names,
# which can be tried if `GHOSTSCRIPT' cannot be found at run time.
ALT_GHOSTSCRIPT_PROGS=@ALT_GHOSTSCRIPT_PROGS@
# Similarly, `ALT_AWK_PROGS' specifies a list of alternative names,
# which can be tried at run time, to identify the awk program.
ALT_AWK_PROGS=@ALT_AWK_PROGS@
# Normally the Postscript driver, grops, produces output that conforms
# to version 3.0 of the Adobe Document Structuring Conventions.
# Unfortunately some spoolers and previewers can't handle such output.
# The BROKEN_SPOOLER_FLAGS variable tells grops what it should do to
# make its output acceptable to such programs. This variable controls
# only the default behaviour of grops; the behaviour can be changed at
# runtime by the grops -b option (and so by groff -P-b).
# Use a value of 0 if your spoolers and previewers are able to handle
# conforming PostScript correctly.
# Add 1 if no %%{Begin,End}DocumentSetup comments should be generated;
# this is needed for early versions of TranScript that get confused by
# anything between the %%EndProlog line and the first %%Page: comment.
# Add 2 if lines in included files beginning with %! should be
# stripped out; this is needed for the OpenWindows 2.0 pageview previewer.
# Add 4 if %%Page, %%Trailer and %%EndProlog comments should be
# stripped out of included files; this is needed for spoolers that
# don't understand the %%{Begin,End}Document comments. I suspect this
# includes early versions of TranScript.
# Add 8 if the first line of the PostScript output should be %!PS-Adobe-2.0
# rather than %!PS-Adobe-3.0; this is needed when using Sun's Newsprint
# with a printer that requires page reversal.
BROKEN_SPOOLER_FLAGS=@BROKEN_SPOOLER_FLAGS@
# `DEVICE' is the default device.
DEVICE=ps
# `XDEVDIRS' is either `font/devX{75,100}{,-12}' or empty.
XDEVDIRS=@XDEVDIRS@
# `XPROGDIRS' is either `src/devices/xditview src/utils/xtotroff' or empty.
XPROGDIRS=@XPROGDIRS@
# `XLIBDIRS' is either `src/libs/libxutil' or empty.
XLIBDIRS=@XLIBDIRS@
# `TTYDEVDIRS' is either `font/devascii font/devlatin1' (for
# ASCII) or `font/devcp1047' (for EBCDIC) plus font/devutf8.
TTYDEVDIRS=@TTYDEVDIRS@ font/devutf8
# `OTHERDEVDIRS' is either `font/devlj4 font/devlbp' (for ASCII) or
# empty (for EBCDIC).
OTHERDEVDIRS=@OTHERDEVDIRS@
# `PSPRINT' is the command to use for printing a PostScript file,
# for example `lpr'.
PSPRINT=@PSPRINT@
# `DVIPRINT' is the command to use for printing a TeX dvi file,
# for example `lpr -d'.
DVIPRINT=@DVIPRINT@
# Prefix for names of programs that have Unix counterparts.
# For example, if `g' is `g' then troff will be installed as
# gtroff. This doesn't affect programs like grops or groff that have
# no Unix counterparts. Note that the groff versions of eqn and tbl
# will not work with Unix troff.
g=@g@
# Common prefix for installation directories.
# Used in definitions of exec_prefix, datasubdir, fontpath, manroot.
# This must already exist when you do make install.
prefix=@prefix@
exec_prefix=@exec_prefix@
# `bindir' says where to install executables.
bindir=@bindir@
# `libdir' says where to install platform-dependent data.
libdir=@libdir@
libprogramdir=$(libdir)/groff
# `datasubdir' says where to install platform-independent data files.
datadir=@datadir@
dataprogramdir=$(datadir)/groff
datasubdir=$(dataprogramdir)/$(version)$(revision)
# `infodir' says where to install info files.
infodir=@infodir@
# `docdir' says where to install documentation files.
docdir=$(datadir)/doc/groff/$(version)$(revision)
# `exampledir' says where to install example files.
exampledir=$(docdir)/examples
# `htmldocdir' says where to install documentation in HTML format.
htmldocdir=$(docdir)/html
# `pdfdocdir' says where to install documentation in PDF format.
pdfdocdir=$(docdir)/pdf
# `fontdir' says where to install dev*/*.
fontdir=$(datasubdir)/font
# `localfontdir' says where local fonts will be installed (as dev*/*).
localfontdir=$(dataprogramdir)/site-font
# `legacyfontdir' is for compatibility with non-GNU troff.
legacyfontdir=/usr/lib/font
# `fontpath' says where to look for dev*/*.
fontpath=$(localfontdir)$(RT_SEP)$(fontdir)$(RT_SEP)$(legacyfontdir)
# `tmacdir' says where to install macros.
tmacdir=$(datasubdir)/tmac
# `systemtmacdir' says where to install platform-dependent macros.
systemtmacdir=$(libprogramdir)/site-tmac
# `localtmacdir' says where local files will be installed.
localtmacdir=$(dataprogramdir)/site-tmac
# `appresdir' says where to install the application resource file for
# gxditview.
appresdir=@appresdir@
# `tmacpath' says where to look for macro files.
# The current directory will be prepended in unsafe mode only; the home
# directory will be always added.
# `troffrc' and `troffrc-end' (and `eqnrc') are searched neither in the
# current nor in the home directory.
tmacpath=$(systemtmacdir)$(RT_SEP)$(localtmacdir)$(RT_SEP)$(tmacdir)
# `sys_tmac_prefix' is prefix (if any) for system macro packages.
sys_tmac_prefix=@sys_tmac_prefix@
# `pnmtops_nosetpage' is the command to be run to generate an eps
# file. Some versions of pnmtops provide the -nosetpage option.
# We detect this and use it if present.
pnmtops_nosetpage=@pnmtops_nosetpage@
# `tmac_wrap' is list of system macro packages that should be made
# available to groff by creating a corresponding macro package
# in the groff macro directory that references the system macro
# package.
tmac_wrap=@tmac_wrap@
# If there is a groff version of a macro package listed in $(tmac_wrap),
# then the groff version will be installed with a prefix of this.
# Don't make this empty.
tmac_prefix=g
# The groff -mm macros will be available as -m$(tmac_m_prefix)m.
tmac_m_prefix=\
`for i in $(tmac_wrap) ""; do case "$$i" in m) echo $(tmac_prefix);; esac; done`
# The groff -ms macros will be available as -m$(tmac_s_prefix)s.
tmac_s_prefix=\
`for i in $(tmac_wrap) ""; do case "$$i" in s) echo $(tmac_prefix);; esac; done`
# The groff -man macros will be available as -m$(tmac_an_prefix)an.
tmac_an_prefix=\
`for i in $(tmac_wrap) ""; do case "$$i" in an) echo $(tmac_prefix);; esac; done`
# Extension to be used for refer index files. Index files are not
# sharable between different architectures, so you might want to use
# different suffixes for different architectures. Choose an extension
# that doesn't conflict with refer or any other indexing program.
indexext=.i
# Directory containing the default index for refer.
indexdir=/usr/dict/papers
# The filename (without suffix) of the default index for refer.
indexname=Ind
# common_words_file is a file containing a list of common words.
# If your system provides /usr/lib/eign it will be copied onto this,
# otherwise the supplied eign file will be used.
common_words_file=$(datasubdir)/eign
# `manroot' is the root of the man page directory tree.
mandir=@mandir@
manroot=$(mandir)
# `man1ext' is the man section for user commands.
man1ext=1
man1dir=$(manroot)/man$(man1ext)
# `man5ext' is the man section for file formats.
man5ext=5
man5dir=$(manroot)/man$(man5ext)
# `man7ext' is the man section for macros.
man7ext=7
man7dir=$(manroot)/man$(man7ext)
# The configure script checks whether all necessary utility programs for
# grohtml are available -- only then we can build the HTML documentation.
make_html=@make_html@
make_install_html=@make_install_html@
# The configure script also checks whether all necessary utility programs
# for pdfroff are available -- only then we can build PDF documentation.
make_pdfdoc=@make_pdfdoc@
make_install_pdfdoc=@make_install_pdfdoc@
# DEFINES should include the following:
# -DHAVE_MMAP if you have mmap() and <sys/mman.h>
# -DARRAY_DELETE_NEEDS_SIZE if your C++ doesn't understand `delete []'
# -DSYS_SIGLIST_DECLARED if you have sys_siglist[]
# -DWCOREFLAG=0200 if the 0200 bit of the status returned by
# wait() indicates whether a core image was
# produced for a process that was terminated
# by a signal
#
# -DHAVE_DIRENT_H if you have <dirent.h>
# -DHAVE_LIMITS_H if you have <limits.h>
# -DHAVE_CC_LIMITS_H if you have a C++ <limits.h>
# -DHAVE_MATH_H if you have <math.h>
# -DHAVE_CC_OSFCN_H if you have a C++ <osfcn.h>
# -DHAVE_CC_INTTYPES_H if you have a C++ <inttypes.h>
# -DHAVE_STDLIB_H if you have <stdlib.h>
# -DHAVE_STRING_H if you have <string.h>
# -DHAVE_STRINGS_H if you have <strings.h>
# -DHAVE_SYS_DIR_H if you have <sys/dir.h>
# -DHAVE_SYS_TIME_H if you have <sys/time.h>
# -DHAVE_UNISTD_H if you have <unistd.h>
#
# -DHAVE_FMOD if you have fmod()
# -DHAVE_GETCWD if you have getcwd()
# -DHAVE_GETTIMEOFDAY if you have gettimeofday()
# -DHAVE_ISATTY if you have isatty()
# -DHAVE_KILL if you have kill()
# -DHAVE_MKSTEMP if you have mkstemp()
# -DHAVE_MMAP if you have mmap()
# -DHAVE_PUTENV if you have putenv()
# -DHAVE_RENAME if you have rename()
# -DHAVE_SETLOCALE if you have setlocale()
# -DHAVE_SNPRINTF if you have snprintf()
# -DHAVE_STRCASECMP if you have strcasecmp()
# -DHAVE_STRNCASECMP if you have strncasecmp()
# -DHAVE_STRERROR if you have strerror()
# -DHAVE_STRSEP if you have strsep()
# -DHAVE_STRTOL if you have strtol()
# -DHAVE_VSNPRINTF if you have vsnprintf()
#
# -DNEED_DECLARATION_GETTIMEOFTODAY
# if your C++ <sys/time.h> doesn't declare
# gettimeofday()
# -DNEED_DECLARATION_HYPOT if your C++ <math.h> doesn't declare hypot()
# -DNEED_DECLARATION_PCLOSE if your C++ <stdio.h> doesn't declare pclose()
# -DNEED_DECLARATION_POPEN if your C++ <stdio.h> doesn't declare popen()
# -DNEED_DECLARATION_PUTENV if your C++ <stdlib.h> doesn't declare
# putenv()
# -DNEED_DECLARATION_RAND if your C++ <stdlib.h> doesn't declare rand()
# -DNEED_DECLARATION_SNPRINTF if your C++ <stdio.h> doesn't declare
# snprintf()
# -DNEED_DECLARATION_SRAND if your C++ <stdlib.h> doesn't declare srand()
# -DNEED_DECLARATION_STRCASECMP if your C++ <string.h> doesn't declare
# strcasecmp()
# -DNEED_DECLARATION_STRNCASECMP
# if your C++ <string.h> doesn't declare
# strncasecmp()
# -DNEED_DECLARATION_VFPRINTF if your C++ <stdio.h> doesn't declare
# vfprintf()
# -DNEED_DECLARATION_VSNPRINTF if your C++ <stdio.h> doesn't declare
# vsnprintf()
#
# -DRET_TYPE_SRAND_IS_VOID if srand() returns void not int
# -DHAVE_SYS_NERR if you have sysnerr in <errno.h> or <stdio.h>
# -DHAVE_SYS_ERRLIST if you have sys_errlist in <errno.h> or
# <stdio.h>
# -DTRADITIONAL_CPP if your C++ compiler uses a traditional
# (Reiser) preprocessor
# -DLONG_FOR_TIME_T if localtime() takes a long * not a time_t *
# -DHAVE_STRUCT_EXCEPTION if <math.h> defines struct exception
# -DRETSIGTYPE=int if signal handlers return int not void
# -DIS_EBCDIC_HOST if the host's encoding is EBCDIC
# -DPAGE=A4 if the the printer's page size is A4
# -DGHOSTSCRIPT=gs the name (and directory if required) of the
# ghostscript program
DEFINES=@DEFS@
# Include
#
# {fmod,getcwd,mkstemp,putenv,snprintf,strcasecmp,
# strerror,strncasecmp,strtol}.$(OBJEXT)
#
# in LIBOBJS if your C library is missing the corresponding function.
# vsnprintf is defined in the snprintf.$(OBJEXT) module.
LIBOBJS=@LIBOBJS@
# `CCC' is the compiler for C++ (.cpp) files.
CCC=@CXX@
CC=@CC@
# CCDEFINES are definitions for C++ compilations.
CCDEFINES=$(DEFINES)
# CDEFINES are definitions for C compilations.
CDEFINES=$(DEFINES)
CCFLAGS=@CXXFLAGS@
CFLAGS=@CFLAGS@
CPPFLAGS=@CPPFLAGS@
LDFLAGS=@LDFLAGS@
X_CFLAGS=@X_CFLAGS@
X_LIBS=@X_LIBS@
X_EXTRA_LIBS=@X_EXTRA_LIBS@
X_PRE_LIBS=@X_PRE_LIBS@
YACC=@YACC@
YACCFLAGS=-v
EXEEXT=@EXEEXT@
OBJEXT=@OBJEXT@
# a simple heuristic assumption
LIBEXT=`case $(OBJEXT) in obj) echo lib;; *) echo a;; esac`
LIBS=@LIBS@
LIBM=@LIBM@
RANLIB=@RANLIB@
INSTALL=@INSTALL@
INSTALL_PROGRAM=@INSTALL_PROGRAM@
INSTALL_SCRIPT=@INSTALL_SCRIPT@
INSTALL_DATA=@INSTALL_DATA@
INSTALL_INFO=@INSTALL_INFO@
LN_S=@LN_S@
AR=ar
ETAGS=etags
ETAGSFLAGS=
# Flag that tells etags to assume C++.
ETAGSCCFLAG=-C
# Full path to perl.
PERLPATH=@PERLPATH@
# Sed command with which to edit sh scripts.
SH_SCRIPT_SED_CMD=@SH_SCRIPT_SED_CMD@
# Sed script to deal with OS dependencies in sh scripts.
SH_DEPS_SED_SCRIPT=$(top_builddir)/arch/misc/shdeps.sed
# The program to create directory hierarchies.
mkinstalldirs= $(SHELL) $(top_srcdir)/mkinstalldirs
PURIFY=purify
PURIFYCCFLAGS=
#PURIFYCCFLAGS=-g++=yes \
# -collector=`dirname \`$(CCC) -print-libgcc-file-name\``/ld
# Passing down MAKEOVERRIDES prevents $(MAKE) from containing a second
# copy of $(MDEFINES) when making individual directories; this could
# cause the argument list to become too long on some systems.
MDEFINES= \
"ALT_AWK_PROGS=$(ALT_AWK_PROGS)" \
"ALT_GHOSTSCRIPT_PROGS=$(ALT_GHOSTSCRIPT_PROGS)" \
"AR=$(AR)" \
"BROKEN_SPOOLER_FLAGS=$(BROKEN_SPOOLER_FLAGS)" \
"CC=$(CC)" \
"CCC=$(CCC)" \
"CCDEFINES=$(CCDEFINES)" \
"CCFLAGS=$(CCFLAGS)" \
"CDEFINES=$(CDEFINES)" \
"CFLAGS=$(CFLAGS)" \
"CPPFLAGS=$(CPPFLAGS)" \
"DEVICE=$(DEVICE)" \
"DVIPRINT=$(DVIPRINT)" \
"ETAGS=$(ETAGS)" \
"ETAGSCCFLAG=$(ETAGSCCFLAG)" \
"ETAGSFLAGS=$(ETAGSFLAGS)" \
"EXEEXT=$(EXEEXT)" \
"INSTALL_DATA=$(INSTALL_DATA)" \
"INSTALL_INFO=$(INSTALL_INFO)" \
"INSTALL_PROGRAM=$(INSTALL_PROGRAM)" \
"INSTALL_SCRIPT=$(INSTALL_SCRIPT)" \
"LDFLAGS=$(LDFLAGS)" \
"LIBEXT=$(LIBEXT)" \
"LIBM=$(LIBM)" \
"LIBOBJS=$(LIBOBJS)" \
"LIBS=$(LIBS)" \
"MAKEOVERRIDES=$(MAKEOVERRIDES)" \
"OBJEXT=$(OBJEXT)" \
"OTHERDEVDIRS=$(OTHERDEVDIRS)" \
"PAGE=$(PAGE)" \
"GHOSTSCRIPT=$(GHOSTSCRIPT)" \
"PERLPATH=$(PERLPATH)" \
"PSPRINT=$(PSPRINT)" \
"PURIFY=$(PURIFY)" \
"PURIFYCCFLAGS=$(PURIFYCCFLAGS)" \
"RANLIB=$(RANLIB)" \
"RT_SEP=$(RT_SEP)" \
"SH_SEP=$(SH_SEP)" \
"SHELL=$(SHELL)" \
"SH_SCRIPT_SED_CMD=$(SH_SCRIPT_SED_CMD)" \
"SH_DEPS_SED_SCRIPT=$(SH_DEPS_SED_SCRIPT)" \
"TTYDEVDIRS=$(TTYDEVDIRS)" \
"XDEVDIRS=$(XDEVDIRS)" \
"XLIBDIRS=$(XLIBDIRS)" \
"XPROGDIRS=$(XPROGDIRS)" \
"X_CFLAGS=$(X_CFLAGS)" \
"X_LIBS=$(X_LIBS)" \
"X_EXTRA_LIBS=$(X_EXTRA_LIBS)" \
"X_PRE_LIBS=$(X_PRE_LIBS)" \
"YACC=$(YACC)" \
"YACCFLAGS=$(YACCFLAGS)" \
"appresdir=$(appresdir)" \
"bindir=$(bindir)" \
"common_words_file=$(common_words_file)" \
"datadir=$(datadir)" \
"dataprogramdir=$(dataprogramdir)" \
"datasubdir=$(datasubdir)" \
"docdir=$(docdir)" \
"exampledir=$(exampledir)" \
"exec_prefix=$(exec_prefix)" \
"fontdir=$(fontdir)" \
"fontpath=$(fontpath)" \
"g=$(g)" \
"htmldocdir=$(htmldocdir)" \
"pdfdocdir=$(pdfdocdir)" \
"indexdir=$(indexdir)" \
"indexext=$(indexext)" \
"indexname=$(indexname)" \
"infodir=$(infodir)" \
"legacyfontdir=$(legacyfontdir)" \
"libdir=$(libdir)" \
"libprogramdir=$(libprogramdir)" \
"localfontdir=$(localfontdir)" \
"localtmacdir=$(localtmacdir)" \
"make_html=$(make_html)" \
"make_install_html=$(make_install_html)" \
"make_pdfdoc=$(make_pdfdoc)" \
"make_install_pdfdoc=$(make_install_pdfdoc)" \
"man1dir=$(man1dir)" \
"man1ext=$(man1ext)" \
"man5dir=$(man5dir)" \
"man5ext=$(man5ext)" \
"man7dir=$(man7dir)" \
"man7ext=$(man7ext)" \
"manroot=$(manroot)" \
"mkinstalldirs=$(mkinstalldirs)" \
"prefix=$(prefix)" \
"revision=$(revision)" \
"sys_tmac_prefix=$(sys_tmac_prefix)" \
"pnmtops_nosetpage=$(pnmtops_nosetpage)" \
"systemtmacdir=$(systemtmacdir)" \
"tmac_an_prefix=$(tmac_an_prefix)" \
"tmac_m_prefix=$(tmac_m_prefix)" \
"tmac_s_prefix=$(tmac_s_prefix)" \
"tmac_wrap=$(tmac_wrap)" \
"tmacdir=$(tmacdir)" \
"tmacpath=$(tmacpath)" \
"top_builddir=$(top_builddir)" \
"top_srcdir=$(top_srcdir)" \
"version=$(version)"
INCDIRS=src/include
LIBDIRS=\
src/libs/libgroff \
src/libs/libdriver \
src/libs/libbib \
$(XLIBDIRS)
CCPROGDIRS=\
src/roff/groff \
src/roff/troff \
src/preproc/tbl \
src/preproc/pic \
src/preproc/eqn \
src/preproc/grn \
src/preproc/refer \
src/preproc/soelim \
src/preproc/html \
src/devices/grops \
src/devices/grotty \
src/devices/grodvi \
src/devices/grolj4 \
src/devices/grohtml \
src/devices/grolbp \
src/utils/tfmtodit \
src/utils/hpftodit \
src/utils/lookbib \
src/utils/indxbib \
src/utils/lkbib \
src/utils/addftinfo
CPROGDIRS=\
src/utils/pfbtops \
$(XPROGDIRS)
PROGDEPDIRS=arch/misc
PROGDIRS=$(PROGDEPDIRS) $(CCPROGDIRS) $(CPROGDIRS)
DEVDIRS=\
font/devps \
font/devdvi \
font/devhtml
ALLTTYDEVDIRS=\
font/devascii \
font/devlatin1 \
font/devutf8 \
font/devcp1047
# `doc' must be processed before `contrib/pdfmark'.
OTHERDIRS=\
man \
tmac \
src/utils/afmtodit \
src/roff/grog \
src/roff/nroff \
doc \
contrib/mm \
contrib/pic2graph \
contrib/eqn2graph \
contrib/grap2graph \
contrib/groffer \
contrib/mom \
contrib/pdfmark \
contrib/gdiffmk
ALLDIRS=$(INCDIRS) $(LIBDIRS) $(PROGDIRS) \
$(DEVDIRS) $(XDEVDIRS) $(OTHERDEVDIRS) $(TTYDEVDIRS) $(OTHERDIRS)
EXTRADIRS=\
font/devps/generate \
font/devdvi/generate \
font/devlj4/generate \
doc
NOMAKEDIRS=\
arch/djgpp \
contrib/mm/examples \
contrib/mm/mm \
contrib/mom/examples \
contrib/mom/momdoc \
contrib/gdiffmk/tests \
src/libs/snprintf
DISTDIRS=\
$(INCDIRS) $(LIBDIRS) $(PROGDIRS) $(DEVDIRS) $(XDEVDIRS) $(OTHERDEVDIRS) \
$(ALLTTYDEVDIRS) $(OTHERDIRS) $(EXTRADIRS) $(NOMAKEDIRS)
TARGETS=all install install_bin install_data clean distclean mostlyclean \
realclean extraclean distfiles TAGS depend uninstall_sub
# This ENVSETUP gork is required by the DJGPP build on Windows 9X,
# where Make needs to be case-sensitive to find files like BI and VERSION.
ENVSETUP=\
if test -f $(srcdir)/makefile.ccpg* && \
test -f $(srcdir)/Makefile.ccpg*; then \
FNCASE=y; export FNCASE; \
else :; \
fi
do=all
dodirs=$(ALLDIRS) dot
# Default target for subdir_Makefile
subdir=src/roff/troff
$(TARGETS):
@$(ENVSETUP); $(MAKE) $(MDEFINES) do=$@ $(dodirs)
dot: FORCE
@$(ENVSETUP); \
$(MAKE) $(MDEFINES) srcdir=$(srcdir) VPATH=$(srcdir) \
-f $(top_srcdir)/Makefile.comm \
-f $(top_srcdir)/Makefile.sub $(do)
$(LIBDIRS): FORCE
@$(ENVSETUP); \
if test $(srcdir) = .; then \
srcdir=.; \
else \
srcdir=`cd $(srcdir); pwd`/$@; \
fi; \
test -d $@ || $(mkinstalldirs) $@; \
cd $@; \
test -f Makefile.dep || touch Makefile.dep; \
$(MAKE) $(MDEFINES) srcdir=$$srcdir VPATH=$$srcdir \
-f $(top_srcdir)/Makefile.comm \
-f $$srcdir/Makefile.sub \
-f $(top_srcdir)/Makefile.lib \
-f Makefile.dep $(do)
$(CPROGDIRS): FORCE
@$(ENVSETUP); \
if test $(srcdir) = .; then \
srcdir=.; \
else \
srcdir=`cd $(srcdir); pwd`/$@; \
fi; \
test -d $@ || $(mkinstalldirs) $@; \
cd $@; \
test -f Makefile.dep || touch Makefile.dep; \
$(MAKE) $(MDEFINES) srcdir=$$srcdir VPATH=$$srcdir \
-f $(top_srcdir)/Makefile.comm \
-f $$srcdir/Makefile.sub \
-f $(top_srcdir)/Makefile.cpg \
-f Makefile.dep $(do)
$(CCPROGDIRS): FORCE
@$(ENVSETUP); \
if test $(srcdir) = .; then \
srcdir=.; \
else \
srcdir=`cd $(srcdir); pwd`/$@; \
fi; \
test -d $@ || $(mkinstalldirs) $@; \
cd $@; \
test -f Makefile.dep || touch Makefile.dep; \
$(MAKE) $(MDEFINES) srcdir=$$srcdir VPATH=$$srcdir \
-f $(top_srcdir)/Makefile.comm \
-f $$srcdir/Makefile.sub \
-f $(top_srcdir)/Makefile.ccpg \
-f Makefile.dep $(do)
$(DEVDIRS) $(XDEVDIRS) $(OTHERDEVDIRS) $(TTYDEVDIRS): FORCE
@$(ENVSETUP); \
if test $(srcdir) = .; then \
srcdir=.; \
else \
srcdir=`cd $(srcdir); pwd`/$@; \
fi; \
test -d $@ || $(mkinstalldirs) $@; \
cd $@; \
$(MAKE) $(MDEFINES) srcdir=$$srcdir VPATH=$$srcdir \
-f $(top_srcdir)/Makefile.comm \
-f $$srcdir/Makefile.sub \
-f $(top_srcdir)/Makefile.dev $(do)
$(INCDIRS) $(PROGDEPDIRS) $(OTHERDIRS): FORCE
@$(ENVSETUP); \
if test $(srcdir) = .; then \
srcdir=.; \
else \
srcdir=`cd $(srcdir); pwd`/$@; \
fi; \
test -d $@ || $(mkinstalldirs) $@; \
cd $@; \
$(MAKE) $(MDEFINES) srcdir=$$srcdir VPATH=$$srcdir \
-f $(top_srcdir)/Makefile.comm \
-f $$srcdir/Makefile.sub \
-f $(top_srcdir)/Makefile.man $(do)
.PHONY: dist
dist:
-rm -fr tmp
rm -f groff-$(version)$(revision).tar.gz
mkdir tmp
for d in $(DISTDIRS); do \
$(mkinstalldirs) tmp/$$d; \
done
srcdir=`cd $(srcdir); pwd`; \
cd tmp; \
$(LN_S) ../Makefile .; \
$(LN_S) $$srcdir/* . 2>/dev/null || true; \
rm -rf CVS; \
for d in $(DISTDIRS); do \
(cd $$d; \
$(LN_S) $$srcdir/$$d/* . 2>/dev/null; \
rm -rf CVS || true); \
done; \
$(MAKE) srcdir=. VPATH=. distfiles; \
$(MAKE) srcdir=. VPATH=. extraclean; \
for d in $(EXTRADIRS); do \
(cd $$d; \
if test -f Makefile; then \
$(MAKE) extraclean; \
else \
$(MAKE) -f $(top_builddir)/$$d/Makefile extraclean; \
fi); \
done; \
rm -f Makefile; \
$(LN_S) $$srcdir/Makefile.init Makefile
mv tmp groff-$(version)$(revision)
tar cfh - groff-$(version)$(revision) | \
gzip -c >groff-$(version)$(revision).tar.gz
rm -fr groff-$(version)$(revision)
# $(PROGDIRS): libgroff
# grops grotty grodvi: libdriver
# refer lookbib indxbib lkbib: libbib
# $(LIBDIRS) $(PROGDIRS): include
.PHONY: $(ALLDIRS) dot $(TARGETS) FORCE
# Create a Makefile in $(subdir). This is useful for development since it
# avoids running make recursively.
subdir_Makefile: Makefile.cfg
$(MAKE) do=Makefile $(subdir)
Makefile.cfg: Makefile
>Makefile.cfg
for var in $(MDEFINES); do \
echo "$$var" >>Makefile.cfg; \
done
Makefile: Makefile.in
$(SHELL) config.status
.PHONY: uninstall
uninstall: uninstall_sub uninstall_dirs
.PHONY: uninstall_dirs
uninstall_dirs:
# Use `rmdir' here so that the directories are only removed if they are empty.
-rmdir $(man1dir) $(man5dir) $(man7dir) $(manroot) \
$(tmacdir) $(systemtmacdir) $(localtmacdir) \
$(fontdir) $(localfontdir) $(bindir) \
$(datasubdir) $(dataprogramdir) $(infodir) \
$(exampledir) $(htmldocdir) $(pdfdocdir) $(docdir) \
$(libprogramdir) $(libdir) \
$(datadir)/doc/groff $(datadir)/doc $(datadir) 2>/dev/null || :
.PHONY: check docheck
check: site.exp docheck
docheck:
if $(SHELL) -c "runtest --version" > /dev/null 2>&1; then \
runtest; \
else \
echo "WARNING: could not find \`runtest'" 1>&2; \
fi
# This snippet has been taken from the automake package.
site.exp:
@echo "Making a new site.exp file..."
@echo "## these variables are automatically generated by make ##" >site.tmp
@echo "# Do not edit here. If you wish to override these values" >>site.tmp
@echo "# edit the last section" >>site.tmp
@echo "set tool groff" >>site.tmp
@echo "set srcdir $(srcdir)/testsuite" >>site.tmp
@echo "set objdir `pwd`" >> site.tmp
@echo "## All variables above are generated by configure. Do not edit! ##" >> site.tmp
@test ! -f site.exp \
|| sed '1,/^## All variables above are.*##/ d' site.exp >> site.tmp
@-rm -f site.bak
@test ! -f site.exp || mv site.exp site.bak
@mv site.tmp site.exp
FORCE:
.NOEXPORT:

View file

@ -1,25 +0,0 @@
# Copyright (C) 1989-2000 Free Software Foundation, Inc.
# Written by James Clark (jjc@jclark.com)
#
# This file is part of groff.
#
# groff 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.
#
# groff 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 groff; see the file COPYING. If not, write to the Free Software
# Foundation, 51 Franklin St - Fifth Floor, Boston, MA 02110-1301, USA.
SHELL=/bin/sh
.PHONY: all
all:
$(SHELL) configure
$(MAKE) all

View file

@ -1,20 +0,0 @@
LIBCLEAN=lib$(LIB).$(LIBEXT)
MAKEFILEPARTS=\
$(top_srcdir)/Makefile.comm \
$(top_builddir)/Makefile.cfg \
$(srcdir)/Makefile.sub \
$(top_srcdir)/Makefile.lib \
Makefile.dep
all: lib$(LIB).$(LIBEXT)
lib$(LIB).$(LIBEXT): $(OBJS)
$(AR) r $@ $?
$(RANLIB) $@
depend: depend_src
depend.temp: $(GENSRCS)
TAGS: $(CCSRCS) $(CSRCS)
Makefile: $(MAKEFILEPARTS)
Makefile.dep:
touch Makefile.dep

View file

@ -1,5 +0,0 @@
all: $(MANPAGES)
install_data: install_man
install_man: $(MANPAGES)
uninstall_sub: uninstall_man
$(top_builddir)/stamp-h $(MANPAGES): $(top_srcdir)/VERSION $(top_srcdir)/REVISION

View file

@ -1,35 +0,0 @@
DISTCLEANFILES=\
config.status \
config.log \
config.cache \
stamp-h \
Makefile \
test-groff \
src/include/config.h \
site.exp \
site.bak \
groff.sum \
groff.log
CLEANADD=Makefile.cfg conftest*
distfiles: configure
$(scrdir)/configure: configure.ac aclocal.m4
cd $(srcdir) && autoconf
config.status: configure
$(SHELL) config.status --recheck
# autoheader might not change config.hin, so touch a stamp file.
$(srcdir)/config.hin: stamp-h.in
$(srcdir)/stamp-h.in: configure.ac aclocal.m4
cd $(srcdir) && autoheader
echo timestamp > $(srcdir)/stamp-h.in
config.h: stamp-h
stamp-h: config.hin config.status
$(SHELL) config.status
# Always create the site-font directory as a guide to the user.
install_data:
-test -d $(localfontdir) || $(mkinstalldirs) $(localfontdir)

File diff suppressed because it is too large Load diff

View file

@ -1,916 +0,0 @@
This file describes various problems that have been encountered in
compiling, installing and running groff. Suggestions for additions or
other improvements to this file are welcome.
----------------------------------------------------------------------
Generic Problems
================
* Displaying a man page on a terminal with/without my favourite pager
only gives garbage.
groff by default now uses SGR escape sequences (`ANSI color') to
control the display attributes (bold, underlined, colour) on TTYs.
Some terminals (e.g. `kterm') don't understand SGR, and some pagers
(e.g. older versions of `less' or `less' without the -R option) don't
understand SGR either. There are three solutions to fix this, in order
of preference; please read the grotty man page for more details.
The fourth and probably best option is to update your terminal program
and pager to versions which can handle SGR.
1. Set the GROFF_NO_SGR environment variable.
2. Pass option -c to grotty.
3. Append the following fragment to the `troffrc' file:
--- start ---
.if n \{\
. nr _C \n(.C
. cp 0
.
. \" The following code sets a top-of-page trap to disable grotty's TTY
. \" mode. Since neither \X nor .output can be used before the first
. \" page has started, we must use a trap. To make it work with troff's
. \" -o option, we wait until the first printed page.
.
. de sgr@dummy
. .
.
. rn wh wh@old
.
. \" The stand-alone version. If no other trap is set, we can safely
. \" insert the truncated vertical space caused by the trap (if any).
. \" Otherwise we assume that the document's main macro package takes
. \" care of that. As soon as the trap has been executed, it is removed.
. de1 no@sgr
. if \\n[.P] \{\
. if (\\n[.t] == \\n[.p]) \{\
. rn wh@old wh
. rm no@sgr
. wh 0
. sp \\n[.trunc]
. nop \X'tty: sgr 0'
. sp -1
. \}\}
. .
.
. wh@old 0 no@sgr
.
. \" The piggyback version to be appended to macros planted with the
. \" modified `wh' request.
. de1 no@sgr1
. if \\n[.P] \{\
. rn wh@old wh
. ds no@sgr1
. nop \X'tty: sgr 0'
. sp -1
. \}
. .
.
. \" We redefine the `wh' request so that `no@sgr1' is appended to
. \" the trap macro.
. de1 wh
. am1 \\$2 sgr@dummy
. no@sgr1
. sgr@dummy
. wh@old \\$1 \\$2
. .
.
. cp \n[_C]
.\}
--- end ---
----------------------------------------------------------------------
* The UTF-8 output of grotty has strange characters for the minus, the
hyphen, and the right quote. Why?
The used Unicode characters (U+2212 for the minus sign and U+2010 for
the hyphen) are the correct ones, but many programs can't search them
properly. The same is true for the right quote (U+201D). To map those
characters back to the ASCII characters, insert the following code
snippet into the `troffrc' configuration file:
.if '\*[.T]'utf8' \{\
. char \- \N'45'
. char - \N'45'
. char ' \N'39'
.\}
----------------------------------------------------------------------
* My document says that the current year is 19100, not 2000.
In groff, as in traditional troff, the yr number register yields the
year minus 1900. Unfortunately, there is a longstanding bug in the
Troff User's Manual <http://cm.bell-labs.com/cm/cs/cstr/54.ps.gz>,
which incorrectly claims that yr is the last two digits of the year.
This claim was never true of either Unix troff or of groff.
If your text looks like this:
.\" Wrong:
This document was formatted in 19\n(yr.
you can correct it as follows:
This document was formatted in \n[year].
or, if you want to be portable to older troff versions, as follows:
.nr y4 1900+\n(yr
This document was formatted in \n(y4.
----------------------------------------------------------------------
* groff can't handle my troff document. It works fine with AT&T
troff.
Read the section on incompatibilities in groff_diff(7). Try using
the -C option. Alternatively there's the sed script
`tmac/fixmacros.sed' which will attempt to edit a file of macros so
that it can be used with groff without the -C flag.
----------------------------------------------------------------------
* gtroff doesn't understand lines like `.ce99' with no space between
the name of the request or macro and the arguments.
gtroff requires a space between macro or request and its arguments
because it allows the use of long names for macros and requests. You
can use the -C option or the `cp' request to put gtroff into a
compatibility mode in which it is not possible to use long names for
macros but in which no space is required between macros and their
arguments. The use of compatibility mode is strongly discouraged.
----------------------------------------------------------------------
* groff -Tdvi produces dvi files that use fonts at weird
magnifications.
Yes, it does. You may need to compile fonts with Metafont at these
magnifications. The CompileFonts script in the devdvi/generate
directory may help you to do this. (It will take a *long* time on
slow computers.)
----------------------------------------------------------------------
* Groff doesn't use the font names I'm used to.
Use the `ftr' request. See groff_diff(7).
----------------------------------------------------------------------
* pic output is not centered horizontally; pictures sometimes run off
the bottom of the page.
The macro package you are using is not supplying appropriate
definitions of PS and PE. Give groff a -mpic option.
----------------------------------------------------------------------
* gpic doesn't accept the syntax `chop N M' for chopping both ends of
a line.
The correct syntax is `chop N chop M'.
----------------------------------------------------------------------
* With gpic -t, when I print `line ->; box' using a dvi to ps program,
the arrow head sticks through into the inside of the box.
The dvi to ps program should be modified to set the line cap and line
join parameters to 1 while printing tpic specials.
----------------------------------------------------------------------
* gtroff gives warnings about lines like
.ev \" a comment
(with a tab after the .ev).
A tab character cannot be used as a substitute for a space character
(except in one case: between a control character at the beginning of a
line and the name of a macro or request). For example, in Unix troff
.ps \" restore the previous point size
(with a tab after the .ps) will NOT restore the previous point-size;
instead it will be silently ignored. Since this is very likely to be
an error, gtroff can give a warning about it. If you want to align
comments, you can do it like this:
.ev\" \" a comment
----------------------------------------------------------------------
* I don't like the page headers and footers produced by groff -man.
There seem to be many different styles of page header and footer
produced by different versions of the -man macros. You will need to
put modified macros from tmac/an-old.tmac into man.local. More
information is available in groff_man(7).
----------------------------------------------------------------------
* Where can I get grap?
Ted Faber <faber@lunabase.org> has written a freely available grap:
http://www.lunabase.org/~faber/Vault/software/grap/
----------------------------------------------------------------------
* The \n(st and \n(sb registers don't seem to work. I thought \w set
them to the height and depth of its argument, but the registers
always seem to be 0.
\n(st and \n(sb aren't supposed to give the height and depth of the
string rather they give the minimum and maximum vertical displacement
of the baseline. For example for \v'2u'\v'-3u', \n(st will be 1 and
\n(sb will be -2. The height and depth of the string is available in
the \n[rst] and \n[rsb] registers: these are groff extensions.
----------------------------------------------------------------------
* While formatting a manual page, groff complains about not being able
to break lines. The problem seems to be caused by a line like:
.TP \w'label'+2
The -man documentation says that the default scale indicator for TP
macro is `n'. The groff -man macros implement this correctly, so that
the argument will be evaluated as if it were
\w'label'n+2n
The Unix -man macros don't implement this correctly (probably because
it's hard to do in Unix troff); they just append `n' to the entire
argument, so that it will be evaluated as if it were
\w'label'u+2n
The solution is to fix the manual page:
.TP \w'label'u+2
----------------------------------------------------------------------
* I'm having problems formatting man pages produced by the perl
wrapman script.
Some versions of wrapman have a superfluous blank line before the .TH
line. This must be deleted. Then either use groff -C, or apply the
following patch:
*** wrapman.~2~ Sun Jan 19 12:10:24 1992
--- wrapman Tue Aug 10 02:06:41 1993
***************
*** 35,41 ****
$line1 .= <IN> if $line1 =~ /eval/;
$line1 .= <IN> if $line1 =~ /argv/;
$line2 = <IN>;
! next if $line2 eq "'di';\n";
# Pull the old switcheroo.
--- 35,41 ----
$line1 .= <IN> if $line1 =~ /eval/;
$line1 .= <IN> if $line1 =~ /argv/;
$line2 = <IN>;
! next if $line2 eq "'di ';\n" || $line2 eq "'di';\n";
# Pull the old switcheroo.
***************
*** 49,56 ****
print OUT $line1;
print OUT <<EOF;
! 'di';
! 'ig00';
#
# $header
#
--- 49,58 ----
print OUT $line1;
print OUT <<EOF;
! 'di ';
! 'ds 00 \\"';
! 'eo ';
! 'ig 00 ';
#
# $header
#
***************
*** 72,85 ****
# These next few lines are legal in both Perl and nroff.
! $null.00; # finish .ig
'di \\" finish diversion--previous line must be blank
.nr nl 0-1 \\" fake up transition to first page again
.nr % 0 \\" start at page 1
! '; __END__ ##### From here on it's a standard manual page #####
.TH $PROG 1 "$month $mday, 19$year"
- .AT 3
.SH NAME
$prog \\- whatever
.SH SYNOPSIS
--- 74,87 ----
# These next few lines are legal in both Perl and nroff.
! $null.00 ; # finish .ig
! 'ec \\';
'di \\" finish diversion--previous line must be blank
.nr nl 0-1 \\" fake up transition to first page again
.nr % 0 \\" start at page 1
! .\\"'; __END__ ##### From here on it's a standard manual page #####
.TH $PROG 1 "$month $mday, 19$year"
.SH NAME
$prog \\- whatever
.SH SYNOPSIS
----------------------------------------------------------------------
* groff uses up an enormous amount of memory processing large files.
I'm using 386BSD 0.1.
386BSD includes an old version of g++, 1.39, which has a bug that
causes a major memory leak in gtroff. Apply the following fix to g++
and recompile groff:
*** cplus-decl.c.~1~ Mon Aug 6 05:28:59 1990
--- cplus-decl.c Wed Jun 5 08:55:04 1991
***************
*** 7951,7961 ****
/* At the end, call delete if that's what's requested. */
if (TREE_GETS_DELETE (current_class_type))
exprstmt = build_method_call (build1 (NOP_EXPR, TYPE_POINTER_TO (current_class_type), error_mark_node),
get_identifier (OPERATOR_DELETE_FORMAT),
! build_tree_list (NULL_TREE, integer_zero_node),
NULL_TREE, LOOKUP_NORMAL);
else if (TYPE_USES_VIRTUAL_BASECLASSES (current_class_type))
exprstmt = build_x_delete (ptr_type_node, current_class_decl, 0);
else
exprstmt = 0;
--- 7951,7961 ----
/* At the end, call delete if that's what's requested. */
if (TREE_GETS_DELETE (current_class_type))
exprstmt = build_method_call (build1 (NOP_EXPR, TYPE_POINTER_TO (current_class_type), error_mark_node),
get_identifier (OPERATOR_DELETE_FORMAT),
! build_tree_list (NULL_TREE, current_class_decl),
NULL_TREE, LOOKUP_NORMAL);
else if (TYPE_USES_VIRTUAL_BASECLASSES (current_class_type))
exprstmt = build_x_delete (ptr_type_node, current_class_decl, 0);
else
exprstmt = 0;
Printing and Display Problems
=============================
* I'm having problems including PostScript illustrations (EPS) using
the PSPIC macro and/or \X'ps: import ...'.
A PostScript document must meet three requirements in order to be
included with the PSPIC macro: it must comply with the Adobe Document
Structuring Conventions; it must contain a BoundingBox line; it must
be `well-behaved'. The BoundingBox line should be of the form:
%%BoundingBox: llx lly urx ury
where llx, lly, urx, ury are the coordinates of the lower left x,
lower left y, upper right x, upper right y of the bounding box of
marks on the page expressed as integers in the default PostScript
coordinate system (72 units per inch, origin at bottom left corner).
The most convenient program to get the bounding box of a document is
the `ps2epsi' script coming with GhostScript.
If you can't use this program, another useful tactic is to print out
the illustration by itself (you may need to add a `showpage' at the
end), and physically measure the bounding box. For more detail on
these requirements, read the specification of Encapsulated PostScript
format. (This is available from the Adobe file server; send a message
with a body of `help' to ps-file-server@adobe.com.)
If an EPS file to be included via \X'ps: import' does not start with
`%!PS-Adobe-...', gtroff will still include the file, but grops will
not add any fonts to the generated output file that are listed in the
EPS file, even though the files are listed in the `download' file and
are available in the devps directory.
----------------------------------------------------------------------
* I've configured groff for A4 paper, but gtroff still seems to think
that the length of a page (as returned by `\n(.p') is 11 inches.
This is intentional. The PAGE option during configuration is used
only by grops. For compatibility with ditroff, the default page
length in gtroff is always 11 inches. The page length can be changed
with the `pl' request.
A convenient way to set paper dimensions is to use the -dpaper option
of groff, together with proper -P options for the postprocessor
(overriding the default). For example, use the following for PS
output on A4 paper in landscape orientation:
groff -Tps -dpaper=a4l -P-pa4 -P-l -ms foo.ms > foo.ps
See groff_tmac(5) for more information.
----------------------------------------------------------------------
* When I print the output of groff -Tps, the output is always shifted
up by about 0.7 inches; I'm using 8.5x11 inch paper.
Make sure that the paper size is `letter'. See groff_tmac(5).
----------------------------------------------------------------------
* When I try to run gxditview, I get the error:
Error: Widget viewport has zero width and/or height
This error means you haven't correctly installed the application
defaults file, GXditview.ad; `make install' does this for you
automatically, so either you didn't do `make install', or you haven't
passed a good `--appresdir=<DIR>' argument to groff's configure script.
See the X(7) man page for information how and where application resource
files have to be located. Look for the XAPPLRESDIR and XUSERFILESEARCHPATH
environment variables.
----------------------------------------------------------------------
* When I preview documents using -TX75 or -TX100, the layout is not
the same as when I print the document with -Tps: the line and page
breaks come in different places.
Use `groff -X -Tps'.
----------------------------------------------------------------------
* When I try to print the output of groff -Tps, I get no output at all
from the printer, and the log file shows the error
%%[ error: undefined; offendingcommand: BP ]%%
I'm using TranScript spooling software.
This is a bug in the page reversal filter in early versions of
TranScript. Change the `broken' parameter in
/usr/local/lib/groff/font/devps/DESC to 7.
----------------------------------------------------------------------
* When I preview groff -Tps output using the Sun OpenWindows 2.0
pageview program, all the pages are displayed on top of each other.
This is a defect in pageview. Change the `broken' parameter in
/usr/local/lib/groff/font/devps/DESC to 2.
----------------------------------------------------------------------
* With groff -TX75, -TX100 or -X, I can only view the first page.
The left mouse button brings up a menu that allows you to view other
pages.
----------------------------------------------------------------------
* When I print the output of groff -Tdvi, I just get a black dot in
upper left corner.
Some dvi drivers (notably early versions of xtex) do not correctly
handle dvi files that use a resolution different from that used by dvi
files produced by TeX. Try getting a more up to date driver.
----------------------------------------------------------------------
* How can I use groff with an old LaserJet printer that doesn't work
with groff -Tlj4?
You have at least 3 options:
- use groff -Tps with GNU Ghostscript;
- use groff -Tdvi with a TeX .dvi to Laserjet driver;
- use groff with the LaserJet driver in Chris Lewis' psroff package
(available for ftp from:
ftp.uunet.ca:/distrib/chris_lewis/psroff3.0pl17).
----------------------------------------------------------------------
* Groff seems to generate level 3 Postscript, but my printer is only a
level 1 or 2 PostScript printer.
In fact groff generates only level 2 PostScript (or rather level 1
with some extensions; see grops(1) for more information how to disable
them). The `%!PS-Adobe-3.0' comment at the beginning of PostScript
output generated by groff indicates that the file conforms to
version 3.0 of the Adobe Document Structuring Conventions. The output
generated by groff should be printable on any PostScript printer.
Problems with groff output's not printing are most often caused by the
spooling system.
Platform-Dependent Macro Problems
=================================
* I get lots of errors when I use groff with the AT&T -mm macros.
Use the groff -mm macros.
----------------------------------------------------------------------
* groff produces wrapper macros for `ms' and friends which call the
system's original macros. Then, to get groff's ms macro package I
have to use `-mgs' instead `-ms'. Can I avoid this?
Yes. Configure and compile groff as usual, but install it with
make install tmac_wrap=""
Then no wrapper files are produced, and `-ms' will use groff's `ms'
macros.
----------------------------------------------------------------------
* I'm having problems formatting HP-UX 9.0 man pages with groff -man.
Copy HP's tmac.an into /usr/local/share/groff/site-tmac/an.tmac, and
either put `.cp 1' at the beginning or filter it (and any files it
.so's) through tmac/fixmacros.sed.
----------------------------------------------------------------------
* I get errors using the Unix -ms macros with groff -e -C.
Apply this change:
*** /usr/lib/ms/ms.eqn Tue Apr 25 02:14:28 1989
--- ms.eqn Sun Nov 11 10:33:59 1990
***************
*** 22,29 ****
..
. \" EN - end of a displayed equation
.de EN
! .if !\\*(10 .br
.di
.rm EZ
.nr ZN \\n(dn
.if \\n(ZN>0 .if \\n(YE=0 .LP
--- 22,30 ----
..
. \" EN - end of a displayed equation
.de EN
! .if \\n(.k>0 .br
.di
+ .ds 10 \\*(EZ\\
.rm EZ
.nr ZN \\n(dn
.if \\n(ZN>0 .if \\n(YE=0 .LP
----------------------------------------------------------------------
* I'm having problems formatting Ultrix man pages with groff -man.
The Ultrix man pages use a number of non-standard extensions to the
Unix man macros. One solution is to use the Ultrix -man macros with
groff. Copy /usr/lib/tmac/tmac.an to
/usr/local/share/groff/site-tmac/an.tmac and apply the following patch
(from Frank Wortner):
*** /usr/local/lib/groff/tmac/tmac.an Wed Sep 9 12:29:28 1992
--- /usr/lib/tmac/tmac.an Fri Jul 24 19:58:19 1992
***************
*** 489,495 ****
. \" make special case of shift out of italic
.de }S
.ds ]F
! .if \\$12 .if !\\$5 .ds ]F \^
.ie !\\$4 .}S \\$2 \\$1 "\\$3\f\\$1\\$4\\*(]F" "\\$5" "\\$6" "\\$7" "\\$8" "\\$9"
.el \\$3
.}f
--- 489,495 ----
. \" make special case of shift out of italic
.de }S
.ds ]F
! .if \\$12 .if !\\$5 .ds ]F\^
.ie !\\$4 .}S \\$2 \\$1 "\\$3\f\\$1\\$4\\*(]F" "\\$5" "\\$6" "\\$7" "\\$8" "\\$9"
.el \\$3
.}f
Another possible solution is to install tmac/man.ultrix as
/usr/local/share/groff/site-tmac/man.local.
----------------------------------------------------------------------
* On an SGI system, how can I make the man command use groff?
From David Hinds <dhinds@allegro.stanford.edu> (some of these steps
are unnecessary if you install with the `g' Makefile variable defined
as empty):
Create a script called 'eqn':
> #! /bin/sh
> if [ ${1:-""} = /usr/pub/eqnchar ] ; then shift ; fi
> geqn $*
and a script called 'neqn':
> #! /bin/sh
> if [ ${1:-""} = /usr/pub/eqnchar ] ; then shift ; fi
> geqn -Tascii $*
and do:
> ln -s gnroff nroff
and edit the end of the gnroff script to be:
> rest=`echo ${1+"$@"} | sed -e 's+/usr/lib/tmac+/usr/local/lib/groff/tmac+'`
> exec groff -Wall -mtty-char $T $opts $rest
To get PostScript output from 'man -t', you also need to create a
'psroff' script similar to 'nroff'. Here are the context diffs:
*** /usr/local/bin/nroff Sat Feb 13 15:51:09 1993
--- /usr/local/bin/psroff Sat Feb 13 17:45:46 1993
***************
*** 1,8 ****
#! /bin/sh
! # Emulate nroff with groff.
prog="$0"
! T=-Tascii
opts=
for i
--- 1,8 ----
#! /bin/sh
! # Emulate psroff with groff.
prog="$0"
! T=-Tps
opts=
for i
***************
*** 25,30 ****
--- 25,33 ----
-Tascii|-Tlatin1)
T=$1
;;
+ -t)
+ # ignore -- default is send to stdout
+ ;;
-T*)
# ignore other devices
;;
***************
*** 49,53 ****
rest=`echo ${1+"$@"} | sed -e 's+/usr/lib/tmac+/usr/local/lib/groff/tmac+'`
# This shell script is intended for use with man, so warnings are
# probably not wanted. Also load nroff-style character definitions.
! exec groff -Wall -mtty-char $T $opts $rest
--- 52,56 ----
rest=`echo ${1+"$@"} | sed -e 's+/usr/lib/tmac+/usr/local/lib/groff/tmac+'`
# This shell script is intended for use with man, so warnings are
! # probably not wanted.
! exec groff -Wall $T $opts $rest
Compilation Problems
====================
* Compilation dies with
y.tab.c: In function `int yyparse()':
y.tab.c: `size_t' undeclared in namespace `std'
* bison reports conflicts (either on stderr or in the `pic.output'
file) while processing `pic.y', and the produced pic binary doesn't
work at all.
You need bison version 1.875b or greater. Alternatively, use yacc or
byacc.
----------------------------------------------------------------------
* There are many empty `Makefile.dep' files. Is this a bug?
No. Real dependency files are created with a `make depend' call.
----------------------------------------------------------------------
* On HP-UX, the compiler complains about missing symbol `alloca'.
Say
export LDFLAGS=-lPW
before starting the configure script.
----------------------------------------------------------------------
* The configure script fails on OS/390 (z/OS) Unix.
[This has been fixed in z/OS V1R3 (aka OS/390 R13).]
There is a bug in the Language Environment (LE) whereby the test
program for static destructors fails. You will see the message
`configure: error: a working C++ compiler is required'
Applying PTF UQ42006 is supposed to fix this, but the test program is
still returning the wrong value (1). To work around this problem, you
can comment out the following in the configure script (near line 2029).
This will effectively bypass the test (static constructors and
destructors do actually work properly):
#if { (eval echo "$as_me:2029: \"$ac_link\"") >&5
# (eval $ac_link) 2>&5
# ac_status=$?
# echo "$as_me:2032: \$? = $ac_status" >&5
# (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
# { (eval echo "$as_me:2034: \"$ac_try\"") >&5
# (eval $ac_try) 2>&5
# ac_status=$?
# echo "$as_me:2037: \$? = $ac_status" >&5
# (exit $ac_status); }; }; then
# echo "$as_me:2039: result: yes" >&5
#echo "${ECHO_T}yes" >&6
#else
# echo "$as_me: program exited with status $ac_status" >&5
#echo "$as_me: failed program was:" >&5
#cat conftest.$ac_ext >&5
#echo "$as_me:2045: result: no" >&5
#echo "${ECHO_T}no" >&6;{ { echo "$as_me:2046: error: a working C++ compiler is required" >&5
#echo "$as_me: error: a working C++ compiler is required" >&2;}
# { (exit 1); exit 1; }; }
#fi
----------------------------------------------------------------------
* I get errors when I try to compile groff with DEC C++.
Fix the declaration of write() in <unistd.h> so that the second
argument is a const char *. Fix the declaration of open() in
<sys/file.h> so that the first argument is a const char *.
----------------------------------------------------------------------
* On a host using Unix make (e.g. Solaris), if you are compiling for
multiple architectures by building in a subdirectory, the make stops
with a message like this:
make: Fatal error: Don't know how to make target `assert.o'
or like this:
make: Fatal error: Can't find /u/src/groff/src/include/Makefile.sub': No such file or directory
This occurs because GNU make and Unix make handle VPATH differently,
and the groff build relies on GNU make's VPATH handling.
Use GNU make <http://www.gnu.org/software/make/> to work around this.
In Solaris 8 and 9, GNU make is on the Software Companion CD in
package SFWgmake and is installed as /opt/sfw/bin/gmake. Prebuilt
versions of GNU make for Solaris are also available from
sunfreeware.com.
----------------------------------------------------------------------
* On Ultrix, the make program stops with the message
*** Error code 1
Stop.
for no apparent reason.
Use GNU make.
----------------------------------------------------------------------
* I'm having problems compiling groff on 386BSD 0.1.
If you're using ash as /bin/sh, you'll need the following patch.
*** gendef.sh.org Sun Jun 30 13:30:36 1991
--- gendef.sh Sun Feb 28 10:23:49 1993
***************
*** 3,9 ****
file=$1
shift
! defs="#define $1"
shift
for def
do
--- 3,10 ----
file=$1
shift
! x=$1
! defs="#define $x"
shift
for def
do
You'll also need to change dirnamemax.c so that it doesn't use
pathconf().
----------------------------------------------------------------------
* While compiling on Xenix, ranlib libgroff.a fails.
The system ranlib can't handle externals longer than 40 characters.
Use the ranlib included in demon.co.uk:/pub/xenix/g++-1.40.3a.v1
instead.
----------------------------------------------------------------------
* I get errors when I try to compile groff with Sun C++ version 3 or
earlier.
Groff requires header files that are moderately compatible with AT&T
C++ and ANSI C. With some versions of Sun C++, the supplied header
files need some of the following changes to meet this requirement:
<string.h> must declare the mem* functions, (just add `#include
<memory.h>' to <string.h>); the first argument to fopen and freopen
should be declared as `const char *'; the first argument to fread
should be declared as `void *'; the first argument to fwrite should be
declared as `const void *'; malloc should be declared to return
`void *'; in <alloca.h>, the declaration `extern "C" { void
*__builtin_alloca(int); }' should be added; in <sys/signal.h> the
return type and the second argument type of signal() should be changed
to be `void (*)(int)'.
You can either change them in place, or copy them to some other
directory and include that directory with a -I option.
----------------------------------------------------------------------
* I get errors when I try to compile groff with Forte Development 6
or 6u1, or Sun C++ version 5.0 through 5.2.
This is a known problem; see Sun bug #4301919. See Sun patches
109482, 109490, 109508, and 109509 for fixes.
----------------------------------------------------------------------
* I get warnings from the Sun linker while using gcc 3.4.0:
ld: warning: relocation error: R_SPARC_UA32:
file groff/src/libs/libgroff/libgroff.a(getopt.o): symbol optarg:
external symbolic relocation against non-allocatable
section .debug_info; cannot be processed at runtime:
relocation ignored
This seems to be a known problem (Sun bugs #4910101 and #4910810,
filed in September 2003; gcc bug #15599, filed May 2004) without a
public fix as of this writing. A work-around is to use option
`-gstabs+' instead of `-g' (and a high probability that the output is
only debuggable with gdb but not with Sun's debuggers).
----------------------------------------------------------------------
* I get lots of `numeric overflow' error messages whenever I run
groff; I compiled groff with AT&T C++ 2.0 with an ANSI C compiler.
Make sure -DCFRONT_ANSI_BUG is included in DEFINES in the top-level
Makefile. If that doesn't solve the problem, define INT_MIN as
-INT_MAX in libgroff/lib.h.
----------------------------------------------------------------------
* When compiling on MacOS X, groff compiles but does not run well,
especially `eqn', causing many `can't break line' messages.
Use ./configure CXX=g++2 then make as usual.

View file

@ -1,14 +0,0 @@
Here are some things that would be useful additions to groff:
ideal preprocessor
-mv macros (for typesetting viewgraphs and slides)
a deroff that understands long names
a page-makeup postprocessor and associated macro package
(like pm and -mpm)
If you want to work on one of these, you should probably post to
gnu.groff.bug (or send email to bug-groff@gnu.org) to see if anyone else
has gotten there first.

View file

@ -1,134 +0,0 @@
This is the GNU `groff' document formatting system. The version
number is given in the file VERSION.
Included in this release are implementations of `troff', `pic', `eqn',
`tbl', `grn', `refer', `-man', `-mdoc', `-mom', and `-ms' macros, and
drivers for `PostScript', `TeX dvi' format, `HP LaserJet 4' printers,
`Canon CAPSL' printers, `HTML' format (beta status), and
typewriter-like devices. Also included is a modified version of the
Berkeley `-me' macros, the enhanced version `gxditview' of the X11
`xditview' previewer, and an implementation of the `-mm' macros
contributed by Joergen Haegg (jh@axis.se).
See the file `INSTALL' for installation instructions. You will
require a C++ compiler.
The file `NEWS' describes recent user-visible changes to `groff'.
`groff' is free software. See the file `COPYING' for copying
permission.
The file `PROBLEMS' describes various problems that have been
encountered in compiling, installing, and running `groff'.
The most recent released version of `groff' is always available by
anonymous ftp from `ftp.gnu.org' in the directory `gnu/groff'.
The current development version of `groff' is available from a `CVS'
repository. You can access it by first selecting a parent directory
in which to create a working copy (call it, say, `~/cvswork'), and
then executing the commands
cd ~/cvswork
CVS_RSH=ssh; export CVS_RSH
cvs -d:ext:anoncvs@savannah.gnu.org/cvsroot/groff -z5 co groff
(Note that you need an `ssh' client for security reasons.)
This will create a subdirectory, `~/cvswork/groff', with a "checked
out" copy of the `CVS' repository. An update of this working copy may
be achieved, at any later time by invoking the commands
cd ~/cvswork/groff
CVS_RSH=ssh cvs -z5 update -dP
Please read the `CVS' info pages for further details.
Finally, it is possible to access the `CVS' with a web browser by
pointing it to
http://savannah.gnu.org/cvs/?group=groff
Alternatively, you can download snapshots (which are updated twice a day).
The complete `groff' source as a single file is available at
http://groff.ffii.org/groff/devel/groff-current.tar.gz
A diff file relative to `groff-<version>', the latest official `groff'
release is available at
http://groff.ffii.org/groff/devel/groff-<version>-current.diff.gz
Assuming that `groff-<version>.tar.gz' and
`groff-<version>-current.diff.gz' are in the same directory, do the
following to apply the diff file:
tar xzvf groff-<version>.tar.gz
cd groff-<version>
gunzip -c ../groff-<version>-current.diff.gz | patch -p1
Depending on your requirements, you may need at least some of the
following tools to build `groff' directly from its source:
ghostscript
the psutils package
the netpbm package
texinfo 4.8
bison >= 1.875b or byacc
Note that `texinfo' and `bison' or `byacc' are required only for
building from `CVS' sources (either a checked out working copy, or a
daily snapshot). They are not required for building from a stable
release tarball. Also note that the version numbers stated are the
minimum supported. No version of `texinfo' < 4.8 will work, and the
original release of `bison' 1.875 is known not to work; you *may* find
that `bison' releases < 1.875 will work, but in case of difficulty,
please update to a later version *before* posting a bug report.
For *all* sources, you need ghostscript for creation of either `PDF' or
`HTML' output; the `netpbm' and `psutils' packages are required only for
`HTML' output. If you don't intend to produce output in either of these
formats, then these packages are unnecessary.
In Linux Debian, the installation of `texinfo' is dangerous. For it
creates a file `install-info' that will block the system installation.
So the created `/usr/local/bin/install-info' must be renamed.
The `groff' configure script searches for the X11 headers and
libraries `Xaw' and `Xmu'. So the corresponding developer packages of
your system must be installed, otherwise `groff' does not install
`gxditview' and the `-TX*' devices. In Debian, the developer packages
are `libxaw7-dev' and `libxmu-dev'.
Please report bugs using the form in the file `BUG-REPORT'; the idea of
this is to make sure that FSF has all the information it needs to fix
the bug. At the very least, read the `BUG-REPORT' form and make sure
that you supply all the information that it asks for. Even if you are
not sure that something is a bug, report it using `BUG-REPORT': this will
enable us to determine whether it really is a bug or not.
Three mailing lists are available:
bug-groff@gnu.org for reporting bugs
groff@gnu.org for general discussion of groff
groff-commit@gnu.org a read-only list showing commitments
to the CVS repository
You can post mails directly to the `bug-groff' list, without subscribing;
to post mails to the `groff' list you must subscribe to it.
To subscribe, send a mail to <list>-request@<domain> (example:
groff-request@gnu.org for the `groff' list) with the word `subscribe'
in either the subject or body of the email (don't include the quotes).
Alternatively, you may subscribe by visiting the web pages at
http://lists.gnu.org/mailman/listinfo/bug-groff
http://lists.gnu.org/mailman/listinfo/groff
http://lists.gnu.org/mailman/listinfo/groff-commit
Each of these web pages also provides a link to a browseable archive of
postings to the corresponding mailing list.
GNU `groff' was written by James Clark <jjc@jclark.com>. It is now
maintained by Ted Harding <ted.harding@nessie.mcc.ac.uk> and Werner
Lemberg <wl@gnu.org>.

View file

@ -1,277 +0,0 @@
README.MinGW
============
Contributed by Keith Marshall (keith.d.marshall@ntlworld.com)
INTRODUCTION
------------
This file provides recommendations for building a Win32 implementation of
GNU Groff, using the MinGW port of GCC for Microsoft (TM) Windows-32
platforms. It is intended to supplement the standard installation
instructions (see file INSTALL); it does not replace them.
You require both the MinGW implementation of GCC and its supporting MSYS
toolkit, which provides a Win-32 implementation of the GNU bash shell, and a
few other essential utilities; these may be obtained from
http://sourceforge.net/projects/mingw
by following the appropriate download links, where they are available as
self-extracting executable installation packages. If installing both from
scratch, it is recommended that MinGW is installed first, as the MSYS
installer can then automatically set up the proper environment for running
MinGW.
Additionally, if you wish to compile groff with support for its HTML output
capability, some additional tools are required as decribed in the section
PREREQUISITES FOR HTML OUTPUT later in this file.
BUILDING GROFF WITH MINGW
-------------------------
Assuming that you have obtained the appropriate groff distribution, and that
you are already running an MSYS shell, then the configuration, compilation,
and installation of groff, using MinGW, is performed in much the same way as
it is described in the INSTALL file, which is provided with the groff
distribution. The installation steps are summarised below:
1. Change working directory to any suitable location where you may unpack
the groff distribution; you must be authorized for write access.
Approximately 30MB of free disk space are needed.
2. Unpack the groff distribution:
tar xzf <download-path>/groff-<version>.tar.gz
This creates a new sub-directory, groff-<version>, containing an image of
the groff source tree. You should now change directory, to make this
./groff-<version> your working directory.
3. If you are intending to build groff with support for HTML output, then
you must now ensure that the prerequisites described in the later section
PREREQUISITES FOR HTML OUTPUT are satisfied, before proceeding to build
groff; in particular, please ensure that all required support programs
are installed in the current PATH.
4. You are now ready to configure, build, and install groff. This is
accomplished using the conventional procedure, as described in the file
INSTALL, i.e.
./configure --prefix=<win32-install-path> ...
make
make install
Please observe the syntax for the configure command, indicated above; the
default value for --prefix is not suitable for use with MinGW, so the
--prefix=<win32-install-path> option must be specified, where
<win32-install-path> is the chosen MS-Windows directory in which the
groff application files are to be installed (see the later section
entitled CHOOSING AN INSTALLATION PATH). Any other desired configuration
options may also be specified, as described in the standard groff
installation instructions.
5. After completing the above, groff should be successfully installed; the
build directory is no longer required; it may be simply deleted in its
entirety. Alternatively, you may choose to keep it, but to remove all
files which can be reproduced later, by repeating the configure, make and
make install steps; this is readily accomplished by the command
make distclean
This completes the installation of groff; please read the final sections of
this file, GROFF RUNTIME ENVIRONMENT and CAVEATS AND BUGS, for advice on
setting up the runtime environment, and avoiding known runtime problems,
before running groff.
CHOOSING AN INSTALLATION PATH
-----------------------------
It may be noted that the above instructions indicate that the ./configure
command must be invoked with an argument specifying a preference for
--prefix=<win32-install-path>, whereas the standard groff installation
instructions indicate that this may be omitted, in which case it defaults to
--prefix=/usr/local.
In the case of building with MinGW, the default behaviour of configure is
not appropriate for the following reasons.
o The MSYS environment creates a virtual UNIX-like file system, with its
root mapped to the actual MS-Windows directory where MSYS itself is
installed; /usr is also mapped to this MSYS installation directory.
o All of the MSYS tools, and the MinGW implementation of GCC, refer to files
via this virtual file system representation; thus, if the
--prefix=<win32-install-path> is not specified when groff is configured,
`make install' causes groff to be installed in <MSYS-install-path>/local.
o groff needs to know its own installation path, so that it can locate its
own installed components. This information is compiled in, using the
exact form specified with the --prefix=<win32-install-path> option to
configure.
o Knowledge of the MSYS virtual file system is not imparted to groff; it
expects the compiled-in path to its components to be a fully qualified
MS-Windows path name (although UNIX-style slashes are permitted, and
preferred to the MS-Windows style backslashes, to demarcate the directory
hierarchy). Thus, when configuring groff, if
--prefix=<win32-install-path> is not correctly specified, then the
installed groff application looks for its components in /usr/local, and
most likely doesn't find them, because they are actually installed in
<MSYS-install-path>/local.
It is actually convenient, but by no means a requirement, to have groff
installed in the /usr/local directory of the MSYS virtual file system; this
makes it easy to invoke groff from the MSYS shell, since the virtual
/usr/local/bin is normally added automatically to the PATH (the default
PATH, as set in MSYS's /etc/profile), when MSYS is started.
In order to install groff into MSYS's /usr/local directory, it is necessary
to specify the fully qualified absolute MS-Windows path to this directory,
when configuring groff, i.e.
./configure --prefix=<MSYS-install-path>/local ...
For example, on a system where MSYS is installed in the MS-Windows directory
D:\MSYS\1.0, the MSYS virtual path /usr/local resolves to the absolute
MS-Windows native path D:\MSYS\1.0\local (the /usr component of the MSYS
virtual path does not appear in the resolved absolute native path name since
MSYS maps this directly to the root of the MSYS virtual file system). Thus,
the --prefix option should be specified to configure as
./configure --prefix=D:/MSYS/1.0/local ...
Note that the backslash characters, which appear in the native MS-Windows
form of the path name, are replaced by UNIX-style slashes in the argument to
configure; this is the preferred syntax.
Also note that the MS-Windows device designator (D: in this instance) is
prepended to the specified path, in the normal MS-Windows format, and that,
since upper and lower case distinctions are ignored in MS-Windows path
names, any combination of upper and lower case is acceptable.
PREREQUISITES FOR HTML OUTPUT
-----------------------------
If you intend to use groff for production of HTML output, then there are a
few dependencies which must be satisfied. Ideally, these should be resolved
before attempting to configure and build groff, since the configuration
script does check them.
In order to produce HTML output, you first require a working implementation
of Ghostscript; either the AFPL Ghostscript or the GNU Ghostscript
implementation for MS-Windows should be suitable, depending on your
licensing preference. It is highly recommended to use version 8.11 or
higher due to bugs in older versions. These may be obtained, in the form of
self-installing binary packages, by following the download links for the
chosen licensing option, from http://sourceforge.net/projects/ghostscript.
Please note that these packages install the Ghostscript interpreter required
by groff in the ./bin subdirectory of the Ghostscript installation
directory, with the name gswin32c.exe. However, groff expects this
interpreter to be located in the system PATH, with the name gs.exe. Thus,
to ensure that groff can correctly locate the Ghostscript interpreter, it is
recommended that the file gswin32c.exe should be copied from the Ghostscript
installation directory to the MSYS /usr/local/bin directory, where it should
be renamed to gs.exe.
In addition to a working Ghostscript interpreter, you also require several
image manipulation utilities, all of which may be scavenged from various
packages available from http://sourceforge.net/projects/gnuwin32, and which
should be installed in the MSYS /usr/local/bin directory, or any other
suitable directory which is specified in the PATH. These additional
prerequisites are
1. from the netpbm-<version>-bin.zip package:
netpbm.dll
pnmcrop.exe
pnmcut.exe
pnmtopng.exe
pnmtops.exe
2. from the libpng-<version>-bin.zip package:
libpng.dll
3. from the zlib-<version>-bin.zip package:
zlib-1.dll, which must be renamed to zlib.dll
4. from the psutils-<version>-bin.zip package:
psselect.exe
Note that it is not necessary to install the above four packages in their
entirety; of course, you may do so if you wish.
GROFF RUNTIME ENVIRONMENT
-------------------------
The runtime environment, provided to groff by MSYS, is essentially the same
as would be provided under a UNIX or GNU/Linux operating system; thus, any
environment variables which may be used to customize the groff runtime
environment have similar effects under MSYS, as they would in UNIX or
GNU/Linux, with the exception that any variable specifying a path should
adopt the same syntax as a native MS-Windows PATH specification.
There is, however, one known problem which is associated with the
implementation of the MS-Windows file system, and the manner in which the
Microsoft runtime library (which is used by the MinGW implementation of GCC)
generates names for temporary files. This known problem arises when groff
is invoked with a current working directory which refers to a network share,
for which the user does not have write access in the root directory, and
there is no environment variable set to define a writeable location for
creating temporary files. When these conditions arise, groff fails with a
`permission denied' error, as soon as it tries to create any temporary file.
To specify the location for creating temporary files, the standard UNIX or
GNU/Linux implementation of groff provides the GROFF_TMPDIR or TMPDIR
environment variables, whereas MS-Windows applications generally use TMP or
TEMP; furthermore, the MS-Windows implementations of Ghostscript apparently
support the use of only TEMP or TMPDIR.
To avoid problems with creation of temporary files, it is recommended that
you ensure that both TMP and TEMP are defined, with identical values, to
point to a suitable location for creating temporary files; many MS-Windows
boxes have them set already, and groff has been adapted to honour them, when
built in accordance with the preceding instructions, using MinGW.
CAVEATS AND BUGS
----------------
There are two known issues, observed when running groff in the MinGW/MSYS
environment, which would not affect groff in its native UNIX environment:
o Running groff with the working directory set to a subdirectory of a
network share, where the user does not have write permission in the root
directory of the share, causes groff to fail with a `permission denied'
exception, if the TMP environment variable is not appropriately defined;
it may also be necessary to define the TEMP environment variable, to avoid
a similar failure mode, when using the -Thtml output mode of groff. This
problem is more fully discussed in the preceding section, GROFF RUNTIME
ENVIRONMENT.
o When running groff (or nroff) to process standard input, where the
standard input stream is obtained directly from the RXVT console provided
with MSYS, groff cannot detect the end-of-file condition for the standard
input stream, and hangs. This appears to be caused by a fault in the MSYS
implementation of RXVT; it may be worked around by either starting MSYS
without RXVT (see the comments in the MSYS.BAT startup script); in this
case standard input is terminated by typing <Ctrl-Z> followed by <RETURN>,
on a new input line. Alternatively, if you prefer to use MSYS with RXVT,
you can enter the interactive groff command in the form
cat | groff ...
in which case <Ctrl-D> terminates the standard input stream, in just the
same way it does on a UNIX system; the cat executable provided with MSYS
does seem to trap the end-of-file condition, and properly signals groff
that the input stream has terminated.

View file

@ -1 +0,0 @@
2

View file

@ -1,25 +0,0 @@
Unicode input:
Making groff 21bit input-clean.
Make -Tlj4 work with -X.
Guess man5ext and man7ext variables.
Provide man.sun implementing .TX.
Improve GROFF_PRINT macro in aclocal.m4.
Provide a `check' target.
Provide a `bindist' target.
Implement tmac.bib in terms of tmac.s.
Support long options using GNU getopt.
Catch the following error in -me:
.(z
.(l C
.)z
Arrows for next/previous page from R5 xditview.

View file

@ -1 +0,0 @@
1.19

1152
contrib/groff/aclocal.m4 vendored

File diff suppressed because it is too large Load diff

11663
contrib/groff/configure vendored

File diff suppressed because it is too large Load diff

View file

@ -1,126 +0,0 @@
# Autoconf configuration file for groff.
# Copyright (C) 1989-1995, 2001, 2002, 2003, 2004, 2005
# Free Software Foundation, Inc.
#
# This file is part of groff.
#
# groff 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.
#
# groff 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 groff; see the file COPYING. If not, write to the Free Software
# Foundation, 51 Franklin St - Fifth Floor, Boston, MA 02110-1301, USA.
#
# Process this file with autoconf to produce a configure script.
AC_INIT
AC_PREREQ(2.59)
AC_CONFIG_HEADERS([src/include/config.h:src/include/config.hin])
AC_CONFIG_SRCDIR([src/roff/groff/groff.cpp])
# checks for programs
AC_PROG_CC
AC_PROG_CXX
GROFF_CXX_CHECK
GROFF_EBCDIC
GROFF_OS390
GROFF_X11
GROFF_APPRESDIR_OPTION
GROFF_APPRESDIR_DEFAULT
GROFF_PRINT
AC_PATH_PROG([PERLPATH], [perl], [/usr/bin/perl])
GROFF_PROG_YACC
AC_PROG_RANLIB
GROFF_INSTALL_SH
GROFF_INSTALL_INFO
AC_PROG_INSTALL
AC_PROG_LN_S
# use a dummy substitution if no csh hack is necessary to avoid errors
# with non-GNU sed programs
GROFF_CSH_HACK([SH_SCRIPT_SED_CMD='1s/.*/:/'], [SH_SCRIPT_SED_CMD='1s/a/a/'])
AC_SUBST([SH_SCRIPT_SED_CMD])
# checks for headers
AC_CHECK_HEADERS([stdlib.h unistd.h dirent.h limits.h sys/dir.h \
string.h strings.h math.h sys/time.h direct.h process.h])
GROFF_ISC_SYSV3
GROFF_POSIX
# checks for header stuff
GROFF_SRAND
GROFF_NEED_DECLARATION([gettimeofday])
GROFF_NEED_DECLARATION([hypot])
GROFF_NEED_DECLARATION([popen])
GROFF_NEED_DECLARATION([pclose])
GROFF_NEED_DECLARATION([putenv])
GROFF_NEED_DECLARATION([rand])
GROFF_NEED_DECLARATION([snprintf])
GROFF_NEED_DECLARATION([srand])
GROFF_NEED_DECLARATION([strcasecmp])
GROFF_NEED_DECLARATION([strncasecmp])
GROFF_NEED_DECLARATION([vfprintf])
GROFF_NEED_DECLARATION([vsnprintf])
GROFF_SYS_NERR
GROFF_SYS_ERRLIST
GROFF_OSFCN_H
GROFF_LIMITS_H
GROFF_INTTYPES_H
# checks for typedefs
GROFF_UNSIGNED_LONG_LONG
GROFF_UINTMAX_T
GROFF_TIME_T
GROFF_TYPE_SIGNAL
GROFF_STRUCT_EXCEPTION
# checks for libraries
GROFF_LIBC
GROFF_LIBM
# checks for functions
AC_FUNC_MMAP
saved_libs="$LIBS"
LIBS="$LIBS $LIBC $LIBM"
AC_REPLACE_FUNCS([fmod getcwd putenv snprintf strcasecmp \
strerror strncasecmp strtol])
# vsnprintf is in the same source file as snprintf
AC_CHECK_FUNCS([vsnprintf], [], [AC_LIBOBJ([snprintf])])
LIBS="$saved_libs"
AC_CHECK_FUNCS([gettimeofday isatty kill rename setlocale strsep])
GROFF_MKSTEMP
AC_CHECK_DECLS([sys_siglist])
# checks for compiler characteristics
GROFF_ARRAY_DELETE
GROFF_TRADITIONAL_CPP
# checks for operating system services
GROFF_WCOREFLAG
# other random stuff
GROFF_BROKEN_SPOOLER_FLAGS
GROFF_PAGE
GROFF_G
GROFF_TMAC
GROFF_TARGET_PATH_SEPARATOR
GROFF_HTML_PROGRAMS
GROFF_PDFDOC_PROGRAMS
GROFF_PNMTOPS_NOSETPAGE
AC_CONFIG_FILES([stamp-h], [echo timestamp > stamp-h])
AC_CONFIG_FILES([Makefile doc/Makefile src/utils/xtotroff/Makefile])
AC_CONFIG_FILES([contrib/gdiffmk/tests/runtests],
[chmod +x contrib/gdiffmk/tests/runtests])
AC_CONFIG_FILES([test-groff], [chmod +x test-groff])
AC_OUTPUT
GROFF_APPRESDIR_CHECK

View file

@ -1,19 +0,0 @@
MAN1=eqn2graph.n
CLEANADD=eqn2graph
all: eqn2graph
eqn2graph: eqn2graph.sh
rm -f $@; \
sed -e "s|@g@|$(g)|g" \
-e "s|@VERSION@|$(version)$(revision)|" \
-e $(SH_SCRIPT_SED_CMD) $(srcdir)/eqn2graph.sh >$@; \
chmod +x $@
install_data: eqn2graph
-test -d $(bindir) || $(mkinstalldirs) $(bindir)
-rm -f $(bindir)/eqn2graph
$(INSTALL_SCRIPT) eqn2graph $(bindir)/eqn2graph
uninstall_sub:
-rm -f $(bindir)/eqn2graph

View file

@ -1,115 +0,0 @@
.\" $Id: eqn2graph.man,v 1.4 2003/10/28 07:46:23 wlemb Exp $
.\" This documentation is released to the public domain.
.
.
.\" Like TP, but if specified indent is more than half
.\" the current line-length - indent, use the default indent.
.de Tp
.ie \\n(.$=0:((0\\$1)*2u>(\\n(.lu-\\n(.iu)) .TP
.el .TP "\\$1"
..
.
.
.TH EQN2GRAPH @MAN1EXT@ "@MDATE@" "Groff Version @VERSION@"
.IX eqn2graph
.SH NAME
eqn2graph \- convert an EQN equation into a cropped image
.
.
.SH SYNOPSIS
.B eqn2graph
[
.B \-unsafe
]
[
.BI \-format\ fmt
]
.
.
.SH DESCRIPTION
Reads an EQN equation (one line) as input; produces an image
file (by default in Portable Network Graphics format) suitable for the
Web as output.
.P
Your input EQN code should \fInot\fR have the \&.EQ/.EN preamble that
that normally precedes it within
.BR groff (@MAN1EXT@)
macros; nor do you need to have dollar-sign or other delimiters
around the equation.
.P
The output image will be a black-on-white graphic clipped to the
smallest possible bounding box that contains all the black pixels.
By specifying command-line options to be passed to
.BR convert (1)
you can give it a border, set the background transparent, set the
image's pixel density, or perform other useful transformations.
.P
This program uses
.BR @g@eqn (@MAN1EXT@),
.BR groff (@MAN1EXT@),
and the ImageMagick
.BR convert (1)
program.
These programs must be installed on your system and accessible on your
$PATH for \fBeqn2graph\fR to work.
.
.
.SH OPTIONS
.TP
.B \-unsafe
Run
.BR groff (@MAN1EXT@)
in the `unsafe' mode enabling the PIC macro
.B sh
to execute arbitrary commands.
The default is to forbid this.
.TP
.BI \-format\ fmt
Specify an output format; the default is PNG (Portable Network Graphics).
Any format that
.BR convert (1)
can emit is supported.
.PP
Command-line switches and arguments not listed above are passed to
.BR convert (1).
.
.
.SH FILES
.Tp \w'\fB@MACRODIR@/eqnrc'u+2n
.B @MACRODIR@/eqnrc
The
.BR @g@eqn (@MAN1EXT@)
initialization file.
.
.
.SH ENVIRONMENT
.TP
.B GROFF_TMPDIR
The directory in which temporary files will be created.
If this is not set
.B eqn2graph
searches the environment variables
.BR \%TMPDIR ,
.BR TMP ,
and
.B TEMP
(in that order).
Otherwise, temporary files will be created in
.BR /tmp .
.
.
.SH "SEE ALSO"
.BR pic2graph (@MAN1EXT@),
.BR grap2graph (@MAN1EXT@),
.BR @g@eqn (@MAN1EXT@),
.BR groff (@MAN1EXT@),
.BR gs (1),
.BR convert (1).
.
.
.SH AUTHOR
Eric S. Raymond <esr@thyrsus.com>.
.
.\" Local Variables:
.\" mode: nroff
.\" End:

View file

@ -1,91 +0,0 @@
#! /bin/sh
#
# eqn2graph -- compile EQN equation descriptions to bitmap images
#
# by Eric S. Raymond <esr@thyrsus.com>, July 2002
#
# In Unixland, the magic is in knowing what to string together...
#
# Take an eqn equation on stdin, emit cropped bitmap on stdout.
# The pic markup should *not* be wrapped in .EQ/.EN, this script will do that.
# A -U option on the command line enables gpic/groff "unsafe" mode.
# A -format FOO option changes the image output format to any format
# supported by convert(1). All other options are passed to convert(1).
# The default format is PNG.
#
# This is separate from pic2graph because pic processing has some weird
# clipping effect on the output, mangling equations that are very wide
# or deep. Besides, this tool can supply its own delimiters.
#
# Requires the groff suite and the ImageMagick tools. Both are open source.
# This code is released to the public domain.
#
# Here are the assumptions behind the option processing:
#
# 1. None of the options of eqn(1) are relevant.
#
# 2. Only the -U option of groff(1) is relevant.
#
# 3. Many options of convert(1) are potentially relevant, (especially
# -density, -interlace, -transparency, -border, and -comment).
#
# Thus, we pass -U to groff(1), and everything else to convert(1).
#
# $Id: eqn2graph.sh,v 1.5 2005/05/18 07:03:06 wl Exp $
#
groff_opts=""
convert_opts=""
format="png"
while [ "$1" ]
do
case $1 in
-unsafe)
groff_opts="-U";;
-format)
format=$2
shift;;
-v | --version)
echo "GNU eqn2graph (groff) version @VERSION@"
exit 0;;
--help)
echo "usage: eqn2graph [ option ...] < in > out"
exit 0;;
*)
convert_opts="$convert_opts $1";;
esac
shift
done
# create temporary directory
tmp=
for d in "$GROFF_TMPDIR" "$TMPDIR" "$TMP" "$TEMP" /tmp; do
test -z "$d" && continue
tmp=`(umask 077 && mktemp -d -q "$d/eqn2graph-XXXXXX") 2> /dev/null` \
&& test -n "$tmp" && test -d "$tmp" \
&& break
tmp=$d/eqn2graph$$-$RANDOM
(umask 077 && mkdir $tmp) 2> /dev/null && break
done;
if test -z "$tmp"; then
echo "$0: cannot create temporary directory" >&2
{ (exit 1); exit 1; }
fi
trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 2 15
# Here goes:
# 1. Add .EQ/.EN.
# 2. Process through eqn(1) to emit troff markup.
# 3. Process through groff(1) to emit Postscript.
# 4. Use convert(1) to crop the Postscript and turn it into a bitmap.
read equation
(echo ".EQ"; echo 'delim $$'; echo ".EN"; echo '$'"$equation"'$') | \
groff -e $groff_opts -Tps -P-pletter > $tmp/eqn2graph.ps \
&& convert -trim -crop 0x0 $convert_opts $tmp/eqn2graph.ps $tmp/eqn2graph.$format \
&& cat $tmp/eqn2graph.$format
# End

View file

@ -1,63 +0,0 @@
2005-01-16 Mike Bianchi <MBianchi@Foveal.com>
* gdiffmk.sh (Usage): Fix typos.
<top>: Allow `-M<arg1> <arg2>' also.
* gdiffmk.man: Updated.
2005-01-13 Mike Bianchi <MBianchi@Foveal.com>
* gdiffmk.sh: Add the -D, -M, and -B options, which provide actions
akin to nrchbar.
Thanks to Larry Kollar (http://home.alltel.net/kollar/groff/).
* gdiffmk.man: Updated.
* tests/runtests.in: Added tests for gdiffmk's -D, -M, and -B
options.
* tests/baseline8, tests/baseline9, tests/baseline10: New files.
2004-12-16 Mike Bianchi <MBianchi@Foveal.com>
* tests/runtests.in: Fix typo (s/$(srcdir)/${srcdir}/).
2004-12-15 Werner LEMBERG <wl@gnu.org>
The configure script now generates tests/runtests.
* tests/tests.sh: Renamed to...
* tests/runtests.in: This.
Add proper $srcdir prefixes to make it run from build directory.
* README, Makefile.sub (CLEANADD), tests/test_baseline7: Updated.
2004-12-14 Werner LEMBERG <wl@gnu.org>
* gdiffmk.sh: Make sed pattern work with alternate result of GNU
diff's -D option, using `!' instead of `not' in #endif comments.
(Exit): Use prefix for each emitted message line.
2004-12-14 Mike Bianchi <MBianchi@Foveal.com>
* tests/*: New files for testing gdiffmk.
* README, gdiffmk.man, gdiffmk.sh: Updated.
Minor fixes.
2004-12-13 Mike Bianchi <MBianchi@Foveal.com>
Add `-x' command line option to select a diff program.
* gdiffmk.sh: Add code to handle `-x'.
Move test for working `diff' down.
Fix sed pattern -- `.mc *' needs to be followed by `.mc .'.
(Usage): Updated.
* gdiffmk.man: Updated.
2004-12-12 Mike Bianchi <MBianchi@Foveal.com>
* README: New file.
2004-12-11 Mike Bianchi <MBianchi@Foveal.com>
First import of gdiffmk files.

View file

@ -1,47 +0,0 @@
# Makefile.sub for `gdiffmk' (integration into the groff source tree)
# File position: <groff-source>/contrib/gdiffmk/Makefile.sub
# Last update: 12 December 2004
# Copyright (C) 2004 Free Software Foundation, Inc.
# Written by Mike Bianchi <MBianchi@Foveal.com <mailto:MBianchi@Foveal.com>>
# This file is part of the gdiffmk utility, which is part of groff.
# groff 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.
# groff 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 groff; see the files COPYING and LICENSE in the top
# directory of the groff source. If not, write to the Free Software
# Foundation, 51 Franklin St - Fifth Floor, Boston, MA 02110-1301, USA.
########################################################################
MAN1=gdiffmk.n
CLEANADD=gdiffmk tests/runtests
all: gdiffmk
gdiffmk: gdiffmk.sh
rm -f $@; \
sed -e "s|@BINDIR@|$(bindir)|g" \
-e "s|@VERSION@|$(version)$(revision)|g" \
-e $(SH_SCRIPT_SED_CMD) $(srcdir)/gdiffmk.sh >$@; \
chmod +x $@
install_data: gdiffmk
-test -d $(bindir) || $(mkinstalldirs) $(bindir)
-rm -f $(bindir)/gdiffmk
$(INSTALL_SCRIPT) gdiffmk $(bindir)/gdiffmk
uninstall_sub:
-rm -f $(bindir)/gdiffmk

View file

@ -1,46 +0,0 @@
gdiffmk is approximately a recreation of the original Bell Labs/AT&T diffmk
command for troff/nroff documents, with enhancements.
It should not be confused with `diffmk' commands that operate on XML.
The inspiration for this code was a Perl 2 version written in 1989 by Randal
L. Schwartz. See
landfield.com/software/comp.sources.misc/archive-name/volume06/diffmk.p.gz
The command also attempts to reproduce some of the functionality of the old
`nrchbar' command. See
open-systems.ufl.edu/mirrors/ftp.isc.org/usenet/comp.sources.unix/volume10/nrchbar.Z
Thanks to Werner Lemberg for help in making the package more portable and
fit into the GNU groff source structure.
Gnu diff(1) with the -Dname option does all of the work and sed(1)
translates the output into something groff/troff/nroff can handle.
Note the BUGS on the man page.
The `tests' directory contains simple tests. `runtests run' runs them and
compares the output against baseline files. Calling `runtests' without
argument gives the usage.
----------------------------------------------------------------------------
Copyright (C) 2004, 2005 Free Software Foundation, Inc.
Written by Mike Bianchi <MBianchi@Foveal.com <mailto:MBianchi@Foveal.com>>
This file is part of the gdiffmk utility, which is part of groff.
groff 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.
groff 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 groff; see the files COPYING and LICENSE in the top
directory of the groff source. If not, write to the Free Software
Foundation, 51 Franklin St - Fifth Floor, Boston, MA 02110-1301, USA.

View file

@ -1,281 +0,0 @@
.ig \"-*- nroff -*-
Copyright (C) 2004, 2005 Free Software Foundation, Inc.
This file is part of the gdiffmk utility, which is part of groff.
Written by Mike Bianchi <MBianchi@Foveal.com <mailto:MBianchi@Foveal.com>>
Permission is granted to make and distribute verbatim copies of
this manual provided the copyright notice and this permission notice
are preserved on all copies.
Permission is granted to copy and distribute modified versions of this
manual under the conditions for verbatim copying, provided that the
entire resulting derived work is distributed under the terms of a
permission notice identical to this one.
Permission is granted to copy and distribute translations of this
manual into another language, under the above conditions for modified
versions, except that this permission notice may be included in
translations approved by the Free Software Foundation instead of in
the original English.
..
.
.do mso www.tmac
.
.TH GDIFFMK @MAN1EXT@ "@MDATE@" "Groff Version @VERSION@"
.
.
.SH NAME
gdiffmk \- mark differences between groff/nroff/troff files
.
.
.SH SYNOPSIS
.nr a \n(.j
.ad l
.nr i \n(.i
.in +\w'\fBgdiffmk 'u
.ti \niu
.B gdiffmk
.de OP
. ie \\n(.$-1 .RI "[\ \fB\\$1\fP" "\\$2" "\ ]"
. el .RB "[\ " "\\$1" "\ ]"
..
.OP \-a \%addmark
.OP \-c \%changemark
.OP \-d \%deletemark
[\ \c
.B \-D
.OP \-B
.OP \-M "mark1 mark2"
]
.OP \-x \%diffcmd
.OP \-\-
.OP \-\-help
.OP \%\-\-version
.I \%file1
.I \%file2
[\ \c
.IR \%output \ \c
]
.br
.ad \na
.
.
.SH DESCRIPTION
.B gdiffmk
compares two
.BR groff (1),
.BR nroff (1),
or
.BR troff (1)
documents,
.I file1
and
.IR file2 ,
and creates an output which is
.I file2
with added `margin character' (.mc) commands that indicate the differences.
.
.LP
If the
.I output
filename is present,
the output is written there.
If it is
.B \-
or absent the output is written to the standard output.
.
.LP
If the
.I file1
or
.I file2
argument is
.B \-
the standard input is read for that input.
Clearly both cannot be
.BR \- .
.
.LP
Note that the output is not necessarily compatible with all macro packages
and all preprocessors.
See the
.B BUGS
section below.
.
.
.SH OPTIONS
.TP
.BI \-a addmark
Use the
.I addmark
for source lines not in
.I file1
but present in
.IR file2 .
Default:
.BR + .
.
.TP
.B \-B
By default, the deleted texts marked by the
.B \-D
option end
with an added troff break command,
.BR .br ,
to ensure that the deletions are marked properly.
This is the only way to guarantee that deletions and small
changes get flagged.
This option directs the program not to insert these breaks; it makes no
sense to use it without
.BR \-D .
.
.TP
.BI \-c changemark
Use the
.I changemark
for changed source lines.
Default:
.BR | .
.
.TP
.BI \-d deletemark
Use the
.I deletemark
for deleted source lines.
Default:
.BR * .
.
.TP
.B \-D
Show the deleted portions from changed and deleted text.
Default delimiting marks:
.BR "[[" " .\&.\&.\&. " "]]" .
.
.TP
.BI \-M "mark1 mark2"
Change the delimiting marks for the
.B \-D
option.
It makes no sense to use this option without
.BR \-D .
.
.TP
.BI \-x diffcmd
Use the
.I diffcmd
command to perform the comparison of
.I file1
and
.IR file2 .
In particular,
.I diffcmd
should accept the GNU
.B diff
.BI \-D name
option.
Default:
.BR diff (1).
.
.TP
.B \-\-
All the following arguments are treated as file names,
even if they begin with
.BR \- .
.
.TP
.B \-\-help
Print a usage message on standard error output and exit.
.
.TP
.B \-\-version
Print version information on the standard output and exit.
.
.
.SH BUGS
The output is not necessarily compatible with all macro packages
and all preprocessors.
A workaround that is often successful against preprocessor problems
is to run
.B gdiffmk
on the output of all the preprocessors instead of the input source.
.
.LP
.B gdiffmk
relies on the
.BI \-D name
option of GNU
.BR diff (1)
to make a merged `#ifdef' output format.
It hasn't been tested whether other versions of
.BR diff (1)
do support this option.
See also the
.BI \-x diffcmd
option.
.
.LP
Report bugs to bug-groff@gnu.org.
Include a complete, self-contained example that will allow the bug to
be reproduced, and say which version of
.B gdiffmk
you are using.
.
.
.SH AUTHORS
This document was written and is maintained by
.MTO MBianchi@Foveal.com "Mike Bianchi" .
.
.LP
This document is distributed under the terms of the FDL (GNU Free
Documentation License) version 1.1 or later.
You should have received a copy of the FDL on your system, it is also
available on-line at the
.URL http://\:www.gnu.org/\:copyleft/\:fdl.html "GNU copyleft site" .
.
.LP
.B gdiffmk
is part of the
.I groff
GNU free software project.
All parts of the
.I groff package
are protected by GNU copyleft licenses.
The software files are distributed under the terms of the GNU General
Public License (GPL), while the documentation files mostly use the GNU
Free Documentation License (FDL).
.
.
.SH COPYRIGHT
Copyright \(co 2004, 2005 Free Software Foundation, Inc.
.
.LP
.B gdiffmk
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.
.
.LP
.B gdiffmk
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.
.
.LP
You should have received a copy of the GNU General Public License along
with groff; see the file COPYING.
If not, write to the Free Software
Foundation, 51 Franklin St - Fifth Floor, Boston, MA 02110-1301, USA.
.
.
.SH "SEE ALSO"
.BR groff (@MAN1EXT@),
.BR nroff (@MAN1EXT@),
.BR gtroff (@MAN1EXT@),
.BR diff (@MAN1EXT@)
.
.\" Local Variables:
.\" mode: nroff
.\" End:

View file

@ -1,346 +0,0 @@
#! /bin/sh
# Copyright (C) 2004, 2005 Free Software Foundation, Inc.
# Written by Mike Bianchi <MBianchi@Foveal.com <mailto:MBianchi@Foveal.com>>
# This file is part of the gdiffmk utility, which is part of groff.
# groff 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.
# groff 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 groff; see the files COPYING and LICENSE in the top
# directory of the groff source. If not, write to the Free Software
# Foundation, 51 Franklin St - Fifth Floor, Boston, MA 02110-1301, USA.
# This file is part of GNU gdiffmk.
cmd=$( basename $0 )
function Usage {
if test "$#" -gt 0
then
echo >&2 "${cmd}: $@"
fi
echo >&2 "\
Usage: ${cmd} [ OPTIONS ] FILE1 FILE2 [ OUTPUT ]
Place difference marks into the new version of a groff/nroff/troff document.
FILE1 and FILE2 are compared, using \`diff', and FILE2 is output with
groff \`.mc' requests added to indicate how it is different from FILE1.
FILE1 Previous version of the groff file. \`-' means standard input.
FILE2 Current version of the groff file. \`-' means standard input.
Either FILE1 or FILE2 can be standard input, but not both.
OUTPUT Copy of FILE2 with \`.mc' commands added.
\`-' means standard output (the default).
OPTIONS:
-a ADDMARK Mark for added groff source lines. Default: \`+'.
-c CHANGEMARK Mark for changed groff source lines. Default: \`|'.
-d DELETEMARK Mark for deleted groff source lines. Default: \`*'.
-D Show the deleted portions from changed and deleted text.
Default delimiting marks: \`[[' .... \`]]'.
-B By default, the deleted texts marked by the \`-D' option end
with an added troff \`.br' command. This option prevents
the added \`.br'.
-M MARK1 MARK2 Change the delimiting marks for the \`-D' option.
-x DIFFCMD Use a different diff(1) command;
one that accepts the \`-Dname' option, such as GNU diff.
--version Print version information on the standard output and exit.
--help Print this message on the standard error.
"
exit 255
}
function Exit {
exitcode=$1
shift
for arg
do
echo >&2 "${cmd}: $1"
shift
done
exit ${exitcode}
}
# Usage: FileRead exit_code filename
#
# Check for existence and readability of given file name.
# If not found or not readable, print message and exit with EXIT_CODE.
function FileRead {
case "$2" in
-)
return
;;
esac
if test ! -e "$2"
then
Exit $1 "File \`$2' not found."
fi
if test ! -r "$2"
then
Exit $1 "File \`$2' not readable."
fi
}
# Usage: FileCreate exit_code filename
#
# Create the given filename if it doesn't exist.
# If unable to create or write, print message and exit with EXIT_CODE.
function FileCreate {
case "$2" in
-)
return
;;
esac
if ! touch "$2" 2>/dev/null
then
if test ! -e "$2"
then
Exit $1 "File \`$2' not created; " \
"Cannot write directory \`$( dirname "$2" )'."
fi
Exit $1 "File \`$2' not writeable."
fi
}
function WouldClobber {
case "$2" in
-)
return
;;
esac
if test "$1" -ef "$3"
then
Exit 3 \
"The $2 and OUTPUT arguments both point to the same file," \
"\`$1', and it would be overwritten."
fi
}
ADDMARK='+'
CHANGEMARK='|'
DELETEMARK='*'
MARK1='[['
MARK2=']]'
function RequiresArgument {
# Process flags that take either concatenated or
# separated values.
case "$1" in
-??*)
expr "$1" : '-.\(.*\)'
return 1
;;
esac
if test "$#" -lt 2
then
Exit 255 "Option \`$1' requires a value."
fi
echo "$2"
return 0
}
badoption=
DIFFCMD=diff
D_option=
br=.br
for OPTION
do
case "${OPTION}" in
-a*)
ADDMARK=$( RequiresArgument "${OPTION}" $2 ) &&
shift
;;
-c*)
CHANGEMARK=$( RequiresArgument "${OPTION}" $2 ) &&
shift
;;
-d*)
DELETEMARK=$( RequiresArgument "${OPTION}" $2 ) &&
shift
;;
-D )
D_option=D_option
;;
-M* )
MARK1=$( RequiresArgument "${OPTION}" $2 ) &&
shift
if [ $# -lt 2 ]
then
Usage "Option \`-M' is missing the MARK2 value."
fi
MARK2=$2
shift
;;
-B )
br=.
;;
-x* )
DIFFCMD=$( RequiresArgument "${OPTION}" $2 ) &&
shift
;;
--version)
echo "GNU ${cmd} (groff) version @VERSION@"
exit 0
;;
--help)
Usage
;;
--)
# What follows -- are file arguments
shift
break
;;
-)
break
;;
-*)
badoption="${cmd}: invalid option \`$1'"
;;
*)
break
;;
esac
shift
done
${DIFFCMD} -Dx /dev/null /dev/null >/dev/null 2>&1 ||
Usage "The \`${DIFFCMD}' program does not accept" \
"the required \`-Dname' option.
Use GNU diff instead. See the \`-x DIFFCMD' option."
if test -n "${badoption}"
then
Usage "${badoption}"
fi
if test "$#" -lt 2 -o "$#" -gt 3
then
Usage "Incorrect number of arguments."
fi
if test "1$1" = 1- -a "2$2" = 2-
then
Usage "Both FILE1 and FILE2 are \`-'."
fi
FILE1=$1
FILE2=$2
FileRead 1 "${FILE1}"
FileRead 2 "${FILE2}"
if test "$#" = 3
then
case "$3" in
-)
# output goes to standard output
;;
*)
# output goes to a file
WouldClobber "${FILE1}" FILE1 "$3"
WouldClobber "${FILE2}" FILE2 "$3"
FileCreate 3 "$3"
exec >$3
;;
esac
fi
# To make a very unlikely label even more unlikely ...
label=__diffmk_$$__
sed_script='
/^#ifdef '"${label}"'/,/^#endif \/\* '"${label}"'/ {
/^#ifdef '"${label}"'/ s/.*/.mc '"${ADDMARK}"'/
/^#endif \/\* '"${label}"'/ s/.*/.mc/
p
d
}
/^#ifndef '"${label}"'/,/^#endif \/\* [!not ]*'"${label}"'/ {
/^#else \/\* '"${label}"'/,/^#endif \/\* '"${label}"'/ {
/^#else \/\* '"${label}"'/ s/.*/.mc '"${CHANGEMARK}"'/
/^#endif \/\* '"${label}"'/ s/.*/.mc/
p
d
}
/^#endif \/\* \(not\|!\) '"${label}"'/ {
s/.*/.mc '"${DELETEMARK}"'/p
a\
.mc
}
d
}
p
'
if [ ${D_option} ]
then
sed_script='
/^#ifdef '"${label}"'/,/^#endif \/\* '"${label}"'/ {
/^#ifdef '"${label}"'/ s/.*/.mc '"${ADDMARK}"'/
/^#endif \/\* '"${label}"'/ s/.*/.mc/
p
d
}
/^#ifndef '"${label}"'/,/^#endif \/\* [!not ]*'"${label}"'/ {
/^#ifndef '"${label}"'/ {
i\
'"${MARK1}"'
d
}
/^#else \/\* '"${label}"'/ ! {
/^#endif \/\* [!not ]*'"${label}"'/ ! {
p
d
}
}
/^#else \/\* '"${label}"'/,/^#endif \/\* '"${label}"'/ {
/^#else \/\* '"${label}"'/ {
i\
'"${MARK2}"'\
'"${br}"'
s/.*/.mc '"${CHANGEMARK}"'/
a\
.mc '"${CHANGEMARK}"'
d
}
/^#endif \/\* '"${label}"'/ s/.*/.mc/
p
d
}
/^#endif \/\* \(not\|!\) '"${label}"'/ {
i\
'"${MARK2}"'\
'"${br}"'
s/.*/.mc '"${DELETEMARK}"'/p
a\
.mc
}
d
}
p
'
fi
diff -D"${label}" -- ${FILE1} ${FILE2} |
sed -n "${sed_script}"
# EOF

View file

@ -1,11 +0,0 @@
.ll 25
.pl 20
.nf
file1 and file2 #1
file1 only
file1 and file2 #2
file1 and file2 #3
file1 only
file1 only
file1 and file2 #4
file1 and file2 #5

View file

@ -1,11 +0,0 @@
.ll 25
.pl 20
.nf
file1 and file2 #1
file2 only
file2 only
file1 and file2 #2
file2 only
file1 and file2 #3
file1 and file2 #4
file1 and file2 #5

View file

@ -1,98 +0,0 @@
#! /bin/sh
# A very simple function test for gdiffmk.sh.
srcdir=@srcdir@
command=../gdiffmk
# Test the number of arguments and the first argument.
case $#-$1 in
1-clean )
rm -fv test_result* tmp_file*
exit 0
;;
1-run )
;;
* )
echo >&2 "$0 [ clean | run ]
Run a few simple tests on \`${command}'."'
clean Remove the test_result? and tmp_file? files.
run Run the tests.
'
exit 255
;;
esac
function TestResult {
if cmp -s $1 $2
then
echo $2 PASSED
else
echo ''
echo $2 TEST FAILED
diff $1 $2
echo ''
fi
}
tmpfile=/tmp/$$
trap 'rm -f ${tmpfile}' 0 1 2 3 15
# Run tests.
# 3 file arguments
ResultFile=test_result1
${command} ${srcdir}/file1 ${srcdir}/file2 ${ResultFile} 2>${tmpfile}
cat ${tmpfile} >>${ResultFile}
TestResult ${srcdir}/test_baseline ${ResultFile}
# OUTPUT to stdout by default
ResultFile=test_result2
${command} ${srcdir}/file1 ${srcdir}/file2 >${ResultFile} 2>&1
TestResult ${srcdir}/test_baseline ${ResultFile}
# OUTPUT to stdout via - argument
ResultFile=test_result3
${command} ${srcdir}/file1 ${srcdir}/file2 - >${ResultFile} 2>&1
TestResult ${srcdir}/test_baseline ${ResultFile}
# FILE1 from standard input via - argument
ResultFile=test_result4
${command} - ${srcdir}/file2 <${srcdir}/file1 >${ResultFile} 2>&1
TestResult ${srcdir}/test_baseline ${ResultFile}
# FILE2 from standard input via - argument
ResultFile=test_result5
${command} ${srcdir}/file1 - <${srcdir}/file2 >${ResultFile} 2>&1
TestResult ${srcdir}/test_baseline ${ResultFile}
# Different values for addmark, changemark, deletemark
ResultFile=test_result6
${command} -aA -cC -dD ${srcdir}/file1 ${srcdir}/file2 >${ResultFile} 2>&1
TestResult ${srcdir}/test_baseline6 ${ResultFile}
# Test for accidental file overwrite.
ResultFile=test_result7
cp ${srcdir}/file2 tmp_file7
${command} -aA -dD -cC ${srcdir}/file1 tmp_file7 tmp_file7 \
>${ResultFile} 2>&1
TestResult ${srcdir}/test_baseline7 ${ResultFile}
# Test -D option
ResultFile=test_result8
${command} -D ${srcdir}/file1 ${srcdir}/file2 >${ResultFile} 2>&1
TestResult ${srcdir}/test_baseline8 ${ResultFile}
# Test -D and -M options
ResultFile=test_result9
${command} -D -M '<<<<' '>>>>' \
${srcdir}/file1 ${srcdir}/file2 >${ResultFile} 2>&1
TestResult ${srcdir}/test_baseline9 ${ResultFile}
# Test -D and -B options
ResultFile=test_result10
${command} -D -B ${srcdir}/file1 ${srcdir}/file2 >${ResultFile} 2>&1
TestResult ${srcdir}/test_baseline10 ${ResultFile}
# EOF

View file

@ -1,17 +0,0 @@
.ll 25
.pl 20
.nf
file1 and file2 #1
.mc |
file2 only
file2 only
.mc
file1 and file2 #2
.mc +
file2 only
.mc
file1 and file2 #3
.mc *
.mc
file1 and file2 #4
file1 and file2 #5

View file

@ -1,26 +0,0 @@
.ll 25
.pl 20
.nf
file1 and file2 #1
[[
file1 only
]]
.
.mc |
file2 only
file2 only
.mc
file1 and file2 #2
.mc +
file2 only
.mc
file1 and file2 #3
[[
file1 only
file1 only
]]
.
.mc *
.mc
file1 and file2 #4
file1 and file2 #5

View file

@ -1,17 +0,0 @@
.ll 25
.pl 20
.nf
file1 and file2 #1
.mc C
file2 only
file2 only
.mc
file1 and file2 #2
.mc A
file2 only
.mc
file1 and file2 #3
.mc D
.mc
file1 and file2 #4
file1 and file2 #5

View file

@ -1,2 +0,0 @@
gdiffmk: The FILE2 and OUTPUT arguments both point to the same file,
gdiffmk: `tmp_file7', and it would be overwritten.

View file

@ -1,26 +0,0 @@
.ll 25
.pl 20
.nf
file1 and file2 #1
[[
file1 only
]]
.br
.mc |
file2 only
file2 only
.mc
file1 and file2 #2
.mc +
file2 only
.mc
file1 and file2 #3
[[
file1 only
file1 only
]]
.br
.mc *
.mc
file1 and file2 #4
file1 and file2 #5

View file

@ -1,26 +0,0 @@
.ll 25
.pl 20
.nf
file1 and file2 #1
<<<<
file1 only
>>>>
.br
.mc |
file2 only
file2 only
.mc
file1 and file2 #2
.mc +
file2 only
.mc
file1 and file2 #3
<<<<
file1 only
file1 only
>>>>
.br
.mc *
.mc
file1 and file2 #4
file1 and file2 #5

View file

@ -1,19 +0,0 @@
MAN1=grap2graph.n
CLEANADD=grap2graph
all: grap2graph
grap2graph: grap2graph.sh
rm -f $@; \
sed -e "s|@g@|$(g)|g" \
-e "s|@VERSION@|$(version)$(revision)|" \
-e $(SH_SCRIPT_SED_CMD) $(srcdir)/grap2graph.sh >$@; \
chmod +x $@
install_data: grap2graph
-test -d $(bindir) || $(mkinstalldirs) $(bindir)
-rm -f $(bindir)/grap2graph
$(INSTALL_SCRIPT) grap2graph $(bindir)/grap2graph
uninstall_sub:
-rm -f $(bindir)/grap2graph

View file

@ -1,105 +0,0 @@
.\" $Id: grap2graph.man,v 1.3 2003/10/28 07:46:23 wlemb Exp $
.\" This documentation is released to the public domain.
.
.
.TH GRAP2GRAPH @MAN1EXT@ "@MDATE@" "Groff Version @VERSION@"
.IX grap2graph
.SH NAME
grap2graph \- convert a grap diagram into a cropped bitmap image
.
.
.SH SYNOPSIS
.B grap2graph
[
.B \-unsafe
]
[
.BI \-resolution\ M\fR|\fPMxN
]
[
.BI \-format\ fmt
]
.
.
.SH DESCRIPTION
Reads a grap program as input; produces an image file (by default in
Portable Network Graphics format) suitable for the Web as output.
For a description of the grap language, see
.BR grap (1).
.P
Your graph specification should \fInot\fR be wrapped with the \&.G1 and
\&.G2 macros that normally guard it within
.BR groff (@MAN1EXT@)
macros.
.P
The output image will be a black-on-white graphic clipped to the
smallest possible bounding box that contains all the black pixels.
By specifying command-line options to be passed to
.BR convert (1)
you can give it a border, set the background transparent, set the
image's pixel density, or perform other useful transformations.
.P
This program uses
.BR grap (1),
.BR @g@pic (@MAN1EXT@),
.BR groff (@MAN1EXT@),
and the ImageMagick
.BR convert (1)
program.
These programs must be installed on your system and accessible on your
$PATH for \fBgrap2graph\fR to work.
.
.
.SH OPTIONS
.TP
.B \-unsafe
Run
.BR @g@pic (@MAN1EXT@)
and
.BR groff (@MAN1EXT@)
in the `unsafe' mode enabling the PIC macro
.B sh
to execute arbitrary commands.
The default is to forbid this.
.TP
.BI \-format\ fmt
Specify an output format; the default is PNG (Portable Network Graphics).
Any format that
.BR convert (1)
can emit is supported.
.PP
Command-line switches and arguments not listed above are passed to
.BR convert (1).
.
.
.SH ENVIRONMENT
.TP
.B GROFF_TMPDIR
The directory in which temporary files will be created.
If this is not set
.B grap2graph
searches the environment variables
.BR \%TMPDIR ,
.BR TMP ,
and
.B TEMP
(in that order).
Otherwise, temporary files will be created in
.BR /tmp .
.
.
.SH "SEE ALSO"
.BR pic2graph (@MAN1EXT@),
.BR eqn2graph (@MAN1EXT@),
.BR @g@pic (@MAN1EXT@),
.BR groff (@MAN1EXT@),
.BR gs (1),
.BR convert (1).
.
.
.SH AUTHOR
Eric S. Raymond <esr@thyrsus.com>
.
.\" Local Variables:
.\" mode: nroff
.\" End:

View file

@ -1,85 +0,0 @@
#! /bin/sh
#
# grap2graph -- compile graph description descriptions to bitmap images
#
# by Eric S. Raymond <esr@thyrsus.com>, May 2003
#
# In Unixland, the magic is in knowing what to string together...
#
# Take grap description on stdin, emit cropped bitmap on stdout.
# The pic markup should *not* be wrapped in .G1/.G2, this script will do that.
# A -U option on the command line enables gpic/groff "unsafe" mode.
# A -format FOO option changes the image output format to any format
# supported by convert(1). All other options are passed to convert(1).
# The default format is PNG.
#
# Requires the groff suite and the ImageMagick tools. Both are open source.
# This code is released to the public domain.
#
# Here are the assumptions behind the option processing:
#
# 1. None of the options of grap(1) are relevant.
#
# 2. Only the -U option of groff(1) is relevant.
#
# 3. Many options of convert(1) are potentially relevant, (especially
# -density, -interlace, -transparency, -border, and -comment).
#
# Thus, we pass -U to groff(1), and everything else to convert(1).
#
# $Id: grap2graph.sh,v 1.4 2005/05/18 07:03:06 wl Exp $
#
groff_opts=""
convert_opts=""
format="png"
while [ "$1" ]
do
case $1 in
-unsafe)
groff_opts="-U";;
-format)
format=$2
shift;;
-v | --version)
echo "GNU grap2graph (groff) version @VERSION@"
exit 0;;
--help)
echo "usage: grap2graph [ option ...] < in > out"
exit 0;;
*)
convert_opts="$convert_opts $1";;
esac
shift
done
# create temporary directory
tmp=
for d in "$GROFF_TMPDIR" "$TMPDIR" "$TMP" "$TEMP" /tmp; do
test -z "$d" && continue
tmp=`(umask 077 && mktemp -d -q "$d/grap2graph-XXXXXX") 2> /dev/null` \
&& test -n "$tmp" && test -d "$tmp" \
&& break
tmp=$d/grap2graph$$-$RANDOM
(umask 077 && mkdir $tmp) 2> /dev/null && break
done;
if test -z "$tmp"; then
echo "$0: cannot create temporary directory" >&2
{ (exit 1); exit 1; }
fi
trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 2 15
# Here goes:
# 1. Add .G1/.G2.
# 2. Process through grap(1) to emit pic markup.
# 3. Process through groff(1) with pic preprocessing to emit Postscript.
# 4. Use convert(1) to crop the Postscript and turn it into a bitmap.
(echo ".G1"; cat; echo ".G2") | grap | groff -p $groff_opts -Tps -P-pletter | \
convert -trim -crop 0x0 $convert_opts - $tmp/grap2graph.$format \
&& cat $tmp/grap2graph.$format
# End

File diff suppressed because it is too large Load diff

View file

@ -1,60 +0,0 @@
# Makefile.sub for `groffer' (integration into the `groff' source tree)
# File position: <groff-source>/contrib/groffer/Makefile.sub
# Copyright (C) 2001,2002,2005 Free Software Foundation, Inc.
# Written by Werner Lemberg <wl@gnu.org> and Bernd Warken.
# Last update: 15 August 2005
# This file is part of `groffer' which is part of `groff'.
# `groff' 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.
# `groff' 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 `groff'; see the files COPYING and LICENSE in the top
# directory of the `groff' source. If not, write to the Free Software
# Foundation, 51 Franklin St - Fifth Floor, Boston, MA 02110-1301, USA.
########################################################################
MAN1=groffer.n
CLEANADD=groffer
# not all make programs have $(RM) predefined.
RM=rm -f
all: groffer
groffer: groffer.sh groffer2.sh $(SH_DEPS_SED_SCRIPT)
$(RM) $@;
sed -f $(SH_DEPS_SED_SCRIPT) \
-e "s|@g@|$(g)|g" \
-e "s|@BINDIR@|$(bindir)|g" \
-e "s|@libdir@|$(libdir)|g" \
-e "s|@VERSION@|$(version)$(revision)|g" \
-e $(SH_SCRIPT_SED_CMD) $(srcdir)/groffer.sh >$@;
chmod +x $@
install_data: groffer
-test -d $(bindir) || $(mkinstalldirs) $(bindir)
-$(RM) $(bindir)/groffer
$(INSTALL_SCRIPT) groffer $(bindir)/groffer
-test -d $(libdir)/groff/groffer || \
$(mkinstalldirs) $(libdir)/groff/groffer
-$(RM) $(libdir)/groff/groffer/groffer2.sh
$(INSTALL_SCRIPT) $(srcdir)/groffer2.sh \
$(libdir)/groff/groffer/groffer2.sh
uninstall_sub:
-$(RM) $(bindir)/groffer
-$(RM) $(libdir)/groff/groffer/groffer2.sh
-rmdir $(libdir)/groff/groffer

View file

@ -1,104 +0,0 @@
README
The `groffer' program is the easiest way to read documents written in
some `roff' language, such as the `man pages', the manual pages in
many operating systems.
Input
Input comes from either standard input or command line parameters that
represent names of exisiting roff files or standardized specifications
for searching man pages. All of these can be compressed in a format
that is decompressible by `gzip', including `.gz', `bz2', and `.Z'.
`groffer' has many built-in `man' functionalities to find and read the
manual pages on UNIX and similar operating systems. It accepts the
information from an installed `man' program, but tries to find a man
path by itself.
`groffer' bundles all filespec parameters into a single output file in
the same way as `groff'. The disadvantage of this is that all file
name arguments must use the same groff language. To change this, the
option parsing must be revised for large parts. It seems that this
would create incompatibilities, so the actual option strategy is kept.
Output
All input is first sent to `grog' to determine the necessary `groff'
options and then to `groff'. So no special `groff' arguments must be
given. But all `groff' options can be specified when this seems to be
appropriate.
The following displaying modes for the output are available:
- Display formatted input with
-- the X `roff' viewer `gxditview',
-- a Postcript viewer,
-- a PDF viewer,
-- a DVI viewer,
-- a web browser,
-- a pager in a text terminal (tty).
- Generate `groff' output on stdout without a viewer.
- Generate the `groff intermediate output' on standard output without
postprocessing.
- Output the source code without any `groff' processing.
- There are some information outputs without `groff' processing, such
as by option `-V' and the `man' like `whatis' and `apropos'
outputs.
By default, the program tries to display with `gxditview' as graphical
device in X; on non-X text terminals, the `tty' text mode with a pager
is tried by default.
Compatibility
`groffer' consists of two shell scripts. It should run on any POSIX
or Bourne style shell that supports shell functions. See file
`README_SH' for more information.
Mailing lists
For reporting bugs of `groffer', groff's free mailing list
<bug-groff@gnu.org> can be used.
For a general discussion, the mailing list <groff@gnu.org> is more
useful, but one has to subscribe to this list at
http://lists.gnu.org/mailman/listinfo/groff.
See the `README' file in the top directory of the `groff' source
package for more details on these mailing lists.
####### License
Last update: 2 August 2005
Copyright (C) 2003,2004,2005 Free Software Foundation, Inc.
Written by Bernd Warken
This file is part of `groffer', which is part of `groff'.
`groff' 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.
`groff' 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 `groff'; see the files COPYING and LICENSE in the top
directory of the `groff' source. If not, write to the Free Software
Foundation, 51 Franklin St - Fifth Floor, Boston, MA 02110-1301, USA.
####### Emacs settings
Local Variables:
mode: text
End:

View file

@ -1,268 +0,0 @@
Additional description for the shell version of `groffer'
Scripts
The shell version of `groffer' contains two files, `groffer.sh' and
`groffer2.sh'.
`groffer.sh' is a short introductory script without any functions. I
can be run with a very poor Bourne shell. It just contains some basic
variables, the reading of the configuration files, and the
determination of the shell for `groffer2.sh'. This script is
transformed by `make' into `groffer' which will be installed into
@bindir@, which is usually /usr/local/bin.
`groffer2.sh' is a long main script with all functions; it is called
by `groffer.sh' (`groffer' after installation). It is installed
unchanged into @libdir@/groff/groffer, which is usually
/usr/local/lib/groff/groffer. This script can be called with a
different shell, using the `groffer' option `--shell'.
Options
The `groffer' script provides its own option parser. It is compatible
to the usual GNU style command line This includes long option names
with two signs such as `--option', clusters of short options, the
mixing of options and non-option file names, the option `--' to close
the option handling, and it is possible to abbreviate the long option
names.
The flexible mixing of options and file names in GNU style is always
possible, even if the environment variable `$POSIXLY_CORRECT' is set
to a non-empty value. This disables the rather wicked POSIX behavior
to terminate option parsing when the first non-option command line
argument is found.
Error Handling
Error handling and exit behavior is complicated by the fact that
`exit' can only escape from the current shell; trouble occurs in
subshells. This was solved by sending kill signals, see $_PROCESS_ID
and error().
Function Definitions in `groffer2.sh'
Each funtion in groffer2.sh has a description that starts with the
function name and symbols for its arguments in paranthesis `()'. Each
`<>' construction gives an argument name that just gives a hint on
what the argument is meant to be; these argument names are otherwise
irrelevant. The `>' sign can be followed by another character that
shows how many of these arguments are possible.
<arg> exactly 1 of this argument
<arg>? 0 or 1 of these arguments
<arg>* arbitrarily many such arguments, incl. none
<arg>+ one or more such arguments
<arg>... one or more such arguments
[...] optional arguments
A function that starts with an underscore `_' is an internal function
for some other function. The internal functions are defined just
after their corresponding function.
External Environment Variables
The groffer.sh script uses the following external system variables.
It is supposed that these variables are already exported outside of
groffer.sh; otherwise they do not have a value within the script.
external system environment variables that are explicitly used
$DISPLAY: Presets the X display.
$LANG: For language specific man pages.
$LC_ALL: For language specific man pages.
$LC_MESSAGES: For language specific man pages.
$PAGER: Paging program for tty mode.
$PATH: Path for the programs called (`:' separated list).
groffer native environment variables
$GROFFER_OPT preset options for groffer.
all groff environment variables are used, see groff(1)
$GROFF_BIN_PATH: Path for all groff programs.
$GROFF_COMMAND_PREFIX: '' (normally) or 'g' (several troffs).
$GROFF_FONT_PATH: Path to non-default groff fonts.
$GROFF_TMAC_PATH: Path to non-default groff macro files.
$GROFF_TMPDIR: Directory for groff temporary files.
$GROFF_TYPESETTER: Preset default device.
all GNU man environment variables are used, see man(1).
$MANOPT: Preset options for man pages.
$MANPATH: Search path for man pages (: list).
$MANROFFSEQ: Ignored because of grog guessing.
$MANSECT: Search man pages only in sections (:).
$SYSTEM: Man pages for different OS's (, list).
Object-oriented Functions
The groffer script provides an object-oriented construction (OOP). In
object-oriented terminology, a type of object is called a `class'; a
function that handles objects from a class is named `method'.
In the groffer script, the object is a variable name whose content is
the object's data. Methods are functions that have an object as first
argument.
The basic functions for object handling are obj_*().
The class `list' represents an array structure, see list_*().
Shell Compatibility
The `groffer' shell scripts are compatible to both the GNU and the
POSIX shell and utilities. Care was taken to restrict the programming
technics used here in order to achieve POSIX compatibility as far back
as POSIX P1003.2 Draft 11.2 of September 1991. This draft is
available at http://www.funet.fi/pub/doc/posix/p1003.2/d11.2 in the
internet.
The POSIX draft does not include `local' variables for functions. So
this concept was replaced by global variables with a prefix that
differs for each function. The prefix is chosen from the function
name. These quasi-local variables are unset before each return of the
function.
The `groffer' scripts were tested under the shells `ash', `bash',
`bash-minimal', `dash', 'ksh', `mksh', `pdksh', 'posh', and `zsh'
without problems in Linux Debian. A shell can be tested by the
`groffer' option `--shell', but that will run only with groffer2.sh.
To start it directly from the beginning under this shell the following
command can be used.
<shell-name> groffer.sh --shell=<shell-name> <argument>...
Some shells are not fully POSIX compatible. For them the following
restrictions were done. For more information look at the
documentation `Portable shells' in the `info' page of `autoconf'
(look-up in Emacs-Help-Manuals_Info).
- The command parts `then', `else', and `do' must be written each on a
line of their own.
- Replace `for i in "$@"' by `for i' and remove internal `;' (kah).
- Replace `set -- ...' by `set x ...; shift'. After the first
non-option argument, all arguments including those starting with `-'
are accepted as non-option. For variables or `$()' constructs with
line-breaks, use `eval set' without quotes. That transforms a
line-break within a variable to a space.
- The name of the variable in `for' is chosen as a single character
(old ash). The content of such variables is not safe because it can
also occur in other functions. So it is often stored in an
additional quasi-local variable.
- `echo' is not portable on options; some `echo' commands have many
options, others have none. So `echo -n' cannot be used, such that
the output of each function has complete lines. There are two
methods to avoid having `-' as the first character of any argument.
Either a character such as `x' can be prepended to the argument;
this must later on be removed by `sed'. Otherwise, `echo' can be
replaced by `cat <<EOF'.
- `ls' has problems. Old UNIX systems echoed the error message to
standard output. So handle the output with `sed'. If the output
contains `not found' map it to an empty string.
- As `test -e' is not available in Solaris 2.5 replace it by
`test -f || test -d'.
- As `unset' is not supported by all shells replace it by `eval
${_UNSET}' where this variable is `unset' if it exists and `:'
otherwise.
- Some shells have problems with options in `eval'. So quoting must
be done right to hide the options from `eval'.
- In backquote calls `` avoid the backquote ` in comments.
- Replace `true' by `:', `false' isn't used.
- Do not redefine builtins as functions (ash).
- Avoid `[^...]' in `case' patterns (ash).
- `trap' does not allow error code 127.
The scripts call the following commands with all options used:
.
:
apropos
break
bzip2 -c -d -t
cat
catz
cd
continue
echo
eval
expr
grep
groff -v
grog -T -X -Z
gs -c -d -f -q -s
gzip -c -d -f
less -r -R
ls
man -k --apropos
mkdir
mv
pwd
return
rm -f -r
rmdir
sed -e -n
set -e
sh -c
shift
test -c -d -f -r -s -w -x
trap
umask
unset
Bugs
If the `groffer' run is interrupted by Crtl-C the clean up is not done
by all shells. The `trap' commands work for the shells `bash',
`bash-minimal', and 'ksh'; they do not work for `ash', `dash',
`pdksh', `posh', and `zsh'.
####### License
Last update: 19 August 2005
Copyright (C) 2003,2004,2005 Free Software Foundation, Inc.
Written by Bernd Warken
This file is part of `groffer', which is part of `groff'.
`groff' 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.
`groff' 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 `groff'; see the files COPYING and LICENSE in the top
directory of the `groff' source. If not, write to the Free Software
Foundation, 51 Franklin St - Fifth Floor, Boston, MA 02110-1301, USA.
####### Emacs settings
Local Variables:
mode: text
End:

View file

@ -1,58 +0,0 @@
TODO file for `groffer'
File position: <groff-source>/contrib/groffer/TODO
####### TODO
Revision:
Optimization:
- Optimize `man' path determination in manpath_add_lang_sys() for speed
by building-up the `man' path only by and by as far as necessary
(not trivial).
- To increase the running speed write part of the `groffer' shell
script in C/C++.
Features of external programs:
- Revise option handling of `grog'.
Documentation:
- Improve the documentation of the search algorithm for `man' pages in
both the `groffer' scripts and the `man' page `groffer.man'.
- In `groffer.man', add more documentation for parts that were taken
over from GNU `man'.
- The documentation in the headers for some function definitions in
`groffer2.sh' needs to be updated.
####### License
Last update: 16 August 2005
Copyright (C) 2003,2004,2005 Free Software Foundation, Inc.
Written by Bernd Warken
This file is part of `groffer', which is part of `groff'.
`groff' 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.
`groff' 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 `groff'; see the files COPYING and LICENSE in the top
directory of the `groff' source. If not, write to the Free Software
Foundation, 51 Franklin St - Fifth Floor, Boston, MA 02110-1301, USA.
####### Emacs settings
Local Variables:
mode: text
End:

File diff suppressed because it is too large Load diff

View file

@ -1,299 +0,0 @@
#! /bin/sh
# groffer - display groff files
# Source file position: <groff-source>/contrib/groffer/groffer.sh
# Copyright (C) 2001,2002,2003,2004,2005
# Free Software Foundation, Inc.
# Written by Bernd Warken
# This file is part of `groffer', which is part of `groff' version
# @VERSION@. See $_GROFF_VERSION.
# `groff' 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.
# `groff' 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 `groff'; see the files COPYING and LICENSE in the top
# directory of the `groff' source. If not, write to the Free Software
# Foundation, 51 Franklin St - Fifth Floor, Boston, MA 02110-1301,
# USA.
########################################################################
_PROGRAM_VERSION='0.9.22';
_LAST_UPDATE='22 August 2005';
export _PROGRAM_VERSION;
export _LAST_UPDATE;
export GROFFER_OPT; # option environment for groffer
export _CONF_FILE_ETC; # configuration file in /etc
export _CONF_FILE_HOME; # configuration file in $HOME
export _CONF_FILES; # configuration files
_CONF_FILE_ETC='/etc/groff/groffer.conf';
_CONF_FILE_HOME="${HOME}/.groff/groffer.conf";
_CONF_FILES="${_CONF_FILE_ETC} ${_CONF_FILE_HOME}";
# characters
export _AT;
export _SP;
export _SQ;
export _TAB;
_AT='@';
_SP=' ';
_SQ="'";
_TAB=' ';
export _ERROR;
_ERROR='7'; # for syntax errors; no `-1' in `ash'
# @...@ constructs
export _GROFF_VERSION
_GROFF_VERSION='@VERSION@';
if test _@VERSION@_ = _${_AT}VERSION${_AT}_
then
_GROFF_VERSION='1.19.2';
fi;
export _AT_BINDIR_AT;
export _AT_G_AT;
export _AT_LIBDIR_AT;
export _GROFFER_LIBDIR;
if test _@BINDIR@_ = _${_AT}BINDIR${_AT}_
then
# script before `make'
_AT_BINDIR_AT='.';
_AT_G_AT='';
_AT_LIBDIR_AT='';
_GROFFER_LIBDIR='.';
else
_AT_BINDIR_AT='@BINDIR@';
_AT_G_AT='@g@';
_AT_LIBDIR_AT='@libdir@';
_GROFFER_LIBDIR="${_AT_LIBDIR_AT}"'/groff/groffer';
fi;
export _GROFFER_SH; # file name of this shell script
case "$0" in
*groffer*)
_GROFFER_SH="$0";
# was: _GROFFER_SH="${_AT_BINDIR_AT}/groffer";
;;
*)
echo 'The groffer script should be started directly.' >&2
exit 1;
;;
esac;
export _GROFFER2_SH; # file name of the script that follows up
_GROFFER2_SH="${_GROFFER_LIBDIR}"/groffer2.sh;
export _NULL_DEV;
if test -c /dev/null
then
_NULL_DEV="/dev/null";
else
_NULL_DEV="NUL";
fi;
# Test of the `$()' construct.
if test _"$(echo "$(echo 'test')")"_ \
!= _test_
then
echo 'The "$()" construct did not work.' >&2;
exit "${_ERROR}";
fi;
# Test of sed program
if test _"$(echo red | sed -e 's/r/s/')"_ != _sed_
then
echo 'The sed program did not work.' >&2;
exit "${_ERROR}";
fi;
########################### configuration
# read and transform the configuration files, execute the arising commands
for f in "${_CONF_FILE_HOME}" "${_CONF_FILE_ETC}"
do
if test -f "$f"
then
o=""; # $o means groffer option
# use "" quotes because of ksh and posh
eval "$(cat "$f" | sed -n -e '
# Ignore comments
/^['"${_SP}${_TAB}"']*#/d
# Delete leading and final space
s/^['"${_SP}${_TAB}"']*//
s/['"${_SP}${_TAB}"']*$//
# Print all shell commands
/^[^-]/p
# Replace empty arguments
s/^\(-[^ ]*\)=$/o="${o} \1 '"${_SQ}${_SQ}"'"/p
# Replace division between option and argument by single space
s/[='"${_SP}${_TAB}"']['"${_SP}${_TAB}"']*/'"${_SP}"'/
# Handle lines without spaces
s/^\(-[^'"${_SP}"']*\)$/o="${o} \1"/p
# Print options that have their argument encircled with single quotes
/^-[^ ]* '"${_SQ}"'.*'"${_SQ}"'$/s/^.*$/o="${o} &"/p
# Replace encircled double quotes by single quotes and print the result
s/^\(-[^ ]*\) "\(.*\)"$/o="${o} \1 '"${_SQ}"'\2'"${_SQ}"'"/p
# Encircle the remaining arguments with single quotes
s/^\(-[^ ]*\) \(.*\)$/o="${o} \1 '"${_SQ}"'\2'"${_SQ}"'"/p
')"
if test _"${o}"_ != __
then
if test _"{GROFFER_OPT}"_ = __
then
GROFFER_OPT="${o}";
else
GROFFER_OPT="${o} ${GROFFER_OPT}";
fi;
fi;
fi;
done;
# integrate $GROFFER_OPT into the command line; it isn't needed any more
if test _"${GROFFER_OPT}"_ != __
then
eval set x "${GROFFER_OPT}" '"$@"';
shift;
GROFFER_OPT='';
fi;
########################### Determine the shell
export _SHELL;
# use "``" instead of "$()" for using the case ")" construct
# do not use "" quotes because of ksh
_SHELL=`
# $x means list.
# $s means shell.
# The command line arguments are taken over.
# Shifting herein does not have an effect outside.
export x;
case " $*" in
*\ --sh*) # abbreviation for --shell
x='';
s='';
# determine all --shell arguments, store them in $x in reverse order
while test $# != 0
do
case "$1" in
--shell|--sh|--she|--shel)
if test "$#" -ge 2
then
s="$2";
shift;
fi;
;;
--shell=*|--sh=*|--she=*|--shel=*)
# delete up to first "=" character
s="$(echo x"$1" | sed -e 's/^x[^=]*=//')";
;;
*)
shift;
continue;
esac;
if test _"${x}"_ = __
then
x="'${s}'";
else
x="'${s}' ${x}";
fi;
shift;
done;
# from all possible shells in $x determine the first being a shell
# or being empty
s="$(
# "" quotes because of posh
eval set x "${x}";
shift;
if test $# != 0
then
for i
do
if test _"$i"_ = __
then
# use the empty argument as the default shell
echo empty;
break;
else
# test $i on being a shell program;
# use this kind of quoting for posh
if test _"$(eval "$i -c 'echo ok'" 2>${_NULL_DEV})"_ = _ok_ >&2
then
# shell found
cat <<EOF
${i}
EOF
break;
else
# if not being a shell go on searching
continue;
fi;
fi;
done;
fi;
)";
if test _"${s}"_ != __
then
cat <<EOF
${s}
EOF
fi;
;;
esac;
`
########################### test fast shells for automatic run
if test _"${_SHELL}"_ = __
then
for s in ksh ash dash pdksh zsh posh
do
if test _"$(eval "$s -c 'echo ok'" 2>${_NULL_DEV})"_ = _ok_ >&2
then
_SHELL="$s";
break;
fi;
done;
fi;
########################### start groffer2.sh
if test _"${_SHELL}"_ = _empty_
then
_SHELL='';
fi;
if test _"${_SHELL}"_ = __
then
# no shell found, so start groffer2.sh normally
eval exec "'${_GROFFER2_SH}'" '"$@"';
exit;
else
# start groffer2.sh with the found $_SHELL
# do not quote $_SHELL to allow arguments
eval exec "${_SHELL} '${_GROFFER2_SH}'" '"$@"';
exit;
fi;

File diff suppressed because it is too large Load diff

View file

@ -1,679 +0,0 @@
Thu May 26 08:23:40 2005 Werner LEMBERG <wl@gnu.org>
* m.tmac: Load devtag.tmac.
Wed Mar 16 06:56:02 2005 Larry Kollar <kollar@alltel.net>
Add rudimentary support for grohtml.
* m.tmac (H): Call DEVTAG-NH and DEVTAG-EO-H.
(pg@enable-trap, pg@header): Do nothing for devhtml.
Sun Mar 7 16:34:46 2004 Jeff Conrad <jeff_conrad@msn.com>
* m.tmac (S): Improve debug message.
Wed Mar 05:38:57 2004 Joergen Haegg <jh@axis.com>
* Changed default value for Hy in manual to 0
* Check Hy at each new page
Mon Mar 1 22:16:38 2004 Jeff Conrad <jeff_conrad@msn.com>
* m.tmac (S): Fix scaling indicator for vertical spacing.
Tue Nov 05:14:45 2003 Joergen Haegg <jh@axis.com>
* another patch from ulrich lauther to fix the
TOC up to 14 heading levels.
Mon Oct 13:48:25 2003 Joergen Haegg <jh@axis.com>
* problem with more than 7 levels of headings fixed with
patch from ulrich lauther.
Wed Apr 06:42:35 2003 Joergen Haegg <jh@axis.com>
* the footer was not adjusted by VM due to a missing
pg*extra-footer-size in the calculation of pg*last-pos
Wed Apr 06:04:58 2003 Joergen Haegg <jh@axis.com>
* space adjustments in 4.MT to make it more like
the original
Sun Mar 21:45:10 2003 Joergen Haegg <jh@axis.com>
* removed error check i 4.MT, .AF is not mandatory anymore
Sat Mar 21:56:57 2003 Joergen Haegg <jh@axis.com>
* cov*firm now defined only if arg to AF is non-empty
That will also enable cov*default-firm from the mm locale-file
to work.
Sat Mar 21:05:29 2003 Joergen Haegg <jh@axis.com>
* added .ll in pg@set-env to initialize the
header environment properly
Wed Mar 19 23:02:16 2003 Werner LEMBERG <wl@gnu.org>
* groff_mm.man: Some fixes from Robert D. Goulding
<goulding@Princeton.EDU>.
Wed Sep 09:53:06 2002 Joergen Haegg <jh@axis.com>
* added implicit -mm to mmroff, it's now possible
to use mmroff with or without -mm as argument.
Thu Aug 08 00:31:00 Bob Diertens <bobd@science.uva.nl>
* m.tmac (VM): Add missing backslash.
Fri Jun 10:37:58 2002 Joergen Haegg <jh@axis.com>
* added init@reset for LT-macros so .S works for letters
Thu May 06:30:06 2002 Joergen Haegg <jh@axis.com>
* adding -T to VM for setting the total
header and footer size.
* changing pg*extra-header-size unit from v to u in DS-size
calculation
Mon May 05:40:16 2002 Joergen Haegg <jh@axis.com>
* All lists now get an empty line before the list
even if there is no empty lines between the items (bug in LB)
Sat May 07:36:08 2002 Joergen Haegg <jh@axis.com>
* PIC is now drawn 1v higher, making it
possible to put a picture at 0,0.
* Indentbug in P fixed, Pt=2 now behaves as it should
Wed May 10:18:26 2002 Joergen Haegg <jh@axis.com>
* added L, W and O in groff_mm.man
* extra space in expression removed in EPIC
* EPIC can leftadjust with -L
* EPIC was drawing 1v down
* forgot to add mmse.tmac and mm.tmac to cvs
Fri May 20:35:32 2002 Joergen Haegg <jh@axis.com>
* Clarified manual about INITR
* Added mm.tmac and mmse.tmac wrappers
* Fixed bug in mmroff so a .qrf-file always will be created
* .EQ mark was not correctly positioned anymore.
* changed SP to sp in DS/DE to further correct .EQ
Sun Dec 9 00:00:00 2001 Werner LEMBERG (wl@gnu.org)
* Makefile.sim, groff_mm.man, groff_mmse.man: Minor fixes.
* mmroff.man: This is a section 1 man page.
Minor fixes.
* Makefile.sub: Install mmroff.man in section 1.
Wed Nov 28 00:00:00 2001 Werner LEMBERG (wl@gnu.org)
* m.tmac: Assure that the macro package is loaded only once.
Wed Sep 5 00:00:00 2001 Werner LEMBERG (wl@gnu.org)
* m.tmac: Enable all warnings only if no -W or -w option is given on
the command line (or rather, if only the default warnings are
set).
Mon Sep 3 00:00:00 2001 Werner LEMBERG (wl@gnu.org)
* groff_mm.man: Don't use .ne for TTY devices.
Thu Jul 26 00:00:00 2001 Werner LEMBERG (wl@gnu.org)
* groff_mm.man: Start always a new line after end of sentence. Add
some compatibility info to the HF variable.
Thu Jul 26 00:00:00 2001 Larry Jones (larry.jones@sdrc.com)
* m.tmac: Fix initialization of Hps1 and Hps2.
Wed May 16 00:00:00 2001 Bruce Lilly (blilly@erols.com)
* m.tmac (TH): Fix incorrect error message.
Thu Apr 12 00:00:00 2001 Ruslan Ermilov (ru@FreeBSD.org)
* groff_mm.man: Fixing some typos.
Mon Mar 5 09:30:18 2001 Jörgen Hägg (jh@axis.com)
* S didn't reset to default point size
* (dummy line to force cvs update...)
Sat Jan 06 10:30:00 2001 Werner LEMBERG (wl@gnu.org)
* Fixed assignment of page offset given as a command line argument.
Fri Nov 17 05:34:17 2000 Jörgen Hägg (jh@axis.com)
* Renamed tmac.m and tmac.mse to m.tmac and mse.tmac
Thu Sep 14 05:52:48 2000 Jörgen Hägg (jh@axis.com)
* New Changelog-format, it will show changes better.
Easier for other to use. (Somehow I didn't really
understand why the e-mail address was supposed to be
'jh at axis.com' in the Changelog. :-)
Mon Aug 28 00:00:00 2000 Bruno Haible (haible at clisp.cons.org)
* Makefile.sub: New target 'all', makes all prerequisites of
'install'.
Thu Sep 7 06:17:42 2000 Jörgen Hägg (jh at axis.com)
* version 2.0
* Had to do something about my version numbering.
The main CVS archive was not in sync with mine.
So, now it is 2.0. :-)
Sat Jun 17 23:00:00 2000 Eli Zaretskii (eliz@is.elta.co.il)
* Makefile.sim (.man.n): Replace `;' with `|', since DOS/Windows
path lists use the semicolon as a separator.
Sun Jun 4 21:39:00 2000 Kaneda Hiroshi (vanitas at ma3.seikyou.ne.jp)
* Fixing a lot of typos in groff_mm.man
Tue Mar 7 00:00:00 2000 OKAZAKI Tetsurou (okazaki at be.to)
* Makefile.sub: Use $(INSTALL_SCRIPT) for script files.
Sun Jan 30 22:52:20 2000 Jörgen Hägg (jh at axis.com)
* version 1.34
* Changed the version number in the CVS repository
* MC had a bug in column calculation, (thanks to T. Kurt Bond)
Fri Sep 3 07:33:14 1999 Jörgen Hägg (jh at axis.com)
* version 1.33
* At last! I finally tracked down the PGFORM bug!
It didn't setup the @pl, @ll and @po as it should, now it does.
* mgm_ref/mgm_roff renamed to mmroff [-x]
* fixed y2k-bug in \*[DT]
* \n[cov*year] removed, hope noone used that.
* ISODATE added with Iso as command line flag
(iso-date suggested by Paul Eggert)
* Added ISODATE to tmac.mse and removed local settings
of new-date.
* INITI syntax changed and enhanced. Index processing is now
done with mmroff.
* A few examples has been added, new subdirectory 'examples'.
* Fixed bug with SETR, header references are now only saved
when Ref > 0
* Problem with register H1h fixed
* Added test for missing abstract in 4.MT
* Updated Makefile.sub, using tmac_m_prefix.
Mon Mar 15 22:22:42 1999 Jörgen Hägg (jh at axis.com)
* OK, let's release this as a beta, 1.33 will be better. :-)
* version 1.32
* fixed .el-error
* Added number variable Hss
* Changed Hps1 and Hps2 to units
* added hd*h1-text to be used in user defined macro TP.
* -U needed for SETR (I really need 'mv', 'echo', 'rm'
and 'test' builtin!)
* Rewritten the reference system, SETR now prints to stderr
if the number register Qrf > 0. Store in the filename
that is the argument to .INITR
The old behaviour is returned if number register Initr > 0.
* Fixed bug with List of XXXX, long lines messed up the result.
* added number register H1dot.
* added string variable H1txt
* added string variable Tcst
* added number register Dsp.
* added alias APPX for user-defined appendix title.
* added string variable Apptxt
* added H1h for use in TP in headers
* added macro EPIC
* added macro PIC (safe replacement for PSPIC)
* fixed Hps-bug, should be 1, not 1v.
* fixed bug with APPSK, variable not set.
Wed Feb 4 15:46:04 1998 Jörgen Hägg (jh at axis.se)
* version 1.31
* .LI will now honor a space mark.
* Another fix for .AU to let it be used without arguments.
* uninitialized eq*label fixed
Fri Sep 6 07:13:07 1996 Jörgen Hägg (jh at axis.se)
* version 1.30
* This is more like a beta-release, bugs might pop up. :-)
* last line in TOC was not correctly terminated (missing .br)
* changed the indentation for displays, it will now
indent to the current indent, not the one at the definition
of the display.
* Equation marks should now work better, indentation also.
* included these bug fixes from Larry Jones:
* The documentation for the argument to .AS was incorrect for MT 4.
* \*(EM should be a double-dash for nroff.
* \nS is in points, not units.
* If \nO isn't set, the default page offset should be .75i for nroff
and .963i for troff.
* .S D should set the point size to \nS, not 10.
* .S was setting the vertical spacing based on the old point size
instead of the new point size.
* Got rid of a spurrious .br that prevented run-in headings from
working.
* Reset the .SP counters in pg@header so that spacing on one page
won't affect spacing on subsequent pages.
* Allow .AU and .AF with no arguments (real mm does, even though it
isn't documented).
* Do .init@reset first thing to initialize the default environment.
* For MT 4, the title should be 4 points larger than the default size,
not 12 point.
* The cover environment needs to be initialized.
* Printing the abstract on the first page needs to be controlled by
the .AS argument.
* Heading eject should be suppressed if the heading immediately
follows the first page stuff (title, author, etc.).
* support for table of contents numbering style (.nr Oc)
* changes the troff empty line height from .25v to .5v
* fixed section page numbering
* fixed a really nasty bug in footnotes that could cause you
to lose the page footer completely if the very first
footnote on the page occurred at just the wrong place
Wed May 15 07:39:32 1996 Jörgen Hägg (jh at axis.se)
* version 1.29
* Syntax and scaling errror fixed, (thanks to Frazer Williams)
* DF/DE will now do a line-break before printing the display.
* Updated the manual for TB,FG,EX and EC.
* Added support for the ms- (and mgs-)macro .IX
* Added indexmacro IX, INITI, IND and INDP, support for
TXIND, TYIND and TZIND.
* PGFORM will now always really reset to the default
values for unspecified arguments.
* Floating displays tested and repaired, it should
now (finanlly) work exactly as the original (I hope :-).
* Should now set year correctly even after 2000.
* Stupid bug in PGNH fixed.
* Corrected line length for figure caption (FG and friends)
Mon Apr 24 07:37:52 1995 Jörgen Hägg (jh at axis.se)
* version 1.28
* Added AVL (AV without date)
* Fixed nroff scaling for W and L.
* Added support for register E and roman/bold
for all Subject/Date/From strings.
* Added support for register C (1-4), (for DRAFTs and other types)
* Will protest if not used with groff.
* Change of the internal number registers @ps and @vs, they
are now in units, and is set in the new macros .@ps and .@vs.
@ps and @vs is now corrected to the real point and vertical size.
* Macro EQ has now correct pointsize.
* Figures should now get the right page number in the index.
* User-defined macros can now be defined for list of
figures, tables, equations and exhibits (T{X,Y}{FG,TB,EC,EX}.
* Space may be omitted between prefix and mark in automatic lists (.AL)
See .LI
Tue Jan 10 07:51:37 1995 Jörgen Hägg (jh at axis.se)
* version 1.27
* Manual updated
* More bugs fixed in DS/DF
* added alias for :g
* LC can now be used without argument (as the manual says. :-)
* Register :R now supported (RS/RF)
* footnote line was printed even if there was no room for
any footnotes. Fixed.
* Fixed 1C so that it can be used without page eject
* Added support for EOP (TPs twin)
* Hyphenation turned off by default. (Hy == 0)
Fri Nov 4 08:14:50 1994 Jörgen Hägg (jh at axis.se)
* version 1.25
* DS/DF separated and several bugs fixed. Watch out for new though. :-)
* string DT was emptied by mistake in the previous version.
* RD made prettier.
* typo in AV and let@print-head fixed.
Mon Oct 31 08:19:24 1994 Jörgen Hägg (jh at axis.se)
* version 1.24
* Bug fixed and format extended in .SG and .FC.
* date is always printed unless .ND without argument is used.
(I wonder what's the right thing to do, this might change.)
* Swedish letter-standards implemented in tmac.mse.
* .ND can be used to turn off the date. (Empty argument)
Mon Oct 31 08:14:09 1994 Jörgen Hägg (jh at axis.se)
* version 1.23
* An attempt to get in sync with RCS. This is the distributed
version.
Thu Oct 27 08:29:34 1994 Jörgen Hägg (jh at axis.se)
* version 1.22
* (version 1.21 lost... :-)
* Letter macros added!!
* The following macros are added:
* AV, FC, IA ,IE, LT, LO, NE, NS, SG, WA, WE
* nP also added.
Tue Dec 14 16:26:36 1993 Joergen Haegg (jh at efd.lth.se)
* version 1.20
* spelling-corrections
* Makefile.sim updated to the correct version, and a uninstall
target added.
* @cur-lib removed from tmac.m (obsolete)
* fixed check for references i .TC, .RP now resets the flag correctly.
* floating display should now be printed if there is space.
* first version using RCS. I've been avoiding version control until it
became necessary.
* WC WD now works in two-column-mode.
Tue Sep 7 08:37:00 1993 Jörgen Hägg (jh at efd.lth.se)
* version 1.19
* .lt is called in the header for .TP also.
* Variable Pgps added to control the header and footer point-size.
* Error-text printed with .APP removed.
* Error with .FG, .TB, .EC and .EX indentation fixed.
* header and footer line-length is not changed by MC or 2C.
* Default for page-length and page-offset is now taken from
\n[.p] and \n[.o].
* Argument to .ab (abort) is supplied.
* Argument to .1C added.
* Argument to .PGFORM added.
* RP/RS/RF totally rewritten. Should work with 2C now.
Fri Apr 23 10:37:25 1993 Joergen Haegg (jh at efd.lth.se)
* version 1.18
* Height of display is now more exactly calculated.
* tabs and blankspaces where wrong in .VERBON.
* error in manual for escape-character in VERBON.
* Makefile.sub: installed tmac.m as tmac.m and tmac.mse
* Installation of tmac.mse now supports TMAC_M.
* bug with N fixed.
Mon Apr 5 09:36:01 1993 Joergen Haegg (jh at efd.lth.se)
* version 1.17
* MULB preserves size.
* bug in VERBON fixed, causing strange errors.
* section-page footer fixed.
* added support for numberregister S
* fixed bug with floating displays wich made floats to
generate space on a page, but broke page anyway.
* end-of-page trap reinstalled.
Mon Mar 29 10:53:13 1993 Joergen Haegg (jh at efd.lth.se)
* version 1.16
* MUL* now use the previous font and family.
* extra blank page at end-of-text eliminated.
Mon Mar 8 10:27:47 1993 Joergen Haegg (jh at efd.lth.se)
* version 1.15
* Didn't restore pointsize to current size in .H.
* B1/B2 did not work with indent. (MULE and friends)
* fixed old problem with trailing empty pages.
Fri Mar 5 15:20:49 1993 Joergen Haegg (jh at efd.lth.se)
* version 1.14
* Sigh. Amazing what a missing \} can do. If the string
HP was set, then all text disappeared...
Fri Mar 5 14:12:43 1993 Joergen Haegg (jh at efd.lth.se)
* version 1.13
* Fixed bug with handling ps/vs in .H. (again, sigh... )
Wed Mar 3 09:21:20 1993 Joergen Haegg (jh at efd.lth.se)
* version 1.12
* Line-break added to PGFORM.
* added more features to VERBON
* .S is not used anymore in H, it caused confusion with
normal text, but it will still set .vs.
* SK was broken, will now produce the requested number of
empty pages.
* dotted lines added to LIST OF FIGURES adn friends.
Also better linespacing.
Mon Feb 22 12:41:06 1993 Joergen Haegg (jh at efd.lth.se)
* version 1.11
* missing left-parenthesis gave ") .sp" when N=4.
* N=4 removed user-specified header also.
* MOVE made linelength pageoffset wider than wanted.
* fixed (again) parenthesis in RP.
Thu Jan 21 12:10:39 1993 Joergen Haegg (jh at efd.lth.se)
* version 1.10
* changed PROG_PREFIX to g in the manual-pages.
* Better check if new page is needed in .H, when Ej>0.
* Usage of variable Lsp now more complete.
* Space added in TOC when mark is equal to size.
* Usermacro HY moved after font-calulations.
* .S used instead of .ps, which will use .vs correct.
* Now possible to set Hps1/2 inside HX.
* .FD "" 1 is now fixed.
* section-page numbering bug fixed.
* several bugs in VERBON/OFF fixed.
Tue Dec 8 16:43:15 1992 Joergen Haegg (jh at efd.lth.se)
* version 1.09
* N==4 gives no default header
Sat Nov 21 14:28:20 1992 Joergen Haegg (jh at efd.lth.se)
* version 1.08
* Escape-character disabled between
VERBON/VERBOFF (turned on by an argument).
Pointsize and fontchange also added as arguments.
* MULB, MULN and MULE added to get multicolumn output
with different width.
* Number register N can now use 1-5.
* Register Sectp and Sectf added.
* Register P is now updated correctly for "section-page" numbering.
Thu Nov 19 11:19:33 1992 Joergen Haegg (jh at efd.lth.se)
* version 1.07
* .OP fixed to eject a blank page if not odd.
Fri Nov 13 09:46:09 1992 Joergen Haegg (jh at efd.lth.se)
* version 1.06
* Macro TL rewritten. TL depends now on a following .AU.
* NOTES updated.
* .lt is now used more frequent when linelength is changed.
* macro AST added.
* removed PH/EH/OH not needed in ?.MT.
Wed Oct 28 14:35:43 1992 Joergen Haegg (jh at efd.lth.se)
* version 1.05
* .VM implemented.
* Possible bug in page heading fixed. Changed .sp to 'sp in HEADER.
Thu Aug 20 13:56:31 1992 Joergen Haegg (jh at efd.lth.se)
* version 1.04
* page-break in .EQ moved.
* changed unit for footer-size and header-size from units to lines.
Fixes problems with .S and page-breaks.
* \n[%] is now treated as a string, wich makes it possible
to assign new formats to it. Unfortunately, it was necessary
to change the page-number-variable in GETPN to a string.
* Makefile.sub included. (Thank you, James)
Thu May 7 16:14:10 1992 Joergen Haegg (jh at efd.lth.se)
* version 1.03
* Typo and centering in DS/DE fixed.
Even and odd pageheaders were reversed.
* LI: pad and mark-indent was lost in some earlier versions. Now fixed.
* fixed bug in reference to .FG, .TB, ...
* APP did not clear headercounters.
* Pointsize in titles is now only set at the beginning and
when PH, PF, OH, OF, EH and EF are used.
Thu May 6 16:01:35 1992 Joergen Haegg (jh at efd.lth.se)
* version 1.02
* OP fixed.
Fri Mar 6 09:36:09 1992 Joergen Haegg (jh at efd.lth.se)
* version 1.01
* two .LI without text between should not be printed
on the same row. Now fixed.
* figure titles and friends fixed, now possible with many .FG
in a DS/DE. Didn't always position correctly in previous version,
but is now always printed as it should.
* Makefile fixed for Ultrix.
* DS/DF could not handle empty arguments correct
* Missing .br i EQ added.
Sat Jan 25 15:47:21 1992 Joergen Haegg (jh at efd.lth.se)
* version 1.00
* No betaversion anymore!
* Fixed headernumbers within appendixes.
* DS did not keep the same font as before DS.
* mmse did a line break.
Fri Jan 24 14:38:16 1992 Joergen Haegg (jh at efd.lth.se)
* version 0.16
* bug in TC, multiple line headers did not wrap correctly.
* added support for mm/locale and mm/language_locale.
* cov*default-firm in locale sets name of firm in the MT covers.
* cov*location-xxxx in locale sets location xxxx to the contents
of cov*location-xxxx. Used in the MT covers.
* hanging indent in lists fixed.
* use larger empty lines if .nroff is defined.
* macros, like .P, can now be used inside abstracts.
* .S do not reset indentation anymore.
* .RS aA now sets a string, not an integer.
* appendix with .APP or .APPSK added.
Thu Nov 28 22:00:59 1991 Joergen Haegg (jh at efd.lth.se)
* version 0.15
* Fixed .AU in MT 0-3, added support for variable Au.
* Bug in the positioning of the foot-notes.
* lists not indented properly.
* Hps1 and Hps2 added.
* COVER had to have an argument.
* table of contents can now have multiline header.
* .HU now increments headingvariable H?
* added the inclusion of a locale file.
Sat Nov 23 14:40:17 1991 Joergen Haegg (jh at efd.lth.se)
* version 0.14
* bug when using -rO fixed.
* MT 1-4 added.
* default is now MT 1
* .EQ/.EN can be used outside of .DS/.DE without complaints. But
I don't recommend it. Neither does the DWB books.
* LI don't break lines now if arg too big.
* PGFORM did not reset indent.
* Added the numbervariable Hps.
* Rewritten and added MT 0-5 + "string".
* Added TM.
* Indent to AS added
Wed Nov 6 15:18:40 1991 Joergen Haegg (jh at efd.lth.se)
* version 0.13
* ds*format nod defined if PS/PE is used without DS/DE.
* GETST added, fourth argument to EX, FG, TB and EC added.
Mon Nov 4 13:38:01 1991 Joergen Haegg (jh at efd.lth.se)
* version 0.12
* Fixed C,D,P,+-size in .S
Sun Jan 1 00:00:00 1991 Joergen Haegg (jh at efd.lth.se)
* Next version will have ChangeLog entries...
* Bug in INITR fixed.
* VERBON/VERBOFF added to include programlistings
* Bug in .DE fixed, addition overflow
Sun Jan 1 00:00:00 1991 Joergen Haegg (jh at efd.lth.se)
* spelling error in month-names.
* WC should work now (no warranty :-)
* FD almost finished, some details missing.
* incorrect calculation of foot-notes fixed.
* DS/DE did not break page when the size was smaller than the paper
* Forward/backward referencesystem added. Se .INITR in README.
* mgmsw changed name to mgmse.
Sun Jan 1 00:00:00 1991 Joergen Haegg (jh at efd.lth.se)
* embarrassing bug in .P fixed
* .H did always eject page, now fixed.
* lost floating displays now found.
* accents added (from mgs)
* empty line in .EQ/.EN removed
* indentation in .TC corrected.
* indentation of DS/DE in lists fixed.
* .TB and friends now work inside DS/DE and outside.
* .WC partially implemented (WF and WD). Still working on it.
* .mso used if version>=1.02
Sun Jan 1 00:00:00 1991 Joergen Haegg (jh at efd.lth.se)
* register P was not working.
* support for register Fg, Tb, Ec and Ex.
* list items was left on the previous page at a page break.
* tlevel in .TC now defaults to 2.
* string DT, EM and Tm supported.
* new macro: PGNH, see comments.
* bug in MOVE fixed.
* pagenumber in .TC fixed.
* a blank page was ejected if Ej==1, now fixed
* bug in floating display fixed (did break and SP wrong)
* bug in .SP fixed, no lines is now printed at top of page
* There are still problems with footnotes and displays in two column mode.
Sun Jan 1 00:00:00 1991 Joergen Haegg (jh at efd.lth.se)
* register P added (same as %)
* bug in floating displays fixed
* MOVE added
* MT added, see comment below
* COVER/COVEND added
* fixed bug in figure titles
* extended S, se comment below
* MT 0 added
* ms-cover added (COVER ms)
Sun Jan 1 00:00:00 1991 Joergen Haegg (jh at efd.lth.se)
* bugs in RD and comb. fonts fixed
Sun Jan 1 00:00:00 1991 Joergen Haegg (jh at efd.lth.se)
* HC added
* Combined fonts (IB,BI...)
* HM added
* RD added
* OP added
* TP&PX supported
* warnings for unimplemented macros

View file

@ -1,66 +0,0 @@
#
# $Id: Makefile.sim,v 2.3 2002/05/22 06:26:12 jhaegg Exp $
#
# To install mgm separately as gm.tmac:
# make -f Makefile.sub tmacdir=/usr/local/lib/groff/tmac srcdir=. \
# INSTALL_DATA='install -m 644' tmac_m=gm install
#
# or as m.tmac:
#
# tmacdir is the destination for your groff/tmac-directory, srcdir is
# this directory and INSTALL_DATA is the command to install a file with.
# If you dont have 'install': use 'cp'.
# change this to whatever you like
tmacdir=/usr/local/lib/groff/tmac
#tmac_m = gm
tmac_m = m
indexdir = xx
install = install -m 644
# Do not change anything below this line
srcdir = .
version = 2.8
mdate = 2002-05-11
.SUFFIXES: .n .man
all:
install: groff_mm.n groff_mmse.n
$(MAKE) -f Makefile.sub tmacdir=$(tmacdir) srcdir=$(srcdir) \
INSTALL_DATA='$(install)' tmac_m=$(tmac_m) install
uninstall: groff_mm.n groff_mmse.n
$(MAKE) -f Makefile.sub tmacdir=$(tmacdir) srcdir=$(srcdir) \
INSTALL_DATA='$(install)' tmac_m=$(tmac_m) uninstall_sub
.man.n:
@echo Making $@ from $<
@-rm -f $@
@sed -e "s|@HYPHENFILE@|$(hyphenfile)|g" \
-e "s|@FONTDIR@|$(fontdir)|g" \
-e "s|@FONTPATH@|$(fontpath)|g" \
-e "s|@MACRODIR@|$(tmacdir)|g" \
-e "s|@MACROPATH@|$(tmacpath)|g" \
-e "s|@DEVICE@|$(DEVICE)|g" \
-e "s|@DEFAULT_INDEX@|$(indexdir)/$(indexname)|g" \
-e "s|@DEFAULT_INDEX_NAME@|$(indexname)|g" \
-e "s|@INDEX_SUFFIX@|$(indexext)|g" \
-e "s|@COMMON_WORDS_FILE@|$(common_words_file)|g" \
-e "s|@MAN1EXT@|$(man1ext)|g" \
-e "s|@MAN5EXT@|$(man5ext)|g" \
-e "s|@MAN7EXT@|$(man7ext)|g" \
-e "s|@TMAC_S@|$(tmac_s)|g" \
-e "s|@TMAC_M@|$(tmac_m)|g" \
-e "s|@TMAC_MDIR@|$(tmacdir)/mm|g" \
-e "s|@BROKEN_SPOOLER_FLAGS@|$(BROKEN_SPOOLER_FLAGS)|g" \
-e "s|@VERSION@|$(version)|g" \
-e "s|@MDATE@|$(mdate)|g" \
-e "s|@g@|$(g)|g" \
-e "s!@G@;`echo $(g) | tr [a-z] [A-Z]`!g" \
$< >$@

View file

@ -1,62 +0,0 @@
#
# $Id: Makefile.sub,v 2.3 2002/05/22 06:26:12 jhaegg Exp $
#
PROG=mmroff
MAN1=\
mmroff.n
MAN7=\
groff_mm.n \
groff_mmse.n
FILES=0.MT 5.MT 4.MT ms.cov se_ms.cov
# Local configuration files with default values.
LOCALE=locale se_locale
CLEANADD=temp
all: mmroff
install: install_mm
install_mm: install_mmroff install_m
-test -d $(tmacdir)/mm || $(mkinstalldirs) $(tmacdir)/mm
-for f in $(FILES); do \
rm -f $(tmacdir)/mm/$$f; \
$(INSTALL_DATA) $(srcdir)/mm/$$f $(tmacdir)/mm/$$f; \
done
-for f in $(LOCALE); do \
test -f $(tmacdir)/mm/$$f || touch $(tmacdir)/mm/$$f; \
done
install_m:
-test -d $(tmacdir) || $(mkinstalldirs) $(tmacdir)
-rm -f $(tmacdir)/tmac.$(tmac_m_prefix)m
-rm -f $(tmacdir)/$(tmac_m_prefix)m.tmac
$(INSTALL_DATA) $(srcdir)/m.tmac $(tmacdir)/$(tmac_m_prefix)m.tmac
@sed -e "s;^.mso m.tmac;.mso $(tmac_m_prefix)m.tmac;g" \
$(srcdir)/mse.tmac > $(tmacdir)/$(tmac_m_prefix)mse.tmac
@sed -e "s;^.mso mse.tmac;.mso $(tmac_m_prefix)mse.tmac;g" \
$(srcdir)/mmse.tmac > $(tmacdir)/$(tmac_m_prefix)mmse.tmac
@sed -e "s;^.mso m.tmac;.mso $(tmac_m_prefix)m.tmac;g" \
$(srcdir)/mm.tmac > $(tmacdir)/$(tmac_m_prefix)mm.tmac
install_mmroff: mmroff
-test -d $(bindir) || $(mkinstalldirs) $(bindir)
-rm -f $(bindir)/mmroff
$(INSTALL_SCRIPT) mmroff $(bindir)/mmroff
mmroff: mmroff.pl
-rm -f $@
-sed -e 's;/usr/bin/perl;$(PERLPATH);' $(srcdir)/mmroff.pl >$@
-chmod +x $@
uninstall_sub:
-for f in $(FILES); do rm -f $(tmacdir)/mm/$$f; done
-for f in $(LOCALE); do \
test -s $(tmacdir)/mm/$$f || rm -f $(tmacdir)/mm/$$f; \
done
-rm -f $(tmacdir)/tmac.$(tmac_m_prefix)m
-rm -f $(tmacdir)/$(tmac_m_prefix)m.tmac
-rm -f $(tmacdir)/$(tmac_m_prefix)mm.tmac
-rm -f $(tmacdir)/$(tmac_m_prefix)mse.tmac
-rm -f $(tmacdir)/$(tmac_m_prefix)mmse.tmac
-rmdir $(tmacdir)/mm
-rm -f $(bindir)/mmroff

View file

@ -1,105 +0,0 @@
######################################################################
$Id: NOTES,v 2.0 2000/09/14 03:40:24 jhaegg Exp $
Beware!
This may be old information. Trust only the source. :-)
Implementation notes. (Or how to make your own national mm)
Different commands:
COVER [arg]
MT [arg [addressee]]
The arg is part of a filename in mm/*.MT or mm/*.cov.
This file is read when the macro is executed. Therefore it must be
put before any text output.
In each file there are definitions of all extra macros needed for the
cover sheet. MT files is only for compatibility reasons, and has several
limits due to that it don't know when the cover starts, and cannot
change sizes. Use COVER for new coversheet macros.
But with MT it is possible to write all of the AT&T covers.
An example can be found in mm/0.MT.
When writing a new cover using COVER, have in mind that the cover
should print the page with the COVEND macro. This macro
should be defined by the new macrofile.
Here is a part of ms.cov:
> .\"-----------------
> .de COVEND
> .sp |4.2c
> .cov@print-title
> .cov@print-authors
> .cov@print-firm
> .cov@print-abstract
> .cov@print-date
This is important, since COVER disables the page header.
> .pg@enable-top-trap
Should begin with page one (normally).
> .bp 1
And enable the trap at the page footer.
> .pg@enable-trap
> ..
#########################
Variables for covers:
I = integer
S = string
D = diversion
M = macro
Name Type Desc.
cov*au I The number of authors.
cov*title M Title collected with .TL.
cov*au!x!y S Author(s) given to .AU
cov*at!x!y S Author(s) title given to .AT
x is the author-index [1-cov*au],
y is the argument-index [1-9].
Look at the table with indexes.
cov*firm I Author(s) firm.
cov*abs-arg I Argument to abstract.
cov*abs-ind I Indent for abstract.
cov*abs-name S The string 'ABSTRACT', changed with .AST
cov*abstract M The abstract.
cov*new-date S The date (todays date if ND is not used)
cov*mt-type S MT type
cov*mt-addresse S MT addressee
##########################
Argument-index for cov*au:
Index Desc.
1 name
2 initials
3 location
4 department
5 extension
6 room
7 arg 7
8 arg 8
9 arg 9
The location is set to the contents of string cov*location-xxxx
if location is equal to xxxx and cov*location-xxxx is defined
in the file locale.
Argument-index for cov*at:
Index Desc.
1 title 1
. .
. .
9 title 9

View file

@ -1,31 +0,0 @@
$Id: README,v 2.2 2002/05/22 06:26:12 jhaegg Exp $
This is mgm, a macro package for groff.
It is supposed to be compatible with the DWB mm macros,
and has several extensions.
Send bug reports to jh@axis.com with a description of the problem
and a sample of text which reproduces the error.
Don't forget to mention the version of mgm (look in the beginning
of m.tmac) and the version of groff.
Any new ideas or improvements are welcome.
Newest version is available here or at the groff CVS repository.
ftp://ftp.axis.se/pub/groff/mm<something>.gz
You can install mgm as a separate package without the configure in groff
with the following command:
make -f Makefile.sim install
This README should be bigger :-)
/Jörgen Hägg
Thanks to everyone who have sent me bug-reports and fixes.

View file

@ -1,352 +0,0 @@
.H 1 " granary grand grandchild grandchildren granddaughter grandeur"
granary
grapheme
graphic
graphite
grapple
grasp
grass
grassland
grassy
grata
grate
grateful
grater
gratify
gratis
gratitude
gratuitous
gratuity
grave
gravel
.H 2 "grapefruit grapevine graph grapheme graphic graphite"
granary
grand
graphic
graphite
grapple
grasp
grass
grassland
grassy
grata
grate
grateful
grater
gratify
gratis
gratitude
gratuitous
gratuity
grave
gravel
.H 3 "grapple"
granary
grand
grandchild
grandchildren
granddaughter
grandeur
grandfather
grandiloquent
grandiose
grandma
grandmother
grateful
grater
gratify
gratis
gratitude
gratuitous
gratuity
grave
gravel
.H 1 "Graves gravestone graveyard gravid gravitate gravy gray"
granary
grand
grandchild
grandchildren
granddaughter
grandeur
grandfather
grandiloquent
grandiose
grata
grate
grateful
grater
gratify
gratis
gratitude
gratuitous
gratuity
grave
gravel
.H 1 "Greenfield greengrocer greenhouse greenish Greenland Greensboro"
granary
grand
grandchild
grandchildren
granddaughter
grandeur
grandfather
grandiloquent
grassy
grata
grate
grateful
grater
gratify
gratis
gratitude
gratuitous
gratuity
grave
gravel
.H 1 "greensward greenware Greenwich greenwood Greer greet"
graven
Graves
gravestone
graveyard
gravid
gravitate
gravy
gray
graybeard
grayish
Grayson
graywacke
graze
grease
.APP "" "Graves app a gravestone graveyard gravid gravitate gravy gray"
granary
grand
grandchild
grandchildren
granddaughter
grandeur
grandfather
grandiloquent
grandiose
grata
grate
grateful
grater
gratify
gratis
gratitude
gratuitous
gratuity
grave
gravel
.APP "" "Greenfield app b greengrocer greenhouse greenish Greenland Greensboro"
granary
grand
grandchild
grandchildren
granddaughter
grandeur
.H 2 "grandfather grandiloquent grandiose grandma grandmother grandnephew"
.H 2 "grandniece grandpa grandparent grandson grandstand granite granitic"
.H 2 "granny granola grant grantee grantor granular granulate"
.H 2 "granule Granville grape"
.H 2 "grapefruit grapevine graph grapheme graphic graphite"
.H 3 "grapple"
grandfather
grandiloquent
grassy
grata
grate
grateful
grater
gratify
gratis
gratitude
gratuitous
gratuity
grave
gravel
.APP ABC "greensward app abc greenware Greenwich greenwood Greer greet"
graven
Graves
.APP "" "handstand app f handwrite handwritten handy handyman handymen"
gravestone
graveyard
gravid
gravitate
gravy
gray
graybeard
grayish
Grayson
graywacke
graze
grease
.APPSK "" 10 "Handel app c 10 handhold handicap handicapped handicapper"
.APPSK "" 23 "handicapping app d 23 handicraftsmen handiwork"
.APPSK "" 99 "handmade app e 99 handset handshake handsome handspike"
.nr Aph 0
.APP "" "handstand app f handwrite handwritten handy handyman handymen"
headsmen
headstand
headstone
headstrong
headwall
headwater
headway
headwind
.H 2 "graybeard grayish Grayson graywacke graze grease greasy great greatcoat"
.H 2 "greater grebe Grecian Greece greed greedy Greek green Greenbelt Greenberg"
.H 2 "Greenblatt Greenbriar Greene greenery"
.H 3 "Greenfield greengrocer greenhouse greenish Greenland Greensboro"
.H 3 "greensward greenware Greenwich greenwood Greer greet"
heady
heal
Healey
health
healthful
healthy
Healy
heap
hear
heard
hearken
hearsay
hearse
Hearst
heart
heartbeat
heartbreak
hearten
heartfelt
hearth
hearty
heat
heater
heath
heathen
heathenish
Heathkit
heave
heaven
heavenward
heavy
heavyweight
Hebe
hebephrenic
Hebraic
Hebrew
Hecate
hecatomb
heck
heckle
Heckman
hectic
hector
.APP "" "hang hangable app f hangar hangman hangmen hangout hangover hank"
Hecuba
he'd
hedge
.H 2 "graybeard grayish Grayson graywacke graze grease greasy great greatcoat"
hedgehog
hedonism
hedonist
heed
heel
.H 2 "greater grebe Grecian Greece greed greedy Greek green Greenbelt Greenberg"
heft
hefty
Hegelian
hegemony
Heidelberg
heigh
height
heighten
Heine
Heinrich
Heinz
heir
heiress
Heisenberg
held
Helen
Helena
Helene
Helga
helical
helicopter
heliocentric
heliotrope
helium
helix
he'll
hell
hellbender
hellebore
Hellenic
hellfire
hellgrammite
hellish
hello
helm
helmet
Helmholtz
helmsman
helmsmen
Helmut
help
helpful
helpmate
.APP "" "Hankel app g Hanley Hanlon Hanna Hannah Hannibal Hanoi Hanover"
Helsinki
Helvetica
hem
hematite
Hemingway
hemisphere
hemispheric
hemlock
hemoglobin
hemolytic
hemorrhage
hemorrhoid
hemosiderin
hemp
Hempstead
hen
henbane
hence
henceforth
henchman
henchmen
.H 2 "greater grebe Grecian Greece greed greedy Greek green Greenbelt Greenberg"
Henderson
Hendrick
Hendricks
Hendrickson
henequen
Henley
henpeck
Henri
Henrietta
henry
hepatica
hepatitis
Hepburn
heptane
her
Hera
Heraclitus
herald
herb
Herbert
Herculean
Hercules
herd
herdsman
here
hereabout
hereafter
hereby
hereditary
.TC

View file

@ -1,91 +0,0 @@
abetting
abeyance
abeyant
abhorred
abhorrent
abide
Abidjan
Abigail
abject
ablate
ablaze
able
ablution
Abner
abnormal
Abo
aboard
abode
abolish
.B1
abolition
abominable
abominate
aboriginal
AAA
ABORIGINE
ABORNING
ABORT
ABOUND
ABOUT
ABOVE
ABOVEBOARD
ABOVEGROUND
abovementioned
abrade
Abraham
Abram
Abramson
abrasion
abrasive
abreact
.B2
abreast
abrogate
abrupt
abscess
abscissa
abscissae
absence
absent
absentee
absenteeism
absentia
absentminded
absinthe
absolute
absolution
absolve
absorb
absorbent
absorption
absorptive
abstain
abstention
abstract
abstracter
abstractor
ABSURD
ABUILDING
ABUNDANT
ABUSABLE
ABUSE
ABUSIVE
ABUT
ABUTTED
ABUTTING
ABYSMAL
ABYSS
ABYSSINIA
AC
ACADEME
ACADEMIA
ACADEMIC
ACADEMICIAN
ACADEMY
ACADIA
ACANTHUS
ACAPULCO
ACCEDE
ACCELERATE
ACCELEROMETER

View file

@ -1,235 +0,0 @@
.COVER
.ND 911123
.TL "charge" "filing"
This is a test
granary
grand
grandchild
grandchildren
granddaughter
grandeur
grandfather
grandiloquent
grandiose
grandma
grandmother
grandnephew
grandniece
grandpa
grandparent
grandson
.AU "Nisse Svensson" "DGY" "BF" "Computer Center" "5488" "5-2115" "nisse@vira.sture.elm"
.AF "MT GRANDSTAND GRANITE GRANITIC"
.AS 1 10
grant
grantee
grantor
granular
granulate
granule
Granville
grape
grapefruit
grapevine
graph
grapheme
graphic
graphite
grapple
grasp
grass
grassland
grassy
grata
grate
grateful
grater
gratify
gratis
gratitude
gratuitous
gratuity
grave
gravel
graven
Graves
gravestone
graveyard
gravid
gravitate
gravy
gray
graybeard
grayish
Grayson
graywacke
graze
grease
greasy
great
greatcoat
greater
grebe
Grecian
.AE
.COVEND
Greece
greed
greedy
Greek
green
Greenbelt
Greenberg
Greenblatt
Greenbriar
Greene
greenery
Greenfield
greengrocer
greenhouse
greenish
Greenland
Greensboro
greensward
greenware
Greenwich
greenwood
Greer
greet
Greg
gregarious
Gregg
Gregory
gremlin
grenade
Grendel
Grenoble
Gresham
Greta
Gretchen
grew
grey
greyhound
greylag
grid
griddle
gridiron
grief
grievance
grieve
grievous
griffin
Griffith
grill
grille
grilled
grillwork
grim
grimace
Grimaldi
grime
Grimes
Grimm
grin
grind
grindstone
grip
gripe
grippe
grisly
grist
gristmill
Griswold
grit
gritty
grizzle
granary
grand
grandchild
grandchildren
granddaughter
grandeur
grandfather
grandiloquent
grandiose
grandma
grandmother
grandnephew
grandniece
grandpa
grandparent
grandson
grandstand
granite
granitic
granny
granola
grant
grantee
grantor
granular
granulate
granule
Granville
grape
grapefruit
grapevine
graph
grapheme
graphic
graphite
grapple
grasp
grass
grassland
grassy
grata
grate
grateful
grater
gratify
gratis
gratitude
gratuitous
gratuity
grave
gravel
graven
Graves
gravestone
graveyard
gravid
gravitate
gravy
gray
graybeard
grayish
Grayson
graywacke
graze
grease
greasy
great
greatcoat
greater
grebe
Grecian
Greece
greed
greedy
Greek
green
Greenbelt
Greenberg
Greenblatt
Greenbriar
Greene
greenery
Greenfield
greengrocer
greenhouse
greenish
Greenland
Greensboro
greensward
greenware

Some files were not shown because too many files have changed in this diff Show more