Browse Source

Merge branch 'js/sideband-stderr'

* js/sideband-stderr:
  winansi: support ESC [ K (erase in line)
  recv_sideband: Bands #2 and #3 always go to stderr
maint
Junio C Hamano 16 years ago
parent
commit
6e5660a7ab
  1. 2
      builtin-archive.c
  2. 2
      builtin-fetch-pack.c
  3. 18
      compat/winansi.c
  4. 19
      sideband.c
  5. 2
      sideband.h

2
builtin-archive.c

@ -52,7 +52,7 @@ static int run_remote_archiver(int argc, const char **argv, @@ -52,7 +52,7 @@ static int run_remote_archiver(int argc, const char **argv,
die("git archive: expected a flush");

/* Now, start reading from fd[0] and spit it out to stdout */
rv = recv_sideband("archive", fd[0], 1, 2);
rv = recv_sideband("archive", fd[0], 1);
close(fd[0]);
close(fd[1]);
rv |= finish_connect(conn);

2
builtin-fetch-pack.c

@ -482,7 +482,7 @@ static int sideband_demux(int fd, void *data) @@ -482,7 +482,7 @@ static int sideband_demux(int fd, void *data)
{
int *xd = data;

return recv_sideband("fetch-pack", xd[0], fd, 2);
return recv_sideband("fetch-pack", xd[0], fd);
}

static int get_pack(int xd[2], char **pack_lockfile)

18
compat/winansi.c

@ -18,8 +18,6 @@ @@ -18,8 +18,6 @@

This file is git-specific. Therefore, this file does not attempt
to implement any codes that are not used by git.

TODO: K
*/

static HANDLE console;
@ -79,6 +77,20 @@ static void set_console_attr(void) @@ -79,6 +77,20 @@ static void set_console_attr(void)
SetConsoleTextAttribute(console, attributes);
}

static void erase_in_line(void)
{
CONSOLE_SCREEN_BUFFER_INFO sbi;

if (!console)
return;

GetConsoleScreenBufferInfo(console, &sbi);
FillConsoleOutputCharacterA(console, ' ',
sbi.dwSize.X - sbi.dwCursorPosition.X, sbi.dwCursorPosition,
NULL);
}


static const char *set_attr(const char *str)
{
const char *func;
@ -218,7 +230,7 @@ static const char *set_attr(const char *str) @@ -218,7 +230,7 @@ static const char *set_attr(const char *str)
set_console_attr();
break;
case 'K':
/* TODO */
erase_in_line();
break;
default:
/* Unsupported code */

19
sideband.c

@ -19,7 +19,7 @@ @@ -19,7 +19,7 @@

#define FIX_SIZE 10 /* large enough for any of the above */

int recv_sideband(const char *me, int in_stream, int out, int err)
int recv_sideband(const char *me, int in_stream, int out)
{
unsigned pf = strlen(PREFIX);
unsigned sf;
@ -41,8 +41,7 @@ int recv_sideband(const char *me, int in_stream, int out, int err) @@ -41,8 +41,7 @@ int recv_sideband(const char *me, int in_stream, int out, int err)
if (len == 0)
break;
if (len < 1) {
len = sprintf(buf, "%s: protocol error: no band designator\n", me);
safe_write(err, buf, len);
fprintf(stderr, "%s: protocol error: no band designator\n", me);
return SIDEBAND_PROTOCOL_ERROR;
}
band = buf[pf] & 0xff;
@ -50,8 +49,8 @@ int recv_sideband(const char *me, int in_stream, int out, int err) @@ -50,8 +49,8 @@ int recv_sideband(const char *me, int in_stream, int out, int err)
switch (band) {
case 3:
buf[pf] = ' ';
buf[pf+1+len] = '\n';
safe_write(err, buf, pf+1+len+1);
buf[pf+1+len] = '\0';
fprintf(stderr, "%s\n", buf);
return SIDEBAND_REMOTE_ERROR;
case 2:
buf[pf] = ' ';
@ -95,12 +94,12 @@ int recv_sideband(const char *me, int in_stream, int out, int err) @@ -95,12 +94,12 @@ int recv_sideband(const char *me, int in_stream, int out, int err)
memcpy(save, b + brk, sf);
b[brk + sf - 1] = b[brk - 1];
memcpy(b + brk - 1, suffix, sf);
safe_write(err, b, brk + sf);
fprintf(stderr, "%.*s", brk + sf, b);
memcpy(b + brk, save, sf);
len -= brk;
} else {
int l = brk ? brk : len;
safe_write(err, b, l);
fprintf(stderr, "%.*s", l, b);
len -= l;
}

@ -112,10 +111,8 @@ int recv_sideband(const char *me, int in_stream, int out, int err) @@ -112,10 +111,8 @@ int recv_sideband(const char *me, int in_stream, int out, int err)
safe_write(out, buf + pf+1, len);
continue;
default:
len = sprintf(buf,
"%s: protocol error: bad band #%d\n",
me, band);
safe_write(err, buf, len);
fprintf(stderr, "%s: protocol error: bad band #%d\n",
me, band);
return SIDEBAND_PROTOCOL_ERROR;
}
}

2
sideband.h

@ -7,7 +7,7 @@ @@ -7,7 +7,7 @@
#define DEFAULT_PACKET_MAX 1000
#define LARGE_PACKET_MAX 65520

int recv_sideband(const char *me, int in_stream, int out, int err);
int recv_sideband(const char *me, int in_stream, int out);
ssize_t send_sideband(int fd, int band, const char *data, ssize_t sz, int packet_max);

#endif

Loading…
Cancel
Save