summaryrefslogtreecommitdiff
path: root/mit-pthreads/bin
diff options
context:
space:
mode:
Diffstat (limited to 'mit-pthreads/bin')
-rw-r--r--mit-pthreads/bin/.cvsignore1
-rw-r--r--mit-pthreads/bin/Makefile.in48
-rw-r--r--mit-pthreads/bin/finger/.cvsignore1
-rwxr-xr-xmit-pthreads/bin/finger/Makefile.in60
-rwxr-xr-xmit-pthreads/bin/finger/finger.c231
-rwxr-xr-xmit-pthreads/bin/finger/net.c189
6 files changed, 0 insertions, 530 deletions
diff --git a/mit-pthreads/bin/.cvsignore b/mit-pthreads/bin/.cvsignore
deleted file mode 100644
index f3c7a7c5da6..00000000000
--- a/mit-pthreads/bin/.cvsignore
+++ /dev/null
@@ -1 +0,0 @@
-Makefile
diff --git a/mit-pthreads/bin/Makefile.in b/mit-pthreads/bin/Makefile.in
deleted file mode 100644
index 979ad2db2ea..00000000000
--- a/mit-pthreads/bin/Makefile.in
+++ /dev/null
@@ -1,48 +0,0 @@
-# === GNUmakefile ============================================================
-# Copyright (c) 1993 Chris Provenzano, proven@athena.mit.edu
-#
-# Description: This file is for creating the test programs for libpthread.a
-#
-# 1.00 93/08/03 proven
-# -Initial cut for pthreads.
-#
-
-CC = ../pgcc -notinstalled
-srctop = @srctop@
-srcdir = @srctop@/lib
-VPATH = @srctop@/lib
-CDEBUGFLAGS = @CFLAGS@
-
-CFLAGS = $(CDEBUGFLAGS) $(INCLUDES) $(ADDL_CFLAGS) -DSRCDIR=\"$(srcdir)\"
-
-#
-DIRS = finger
-
-################################################################################
-#
-all:
- (for i in $(DIRS); do cd $$i; $(MAKE) all; cd ..; done)
-
-clean:
- (for i in $(DIRS); do cd $$i; $(MAKE) clean; cd ..; done)
- rm -f *.o $(TESTS) $(BENCHMARKS) a.out core maketmp makeout
-
-depend:
- (for i in $(DIRS); do cd $$i; $(MAKE) depend; cd ..; done)
- sed '/\#\#\# Dependencies/q' < Makefile > maketmp
- (for i in $(CSRC);do $(CPP) -M $$i;done) >> maketmp
- cp maketmp Makefile
-
-install:
- (for i in $(DIRS); do cd $$i; $(MAKE) install; cd ..; done)
-
-realclean: clean
- (for i in $(DIRS); do cd $$i; $(MAKE) realclean; cd ..; done)
- rm -f Makefile
-
-Makefile: Makefile.in
- (cd .. ; sh config.status)
-
-################################################################################
-### Do not remove the following line. It is for depend #########################
-### Dependencies:
diff --git a/mit-pthreads/bin/finger/.cvsignore b/mit-pthreads/bin/finger/.cvsignore
deleted file mode 100644
index f3c7a7c5da6..00000000000
--- a/mit-pthreads/bin/finger/.cvsignore
+++ /dev/null
@@ -1 +0,0 @@
-Makefile
diff --git a/mit-pthreads/bin/finger/Makefile.in b/mit-pthreads/bin/finger/Makefile.in
deleted file mode 100755
index ee20f47443d..00000000000
--- a/mit-pthreads/bin/finger/Makefile.in
+++ /dev/null
@@ -1,60 +0,0 @@
-# === makefile ============================================================
-# Copyright (c) 1993 Chris Provenzano, proven@athena.mit.edu
-#
-# Description: This file is for creating the test programs for libpthread.a
-#
-# 1.00 93/08/03 proven
-# -Initial cut for pthreads.
-#
-
-srctop = @srctop@
-srcdir = @srctop@/bin/finger
-VPATH = @srctop@/bin/finger
-prefix= @prefix@
-exec_prefix= @exec_prefix@
-
-INSTALL_PATH = @exec_prefix@
- BINDIR = $(INSTALL_PATH)/bin
- LIBDIR = $(INSTALL_PATH)/lib
- MANDIR = $(INSTALL_PATH)/man
- INCDIR = $(INSTALL_PATH)/include
-
- CC = ../../pgcc -notinstalled
- CDEBUGFLAGS = @CFLAGS@
- INCLUDES = -I@srctop@/lib/libpthreadutil/ -L../../lib/libpthreadutil/
- CFLAGS = $(CDEBUGFLAGS) $(INCLUDES) $(ADDL_CFLAGS) -DSRCDIR=\"$(srcdir)\"
- RANLIB = @RANLIB@
-
- OBJS = finger.o net.o
- BINARY = finger
-
-################################################################################
-#
-all : $(BINARY)
-
-clean:
- rm -f *.o $(TESTS) $(BENCHMARKS) a.out core maketmp makeout
-
-depend:
- sed '/\#\#\# Dependencies/q' < Makefile > maketmp
- (for i in $(CSRC);do $(CPP) -M $$i;done) >> maketmp
- cp maketmp Makefile
-
-install: $(BINARY)
- install $(BINARY) $(BINDIR)
-
-realclean: clean
- rm -f Makefile
-
-Makefile: Makefile.in
- (cd ../.. ; sh config.status)
-
-.c.o:
- $(CC) $(CFLAGS) -c $<
-
-$(BINARY) : ${OBJS}
- $(CC) $(CFLAGS) -o $(BINARY) ${OBJS} -lpthreadutil
-
-################################################################################
-### Do not remove the following line. It is for depend #########################
-### Dependencies:
diff --git a/mit-pthreads/bin/finger/finger.c b/mit-pthreads/bin/finger/finger.c
deleted file mode 100755
index 33b3011e8bb..00000000000
--- a/mit-pthreads/bin/finger/finger.c
+++ /dev/null
@@ -1,231 +0,0 @@
-/* ==== finger.c ============================================================
- * Copyright (c) 1993 by Chris Provenzano, proven@athena.mit.edu
- *
- * Copyright (c) 1989 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Tony Nardo of the Johns Hopkins University/Applied Physics Lab.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by Chris Provenzano,
- * the University of California, Berkeley and its contributors.
- * 4. Neither the name of Chris Provenzano, the University nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY CHRIS PROVENZANO, THE REGENTS AND CONTRIBUTORS
- * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- * 1.00 93/08/26 proven
- * -Pthread redesign of this file.
- *
- * 1.10 95/02/11 proven
- * -Now that gethostbyname works ....
- */
-
-#ifndef lint
-char copyright[] =
-"@(#) Copyright (c) 1989 The Regents of the University of California.\n\
- @(#) Copyright (c) 1993, 1995 Chris Provenzano.\n\
- @(#) Copyright (c) 1995 Greg Stark.\n\
- All rights reserved.\n";
-#endif /* not lint */
-
-#include <pthreadutil.h>
-#include <sys/param.h>
-#include <signal.h>
-#include <stdlib.h>
-#include <string.h>
-#include <stdio.h>
-
-void *netfinger();
-
-void usage(int eval)
-{
- fprintf(stderr,
- "usage: finger [-lps] [-c <net_count>] [-t|T <timeout>] [-f <filename>] [login ...]\n");
- exit(eval);
-}
-
-/*
- * These globals are set initialy and then are only read.
- * They do not need mutexes.
- */
-int thread_time = 0, program_timeout = 0, lflag = 0;
-pthread_tad_t parse_file_tad;
-pthread_tad_t netfinger_tad;
-
-void * timeout_thread(void * arg)
-{
- sleep(program_timeout);
- exit(0);
-}
-
-void * signal_thread(void * arg)
-{
- int sig;
- sigset_t program_signals;
- sigemptyset(&program_signals);
- sigaddset(&program_signals, SIGINT);
- sigwait(&program_signals, &sig);
- exit(0);
-}
-
-#ifndef MAXHOSTNAMELEN
-#define MAXHOSTNAMELEN 64
-#endif
-
-void * parse_file(void * arg)
-{
- char hostname[MAXHOSTNAMELEN];
- char * filename = arg;
- pthread_atexit_t atexit_id;
- pthread_attr_t attr;
- pthread_t thread_id;
- char * thread_arg;
- FILE * fp;
- int len;
-
- netsetupwait();
-
- /* Parse the file and create a thread per connection */
- if ((fp = fopen(filename, "r")) == NULL) {
- fprintf(stderr, "Can't open file %s\n", filename);
- pthread_exit(NULL);
- }
- pthread_atexit_add(&atexit_id, fclose_nrv, fp);
-
- if (pthread_attr_init(&attr)) {
- fprintf(stderr, "Error: Can't initialize thread attributes\n");
- exit(2);
- }
- pthread_atexit_add(&atexit_id, pthread_attr_destroy_nrv, &attr);
-
- while (fgets(hostname, MAXHOSTNAMELEN, fp)) {
- if ((thread_arg = (char *)malloc(len = strlen(hostname))) == NULL) {
- fprintf(stderr, "Error: out of memory\n");
- exit(2);
- }
-
- hostname[len - 1] = '\0';
- strcpy(thread_arg, hostname);
- pthread_attr_setcleanup(&attr, free, thread_arg);
- if (pthread_tad_create(&netfinger_tad, &thread_id, NULL,
- netfinger, thread_arg)) {
- fprintf(stderr, "Error: pthread_tad_create() netfinger_tad.\n");
- exit(2);
- }
- }
- pthread_exit(NULL);
-}
-
-main(int argc, char **argv)
-{
- pthread_atexit_t atexit_id;
- pthread_t thread_id;
- int max_count = 0;
- char ch;
-
- /* getopt variables */
- extern char *optarg;
- extern int optind;
-
- /* Setup tad for parse_file() threads */
- if (pthread_tad_init(&parse_file_tad, max_count)) {
- fprintf(stderr,"Error: couldn't create parse_file() TAD.\n");
- exit(1);
- }
-
- while ((ch = getopt(argc, argv, "c:f:t:T:ls")) != (char)EOF)
- switch(ch) {
- case 't': /* Time to let each thread run */
- if ((thread_time = atoi(optarg)) <= 0) {
- usage(1);
- }
- break;
- case 'T': /* Time to let entire program run */
- if ((program_timeout = atoi(optarg)) <= 0) {
- usage(1);
- }
- break;
- case 'f': /* Parse file for list of places to finger */
- if (pthread_tad_create(&parse_file_tad, &thread_id, NULL,
- parse_file, optarg)) {
- fprintf(stderr,"Error: pthread_tad_create() parse_file_tad.\n");
- exit(1);
- }
- break;
- case 'c':
- max_count = atoi(optarg);
- break;
- case 'l': /* long format */
- lflag = 1;
- break;
- case 's': /* short format */
- lflag = 0;
- break;
- case '?':
- usage(0);
- default:
- usage(1);
- }
-
- /* The rest of the argumants are hosts */
- argc -= optind;
- argv += optind;
-
- /* Setup timeout thread, if there is one */
- if (program_timeout) {
- if (pthread_create(&thread_id, NULL, timeout_thread, NULL)) {
- fprintf(stderr,"Error: couldn't create program_timeout() thread\n");
- exit(1);
- }
- }
-
- /* Setup cleanup thread for signals */
- if (pthread_create(&thread_id, NULL, signal_thread, NULL)) {
- fprintf(stderr,"Error: couldn't create signal_timeout() thread\n");
- exit(1);
- }
-
- /* Setup tad for netfinger() threads */
- if (pthread_tad_init(&netfinger_tad, max_count)) {
- fprintf(stderr,"Error: couldn't create netfinger() TAD.\n");
- exit(1);
- }
-
- /* Setup the net and let everyone run */
- netsetup();
-
- while (*argv) {
- if (pthread_tad_create(&netfinger_tad, &thread_id, NULL,
- netfinger, *argv)) {
- fprintf(stderr, "Error: pthread_tad_create() netfinger_tad.\n");
- exit(2);
- }
- argv++;
- }
- pthread_tad_wait(&parse_file_tad, 0);
- pthread_tad_wait(&netfinger_tad, 0);
- exit(0);
-}
-
diff --git a/mit-pthreads/bin/finger/net.c b/mit-pthreads/bin/finger/net.c
deleted file mode 100755
index 77ccd92ee8c..00000000000
--- a/mit-pthreads/bin/finger/net.c
+++ /dev/null
@@ -1,189 +0,0 @@
-/* ==== net.c ============================================================
- * Copyright (c) 1993, 1995 by Chris Provenzano, proven@athena.mit.edu
- *
- * Copyright (c) 1989 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Tony Nardo of the Johns Hopkins University/Applied Physics Lab.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * 1.00 93/08/26 proven
- * -Pthread redesign of this file.
- */
-
-#include <pthreadutil.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <sys/param.h>
-#include <netinet/in.h>
-#include <stdlib.h>
-#include <string.h>
-#include <netdb.h>
-#include <stdio.h>
-#include <ctype.h>
-
-#ifndef MAXHOSTNAMELEN
-#define MAXHOSTNAMELEN 64
-#endif
-/*
- * These globals are set initialy and then are only read.
- * They do not need mutexes.
- */
-extern int lflag;
-char myhostname[MAXHOSTNAMELEN];
-
-/*
- * These globals change and therefor do need mutexes
- */
-pthread_mutex_t spmutex = PTHREAD_MUTEX_INITIALIZER;
-pthread_cond_t spcond = PTHREAD_COND_INITIALIZER;
-struct servent *sp = NULL;
-
-void netsetup(void)
-{
- pthread_mutex_lock(&spmutex);
- if (sp) {
- fprintf(stderr, "finger: service pointer already initialized.\n");
- exit(2);
- }
- if ((sp = (struct servent *)malloc(sizeof(struct servent) + 4096)) == NULL){
- fprintf(stderr, "finger: Couldn't allocate service pointer.\n");
- exit(2);
- }
- if (getservbyname_r("finger", "tcp", sp, (char *)sp + sizeof(struct servent), 4096) == NULL) {
- fprintf(stderr, "finger: tcp/finger: unknown service\n");
- exit(2);
- }
- if (gethostname(myhostname, MAXHOSTNAMELEN)) {
- fprintf(stderr, "finger: couldn't get my hostname.\n");
- exit(2);
- }
- pthread_cond_broadcast(&spcond);
- pthread_mutex_unlock(&spmutex);
-}
-
-void netsetupwait(void)
-{
- pthread_mutex_lock(&spmutex);
- while(sp == NULL) {
- pthread_cond_wait(&spcond, &spmutex);
- }
- pthread_mutex_unlock(&spmutex);
-}
-
-void *netfinger(char *name)
-{
- pthread_atexit_t atexit_id;
- register int c, lastc;
- struct in_addr defaddr;
- struct hostent *hp;
- struct sockaddr_in sin;
- int s, i, readbuflen;
- char readbuf[1024];
- char *host;
-
- netsetupwait();
- pthread_atexit_add(&atexit_id, fflush_nrv, NULL);
-
- if (!(host = strrchr(name, '@'))) {
- host = myhostname;
- } else {
- *host++ = '\0';
- }
- if (!(hp = gethostbyname(host))) {
- if ((defaddr.s_addr = inet_addr(host)) < 0) {
- fprintf(stderr, "[%s] gethostbyname: Unknown host\n", host);
- return;
- }
- }
- sin.sin_family = hp->h_addrtype;
- memcpy((char *)&sin.sin_addr, hp->h_addr, hp->h_length);
- sin.sin_port = sp->s_port;
-
- if ((s = socket(sin.sin_family, SOCK_STREAM, 0)) < 0) {
- sprintf(readbuf, "[%s]: socket", hp->h_name);
- perror(readbuf);
- return;
- }
-
- /* have network connection; identify the host connected with */
- if (connect(s, (struct sockaddr *)&sin, sizeof(sin)) < 0) {
- sprintf(readbuf, "[%s]: connect", hp->h_name);
- perror(readbuf);
- close(s);
- return;
- }
-
- /* -l flag for remote fingerd */
- if (lflag)
- write(s, "/W ", 3);
- /* send the name followed by <CR><LF> */
- write(s, name, strlen(name));
- write(s, "\r\n", 2);
-
- /*
- * Read from the remote system; once we're connected, we assume some
- * data. If none arrives, we hang until the user interrupts, or
- * until the thread timeout expires.
- *
- * If we see a <CR> or a <CR> with the high bit set, treat it as
- * a newline; if followed by a newline character, only output one
- * newline.
- *
- * Otherwise, all high bits are stripped; if it isn't printable and
- * it isn't a space, we can simply set the 7th bit. Every ASCII
- * character with bit 7 set is printable.
- */
- for (readbuflen = read(s, readbuf, 1024), flockfile(stdout), lastc = '\n',
- printf("[%s]\n", hp->h_name); readbuflen > 0;
- readbuflen = read(s, readbuf, 1024)) {
- for (i = 0; i < readbuflen; i++) {
- c = readbuf[i] & 0x7f;
- if (c == 0x0d) {
- c = '\n';
- lastc = '\r';
- } else {
- if (!isprint(c) && !isspace(c))
- c |= 0x40;
- if (lastc != '\r' || c != '\n')
- lastc = c;
- else {
- lastc = '\n';
- continue;
- }
- }
- putchar_unlocked(c);
- }
- }
- if (lastc != '\n')
- putchar_unlocked('\n');
- funlockfile(stdout);
-}