stdio.h defines BUFSIZ
[unix-history] / usr / src / usr.bin / window / tt.h
index db4a349..f75ec69 100644 (file)
@@ -2,19 +2,12 @@
  * Copyright (c) 1983 Regents of the University of California.
  * All rights reserved.
  *
  * Copyright (c) 1983 Regents of the University of California.
  * All rights reserved.
  *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms and that any documentation,
- * advertising materials, and other materials related to such
- * distribution and use acknowledge that the software was developed
- * by the University of California, Berkeley.  The name of the
- * University may not be used to endorse or promote products derived
- * from this software without specific prior written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+ * This code is derived from software contributed to Berkeley by
+ * Edward Wang at The University of California, Berkeley.
  *
  *
- *     @(#)tt.h        3.20 (Berkeley) %G%
+ * %sccs.include.redist.c%
+ *
+ *     @(#)tt.h        3.27 (Berkeley) %G%
  */
 
 /*
  */
 
 /*
  */
 struct tt {
                /* startup and cleanup */
  */
 struct tt {
                /* startup and cleanup */
-       int (*tt_init)();
+       int (*tt_start)();
        int (*tt_end)();
 
                /* terminal functions */
        int (*tt_move)();
        int (*tt_insline)();
        int (*tt_delline)();
        int (*tt_end)();
 
                /* terminal functions */
        int (*tt_move)();
        int (*tt_insline)();
        int (*tt_delline)();
+       int (*tt_inschar)();
+       int (*tt_insspace)();
        int (*tt_delchar)();
        int (*tt_write)();              /* write a whole block */
        int (*tt_putc)();               /* write one character */
        int (*tt_delchar)();
        int (*tt_write)();              /* write a whole block */
        int (*tt_putc)();               /* write one character */
@@ -38,14 +33,14 @@ struct tt {
        int (*tt_scroll_down)();
        int (*tt_scroll_up)();
        int (*tt_setscroll)();          /* set scrolling region */
        int (*tt_scroll_down)();
        int (*tt_scroll_up)();
        int (*tt_setscroll)();          /* set scrolling region */
-       int (*tt_setinsert)();          /* set insert mode */
        int (*tt_setmodes)();           /* set display modes */
        int (*tt_setmodes)();           /* set display modes */
+       int (*tt_set_token)();          /* define a token */
+       int (*tt_put_token)();          /* refer to a defined token */
 
                /* internal variables */
        char tt_modes;                  /* the current display modes */
        char tt_nmodes;                 /* the new modes for next write */
        char tt_insert;                 /* currently in insert mode */
 
                /* internal variables */
        char tt_modes;                  /* the current display modes */
        char tt_nmodes;                 /* the new modes for next write */
        char tt_insert;                 /* currently in insert mode */
-       char tt_ninsert;                /* insert mode on next write */
        int tt_row;                     /* cursor row */
        int tt_col;                     /* cursor column */
        int tt_scroll_top;              /* top of scrolling region */
        int tt_row;                     /* cursor row */
        int tt_col;                     /* cursor column */
        int tt_scroll_top;              /* top of scrolling region */
@@ -54,16 +49,30 @@ struct tt {
                /* terminal info */
        int tt_nrow;                    /* number of display rows */
        int tt_ncol;                    /* number of display columns */
                /* terminal info */
        int tt_nrow;                    /* number of display rows */
        int tt_ncol;                    /* number of display columns */
-       char tt_hasinsert;              /* has insert character */
        char tt_availmodes;             /* the display modes supported */
        char tt_wrap;                   /* has auto wrap around */
        char tt_retain;                 /* can retain below (db flag) */
        char tt_availmodes;             /* the display modes supported */
        char tt_wrap;                   /* has auto wrap around */
        char tt_retain;                 /* can retain below (db flag) */
+       short tt_padc;                  /* the pad character */
+       int tt_ntoken;                  /* number of compression tokens */
+       int tt_token_min;               /* minimun token size */
+       int tt_token_max;               /* maximum token size */
+       int tt_set_token_cost;          /* cost in addition to string */
+       int tt_put_token_cost;          /* constant cost */
 
                /* the frame characters */
        short *tt_frame;
 
                /* the frame characters */
        short *tt_frame;
+
+               /* the output routine */
+       int (*tt_flush)();
 };
 struct tt tt;
 
 };
 struct tt tt;
 
+/*
+ * tt_padc is used by the compression routine.
+ * It is a short to allow the driver to indicate that there is no padding.
+ */
+#define TT_PADC_NONE 0x100
+
 /*
  * List of terminal drivers.
  */
 /*
  * List of terminal drivers.
  */
@@ -95,11 +104,18 @@ int tttputc();
 
 /*
  * Buffered output without stdio.
 
 /*
  * Buffered output without stdio.
- * These variables have different meanings from the ww_ob* variabels.
+ * These variables have different meanings from the ww_ob* variables.
  * But I'm too lazy to think up different names.
  */
  * But I'm too lazy to think up different names.
  */
-char tt_ob[512];
+char *tt_ob;
 char *tt_obp;
 char *tt_obe;
 #define ttputc(c)      (tt_obp < tt_obe ? (*tt_obp++ = (c)) \
 char *tt_obp;
 char *tt_obe;
 #define ttputc(c)      (tt_obp < tt_obe ? (*tt_obp++ = (c)) \
-                               : (ttflush(), *tt_obp++ = (c)))
+                               : ((*tt.tt_flush)(), *tt_obp++ = (c)))
+
+/*
+ * Convenience macros for the drivers
+ * They require char.h
+ */
+#define ttctrl(c)      ttputc(ctrl(c))
+#define ttesc(c)       (ttctrl('['), ttputc(c))