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

Stuart Luppescu slu at ccsr.uchicago.edu
Wed Sep 1 22:49:28 CEST 2010


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)  >



More information about the R-help mailing list