ninep.c 695 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. #include <u.h>
  2. #include <libc.h>
  3. #include <ip.h>
  4. #include <fcall.h>
  5. #include "dat.h"
  6. #include "protos.h"
  7. static void
  8. p_compile(Filter *f)
  9. {
  10. sysfatal("unknown ninep field: %s", f->s);
  11. }
  12. static int
  13. p_filter(Filter *, Msg *)
  14. {
  15. return 0;
  16. }
  17. static int
  18. p_seprint(Msg *m)
  19. {
  20. Fcall f;
  21. char *p;
  22. memset(&f, 0, sizeof(f));
  23. f.type = 0;
  24. f.data = 0; /* protection for %F */
  25. if(convM2S(m->ps, m->pe-m->ps, &f)){
  26. p = m->p;
  27. m->p = seprint(m->p, m->e, "%F", &f);
  28. while(p < m->p){
  29. p = strchr(p, '\n');
  30. if(p == nil)
  31. break;
  32. *p = '\\';
  33. }
  34. } else
  35. dump.seprint(m);
  36. m->pr = nil;
  37. return 0;
  38. }
  39. Proto ninep =
  40. {
  41. "ninep",
  42. p_compile,
  43. p_filter,
  44. p_seprint,
  45. nil,
  46. nil,
  47. defaultframer,
  48. };