> plumb start 9 cat /home/ruda/CALC/manu/$1_source | plumb -i -d edit -a
> action=showdata
> 
> I am getting this message when it is used
> 
> /home/ruda/CALC/systems/ni4ni4ni4_264_fcc001_2/rotxy/Cxy.eps
> /home/ruda/CALC/systems/ni4ni4ni4_264_fcc001_2/rotzx/Czx.eps

why are you executing a rule instead of directly plumbing to edit?
i'm not sure all of the wheres and whys of what you're doing, but
it smells too complicated.  also, using annoying characters like
'[' and '] in filenames is complicating matters.

> Also, as I am using p9p now, I don't know who interprets the part
> after the 'plumb start'. I first, believing that rc does the job, had
> e.g.
> cat /home/ruda/CALC/manu/^$1^_source
> there (note the ^s), but then those ^s stayed intact in the name
> (which wasn't naturally found).

both the plumber and rc get a crack at it.  it's like `` in the
bourne shell.

so, for example, if i want to quote something in rc because i've
got a globbing character or other problem, i'd need a rule like
this:

type    is      text
data    matches '\* x \*'
plumb   start   rc -c 'echo '''$0''' >> /tmp/junk'

3 's are needed.  two to generate a character-stuffed quote and
one to terminate or start quoting.  $0 must be interpreted by
plumber.

by the way, there's a (mostly harmless) bug in plumb's
basic rules:

/n/sources/plan9//sys/lib/plumb/basic:92,98 - basic:92,98
  # man index entries are synthesized
  type is text
  data matches '([a-zA-Z¡-�0-9_\-./]+)\(([1-8])\)'
- plumb start rc -c 'man -b '$2' '$1'
+ plumb start rc -c 'man -b '$2' '$1
  
  # start rule for images without known suffixes
  dst is image

the reason this extra ' at the end is not flagged is
because the plumber doesn't check for unterminated
quotes.  this change to plumb's source would need
to be made to enable checking:

/n/sources/plan9//sys/src/cmd/plumb/rules.c:330,335 - rules.c:331,339
        if(ends)
                *ends = s;
        *p = '\0';
+       /* disabled due to default plumbing having broken rule */
+       if(0 && quoting)
+               return "eof-in-quoted-string";
        return ebuf;
  }
  
- erik

Reply via email to