print.c 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. #include <plan9.h>
  2. #define SIZE 4096
  3. extern int printcol;
  4. int
  5. print(char *fmt, ...)
  6. {
  7. char buf[SIZE], *out;
  8. va_list arg, temp;
  9. int n;
  10. va_start(arg, fmt);
  11. va_copy(temp, arg);
  12. out = doprint(buf, buf+SIZE, fmt, &temp);
  13. va_end(temp);
  14. va_end(arg);
  15. n = write(1, buf, (long)(out-buf));
  16. return n;
  17. }
  18. int
  19. fprint(int f, char *fmt, ...)
  20. {
  21. char buf[SIZE], *out;
  22. va_list arg, temp;
  23. int n;
  24. va_start(arg, fmt);
  25. va_copy(temp, arg);
  26. out = doprint(buf, buf+SIZE, fmt, &temp);
  27. va_end(temp);
  28. va_end(arg);
  29. n = write(f, buf, (long)(out-buf));
  30. return n;
  31. }
  32. int
  33. sprint(char *buf, char *fmt, ...)
  34. {
  35. char *out;
  36. va_list arg, temp;
  37. int scol;
  38. scol = printcol;
  39. va_start(arg, fmt);
  40. va_copy(temp, arg);
  41. out = doprint(buf, buf+SIZE, fmt, &temp);
  42. va_end(temp);
  43. va_end(arg);
  44. printcol = scol;
  45. return out-buf;
  46. }
  47. int
  48. snprint(char *buf, int len, char *fmt, ...)
  49. {
  50. char *out;
  51. va_list arg, temp;
  52. int scol;
  53. scol = printcol;
  54. va_start(arg, fmt);
  55. va_copy(temp, arg);
  56. out = doprint(buf, buf+len, fmt, &temp);
  57. va_end(temp);
  58. va_end(arg);
  59. printcol = scol;
  60. return out-buf;
  61. }
  62. char*
  63. seprint(char *buf, char *e, char *fmt, ...)
  64. {
  65. char *out;
  66. va_list arg, temp;
  67. int scol;
  68. scol = printcol;
  69. va_start(arg, fmt);
  70. va_copy(temp, arg);
  71. out = doprint(buf, e, fmt, &temp);
  72. va_end(temp);
  73. va_end(arg);
  74. printcol = scol;
  75. return out;
  76. }