summaryrefslogtreecommitdiffstats
path: root/mbbsd/kaede.c
diff options
context:
space:
mode:
authorpiaip <piaip@63ad8ddf-47c3-0310-b6dd-a9e9d9715204>2007-12-19 23:39:37 +0800
committerpiaip <piaip@63ad8ddf-47c3-0310-b6dd-a9e9d9715204>2007-12-19 23:39:37 +0800
commit60c7059c312f02d1dd5738d7e9c2872a1a123657 (patch)
treea1e4ec9e7c788fcbfaf22882e7629823faeb4067 /mbbsd/kaede.c
parentacf58ca18005d3ed917cbc80a33baeec9d44335f (diff)
downloadpttbbs-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.c93
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