document distributed with 4.3BSD
[unix-history] / usr / src / lib / libcurses / deleteln.c
index 95354d9..b217ca3 100644 (file)
@@ -1,25 +1,47 @@
+/*
+ * Copyright (c) 1980 Regents of the University of California.
+ * All rights reserved.  The Berkeley software License Agreement
+ * specifies the terms and conditions for redistribution.
+ */
+
+#ifndef lint
+static char sccsid[] = "@(#)deleteln.c 5.1 (Berkeley) %G%";
+#endif not lint
+
 # include      "curses.ext"
 
 /*
  *     This routine deletes a line from the screen.  It leaves
  * (_cury,_curx) unchanged.
  *
 # include      "curses.ext"
 
 /*
  *     This routine deletes a line from the screen.  It leaves
  * (_cury,_curx) unchanged.
  *
- * %G% (Berkeley) @(#)deleteln.c       1.4
  */
 wdeleteln(win)
  */
 wdeleteln(win)
-reg WINDOW     *win; {
-
+reg WINDOW     *win;
+{
        reg char        *temp;
        reg int         y;
        reg char        *end;
        reg char        *temp;
        reg int         y;
        reg char        *end;
+       reg int         x;
 
 
+# ifdef DEBUG
+       fprintf(outf, "DELETELN(%0.2o)\n", win);
+# endif
        temp = win->_y[win->_cury];
        for (y = win->_cury; y < win->_maxy - 1; y++) {
        temp = win->_y[win->_cury];
        for (y = win->_cury; y < win->_maxy - 1; y++) {
-               win->_y[y] = win->_y[y+1];
-               win->_firstch[y] = 0;
-               win->_lastch[y] = win->_maxx - 1;
+               if (win->_orig == NULL)
+                       win->_y[y] = win->_y[y + 1];
+               else
+                       bcopy(win->_y[y + 1], win->_y[y], win->_maxx);
+               touchline(win, y, 0, win->_maxx - 1);
        }
        }
+       if (win->_orig == NULL)
+               win->_y[y] = temp;
+       else
+               temp = win->_y[y];
        for (end = &temp[win->_maxx]; temp < end; )
                *temp++ = ' ';
        for (end = &temp[win->_maxx]; temp < end; )
                *temp++ = ' ';
-       win->_y[win->_maxy-1] = temp - win->_maxx;
+       touchline(win, win->_cury, 0, win->_maxx - 1);
+       if (win->_orig == NULL)
+               _id_subwins(win);
+       return OK;
 }
 }