home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Usenet 1994 October
/
usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso
/
misc
/
volume23
/
tin
/
patch03c
< prev
next >
Wrap
Text File
|
1991-10-19
|
50KB
|
2,048 lines
Newsgroups: comp.sources.misc
From: iain@norisc.siemens.de (Iain J. Lea)
Subject: v23i080: tin - threaded full screen newsreader, Patch03c/4
Message-ID: <1991Oct20.032037.24702@sparky.imd.sterling.com>
X-Md4-Signature: 96b736eade70fe8cd1ac730e55c84e21
Date: Sun, 20 Oct 1991 03:20:37 GMT
Approved: kent@sparky.imd.sterling.com
Submitted-by: iain@norisc.siemens.de (Iain J. Lea)
Posting-number: Volume 23, Issue 80
Archive-name: tin/patch03c
Environment: BSD, SCO, ISC, SUNOS, SYSVR3, SYSVR4, ULTRIX, XENIX
Patch-To: tin: Volume 23, Issue 15-23
#!/bin/sh
# this is tin.patch.03 (part 3 of tin1.0)
# do not concatenate these parts, unpack them in order with /bin/sh
# file tin.patch03 continued
#
if touch 2>&1 | fgrep '[-amc]' > /dev/null
then TOUCH=touch
else TOUCH=true
fi
if test ! -r shar3_seq_.tmp; then
echo "Please unpack part 1 first!"
exit 1
fi
(read Scheck
if test "$Scheck" != 3; then
echo "Please unpack part $Scheck next!"
exit 1
else
exit 0
fi
) < shar3_seq_.tmp || exit 1
echo "x - Continuing file tin.patch03"
sed 's/^X//' << 'SHAR_EOF' >> tin.patch03 &&
X case -1:
X! fprintf (stderr, txt_failed_to_connect_to_server, server);
X exit (1);
X
X default:
X***************
X*** 144,150 ****
X char *group_path;
X long art;
X {
X! char buf[LEN+1];
X struct stat sb;
X extern long note_size;
X
X--- 147,153 ----
X char *group_path;
X long art;
X {
X! char buf[LEN];
X struct stat sb;
X extern long note_size;
X
X***************
X*** 178,184 ****
X char *group_path;
X long art;
X {
X! char buf[LEN+1];
X
X if (read_news_via_nntp) {
X #ifdef USE_NNTP
X--- 181,187 ----
X char *group_path;
X long art;
X {
X! char buf[LEN];
X
X if (read_news_via_nntp) {
X #ifdef USE_NNTP
X***************
X*** 227,233 ****
X char *group;
X char *group_path;
X {
X! char buf[LEN+1];
X #ifdef USE_NNTP
X char line[NNTP_STRLEN];
X #endif
X--- 230,236 ----
X char *group;
X char *group_path;
X {
X! char buf[LEN];
X #ifdef USE_NNTP
X char line[NNTP_STRLEN];
X #endif
X***************
X*** 283,289 ****
X }
X }
X closedir (d);
X! qsort ((char *) base, top_base, sizeof(long), base_comp);
X }
X }
X }
X--- 286,292 ----
X }
X }
X closedir (d);
X! qsort ((char *) base, top_base, sizeof (long), base_comp);
X }
X }
X }
X***************
X*** 353,359 ****
X
X FILE *nntp_to_fp ()
X {
X! char fnam[LEN+1];
X FILE *fp;
X
X if (! stuff_nntp (fnam))
X--- 356,362 ----
X
X FILE *nntp_to_fp ()
X {
X! char fnam[LEN];
X FILE *fp;
X
X if (! stuff_nntp (fnam))
X***************
X*** 371,377 ****
X int nntp_to_fd ()
X {
X #ifdef USE_NNTP
X! char fnam[LEN+1];
X int fd;
X
X if (! stuff_nntp (fnam))
X--- 374,380 ----
X int nntp_to_fd ()
X {
X #ifdef USE_NNTP
X! char fnam[LEN];
X int fd;
X
X if (! stuff_nntp (fnam))
Xdiff -rcs 102/page.c 103/page.c
X*** 102/page.c Tue Sep 24 08:23:51 1991
X--- 103/page.c Mon Sep 30 18:45:06 1991
X***************
X*** 3,9 ****
X * Module : page.c
X * Author : R.Skrenta / I.Lea
X * Created : 01-04-91
X! * Updated : 16-09-91
X * Release : 1.0
X * Notes :
X * Copyright : (c) Copyright 1991 by Rich Skrenta & Iain Lea
X--- 3,9 ----
X * Module : page.c
X * Author : R.Skrenta / I.Lea
X * Created : 01-04-91
X! * Updated : 30-09-91
X * Release : 1.0
X * Notes :
X * Copyright : (c) Copyright 1991 by Rich Skrenta & Iain Lea
X***************
X*** 19,49 ****
X
X extern int cur_groupnum;
X
X! char note_h_path[LEN+1]; /* Path: */
X! char note_h_date[LEN+1]; /* Date: */
X! char note_h_subj[LEN+1]; /* Subject: */
X! char note_h_from[LEN+1]; /* From: */
X! char note_h_org[LEN+1]; /* Organization: */
X! char note_h_newsgroups[LEN+1]; /* Newsgroups: */
X! char note_h_messageid[LEN+1]; /* Message-ID: */
X! char note_h_distrib[LEN+1]; /* Distribution: */
X! char note_h_followup[LEN+1]; /* Followup-To: */
X
X char note_full_name[100];
X char note_from_addr[100];
X char *glob_page_group;
X
X! FILE *note_fp; /* the body of the current article */
X
X int note_line;
X int note_page; /* what page we're on */
X int note_end; /* we're done showing this article */
X int rotate; /* 0=normal, 13=rot13 decode */
X! int last_resp; /* current & previous article for - command */
X int this_resp;
X int glob_respnum;
X
X! long note_mark[MAX_PAGES]; /* ftells on beginnings of pages */
X long note_size; /* stat size in bytes of article */
X
X
X--- 19,49 ----
X
X extern int cur_groupnum;
X
X! char note_h_path[LEN]; /* Path: */
X! char note_h_date[LEN]; /* Date: */
X! char note_h_subj[LEN]; /* Subject: */
X! char note_h_from[LEN]; /* From: */
X! char note_h_org[LEN]; /* Organization: */
X! char note_h_newsgroups[LEN]; /* Newsgroups: */
X! char note_h_messageid[LEN]; /* Message-ID: */
X! char note_h_distrib[LEN]; /* Distribution: */
X! char note_h_followup[LEN]; /* Followup-To: */
X
X char note_full_name[100];
X char note_from_addr[100];
X char *glob_page_group;
X
X! FILE *note_fp; /* the body of the current article */
X
X int note_line;
X int note_page; /* what page we're on */
X int note_end; /* we're done showing this article */
X int rotate; /* 0=normal, 13=rot13 decode */
X! int last_resp; /* current & previous article for - command */
X int this_resp;
X int glob_respnum;
X
X! long note_mark[MAX_PAGES]; /* ftells on beginnings of pages */
X long note_size; /* stat size in bytes of article */
X
X
X***************
X*** 55,63 ****
X char ch;
X int i, n;
X int kill_state = NO_KILLING;
X- int old_artnum;
X int old_sort_art_type = sort_art_type;
X int old_top;
X long art;
X
X restart:
X--- 55,63 ----
X char ch;
X int i, n;
X int kill_state = NO_KILLING;
X int old_sort_art_type = sort_art_type;
X int old_top;
X+ long old_artnum;
X long art;
X
X restart:
X***************
X*** 123,128 ****
X--- 123,129 ----
X
X case 'I': /* ansi PgUp */
X case 'V': /* at386 PgUp */
X+ case 'v': /* emacs style */
X goto page_up;
X
X case 'H': /* at386 Home */
X***************
X*** 143,149 ****
X case 'G': /* 'less' compatible */
X end_of_article:
X if (show_last_page ()) {
X! show_note_page(respnum, group);
X }
X break;
X
X--- 144,150 ----
X case 'G': /* 'less' compatible */
X end_of_article:
X if (show_last_page ()) {
X! show_note_page (respnum, group);
X }
X break;
X
X***************
X*** 186,193 ****
X }
X break;
X
X! case ctrl('D'):
X! case ' ': /* next page or response */
X page_down:
X if (note_page == NOTE_UNAVAIL) {
X n = next_response (respnum);
X--- 187,195 ----
X }
X break;
X
X! case ' ': /* next page or response */
X! case ctrl('D'): /* vi style */
X! case ctrl('V'): /* emacs style */
X page_down:
X if (note_page == NOTE_UNAVAIL) {
X n = next_response (respnum);
X***************
X*** 603,618 ****
X int respnum;
X char *group;
X {
X! char buf[LEN+1];
X char buf2[LEN+50];
X char *p, *q;
X int i, j;
X int ctrl_L; /* form feed character detected */
X
X- ClearScreen();
X-
X note_line = 1;
X
X if (note_page == 0)
X show_first_header (respnum, group);
X else
X--- 605,627 ----
X int respnum;
X char *group;
X {
X! char buf[LEN];
X char buf2[LEN+50];
X char *p, *q;
X int i, j;
X int ctrl_L; /* form feed character detected */
X+ long tmp_pos;
X+ ClearScreen ();
X
X note_line = 1;
X
X+ if (note_size == 0L) {
X+ tmp_pos = ftell (note_fp);
X+ fseek (note_fp, 0L, 2); /* goto end of article */
X+ note_size = ftell (note_fp);
X+ fseek (note_fp, tmp_pos, 0); /* goto old position */
X+ }
X+
X if (note_page == 0)
X show_first_header (respnum, group);
X else
X***************
X*** 684,691 ****
X }
X }
X
X! note_mark[++note_page] = ftell(note_fp);
X
X if (note_end) {
X MoveCursor (LINES, MORE_POS-(5+BLANK_PAGE_COLS));
X StartInverse ();
X--- 693,704 ----
X }
X }
X
X! note_mark[++note_page] = ftell (note_fp);
X
X+ if (note_mark[note_page] == note_size) {
X+ note_end = TRUE;
X+ }
X+
X if (note_end) {
X MoveCursor (LINES, MORE_POS-(5+BLANK_PAGE_COLS));
X StartInverse ();
X***************
X*** 699,705 ****
X EndInverse ();
X } else {
X if (note_size > 0) {
X! draw_percent_mark ((int) note_mark[note_page], note_size);
X } else {
X MoveCursor (LINES, MORE_POS-BLANK_PAGE_COLS);
X StartInverse ();
X--- 712,718 ----
X EndInverse ();
X } else {
X if (note_size > 0) {
X! draw_percent_mark ((int) note_mark[note_page], (int) note_size);
X } else {
X MoveCursor (LINES, MORE_POS-BLANK_PAGE_COLS);
X StartInverse ();
X***************
X*** 718,725 ****
X {
X int whichresp;
X int x_resp;
X! char buf[LEN+1];
X! char tmp[LEN+1];
X int pos, i;
X int n;
X
X--- 731,738 ----
X {
X int whichresp;
X int x_resp;
X! char buf[LEN];
X! char tmp[LEN];
X int pos, i;
X int n;
X
X***************
X*** 803,809 ****
X {
X int whichresp;
X int whichbase;
X! char buf[LEN+1];
X
X whichresp = which_resp (respnum);
X whichbase = which_base (respnum);
X--- 816,822 ----
X {
X int whichresp;
X int whichbase;
X! char buf[LEN];
X
X whichresp = which_resp (respnum);
X whichbase = which_base (respnum);
X***************
X*** 824,830 ****
X note_page + 1,
X note_h_subj);
X
X! buf[COLS] = '\0';
X printf("%s\r\n\r\n", buf);
X
X note_line += 2;
X--- 837,843 ----
X note_page + 1,
X note_h_subj);
X
X! buf[COLS-1] = '\0';
X printf("%s\r\n\r\n", buf);
X
X note_line += 2;
X***************
X*** 939,945 ****
X {
X int j;
X
X! j = base[i];
X
X while (n-- && arts[j].thread >= 0) {
X j = arts[j].thread;
X--- 952,958 ----
X {
X int j;
X
X! j = (int) base[i];
X
X while (n-- && arts[j].thread >= 0) {
X j = arts[j].thread;
X***************
X*** 1027,1033 ****
X if (i >= top_base)
X return -1;
X
X! return base[i];
X }
X
X
X--- 1040,1046 ----
X if (i >= top_base)
X return -1;
X
X! return (int) base[i];
X }
X
X
X***************
X*** 1045,1051 ****
X if (i >= top_base)
X return -1;
X
X! return base[i];
X }
X
X
X--- 1058,1064 ----
X if (i >= top_base)
X return -1;
X
X! return (int) base[i];
X }
X
X
X***************
X*** 1083,1098 ****
X
X int show_last_page ()
X {
X! char buf[LEN+1];
X char buf2[LEN+50];
X char *p, *q;
X int ctrl_L; /* form feed character detected */
X int i, j;
X
X if (note_end) {
X return FALSE;
X }
X
X while (! note_end) {
X note_line = 1;
X ctrl_L = FALSE;
X--- 1096,1119 ----
X
X int show_last_page ()
X {
X! char buf[LEN];
X char buf2[LEN+50];
X char *p, *q;
X int ctrl_L; /* form feed character detected */
X int i, j;
X+ long tmp_pos;
X
X if (note_end) {
X return FALSE;
X }
X
X+ if (note_size == 0L) {
X+ tmp_pos = ftell (note_fp);
X+ fseek (note_fp, 0L, 2); /* goto end of article */
X+ note_size = ftell (note_fp);
X+ fseek (note_fp, tmp_pos, 0); /* goto old position */
X+ }
X+
X while (! note_end) {
X note_line = 1;
X ctrl_L = FALSE;
X***************
X*** 1103,1109 ****
X note_line += 2;
X }
X while (note_line < LINES) {
X! if (fgets(buf, sizeof buf, note_fp) == NULL) {
X note_end = TRUE;
X break;
X }
X--- 1124,1130 ----
X note_line += 2;
X }
X while (note_line < LINES) {
X! if (fgets (buf, sizeof buf, note_fp) == NULL) {
X note_end = TRUE;
X break;
X }
X***************
X*** 1136,1142 ****
X break;
X }
X }
X! if (! note_end) {
X note_mark[++note_page] = ftell(note_fp);
X }
X }
X--- 1157,1167 ----
X break;
X }
X }
X! if (note_mark[note_page] == note_size) {
X! note_end = TRUE;
X! note_page--;
X! break;
X! } else if (! note_end) {
X note_mark[++note_page] = ftell(note_fp);
X }
X }
Xdiff -rcs 102/patchlevel.h 103/patchlevel.h
X*** 102/patchlevel.h Mon Sep 23 17:55:40 1991
X--- 103/patchlevel.h Mon Sep 30 07:58:07 1991
X***************
X*** 1 ****
X! #define PATCHLEVEL 2
X--- 1 ----
X! #define PATCHLEVEL 3
Xdiff -rcs 102/post.c 103/post.c
X*** 102/post.c Mon Sep 23 17:55:40 1991
X--- 103/post.c Mon Sep 30 18:19:01 1991
X***************
X*** 3,9 ****
X * Module : post.c
X * Author : I.Lea
X * Created : 01-04-91
X! * Updated : 22-09-91
X * Release : 1.0
X * Notes : mailing/posting/replying/followup & cancel article routines
X * Copyright : (c) Copyright 1991 by Rich Skrenta & Iain Lea
X--- 3,9 ----
X * Module : post.c
X * Author : I.Lea
X * Created : 01-04-91
X! * Updated : 30-09-91
X * Release : 1.0
X * Notes : mailing/posting/replying/followup & cancel article routines
X * Copyright : (c) Copyright 1991 by Rich Skrenta & Iain Lea
X***************
X*** 15,26 ****
X
X #include "tin.h"
X
X! extern char note_h_distrib[LEN+1]; /* Distribution: */
X! extern char note_h_followup[LEN+1]; /* Followup-To: */
X! extern char note_h_from[LEN+1]; /* From: */
X! extern char note_h_messageid[LEN+1]; /* Message-ID: */
X! extern char note_h_newsgroups[LEN+1]; /* Newsgroups: */
X! extern char note_h_subj[LEN+1]; /* Subject: */
X
X extern char note_from_addr[100];
X extern char note_full_name[100];
X--- 15,26 ----
X
X #include "tin.h"
X
X! extern char note_h_distrib[LEN]; /* Distribution: */
X! extern char note_h_followup[LEN]; /* Followup-To: */
X! extern char note_h_from[LEN]; /* From: */
X! extern char note_h_messageid[LEN]; /* Message-ID: */
X! extern char note_h_newsgroups[LEN]; /* Newsgroups: */
X! extern char note_h_subj[LEN]; /* Subject: */
X
X extern char note_from_addr[100];
X extern char note_full_name[100];
X***************
X*** 55,61 ****
X return FALSE;
X }
X rewind (fp);
X! posted = (struct posted_t *) my_malloc ((no_of_lines+1) * sizeof (struct posted_t));
X for (i=0 ; fgets (buf, sizeof (buf), fp) != NULL ; i++) {
X for (j=0 ; buf[j] != '|' && buf[j] != '\n' ; j++) {
X posted[i].date[j] = buf[j]; /* posted date */
X--- 55,61 ----
X return FALSE;
X }
X rewind (fp);
X! posted = (struct posted_t *) my_malloc ((unsigned) (no_of_lines+1) * sizeof (struct posted_t));
X for (i=0 ; fgets (buf, sizeof (buf), fp) != NULL ; i++) {
X for (j=0 ; buf[j] != '|' && buf[j] != '\n' ; j++) {
X posted[i].date[j] = buf[j]; /* posted date */
X***************
X*** 90,96 ****
X fclose (fp);
X set_tin_uid_gid ();
X
X! show_info_page (POST_INFO, (char *) 0, txt_post_history_menu);
X return TRUE;
X }
X }
X--- 90,100 ----
X fclose (fp);
X set_tin_uid_gid ();
X
X! show_info_page (POST_INFO, (char **) 0, txt_post_history_menu);
X! if (posted != (struct posted_t *) 0) {
X! free (posted);
X! posted = (struct posted_t *) 0;
X! }
X return TRUE;
X }
X }
X***************
X*** 100,107 ****
X char *group;
X char *subj;
X {
X! char buf[LEN+1];
X! char tmp_post[LEN+1];
X FILE *fp, *tmp_fp;
X long epoch;
X struct tm *tm;
X--- 104,111 ----
X char *group;
X char *subj;
X {
X! char buf[LEN];
X! char tmp_post[LEN];
X FILE *fp, *tmp_fp;
X long epoch;
X struct tm *tm;
X***************
X*** 141,148 ****
X FILE *fp;
X char ch;
X char ch_default = 'p';
X! char subj[LEN+1];
X! char buf[LEN+1];
X int redraw_screen = FALSE;
X
X start_line_offset = 4;
X--- 145,152 ----
X FILE *fp;
X char ch;
X char ch_default = 'p';
X! char subj[LEN];
X! char buf[LEN];
X int redraw_screen = FALSE;
X
X start_line_offset = 4;
X***************
X*** 240,250 ****
X FILE *fp;
X char ch, *ptr;
X char ch_default = 'p';
X! char buf[LEN+1];
X int redraw_screen = FALSE;
X
X start_line_offset = 4;
X
X if (*note_h_followup && strcmp (note_h_followup, "poster") == 0) {
X clear_message ();
X if (! prompt_yn (LINES, txt_resp_to_poster, 'y')) {
X--- 244,256 ----
X FILE *fp;
X char ch, *ptr;
X char ch_default = 'p';
X! char buf[LEN];
X int redraw_screen = FALSE;
X
X start_line_offset = 4;
X
X+ wait_message ("Post a followup...");
X+
X if (*note_h_followup && strcmp (note_h_followup, "poster") == 0) {
X clear_message ();
X if (! prompt_yn (LINES, txt_resp_to_poster, 'y')) {
X***************
X*** 379,386 ****
X {
X char nam[100];
X char ch, ch_default = 's';
X! char buf[LEN+1];
X! char mail_to[LEN+1];
X FILE *fp;
X int redraw_screen = FALSE;
X
X--- 385,392 ----
X {
X char nam[100];
X char ch, ch_default = 's';
X! char buf[LEN];
X! char mail_to[LEN];
X FILE *fp;
X int redraw_screen = FALSE;
X
X***************
X*** 477,487 ****
X FILE *fp;
X char ch;
X char ch_default = 's';
X! char buf[LEN+1];
X! char mail_to[LEN+1];
X
X start_line_offset = 5;
X
X set_real_uid_gid ();
X
X sprintf (nam, "%s/.bugreport", homedir);
X--- 483,495 ----
X FILE *fp;
X char ch;
X char ch_default = 's';
X! char buf[LEN];
X! char mail_to[LEN];
X
X start_line_offset = 5;
X
X+ wait_message ("Mail bug report...");
X+
X set_real_uid_gid ();
X
X sprintf (nam, "%s/.bugreport", homedir);
X***************
X*** 559,567 ****
X int mail_to_author (copy_text)
X int copy_text;
X {
X! char buf[LEN+1];
X char nam[100];
X! char mail_to[LEN+1];
X char ch, ch_default = 's';
X FILE *fp;
X int redraw_screen = FALSE;
X--- 567,575 ----
X int mail_to_author (copy_text)
X int copy_text;
X {
X! char buf[LEN];
X char nam[100];
X! char mail_to[LEN];
X char ch, ch_default = 's';
X FILE *fp;
X int redraw_screen = FALSE;
X***************
X*** 568,573 ****
X--- 576,583 ----
X
X start_line_offset = 4;
X
X+ wait_message ("Reply to author...");
X+
X set_real_uid_gid ();
X
X sprintf (nam, "%s/.letter", homedir);
X***************
X*** 655,663 ****
X char *mail_to;
X {
X FILE *fp;
X! char buf[LEN+1];
X! char buf2[LEN+1];
X! char new_mail_to[LEN+1];
X char *p;
X
X *new_mail_to = '\0';
X--- 665,673 ----
X char *mail_to;
X {
X FILE *fp;
X! char buf[LEN];
X! char buf2[LEN];
X! char new_mail_to[LEN];
X char *p;
X
X *new_mail_to = '\0';
XFiles 102/prompt.c and 103/prompt.c are identical
Xdiff -rcs 102/proto.h 103/proto.h
X*** 102/proto.h Tue Sep 24 08:17:42 1991
X--- 103/proto.h Mon Sep 30 07:58:07 1991
X***************
X*** 17,23 ****
X int load_index(void);
X void find_local_index(char *group);
X void do_update(void);
X! void save_any_news(void);
X void reload_index_file(char *group, int killed);
X char *parse_date(char *date, char *str);
X int artnum_comp(char *p1, char *p2);
X--- 17,23 ----
X int load_index(void);
X void find_local_index(char *group);
X void do_update(void);
X! int check_start_save_any_news(int check_start_save);
X void reload_index_file(char *group, int killed);
X char *parse_date(char *date, char *str);
X int artnum_comp(char *p1, char *p2);
X***************
X*** 102,107 ****
X--- 102,108 ----
X void shell_escape(void);
X void tin_done(int ret);
X int read_active(void);
X+ void mark_unthreaded_groups(void);
X int backup_active(int create);
X void add_signature(FILE *fp, int flag);
X long hash_groupname(char *buf);
X***************
X*** 220,226 ****
X char *str_str(char *text, char *pattern);
X void make_lower(char *s, char *t);
X /* select.c */
X! void selection_index(void);
X void group_selection_page(void);
X int prompt_group_num(int ch);
X void erase_group_arrow(void);
X--- 221,227 ----
X char *str_str(char *text, char *pattern);
X void make_lower(char *s, char *t);
X /* select.c */
X! void selection_index(int start_groupnum);
X void group_selection_page(void);
X int prompt_group_num(int ch);
X void erase_group_arrow(void);
X***************
X*** 269,275 ****
X int load_index(/*void*/);
X void find_local_index(/*char *group*/);
X void do_update(/*void*/);
X! void save_any_news(/*void*/);
X void reload_index_file(/*char *group, int killed*/);
X char *parse_date(/*char *date, char *str*/);
X int artnum_comp(/*char *p1, char *p2*/);
X--- 270,276 ----
X int load_index(/*void*/);
X void find_local_index(/*char *group*/);
X void do_update(/*void*/);
X! int check_start_save_any_news(/*int check_start_save*/);
X void reload_index_file(/*char *group, int killed*/);
X char *parse_date(/*char *date, char *str*/);
X int artnum_comp(/*char *p1, char *p2*/);
X***************
X*** 354,359 ****
X--- 355,361 ----
X void shell_escape(/*void*/);
X void tin_done(/*int ret*/);
X int read_active(/*void*/);
X+ void mark_unthreaded_groups(/*void*/);
X int backup_active(/*int create*/);
X void add_signature(/*FILE *fp, int flag*/);
X long hash_groupname(/*char *buf*/);
X***************
X*** 472,478 ****
X char *str_str(/*char *text, char *pattern*/);
X void make_lower(/*char *s, char *t*/);
X /* select.c */
X! void selection_index(/*void*/);
X void group_selection_page(/*void*/);
X int prompt_group_num(/*int ch*/);
X void erase_group_arrow(/*void*/);
X--- 474,480 ----
X char *str_str(/*char *text, char *pattern*/);
X void make_lower(/*char *s, char *t*/);
X /* select.c */
X! void selection_index(/*int start_groupnum*/);
X void group_selection_page(/*void*/);
X int prompt_group_num(/*int ch*/);
X void erase_group_arrow(/*void*/);
Xdiff -rcs 102/rcfile.c 103/rcfile.c
X*** 102/rcfile.c Mon Sep 23 17:55:40 1991
X--- 103/rcfile.c Mon Sep 30 12:39:57 1991
X***************
X*** 3,9 ****
X * Module : rcfile.c
X * Author : I.Lea
X * Created : 01-04-91
X! * Updated : 16-09-91
X * Release : 1.0
X * Notes :
X * Copyright : (c) Copyright 1991 by Iain Lea
X--- 3,9 ----
X * Module : rcfile.c
X * Author : I.Lea
X * Created : 01-04-91
X! * Updated : 29-09-91
X * Release : 1.0
X * Notes :
X * Copyright : (c) Copyright 1991 by Iain Lea
X***************
X*** 17,23 ****
X
X #define COL2 COLS/2
X
X! extern char index_file[LEN+1];
X
X /*
X * read_rcfile - read defaults from ~/.tin/tinrc
X--- 17,23 ----
X
X #define COL2 COLS/2
X
X! extern char index_file[LEN];
X
X /*
X * read_rcfile - read defaults from ~/.tin/tinrc
X***************
X*** 25,31 ****
X
X int read_rcfile ()
X {
X! char buf[LEN+1];
X FILE *fp;
X
X if ((fp = fopen (rcfile, "r")) != NULL) {
X--- 25,31 ----
X
X int read_rcfile ()
X {
X! char buf[LEN];
X FILE *fp;
X
X if ((fp = fopen (rcfile, "r")) != NULL) {
X***************
X*** 50,55 ****
X--- 50,57 ----
X print_header = (strncmp (&buf[13], "ON", 2) == 0 ? TRUE : FALSE);
X } else if (strncmp (buf, "pos_first_unread=", 17) == 0) {
X pos_first_unread = (strncmp (&buf[17], "ON", 2) == 0 ? TRUE : FALSE);
X+ } else if (strncmp (buf, "thread_articles=", 16) == 0) {
X+ thread_arts = (strncmp (&buf[16], "ON", 2) == 0 ? TRUE : FALSE);
X } else if (strncmp (buf, "post_process_type=", 18) == 0) {
X post_proc_type = atoi (&buf[18]);
X switch (post_proc_type) {
X***************
X*** 143,148 ****
X--- 145,152 ----
X fprintf (fp, "# type of post processing to perform after saving articles.\n");
X fprintf (fp, "# 0) none 1) shar 2) uudecode 3) uud & list zoo 4) uud & extract zoo 5) patch.\n");
X fprintf (fp, "post_process_type=%d\n\n", post_proc_type);
X+ fprintf (fp, "# if ON and group not in ~/.tin/unthread articles will be threaded.\n");
X+ fprintf (fp, "thread_articles=%s\n\n", (thread_arts ? "ON" : "OFF"));
X fprintf (fp, "# sort articles by 0) nothing 1) Subject (descending) 2) Subject (ascending)\n");
X fprintf (fp, "# 3) From (descend) 4) From (ascend) 5) Date (descend) 6) Date (ascend)\n");
X fprintf (fp, "sort_article_type=%d\n\n", sort_art_type);
X***************
X*** 152,158 ****
X fprintf (fp, "maildir=%s\n\n", maildir);
X fprintf (fp, "# (-p) print program with parameters used to print articles/threads\n");
X fprintf (fp, "printer=%s\n\n", printer);
X! fprintf (fp, "# (-S) directory where news is spooled\n");
X fprintf (fp, "spooldir=%s\n\n", spooldir);
X
X fprintf (fp, "# .signature file used for replies, followups\n");
X--- 156,162 ----
X fprintf (fp, "maildir=%s\n\n", maildir);
X fprintf (fp, "# (-p) print program with parameters used to print articles/threads\n");
X fprintf (fp, "printer=%s\n\n", printer);
X! fprintf (fp, "# (-s) directory where news is spooled\n");
X fprintf (fp, "spooldir=%s\n\n", spooldir);
X
X fprintf (fp, "# .signature file used for replies, followups\n");
X***************
X*** 556,562 ****
X int col;
X char *var;
X {
X! char buf[LEN+1];
X char ch;
X int len;
X int i;
X--- 560,566 ----
X int col;
X char *var;
X {
X! char buf[LEN];
X char ch;
X int len;
X int i;
X***************
X*** 610,616 ****
X int col;
X char *str;
X {
X! char buf[LEN+1];
X
X if (str[0] == '~') {
X if (strlen (str) == 1) {
X--- 614,620 ----
X int col;
X char *str;
X {
X! char buf[LEN];
X
X if (str[0] == '~') {
X if (strlen (str) == 1) {
Xdiff -rcs 102/save.c 103/save.c
X*** 102/save.c Mon Sep 23 17:55:40 1991
X--- 103/save.c Mon Sep 30 12:40:22 1991
X***************
X*** 47,54 ****
X };
X
X extern char *glob_group;
X! extern char note_h_path[LEN+1]; /* Path: */
X! extern char note_h_date[LEN+1]; /* Date: */
X extern FILE *note_fp; /* the body of the current article */
X extern int index_point;
X extern int note_end;
X--- 47,54 ----
X };
X
X extern char *glob_group;
X! extern char note_h_path[LEN]; /* Path: */
X! extern char note_h_date[LEN]; /* Date: */
X extern FILE *note_fp; /* the body of the current article */
X extern int index_point;
X extern int note_end;
X***************
X*** 62,69 ****
X int mailbox;
X char *filename;
X {
X! char file[LEN+1];
X! char save_art_info[LEN+1];
X FILE *fp;
X int is_mailbox = FALSE;
X int i = 0, ret_code = FALSE;
X--- 62,69 ----
X int mailbox;
X char *filename;
X {
X! char file[LEN];
X! char save_art_info[LEN];
X FILE *fp;
X int is_mailbox = FALSE;
X int i = 0, ret_code = FALSE;
X***************
X*** 91,101 ****
X set_tin_uid_gid ();
X return (ret_code);
X }
X!
X if (! filename) {
X wait_message (txt_saving);
X }
X!
X fprintf(fp, "From %s %s\n", note_h_path, note_h_date);
X
X if (fseek(note_fp, 0L, 0) == -1) {
X--- 91,101 ----
X set_tin_uid_gid ();
X return (ret_code);
X }
X! /*
X if (! filename) {
X wait_message (txt_saving);
X }
X! */
X fprintf(fp, "From %s %s\n", note_h_path, note_h_date);
X
X if (fseek(note_fp, 0L, 0) == -1) {
X***************
X*** 130,136 ****
X int is_mailbox;
X char *group_path;
X {
X! char save_thread_info[LEN+1];
X char *first_savefile;
X FILE *fp;
X int count = 0;
X--- 130,136 ----
X int is_mailbox;
X char *group_path;
X {
X! char save_thread_info[LEN];
X char *first_savefile;
X FILE *fp;
X int count = 0;
X***************
X*** 199,207 ****
X int is_mailbox;
X char *group_path;
X {
X! char buf[LEN+1];
X! char buf2[LEN+1];
X! char mailbox[LEN+1];
X int i, ret_code;
X
X for (i=0 ; i < save_num ; i++) {
X--- 199,207 ----
X int is_mailbox;
X char *group_path;
X {
X! char buf[LEN];
X! char buf2[LEN];
X! char mailbox[LEN];
X int i, ret_code;
X
X for (i=0 ; i < save_num ; i++) {
X***************
X*** 238,244 ****
X int append_to_existing_file (i)
X int i;
X {
X! char buf[LEN+1];
X char *file;
X struct stat st;
X
X--- 238,244 ----
X int append_to_existing_file (i)
X int i;
X {
X! char buf[LEN];
X char *file;
X struct stat st;
X
X***************
X*** 333,339 ****
X int create_sub_dir (i)
X int i;
X {
X! char dir[LEN+1];
X struct stat st;
X
X if (! save[i].is_mailbox && save[i].archive) {
X--- 333,339 ----
X int create_sub_dir (i)
X int i;
X {
X! char dir[LEN];
X struct stat st;
X
X if (! save[i].is_mailbox && save[i].archive) {
X***************
X*** 361,368 ****
X int is_mailbox;
X char *path;
X {
X! char dir[LEN+1];
X! char file[LEN+1];
X int i;
X
X dir[0] = '\0';
X--- 361,368 ----
X int is_mailbox;
X char *path;
X {
X! char dir[LEN];
X! char file[LEN];
X int i;
X
X dir[0] = '\0';
X***************
X*** 630,639 ****
X void post_process_uud (pp)
X int pp;
X {
X! char s[LEN+1], t[LEN+1], u[LEN+1];
X! char buf[LEN+1], *file;
X! char file_out[LEN+1];
X! char file_out_dir[LEN+1];
X FILE *fp_in, *fp_out;
X int i, state = INITIAL;
X int file_size = 0;
X--- 630,639 ----
X void post_process_uud (pp)
X int pp;
X {
X! char s[LEN], t[LEN], u[LEN];
X! char buf[LEN], *file;
X! char file_out[LEN];
X! char file_out_dir[LEN];
X FILE *fp_in, *fp_out;
X int i, state = INITIAL;
X int file_size = 0;
X***************
X*** 800,809 ****
X
X void post_process_sh ()
X {
X! char buf[LEN+1];
X! char file_in[LEN+1];
X! char file_out[LEN+1];
X! char file_out_dir[LEN+1];
X char *ptr1, *ptr2;
X FILE *fp_in, *fp_out;
X int found_header;
X--- 800,809 ----
X
X void post_process_sh ()
X {
X! char buf[LEN];
X! char file_in[LEN];
X! char file_out[LEN];
X! char file_out_dir[LEN];
X char *ptr1, *ptr2;
X FILE *fp_in, *fp_out;
X int found_header;
X***************
X*** 877,883 ****
X char *dir;
X char *ext;
X {
X! char buf[LEN+1];
X char *file = NULL;
X FILE *fp;
X
X--- 877,883 ----
X char *dir;
X char *ext;
X {
X! char buf[LEN];
X char *file = NULL;
X FILE *fp;
X
Xdiff -rcs 102/screen.c 103/screen.c
X*** 102/screen.c Mon Sep 23 17:55:40 1991
X--- 103/screen.c Mon Sep 30 18:47:54 1991
X***************
X*** 17,49 ****
X
X extern int errno;
X
X! char msg[LEN+1];
X struct screen_t *screen;
X
X
X! void info_message (msg)
X! char *msg;
X {
X! clear_message(); /* Clear any old messages hanging around */
X! center_line(LINES, FALSE, msg); /* center the message at screen bottom */
X MoveCursor(LINES, 0);
X }
X
X
X! void wait_message (msg)
X! char *msg;
X {
X if (RawState ()) {
X clear_message(); /* Clear any old messages hanging around */
X }
X! printf ("%s", msg);
X fflush (stdout);
X }
X
X
X! void error_message (template, msg)
X char *template;
X! char *msg;
X {
X errno = 0;
X
X--- 17,49 ----
X
X extern int errno;
X
X! char msg[LEN];
X struct screen_t *screen;
X
X
X! void info_message (str)
X! char *str;
X {
X! clear_message(); /* Clear any old messages hanging around */
X! center_line(LINES, FALSE, str); /* center the message at screen bottom */
X MoveCursor(LINES, 0);
X }
X
X
X! void wait_message (str)
X! char *str;
X {
X if (RawState ()) {
X clear_message(); /* Clear any old messages hanging around */
X }
X! printf ("%s", str);
X fflush (stdout);
X }
X
X
X! void error_message (template, str)
X char *template;
X! char *str;
X {
X errno = 0;
X
X***************
X*** 51,57 ****
X clear_message (); /* Clear any old messages hanging around */
X }
X
X! fprintf (stderr, template, msg);
X fflush (stderr);
X
X if (update == FALSE && RawState ()) {
X--- 51,57 ----
X clear_message (); /* Clear any old messages hanging around */
X }
X
X! fprintf (stderr, template, str);
X fflush (stderr);
X
X if (update == FALSE && RawState ()) {
Xdiff -rcs 102/search.c 103/search.c
X*** 102/search.c Mon Sep 23 17:55:41 1991
X--- 103/search.c Mon Sep 30 18:50:35 1991
X***************
X*** 31,40 ****
X * last search patterns
X */
X
X! char author_search_string[LEN+1];
X! char group_search_string[LEN+1];
X! char subject_search_string[LEN+1];
X! char art_search_string[LEN+1];
X
X
X /*
X--- 31,40 ----
X * last search patterns
X */
X
X! char author_search_string[LEN];
X! char group_search_string[LEN];
X! char subject_search_string[LEN];
X! char art_search_string[LEN];
X
X
X /*
X***************
X*** 45,52 ****
X int current_art;
X int forward;
X {
X! char buf[LEN+1];
X! char buf2[LEN+1];
X int i;
X
X clear_message();
X--- 45,52 ----
X int current_art;
X int forward;
X {
X! char buf[LEN];
X! char buf2[LEN];
X int i;
X
X clear_message();
X***************
X*** 108,115 ****
X void search_group (forward)
X int forward;
X {
X! char buf[LEN+1];
X! char buf2[LEN+1];
X int i;
X
X clear_message();
X--- 108,115 ----
X void search_group (forward)
X int forward;
X {
X! char buf[LEN];
X! char buf2[LEN];
X int i;
X
X clear_message();
X***************
X*** 179,186 ****
X int forward;
X char *group;
X {
X! char buf[LEN+1];
X! char buf2[LEN+1];
X int i, j;
X
X if (index_point < 0) {
X--- 179,186 ----
X int forward;
X char *group;
X {
X! char buf[LEN];
X! char buf2[LEN];
X int i, j;
X
X if (index_point < 0) {
X***************
X*** 228,234 ****
X if (i < 0)
X i = top_base - 1;
X
X! j = base[i];
X make_lower(arts[j].subject, buf2);
X if (str_str (buf2, buf) != 0) {
X if (i >= first_subj_on_screen
X--- 228,234 ----
X if (i < 0)
X i = top_base - 1;
X
X! j = (int) base[i];
X make_lower(arts[j].subject, buf2);
X if (str_str (buf2, buf) != 0) {
X if (i >= first_subj_on_screen
X***************
X*** 255,264 ****
X int search_article (forward)
X int forward;
X {
X! char buf[LEN+1];
X! char buf2[LEN+1];
X! char string[LEN+1];
X! char pattern[LEN+1];
X char *p, *q;
X int ctrl_L;
X int i, j;
X--- 255,264 ----
X int search_article (forward)
X int forward;
X {
X! char buf[LEN];
X! char buf2[LEN];
X! char string[LEN];
X! char pattern[LEN];
X char *p, *q;
X int ctrl_L;
X int i, j;
Xdiff -rcs 102/select.c 103/select.c
X*** 102/select.c Mon Sep 23 17:55:41 1991
X--- 103/select.c Mon Sep 30 18:49:10 1991
X***************
X*** 3,9 ****
X * Module : select.c
X * Author : R.Skrenta / I.Lea
X * Created : 01-04-91
X! * Updated : 22-09-91
X * Release : 1.0
X * Notes :
X * Copyright : (c) Copyright 1991 by Rich Skrenta & Iain Lea
X--- 3,9 ----
X * Module : select.c
X * Author : R.Skrenta / I.Lea
X * Created : 01-04-91
X! * Updated : 29-09-91
X * Release : 1.0
X * Notes :
X * Copyright : (c) Copyright 1991 by Rich Skrenta & Iain Lea
X***************
X*** 17,23 ****
X
X
X extern int index_point;
X! extern char cvers[LEN+1];
X
X int first_group_on_screen;
X int last_group_on_screen;
X--- 17,23 ----
X
X
X extern int index_point;
X! extern char cvers[LEN];
X
X int first_group_on_screen;
X int last_group_on_screen;
X***************
X*** 26,38 ****
X int space_mode;
X
X
X! void selection_index()
X {
X char ch;
X int i, n;
X int subscribe_num;
X! char buf[LEN+1];
X
X #ifndef USE_CLEARSCREEN
X ClearScreen();
X #endif
X--- 26,43 ----
X int space_mode;
X
X
X! void selection_index (start_groupnum)
X! int start_groupnum;
X {
X char ch;
X int i, n;
X int subscribe_num;
X! char buf[LEN];
X
X+ cur_groupnum = start_groupnum;
X+
X+ mail_setup (); /* record mailbox size for "you have mail" */
X+
X #ifndef USE_CLEARSCREEN
X ClearScreen();
X #endif
X***************
X*** 87,128 ****
X break;
X
X case 27: /* (ESC) common arrow keys */
X! ch = ReadCh();
X if (ch == '[' || ch == 'O')
X ch = ReadCh();
X switch (ch) {
X! case 'A':
X! case 'D':
X! case 'i':
X! goto select_up;
X
X! case 'B':
X! case 'C':
X! goto select_down;
X
X! case 'G': /* ansi PgDn */
X! case 'U': /* at386 PgDn */
X! goto select_page_down;
X
X! case 'I': /* ansi PgUp */
X! case 'V': /* at386 PgUp */
X! goto select_page_up;
X
X! case 'H': /* at386 Home */
X! if (cur_groupnum != 0) {
X! cur_groupnum = 0;
X! group_selection_page ();
X! }
X! break;
X
X! case 'F': /* ansi End */
X! case 'Y': /* at386 End */
X! goto end_of_list;
X }
X break;
X
X! case ctrl('D'): /* page down */
X! case ' ':
X select_page_down:
X erase_group_arrow ();
X cur_groupnum += NOTESLINES / 2;
X--- 92,135 ----
X break;
X
X case 27: /* (ESC) common arrow keys */
X! ch = ReadCh ();
X if (ch == '[' || ch == 'O')
X ch = ReadCh();
X switch (ch) {
X! case 'A':
X! case 'D':
X! case 'i':
X! goto select_up;
X
X! case 'B':
X! case 'C':
X! goto select_down;
X
X! case 'G': /* ansi PgDn */
X! case 'U': /* at386 PgDn */
X! goto select_page_down;
X
X! case 'I': /* ansi PgUp */
X! case 'V': /* at386 PgUp */
X! case 'v': /* emacs style */
X! goto select_page_up;
X
X! case 'H': /* at386 Home */
X! if (cur_groupnum != 0) {
X! cur_groupnum = 0;
X! group_selection_page ();
X! }
X! break;
X
X! case 'F': /* ansi End */
X! case 'Y': /* at386 End */
X! goto end_of_list;
X }
X break;
X
X! case ' ': /* page down */
X! case ctrl('D'): /* vi style */
X! case ctrl('V'): /* emacs style */
X select_page_down:
X erase_group_arrow ();
X cur_groupnum += NOTESLINES / 2;
X***************
X*** 646,652 ****
X
X int choose_new_group ()
X {
X! char buf[LEN+1];
X char *p;
X int ret;
X
X--- 653,659 ----
X
X int choose_new_group ()
X {
X! char buf[LEN];
X char *p;
X int ret;
X
X***************
X*** 746,753 ****
X char *group;
X int default_num;
X {
X! char buf[LEN+1];
X! char pos[LEN+1];
X int pos_num = 0;
X
X sprintf (buf, txt_newsgroup_position, group);
X--- 753,760 ----
X char *group;
X int default_num;
X {
X! char buf[LEN];
X! char pos[LEN];
X int pos_num = 0;
X
X sprintf (buf, txt_newsgroup_position, group);
X***************
X*** 848,883 ****
X group_selection_page ();
X }
X }
X-
X- #ifdef TEST
X- do {
X- n = my_group[cur_groupnum];
X- if (active[n].min <= active[n].max) {
X- group_page (active[n].name);
X- } else {
X- if (cur_groupnum > n) { /* next group */
X- n = my_group[cur_groupnum];
X- while (active[n].min <= active[n].max) {
X- cur_groupnum++;
X- if (cur_groupnum >= local_top) {
X- cur_groupnum = local_top - 1;
X- index_point = -1;
X- break;
X- }
X- n = my_group[cur_groupnum];
X- }
X- } else { /* previous group */
X- n = my_group[cur_groupnum];
X- while (active[n].min <= active[n].max) {
X- cur_groupnum--;
X- if (cur_groupnum < 0) {
X- cur_groupnum = 0;
X- index_point = -1;
X- break;
X- }
X- n = my_group[cur_groupnum];
X- }
X- }
X- }
X- } while (index_point == -3);
X- #endif
X--- 855,857 ----
Xdiff -rcs 102/signal.c 103/signal.c
X*** 102/signal.c Mon Sep 23 17:55:41 1991
X--- 103/signal.c Mon Sep 30 18:50:23 1991
X***************
X*** 3,9 ****
X * Module : signal.c
X * Author : R.Skrenta / I.Lea
X * Created : 01-04-91
X! * Updated : 10-09-91
X * Release : 1.0
X * Notes : signal handlers for different modes and window resizing
X * Copyright : (c) Copyright 1991 by Rich Skrenta & Iain Lea
X--- 3,9 ----
X * Module : signal.c
X * Author : R.Skrenta / I.Lea
X * Created : 01-04-91
X! * Updated : 29-09-91
X * Release : 1.0
X * Notes : signal handlers for different modes and window resizing
X * Copyright : (c) Copyright 1991 by Rich Skrenta & Iain Lea
X***************
X*** 27,32 ****
X--- 27,33 ----
X #ifdef POSIX_JOB_CONTROL
X struct sigaction art_act;
X struct sigaction group_act;
X+ struct sigaction kill_act;
X struct sigaction main_act;
X struct sigaction page_act;
X struct sigaction rcfile_act;
X***************
X*** 37,43 ****
X
X void set_signal_handlers ()
X {
X- signal (SIGINT, signal_handler); /* ctrl-C */
X signal (SIGQUIT, signal_handler); /* ctrl-\ */
X signal (SIGILL, signal_handler);
X signal (SIGBUS, signal_handler);
X--- 38,43 ----
X***************
X*** 212,218 ****
X {
X
X Raw (FALSE);
X- putchar ('\n');
X
X #ifdef POSIX_JOB_CONTROL
X sigsetmask(0);
X--- 212,217 ----
Xdiff -rcs 102/tin.1 103/tin.1
X*** 102/tin.1 Tue Sep 24 08:54:12 1991
X--- 103/tin.1 Mon Sep 30 14:53:29 1991
X***************
X*** 1,4 ****
X! .TH TIN 1 "Version 1.0 PL2"
X .SH NAME
X tin \- Visual threaded Usenet news reader
X .SH SYNOPSIS
X--- 1,4 ----
X! .TH TIN 1 "Version 1.0 PL3"
X .SH NAME
X tin \- Visual threaded Usenet news reader
X .SH SYNOPSIS
X***************
X*** 82,90 ****
X in the foreground.
X .TP
X \fB-v\fP
X! create/update index files for every group in \fI$HOME/.newsrc\fP or
X! file specified by -f option. Each group name is printed to stdout as
X! it is updated.
X .PP
X Tin can also dynamically change its options by the 'M' menu command.
X Any changes are written to \fI$HOME/.tin/tinrc\fP.
X--- 82,99 ----
X in the foreground.
X .TP
X \fB-v\fP
X! verbose mode for -c -u and -Z options.
X! .TP
X! \fB-z\fP
X! only start tin if there is any new/unread news. If there is news tin
X! will position cursor at first group with unread news. Useful for putting
X! in login file.
X! .TP
X! \fB-Z\fP
X! check if there is any new/unread news and exit with appropiate status.
X! If -v option is specified the number of unread articles in each group
X! is printed. An exit code 0 indicates no news, 1 that an error occurred
X! and 2 that new/unread news exists. Useful for writing scripts.
X .PP
X Tin can also dynamically change its options by the 'M' menu command.
X Any changes are written to \fI$HOME/.tin/tinrc\fP.
X***************
X*** 121,129 ****
X Tin has three separate levels of operation: Selection Group level, Group level
X and Article level.
X .PP
X! At the Selection Group level the newsgroups are displayed on the left
X! of the screen with the number of unread articles displayed on the same
X! line in the middle of the screen.
X .RS
X .nf
X .in +.5i
X--- 130,139 ----
X Tin has three separate levels of operation: Selection Group level, Group level
X and Article level.
X .PP
X! At the Selection Group level the title displays the number of subscribed
X! groups. The newsgroups are displayed on the left of the screen with the
X! number of unread articles displayed on the same line in the middle of
X! the screen.
X .RS
X .nf
X .in +.5i
X***************
X*** 138,148 ****
X .fi
X .RE
X .PP
X! At the Group level the following formats are possible:
X .RS
X .nf
X .in +.5i
X! .ta +\w'1 'u +\w'+ 'u +\w'This question has 'u +\w'1 'u
X <Selection Num> <Unread> <Responses> <Subject> <Author>
X .ti -.5i
X i.e.,
X--- 148,162 ----
X .fi
X .RE
X .PP
X! At the Group level the title contains the name of the group, the number
X! of conversation threads and total number of articles i.e., alt.sources (7 23).
X! If the group has been setup not to thread articles (i.e., alt.sources
X! is in \fI$(HOME)/.tin/unthread\fP) the title will be alt.sources (U 23).
X! There are two possible display formats as shown below:
X .RS
X .nf
X .in +.5i
X! .ta +\w'1 'u +\w'+ +\w'This question has 'u +\w'1
X <Selection Num> <Unread> <Responses> <Subject> <Author>
X .ti -.5i
X i.e.,
X***************
X*** 728,734 ****
X NAME Iain Lea
X EMAIL iain@estevax.uucp ...!unido!estevax!iain
X SNAIL Siemens AG, ANL 433SZ, 8510 Fuerth-Bislohe, Germany
X! PHONE +49-911-331963 (home) +49-911-895-3853 (work)
X .fi
X .RE
X .SH "ENVIROMENT VARIABLES"
X--- 742,748 ----
X NAME Iain Lea
X EMAIL iain@estevax.uucp ...!unido!estevax!iain
X SNAIL Siemens AG, ANL 433SZ, 8510 Fuerth-Bislohe, Germany
X! PHONE +49-911-331963 (home) +49-911-3089-407 (work)
X .fi
X .RE
X .SH "ENVIROMENT VARIABLES"
X***************
X*** 801,813 ****
X \fI$HOME/.newsrc\fP newgroups subscribed to.
X \fI$HOME/.tin/tinrc\fP options.
X \fI$HOME/.tin/.index\fP newsgroup index files directory.
X! \fI$HOME/.tin/kill\fP kill file.
X! \fI$HOME/.tin/posted\fP history of articles posted by user.
X \fI$HOME/.tin/active\fP used by -n option for notifying user of new groups.
X \fI$HOME/.tin/organization\fP string to replace default organization.
X \fI$HOME/.tin/reply_to\fP host address to use in Reply-To: mail header.
X! \fI$HOME/.tin/add_address\fP address to add to when replying through mail.
X! \fI$HOME/.tin/bug_address\fP address to send bug reports to.
X \fI$HOME/.signature\fP signature.
X \fI$HOME/.Sig\fP signature.
X .fi
X--- 815,828 ----
X \fI$HOME/.newsrc\fP newgroups subscribed to.
X \fI$HOME/.tin/tinrc\fP options.
X \fI$HOME/.tin/.index\fP newsgroup index files directory.
X! \fI$HOME/.tin/add_address\fP address to add to when replying through mail.
X \fI$HOME/.tin/active\fP used by -n option for notifying user of new groups.
X+ \fI$HOME/.tin/bug_address\fP address to send bug reports to.
X+ \fI$HOME/.tin/kill\fP kill file.
X \fI$HOME/.tin/organization\fP string to replace default organization.
X+ \fI$HOME/.tin/posted\fP history of articles posted by user.
X \fI$HOME/.tin/reply_to\fP host address to use in Reply-To: mail header.
X! \fI$HOME/.tin/unthread\fP contains groups that are not to be threaded.
X \fI$HOME/.signature\fP signature.
X \fI$HOME/.Sig\fP signature.
X .fi
X***************
X*** 846,851 ****
X--- 861,878 ----
X .TP
X Chris Smith
X author of multi-part uudecode routine.
X+ .PP
X+ I wish to thank the following people for bug reports/patchs and comments:
X+
X+ Klaus Arzig, Anton Aylward, Reiner Balling, Volker Beyer, Roger Binns,
X+ Georg Biehler, Andreas Brosig, Peter Dressler, Gerhard Ermer, Hugh Fader,
X+ Joachim Feld, Bernhard Gmelch, Viet Hoang, Torsten Homeyer, Andy Jackson,
X+ Joe Johnson, Cyrill Jung, Karl-Koenig Koenigsson, Hans-Juergen Knopp,
X+ Hakan Lennestal, Bob Lukas, Clifford Luke, Phillip Molloy, Toni Metz,
X+ Greg Miller, Klaus Neuberger, Otto Niesser, Wolf Paul, Nickolay Saukh,
X+ Rich Salz, Fredy Schwatz, Bernd Schwerin, Klamer Schutte, Karl-Olav
X+ Serrander, Chris Smith, Steve Spearman, Cliff Stanford, Adri Verhoef,
X+ Cary Whitney
X .SH AUTHOR
X .TP
X Iain Lea
Xdiff -rcs 102/tin.h 103/tin.h
X*** 102/tin.h Tue Sep 24 14:02:10 1991
X--- 103/tin.h Mon Sep 30 12:42:08 1991
X***************
X*** 3,9 ****
X * Module : tin.h
X * Author : R.Skrenta / I.Lea
X * Created : 01-04-91
X! * Updated : 24-09-91
X * Release : 1.0
X * Notes :
X * Copyright : (c) Copyright 1991 by Rich Skrenta & Iain Lea
X--- 3,9 ----
X * Module : tin.h
X * Author : R.Skrenta / I.Lea
X * Created : 01-04-91
X! * Updated : 29-09-91
X * Release : 1.0
X * Notes :
X * Copyright : (c) Copyright 1991 by Rich Skrenta & Iain Lea
X***************
X*** 61,66 ****
X--- 61,67 ----
X #define INDEXDIR ".index"
X #define KILLFILE "kill"
X #define POSTFILE "posted"
X+ #define UNTHREADFILE "unthread"
X
X #define DEFAULT_SHELL "/bin/sh"
X #define DEFAULT_MAILDIR "Mail"
X***************
X*** 109,114 ****
X--- 110,118 ----
X #endif
X
X #define DEFAULT_COMMENT ": " /* used when by follow-ups & replys */
X+ #ifndef UNREAD_ART_MARK
X+ #define UNREAD_ART_MARK '+' /* used to show that an art is unread */
X+ #endif
X
X /*
X * used by feed.c - feed_articles()
X***************
X*** 146,154 ****
X #define SORT_BY_DATE_DESCEND 5
X #define SORT_BY_DATE_ASCEND 6
X
X! #define HELP_INFO 0
X! #define POST_INFO 1
X
X extern int sort_art_type;
X
X extern int NOTESLINES;
X--- 150,162 ----
X #define SORT_BY_DATE_DESCEND 5
X #define SORT_BY_DATE_ASCEND 6
X
X! #define HELP_INFO 0
X! #define POST_INFO 1
X
X+ #define CHECK_ANY_NEWS 0
X+ #define START_ANY_NEWS 1
X+ #define SAVE_ANY_NEWS 2
X+
X extern int sort_art_type;
X
X extern int NOTESLINES;
X***************
X*** 242,247 ****
X--- 250,257 ----
X long min;
X int next; /* next active entry in hash chain */
X int flag;
X+ int read; /* marked TRUE if group was entered during session */
X+ int thread; /* marked FALSE if group is not to be threaded */
X };
X
X #define NOTGOT 0x01 /* haven't put in my_group yet */
X***************
X*** 301,306 ****
X--- 311,317 ----
X
X #ifdef POSIX_JOB_CONTROL
X extern struct sigaction art_act;
X+ extern struct sigaction kill_act;
X extern struct sigaction group_act;
X extern struct sigaction main_act;
X extern struct sigaction page_act;
X***************
X*** 315,321 ****
X extern int start_line_offset;
X
X extern int read_news_via_nntp;
X! extern char nntp_server[LEN+1];
X extern int top;
X extern struct header *arts;
X extern long *base;
X--- 326,332 ----
X extern int start_line_offset;
X
X extern int read_news_via_nntp;
X! extern char nntp_server[LEN];
X extern int top;
X extern struct header *arts;
X extern long *base;
X***************
X*** 335,384 ****
X extern int num_of_tagged_files;
X extern int compiled_with_nntp;
X extern int save_news;
X
X! extern char rcdir[LEN+1];
X! extern char rcfile[LEN+1];
X! extern char indexdir[LEN+1];
X! extern char killfile[LEN+1];
SHAR_EOF
echo "End of tin1.0 part 3"
echo "File tin.patch03 is continued in part 4"
echo "4" > shar3_seq_.tmp
exit 0
exit 0 # Just in case...
--
Kent Landfield INTERNET: kent@sparky.IMD.Sterling.COM
Sterling Software, IMD UUCP: uunet!sparky!kent
Phone: (402) 291-8300 FAX: (402) 291-4362
Please send comp.sources.misc-related mail to kent@uunet.uu.net.