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
cras...@lsu.edu

______________________________________________
R-help@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.

Reply via email to