home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #27 / NN_1992_27.iso / spool / alt / sources / 2520 < prev    next >
Encoding:
Internet Message Format  |  1992-11-15  |  60.7 KB

  1. Path: sparky!uunet!ferkel.ucsb.edu!taco!rock!concert!rutgers!jvnc.net!darwin.sura.net!wupost!gumby!destroyer!caen!malgudi.oar.net!zaphod.mps.ohio-state.edu!cis.ohio-state.edu!magnus.acs.ohio-state.edu!usenet.ins.cwru.edu!agate!doc.ic.ac.uk!uknet!mcsun!Germany.EU.net!anl433!Iain.Lea
  2. From: Iain.Lea%anl433.uucp@Germany.EU.net (Iain Lea)
  3. Newsgroups: alt.sources
  4. Subject: TIN newsreader v1.1 PL7 (Patch 07/10)
  5. Message-ID: <1992Nov15.155303.20341@anl433.uucp>
  6. Date: 15 Nov 92 15:53:03 GMT
  7. Sender: news@anl433.uucp (Netnews Administrator)
  8. Reply-To: Iain.Lea%anl433.uucp@Germany.EU.net
  9. Followup-To: alt.sources.d
  10. Organization: ANL A433, Siemens AG., Germany.
  11. Lines: 1848
  12. X-Newsreader: TIN [version 1.1 PL7]
  13.  
  14. Submitted-by: Iain.Lea%anl433.uucp@Germany.EU.net (Iain Lea)
  15. Archive-name: tin-1.17/part07
  16.  
  17. #!/bin/sh
  18. # this is tin.shar.07 (part 7 of tin-1.17)
  19. # do not concatenate these parts, unpack them in order with /bin/sh
  20. # file tin-1.17.patch continued
  21. #
  22. if test ! -r _shar_seq_.tmp; then
  23.     echo 'Please unpack part 1 first!'
  24.     exit 1
  25. fi
  26. (read Scheck
  27.  if test "$Scheck" != 7; then
  28.     echo Please unpack part "$Scheck" next!
  29.     exit 1
  30.  else
  31.     exit 0
  32.  fi
  33. ) < _shar_seq_.tmp || exit 1
  34. if test ! -f _shar_wnt_.tmp; then
  35.     echo 'x - still skipping tin-1.17.patch'
  36. else
  37. echo 'x - continuing file tin-1.17.patch'
  38. sed 's/^X//' << 'SHAR_EOF' >> 'tin-1.17.patch' &&
  39. X  /* getline.c */
  40. X  extern char *getline(char *prompt, int number_only, char *str);
  41. X  /* group.c */
  42. X***************
  43. X*** 75,81 ****
  44. X  extern void decr_tagged(int tag);
  45. X  extern void group_page(char *group);
  46. X  extern void fix_new_highest(int groupnum);
  47. X! extern void show_group_page(char *group);
  48. X  extern void update_group_page(void);
  49. X  extern void draw_subject_arrow(void);
  50. X  extern void erase_subject_arrow(void);
  51. X--- 79,85 ----
  52. X  extern void decr_tagged(int tag);
  53. X  extern void group_page(char *group);
  54. X  extern void fix_new_highest(int groupnum);
  55. X! extern void show_group_page(void);
  56. X  extern void update_group_page(void);
  57. X  extern void draw_subject_arrow(void);
  58. X  extern void erase_subject_arrow(void);
  59. X***************
  60. X*** 111,116 ****
  61. X--- 115,126 ----
  62. X  extern int kill_any_articles(int index);
  63. X  extern int auto_select_articles(int index);
  64. X  /* lang.c */
  65. X+ /* mail.c */
  66. X+ extern void read_mail_active_file(void);
  67. X+ extern void write_mail_active_file(void);
  68. X+ extern void read_mailgroups_file(void);
  69. X+ extern void read_newsgroups_file(void);
  70. X+ extern void read_groups_descriptions(FILE *fp, FILE *fp_save);
  71. X  /* main.c */
  72. X  extern void main(int argc, char *argv[]);
  73. X  extern void read_cmd_line_options(int argc, char *argv[]);
  74. X***************
  75. X*** 119,124 ****
  76. X--- 129,135 ----
  77. X  extern void save_or_mail_new_news(void);
  78. X  extern void update_index_files(void);
  79. X  extern void show_intro_page(void);
  80. X+ extern int read_cmd_line_groups(void);
  81. X  /* memory.c */
  82. X  extern void init_alloc(void);
  83. X  extern void expand_art(void);
  84. X***************
  85. X*** 156,162 ****
  86. X  extern void basename(char *dirname, char *program);
  87. X  extern void mail_setup(void);
  88. X  extern int mail_check(void);
  89. X! extern void parse_from(char *str, char *addr, char *name);
  90. X  extern long my_atol(char *s, int n);
  91. X  extern int my_stricmp(char *p, char *q);
  92. X  extern char *eat_re(char *s);
  93. X--- 167,173 ----
  94. X  extern void basename(char *dirname, char *program);
  95. X  extern void mail_setup(void);
  96. X  extern int mail_check(void);
  97. X! extern void parse_from(char *from_line, char *eaddr, char *fname);
  98. X  extern long my_atol(char *s, int n);
  99. X  extern int my_stricmp(char *p, char *q);
  100. X  extern char *eat_re(char *s);
  101. X***************
  102. X*** 168,173 ****
  103. X--- 179,188 ----
  104. X  extern void toggle_inverse_video(void);
  105. X  extern int get_arrow_key(void);
  106. X  extern void create_index_lock_file(char *lock_file);
  107. X+ extern int strfquote(char *group, int respnum, char *s, int maxsize, char *format);
  108. X+ extern int strfpath(char *format, char *str, int maxsize, char *homedir, char *maildir, char *savedir, char *group);
  109. X+ extern void get_cwd(char *buf);
  110. X+ extern void make_group_path(char *name, char *path);
  111. X  /* newsrc.c */
  112. X  extern int auto_subscribe_groups(void);
  113. X  extern void backup_newsrc(void);
  114. X***************
  115. X*** 189,196 ****
  116. X  extern void mark_all_xref_read(char *xref_line);
  117. X  /* nntplib.c */
  118. X  extern char *getserverbyfile(char *file);
  119. X! extern int server_init(char *machine);
  120. X! extern int get_tcp_socket(char *machine);
  121. X  extern int handle_server_response(int response, char *nntpserver);
  122. X  extern void put_server(char *string);
  123. X  extern int get_server(char *string, int size);
  124. X--- 204,211 ----
  125. X  extern void mark_all_xref_read(char *xref_line);
  126. X  /* nntplib.c */
  127. X  extern char *getserverbyfile(char *file);
  128. X! extern int server_init(char *machine, char *service, int port);
  129. X! extern int get_tcp_socket(char *machine, char *service, int port);
  130. X  extern int handle_server_response(int response, char *nntpserver);
  131. X  extern void put_server(char *string);
  132. X  extern int get_server(char *string, int size);
  133. X***************
  134. X*** 198,210 ****
  135. X  /* open.c */
  136. X  extern void nntp_open(void);
  137. X  extern void nntp_close(void);
  138. X! extern FILE *open_active_fp(void);
  139. X  extern FILE *open_newgroups_fp(int index);
  140. X  extern FILE *open_subscription_fp(void);
  141. X  extern FILE *open_newsgroups_fp(void);
  142. X  extern FILE *open_index_fp(char *group_name);
  143. X  extern FILE *open_art_fp(char *group_path, long art);
  144. X! extern FILE *open_header_fp(char *group_path, long art);
  145. X  extern int base_comp(char *p1, char *p2);
  146. X  extern void setup_base(char *group, char *group_path);
  147. X  extern int get_respcode(void);
  148. X--- 213,229 ----
  149. X  /* open.c */
  150. X  extern void nntp_open(void);
  151. X  extern void nntp_close(void);
  152. X! extern FILE *open_mail_active_fp(char *mode);
  153. X! extern FILE *open_news_active_fp(void);
  154. X  extern FILE *open_newgroups_fp(int index);
  155. X+ extern FILE *open_motd_fp(char *motd_file_date);
  156. X  extern FILE *open_subscription_fp(void);
  157. X+ extern FILE *open_mailgroups_fp(void);
  158. X  extern FILE *open_newsgroups_fp(void);
  159. X  extern FILE *open_index_fp(char *group_name);
  160. X+ extern int stat_article(long art, char *group_path);
  161. X  extern FILE *open_art_fp(char *group_path, long art);
  162. X! extern FILE *open_header_fp(long art);
  163. X  extern int base_comp(char *p1, char *p2);
  164. X  extern void setup_base(char *group, char *group_path);
  165. X  extern int get_respcode(void);
  166. X***************
  167. X*** 212,217 ****
  168. X--- 231,237 ----
  169. X  extern FILE *nntp_to_fp(void);
  170. X  extern void log_user(void);
  171. X  extern char *nntp_respcode(int respcode);
  172. X+ extern void authorization(char *server, char *authuser);
  173. X  /* page.c */
  174. X  extern int show_page(int respnum, int *threadnum, char *group, char *group_path);
  175. X  extern void redraw_page(int respnum, char *group);
  176. X***************
  177. X*** 234,247 ****
  178. X  extern void quick_post_article(void);
  179. X  extern int post_article(char *group, int *posted);
  180. X  extern int post_response(char *group, int respnum, int copy_text);
  181. X! extern int mail_to_someone(char *address, int mail_to_poster, int confirm_to_mail, int *mailed_ok);
  182. X  extern int mail_bug_report(void);
  183. X  extern int mail_to_author(char *group, int respnum, int copy_text);
  184. X  extern void find_mail_header(int header, char *file, char *value);
  185. X! extern int cancel_article(char *group, int respnum);
  186. X  extern int crosspost_article(char *group, int respnum);
  187. X  extern int submit_file(char *name);
  188. X- extern void add_signature(FILE *fp, int flag);
  189. X  extern void insert_x_headers(char *infile);
  190. X  extern void find_reply_to_addr(int respnum, char *from_addr);
  191. X  /* prompt.c */
  192. X--- 254,266 ----
  193. X  extern void quick_post_article(void);
  194. X  extern int post_article(char *group, int *posted);
  195. X  extern int post_response(char *group, int respnum, int copy_text);
  196. X! extern int mail_to_someone(int respnum, char *address, int mail_to_poster, int confirm_to_mail, int *mailed_ok);
  197. X  extern int mail_bug_report(void);
  198. X  extern int mail_to_author(char *group, int respnum, int copy_text);
  199. X  extern void find_mail_header(int header, char *file, char *value);
  200. X! extern int delete_article(char *group, int respnum);
  201. X  extern int crosspost_article(char *group, int respnum);
  202. X  extern int submit_file(char *name);
  203. X  extern void insert_x_headers(char *infile);
  204. X  extern void find_reply_to_addr(int respnum, char *from_addr);
  205. X  /* prompt.c */
  206. X***************
  207. X*** 271,277 ****
  208. X  extern int append_to_existing_file(int i);
  209. X  extern int create_path(char *path);
  210. X  extern int create_sub_dir(int i);
  211. X! extern void add_to_save_list(int index, struct article_t *article, int is_mailbox, char *path);
  212. X  extern void sort_save_list(void);
  213. X  extern int save_comp(char *p1, char *p2);
  214. X  extern char *save_filename(int i);
  215. X--- 290,296 ----
  216. X  extern int append_to_existing_file(int i);
  217. X  extern int create_path(char *path);
  218. X  extern int create_sub_dir(int i);
  219. X! extern void add_to_save_list(int index, struct article_t *article, int is_mailbox, int archive_save, char *path);
  220. X  extern void sort_save_list(void);
  221. X  extern int save_comp(char *p1, char *p2);
  222. X  extern char *save_filename(int i);
  223. X***************
  224. X*** 314,319 ****
  225. X--- 333,343 ----
  226. X  extern void set_groupname_len(int all_groups);
  227. X  extern void toggle_my_groups(int only_unread_groups, char *group);
  228. X  extern void goto_next_group_on_screen(void);
  229. X+ extern void strip_line(char *line, int len);
  230. X+ /* sigfile.c */
  231. X+ extern void add_signature(FILE *fp, int flag);
  232. X+ extern FILE *open_random_sig(char *sigdir);
  233. X+ extern int thrashdir(char *sigdir);
  234. X  /* signal.c */
  235. X  extern sigtype_t (*sigdisp(int sig, sigtype_t (*func)()))();
  236. X  extern void set_signal_handlers(void);
  237. X***************
  238. X*** 355,360 ****
  239. X--- 379,386 ----
  240. X  extern int load_spooldirs(void);
  241. X  extern void get_spooldir(void);
  242. X  extern int set_spooldir(char *name);
  243. X+ /* strftime.c */
  244. X+ extern size_t my_strftime(char *s, size_t maxsize, char *format, struct tm *timeptr);
  245. X  /* thread.c */
  246. X  extern int show_thread(int respnum, char *group, char *group_path);
  247. X  extern void show_thread_page(void);
  248. X***************
  249. X*** 381,387 ****
  250. X  /* active.c */
  251. X  extern void resync_active_file(/*void*/);
  252. X  extern int find_group_index(/*char *group*/);
  253. X! extern void read_active_file(/*void*/);
  254. X  extern void backup_active(/*int create*/);
  255. X  extern void check_for_any_new_groups(/*void*/);
  256. X  extern int prompt_subscribe_group(/*char *group*/);
  257. X--- 407,414 ----
  258. X  /* active.c */
  259. X  extern void resync_active_file(/*void*/);
  260. X  extern int find_group_index(/*char *group*/);
  261. X! extern int parse_active_line(/*char *line, long *max, long *min, char *moderated*/);
  262. X! extern void read_news_active_file(/*void*/);
  263. X  extern void backup_active(/*int create*/);
  264. X  extern void check_for_any_new_groups(/*void*/);
  265. X  extern int prompt_subscribe_group(/*char *group*/);
  266. X***************
  267. X*** 388,411 ****
  268. X  extern void set_default_attributes(/*void*/);
  269. X  extern void read_attributes_file(/*void*/);
  270. X  extern void write_attributes_file(/*void*/);
  271. X- extern void read_newsgroups_file(/*void*/);
  272. X  extern void read_active_times_file(/*void*/);
  273. X  extern void write_active_times_file(/*void*/);
  274. X  extern void load_active_size_info(/*char *info*/);
  275. X  extern int find_active_size_index(/*char *cur_active_server*/);
  276. X  /* amiga.c */
  277. X  /* art.c */
  278. X  extern void find_base(/*int index*/);
  279. X  extern int num_of_arts(/*void*/);
  280. X  extern int valid_artnum(/*long art*/);
  281. X! extern int purge_needed(/*void*/);
  282. X! extern void index_group(/*char *group, char *group_path*/);
  283. X  extern int read_group(/*char *group, char *group_path*/);
  284. X  extern void make_threads(/*int rethread*/);
  285. X  extern int parse_headers(/*FILE *fp, struct article_t *h*/);
  286. X  extern void write_index_file(/*char *group*/);
  287. X! extern int read_index_file(/*char *group_name*/);
  288. X! extern void find_index_file(/*char *group*/);
  289. X  extern void do_update(/*void*/);
  290. X  extern int artnum_comp(/*char *p1, char *p2*/);
  291. X  extern int subj_comp(/*char *p1, char *p2*/);
  292. X--- 415,438 ----
  293. X  extern void set_default_attributes(/*void*/);
  294. X  extern void read_attributes_file(/*void*/);
  295. X  extern void write_attributes_file(/*void*/);
  296. X  extern void read_active_times_file(/*void*/);
  297. X  extern void write_active_times_file(/*void*/);
  298. X  extern void load_active_size_info(/*char *info*/);
  299. X  extern int find_active_size_index(/*char *cur_active_server*/);
  300. X+ extern void read_motd_file(/*void*/);
  301. X  /* amiga.c */
  302. X  /* art.c */
  303. X  extern void find_base(/*int index*/);
  304. X  extern int num_of_arts(/*void*/);
  305. X  extern int valid_artnum(/*long art*/);
  306. X! extern int purge_needed(/*char *group_path*/);
  307. X! extern int index_group(/*char *group, char *group_path*/);
  308. X  extern int read_group(/*char *group, char *group_path*/);
  309. X  extern void make_threads(/*int rethread*/);
  310. X  extern int parse_headers(/*FILE *fp, struct article_t *h*/);
  311. X  extern void write_index_file(/*char *group*/);
  312. X! extern void read_index_file(/*char *group_name*/);
  313. X! extern int find_index_file(/*char *group*/);
  314. X  extern void do_update(/*void*/);
  315. X  extern int artnum_comp(/*char *p1, char *p2*/);
  316. X  extern int subj_comp(/*char *p1, char *p2*/);
  317. X***************
  318. X*** 412,417 ****
  319. X--- 439,445 ----
  320. X  extern int from_comp(/*char *p1, char *p2*/);
  321. X  extern int date_comp(/*char *p1, char *p2*/);
  322. X  extern void set_article(/*struct article_t *art*/);
  323. X+ extern int input_pending(/*void*/);
  324. X  /* curses.c */
  325. X  extern void setup_screen(/*void*/);
  326. X  extern int InitScreen(/*void*/);
  327. X***************
  328. X*** 447,452 ****
  329. X--- 475,482 ----
  330. X  /* feed.c */
  331. X  extern void feed_articles(/*int function, int level, char *prompt, int respnum, char *group_path*/);
  332. X  extern int print_file(/*char *command, int respnum, int count*/);
  333. X+ extern int get_post_proc_type(/*int proc_type*/);
  334. X+ extern int does_article_exist(/*int function, long artnum, char *path*/);
  335. X  /* getline.c */
  336. X  extern char *getline(/*char *prompt, int number_only, char *str*/);
  337. X  /* group.c */
  338. X***************
  339. X*** 453,459 ****
  340. X  extern void decr_tagged(/*int tag*/);
  341. X  extern void group_page(/*char *group*/);
  342. X  extern void fix_new_highest(/*int groupnum*/);
  343. X! extern void show_group_page(/*char *group*/);
  344. X  extern void update_group_page(/*void*/);
  345. X  extern void draw_subject_arrow(/*void*/);
  346. X  extern void erase_subject_arrow(/*void*/);
  347. X--- 483,489 ----
  348. X  extern void decr_tagged(/*int tag*/);
  349. X  extern void group_page(/*char *group*/);
  350. X  extern void fix_new_highest(/*int groupnum*/);
  351. X! extern void show_group_page(/*void*/);
  352. X  extern void update_group_page(/*void*/);
  353. X  extern void draw_subject_arrow(/*void*/);
  354. X  extern void erase_subject_arrow(/*void*/);
  355. X***************
  356. X*** 489,494 ****
  357. X--- 519,530 ----
  358. X  extern int kill_any_articles(/*int index*/);
  359. X  extern int auto_select_articles(/*int index*/);
  360. X  /* lang.c */
  361. X+ /* mail.c */
  362. X+ extern void read_mail_active_file(/*void*/);
  363. X+ extern void write_mail_active_file(/*void*/);
  364. X+ extern void read_mailgroups_file(/*void*/);
  365. X+ extern void read_newsgroups_file(/*void*/);
  366. X+ extern void read_groups_descriptions(/*FILE *fp, FILE *fp_save*/);
  367. X  /* main.c */
  368. X  extern void main(/*int argc, char *argv[]*/);
  369. X  extern void read_cmd_line_options(/*int argc, char *argv[]*/);
  370. X***************
  371. X*** 497,502 ****
  372. X--- 533,539 ----
  373. X  extern void save_or_mail_new_news(/*void*/);
  374. X  extern void update_index_files(/*void*/);
  375. X  extern void show_intro_page(/*void*/);
  376. X+ extern int read_cmd_line_groups(/*void*/);
  377. X  /* memory.c */
  378. X  extern void init_alloc(/*void*/);
  379. X  extern void expand_art(/*void*/);
  380. X***************
  381. X*** 534,540 ****
  382. X  extern void basename(/*char *dirname, char *program*/);
  383. X  extern void mail_setup(/*void*/);
  384. X  extern int mail_check(/*void*/);
  385. X! extern void parse_from(/*char *str, char *addr, char *name*/);
  386. X  extern long my_atol(/*char *s, int n*/);
  387. X  extern int my_stricmp(/*char *p, char *q*/);
  388. X  extern char *eat_re(/*char *s*/);
  389. X--- 571,577 ----
  390. X  extern void basename(/*char *dirname, char *program*/);
  391. X  extern void mail_setup(/*void*/);
  392. X  extern int mail_check(/*void*/);
  393. X! extern void parse_from(/*char *from_line, char *eaddr, char *fname*/);
  394. X  extern long my_atol(/*char *s, int n*/);
  395. X  extern int my_stricmp(/*char *p, char *q*/);
  396. X  extern char *eat_re(/*char *s*/);
  397. X***************
  398. X*** 546,551 ****
  399. X--- 583,592 ----
  400. X  extern void toggle_inverse_video(/*void*/);
  401. X  extern int get_arrow_key(/*void*/);
  402. X  extern void create_index_lock_file(/*char *lock_file*/);
  403. X+ extern int strfquote(/*char *group, int respnum, char *s, int maxsize, char *format*/);
  404. X+ extern int strfpath(/*char *format, char *str, int maxsize, char *homedir, char *maildir, char *savedir, char *group*/);
  405. X+ extern void get_cwd(/*char *buf*/);
  406. X+ extern void make_group_path(/*char *name, char *path*/);
  407. X  /* newsrc.c */
  408. X  extern int auto_subscribe_groups(/*void*/);
  409. X  extern void backup_newsrc(/*void*/);
  410. X***************
  411. X*** 567,574 ****
  412. X  extern void mark_all_xref_read(/*char *xref_line*/);
  413. X  /* nntplib.c */
  414. X  extern char *getserverbyfile(/*char *file*/);
  415. X! extern int server_init(/*char *machine*/);
  416. X! extern int get_tcp_socket(/*char *machine*/);
  417. X  extern int handle_server_response(/*int response, char *nntpserver*/);
  418. X  extern void put_server(/*char *string*/);
  419. X  extern int get_server(/*char *string, int size*/);
  420. X--- 608,615 ----
  421. X  extern void mark_all_xref_read(/*char *xref_line*/);
  422. X  /* nntplib.c */
  423. X  extern char *getserverbyfile(/*char *file*/);
  424. X! extern int server_init(/*char *machine, char *service, int port*/);
  425. X! extern int get_tcp_socket(/*char *machine, char *service, int port*/);
  426. X  extern int handle_server_response(/*int response, char *nntpserver*/);
  427. X  extern void put_server(/*char *string*/);
  428. X  extern int get_server(/*char *string, int size*/);
  429. X***************
  430. X*** 576,588 ****
  431. X  /* open.c */
  432. X  extern void nntp_open(/*void*/);
  433. X  extern void nntp_close(/*void*/);
  434. X! extern FILE *open_active_fp(/*void*/);
  435. X  extern FILE *open_newgroups_fp(/*int index*/);
  436. X  extern FILE *open_subscription_fp(/*void*/);
  437. X  extern FILE *open_newsgroups_fp(/*void*/);
  438. X  extern FILE *open_index_fp(/*char *group_name*/);
  439. X  extern FILE *open_art_fp(/*char *group_path, long art*/);
  440. X! extern FILE *open_header_fp(/*char *group_path, long art*/);
  441. X  extern int base_comp(/*char *p1, char *p2*/);
  442. X  extern void setup_base(/*char *group, char *group_path*/);
  443. X  extern int get_respcode(/*void*/);
  444. X--- 617,633 ----
  445. X  /* open.c */
  446. X  extern void nntp_open(/*void*/);
  447. X  extern void nntp_close(/*void*/);
  448. X! extern FILE *open_mail_active_fp(/*char *mode*/);
  449. X! extern FILE *open_news_active_fp(/*void*/);
  450. X  extern FILE *open_newgroups_fp(/*int index*/);
  451. X+ extern FILE *open_motd_fp(/*char *motd_file_date*/);
  452. X  extern FILE *open_subscription_fp(/*void*/);
  453. X+ extern FILE *open_mailgroups_fp(/*void*/);
  454. X  extern FILE *open_newsgroups_fp(/*void*/);
  455. X  extern FILE *open_index_fp(/*char *group_name*/);
  456. X+ extern int stat_article(/*long art, char *group_path*/);
  457. X  extern FILE *open_art_fp(/*char *group_path, long art*/);
  458. X! extern FILE *open_header_fp(/*long art*/);
  459. X  extern int base_comp(/*char *p1, char *p2*/);
  460. X  extern void setup_base(/*char *group, char *group_path*/);
  461. X  extern int get_respcode(/*void*/);
  462. X***************
  463. X*** 589,594 ****
  464. X--- 634,640 ----
  465. X  extern int stuff_nntp(/*char *fnam*/);
  466. X  extern FILE *nntp_to_fp(/*void*/);
  467. X  extern void log_user(/*void*/);
  468. X+ extern void authorization(/*char *server, char *authuser*/);
  469. X  extern char *nntp_respcode(/*int respcode*/);
  470. X  /* page.c */
  471. X  extern int show_page(/*int respnum, int *threadnum, char *group, char *group_path*/);
  472. X***************
  473. X*** 612,625 ****
  474. X  extern void quick_post_article(/*void*/);
  475. X  extern int post_article(/*char *group, int *posted*/);
  476. X  extern int post_response(/*char *group, int respnum, int copy_text*/);
  477. X! extern int mail_to_someone(/*char *address, int mail_to_poster, int confirm_to_mail, int *mailed_ok*/);
  478. X  extern int mail_bug_report(/*void*/);
  479. X  extern int mail_to_author(/*char *group, int respnum, int copy_text*/);
  480. X  extern void find_mail_header(/*int header, char *file, char *value*/);
  481. X! extern int cancel_article(/*char *group, int respnum*/);
  482. X  extern int crosspost_article(/*char *group, int respnum*/);
  483. X  extern int submit_file(/*char *name*/);
  484. X- extern void add_signature(/*FILE *fp, int flag*/);
  485. X  extern void insert_x_headers(/*char *infile*/);
  486. X  extern void find_reply_to_addr(/*int respnum, char *from_addr*/);
  487. X  /* prompt.c */
  488. X--- 658,670 ----
  489. X  extern void quick_post_article(/*void*/);
  490. X  extern int post_article(/*char *group, int *posted*/);
  491. X  extern int post_response(/*char *group, int respnum, int copy_text*/);
  492. X! extern int mail_to_someone(/*int respnum, char *address, int mail_to_poster, int confirm_to_mail, int *mailed_ok*/);
  493. X  extern int mail_bug_report(/*void*/);
  494. X  extern int mail_to_author(/*char *group, int respnum, int copy_text*/);
  495. X  extern void find_mail_header(/*int header, char *file, char *value*/);
  496. X! extern int delete_article(/*char *group, int respnum*/);
  497. X  extern int crosspost_article(/*char *group, int respnum*/);
  498. X  extern int submit_file(/*char *name*/);
  499. X  extern void insert_x_headers(/*char *infile*/);
  500. X  extern void find_reply_to_addr(/*int respnum, char *from_addr*/);
  501. X  /* prompt.c */
  502. X***************
  503. X*** 649,655 ****
  504. X  extern int append_to_existing_file(/*int i*/);
  505. X  extern int create_path(/*char *path*/);
  506. X  extern int create_sub_dir(/*int i*/);
  507. X! extern void add_to_save_list(/*int index, struct article_t *article, int is_mailbox, char *path*/);
  508. X  extern void sort_save_list(/*void*/);
  509. X  extern int save_comp(/*char *p1, char *p2*/);
  510. X  extern char *save_filename(/*int i*/);
  511. X--- 694,700 ----
  512. X  extern int append_to_existing_file(/*int i*/);
  513. X  extern int create_path(/*char *path*/);
  514. X  extern int create_sub_dir(/*int i*/);
  515. X! extern void add_to_save_list(/*int index, struct article_t *article, int is_mailbox, int archive_save, char *path*/);
  516. X  extern void sort_save_list(/*void*/);
  517. X  extern int save_comp(/*char *p1, char *p2*/);
  518. X  extern char *save_filename(/*int i*/);
  519. X***************
  520. X*** 692,697 ****
  521. X--- 737,747 ----
  522. X  extern void set_groupname_len(/*int all_groups*/);
  523. X  extern void toggle_my_groups(/*int only_unread_groups, char *group*/);
  524. X  extern void goto_next_group_on_screen(/*void*/);
  525. X+ extern void strip_line(/*char *line, int len*/);
  526. X+ /* sigfile.c */
  527. X+ extern void add_signature(/*FILE *fp, int flag*/);
  528. X+ extern FILE *open_random_sig(/*char *sigdir*/);
  529. X+ extern int thrashdir(/*char *sigdir*/);
  530. X  /* signal.c */
  531. X  extern sigtype_t (*sigdisp(/*int sig, sigtype_t (*func)()*/))();
  532. X  extern void set_signal_handlers(/*void*/);
  533. X***************
  534. X*** 733,738 ****
  535. X--- 783,790 ----
  536. X  extern int load_spooldirs(/*void*/);
  537. X  extern void get_spooldir(/*void*/);
  538. X  extern int set_spooldir(/*char *name*/);
  539. X+ /* strftime.c */
  540. X+ extern size_t my_strftime(/*char *s, size_t maxsize, char *format, struct tm *timeptr*/);
  541. X  /* thread.c */
  542. X  extern int show_thread(/*int respnum, char *group, char *group_path*/);
  543. X  extern void show_thread_page(/*void*/);
  544. Xdiff -rcs ../1.16/rcfile.c ./rcfile.c
  545. X*** ../1.16/rcfile.c    Sun Nov 15 18:42:04 1992
  546. X--- ./rcfile.c    Sun Nov 15 16:02:48 1992
  547. X***************
  548. X*** 3,9 ****
  549. X   *  Module    : rcfile.c
  550. X   *  Author    : I.Lea
  551. X   *  Created   : 01-04-91
  552. X!  *  Updated   : 06-09-92
  553. X   *  Notes     :
  554. X   *  Copyright : (c) Copyright 1991-92 by Iain Lea
  555. X   *              You may  freely  copy or  redistribute  this software,
  556. X--- 3,9 ----
  557. X   *  Module    : rcfile.c
  558. X   *  Author    : I.Lea
  559. X   *  Created   : 01-04-91
  560. X!  *  Updated   : 07-11-92
  561. X   *  Notes     :
  562. X   *  Copyright : (c) Copyright 1991-92 by Iain Lea
  563. X   *              You may  freely  copy or  redistribute  this software,
  564. X***************
  565. X*** 54,64 ****
  566. X              continue;
  567. X          }    
  568. X          if (match_boolean (buf, "draw_arrow=", &draw_arrow_mark)) {
  569. X- /*
  570. X-             if (draw_arrow_mark == FALSE && inverse_okay == FALSE) {
  571. X-                 inverse_okay = TRUE;
  572. X-             }
  573. X- */
  574. X              continue;
  575. X          }    
  576. X          if (match_boolean (buf, "print_header=", &print_header)) {
  577. X--- 54,59 ----
  578. X***************
  579. X*** 98,143 ****
  580. X              continue;
  581. X          }    
  582. X          if (match_number (buf, "post_process_type=", &default_post_proc_type)) {
  583. X!             switch (default_post_proc_type) {
  584. X!                 case POST_PROC_SHAR:
  585. X!                     proc_ch_default = 's';
  586. X!                     break;
  587. X!                 case POST_PROC_UUDECODE:
  588. X!                     proc_ch_default = 'u';
  589. X!                     break;
  590. X!                 case POST_PROC_UUD_LST_ZOO:
  591. X!                     proc_ch_default = 'U';
  592. X!                     break;
  593. X!                 case POST_PROC_UUD_EXT_ZOO:
  594. X!                     proc_ch_default = 'U';
  595. X!                     break;
  596. X!                 case POST_PROC_NONE:
  597. X!                 default:
  598. X!                     proc_ch_default = 'n';
  599. X!                     break;
  600. X!             }
  601. X              continue;
  602. X          }    
  603. X          if (match_number (buf, "sort_article_type=", &default_sort_art_type)) {
  604. X              continue;
  605. X          }    
  606. X!         if (match_string (buf, "savedir=", default_savedir, sizeof (default_savedir))) {
  607. X              if (default_savedir[0] == '.' && strlen (default_savedir) == 1) {
  608. X! #ifdef DONT_HAVE_GETCWD
  609. X!                 getwd (buf);    
  610. X! #else
  611. X!                 getcwd (buf, LEN);
  612. X! #endif
  613. X                  my_strncpy (default_savedir, buf, sizeof (default_savedir));
  614. X              }
  615. X              continue;
  616. X          }    
  617. X!         if (match_string (buf, "maildir=", default_maildir, sizeof (default_maildir))) {
  618. X              continue;
  619. X          }
  620. X!         if (match_string (buf, "printer=", printer, sizeof (printer))) {
  621. X              continue;
  622. X          }
  623. X          if (match_string (buf, "quote_chars=", quote_chars, sizeof (quote_chars))) {
  624. X              quote_dash_to_space (quote_chars);
  625. X              continue;
  626. X--- 93,120 ----
  627. X              continue;
  628. X          }    
  629. X          if (match_number (buf, "post_process_type=", &default_post_proc_type)) {
  630. X!             proc_ch_default = get_post_proc_type (default_post_proc_type);
  631. X              continue;
  632. X          }    
  633. X          if (match_number (buf, "sort_article_type=", &default_sort_art_type)) {
  634. X              continue;
  635. X          }    
  636. X!         if (match_string (buf, "default_savedir=", default_savedir, sizeof (default_savedir))) {
  637. X              if (default_savedir[0] == '.' && strlen (default_savedir) == 1) {
  638. X!                 get_cwd (buf);
  639. X                  my_strncpy (default_savedir, buf, sizeof (default_savedir));
  640. X              }
  641. X              continue;
  642. X          }    
  643. X!         if (match_string (buf, "default_maildir=", default_maildir, sizeof (default_maildir))) {
  644. X              continue;
  645. X          }
  646. X!         if (match_string (buf, "default_printer=", default_printer, sizeof (default_printer))) {
  647. X              continue;
  648. X          }
  649. X+         if (match_string (buf, "default_sigfile=", default_sigfile, sizeof (default_sigfile))) {
  650. X+             continue;
  651. X+         }
  652. X          if (match_string (buf, "quote_chars=", quote_chars, sizeof (quote_chars))) {
  653. X              quote_dash_to_space (quote_chars);
  654. X              continue;
  655. X***************
  656. X*** 172,180 ****
  657. X--- 149,177 ----
  658. X          if (match_boolean (buf, "save_to_mmdf_mailbox=", &save_to_mmdf_mailbox)) {
  659. X              continue;
  660. X          }
  661. X+         if (match_boolean (buf, "use_builtin_inews=", &use_builtin_inews)) {
  662. X+             continue;
  663. X+         }
  664. X          if (match_string (buf, "default_spooldir_alias=", spooldir_alias, sizeof (spooldir_alias))) {
  665. X              continue;
  666. X          }
  667. X+         if (match_string (buf, "news_quote_format=", news_quote_format, sizeof (news_quote_format))) {
  668. X+             continue;
  669. X+         }
  670. X+         if (match_string (buf, "mail_quote_format=", mail_quote_format, sizeof (mail_quote_format))) {
  671. X+             continue;
  672. X+         }
  673. X+ #ifdef HAVE_KEYPAD
  674. X+         if (match_boolean (buf, "use_keypad=", &use_keypad)) {
  675. X+             continue;
  676. X+         }
  677. X+ #endif
  678. X+         if (match_boolean (buf, "slow_speed_terminal=", &slow_speed_terminal)) {
  679. X+             continue;
  680. X+         }
  681. X+         if (match_number (buf, "groupname_max_length=", &groupname_max_length)) {
  682. X+             continue;
  683. X+         }
  684. X          if (match_string (buf, "default_author_search=", default_author_search, sizeof (default_author_search))) {
  685. X              continue;
  686. X          }
  687. X***************
  688. X*** 220,229 ****
  689. X          if (match_string (buf, "default_shell_command=", default_shell_command, sizeof (default_shell_command))) {
  690. X              continue;
  691. X          }
  692. X          if (match_string (buf, "active_file_info=", active_size_info, sizeof (active_size_info))) {
  693. X              load_active_size_info (active_size_info);
  694. X              continue;
  695. X!         }    
  696. X      }
  697. X      fclose (fp);
  698. X      return TRUE;        
  699. X--- 217,229 ----
  700. X          if (match_string (buf, "default_shell_command=", default_shell_command, sizeof (default_shell_command))) {
  701. X              continue;
  702. X          }
  703. X+         if (match_string (buf, "motd_file_info=", motd_file_info, sizeof (motd_file_info))) {
  704. X+             continue;
  705. X+         }
  706. X          if (match_string (buf, "active_file_info=", active_size_info, sizeof (active_size_info))) {
  707. X              load_active_size_info (active_size_info);
  708. X              continue;
  709. X!         }
  710. X      }
  711. X      fclose (fp);
  712. X      return TRUE;        
  713. X***************
  714. X*** 294,304 ****
  715. X      fprintf (fp, "# 3=(From descend) 4=(From ascend) 5=(Date descend) 6=(Date ascend).\n");
  716. X      fprintf (fp, "sort_article_type=%d\n\n", default_sort_art_type);
  717. X      fprintf (fp, "# directory where articles/threads are saved\n");
  718. X!     fprintf (fp, "savedir=%s\n\n", default_savedir);
  719. X      fprintf (fp, "# (-m) directory where articles/threads are saved in mailbox format\n");    
  720. X!     fprintf (fp, "maildir=%s\n\n", default_maildir);    
  721. X      fprintf (fp, "# print program with parameters used to print articles/threads\n");
  722. X!     fprintf (fp, "printer=%s\n\n", printer);
  723. X      fprintf (fp, "# time interval in seconds between rereading the active file\n");
  724. X      fprintf (fp, "reread_active_file_secs=%d\n\n", reread_active_file_secs);
  725. X      fprintf (fp, "# characters used in quoting to followups and replys. '_' replaced by ' '\n");
  726. X--- 294,306 ----
  727. X      fprintf (fp, "# 3=(From descend) 4=(From ascend) 5=(Date descend) 6=(Date ascend).\n");
  728. X      fprintf (fp, "sort_article_type=%d\n\n", default_sort_art_type);
  729. X      fprintf (fp, "# directory where articles/threads are saved\n");
  730. X!     fprintf (fp, "default_savedir=%s\n\n", default_savedir);
  731. X      fprintf (fp, "# (-m) directory where articles/threads are saved in mailbox format\n");    
  732. X!     fprintf (fp, "default_maildir=%s\n\n", default_maildir);    
  733. X      fprintf (fp, "# print program with parameters used to print articles/threads\n");
  734. X!     fprintf (fp, "default_printer=%s\n\n", default_printer);
  735. X!     fprintf (fp, "# Signature path (random sigs)/file to be used when posting/replying to messages\n");
  736. X!     fprintf (fp, "default_sigfile=%s\n\n", default_sigfile);
  737. X      fprintf (fp, "# time interval in seconds between rereading the active file\n");
  738. X      fprintf (fp, "reread_active_file_secs=%d\n\n", reread_active_file_secs);
  739. X      fprintf (fp, "# characters used in quoting to followups and replys. '_' replaced by ' '\n");
  740. X***************
  741. X*** 319,324 ****
  742. X--- 321,341 ----
  743. X      fprintf (fp, "display_reading_prompt=%s\n\n", (display_reading_prompt ? "ON" : "OFF"));
  744. X      fprintf (fp, "# if ON save mail to a MMDF style mailbox (default is normal mbox format)\n");
  745. X      fprintf (fp, "save_to_mmdf_mailbox=%s\n\n", (save_to_mmdf_mailbox ? "ON" : "OFF"));
  746. X+     fprintf (fp, "# if ON use the builtin mini inews otherwise use an external inews program\n");
  747. X+     fprintf (fp, "use_builtin_inews=%s\n\n", (use_builtin_inews ? "ON" : "OFF"));
  748. X+ 
  749. X+     fprintf (fp, "# Format of quote line when mailing/posting/followingup an article\n");
  750. X+     fprintf (fp, "# %%A Address  %%D Date  %%F Addr+Name  %%G Groupname  %%M MessageId  %%N Name\n");
  751. X+     fprintf (fp, "news_quote_format=%s\n", news_quote_format);
  752. X+     fprintf (fp, "mail_quote_format=%s\n\n", mail_quote_format);
  753. X+ #ifdef HAVE_KEYPAD
  754. X+     fprintf (fp, "# If ON enable scroll keys on terminals that support it\n");
  755. X+     fprintf (fp, "use_keypad=%s\n\n", (use_keypad ? "ON" : "OFF"));
  756. X+ #endif
  757. X+     fprintf (fp, "# If ON strip blanks from end of lines to speedup display on slow terminals\n");
  758. X+     fprintf (fp, "slow_speed_terminal=%s\n\n", (slow_speed_terminal ? "ON" : "OFF"));
  759. X+     fprintf (fp, "# Maximum length of the names of newsgroups displayed\n");
  760. X+     fprintf (fp, "groupname_max_length=%d\n\n", groupname_max_length);
  761. X  
  762. X      fprintf (fp, "# default action/prompt strings\n");
  763. X      fprintf (fp, "default_spooldir_alias=%s\n", spooldir_alias);
  764. X***************
  765. X*** 338,343 ****
  766. X--- 355,363 ----
  767. X      fprintf (fp, "default_select_pattern=%s\n", default_select_pattern);
  768. X      fprintf (fp, "default_shell_command=%s\n\n", default_shell_command);
  769. X  
  770. X+     fprintf (fp, "# news motd file dates from server used for detecting new motd info\n");
  771. X+     fprintf (fp, "motd_file_info=%s\n\n", motd_file_info);
  772. X+ 
  773. X      fprintf (fp, "# active file sizes/dates from different servers used for detecting new groups\n");
  774. X      if (! num_active_size) {
  775. X          fprintf (fp, "active_file_info=%s[%s]\n", 
  776. X***************
  777. X*** 595,625 ****
  778. X                  do {
  779. X                      MoveCursor (INDEX_TOP+8, COL2 + (int) strlen (txt_opt_process_type));
  780. X                      if ((ch    = ReadCh()) == ' ') {
  781. X!                         if (default_post_proc_type + 1 > POST_PROC_UUD_EXT_ZOO) {
  782. X                              default_post_proc_type = POST_PROC_NONE;
  783. X                          } else {
  784. X                              default_post_proc_type++;
  785. X                          }
  786. X                          switch (default_post_proc_type) {
  787. X                              case POST_PROC_NONE:
  788. X                                  str = txt_post_process_none;
  789. X-                                 proc_ch_default = 'n';
  790. X                                  break;
  791. X                              case POST_PROC_SHAR:
  792. X                                  str = txt_post_process_sh;
  793. X-                                 proc_ch_default = 's';
  794. X                                  break;
  795. X                              case POST_PROC_UUDECODE:
  796. X                                  str = txt_post_process_uudecode;
  797. X-                                 proc_ch_default = 'u';
  798. X                                  break;
  799. X                              case POST_PROC_UUD_LST_ZOO:
  800. X                                  str = txt_post_process_uud_lst_zoo;
  801. X-                                 proc_ch_default = 'U';
  802. X                                  break;
  803. X                              case POST_PROC_UUD_EXT_ZOO:
  804. X                                  str = txt_post_process_uud_ext_zoo;
  805. X!                                 proc_ch_default = 'U';
  806. X                                  break;
  807. X                          }
  808. X                          CleartoEOLN (); 
  809. X--- 615,647 ----
  810. X                  do {
  811. X                      MoveCursor (INDEX_TOP+8, COL2 + (int) strlen (txt_opt_process_type));
  812. X                      if ((ch    = ReadCh()) == ' ') {
  813. X!                         if (default_post_proc_type + 1 > POST_PROC_UUD_EXT_ZIP) {
  814. X                              default_post_proc_type = POST_PROC_NONE;
  815. X                          } else {
  816. X                              default_post_proc_type++;
  817. X                          }
  818. X+                         proc_ch_default = get_post_proc_type (default_post_proc_type);
  819. X                          switch (default_post_proc_type) {
  820. X                              case POST_PROC_NONE:
  821. X                                  str = txt_post_process_none;
  822. X                                  break;
  823. X                              case POST_PROC_SHAR:
  824. X                                  str = txt_post_process_sh;
  825. X                                  break;
  826. X                              case POST_PROC_UUDECODE:
  827. X                                  str = txt_post_process_uudecode;
  828. X                                  break;
  829. X                              case POST_PROC_UUD_LST_ZOO:
  830. X                                  str = txt_post_process_uud_lst_zoo;
  831. X                                  break;
  832. X                              case POST_PROC_UUD_EXT_ZOO:
  833. X                                  str = txt_post_process_uud_ext_zoo;
  834. X!                                 break;
  835. X!                             case POST_PROC_UUD_LST_ZIP:
  836. X!                                 str = txt_post_process_uud_lst_zip;
  837. X!                                 break;
  838. X!                             case POST_PROC_UUD_EXT_ZIP:
  839. X!                                 str = txt_post_process_uud_ext_zip;
  840. X                                  break;
  841. X                          }
  842. X                          CleartoEOLN (); 
  843. X***************
  844. X*** 645,656 ****
  845. X                              break;
  846. X                          case POST_PROC_UUD_LST_ZOO:
  847. X                              str = txt_post_process_uud_lst_zoo;
  848. X!                             proc_ch_default = 'U';
  849. X                              break;
  850. X                          case POST_PROC_UUD_EXT_ZOO:
  851. X                              str = txt_post_process_uud_ext_zoo;
  852. X!                             proc_ch_default = 'U';
  853. X                              break;
  854. X                      }
  855. X                      CleartoEOLN (); 
  856. X                      fputs (str, stdout);
  857. X--- 667,686 ----
  858. X                              break;
  859. X                          case POST_PROC_UUD_LST_ZOO:
  860. X                              str = txt_post_process_uud_lst_zoo;
  861. X!                             proc_ch_default = '1';
  862. X                              break;
  863. X                          case POST_PROC_UUD_EXT_ZOO:
  864. X                              str = txt_post_process_uud_ext_zoo;
  865. X!                             proc_ch_default = '2';
  866. X                              break;
  867. X+                         case POST_PROC_UUD_LST_ZIP:
  868. X+                             str = txt_post_process_uud_lst_zip;
  869. X+                             proc_ch_default = '3';
  870. X+                             break;
  871. X+                         case POST_PROC_UUD_EXT_ZIP:
  872. X+                             str = txt_post_process_uud_ext_zip;
  873. X+                             proc_ch_default = '4';
  874. X+                             break;
  875. X                      }
  876. X                      CleartoEOLN (); 
  877. X                      fputs (str, stdout);
  878. X***************
  879. X*** 743,750 ****
  880. X  
  881. X              case 18:
  882. X                  show_menu_help (txt_help_printer);
  883. X!                 prompt_menu_string (INDEX_TOP+16, COL1 + (int) strlen (txt_opt_printer), printer);
  884. X!                 expand_rel_abs_pathname (INDEX_TOP+16, COL1 + (int) strlen (txt_opt_printer), printer);
  885. X                  break;
  886. X  #endif    /* AMIGA_BBS */
  887. X          }
  888. X--- 773,780 ----
  889. X  
  890. X              case 18:
  891. X                  show_menu_help (txt_help_printer);
  892. X!                 prompt_menu_string (INDEX_TOP+16, COL1 + (int) strlen (txt_opt_printer), default_printer);
  893. X!                 expand_rel_abs_pathname (INDEX_TOP+16, COL1 + (int) strlen (txt_opt_printer), default_printer);
  894. X                  break;
  895. X  #endif    /* AMIGA_BBS */
  896. X          }
  897. X***************
  898. X*** 818,823 ****
  899. X--- 848,859 ----
  900. X          case POST_PROC_UUD_EXT_ZOO:
  901. X              str = txt_post_process_uud_ext_zoo;
  902. X              break;
  903. X+         case POST_PROC_UUD_LST_ZIP:
  904. X+             str = txt_post_process_uud_lst_zip;
  905. X+             break;
  906. X+         case POST_PROC_UUD_EXT_ZIP:
  907. X+             str = txt_post_process_uud_ext_zip;
  908. X+             break;
  909. X      }
  910. X  
  911. X      printf ("%s%s\r\n\r\n", txt_opt_process_type, str);
  912. X***************
  913. X*** 851,857 ****
  914. X  #ifndef AMIGA_BBS
  915. X      printf ("%s%s\r\n\r\n", txt_opt_savedir, default_savedir);
  916. X      printf ("%s%s\r\n\r\n", txt_opt_maildir, default_maildir);
  917. X!     printf ("%s%s\r\n\r\n", txt_opt_printer, printer);
  918. X  #endif    /* AMIGA_BBS */
  919. X      fflush(stdout);
  920. X  
  921. X--- 887,893 ----
  922. X  #ifndef AMIGA_BBS
  923. X      printf ("%s%s\r\n\r\n", txt_opt_savedir, default_savedir);
  924. X      printf ("%s%s\r\n\r\n", txt_opt_maildir, default_maildir);
  925. X!     printf ("%s%s\r\n\r\n", txt_opt_printer, default_printer);
  926. X  #endif    /* AMIGA_BBS */
  927. X      fflush(stdout);
  928. X  
  929. Xdiff -rcs ../1.16/save.c ./save.c
  930. X*** ../1.16/save.c    Sun Nov 15 18:42:05 1992
  931. X--- ./save.c    Sun Nov 15 16:02:48 1992
  932. X***************
  933. X*** 3,9 ****
  934. X   *  Module    : save.c
  935. X   *  Author    : I.Lea & R.Skrenta
  936. X   *  Created   : 01-04-91
  937. X!  *  Updated   : 13-09-92
  938. X   *  Notes     :
  939. X   *  Copyright : (c) Copyright 1991-92 by Iain Lea & Rich Skrenta
  940. X   *              You may  freely  copy or  redistribute  this software,
  941. X--- 3,9 ----
  942. X   *  Module    : save.c
  943. X   *  Author    : I.Lea & R.Skrenta
  944. X   *  Created   : 01-04-91
  945. X!  *  Updated   : 07-11-92
  946. X   *  Notes     :
  947. X   *  Copyright : (c) Copyright 1991-92 by Iain Lea & Rich Skrenta
  948. X   *              You may  freely  copy or  redistribute  this software,
  949. X***************
  950. X*** 19,51 ****
  951. X  #define OFF        3
  952. X  #define END        4
  953. X  
  954. X  int create_subdir = TRUE;
  955. X  
  956. X  
  957. X  /*
  958. X   * types of archive programs
  959. X-  * 0=archiver, 1=extension, 2=extract option, 3=list option
  960. X   */
  961. X   
  962. X  struct archiver_t { 
  963. X      char *name;
  964. X      char *ext;
  965. X!     char *extract;
  966. X      char *list;
  967. X! };
  968. X! 
  969. X! struct archiver_t archiver[] = {
  970. X!     { "",            "",            "",            "" },
  971. X!     { "",            "",            "",            "" },
  972. X!     { "",            "",            "",            "" },
  973. X!     { "zoo",        "zoo",        "-extract",    "-list" },
  974. X!     { (char *) 0,    (char *) 0,    (char *) 0,    (char *) 0 }
  975. X  };
  976. X  
  977. X  extern char *glob_group;
  978. X! extern char note_h_path[LEN];    /* Path:    */
  979. X! extern char note_h_date[LEN];    /* Date:    */
  980. X! extern FILE    *note_fp;            /* the body of the current article */
  981. X  extern int index_point;
  982. X  extern int note_end;
  983. X  extern int note_page;
  984. X--- 19,56 ----
  985. X  #define OFF        3
  986. X  #define END        4
  987. X  
  988. X+ extern int errno;
  989. X+ 
  990. X  int create_subdir = TRUE;
  991. X  
  992. X  
  993. X  /*
  994. X   * types of archive programs
  995. X   */
  996. X   
  997. X  struct archiver_t { 
  998. X      char *name;
  999. X      char *ext;
  1000. X!     char *test;
  1001. X      char *list;
  1002. X!     char *extract;
  1003. X! } archiver[] = {
  1004. X!     { "",        "",        "",        "",        ""    },
  1005. X!     { "",        "",        "",        "",        ""    },
  1006. X!     { "",        "",        "",        "",        ""    },
  1007. X! #ifdef AMIGA
  1008. X!     { "lha",    "lha",        "t",        "l",        "x" },
  1009. X! #else
  1010. X!     { "zoo",    "zoo",        "-test",    "-list",    "-extract" },
  1011. X! #endif    
  1012. X!     { "unzip",    "zip",        "-t",        "-l",        "-o"    },
  1013. X!     { (char *) 0,    (char *) 0,    (char *) 0,    (char *) 0,    (char *) 0 }
  1014. X  };
  1015. X  
  1016. X  extern char *glob_group;
  1017. X! extern char note_h_path[LEN];        /* Path:    */
  1018. X! extern char note_h_date[PATH_LEN];    /* Date:    */
  1019. X! extern FILE    *note_fp;        /* the body of the current article */
  1020. X  extern int index_point;
  1021. X  extern int note_end;
  1022. X  extern int note_page;
  1023. X***************
  1024. X*** 69,83 ****
  1025. X  {
  1026. X  #ifndef INDEX_DAEMON
  1027. X  
  1028. X!     char buf[LEN], logfile[LEN], *p;
  1029. X!     char group_path[LEN];
  1030. X!     char savefile[LEN];
  1031. X      extern FILE *note_fp;
  1032. X      FILE *fp = (FILE *) 0; 
  1033. X      FILE *fp_log = (FILE *) 0;
  1034. X!     int i, j, print_group;
  1035. X      int check_arts = 0;
  1036. X!     int    log_opened = TRUE;
  1037. X      int print_first = TRUE;
  1038. X      int saved_arts = 0;
  1039. X      int saved_groups = 0;
  1040. X--- 74,89 ----
  1041. X  {
  1042. X  #ifndef INDEX_DAEMON
  1043. X  
  1044. X!     char buf[LEN], logfile[LEN];
  1045. X!     char group_path[PATH_LEN];
  1046. X!     char savefile[PATH_LEN];
  1047. X!     char path[PATH_LEN];
  1048. X      extern FILE *note_fp;
  1049. X      FILE *fp = (FILE *) 0; 
  1050. X      FILE *fp_log = (FILE *) 0;
  1051. X!     int i, j, k, print_group;
  1052. X      int check_arts = 0;
  1053. X!     int log_opened = TRUE;
  1054. X      int print_first = TRUE;
  1055. X      int saved_arts = 0;
  1056. X      int saved_groups = 0;
  1057. X***************
  1058. X*** 109,122 ****
  1059. X      }
  1060. X      
  1061. X      for (i = 0; i < group_top; i++) {
  1062. X!         strcpy (group_path, active[my_group[i]].name);
  1063. X!         for (p = group_path; *p; p++) {
  1064. X!             if (*p == '.') {
  1065. X!                 *p = '/';
  1066. X!             }
  1067. X          }
  1068. X-         
  1069. X-         index_group (active[my_group[i]].name, group_path);
  1070. X          read_newsrc_line (active[my_group[i]].name);
  1071. X          print_group = TRUE;
  1072. X          check_arts = 0;
  1073. X--- 115,124 ----
  1074. X      }
  1075. X      
  1076. X      for (i = 0; i < group_top; i++) {
  1077. X!         make_group_path (active[my_group[i]].name, group_path);
  1078. X!         if (! index_group (active[my_group[i]].name, group_path)) {
  1079. X!             continue;
  1080. X          }
  1081. X          read_newsrc_line (active[my_group[i]].name);
  1082. X          print_group = TRUE;
  1083. X          check_arts = 0;
  1084. X***************
  1085. X*** 153,160 ****
  1086. X                          if (check_start_save == MAIL_ANY_NEWS) {
  1087. X                              sprintf (savefile, "%stin.%d", TMPDIR, process_id);
  1088. X                          } else {
  1089. X!                             sprintf (savefile, "%s/%s/%ld", active[my_group[cur_groupnum]].attribute.savedir,
  1090. X!                                      group_path, arts[j].artnum);
  1091. X                          }
  1092. X  
  1093. X                          note_page = art_open (arts[j].artnum, group_path);    
  1094. X--- 155,167 ----
  1095. X                          if (check_start_save == MAIL_ANY_NEWS) {
  1096. X                              sprintf (savefile, "%stin.%d", TMPDIR, process_id);
  1097. X                          } else {
  1098. X!                             k = my_group[cur_groupnum];
  1099. X!                             if (! strfpath (active[k].attribute.savedir,
  1100. X!                                 path, sizeof (path), homedir, (char *) 0,
  1101. X!                                 (char *) 0, active[k].name)) {
  1102. X!                                 joinpath (path, homedir, DEFAULT_SAVEDIR);
  1103. X!                             }
  1104. X!                             sprintf (savefile, "%s/%s/%ld", path, group_path, arts[j].artnum);
  1105. X                          }
  1106. X  
  1107. X                          note_page = art_open (arts[j].artnum, group_path);    
  1108. X***************
  1109. X*** 289,295 ****
  1110. X      long epoch;
  1111. X      
  1112. X      if (debug == 2) {
  1113. X!         sprintf (msg, "Save respnum=[%d] index=[%s] mbox=[%d] file=[%s]", 
  1114. X              respnum, index, mailbox, filename);
  1115. X          error_message (msg, "");
  1116. X      }
  1117. X--- 296,302 ----
  1118. X      long epoch;
  1119. X      
  1120. X      if (debug == 2) {
  1121. X!         sprintf (msg, "Save respnum=[%d] index=[%d] mbox=[%d] file=[%s]", 
  1122. X              respnum, index, mailbox, filename);
  1123. X          error_message (msg, "");
  1124. X      }
  1125. X***************
  1126. X*** 498,508 ****
  1127. X  
  1128. X      char tmp[PATH_LEN];
  1129. X      char buf[PATH_LEN];
  1130. X-     char group[PATH_LEN];
  1131. X-     char *env = (char *) 0;
  1132. X      int i, j, len = 0;
  1133. X      struct stat st;
  1134. X      
  1135. X      /*
  1136. X       * save in mailbox format to ~/Mail/<group.name> or
  1137. X       * attribute.maildir for current group
  1138. X--- 505,515 ----
  1139. X  
  1140. X      char tmp[PATH_LEN];
  1141. X      char buf[PATH_LEN];
  1142. X      int i, j, len = 0;
  1143. X      struct stat st;
  1144. X      
  1145. X+     i = my_group[cur_groupnum];
  1146. X+ 
  1147. X      /*
  1148. X       * save in mailbox format to ~/Mail/<group.name> or
  1149. X       * attribute.maildir for current group
  1150. X***************
  1151. X*** 510,569 ****
  1152. X      if (path[0] == '=') {
  1153. X          mbox_format = TRUE;
  1154. X          strcpy (tmp, path);
  1155. X!         sprintf (path, "%s/dummy", active[my_group[cur_groupnum]].attribute.maildir);
  1156. X!         goto create_dirs;
  1157. X      }
  1158. X  
  1159. X!     /*
  1160. X!      * if ~/file expand (ie. /usr/homedir/file)
  1161. X!      */
  1162. X!     switch (path[0]) {
  1163. X!         case '~':
  1164. X!             my_strncpy (buf, path+2, sizeof (buf));
  1165. X!             joinpath (path, homedir, buf);
  1166. X!             break;
  1167. X!         case '+':
  1168. X!             my_strncpy (buf, path+1, sizeof (buf));
  1169. X  #ifdef HAVE_LONG_FILENAMES 
  1170. X!             my_strncpy (group, glob_group, sizeof (group));
  1171. X  #else
  1172. X!             my_strncpy (group, glob_group, 14);
  1173. X  #endif
  1174. X!             /*
  1175. X!              *  convert 1st letter to uppercase
  1176. X!              */
  1177. X!             if (group[0] >= 'a' && group[0] <= 'z') {
  1178. X!                 group[0] = group[0] - 32;
  1179. X!             }
  1180. X!             sprintf (path, "%s/%s/%s", 
  1181. X!                 active[my_group[cur_groupnum]].attribute.savedir,
  1182. X!                 group, buf);
  1183. X!             break;
  1184. X!         case '$':
  1185. X!             for (i = 0 ; isalnum (path[i+1]) ; i++) {
  1186. X!                 buf[i] = path[i+1];
  1187. X!             }
  1188. X!             buf[i] = '\0';
  1189. X!             if (buf[0] == '\0' || (env = (char *) getenv (buf)) == NULL ||
  1190. X!                 (len = strlen (env)) == 0) {
  1191. X!             }
  1192. X!             sprintf (buf, "%s%s%s", env, (path[i+1] != '/' &&
  1193. X!                 env[len-1] != '/') ? "/" : "", &path[i+1]);
  1194. X!             my_strncpy (path, buf, PATH_LEN);
  1195. X!             break;
  1196. X!         case '/':
  1197. X!             break;
  1198. X!         case '.':
  1199. X!             return FALSE;
  1200. X!             /* NOTREACHED */
  1201. X          default:
  1202. X!             sprintf (buf, "%s/%s", 
  1203. X!                 active[my_group[cur_groupnum]].attribute.savedir, path);
  1204. X!             my_strncpy (path, buf, PATH_LEN);
  1205. X!             break;
  1206. X!     }
  1207. X! 
  1208. X! create_dirs:
  1209. X  
  1210. X      /*
  1211. X       *  create any directories, otherwise check
  1212. X--- 517,558 ----
  1213. X      if (path[0] == '=') {
  1214. X          mbox_format = TRUE;
  1215. X          strcpy (tmp, path);
  1216. X!         if (! strfpath (active[i].attribute.maildir, buf, sizeof (buf), 
  1217. X!             homedir, (char *) 0, (char *) 0, active[i].name)) {
  1218. X!             joinpath (buf, homedir, DEFAULT_MAILDIR);
  1219. X!         }
  1220. X!         sprintf (path, "%s/dummy", buf);
  1221. X!     } else {
  1222. X!         if (! strfpath (active[i].attribute.savedir, buf, sizeof (buf), 
  1223. X!             homedir, (char *) 0, (char *) 0, active[i].name)) {
  1224. X!             joinpath (buf, homedir, DEFAULT_SAVEDIR);
  1225. X!         }
  1226. X!         sprintf (tmp, "%s/%s", buf, path);
  1227. X!         my_strncpy (path, tmp, PATH_LEN);
  1228. X      }
  1229. X  
  1230. X! #if 0
  1231. X!     case '+':
  1232. X!         my_strncpy (buf, path+1, sizeof (buf));
  1233. X  #ifdef HAVE_LONG_FILENAMES 
  1234. X!         my_strncpy (group, glob_group, sizeof (group));
  1235. X  #else
  1236. X!         my_strncpy (group, glob_group, 14);
  1237. X  #endif
  1238. X!         /*
  1239. X!          *  convert 1st letter to uppercase
  1240. X!          */
  1241. X!         if (group[0] >= 'a' && group[0] <= 'z') {
  1242. X!             group[0] = group[0] - 32;
  1243. X!         }
  1244. X!         i = my_group[cur_groupnum];
  1245. X!         if (! strfpath (active[i].attribute.savedir, tmp, sizeof (tmp), homedir)) {
  1246. X!             joinpath (tmp, homedir, "News");
  1247. X!         }
  1248. X!         sprintf (path, "%s/%s/%s", tmp, group, buf);
  1249. X!         break;
  1250. X          default:
  1251. X! #endif /* 0 */
  1252. X  
  1253. X      /*
  1254. X       *  create any directories, otherwise check
  1255. X***************
  1256. X*** 577,584 ****
  1257. X              buf[j+1] = '\0';
  1258. X              if (stat (buf, &st) == -1) {
  1259. X                  if (mkdir (buf, 0755) == -1) {
  1260. X!                     perror_message ("Cannot create %s", buf);
  1261. X!                     return FALSE;
  1262. X                  }
  1263. X              }
  1264. X          }
  1265. X--- 566,575 ----
  1266. X              buf[j+1] = '\0';
  1267. X              if (stat (buf, &st) == -1) {
  1268. X                  if (mkdir (buf, 0755) == -1) {
  1269. X!                     if (errno != EEXIST) {
  1270. X!                         perror_message ("Cannot create %s", buf);
  1271. X!                         return FALSE;
  1272. X!                     }
  1273. X                  }
  1274. X              }
  1275. X          }
  1276. X***************
  1277. X*** 628,641 ****
  1278. X   *  add files to be saved to save array
  1279. X   */
  1280. X  
  1281. X! void add_to_save_list (index, article, is_mailbox, path)
  1282. X      int index;
  1283. X      struct article_t *article;
  1284. X      int is_mailbox;
  1285. X      char *path;
  1286. X  {
  1287. X  #ifndef INDEX_DAEMON
  1288. X! 
  1289. X      char dir[PATH_LEN];
  1290. X      char file[PATH_LEN];
  1291. X      int i;
  1292. X--- 619,633 ----
  1293. X   *  add files to be saved to save array
  1294. X   */
  1295. X  
  1296. X! void add_to_save_list (index, article, is_mailbox, archive_save, path)
  1297. X      int index;
  1298. X      struct article_t *article;
  1299. X      int is_mailbox;
  1300. X+     int archive_save;
  1301. X      char *path;
  1302. X  {
  1303. X  #ifndef INDEX_DAEMON
  1304. X!     char tmp[PATH_LEN];
  1305. X      char dir[PATH_LEN];
  1306. X      char file[PATH_LEN];
  1307. X      int i;
  1308. X***************
  1309. X*** 657,670 ****
  1310. X      save[num_save].patch   = (char *) 0;
  1311. X  
  1312. X      save[num_save].subject = str_dup (article->subject);
  1313. X!     if (article->archive) {
  1314. X          save[num_save].archive = str_dup (article->archive);
  1315. X!     }
  1316. X!     if (article->part) {
  1317. X!         save[num_save].part = str_dup (article->part);
  1318. X!     }
  1319. X!     if (article->patch) {
  1320. X!         save[num_save].patch = str_dup (article->patch);
  1321. X      }
  1322. X  
  1323. X      if (is_mailbox) {
  1324. X--- 649,662 ----
  1325. X      save[num_save].patch   = (char *) 0;
  1326. X  
  1327. X      save[num_save].subject = str_dup (article->subject);
  1328. X!     if (archive_save && article->archive) {
  1329. X          save[num_save].archive = str_dup (article->archive);
  1330. X!         if (article->part) {
  1331. X!             save[num_save].part = str_dup (article->part);
  1332. X!         }
  1333. X!         if (article->patch) {
  1334. X!             save[num_save].patch = str_dup (article->patch);
  1335. X!         }
  1336. X      }
  1337. X  
  1338. X      if (is_mailbox) {
  1339. X***************
  1340. X*** 677,683 ****
  1341. X          } else {
  1342. X              my_strncpy (file, glob_group, sizeof (file));
  1343. X          }
  1344. X!         save[num_save].dir = str_dup (active[my_group[cur_groupnum]].attribute.maildir);
  1345. X          save[num_save].file = str_dup (file);
  1346. X      } else {
  1347. X          if (path[0]) {
  1348. X--- 669,681 ----
  1349. X          } else {
  1350. X              my_strncpy (file, glob_group, sizeof (file));
  1351. X          }
  1352. X! 
  1353. X!         i = my_group[cur_groupnum];
  1354. X!         if (! strfpath (active[i].attribute.maildir, tmp, sizeof (tmp), 
  1355. X!             homedir, (char *) 0, (char *) 0, active[i].name)) {
  1356. X!             joinpath (tmp, homedir, DEFAULT_MAILDIR);
  1357. X!         }
  1358. X!         save[num_save].dir = str_dup (tmp);
  1359. X          save[num_save].file = str_dup (file);
  1360. X      } else {
  1361. X          if (path[0]) {
  1362. X***************
  1363. X*** 694,700 ****
  1364. X          if (dir[0]) {
  1365. X              save[num_save].dir = str_dup (dir);
  1366. X          } else {
  1367. X!             save[num_save].dir = str_dup (active[my_group[cur_groupnum]].attribute.savedir);
  1368. X          }
  1369. X  
  1370. X          if (file[0]) {
  1371. X--- 692,703 ----
  1372. X          if (dir[0]) {
  1373. X              save[num_save].dir = str_dup (dir);
  1374. X          } else {
  1375. X!             i = my_group[cur_groupnum];
  1376. X!             if (! strfpath (active[i].attribute.savedir, tmp, sizeof (tmp), 
  1377. X!                 homedir, (char *) 0, (char *) 0, active[i].name)) {
  1378. X!                 joinpath (tmp, homedir, DEFAULT_SAVEDIR);
  1379. X!             }    
  1380. X!             save[num_save].dir = str_dup (tmp);
  1381. X          }
  1382. X  
  1383. X          if (file[0]) {
  1384. X***************
  1385. X*** 916,922 ****
  1386. X  
  1387. X  
  1388. X  int post_process_files (proc_type_ch)
  1389. X!     char proc_type_ch;
  1390. X  {
  1391. X      if (num_save) {
  1392. X          wait_message (txt_post_processing);
  1393. X--- 919,925 ----
  1394. X  
  1395. X  
  1396. X  int post_process_files (proc_type_ch)
  1397. X!     int proc_type_ch;
  1398. X  {
  1399. X      if (num_save) {
  1400. X          wait_message (txt_post_processing);
  1401. X***************
  1402. X*** 925,942 ****
  1403. X              case 's':
  1404. X                  post_process_sh ();
  1405. X                  break;
  1406. X-                 
  1407. X              case 'u':
  1408. X                  post_process_uud (POST_PROC_UUDECODE);
  1409. X                  break;
  1410. X! 
  1411. X!             case 'U':
  1412. X!                 if (default_post_proc_type == POST_PROC_UUD_EXT_ZOO) {
  1413. X!                     post_process_uud (POST_PROC_UUD_EXT_ZOO);
  1414. X!                 } else {
  1415. X!                     post_process_uud (POST_PROC_UUD_LST_ZOO);
  1416. X!                 }
  1417. X                  break;
  1418. X          }
  1419. X  
  1420. X          info_message (txt_post_processing_finished);
  1421. X--- 928,948 ----
  1422. X              case 's':
  1423. X                  post_process_sh ();
  1424. X                  break;
  1425. X              case 'u':
  1426. X                  post_process_uud (POST_PROC_UUDECODE);
  1427. X                  break;
  1428. X!             case 'l':
  1429. X!                 post_process_uud (POST_PROC_UUD_LST_ZOO);
  1430. X!                 break;
  1431. X!             case 'e':
  1432. X!                 post_process_uud (POST_PROC_UUD_EXT_ZOO);
  1433. X!                 break;
  1434. X!             case 'L':
  1435. X!                 post_process_uud (POST_PROC_UUD_LST_ZIP);
  1436. X                  break;
  1437. X+             case 'E':
  1438. X+                 post_process_uud (POST_PROC_UUD_EXT_ZIP);
  1439. X+                 break;
  1440. X          }
  1441. X  
  1442. X          info_message (txt_post_processing_finished);
  1443. X***************
  1444. X*** 1064,1072 ****
  1445. X      sprintf (buf, "cd %s; uudecode %s", file_out_dir, file_out); 
  1446. X      if (invoke_cmd (buf)) {
  1447. X          /*
  1448. X!          *  sum file
  1449. X           */
  1450. X!         if ((file = get_archive_file (file_out_dir, "*")) != NULL) { 
  1451. X              sprintf (buf, "%s %s", DEFAULT_SUM, file); 
  1452. X              printf (txt_checksum_of_file, file); 
  1453. X              fflush (stdout);
  1454. X--- 1070,1078 ----
  1455. X      sprintf (buf, "cd %s; uudecode %s", file_out_dir, file_out); 
  1456. X      if (invoke_cmd (buf)) {
  1457. X          /*
  1458. X!          *  Sum file
  1459. X           */
  1460. X!         if ((file = get_archive_file (file_out_dir, "*")) != (char *) 0) { 
  1461. X              sprintf (buf, "%s %s", DEFAULT_SUM, file); 
  1462. X              printf (txt_checksum_of_file, file); 
  1463. X              fflush (stdout);
  1464. X***************
  1465. X*** 1084,1118 ****
  1466. X                  printf ("%s  %8d bytes\r\n", buf, file_size); 
  1467. X                  fflush (stdout);
  1468. X              }
  1469. X-             if (file != (char *) 0) {
  1470. X-                 free (file);
  1471. X-                 file = (char *) 0;
  1472. X-             }
  1473. X-         }
  1474. X-     }
  1475. X  
  1476. X!     if (pp > POST_PROC_UUDECODE) {
  1477. X!         sprintf (buf, "*.%s", archiver[pp].ext); 
  1478. X!         if ((file = get_archive_file (file_out_dir, buf)) != NULL) {
  1479. X!             if (pp == POST_PROC_UUD_EXT_ZOO) {
  1480. X!                 sprintf (buf, "cd %s; %s %s %s", file_out_dir,
  1481. X!                     archiver[pp].name, archiver[pp].extract, file);
  1482. X!                 printf (txt_listing_archive, file); 
  1483. X!             } else {
  1484. X!                 sprintf (buf, "cd %s; %s %s %s", file_out_dir,
  1485. X!                     archiver[pp].name, archiver[pp].list, file);
  1486. X!                 printf (txt_extracting_archive, file);
  1487. X!             }
  1488. X!             fflush (stdout);
  1489. X!             if (file != (char *) 0) {
  1490. X!                 free (file);
  1491. X!                 file = (char *) 0;
  1492. X!             }
  1493. X!             if (! invoke_cmd (buf)) {
  1494. X!                 error_message (txt_post_processing_failed, "");
  1495. X              }
  1496. X          }
  1497. X      }
  1498. X      delete_processed_files ();
  1499. X  
  1500. X      unlink (file_out);
  1501. X--- 1090,1147 ----
  1502. X                  printf ("%s  %8d bytes\r\n", buf, file_size); 
  1503. X                  fflush (stdout);
  1504. X              }
  1505. X  
  1506. X!             if (pp > POST_PROC_UUDECODE) {
  1507. X!                 /*
  1508. X!                  *  Test archive integrity
  1509. X!                  */
  1510. X!                 if (pp > POST_PROC_UUDECODE && archiver[pp].test != (char *) 0) {
  1511. X!                     i = (pp == POST_PROC_UUD_LST_ZOO || pp == POST_PROC_UUD_EXT_ZOO ? 3 : 4);
  1512. X!                     sprintf (buf, "cd %s; %s %s %s", file_out_dir,
  1513. X!                         archiver[i].name, archiver[i].test, file);
  1514. X!                     printf (txt_testing_archive, file); 
  1515. X!                     fflush (stdout);
  1516. X!                     if (! invoke_cmd (buf)) {
  1517. X!                         error_message (txt_post_processing_failed, "");
  1518. X!                     }
  1519. X!                 }
  1520. X!                 /*
  1521. X!                  *  List archive
  1522. X!                  */
  1523. X!                 if (pp == POST_PROC_UUD_LST_ZOO || pp == POST_PROC_UUD_LST_ZIP) {
  1524. X!                     i = (pp == POST_PROC_UUD_LST_ZOO ? 3 : 4);
  1525. X!                     sprintf (buf, "cd %s; %s %s %s", file_out_dir,
  1526. X!                         archiver[i].name, archiver[i].list, file);
  1527. X!                     printf (txt_listing_archive, file); 
  1528. X!                     fflush (stdout);
  1529. X!                     if (! invoke_cmd (buf)) {
  1530. X!                         error_message (txt_post_processing_failed, "");
  1531. X!                     }
  1532. X!                     sleep (3);
  1533. X!                 }
  1534. X!                 /*
  1535. X!                  *  Extract archive
  1536. X!                  */
  1537. X!                 if (pp == POST_PROC_UUD_EXT_ZOO || pp == POST_PROC_UUD_EXT_ZIP) {
  1538. X!                     i = (pp == POST_PROC_UUD_EXT_ZOO ? 3 : 4);
  1539. X!                     sprintf (buf, "cd %s; %s %s %s", file_out_dir,
  1540. X!                         archiver[i].name, archiver[i].extract, file);
  1541. X!                     printf (txt_extracting_archive, file);
  1542. X!                     fflush (stdout);
  1543. X!                     if (! invoke_cmd (buf)) {
  1544. X!                         error_message (txt_post_processing_failed, "");
  1545. X!                     }
  1546. X!                     sleep (3);
  1547. X!                 }
  1548. X!     
  1549. X!                 if (file != (char *) 0) {
  1550. X!                     free (file);
  1551. X!                     file = (char *) 0;
  1552. X!                 }
  1553. X              }
  1554. X          }
  1555. X      }
  1556. X+ 
  1557. X      delete_processed_files ();
  1558. X  
  1559. X      unlink (file_out);
  1560. XFiles ../1.16/screen.c and ./screen.c are identical
  1561. Xdiff -rcs ../1.16/search.c ./search.c
  1562. X*** ../1.16/search.c    Sun Nov 15 18:42:06 1992
  1563. X--- ./search.c    Sun Nov 15 16:02:48 1992
  1564. X***************
  1565. X*** 3,9 ****
  1566. X   *  Module    : search.c
  1567. X   *  Author    : I.Lea & R.Skrenta
  1568. X   *  Created   : 01-04-91
  1569. X!  *  Updated   : 13-09-92
  1570. X   *  Notes     :
  1571. X   *  Copyright : (c) Copyright 1991-92 by Iain Lea & Rich Skrenta
  1572. X   *              You may  freely  copy or  redistribute  this software,
  1573. X--- 3,9 ----
  1574. X   *  Module    : search.c
  1575. X   *  Author    : I.Lea & R.Skrenta
  1576. X   *  Created   : 01-04-91
  1577. X!  *  Updated   : 27-09-92
  1578. X   *  Notes     :
  1579. X   *  Copyright : (c) Copyright 1991-92 by Iain Lea & Rich Skrenta
  1580. X   *              You may  freely  copy or  redistribute  this software,
  1581. X***************
  1582. X*** 124,130 ****
  1583. X      char buf2[LEN];
  1584. X      int i, patlen;
  1585. X  
  1586. X!     if (! group_top && show_only_unread_groups) {
  1587. X          info_message (txt_no_groups);
  1588. X          return;
  1589. X      }
  1590. X--- 124,132 ----
  1591. X      char buf2[LEN];
  1592. X      int i, patlen;
  1593. X  
  1594. X! /*    if (! group_top && show_only_unread_groups) {
  1595. X! */
  1596. X!     if (! group_top) {
  1597. X          info_message (txt_no_groups);
  1598. X          return;
  1599. X      }
  1600. X***************
  1601. X*** 174,179 ****
  1602. X--- 176,184 ----
  1603. X          make_lower (active[my_group[i]].name, buf2);
  1604. X  
  1605. X          if (str_str (buf2, buf, patlen) != 0) {
  1606. X+             if (_hp_glitch) {
  1607. X+                 erase_group_arrow ();
  1608. X+             }
  1609. X              if (i >= first_group_on_screen
  1610. X              &&  i < last_group_on_screen) {
  1611. X                  clear_message ();
  1612. X***************
  1613. X*** 255,260 ****
  1614. X--- 260,268 ----
  1615. X          make_lower (arts[j].subject, buf2);
  1616. X  
  1617. X          if (str_str (buf2, buf, patlen) != 0) {
  1618. X+             if (_hp_glitch) {
  1619. X+                 erase_subject_arrow ();
  1620. X+             }
  1621. X              if (i >= first_subj_on_screen
  1622. X                  &&  i < last_subj_on_screen) {
  1623. X                  clear_message ();
  1624. X***************
  1625. X*** 263,269 ****
  1626. X                  draw_subject_arrow ();
  1627. X              } else {
  1628. X                  index_point = i;
  1629. X!                 show_group_page (group);
  1630. X              }
  1631. X              return;
  1632. X          }
  1633. X--- 271,277 ----
  1634. X                  draw_subject_arrow ();
  1635. X              } else {
  1636. X                  index_point = i;
  1637. X!                 show_group_page ();
  1638. X              }
  1639. X              return;
  1640. X          }
  1641. Xdiff -rcs ../1.16/select.c ./select.c
  1642. X*** ../1.16/select.c    Sun Nov 15 18:42:07 1992
  1643. X--- ./select.c    Sun Nov 15 16:02:48 1992
  1644. X***************
  1645. X*** 3,9 ****
  1646. X   *  Module    : select.c
  1647. X   *  Author    : I.Lea & R.Skrenta
  1648. X   *  Created   : 01-04-91
  1649. X!  *  Updated   : 13-09-92
  1650. X   *  Notes     :
  1651. X   *  Copyright : (c) Copyright 1991-92 by Iain Lea & Rich Skrenta
  1652. X   *              You may  freely  copy or  redistribute  this software,
  1653. X--- 3,9 ----
  1654. X   *  Module    : select.c
  1655. X   *  Author    : I.Lea & R.Skrenta
  1656. X   *  Created   : 01-04-91
  1657. X!  *  Updated   : 08-11-92
  1658. X   *  Notes     :
  1659. X   *  Copyright : (c) Copyright 1991-92 by Iain Lea & Rich Skrenta
  1660. X   *              You may  freely  copy or  redistribute  this software,
  1661. X***************
  1662. X*** 57,67 ****
  1663. X      set_alarm_signal ();        /* set alarm signal for resync_active_file () */
  1664. X      
  1665. X      while (TRUE) {
  1666. X! #ifndef NO_REREAD_ACTIVE_FILE
  1667. X          resync_active_file ();    /* reread active file if alarm set */
  1668. X  #endif
  1669. X          ch = ReadCh ();
  1670. X! #ifndef NO_REREAD_ACTIVE_FILE
  1671. X          if (ch != 'q' && ch != 'Q')
  1672. X              resync_active_file ();
  1673. X  #endif
  1674. X--- 57,67 ----
  1675. X      set_alarm_signal ();        /* set alarm signal for resync_active_file () */
  1676. X      
  1677. X      while (TRUE) {
  1678. X! #ifndef DONT_REREAD_ACTIVE_FILE
  1679. X          resync_active_file ();    /* reread active file if alarm set */
  1680. X  #endif
  1681. X          ch = ReadCh ();
  1682. X! #ifndef DONT_REREAD_ACTIVE_FILE
  1683. X          if (ch != 'q' && ch != 'Q')
  1684. X              resync_active_file ();
  1685. X  #endif
  1686. X***************
  1687. X*** 154,161 ****
  1688. X                      do {
  1689. X                          n = my_group[cur_groupnum];
  1690. X                          group_page (active[n].name);
  1691. X!                     } while (index_point == -3);
  1692. X! #ifndef NO_REREAD_ACTIVE_FILE                    
  1693. X                      if (! reread_active_file)
  1694. X  #endif                    
  1695. X                          group_selection_page ();
  1696. X--- 154,161 ----
  1697. X                      do {
  1698. X                          n = my_group[cur_groupnum];
  1699. X                          group_page (active[n].name);
  1700. X!                     } while (index_point == -3 || index_point == -4);
  1701. X! #ifndef DONT_REREAD_ACTIVE_FILE                    
  1702. X                      if (! reread_active_file)
  1703. X  #endif                    
  1704. X                          group_selection_page ();
  1705. X***************
  1706. X*** 177,185 ****
  1707. X                      break;
  1708. X                  }
  1709. X                  if (cur_groupnum == group_top - 1) {
  1710. X- #ifdef NO_LOOP_AROUND
  1711. X-                     break;
  1712. X- #else
  1713. X                      if (0 < first_group_on_screen) {
  1714. X  #    ifndef USE_CLEARSCREEN
  1715. X                          erase_group_arrow();
  1716. X--- 177,182 ----
  1717. X***************
  1718. X*** 192,198 ****
  1719. X                          draw_group_arrow();
  1720. X                      }
  1721. X                      break;
  1722. X- #endif                    
  1723. X                  }
  1724. X                  erase_group_arrow ();
  1725. X                  scroll_lines = (full_page_scroll ? NOTESLINES : NOTESLINES / 2);
  1726. X--- 189,194 ----
  1727. X***************
  1728. X*** 255,263 ****
  1729. X                      break;
  1730. X                  }
  1731. X                  if (cur_groupnum + 1 >= group_top) {
  1732. X- #ifdef NO_LOOP_AROUND
  1733. X-                     break;
  1734. X- #else
  1735. X                      if (0 < first_group_on_screen) {
  1736. X  #    ifndef USE_CLEARSCREEN
  1737. X                          erase_group_arrow();
  1738. X--- 251,256 ----
  1739. X***************
  1740. X*** 270,276 ****
  1741. X                          draw_group_arrow();
  1742. X                      }
  1743. X                      break;
  1744. X- #endif                    
  1745. X                  }
  1746. X                  if (cur_groupnum + 1 >= last_group_on_screen) {
  1747. X  #ifndef USE_CLEARSCREEN
  1748. X--- 263,268 ----
  1749. X***************
  1750. X*** 292,300 ****
  1751. X                      break;
  1752. X                  }
  1753. X                  if (cur_groupnum == 0) {
  1754. X! #ifdef NO_LOOP_AROUND
  1755. X!                     break;
  1756. X! #else
  1757. X                      if (group_top > last_group_on_screen) {
  1758. X                          cur_groupnum = group_top - 1;
  1759. X                          group_selection_page ();
  1760. X--- 284,292 ----
  1761. X                      break;
  1762. X                  }
  1763. X                  if (cur_groupnum == 0) {
  1764. X!                     if (_hp_glitch) {
  1765. X!                         erase_group_arrow ();
  1766. X!                     }
  1767. X                      if (group_top > last_group_on_screen) {
  1768. X                          cur_groupnum = group_top - 1;
  1769. X                          group_selection_page ();
  1770. X***************
  1771. X*** 304,311 ****
  1772. X                          draw_group_arrow ();
  1773. X                      }
  1774. X                      break;
  1775. X- #endif                    
  1776. X                  }
  1777. X                  if (cur_groupnum <= first_group_on_screen) {
  1778. X                      cur_groupnum--;
  1779. X                      group_selection_page ();
  1780. X--- 296,305 ----
  1781. X                          draw_group_arrow ();
  1782. X                      }
  1783. X                      break;
  1784. X                  }
  1785. X+                 if (_hp_glitch) {
  1786. X+                     erase_group_arrow ();
  1787. X+                 }
  1788. X                  if (cur_groupnum <= first_group_on_screen) {
  1789. X                      cur_groupnum--;
  1790. X                      group_selection_page ();
  1791. X***************
  1792. X*** 332,340 ****
  1793. X                      break;
  1794. X                  }
  1795. X                  if (cur_groupnum == 0) {
  1796. X! #ifdef NO_LOOP_AROUND
  1797. X!                     break;
  1798. X! #else
  1799. X                      if (group_top > last_group_on_screen) {
  1800. X                          cur_groupnum = group_top - 1;
  1801. X                          group_selection_page ();
  1802. X--- 326,334 ----
  1803. X                      break;
  1804. X                  }
  1805. X                  if (cur_groupnum == 0) {
  1806. X!                     if (_hp_glitch) {
  1807. X!                         erase_group_arrow ();
  1808. X!                     }
  1809. X                      if (group_top > last_group_on_screen) {
  1810. X                          cur_groupnum = group_top - 1;
  1811. X                          group_selection_page ();
  1812. X***************
  1813. X*** 344,350 ****
  1814. X                          draw_group_arrow ();
  1815. X                      }
  1816. X                      break;
  1817. X- #endif                    
  1818. X                  }
  1819. X                  erase_group_arrow ();
  1820. X                  scroll_lines = (full_page_scroll ? NOTESLINES : NOTESLINES / 2);
  1821. X--- 338,343 ----
  1822. X***************
  1823. X*** 371,378 ****
  1824. X                  group_selection_page ();
  1825. X                  break;
  1826. X                  
  1827. X!             case 'c':    /* catchup--mark all articles as read */
  1828. X!             case 'C':    /* catchup & goto next unread group */
  1829. X                  if (group_top == 0) {
  1830. X                      break;
  1831. X                  }
  1832. X--- 364,371 ----
  1833. X                  group_selection_page ();
  1834. X                  break;
  1835. X                  
  1836. X!             case 'c':    /* catchup - mark all articles as read */
  1837. X!             case 'C':    /* and goto next unread group */
  1838. X                  if (group_top == 0) {
  1839. X                      break;
  1840. X                  }
  1841. X***************
  1842. X*** 381,395 ****
  1843. X  
  1844. X              case 'g':    /* prompt for a new group name */
  1845. X                  if ((n = choose_new_group ()) >= 0) {
  1846. X                      if (active[my_group[n]].my_group != SUBSCRIBED) {
  1847. X                          subscribe (active[my_group[n]].name, ':',
  1848. X                              my_group[n], FALSE);
  1849. X                      } else {
  1850. SHAR_EOF
  1851. true || echo 'restore of tin-1.17.patch failed'
  1852. fi
  1853. echo 'End of tin-1.17 part 7'
  1854. echo 'File tin-1.17.patch is continued in part 8'
  1855. echo 8 > _shar_seq_.tmp
  1856. exit 0
  1857.  
  1858. --
  1859. NAMES  Iain Lea    Iain.Lea%anl433.uucp@Germany.EU.net
  1860. SNAIL  Siemens AG, ANL A433SZ, Gruendlacher Str. 248, 8510 Fuerth, Germany.
  1861. PHONE  +49-911-3089-407 (work) +49-911-331963 (home) +49-911-3089-290 (FAX)  
  1862.