[R] [semi-OT] Using fortune() in an email signature

David Winsemius dwinsemius at comcast.net
Wed Sep 1 22:55:04 CEST 2010


On Sep 1, 2010, at 4:49 PM, 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.
> -- 
> Stuart Luppescu -=- slu .at. ccsr.uchicago.edu
> University of Chicago -=- CCSR
> 才文と智奈美の父 -=-    Kernel 2.6.33-gentoo-r2
>> library(fortunes) > fortune()  Overall, SAS is
> about 11 years behind R and S-Plus in statistical
> capabilities (last year it was about 10 years
> behind) in my estimation.    -- Frank Harrell (SAS
> User, 1969-1991)       R-help (September 2003)  >
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.

David Winsemius, MD
West Hartford, CT



More information about the R-help mailing list