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

Christian Raschke crasch2 at tigers.lsu.edu
Wed Sep 1 23:32:17 CEST 2010


Simply using option --slave instead seems to do the trick.

$ /usr/bin/R --slave < test-fortune.R

Similarly to Brian, I'm much more reluctant to help people who don't 
exist --
who knows, maybe you're a computer program who has just passed the 
Turing test
:-)
    -- Martin Maechler (about postings with anonymous e-mail addresses and
       without real names)
       R-help (March 2006)

CR


On 09/01/2010 03: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.
>    


-- 
Christian Raschke
Department of Economics
and
ISDS Research Lab (HSRG)
Louisiana State University
Patrick Taylor Hall, Rm 2128
Baton Rouge, LA 70803
crasch2 at lsu.edu



More information about the R-help mailing list