This is redir.c in view mode; [Download] [Up]
#define I_ERRNO
#define I_SYS
#define I_SOCKET
#include "includes.h"
#include "client.h"
#include <signal.h>
#define MAXREDIR 32
/* improved version - does multiple redirs -ot */
int display_num = 9;
int debug = 0;
char *remote_port[MAXREDIR];
int rd_connect_server(int n) {
int s;
if ((s = connect_server(term_server)) <0) {
perror("Couldn't open term");
close(s);
return -1;
}
if (send_command(s, C_PORT, 0, "%s", remote_port[n])< 0) {
return -1;
}
send_command(s, C_DUMB, 1, 0);
return s;
}
void check_usage(int n) {
if ( n < 2 )
{
fprintf ( stderr, "Usage: redir [options] {<localport> <[host:]remoteport>}\n" );
exit(1);
}
}
void main(int argc, char *argv[]) {
int s;
int first, i;
int svs[MAXREDIR];
signal(SIGPIPE, SIG_IGN);
first = client_options(argc, argv,"",NULL);
setbuf(stderr, 0);
check_usage(argc-first);
for (i = 0; i < MAXREDIR && first < argc;first += 2) {
check_usage(argc - first);
fprintf(stderr, "Redirecting %s to %s\n", argv[first], argv[first+1] );
remote_port[i] = argv[first+1];
/* Bind the local socket we are going */
/* to listen on. */
s = bind_tcp(atoi(argv[first]));
if (s < 0) {
fprintf(stderr, "Port is already bound or some such error. s = %d\n", s);
}
else {
svs[i++] = s;
}
}
do_connect(i, svs, rd_connect_server);
}
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.