home *** CD-ROM | disk | FTP | other *** search
/ Programmer 7500 / MAX_PROGRAMMERS.iso / CLIPPER / MISC / EMXLIB8F.ZIP / EMX / LIB / VIDEO / VPUTS.C < prev    next >
Encoding:
C/C++ Source or Header  |  1993-01-02  |  1.2 KB  |  67 lines

  1. /* vputs.c (emx+gcc) -- Copyright (c) 1987-1993 by Eberhard Mattes */
  2.  
  3. #include <string.h>
  4. #include <sys/video.h>
  5. #include "video2.h"
  6.  
  7. static void _v_puts1 (const char *p, int len)
  8. {
  9.   int max, cnt;
  10.  
  11.   while (len > 0)
  12.     {
  13.       max = _v_width - _v_x;
  14.       if (len < max)
  15.         cnt = len;
  16.       else
  17.         cnt = max;
  18.       if (cnt > 0)
  19.         {
  20.           v_putm (p, cnt);
  21.           if (cnt == max)
  22.             {
  23.               _v_x = 0;
  24.               ++_v_y;
  25.               if (_v_y >= _v_height)
  26.                 {
  27.                   --_v_y;
  28.                   v_scrollup ();
  29.                 }
  30.             }
  31.           else
  32.             _v_x += cnt;
  33.           v_gotoxy (_v_x, _v_y);
  34.         }
  35.       len -= cnt;
  36.       p += cnt;
  37.     }
  38. }
  39.  
  40.  
  41. void _v_puts_len (const char *p, int len)
  42. {
  43.   const char *q;
  44.   int n;
  45.  
  46.   do
  47.     {
  48.       q = memchr (p, '\n', len);
  49.       if (q == NULL)
  50.         _v_puts1 (p, len);
  51.       else
  52.         {
  53.           n = q - p;
  54.           _v_puts1 (p, n);
  55.           v_putc ('\n');
  56.           p = q + 1;
  57.           len -= n + 1;
  58.         }
  59.     } while (q != NULL);
  60. }
  61.  
  62.  
  63. void v_puts (const char *p)
  64. {
  65.   _v_puts_len (p, strlen (p));
  66. }
  67.