[R] [semi-OT] Using fortune() in an email signature
Matt Shotwell
shotwelm at musc.edu
Thu Sep 2 00:11:16 CEST 2010
Or using R & GNU tools:
matt at max:~$ R -e "fortunes::fortune()" | gawk '/^[^>]/ {print}'
It's not a question of trying variations, rather of following
instructions.
-- Brian D. Ripley (about using 'Writing R Extensions')
R-help (January 2006)
-Matt
On Wed, 2010-09-01 at 16:49 -0400, Stuart Luppescu wrote:
> Hello, As you can see from my signature in this message, I use the R
> fortune function to generate a fortune, which is then fed to the
> signature program, which constructs a named pipe containing the
> fortune-bearing sig, which is then included in mail messages. The
> problem is that it's got extraneous junk in it and I can't figure out
> how to get rid of it. This is the command that generates the fortune:
>
> /usr/bin/R --no-save --no-restore -q < /home/sl70/print-fortune.R
> (where print-fortune.R is just
> library(fortunes)
> fortune()
> )
>
> This produces this:
> > library(fortunes)
> > fortune()
>
> Michael Watson: Hopefully this one isn't in the manual or I am about to get shot :-S
> Peter Dalgaard: *Kapow*...
> -- Michael Watson and Peter Dalgaard (question on axis())
> R-help (February 2006)
>
> >
>
> I would like to remove the first two lines and the last line, so I
> changed the command to this:
> /usr/bin/R --no-save --no-restore < /home/sl70/print-fortune.R |tail \
> -n +23 | head -n -2 2> /dev/null
>
> That give the desired result when I run it at the command line, but when
> I feed it to the signature program, I get this message:
>
> Program /usr/local/bin/r-fortune doesn't seem to exist
>
> This is the signature program code that produces this error:
>
> /* check for existence of program by forking and then trying to
> exec() it in the child */
> pid = fork();
> switch (pid) {
> case -1: /* oh well */
> perror("Couldn't fork() a child process");
> exit(EXIT_FAILURE);
> case 0: /* in child */
> /* close stdout */
> close(1);
> execlp(producer, producer, (char *) 0);
> exit(EXIT_FAILURE);
> default:
> waitpid(pid, &exit_status, 0);
> if (exit_status != EXIT_SUCCESS) {
> fprintf(stderr, "Program %s doesn't seem to exist
> \n",
> producer);
> exit(EXIT_FAILURE);
> }
>
> Unfortunately, I don't understand this at all. Can anyone give me a clue
> as to what's happening?
>
> Thanks.
--
Matthew S. Shotwell
Graduate Student
Division of Biostatistics and Epidemiology
Medical University of South Carolina
More information about the R-help
mailing list