printw.c 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. /* PDCurses */
  2. #include <curspriv.h>
  3. /*man-start**************************************************************
  4. printw
  5. ------
  6. ### Synopsis
  7. int printw(const char *fmt, ...);
  8. int wprintw(WINDOW *win, const char *fmt, ...);
  9. int mvprintw(int y, int x, const char *fmt, ...);
  10. int mvwprintw(WINDOW *win, int y, int x, const char *fmt,...);
  11. int vwprintw(WINDOW *win, const char *fmt, va_list varglist);
  12. int vw_printw(WINDOW *win, const char *fmt, va_list varglist);
  13. ### Description
  14. The printw() functions add a formatted string to the window at the
  15. current or specified cursor position. The format strings are the same
  16. as used in the standard C library's printf(). (printw() can be used
  17. as a drop-in replacement for printf().)
  18. The duplication between vwprintw() and vw_printw() is for historic
  19. reasons. In PDCurses, they're the same.
  20. ### Return Value
  21. All functions return the number of characters printed, or ERR on
  22. error.
  23. ### Portability
  24. X/Open ncurses NetBSD
  25. printw Y Y Y
  26. wprintw Y Y Y
  27. mvprintw Y Y Y
  28. mvwprintw Y Y Y
  29. vwprintw Y Y Y
  30. vw_printw Y Y Y
  31. **man-end****************************************************************/
  32. #include <string.h>
  33. int vwprintw(WINDOW *win, const char *fmt, va_list varglist)
  34. {
  35. char printbuf[513];
  36. int len;
  37. PDC_LOG(("vwprintw() - called\n"));
  38. #ifdef HAVE_VSNPRINTF
  39. len = vsnprintf(printbuf, 512, fmt, varglist);
  40. #else
  41. len = vsprintf(printbuf, fmt, varglist);
  42. #endif
  43. return (waddstr(win, printbuf) == ERR) ? ERR : len;
  44. }
  45. int printw(const char *fmt, ...)
  46. {
  47. va_list args;
  48. int retval;
  49. PDC_LOG(("printw() - called\n"));
  50. va_start(args, fmt);
  51. retval = vwprintw(stdscr, fmt, args);
  52. va_end(args);
  53. return retval;
  54. }
  55. int wprintw(WINDOW *win, const char *fmt, ...)
  56. {
  57. va_list args;
  58. int retval;
  59. PDC_LOG(("wprintw() - called\n"));
  60. va_start(args, fmt);
  61. retval = vwprintw(win, fmt, args);
  62. va_end(args);
  63. return retval;
  64. }
  65. int mvprintw(int y, int x, const char *fmt, ...)
  66. {
  67. va_list args;
  68. int retval;
  69. PDC_LOG(("mvprintw() - called\n"));
  70. if (move(y, x) == ERR)
  71. return ERR;
  72. va_start(args, fmt);
  73. retval = vwprintw(stdscr, fmt, args);
  74. va_end(args);
  75. return retval;
  76. }
  77. int mvwprintw(WINDOW *win, int y, int x, const char *fmt, ...)
  78. {
  79. va_list args;
  80. int retval;
  81. PDC_LOG(("mvwprintw() - called\n"));
  82. if (wmove(win, y, x) == ERR)
  83. return ERR;
  84. va_start(args, fmt);
  85. retval = vwprintw(win, fmt, args);
  86. va_end(args);
  87. return retval;
  88. }
  89. int vw_printw(WINDOW *win, const char *fmt, va_list varglist)
  90. {
  91. PDC_LOG(("vw_printw() - called\n"));
  92. return vwprintw(win, fmt, varglist);
  93. }