Xref: feenix.metronet.com news.newusers.questions:6777
Path: feenix.metronet.com!news.utdallas.edu!wupost!udel!news.sprintlink.net!uunet!ftpbox!mothost!delphinium.rtsg.mot.com!king
From: [email protected] (Steven King, Software Archaeologist)
Newsgroups: news.newusers.questions
Subject: Re: Random .sigs?
Date: 11 Oct 1993 16:32:53 GMT
Organization: Motorola Inc., Cellular Infrastructure Group
Lines: 106
Distribution: usa
Message-ID: <[email protected]>
References: <[email protected]>
Reply-To: [email protected]
NNTP-Posting-Host: orchid3.rtsg.mot.com

[email protected] (Peter Sarrett) publicly declared:
>Is it possible to post a random .sig file?  That is, have your .sig file
>chosen randomly from one of a number of possible files every time you
>include it?

Here's a message I posted to news.software readers just last week.
This lets me have a different signature for every newsgroup, or every
hierarchy.  In addition, if no relevant signature is found it'll choose
one from a random collection.  I use 'trn'.  You may be able to adapt
the concept if you use another newsreader.

For my script, signatures are stored under ~/News in the same directory
structure as KILL files.  The name of the signature is "signature",
with no leading dot.  If you want a signature for rec.sport.rugby you
create ~/News/rec/sport/rugby/signature.  If you want a signature for
all of rec.sport.*, create ~/News/rec/sport/signature. Signatures are
searched from the bottom of the tree. A signature for rec.sport.rugby
would be used in preference to the one for the rest of rec.sport.*
when you're posting to the rugby group. If no signatures are found
under ~/News a random one is selected from ~/.sigs. Every file in .sigs
is fair game to be included as a signature, so don't leave your love
letters there!

Trn honors the "NEWSPOSTER" environment variable to tell it to use
a posting program other than Pnews.  You should set this to:

   NEWSPOSTER=Psig %C -h %h


Psig is the script included below.  %C is the name of the newsgroup
to which you're posting, and "-h %h" is the name of the header file.
FYI, the default for NEWSPOSTER is "Pnews -h %h".

This should do it.  Create the signatures, run the script, knock
yourself out!

---=== Cut Here ===---  ---=== Cut Here ===---
#! /usr/local/bin/perl
#
# Steve King, 18 Dec 91
#
# Synopsis: Psig newsgroup [Pnews-parms]
# (Though this should only be called from a newsreader...)
#
# Selects a signature based on the current newsgroup.  Psig will
# read the News directory tree in the user's home directory
# ($HOME/News/...) to find a file called "signature" in the
# current newsgroup.  If that file doesn't exist, the directory
# tree will be followed backwards through the hierarchy looking for
# a signature.  If none are found a random signature will be picked
# out of $sigdir
#
# When a signature is found it is copied to $HOME/.signature for
# inclusion in the article by inews.  Pnews is then called to
# create and post the article.
#
# The $sigdir variable can be pointed to any directory.  That
# directory should contain ONLY files you want to use as .signatures,
# and nothing else.  Any file in $sigdir is fair game for inclusion.
#
# To get this to work from (t)rn, set the NEWSPOSTER environment
# variable to "Psig %C -h %h".

$home   = $ENV{'HOME'};
$sigdir = "$home/.sigs";

@group = ("News",split(/\./,shift(@ARGV)));
$count  = @group;
$found  = 0;

while (@group) {
 $gname = join('/',@group);
 if (-f "$home/$gname/signature") {
   print "(Using signature from $home/$gname)\n";
   system("cp $home/$gname/signature $home/.signature");
   $found = 1;
   @group = ("dummy");
 }
 pop(@group);
}

if (! $found) {
 opendir(SIGS,$sigdir);
 @siglist = grep(!/^\./,readdir(SIGS));
 closedir(SIGS);

 $seed = time % ($$ * $$);              # Seems to provide a good seed.
 srand($seed);
 $chosen = int((rand() * @siglist));

 print "(Using random signature)\n";
 system("cp $sigdir/@siglist[$chosen] $home/.signature");
}

if ($ENV{'DOTDIR'} && ($ENV{'DOTDIR'} ne $home)) {
 system("cp $home/.signature $ENV{'DOTDIR'}/.signature");
}
system("cat $home/.signature");
system("Pnews @ARGV");
---=== Cut Here ===---  ---=== Cut Here ===---

--
-------------------------------------------------------+-----------------------
You don't know how much you don't know until you       |      Steven King
know a lot.                                            |   Motorola Cellular
                                      (Nick Holland)  |   [email protected]