Tcl Source Code

Artifact [cf541f87b3]
Login

Artifact cf541f87b3fbefd61ba4f2bde8a7515ad39833ad:

Attachment "tcl-manpages.patch" to ticket [996085ffff] added by rmax 2004-07-23 01:30:42.
--- unix/Makefile.in
+++ unix/Makefile.in
@@ -257,9 +257,10 @@
 CC			= @CC@
 #CC			= purify -best-effort @CC@ -DPURIFY
 
-# Flags to be passed to mkLinks to control whether the manpages
+# Flags to be passed to installManPage to control whether the manpages
 # should be compressed and linked with softlinks
-MKLINKS_FLAGS           = @MKLINKS_FLAGS@
+MAN_FLAGS               = @MAN_FLAGS@
+MANN_PREFIX		= @MANN_PREFIX@
 
 #----------------------------------------------------------------
 # The information below is usually usable as is.  The configure
@@ -678,8 +679,8 @@
 	done;
 
 install-doc: doc
-	@if test ! -x $(UNIX_DIR)/mkLinks; then \
-	    chmod +x $(UNIX_DIR)/mkLinks; \
+	@if test ! -x $(UNIX_DIR)/installManPage; then \
+	    chmod +x $(UNIX_DIR)/installManPage; \
 	    fi
 	@for i in $(MAN_INSTALL_DIR) $(MAN1_INSTALL_DIR) $(MAN3_INSTALL_DIR) $(MANN_INSTALL_DIR) ; \
 	    do \
@@ -690,36 +691,20 @@
 		else true; \
 		fi; \
 	    done;
-	@echo "Installing top-level (.1) docs";
-	@cd $(TOP_DIR)/doc; for i in *.1; \
-	    do \
-	    rm -f $(MAN1_INSTALL_DIR)/$$i; \
-	    sed -e '/man\.macros/r man.macros' -e '/man\.macros/d' \
-		    $$i > $(MAN1_INSTALL_DIR)/$$i; \
-	    chmod 444 $(MAN1_INSTALL_DIR)/$$i; \
-	    done;
-	@echo "Cross-linking top-level (.1) docs";
-	@$(UNIX_DIR)/mkLinks $(MKLINKS_FLAGS) $(MAN1_INSTALL_DIR)
-	@echo "Installing C API (.3) docs";
-	@cd $(TOP_DIR)/doc; for i in *.3; \
-	    do \
-	    rm -f $(MAN3_INSTALL_DIR)/$$i; \
-	    sed -e '/man\.macros/r man.macros' -e '/man\.macros/d' \
-		    $$i > $(MAN3_INSTALL_DIR)/$$i; \
-	    chmod 444 $(MAN3_INSTALL_DIR)/$$i; \
-	    done;
-	@echo "Cross-linking C API (.3) docs";
-	@$(UNIX_DIR)/mkLinks $(MKLINKS_FLAGS) $(MAN3_INSTALL_DIR)
-	@echo "Installing command (.n) docs";
-	@cd $(TOP_DIR)/doc; for i in *.n; \
-	    do \
-	    rm -f $(MANN_INSTALL_DIR)/$$i; \
-	    sed -e '/man\.macros/r man.macros' -e '/man\.macros/d' \
-		    $$i > $(MANN_INSTALL_DIR)/$$i; \
-	    chmod 444 $(MANN_INSTALL_DIR)/$$i; \
-	    done;
-	@echo "Cross-linking command (.n) docs";
-	@$(UNIX_DIR)/mkLinks $(MKLINKS_FLAGS) $(MANN_INSTALL_DIR)
+	@echo "Installing and cross-linking top-level (.1) docs";
+	@cd $(TOP_DIR)/doc; for i in *.1; do \
+	    $(UNIX_DIR)/installManPage $(MAN_FLAGS) $$i $(MAN1_INSTALL_DIR); \
+	done
+
+	@echo "Installing and cross-linking C API (.3) docs";
+	@cd $(TOP_DIR)/doc; for i in *.3; do \
+	    $(UNIX_DIR)/installManPage $(MAN_FLAGS) $$i $(MAN3_INSTALL_DIR); \
+	done
+
+	@echo "Installing and cross-linking command (.n) docs";
+	@cd $(TOP_DIR)/doc; for i in *.n; do \
+	    $(UNIX_DIR)/installManPage $(MAN_FLAGS) $(MANN_PREFIX) $$i $(MANN_INSTALL_DIR); \
+	done
 
 Makefile: $(UNIX_DIR)/Makefile.in $(DLTEST_DIR)/Makefile.in
 	$(SHELL) config.status
