/*
- * Copyright (c) 1983 Regents of the University of California.
- * All rights reserved. The Berkeley software License Agreement
- * specifies the terms and conditions for redistribution.
+ * Copyright (c) 1983 The Regents of the University of California.
+ * All rights reserved.
+ *
+ * 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.
*/
#ifndef lint
-static char sccsid[] = "@(#)cmds.c 5.6 (Berkeley) %G%";
-#endif not lint
+static char sccsid[] = "@(#)cmds.c 5.15 (Berkeley) 3/4/91";
+#endif /* not lint */
#include "tip.h"
+#include "pathnames.h"
+
/*
* tip
*
char *sep[] = { "second", "minute", "hour" };
static char *argv[10]; /* argument vector for take and put */
-int timeout(); /* timeout function called on alarm */
-int stopsnd(); /* SIGINT handler during file transfers */
-int intprompt(); /* used in handling SIG_INT during prompt */
-int intcopy(); /* interrupt routine for file transfers */
+void timeout(); /* timeout function called on alarm */
+void stopsnd(); /* SIGINT handler during file transfers */
+void intcopy(); /* interrupt routine for file transfers */
/*
* FTP - remote ==> local
register char *p = buffer;
register int cnt, eof;
time_t start;
- int (*f)();
+ sig_t f;
pwrite(FD, buf, size(buf));
quit = 0;
/*
* Interrupt service routine for FTP
*/
+void
stopsnd()
{
char *pc, lastc;
int c, ccount, lcount;
time_t start_t, stop_t;
- int (*f)();
+ sig_t f;
kill(pid, SIGIOT); /* put TIPOUT into a wait state */
stop = 0;
printf("\r%d", ++lcount);
if (boolean(value(ECHOCHECK))) {
timedout = 0;
- alarm(value(ETIMEOUT));
+ alarm((int)value(ETIMEOUT));
do { /* wait for prompt */
read(FD, (char *)&c, 1);
if (timedout || stop) {
}
tryagain:
timedout = 0;
- alarm(value(ETIMEOUT));
+ alarm((int)value(ETIMEOUT));
read(FD, &cc, 1);
alarm(0);
if (timedout) {
}
}
+void
timeout()
{
signal(SIGALRM, timeout);
#ifdef CONNECT
/*
* Fork a program with:
- * 0 <-> local tty in
- * 1 <-> local tty out
+ * 0 <-> remote tty in
+ * 1 <-> remote tty out
* 2 <-> local tty out
- * 3 <-> remote tty in
- * 4 <-> remote tty out
*/
consh(c)
{
} else {
register int i;
- dup2(FD, 3);
- dup2(3, 4);
- for (i = 5; i < 20; i++)
+ dup2(1, 2);
+ dup2(FD, 0);
+ dup2(0, 1);
+ for (i = 3; i < 20; i++)
close(i);
signal(SIGINT, SIG_DFL);
signal(SIGQUIT, SIG_DFL);
printf("!\r\n");
}
-abort(msg)
+tipabort(msg)
char *msg;
{
printf("\r\n%s", msg);
printf("\r\n[EOT]\r\n");
daemon_uid();
- delock(uucplock);
+ (void)uu_unlock(uucplock);
unraw();
exit(0);
}
write(FD, dismsg, strlen(dismsg));
sleep(5);
}
- abort(NOSTR);
+ tipabort(NOSTR);
}
+void
intcopy()
{
-
raw();
quit = 1;
longjmp(intbuf, 1);
cp = value(SHELL);
else
cp++;
- user_uid();
+ shell_uid();
execl(value(SHELL), cp, "-c", s, 0);
}
if ((pid = vfork()) == 0) {
Shell = value(SHELL);
if (Shell == NOSTR)
- Shell = "/bin/sh";
+ Shell = _PATH_BSHELL;
close(pivec[0]);
close(1);
dup(pivec[1]);