TOCRC(0)

πŸ“¦ version 11.0, in nixpkgs unstable

πŸ’… TOCRC(0) πŸ’…

okay bestie, so you wanna know about TOCRC(0)? it's giving iconic shell script energy, and honestly? it's a whole mood. this is the manual page for tocrc, a script that builds table of contents files for man pages. no cap, it's lowkey genius. let me break it down for you πŸ’–

✨ what it does ✨

so like, this script is a shell script that makes tocx files for all sections (1 through 8) and everything else. it also makes a permuted index and toc files. it uses /usr/libexec/getNAME, sed, ptx, grep, and some shell magic. first it sets a temp file /tmp/toc$$ and traps signals 2, 3, 15 to clean up and exit. then it checks if tocx8 exists β€” if not, it loops over sections 1-8 and runs /usr/libexec/getNAME -t \cat man$x`piped throughsedwith a bunch of expressions to createtocx$x. then it cats tocx*andcshcmdinto/tmp/cattoc. then it runs ptx -r -t -b break -f -w 108 -i ignore /tmp/cattoc ptxx. there's a note: if that fails, try gptxfrom GNU coreutils (pkgsrc/sysutils/coreutils). then for each section 1-8, it grepsΛ†introfromtocx$xinto$tmp, then uses sedto do some transformations, and writes the result totoc$x`. finally, it exits. periodt. πŸ’…

πŸ“œ the script itself πŸ“œ

here's the whole script, verbatim. every single line, every comment, every hyphen β€” it's all here. don't @ me, it's a lot but it's iconic. πŸŽ€

#!/bin/sh  ‐  #  #       $NetBSD: tocrc,v 1.4 2004/03/31 02:10:00
snj Exp $ # # Copyright (c) 1993 #       The Regents of the  Uni‐
versity  of California.  All rights reserved.  # # Redistribution
and use in source and binary forms, with or without  #  modifica‐
tion,  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 mate‐
rials provided with the distribution.  # 3. All advertising mate‐
rials mentioning features or use of this software #    must  dis‐
play the following acknowledgement: #       This product includes
software  developed  by  the  University  of  #       California,
Berkeley and its contributors.  # 4. Neither the name of the Uni‐
versity nor the names of its contributors #    may be used to en‐
dorse or promote products derived from this software #    without
specific prior written permission.  # # THIS SOFTWARE IS PROVIDED
BY THE REGENTS 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  PUR‐
POSE # ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIB‐
UTORS  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 # LIABIL‐
ITY, 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.   #  #        @(#)tocrc       8.2
(Berkeley) 5/5/94 # tmp=/tmp/toc$$ trap "rm $tmp ; exit" 2 3 15 :
tocx files for all sections and everything else

if  [  !  ‐f  tocx8  ]; then         for x in 1 2 3 4 5 6 7 8; do
                /usr/libexec/getNAME    ‐t    β€˜cat    man$xβ€˜    |
                        sed                                    ‐e
’s/.s‐2//g’                                    ‐e     ’s/.s‐1//g’
                         ‐e                            ’s/.s0//g’
                            ‐e                        ’s/.s+1//g’
                               ‐e     ’s/      *.‐      */:    /’
                              ‐e            ’s/            *$/./’
                            ‐e                ’s/.TH.*        //’
                            ‐e                          ’s/@g@//’
                             ‐e   ’s/@G@//’                     >
tocx$x         done fi :   permuted index and toc files

cat tocx* cshcmd > /tmp/cattoc

# If this  fails,  try  gptx  from  GNU  coreutils  (pkgsrc/sysu‐
tils/coreutils)  ptx ‐r ‐t ‐b break ‐f ‐w 108 ‐i ignore /tmp/cat‐
toc ptxx

for x in 1 2 3 4 5 6 7 8; do         grep ’ˆintro’ <tocx$x  >$tmp
        sed              ‐e  ’2,${’                ‐e ’/Λ†intro/d’
         ‐e  ’}’                 ‐e   ’s/   .*://’             ‐e
’s/.$//’                ‐e   ’s/([Λ†)]*)   /"   "/’             ‐e
’s/.*/.xx "&"/’              ‐e ’/""/d’              $tmp  tocx$x
    >toc$x done exit

πŸŽ€ sign-off πŸŽ€

and that's the tea! this script is from NetBSD, version 1.4, dated 2004/03/31, by snj. also big shoutout to the Berkeley version 8.2 from 5/5/94. the copyright is the full BSD license, so you know it's legit. periodt. πŸ’–βœ¨πŸŒˆ

πŸ“¦ where this page comes from