home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Usenet 1994 October
/
usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso
/
unix
/
volume27
/
ytalk-3.0
/
patch02
/
patch_02
Wrap
Text File
|
1993-11-20
|
12KB
|
512 lines
*** 3.0.1/README Tue Aug 24 16:42:58 1993
--- README Sat Nov 20 23:11:16 1993
***************
*** 45,50 ****
--- 45,60 ----
ytalk@austin.eds.com
+ ---- PATCH LEVEL 02
+
+ 1. Remove #elif directive, patch by Pete Wenzel.
+ 2. Recognize if party is refusing messages, thanks to J. Adam Hawkes.
+ 3. Linux support, thanks to Thilo Wunderlich.
+ 4. Port to AIX 3.1+.
+ 5. Add -s option to start in a shell, thanks to Mark Musone.
+ 6. Fix various error messages.
+ 7. Fix possible obscure bug in socket.c.
+
---- PATCH LEVEL 01
1. Forcibly reset the scrolling region after a shell exits.
*** 3.0.1/ytalk.1 Tue Aug 24 16:42:58 1993
--- ytalk.1 Sat Nov 20 23:53:25 1993
***************
*** 8,20 ****
\fB\\$1\fR
.PP
..
! .TH YTalk 1 "24 Jun 1993"
.SH NAME
ytalk - A multi-user chat program.
.SH SYNOPSIS
! .B ytalk [-x] username...
.SH DESCRIPTION
! .I YTalk V3.0 Patch Level 1
.PP
YTalk is in essence a multi-user chat program. It works almost exactly like
the UNIX talk program and even communicates with the same talk daemon(s), but
--- 8,20 ----
\fB\\$1\fR
.PP
..
! .TH YTalk 1 "20 Nov 1993"
.SH NAME
ytalk - A multi-user chat program.
.SH SYNOPSIS
! .B ytalk [-x] [-s] username...
.SH DESCRIPTION
! .I YTalk V3.0 Patch Level 2
.PP
YTalk is in essence a multi-user chat program. It works almost exactly like
the UNIX talk program and even communicates with the same talk daemon(s), but
***************
*** 42,47 ****
--- 42,49 ----
.PP
The -x option disables the X11 interface (described below).
.PP
+ The -s option starts your YTalk window in a shell.
+ .PP
For each user on the command line, YTalk will attempt to connect to the talk
daemon on the specified user's host and determine if that user has left an
invitation for you to call. If not, YTalk leaves an invitation for him
***************
*** 307,318 ****
.SH FUTURE WORK
Work is being done on the following ideas:
.sp
- 1) private conversations which do not get interrupted
.br
! or transmitted to all YTalk connections,
.br
! 2) a dedicated YTalk daemon.
.SH FILES
/usr/local/etc/ytalkrc
--- 309,321 ----
.SH FUTURE WORK
Work is being done on the following ideas:
.sp
.br
! 1) a dedicated YTalk daemon.
.br
! 2) MBCS/NLS support.
! .br
+
.SH FILES
/usr/local/etc/ytalkrc
***************
*** 342,353 ****
.PP
Thanks to Magnus Hammerin for Solaris 2.* support.
.PP
Thanks to Jonas Yngvesson for aside messages in X.
.PP
Thanks to Andreas Stolcke for fixing the X resource database calls.
.PP
Thanks to John Vanderpool, Shih-Chen Huang, Andrew Myers, Duncan Sinclair,
! Evan McLean, and Larry Schwimmer for comments and ideas.
.PP
The README file shipped with ytalk gives detailed attributions.
--- 345,361 ----
.PP
Thanks to Magnus Hammerin for Solaris 2.* support.
.PP
+ Thanks to Thilo Wunderlich for Linux support.
+ .PP
Thanks to Jonas Yngvesson for aside messages in X.
.PP
Thanks to Andreas Stolcke for fixing the X resource database calls.
.PP
+ Thanks to Pete Wenzel for fixing the #elif directive.
+ .PP
Thanks to John Vanderpool, Shih-Chen Huang, Andrew Myers, Duncan Sinclair,
! Evan McLean, Larry Schwimmer, J. Adam Hawkes, and Mark Musone for comments
! and ideas.
.PP
The README file shipped with ytalk gives detailed attributions.
*** 3.0.1/header.h Tue Aug 24 16:42:58 1993
--- header.h Fri Aug 27 13:49:21 1993
***************
*** 17,23 ****
/* Mail comments or questions to ytalk@austin.eds.com */
#include <sys/types.h>
! #include <sys/param.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <errno.h>
--- 17,27 ----
/* Mail comments or questions to ytalk@austin.eds.com */
#include <sys/types.h>
! #ifdef LINUX
! # include <linux/param.h>
! #else
! # include <sys/param.h>
! #endif
#include <sys/socket.h>
#include <netinet/in.h>
#include <errno.h>
***************
*** 30,36 ****
#define VMAJOR 3 /* major version number */
#define VMINOR 0 /* minor version number */
! #define VPATCH 1 /* patch level */
/* ---- YTalk protocols ---- */
--- 34,40 ----
#define VMAJOR 3 /* major version number */
#define VMINOR 0 /* minor version number */
! #define VPATCH 2 /* patch level */
/* ---- YTalk protocols ---- */
*** 3.0.1/main.c Tue Aug 24 16:42:58 1993
--- main.c Tue Nov 2 11:37:07 1993
***************
*** 134,140 ****
int argc;
char **argv;
{
! int xflg = 0;
char *prog;
/* check for a 64-bit mis-compile */
--- 134,140 ----
int argc;
char **argv;
{
! int xflg = 0, sflg = 0;
char *prog;
/* check for a 64-bit mis-compile */
***************
*** 178,183 ****
--- 178,188 ----
xflg++; /* disable X from the command line */
argv++, argc--;
}
+ else if(strcmp(*argv, "-s") == 0)
+ {
+ sflg++; /* immediately start a shell */
+ argv++, argc--;
+ }
else
argc = 0; /* force a Usage error */
}
***************
*** 213,219 ****
init_socket();
for(; argc > 0; argc--, argv++)
invite(*argv, 1);
! msg_term(me, "Waiting for connection...");
main_loop();
bail(YTE_SUCCESS);
--- 218,227 ----
init_socket();
for(; argc > 0; argc--, argv++)
invite(*argv, 1);
! if(sflg)
! execute(NULL);
! else
! msg_term(me, "Waiting for connection...");
main_loop();
bail(YTE_SUCCESS);
*** 3.0.1/comm.c Tue Aug 24 16:42:58 1993
--- comm.c Thu Nov 18 18:13:20 1993
***************
*** 157,163 ****
if((host_addr = get_host_addr(host)) == (ylong)-1)
{
errno = 0;
! sprintf(errstr, "unknown host: '%s'\n", host);
show_error(errstr);
show_error("port from ytalk V2.? failed");
return;
--- 157,163 ----
if((host_addr = get_host_addr(host)) == (ylong)-1)
{
errno = 0;
! sprintf(errstr, "unknown host: '%s'", host);
show_error(errstr);
show_error("port from ytalk V2.? failed");
return;
***************
*** 748,756 ****
return -1;
errno = 0;
! if(send_dgram(user, ANNOUNCE) != 0)
! return -1;
! return 0;
}
/* ---- global functions ---- */
--- 748,758 ----
return -1;
errno = 0;
! if((rc = send_dgram(user, ANNOUNCE)) == 0)
! return 0;
! if(rc == 4) /* mesg n (refusing messages) */
! return 1;
! return -1;
}
/* ---- global functions ---- */
***************
*** 833,842 ****
}
(void)send_dgram(user, LEAVE_INVITE);
user->last_invite = (ylong)time(NULL);
! if(send_announce && announce(user) < 0)
{
(void)send_dgram(user, DELETE_INVITE);
! sprintf(errstr, "%s not logged in", user->full_name);
show_error(errstr);
free_user(user);
return;
--- 835,847 ----
}
(void)send_dgram(user, LEAVE_INVITE);
user->last_invite = (ylong)time(NULL);
! if(send_announce && (rc = announce(user)) != 0)
{
(void)send_dgram(user, DELETE_INVITE);
! if(rc > 0)
! sprintf(errstr, "%s refusing messages", user->full_name);
! else
! sprintf(errstr, "%s not logged in", user->full_name);
show_error(errstr);
free_user(user);
return;
***************
*** 853,859 ****
ylong t;
static char estr[80];
static ylong last_auto = 0;
! int answer;
t = (ylong)time(NULL);
--- 858,864 ----
ylong t;
static char estr[80];
static ylong last_auto = 0;
! int answer, rc;
t = (ylong)time(NULL);
***************
*** 884,893 ****
if(answer == 'n')
continue;
}
! if(announce(u) < 0)
{
(void)send_dgram(u, DELETE_INVITE);
! sprintf(errstr, "%s not logged in", u->full_name);
show_error(errstr);
free_user(u);
}
--- 889,901 ----
if(answer == 'n')
continue;
}
! if((rc = announce(u)) != 0)
{
(void)send_dgram(u, DELETE_INVITE);
! if(rc > 0)
! sprintf(errstr, "%s refusing messages", u->full_name);
! else
! sprintf(errstr, "%s not logged in", u->full_name);
show_error(errstr);
free_user(u);
}
*** 3.0.1/fd.c Tue Aug 24 16:42:58 1993
--- fd.c Thu Aug 26 09:19:05 1993
***************
*** 130,137 ****
#if defined(SIGCHLD)
signal(SIGCHLD, SIG_IGN);
! #elif defined(SIGCLD)
signal(SIGCLD, SIG_IGN);
#endif
/* For housecleaning to occur every CLEAN_INTERVAL seconds, we make
--- 130,139 ----
#if defined(SIGCHLD)
signal(SIGCHLD, SIG_IGN);
! #else
! # if defined(SIGCLD)
signal(SIGCLD, SIG_IGN);
+ # endif
#endif
/* For housecleaning to occur every CLEAN_INTERVAL seconds, we make
*** 3.0.1/exec.c Tue Aug 24 16:42:59 1993
--- exec.c Fri Sep 17 18:21:58 1993
***************
*** 55,60 ****
--- 55,76 ----
char *name;
{
register int pty, tty;
+ char *pty_dev = "/dev/ptc", *tt;
+ extern char *ttyname();
+
+ /* first look for a SYSV-type pseudo device */
+
+ if((pty = open(pty_dev, O_RDWR)) >= 0)
+ {
+ if((tt = ttyname(pty)) != NULL)
+ {
+ strcpy(name, tt);
+ return pty;
+ }
+ close(pty);
+ }
+
+ /* scan Berkeley-style */
strcpy(name, "/dev/ptyp0");
while(access(name, 0) == 0)
*** 3.0.1/socket.c Tue Aug 24 16:42:59 1993
--- socket.c Sat Nov 20 23:09:26 1993
***************
*** 653,659 ****
--- 653,663 ----
nmsg.addr = user->sock;
nmsg.addr.sin_family = htons(AF_INET);
if(sendit(addr, d) != 0)
+ {
+ if(type == AUTO_LOOK_UP || type == AUTO_DELETE)
+ strncpy(nmsg.l_name, me->user_name, NAME_SIZE);
return -2;
+ }
switch(type)
{
***************
*** 830,840 ****
ylong addr;
ylong inet_addr();
if((host = (struct hostent *) gethostbyname(hostname)) != NULL)
{
if(host->h_length != sizeof(addr))
{
! sprintf(errstr, "Bad IN addr: %s\n", hostname);
show_error(errstr);
return (ylong)-1;
}
--- 834,845 ----
ylong addr;
ylong inet_addr();
+ errno = 0;
if((host = (struct hostent *) gethostbyname(hostname)) != NULL)
{
if(host->h_length != sizeof(addr))
{
! sprintf(errstr, "Bad IN addr: %s", hostname);
show_error(errstr);
return (ylong)-1;
}
***************
*** 878,896 ****
if((from_addr = get_host_addr(from_id)) == (ylong)-1)
{
! sprintf(errstr, "Unknown host: '%s'\n", from_id);
show_error(errstr);
return;
}
if((to_addr = get_host_addr(to_id)) == (ylong)-1)
{
! sprintf(errstr, "Unknown host: '%s'\n", to_id);
show_error(errstr);
return;
}
if((on_addr = get_host_addr(on_id)) == (ylong)-1)
{
! sprintf(errstr, "Unknown host: '%s'\n", on_id);
show_error(errstr);
return;
}
--- 883,901 ----
if((from_addr = get_host_addr(from_id)) == (ylong)-1)
{
! sprintf(errstr, "Unknown host: '%s'", from_id);
show_error(errstr);
return;
}
if((to_addr = get_host_addr(to_id)) == (ylong)-1)
{
! sprintf(errstr, "Unknown host: '%s'", to_id);
show_error(errstr);
return;
}
if((on_addr = get_host_addr(on_id)) == (ylong)-1)
{
! sprintf(errstr, "Unknown host: '%s'", on_id);
show_error(errstr);
return;
}
*** 3.0.1/user.c Tue Aug 24 16:42:59 1993
--- user.c Thu Nov 18 18:13:48 1993
***************
*** 195,201 ****
}
else if((addr = get_host_addr(hostname)) == (ylong)-1)
{
! sprintf(errstr, "new_user: bad host: '%s'\n", hostname);
show_error(errstr);
return NULL;
}
--- 195,201 ----
}
else if((addr = get_host_addr(hostname)) == (ylong)-1)
{
! sprintf(errstr, "new_user: bad host: '%s'", hostname);
show_error(errstr);
return NULL;
}
*** 3.0.1/term.c Tue Aug 24 16:42:59 1993
--- term.c Fri Sep 17 17:37:03 1993
***************
*** 17,24 ****
/* Mail comments or questions to ytalk@austin.eds.com */
#include "header.h"
#ifdef USE_SGTTY
- # include <sys/ioctl.h>
# ifdef hpux
# include <sys/bsdtty.h>
# include <sgtty.h>
--- 17,24 ----
/* Mail comments or questions to ytalk@austin.eds.com */
#include "header.h"
+ #include <sys/ioctl.h>
#ifdef USE_SGTTY
# ifdef hpux
# include <sys/bsdtty.h>
# include <sgtty.h>
*** 3.0.1/cwin.c Tue Aug 24 16:42:59 1993
--- cwin.c Fri Sep 17 17:32:38 1993
***************
*** 433,436 ****
--- 433,438 ----
set_cooked_curses()
{
noraw();
+ crmode();
+ noecho();
}