@@ -1194,11 +1179,6 @@
 	mv RPMS/i386/*.rpm .
 	rm -rf RPMS THIS.TCL.SPEC
 
-mklinks:
-	$(TCL_EXE) $(UNIX_DIR)/mkLinks.tcl \
-		$(UNIX_DIR)/../doc/*.[13n] > $(UNIX_DIR)/mkLinks
-	chmod +x $(UNIX_DIR)/mkLinks
-
 #
 # Target to create a proper Tcl distribution from information in the
 # master source directory.  DISTDIR must be defined to indicate where
@@ -1210,7 +1190,7 @@
 ZIPNAME	 = tcl${MAJOR_VERSION}${MINOR_VERSION}${PATCH_LEVEL}-src.zip
 DISTDIR	 = $(DISTROOT)/$(DISTNAME)
 
-dist: mklinks
+dist:
 	rm -rf $(DISTDIR)
 	mkdir -p $(DISTDIR)/unix
 	cp -p $(UNIX_DIR)/*.c $(UNIX_DIR)/*.h $(DISTDIR)/unix
@@ -1220,7 +1200,7 @@
 		$(UNIX_DIR)/tcl.m4 $(UNIX_DIR)/aclocal.m4 \
 		$(UNIX_DIR)/tclConfig.sh.in $(UNIX_DIR)/install-sh \
 		$(UNIX_DIR)/README $(UNIX_DIR)/ldAix $(UNIX_DIR)/tcl.spec \
-		$(UNIX_DIR)/mkLinks \
+		$(UNIX_DIR)/installManPage \
 		$(DISTDIR)/unix
 	chmod 775 $(DISTDIR)/unix/configure $(DISTDIR)/unix/configure.in
 	chmod 775 $(DISTDIR)/unix/ldAix
--- unix/installManPage
+++ unix/installManPage
@@ -0,0 +1,49 @@
+#!/bin/sh
+
+ZIP=:
+while true; do
+    case $1 in
+        -s | --symlinks  )      S=-s;;
+        -z | --compress  )    ZIP=$2;  shift ;;
+	-e | --extension )      Z=$2;  shift ;;
+	-p | --prefix    ) PREFIX=$2;  shift ;;
+	*)  break ;;
+    esac
+    shift
+done
+if test "$#" != 2; then
+    echo "Usage: installManPages <options> file dir"
+    exit 1
+fi
+
+MANPAGE=$1
+DIR=$2
+
+# Backslashes are trippled in the sed script, because it is in backticks
+# which don't pass backslashes literally.
+NAMES=`sed -n '
+    /^\\.SH NAME/{    # Look for a line, that starts with .SH NAME
+	s/^.*$//      # Delete the content of this line
+	n             # Read next line
+	s/,\|\\\ //g  # Remove all commas
+	s/ \\\-.*//   # Delete from \- to the end of line
+	p             # print the result
+    }' $MANPAGE`
+
+SECTION=`echo $MANPAGE | sed 's/.*\(.\)$/\1/'`
+SRCDIR=`dirname $MANPAGE`
+FIRST=""
+for f in $NAMES; do
+    f=$PREFIX${f#$PREFIX}.$SECTION
+    if test -z "$FIRST" ; then
+	FIRST=$f
+	rm -f $DIR/$FIRST.*
+	sed -e "/man\.macros/r $SRCDIR/man.macros" -e "/man\.macros/d" \
+	    $MANPAGE > $DIR/$FIRST
+	chmod 444 $DIR/$FIRST
+	$ZIP $DIR/$FIRST
+    else
+	rm -f $DIR/$f $DIR/$f.*
+	ln $S $FIRST$Z $DIR/$f$Z
+    fi
+done
--- unix/tcl.m4
+++ unix/tcl.m4
@@ -597,6 +597,8 @@
 #	
 #	Decide whether to use symlinks for linking the manpages and
 #	whether to compress the manpages after installation.
+#       If compression is enabled also find out what file name suffix
+#       the given compression program is using.
 #
 # Arguments:
 #	none
@@ -606,11 +608,12 @@
 #	Adds the following arguments to configure:
 #		--enable-man-symlinks
 #		--enable-man-compression=PROG
+#               --enable-man-prefix=STRING
 #
 #	Defines the following variable:
 #
-#	MKLINKS_FLAGS -		The apropriate flags for mkLinks
-#				according to the user's selection.
+#	MAN_FLAGS -	The apropriate flags for installManPage
+#			according to the user's selection.
 #
 #--------------------------------------------------------------------
 AC_DEFUN(SC_CONFIG_MANPAGES, [
@@ -618,20 +621,39 @@
 	AC_MSG_CHECKING([whether to use symlinks for manpages])
 	AC_ARG_ENABLE(man-symlinks,
 		[  --enable-man-symlinks   use symlinks for the manpages],
-		test "$enableval" != "no" && MKLINKS_FLAGS="$MKLINKS_FLAGS --symlinks",
+		test "$enableval" != "no" && MAN_FLAGS="$MAN_FLAGS --symlinks",
 		enableval="no")
 	AC_MSG_RESULT([$enableval])
 
-	AC_MSG_CHECKING([compression for manpages])
+	AC_MSG_CHECKING([whether to compress the manpages])
 	AC_ARG_ENABLE(man-compression,
 		[  --enable-man-compression=PROG
-                          compress the manpages with PROG],
-		test "$enableval" = "yes" && echo && AC_MSG_ERROR([missing argument to --enable-man-compression])
-		test "$enableval" != "no" && MKLINKS_FLAGS="$MKLINKS_FLAGS --compress $enableval",
+			  compress the manpages with PROG],
+		test "$enableval" = "yes" && AC_MSG_ERROR([missing argument to --enable-man-compression])
+		test "$enableval" != "no" && MAN_FLAGS="$MAN_FLAGS --compress $enableval",
+		enableval="no")
+	AC_MSG_RESULT([$enableval])
+	if test "$enableval" != "no"; then
+		AC_MSG_CHECKING([for compressed file suffix])
+		touch TeST
+		$enableval TeST
+		Z=`ls TeST* | sed 's/^....//'`
+		rm -f TeST*
+		MAN_FLAGS="$MAN_FLAGS --extension $Z"
+		AC_MSG_RESULT([$Z])
+	fi
+
+	AC_MSG_CHECKING([whether to use a file name prefix for the manpages])
+	AC_ARG_ENABLE(man-prefix,
+		[  --enable-man-prefix=STRING
+			  use STRING as a prefix to manpage file names],
+		test "$enableval" = "yes" && enableval="tcl_"
+		test "$enableval" != "no" && MANN_PREFIX="--prefix $enableval",
 		enableval="no")
 	AC_MSG_RESULT([$enableval])
 
-	AC_SUBST(MKLINKS_FLAGS)
+	AC_SUBST(MAN_FLAGS)
+	AC_SUBST(MANN_PREFIX)
 ])
 
 #--------------------------------------------------------------------