-
-// a->pos.x = ANSI_INVAL;
-
- if (a->pos.x != ANSI_INVAL)
- {
-
- if ((!dx) && (!dy))
- return;
-
- if (!dy)
- {
- if (dx == 1)
- {
- a->terminal->xmit (a->terminal, "\033[C", 3);
- }
- else if (dx == -1)
- {
- a->terminal->xmit (a->terminal, "\033[D", 3);
- }
- else
- {
- n = snprintf (buf, sizeof (buf), "\033[%dG", p.x + 1);
- a->terminal->xmit (a->terminal, buf, n);
- }
- }
- else if (!dx)
- {
- if (dy == -1)
- {
- a->terminal->xmit (a->terminal, "\033[A", 3);
- }
- else if (dy == 1)
- {
- a->terminal->xmit (a->terminal, "\033[B", 3);
- }
- else if (dy < 0)
- {
- n = snprintf (buf, sizeof (buf), "\033[%dA", -dy);
- a->terminal->xmit (a->terminal, buf, n);
- }
- else
- {
- n = snprintf (buf, sizeof (buf), "\033[%dB", dy);
- a->terminal->xmit (a->terminal, buf, n);
- }
- }
- else if (!p.x)
- {
- if (dy == 1)
- {
- a->terminal->xmit (a->terminal, "\033[E", 3);
- }
- else if (dy == -1)
- {
- a->terminal->xmit (a->terminal, "\033[F", 3);
- }
- else if (dy > 0)
- {
- n = snprintf (buf, sizeof (buf), "\033[%dE", dy);
- a->terminal->xmit (a->terminal, buf, n);
- }
- else
- {
- n = snprintf (buf, sizeof (buf), "\033[%dF", -dy);
- a->terminal->xmit (a->terminal, buf, n);
- }
- }
- else
- {
- n = snprintf (buf, sizeof (buf), "\033[%d;%dH", p.y + 1, p.x + 1);
- a->terminal->xmit (a->terminal, buf, n);
- }
- }
- else
- {
+ int err = 0;
+
+ // a->pos.x = ANSI_INVAL;
+
+ if (a->pos.x != ANSI_INVAL) {
+
+ if ((!dx) && (!dy))
+ return 0;
+
+ if (!dy) {
+ if (dx == 1) {
+ if (a->terminal->xmit (a->terminal, "\033[C", 3) != 3)
+ err++;
+ } else if (dx == -1) {
+ if (a->terminal->xmit (a->terminal, "\033[D", 3) != 3)
+ err++;
+ } else {
+ n = snprintf (buf, sizeof (buf), "\033[%dG", p.x + 1);
+ if (a->terminal->xmit (a->terminal, buf, n) != n)
+ err++;
+ }
+ } else if (!dx) {
+ if (dy == -1) {
+ if (a->terminal->xmit (a->terminal, "\033[A", 3) != 3)
+ err++;
+ } else if (dy == 1) {
+ if (a->terminal->xmit (a->terminal, "\033[B", 3) != 3)
+ err++;
+ } else if (dy < 0) {
+ n = snprintf (buf, sizeof (buf), "\033[%dA", -dy);
+ if (a->terminal->xmit (a->terminal, buf, n) != n)
+ err++;
+ } else {
+ n = snprintf (buf, sizeof (buf), "\033[%dB", dy);
+ if (a->terminal->xmit (a->terminal, buf, n) != n)
+ err++;
+ }
+ } else if (!p.x) {
+ if (dy == 1) {
+ if (a->terminal->xmit (a->terminal, "\033[E", 3) != 3)
+ err++;
+ } else if (dy == -1) {
+ if (a->terminal->xmit (a->terminal, "\033[F", 3) != 3)
+ err++;
+ } else if (dy > 0) {
+ n = snprintf (buf, sizeof (buf), "\033[%dE", dy);
+ if (a->terminal->xmit (a->terminal, buf, n) != n)
+ err++;
+ } else {
+ n = snprintf (buf, sizeof (buf), "\033[%dF", -dy);
+ if (a->terminal->xmit (a->terminal, buf, n) != n)
+ err++;
+ }
+ } else {