##// END OF EJS Templates
windows: fix incorrect detection of broken pipe when writing to pager...
windows: fix incorrect detection of broken pipe when writing to pager Paging e.g. hg incoming on Windows and quitting the pager before the output is consumed will print 'abort: Invalid argument'. This is because the windows error 0xE8 (ERROR_NO_DATA) is mapped to EINVAL even though it is documented as 'The pipe is being closed'. Note that this fix assumes that Windows' last error code is still valid in the exception handler. It works correctly in all my tests. A simpler fix would be to just map EINVAL to EPIPE, like was done is flush previously, but that would be less precise. This error was not observed previously, when pager was an extension.

File last commit:

r34656:01c57eeb default
r38575:3a0f322a stable
Show More
Makefile
40 lines | 823 B | text/x-makefile | MakefileLexer
TARGET = chg
SRCS = chg.c hgclient.c procutil.c util.c
OBJS = $(SRCS:.c=.o)
CFLAGS ?= -O2 -Wall -Wextra -pedantic -g
CPPFLAGS ?= -D_FORTIFY_SOURCE=2 -D_GNU_SOURCE
override CFLAGS += -std=gnu99
ifdef HGPATH
override CPPFLAGS += -DHGPATH=\"$(HGPATH)\"
endif
DESTDIR =
PREFIX = /usr/local
MANDIR = $(PREFIX)/share/man/man1
.PHONY: all
all: $(TARGET)
$(TARGET): $(OBJS)
$(CC) $(LDFLAGS) -o $@ $(OBJS)
chg.o: hgclient.h procutil.h util.h
hgclient.o: hgclient.h procutil.h util.h
procutil.o: procutil.h util.h
util.o: util.h
.PHONY: install
install: $(TARGET)
install -d "$(DESTDIR)$(PREFIX)"/bin
install -m 755 "$(TARGET)" "$(DESTDIR)$(PREFIX)"/bin
install -d "$(DESTDIR)$(MANDIR)"
install -m 644 chg.1 "$(DESTDIR)$(MANDIR)"
.PHONY: clean
clean:
$(RM) $(OBJS)
.PHONY: distclean
distclean:
$(RM) $(OBJS) $(TARGET)