diff options
author | piaip <piaip@63ad8ddf-47c3-0310-b6dd-a9e9d9715204> | 2007-12-19 23:39:37 +0800 |
---|---|---|
committer | piaip <piaip@63ad8ddf-47c3-0310-b6dd-a9e9d9715204> | 2007-12-19 23:39:37 +0800 |
commit | 60c7059c312f02d1dd5738d7e9c2872a1a123657 (patch) | |
tree | a1e4ec9e7c788fcbfaf22882e7629823faeb4067 /mbbsd/kaede.c | |
parent | acf58ca18005d3ed917cbc80a33baeec9d44335f (diff) | |
download | pttbbs-60c7059c312f02d1dd5738d7e9c2872a1a123657.tar pttbbs-60c7059c312f02d1dd5738d7e9c2872a1a123657.tar.gz pttbbs-60c7059c312f02d1dd5738d7e9c2872a1a123657.tar.bz2 pttbbs-60c7059c312f02d1dd5738d7e9c2872a1a123657.tar.lz pttbbs-60c7059c312f02d1dd5738d7e9c2872a1a123657.tar.xz pttbbs-60c7059c312f02d1dd5738d7e9c2872a1a123657.tar.zst pttbbs-60c7059c312f02d1dd5738d7e9c2872a1a123657.zip |
- isolate low level termial i/o api calls, prepare for pfterm
(piaip's flat terminal system)
git-svn-id: http://opensvn.csie.org/pttbbs/trunk/pttbbs@3710 63ad8ddf-47c3-0310-b6dd-a9e9d9715204
Diffstat (limited to 'mbbsd/kaede.c')
-rw-r--r-- | mbbsd/kaede.c | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/mbbsd/kaede.c b/mbbsd/kaede.c index 8e328e5d..92b26885 100644 --- a/mbbsd/kaede.c +++ b/mbbsd/kaede.c @@ -1,6 +1,9 @@ /* $Id$ */ #include "bbs.h" +// TODO move stuff to libbbs(or util)/string.c, ... +// this file can be removed (or not?) + char * Ptt_prints(char *str, size_t size, int mode) { @@ -71,3 +74,93 @@ Ptt_prints(char *str, size_t size, int mode) return str; } +// utility from screen.c +void +outs_n(const char *str, int n) +{ + while (*str && n--) { + outc(*str++); + } +} + +// XXX left-right (for large term) +// TODO someday please add ANSI detection version +void +outslr(const char *left, int leftlen, const char *right, int rightlen) +{ + if (left == NULL) + left = ""; + if (right == NULL) + right = ""; + if(*left && leftlen < 0) + leftlen = strlen(left); + if(*right && rightlen < 0) + rightlen = strlen(right); + // now calculate padding + rightlen = t_columns - leftlen - rightlen; + outs(left); + + // ignore right msg if we need to. + if(rightlen >= 0) + { + while(--rightlen > 0) + outc(' '); + outs(right); + } else { + rightlen = t_columns - leftlen; + while(--rightlen > 0) + outc(' '); + } +} + + +/* Jaky */ +void +out_lines(const char *str, int line) +{ + while (*str && line) { + outc(*str); + if (*str == '\n') + line--; + str++; + } +} + +void +outmsg(const char *msg) +{ + move(b_lines - msg_occupied, 0); + clrtoeol(); + outs(msg); +} + +void +outmsglr(const char *msg, int llen, const char *rmsg, int rlen) +{ + move(b_lines - msg_occupied, 0); + clrtoeol(); + outslr(msg, llen, rmsg, rlen); + outs(ANSI_RESET ANSI_CLRTOEND); +} + +void +prints(const char *fmt,...) +{ + va_list args; + char buff[1024]; + + va_start(args, fmt); + vsnprintf(buff, sizeof(buff), fmt, args); + va_end(args); + outs(buff); +} + +void +mouts(int y, int x, const char *str) +{ + move(y, x); + clrtoeol(); + outs(str); +} + +// vim:ts=4 |