--- ../ucspi-tcp-0.88-orig/Makefile Sat Mar 18 23:18:42 2000 +++ Makefile Wed Mar 14 18:08:15 2001 @@ -178,6 +178,14 @@ compile delcr.c buffer.h exit.h ./compile delcr.c +diagnoseio: \ +load diagnoseio.o unix.a byte.a + ./load diagnoseio unix.a byte.a + +diagnoseio.o: \ +compile diagnoseio.c env.h pathexec.h strerr.h + ./compile diagnoseio.c + dns.a: \ makelib dns_dfd.o dns_domain.o dns_dtda.o dns_ip.o dns_ipq.o \ dns_name.o dns_nd.o dns_packet.o dns_random.o dns_rcip.o dns_rcrw.o \ @@ -433,6 +441,10 @@ compile ndelay_on.c ndelay.h ./compile ndelay_on.c +open_append.o: \ +compile open_append.c open.h + ./compile open_append.c + open_read.o: \ compile open_read.c open.h ./compile open_read.c @@ -798,7 +810,7 @@ unix.a: \ makelib alloc.o alloc_re.o buffer.o buffer_0.o buffer_1.o buffer_2.o \ buffer_copy.o buffer_get.o buffer_put.o env.o error.o error_str.o \ -fd_copy.o fd_move.o getln.o getln2.o ndelay_off.o ndelay_on.o \ +fd_copy.o fd_move.o getln.o getln2.o ndelay_off.o ndelay_on.o open_append.o \ open_read.o open_trunc.o open_write.o openreadclose.o pathexec_env.o \ pathexec_run.o prot.o readclose.o seek_set.o sgetopt.o sig.o \ sig_block.o sig_catch.o sig_pause.o socket_accept.o socket_bind.o \ @@ -810,7 +822,7 @@ ./makelib unix.a alloc.o alloc_re.o buffer.o buffer_0.o \ buffer_1.o buffer_2.o buffer_copy.o buffer_get.o \ buffer_put.o env.o error.o error_str.o fd_copy.o fd_move.o \ - getln.o getln2.o ndelay_off.o ndelay_on.o open_read.o \ + getln.o getln2.o ndelay_off.o ndelay_on.o open_append.o open_read.o \ open_trunc.o open_write.o openreadclose.o pathexec_env.o \ pathexec_run.o prot.o readclose.o seek_set.o sgetopt.o \ sig.o sig_block.o sig_catch.o sig_pause.o socket_accept.o \ --- ../ucspi-tcp-0.88-orig/open.h Sat Mar 18 23:18:42 2000 +++ open.h Wed Mar 14 18:08:22 2001 @@ -1,6 +1,7 @@ #ifndef OPEN_H #define OPEN_H +extern int open_append(char *); extern int open_read(char *); extern int open_excl(char *); extern int open_append(char *); --- ../ucspi-tcp-0.88-orig/open_append.c Wed Mar 14 18:18:31 2001 +++ open_append.c Wed Mar 14 18:07:40 2001 @@ -0,0 +1,6 @@ +#include +#include +#include "open.h" + +int open_append(char *fn) +{ return open(fn,O_WRONLY | O_NDELAY | O_APPEND | O_CREAT,0644); } --- ../ucspi-tcp-0.88-orig/diagnoseio.c Wed Mar 14 18:18:34 2001 +++ diagnoseio.c Wed Mar 14 18:15:16 2001 @@ -0,0 +1,34 @@ +#include "buffer.h" +#include "env.h" +#include "open.h" +#include "pathexec.h" +#include "strerr.h" + +#define FATAL "diagnoseio: fatal: " + +int main(int argc, char **argv, char **envp) { + char recordio[9] = "recordio"; + char *remote; + int fd; + + if (argc < 3) + strerr_die1x(100, "usage: diagnoseio logfile program [ arg ... ]"); + + remote = env_get("RECORDIO"); + if (! remote) { + pathexec_run(argv[2], argv + 2, envp); + strerr_die4sys(111, FATAL, "unable to run ", argv[2], ": "); + } + + fd = open_append(argv[1]); + if (fd == -1) + strerr_die4sys(111, FATAL, "unable to open ", argv[1], ": "); + if (fd_move(buffer_2->fd, fd) == -1) + strerr_die2sys(111, FATAL, "unable to move descriptors: "); + buffer_puts(buffer_2, "Logging: "); + buffer_puts(buffer_2, remote); + buffer_putsflush(buffer_2, "\n"); + argv[1] = recordio; + pathexec_run(argv[1], argv + 1, envp); + strerr_die4sys(111, FATAL, "unable to run ", argv[1], ": "); +}