Annotation of 43BSDReno/contrib/mh/miscellany/replies/READ-ME, revision 1.1

1.1     ! root        1: Date:    30 Jan 86 23:07:34 -0800 (Thu)
        !             2: Subject: Repl nifty
        !             3: From:    Bob Desinger <[email protected]>
        !             4: To:      [email protected]
        !             5: cc:      [email protected]
        !             6: 
        !             7: I've long wanted a way to get someone's original message into my
        !             8: replies, prepended with those nice "> " netnews-style borders like so:
        !             9: 
        !            10: > This is the original text that the person wrote.
        !            11: > My reply, of course, prepends the original body with the angle-brackets,
        !            12: > often called brokets, and skips the headers.
        !            13: 
        !            14: The most obvious way would be to use a repl filter.  Alas, there is no
        !            15: mechanism to specify a prepended-text-string for the body, except a
        !            16: number of spaces to indent.  I didn't want to use awk because that was
        !            17: too easy---uh, too slow on a timeshared machine.  I wound up editing
        !            18: the replies anyway, most of the time, but I wanted some mechanism to
        !            19: invoke simply by name.  Ideally it would be some kind of "repl:"
        !            20: mh_profile entry, but I haven't progressed that far.  (I'm open to
        !            21: suggestions.)  I got an idea from a sed script of Peter Honeyman's,
        !            22: which used the extremely rapid sed "b" (branch) instruction to churn
        !            23: through its input.
        !            24: 
        !            25: How to use this script:
        !            26: 
        !            27: 1.  Install it in your bin/ directory, or some other place where you'll
        !            28: be able to easily execute it, under the name "cur".  Csh users may need
        !            29: to type "rehash" to get it into their $path right after installation.
        !            30: 
        !            31: 2.  Change the script's definition of LINK if you don't use "@" for
        !            32: your links when replying.
        !            33: 
        !            34: 3.  Now you're ready to try it.  Type `repl' and get into your favorite
        !            35: editor.  (Yes, I realize this is a hack, but most of the time you wind
        !            36: up getting into the editor anyway, to trim down the quoted [original]
        !            37: message.)  Go to the last line of the header, on the dashes.  Run the
        !            38: program `cur' from the editor, reading its input.  In vi, the command
        !            39: is:
        !            40: 
        !            41:        :r ! cur
        !            42: 
        !            43: and voila!  You have the message body, sans headers, prepended with the
        !            44: brokets.  Type your response and push it off.
        !            45: 
        !            46: I chose the name cur because of its similarity to the mh message "cur".
        !            47: Hopefully, users will think of the editor-invoked command as "read cur".
        !            48: 
        !            49: How it works:
        !            50: 
        !            51: Mh does the setup for you when you type `repl' by installing a link
        !            52: named "@" in the current directory.  This "@" is really a link to the
        !            53: current message, the one you're trying to reply to.
        !            54: 
        !            55: The first part of the sed script, after the ":header" label, spins
        !            56: through the message discarding the first set of lines (the header)
        !            57: until it comes to a blank line.  Then it branches to the label ":eohdr"
        !            58: with the blank line held in sed's pattern space (== current input
        !            59: line).  If you wanted to include parts of the header (like "From:" or
        !            60: "Subject:"), put lines like, say,
        !            61: 
        !            62:        /^From:/s/^From:/> From:/p
        !            63:        /^Subject:/s/^Subject:/> Subject:/p
        !            64: 
        !            65: just after the "/^$/b eohdr" line which branches to the next section
        !            66: when the first empty line is found.
        !            67: 
        !            68: The ":eohdr" part simply discards the blank line and branches to the
        !            69: section labeled ":body."  If you want to put in any leading lines
        !            70: introducing the quoted part of the original message (like "In Reply
        !            71: To:" or whatever), the place to do it is right after the ":eohdr"
        !            72: line.
        !            73: 
        !            74: The last section, after the ":body" label, inserts the broket-and-space
        !            75: before each line.
        !            76: 
        !            77: Enjoy,
        !            78: Bob Desinger
        !            79: 
        !            80: 
        !            81: # This is a shell archive.  Remove anything before this line,
        !            82: # then unpack it by saving it in a file and typing "sh file".
        !            83: #
        !            84: # Wrapped by hpitg!bd on Thu Jan 30 22:21:38 PST 1986
        !            85: # Contents:  cur
        !            86:  
        !            87: echo x - cur
        !            88: sed 's/^@//' > "cur" <<'@//E*O*F cur//'
        !            89: #! /bin/sh
        !            90: : read in the current message, rn-style
        !            91: LINK="@"
        !            92: 
        !            93: # Skip headers, then print out the body lines prepended with "> "
        !            94: sed -n '
        !            95: :header
        !            96: /^$/b eohdr
        !            97: n
        !            98: b header
        !            99: :eohdr
        !           100: n
        !           101: b body
        !           102: :body
        !           103: s/^/> /p
        !           104: n
        !           105: b body' $LINK
        !           106: @//E*O*F cur//
        !           107: chmod u=rwx,g=rx,o=rx cur
        !           108:  
        !           109: echo Inspecting for damage in transit...
        !           110: temp=/tmp/shar$$; dtemp=/tmp/.shar$$
        !           111: trap "rm -f $temp $dtemp; exit" 0 1 2 3 15
        !           112: cat > $temp <<\!!!
        !           113:       17      43     214 cur
        !           114: !!!
        !           115: wc  cur | sed 's=[^ ]*/==' | diff -b $temp - >$dtemp
        !           116: if [ -s $dtemp ]
        !           117: then echo "Ouch [diff of wc output]:" ; cat $dtemp
        !           118: else echo "No problems found."
        !           119: fi
        !           120: exit 0

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.