1CHANGES 2======= 3-- Changes from suck-4.3.3 -> Suck-4.3.4 4 5- Fix invalid memory access in both.c (Debian bug #858040) 6- Fix SIGSEV in connect_to_nntphost (Debian bugs #716448, #716510, #716606) 7- Fix stack smash in lmove.c and suckutils.c (Debian bug #832265) 8- Fix manpage formatting (Debian bug #858262) 9 10August 01, 2018 - Suck-4.3.4 released 11 12-- Changes from suck-4.3.2 -> Suck-4.3.3 13 14- General code cleanup 15- Applying patches from Debian, Fedora and openSUSE 16- Add support for IPv6 17- Manpage fixes 18- Default path for history file is now /var/lib/news/history 19- Default path for phrases file is now /etc/suck/phrases 20- Install to DESTDIR 21- Don't strip binaries 22 23October 25, 2017 - Suck-4.3.3 released 24 25-- Changes from suck-4.3.1 -> Suck-4.3.2 26 27Wherever a hostname is specified on the command line, the form Host:Port 28may be used to specify a port number. If this form is used, the -N port 29option will be ignored. 30 31configure.in - add -with-perl-exe option to specify an 32 alternate path to the perl exe. 33 34suck.c, killfile.c - get_a_chunk(), get_chunk_mem() 35 changed to handle lines beginning with . 36 correctly in stdout mode. 37 38suck.c, rpost.c - main() - error handling if host isn't 39 specified on command line. 40 41* - various patches from Debian folks 42configure.in - check for configdata.h in inn include directory 43 44both.c - sgetline() - changes to fix SSL bug with the select, 45 connect_to_nntphost() - add code to handle 46 host:port syntax. This fix also allows you to 47 specify a port number for the local host. 48 49suck.c - to handle SIGINT in addition to SIGTERM, 50 build_command() fix in potential buffer overflow 51 52testhost.c - added -Q option, to allow user to specify 53 NNTP authentiation via env variables. 54 55March 28, 2003 - Suck-4.3.2 released 56 57-- Changes from Suck-4.3.0 -> Suck-4.3.1 58 59* as of this version, my e-mail address has changed 60to bobyetman@sucknews.org 61 62* - added stuff to autoconf to handle the Db, 63 history, Perl & SSL stuff in the Makefile. 64 65* both.h - added tests for socks.h 66 67* rpost.c - added -Q option, to allow user 68 to specify NNTP authentication via 69 environment variables 70 - do_batch() - add test to not append 71 prefix if article name is an Inn token. 72 73* suck.c - added -Q option, to allow user 74 to specify NNTP authentication via 75 environment variables 76 77 - build_command() - changed sprintfs 78 to snprintf() to fix potential overflow 79 problems. 80 81 -- get_one_article() - fix bug where 82 plist would be null when doing authentication 83 and there was only one article to download. 84 85 - main() - fix bug where if reconnect after 86 dedupe, and it failed, you would try to send 87 the quit command to an invalid file descriptor. 88 89Sep 24, 2002, Suck-4.3.1 released 90 91-- Changes from Suck-4.2.5 -> Suck-4.3.0 92 93* As of this version, my e-mail address has changed from 94from bobyetman@worldnet.att.net to bobyetman@home.com 95 96* changes to allow it to use SSL. 97 98* rpost.c - added -i option, to ignore the 99 readonly opening response and try 100 to post anyway, since inn-2.3, when 101 using authinfo, still sends 201 code 102 meaning readonly. 103 104 - do_authenticate() - added print 105 statements to show start of, and 106 successful completion of authentication. 107 108* suck.c - get_one_article_kill() - add test 109 for header_only mode when in stdout mode 110 to not download the body. 111 112 - get_one_article(), get_articles() - added 113 -bP option, to post articles during download. 114 115Sep 17, 2001 - Suck-4.3.0 released 116 117-- Changes from Suck-4.2.4 -> Suck-4.2.5 118 119* batch.c - post_one_msg() - fixed bug in 120 testing for a long input line that 121 caused us to reject any line that is 122 exactly 13 char long. 123 124* chhistory_db.c - various changes to allow it 125 to compile with Inn-2.3 headers. 126 127* rpost.c - do_article() - added test for second 128 duplicate article string to handle DNews. 129 130 - filter_batch_article() - added option for 131 showing the file name as we upload it. 132 133Dec 02, 2000 - Suck-4.2.5 released 134 135-- Changes from Suck-4.2.3 -> Suck-4.2.4 136 137* various changes to allow compile under OS/2 138 (look for ifdef EMX). You'll need to edit the 139 Makefile to get it to compile. 140 141*both.c - true_str(), null_str() - moved from suck.c so 142 rpost can use. 143 144* killprg.c - Changes to include so will compile using 145 Perl5.6. If you're using perl5.004 or older, 146 you'll need to define OLD_PERL in the Makefile. 147 148* rpost.c - Changes so will compile with perl5.6.0. 149 150 do_article() - Added actual error message from 151 remote server to Malfunction error message, to 152 make it easier to figure out problem. 153 154* suck.c - do_one_group() - added code for resetcounter 155 option. If remote end resets its article numbers 156 the normal suck response is to ignore the group 157 and reset the lastread counter to match the current 158 high counter. This option tells suck to reset 159 its lastread counter to the low counter, effectively 160 causing suck to get all articles for the group, and 161 use the historydb to check for dupes. 162 Added low_read option. This option is used in concert 163 with the maxread option of the sucknewsrc. Normally 164 when there is a maxread in the sucknewsrc, suck will 165 download the newest articles. This option tells suck 166 to download instead the oldest articles. 167 168 do_articles() - added code for show_group option. 169 This option will add the name of the current group 170 to the BPS display as you download the articles. 171 172May 21, 2000 - Suck-4.2.4 released 173 174-- Changes from Suck-4.2.2 -> Suck-4.2.3 175 176* both.c - signal_block() - Changes to get rid of invalid 177 #ifdef POSIX_SIGNAL causing this routine never to 178 get called. 179 180* killfile.c. parse_killfile() - fixed bug in getting perl 181 filter filename. If you didn't specify debug, the 182 nl was getting left on the name, causing errors. 183 184* rpost.c - * - Major internal re-write to handle future 185 expansion of filters/batch mode. Changed many 186 function's arg passing, so they only pass around 187 myargs. Re-wrote batch mode to make adding new 188 filters easier. Added rnews mode, for reading 189 rnews files. See man page for more details. 190 191* suck.c - main(), sighandler() - changes from signal() to 192 sigaction() so I use all POSIX signal handling stuff. 193 194 - do_nodownload() - added, this routine allows you 195 to specifiy Message-IDs to never download. See the 196 SUCKNODOWNLOAD section in the man page. 197 19823 Jan 2000 - Suck-4.2.3 released 199 200-- Changes from Suck-4.2.1 -> Suck-4.2.2 201 202* lmove.c match_group(), move_msgs(), scan_args() - Re-wrote 203 for new options -h and -s to create hard or symbolic 204 links to files crossposted to multiple groups. Re-wrote 205 code to handle malformed header with spaces either before 206 or after the newsgroup names. 207 208 load_active() - added test for duplicate group line. 209 210* suck.c - do_one_group() - changed command from "xhdr 111-" 211 to "xhdr 111-2222" for brain-dead servers that don't 212 follow the proposed standard and treat 111- correctly. 213 214* xover.c - do_xover(), do_group_xover() - changed command from 215 "xover 111-" to "xover 111-222". 216 21725 July 1999 - Suck-4.2.2 released 218 219-- Changes from Suck-4.2.0 -> Suck-4.2.1 220 221* rpost.c - do_perl() - fixed bug where infile was being lost 222 due to FREETMPS, causing failed posting. 223 224* suck.c - restart_yn() - fixed bug where if prior to restart, 225 we had sent command for an article, but not received it, 226 then on restart, we would skip article. So I have 227 to set sentcmd to false if we haven't downloaded it. 228 229* xover.c - chk_a_group() - rewrote into one loop, to get rid 230 of segfaults on NULL field, and to speed things up for 231 complicated xover files. 232 23323 May 1999 - Suck-4.2.1 released 234 235-- Changes from Suck-4.1.2 -> Suck-4.2.0 236 237* active.c - get_msgids() - added new option, -i, to set the default 238 number of articles to download when using the -A or -AL option 239 and a new group is added. See man page for usage. 240 241 do_one_group() - changed handling of return from 242 do_group_xover() so handle new error code. 243 244 parse_args(), main() - added code to handle -i option. 245 246 get_articles() - fixed bug in handling of pause and 247 reconnect after X nr of articles. Wasn't taken into 248 account 0 articles correctly. 249 250* killfile.c - moved xoverview pointer out of master killfile and 251 into master struct, so can use independently of killfiles 252 (for -Z option). 253 254 parse_killfile() - changed to passed which argument to 255 various setup routines, so can distinguish between XOVER 256 and regular killfiles. 257 258* killprg.c - killprg_forkit(), killperl_setup() - added test for 259 which, so if XOVER killfiles we don't point the killfile 260 functions to killprg stuff. 261 262 - killprg_sendoverview(), killprg_sendxover, 263 killperl_sendxover() - created. These routines handle 264 the sending of the overview.fmt and each overview line 265 to a child program or perl subroutine for matching. 266 267* suck.c - main() - added code to handle retreival and freeing up 268 of memory used by overview.fmt. Added call to free up 269 xoverp killfile.u 270 271 - do_one_group() - added code to handle new option, -Z, 272 to use XOVER vice XHDR to get message-ids, in case the 273 remote server doesn't support the XHDR command. 274 275* xover.c - do_group_xover() - changed the error code returned 276 if server can't do xover command, so can recover 277 gracefully from other errors (such as too long msgid) 278 279 get_xover(), find_msgid() - created. These routines 280 use the XOVER command to get the Message-ID and alloc 281 it for the -Z option. 282 283 Moved xoverview pointer out of master killfile and into 284 master struct, so can use for -Z option. 285 286 - do_one_line() - added code so if we have a program 287 or perl subroutine to do the checking, it gets called 288 28911 May 1999 - suck-4.2.0 released 290 291-- Changes from Suck-4.1.1 -> Suck-4.1.2 292 293* suck.c -- do_supplemental() - added call to do_sup_bynr(). 294 295 do_sup_bynr() - created. Handles lines in suckothermsgs 296 that specify a group name and article number for retreival. 297 29814 Apr 1999 - suck-4.1.2 released 299 300-- Changes from Suck-4.1.0 -> Suck-4.1.1 301 302* suck.c - get_one_article() - fixed bug in sending command 303 for the second article, was resending first article 304 command. 305 30627 Mar 1999 - suck-4.1.1 released 307 308-- Changes from Suck-4.0.0 -> Suck-4.1.0 309 310* killfile.c - get_one_article_kill() - added code to handle 311 new option, -g, to get only the headers of articles. 312 See man pages for details. 313 314* suck.c - get_one_article() - added code to handle new option 315 -g, to get only the headers of articles. 316 317* xover.c - chk_a_group() - fix bug in counting of Xref line, 318 causing inaccurate count. 319 320 do_one_line(), get_xoverview() - fixed handling of :full 321 flag in overview.fmt. 322 32322 Mar 99 - suck-4.1.0 released 324 325-- Changes from Suck-3.10.4 -> Suck-4.0.0 326 327* reworked restart code. Got rid of suck.restart and suck.sorted, 328 replaced with suck.db, which contains the records of all messages. 329 All of this code is now contained in db.c. Cleaned up the use of 330 the Mandatory field by creating separate delete and sentcmd fields. 331 332* chkhistory.c chkhistory() - fixed bug which caused no articles to be 333 checked, I wasn't passing the current article to my_bsearch(). 334 335 chkhistory() - changed HISTORY_FILE to a run time option vice 336 the constant defined in the Makefile. 337 338* chkhistory_db.c 339 chkhistory(), open_history() - changed HISTORY_FILE to a 340 run_time option. 341 342* killfile.c - added code to handle new killfile option NRXREF. 343 This works the same as NRGRPS, but on the Xref line 344 instead of the Newsgroups line. 345 346 killfile_done() - fixed bug in freeing perl_int. 347 348 check_a_group() - fixed bug in counting nr of groups. 349 350 pass_two() - fix bug if groupline didn't have group name, we could 351 core dump when trying to nuke nl. 352 353* ssort.c - changed params that my_bsearch is called with, to make 354 chkhistory faster. Changed second param to string vice struct. 355 356* suck.c - do_cleanup() - fixed a bug with moving suck.newrc to sucknewsrc. 357 If we're restarted with -R, no suck.newrc would exist, and 358 we'd move sucknewsrc to sucknewsrc.old, and fail on the 359 move of suck.newrc to sucknewsrc. Now if suck.newrc doesn't 360 exist, we don't move sucknewsrc either. 361 362 parse_args() - added code to handle history file option (HF). 363 364* xover.c - added code to handle to option NRXREF, like above. 365 Also added code to handle new option XOVER_LOG_LONG, 366 which causes suck to format xover kills so that they 367 look like message headers, instead of printing just 368 the Xover line. 369 37013 Mar 99 - Suck-4.0.0 released 371 372-- Changes from Suck-3.10.3 -> Suck-3.10.4 373 374* active.c - get_message_index_active() - added code to handle -F 375 option, reconnect after reading the active file. This is 376 in case of a large active file, and the remote end times 377 out while reading it. 378 379* killprg.c - tweaked the #ifdef for the Perl 5.004 stuff 380 381* lmove.c - move_msg(), scan_args() - Added test to see if article 382 exists in new location before I move it. This is to avoid 383 overwriting articles if another process adds articles to 384 directory without changing the active file. If an article 385 already exists, I abort UNLESS you use the -A option. See 386 man page for more details. 387 388 main() - rewrote tests for msgdir and basedir, to avoid segfaults 389 if not defined. 390 391* suck.c - main(), scan_args() - added code to handle -F option. 392 393* xover.c - get_xoverview() - fixed bug in parsing of xoverview, not 394 stripping the blanks and nls correctly. Also fixed bug in 395 allocing of memory (had POverview vice Overview). 396 39725 Jan 1999 - Suck-3.10.4 released 398 399-- Changes from Suck-3.10.2 -> Suck-3.10.3 400 401* batch.c - do_post_filter() - created, allows you to edit all articles 402 downloaded. 403 404*batch.c - do_lmove_patch() 405*killprg.c - killprg_forkit() 406*rpost.c - do_filter - added exit(-1) so that if child doesn't execl, 407 we don't have both parent and child running. 408 409* chkhistory.c - chkhistory() - changed error_log() call to MyPerror() 410 for open of history file, so get more descriptive error msg. 411 412* suck.c - main(), parse_args() - added arg handling for do_post_filter(). 413 414 get_articles(), restart_yn() - re-worked the handling of restarts, to 415 avoid downloading same article twice, or not downloading an article, 416 due to the de-duping process when I did a rescan for new articles, 417 so I had the same MsgId twice, then deleted the first one already 418 downloaded, and then downloaded it again. 419 420* dedupe.c - dedupe_list() - added code so that if one of a set of dupes 421 is marked as downloaded, or a dupe, I delete the other one 422 instead, to help avoid the scenario above. 423 42410 Dec 98 - Suck-3.10.3 released 425 426-- Changes from Suck-3.10.1 -> Suck-3.10.2 427 428* chkhistory.c - chkhistory() - changed to new, hopefully faster routine, 429 using ssort() and my_bsearch(). 430 431* dedupe.c - dedupe_list() - changed to use new routine to handle deduping 432 based on the ssort() routine. 433 434* ssort.c - created, contains ssort() and my_search(). 435 436* suckutils.c - qcmp_msgid() - created for use by my_bsearch(). 437 438* xover.c - do_group_xover(), do_one_line() - rewrote to fix bug in 439 not handling multiple group keep/delete files. 440 4418 Nov 98 - Suck-3.10.2 released 442 443-- Changes from Suck-3.10.0 -> Suck-3.10.1 444 445* chkhistory_db.c - open_history() - fixed typo in GDBM code had == where 446 it should have been = . 447 448* killprg.c - added #define ERRSV and PL_na, since Perl 5.004 and earlier 449 don't have these. 450 451* rpost.c - main(), scan_args() - modified to handle perl embedded filter. 452 453* rpost.c - parse_perl(), perl_done(), do_perl() - created, handles embedded 454 perl subroutine for filtering files uploaded. 455 456* xover.c - get_xoverview() - fix bug in not initializing elements of the 457 linked list (next = NULL). 458 45913 Oct 98 - Suck-3.10.1 released 460 461-- Changes from Suck-3.9.4 -> Suck-3.10.0 462 463* both.c - added tests for <net/socket.h> and <arpa/inet.h> for BEos, 464 it needs net/socket.h, everyone else needs the other one. 465 466 error_log(), do_debug_vl() - added code to handle printing of error 467 messages to do_debug(). 468 469* chkhistory.c - chkhistory() - added code to check for valid lines, since 470 INN now has lines that begin with [, used by the DBZ code, and 471 we need to ignore them, and use only the lines that start with <. 472 473* chkhistory_db.c - open_history(), close_history() - added code for using 474 GDBM database. 475 476* killfile.c - parse_killfile(), do_debug() - changed to pointer and malloc 477 for master killfile, so can re-use routine to load in XOVER killfiles. 478 Added filename parameter, so can tell it what file to parse. Changed 479 TRUE_STR() macro to use true_str function from suck.c 480 481 parse_a_file() - added initialization of bodybig and bodysmall. 482 483 parse_killfile(), parse_one_file() - changed so that if a killfile 484 evaluates to empty, we throw it away, so we don't spend time 485 finding groups for empty killfiles. 486 487 parse_killfile(), free_killfile() - changed to set up for embeded 488 perl killfile call. 489 490* killprg.c - killperl_setup(), killperl_done(), chk_msg_kill_perl() - 491 created, handles calling embedded perl subroutine for killfiles. 492 493* lpost.c - added include <string.h> to fix compile bug on SunOS. 494 495* rpost.c - do_article() - added code to test for a string to confirm 496 a duplicate post error message, since some servers don't use 497 a separate error code to dilineate these from other failures. 498 499 scan_args() - added call to error_log() so that error_log and 500 MyPerror messages also go to debug.suck, if debug is true. 501 502* suck.c - main(), get_articles(), parse_args() - added code to change the 503 format of the BPS and count output to make it easier for a gui to 504 pick these out and display separately. For use in my java gui, 505 or anything else for that matter. Added arg -G to toggle this on. 506 507 main() - changed calls to true_str() and null_str() from macros 508 to true functions, since they are used so much in debug code, so 509 as not not have 300 copies of "true" "false" and "null" in the 510 program. Added -f option, to reconnect after deduping the 511 messages, in case of long dedupes, and the remote disconnects 512 due to time outs. 513 514 main(), parse_args() allocnode(), do_one_group() - added code to 515 handle the new XOVER arg, to parse the xover killfiles, to allow 516 passing of article number, and to do the xover() call. 517 518 parse_args() - added call so if debug is set, error_log and MyPerror 519 reports to debug.suck. 520 521* testhost.c - main() - added -o option, to list the overview format, which 522 is what the XOVER command returns. Added -M option, in case you 523 need the mode reader command for the -o option to work. 524 525* xover.c - created, holds code to process XOVER killfiles. 526 5275 Oct 98 - Suck-3.10.0 released 528 529-- Changes from Suck-3.9.3 -> Suck-3.9.4 530 531* active.c - add_to_list() - added code to do regular expression testing, 532 if your system supports regex(). 533 - read_ignore() - added code to compile regular expressions if 534 your system supports regex(). 535 536*chkhistory_db.c - added code to handle INN-2.0's new database routines. 537 538* makephrases.c - count_vars() - rewrote so can't go past end of string 539 when checking for a variable. Added <string.h>. 540 541* suck.c - do_one_group() - changed so abort on non 411,500 error codes 542 when sending the group command. 543 54423 Jul 98 - Suck-3.9.4 released 545 546-- Changes from Suck-3.9.2 -> Suck-3.9.3 547 548* suck.c - main() - added code to get reply from "quit" command, that 549 way if remote end is in process of sending us something, we 550 don't close down the buffer prematurely. 551 55223 Apr 98 - Suck-3.9.3 released 553 554-- Changes from Suck-3.9.1 -> Suck-3.9.2 555 556* As of this version, my e-mail address has changed from boby@pixi.com 557to bobyetman@worldnet.att.net. 558 559killprg.c - chk_msg_kill_fork() - added code to handle new -LF option, 560 to override built-in default for suck.killlog. 561 562killfile.c - get_chunk_mem() - changed so that if send_command() aborts 563 due to TimeOut, we return the actual error (RETVAL_ERROR) vice 564 UNEXPECTEDANS which would cause us to keep going. 565 566 regex_scan() - fixed bug if you had were using QUOTECHAR and had 567 regex() compiled in. The regex code would strip the QUOTECHAR 568 off the string, so we'd always do case insensitive compare. 569 570 parse_a_file(), regex_scan(), regex_check(), regex_block(), do_debug() - 571 modified to handle new non-regex searching mechanism. Switched to 572 Boyer-Moore algorithm vice straight brute force of strstr() or nstrstr(). 573 Should make searching of body of messages lots quicker. Added ability 574 to designate string in a killfile as a non-regex. This is done by adding 575 a % to the front of a string, before the QUOTE char. Added NON_REGEX= 576 param to killfiles. Allows you to specify a character instead of % to 577 represent non-regex strings. Revamped the handling of the QUOTE character, 578 it's all done now in regex_scan(). Fixed bug in printing if we were 579 using extended regex or not. Added debugging statements. 580 581 chk_msg_kill() - added code to handle new -LF option, to override built-in 582 default for suck.killlog. 583 584suck.c - do_one_group() - added error message print if timed out getting 585 MsgIds. 586 587 do_connect(), send_command() - fixed to handle flushing of inbuf 588 and resetting which group number we are on, if reconnect option is 589 given. 590 591 restart_yn() - added -O, skip_on_restart. Useful when suck is 592 having trouble with a particular article, and it keeps timing out 593 when you restart. This option tells suck to skip the first article 594 on restart. 595 59629 Mar 98 - Suck-3.9.2 released 597 598-- Changes from Suck-3.9.0 -> Suck-3.9.1 599 600both.c - get_long() - created, copy of number() except it gets 601 longs instead of ints. 602 str_long() - created copy of str_int() except it gets 603 longs instead of ints. 604 605suck.h - changed so MsgNr is long vice int. This necessitated a 606 bunch of changes in other routines, changing int vars 607 to long, and a couple of subroutine calls had to be changed. 608 60912 Feb 98 - Suck-3.9.1 released 610 611-- Changes from Suck-3.8.0 -> Suck-3.9.0 612 613Makefile.in - remove -ansi -pedantic, which caused Linux Glibc and 614 other systems problems. 615 616active.c - nntp_active(), read_active() - created, read activelist 617 from NNTP host or local file, respectively. 618 619 get_message_index_active() - changed to call nntp_active() 620 or read_active(). 621 622 get_msgids() - add nl to print of original line, so sucknewsrc 623 looks okay. 624 625batch.c - do_rnewsbatch() - added code to test for existence of batch 626 file and fail if it already exists. Added code to test for 627 write error. Redo fclose()s so they are in right place. 628 629 do_innbatch() - added code to test for write error. 630 631both.c - do_debug_binary() - created, do a dump without filtering 632 thru a print. Needed in case got NULL in string. 633 634 findnl() - created, replaces strstr() call in sgetline() 635 so can handle NULLS in messages. 636 637 sgetline() - added call to do_debug_binary() - so can see 638 if I get NULL in recv(). 639 640killfile.c - get_one_article_kill() - added code to test if failed to 641 write header to disk. Modified to handle new calling sequence 642 for chk_msg_kill*(). Added code to get the body of the article, 643 if it wasn't already downloaded in check_a_group(). Added code 644 to handle UNEXPECTEDANS from get_chunk_mem. 645 646 chk_msg_kill() - modified to handle new calling sequence, so can 647 pass master to check_a_group(), 648 649 get_chunk_mem() - renamed from get_a_chunk_mem(). Added size param 650 to track size of buffer. Changed strcpy() to memmove() in case of nulls 651 in string. Added code to get both the header and body of articles into 652 separate buffers. Added NULL to end of buf so that logging is correct. 653 Added code to handle retval and to pass back UNEXPECTANS if the article 654 is not available on server. 655 656 check_a_group() - added code to test body and bodysize. Moved some code 657 down to regex_block(). recoded to handle multiple body and header checks. 658 659 parse_a_file, do_debug() - added code to handle body and bodysize> and 660 bodysize< parameters. added code to handle multiple header and body checks. 661 added code to handle extended regex parameter. 662 663 regex_block() - created. This code will check an entire block 664 (header/body) for the string/regex desired. 665 666 debug_one_kill() - created, print OneKill structrure, moved some 667 code from print_debug() here to make printouts more uniform and 668 code read a bit easier. 669 670 regex_scan() - fixed bug in error message for bad regular expression. 671 Added code to free up structure if error in routine. Added code to 672 handle use extended regex parameter. 673 674 pass_one() - added code to handle use extended regex parameter. 675 676killprg.c - chk_msg_kill_fork() - modified to handle new calling sequence, 677 needed cause chg_msg_kill needed master. 678 679lmove.c - read_active(), rewrite_active() - swap lownr and highnr 680 params around to match real format of active. 681 682 load_phrases() - added code to test for correct version nr, 683 fixed bug in not skipping ahead to lmove phrases. 684 685 find_groups() - fix bug by changing linein[] to static. 686 687makephrases.c - added code to write out version number to phrase file. 688 689rpost.c - added tests to various sgetlines() in case it aborts due to timeout. 690 691 load_phrases() - added code to test for version number. 692 693 do_batch() - added code to write rest of articles to failed file 694 if we abort due to loss of connection. 695 696suck_config.h - Move DEBUG1 from suck_config.h to Makefile debug_both 697 698suck.c - main() - added TRUE_STR() and NULL_STR() macros to 699 clean up the debugging printout a bit. Fix bug in errormsg 700 if localhost isn't defined. Moved printout of debug stuff 701 so it prints even if there's an error in the parsing of 702 the args. Added code to handle chk_msgid option. Added code 703 to handle -AL option, read activelist from file. Added code 704 to handle -B option, check for any lingering messages and 705 batch em up before we start the main run. 706 707 do_supplemental() - added -z option don't do dedupe. This 708 is primarily for real slow machines where the dedupe process 709 is longer than the time to download the messages. I don't 710 recommend this option. 711 712 allocnode() - added code to handle -x option, chk_msgid. If 713 this option is set suck doesn't check the end of the MsgId 714 to verify that there is the > that is supposed to be there. 715 This is for some brain-dead NNTP servers that truncate 716 XHDR info at 72 characters. Fixed bug introduced when added 717 code to get message number that cause the supplemental file 718 to not be processed. 719 720 get_a_chunk() - change fputs to fwrite(), to handle NULLs. Added 721 code to test retval of fwrite() in case disk is full. 722 723 load_phrases() - added code to test for correct version nr, 724 fixed bug in not skipping lmove phrases. 725 726 get_articles() - move test for mandatory down to killfile code, 727 due to pipelining in non-killfile code. 728 729testhost.c - main() - added -q option, suppress connect and announcement 730 displays, only show result of command 731 732 load_phrases() - added code to test for correct version number. 733 7345 Feb 98 - suck-3.9.0 released 735 736-- Changes from Suck-3.7.0 -> Suck-3.8.0 737 738active.c - read_ignore() - move fclose() to prevent attempt to 739 close file that's NULL. 740 741batch.c - batch_lmove() - changed batchfile option to pass the 742 configuration file name vice the activefile name. lmove 743 now uses the configuration file to get the activefile name. 744 745killfile.c - parse_a_file() - added code to handle comment character. 746 747lmove.c - main(), rewrite_active(), load_active(), scan_args() - 748 added -c option which allows you to specify configuration file 749 name. Rewrote so that active file looks like standard news 750 active file, which group name, low, high, and status fields. 751 This means I had to move BASE= to another file, the config 752 file. This also loads ACTIVE= to specify the location of 753 the active file. 754 load_config() - created, loads configuration file. 755 756rpost.c - main(), send_command() - added code to handle the new -u 757 option, auto_authenticate. This option automatically sends 758 the authinfo user command upon connect to the remote host. 759 760 do_authenticate() - added, used by -u option. send_command() and 761 do_authenticate() are carbon copies of what is in suck.c, 762 except for variable name changes. 763 764suck.c - get_one_article() - move output of final '.' so that it 765 only happens if the article is successfully downloaded. 766 767 main(), allocnode(), do_free(), do_one_group(), do_supplemental(), 768 get_one_article(), get_one_article_kill(), restart_yn(), parse_args() 769 - (wow) Added code to handle -n option. This option retrieves 770 articles by the Number, not by the MessageID. This means I had to 771 track which group each article was in, and send the command to 772 switch groups when needed. This gets tricky because of the 773 pipelining code, so I can't send ahead if I have to switch groups. 774 If your remote NNTP server doesn't send the article number with 775 the xhdr command, then this option is disabled in the code. 776 777 get_group_number() - created, adds group to list and assigns nr 778 for later retrieval in -n option. 779 780 build_command() - created, builds head, article, or body command 781 with either msgid or msgnr, depending on -n option. 782 783 do_connect, scan_args() - added code to handle the -u, auto_authenticate 784 option. This option will automatically send the authinfo user command 785 upon connection. 786 787 788testhost.c - main() - added code to handle -d option, get group descriptions 789 (send command 'list newsgroups'). 790 79124 Nov 97 - suck-3.8.0 released 792 793-- Changes from Suck-3.6.0 -> Suck-3.7.0 794 795Makefile.in - add configure section, change install so install_lpost 796 does both program and man page, fix bug in in installall 797 798sample\* - various tweaks to use new -A and -bp options 799 800active.c - created, handles the -A option, reading in the local 801 active file, and merging it with the existing sucknewsrc 802 to get the msgids. 803 804both.c - sgetline() - added global variable TimeOut, to allow set 805 of timeout value from all the programs. 806 807batch.c - created, moved all batch subroutines here. 808 - do_localpost(), post_one_msg() - created, post articles 809 to local server using IHAVE (-bp option) 810 811killfile.c - chk_msg_kill() - put NL between articles in killfile log 812 when in long log mode. 813 - get_one_article_kill() - added code for BATCH_LIHAVE 814 - added <limits.h> to fix compile bug on glibc systems. 815 816rpost.c - scan_args() - added code to handle -T (timeout) option. 817 818suck.c - get_message_index() - rewritten, much of this code moved to 819 do_one_group(), so that it can be called from active.c. 820 Correctly handle a maxread of 0 and not download any msgs. 821 - do_one_group() - created. 822 - get_articles() - redid code that prints BPS to use new 823 GET_BPS function from the timercode, so that I can correctly 824 format the output and don't get BPSS type stuff. Added code 825 to handle BATCH_LIHAVE file open. 826 - get_one_article(), main(), added code for BATCH_LIHAVE 827 - do_rnewsbatch(), do_innbatch, do_lmovebatch() - moved to batch.c 828 - scan_args() - rewritten to handle long and short args 829 - parse_args() - created, contains much of old scan_args(). 830 Added code to handle -A, -bp, -hl, and -T (Timeout) options. 831 - main() - added some arg checking code. 832 - get_one_article(), do_authenticate() - fixed bug in not 833 handling authentication due to send-ahead code. 834 835testhost.c - main() - added code to handle -T (timeout) option. 836 837timer.c - TimerFunc() - added GET_BPS option to return the BPS vice 838 display it on the screen. 839 84019 Oct 97 - suck-3.7.0 released 841 842-- Changes to Suck-3.5.2 843*.c - removed all ifdef TIMER this option is no longer needed, 844 now that the -q is present. 845 846both.c - added test for NULL fpo to print_phrases(). 847 848killfile.c - changed all routines, got rid of non-regex stuff, 849 and rewrote to handle new killfile format and parameters. 850 Changed get_one_article_kill() to put tmp message into 851 TMPDIR not MSGDIR. Added -k option to ignore postfix 852 for master killfile so can have one set of killfiles for multiple 853 feeds. Changed so the killfile names in the GROUP lines 854 are absolute, and don't get prefix added on. 855 Changed so killfile log only opened once, and changed log 856 format, added long and short version, and it also prints 857 out which string we matched on. Added wildcard matching 858 to the group matching routine (so can match comp.os.linux*). 859 Handle space instead of comma for separator on newsgroup line. 860 Added code to handle batch infeed option. Added test for 861 regex or non-regex, so can use faster strstr() if not regex. 862 Fixed bug so that if killfile don't exist, we just ignore it. 863 864killprg.c - chk_msg_fork_kill() - added logging to killfile log. 865 Added various debugging statements, to help determine 866 problems with child programs. 867 - move #include <unistd.h> before the <dirent.h>, needs to 868 be this order for FreeBSD. 869 - chk_msg_kill_fork() - added new logging code in. 870 871suck.c - get_announcements() - added code to handle authentication. 872 renamed to do_connect(), moved connect code down here, to allow 873 for disconnect and reconnect every X msgs (to combat the inn 874 LIKE_PULLERS=DONT option) 875 send_command() - moved code for authentication to separate 876 function. 877 do_authenticate() - created to handle all authentication 878 requests. 879 scan_args() - re-organized so options in alphabetic order, 880 so easier to figure out which letters are used. 881 get_msg_index() - added # of msgs to the print out of the 882 which articles are being downloaded. 883 main() 884 get_articles() - moved parsing of killfiles to main(), made 885 killp part of master structure. Added code to handle -C option 886 (reconnect every x msgs). Added code to handle batch innfeed 887 option. 888 889 get_one_article() _ changed to create tmp msg file in 890 TMPDIR not MSGDIR, so rnews can feed directly off of MSGDIR. 891 do_rnewsbatch(), do_innbatch() - changed so gathers all articles 892 with the proper postfix. This is needed in case a restart gets 893 more articles and the numbering changes. This means if you are 894 NOT using a postfix, you'll need to make sure there is nothing 895 else in the MSGDIR but the msgs, since we'll match on all files. 896 Fixed bug in not printing ".\n" at end of message in stdout 897 mode. Added code to handle batch innfeed option. 898 899 main() - moved code to set up master.msgs to stdout or stderr 900 to before lock_file() call, so that if in stdout mode, we 901 print messages correctly. 902 903suckutils.c - move_file() - change typo in write from fpi to fpo. 904 - tmp_path() - removed as was causing a bug in renaming the 905 tmp articles back to the real names. 906 907timer.c - added ifdefs for HAVE_GETTIMEOFDAY in case the system 908 doesn't have it. 909 9107 Sep 97 - suck-3.6.0 released 911 912-- Changes to Suck-3.5.1 913 914both.c - MyPerror() - added code to handle NULL ptr possibility 915 916killfile.c - regex_scan() - fixed bug in error_log report (forgot NULL) 917 918rpost.c - do_article() - added code to handle M$ 446 (615) response for 919 duplicate article 920 921suck.c - main() - added code to handle -q option. 922 923 do_rnewsbatch(), do_innbatch() - fixed possible overflow condition 924 by changing size of tmp variable to MAX_PATH vice 20. 925 926 get_articles() - added code to handle -q (quiet) option to not 927 display BPS and article count. 928 929 scan_args() - added code for -q option. 930 931 get_message_index() - added test in case low and high article 932 numbers from GROUP command don't jive (low > high) 933 934 get_one_article() - changed nesting on the last if() so that 935 if Multifile is FALSE we don't try to move files, since there 936 aren't any to move. 937 938 do_supplemental() - removed an unneeded call to TimerFunc(). 939 Added test for no messages, so don't do deduping and history 940 check. 941 942 943suck_config.h - added code for Solaris in case PATH_MAX wasn't defined to 944 define it to MAXNAMLEN 945 946suck_utils.c - move_file() - added test in case either file is NULL ptr 947 9481 Aug 97 - suck-3.5.2 released 949 950-- Changes to Suck-3.5.0 951 952README - revamped a bit, to make col.announce posting a bit easier. 953 954killfile.c - get_one_article_kill() - change rename() to move_file(). 955 956lmove.c - added limits.h to fix problem on SCO machines with no PATH_MAX. 957 958rpost.c - main() -added code to set up default phrase file. 959 960suck.c - main() - added code to set up default phrase file "/usr/local/lib/suck.phrases" 961 This also involved changing the *.doc/Makefiles to copy the phrase file to this 962 location. Added call to setvbuf() to set buffering to line vice block. 963 Added code to handle rescan arg, which says to skip rescan on a restart. 964 965 - do_cleanup() - change rename() to move_file(). 966 967 - do_innbatch(), 968 - do_rnews(), - added postfix to file name checked for addition to batch file. 969 970 - alloc_node(), - added code to initialize struct item sentcmd, to be used 971 for pipelining to determine if we've sent command for this article 972 or not. 973 974 - get_one_article() - added code to do pipelining, that is send the command 975 to get one article ahead, so that while we are reading one article, 976 the next one is being fetched by the server. Changed rename() to 977 move_file(). 978 979 - scan_args() - added code to handle rescan argument -R 980 981 - restart_yn() - fixed bug in error msg when suck.restart exists, but suck.sorted don't, 982 changed it so this isn't a fatal error. 983 984suckutils.c - move_file() - created, move a file to another location, either via 985 rename() or a manual copy. We do this so that if the move spans file systems, 986 we can handle it gracefully. 987 988 - full_path() - added FP_GET_POSTFIX option to get postfix 989 990testhost.c - main() - added code to set up default phrase file. 991 99217 Jun 97 - suck-3.5.1 releaseed 993 994--Changes to Suck-3.4.1 995 996*.c *.h - Changed DEBUG2 and DEBUG3 (debug suck and rpost) a 997 run time option from compile time option. Now suck, lmove, 998 and rpost support -D for debug. This necessitated 999 changing all ifdefs DEBUG[23] to if(debug==TRUE).... 1000 and a few subroutines so debug info got passed. 1001 1002lmove.c 1003lmove_phrases.c - created. This is the long-promised utility 1004 to move articles into the news/group/nr format. See 1005 man pages for more details. 1006 1007Makefile.in - changed VERSION from numbers to strings, rewrote 1008 so most lines < 80 characters for those folks using 1009 dumb terminals, added code so other language man pages 1010 can be installed directly from main Makefile. 1011 1012both.c - sgetline() - changed call to select() from FD_SETSIZE 1013 to fd+1 so that we only scan our own FD not all 1024. 1014 A few tweaks to debug statements to clean up a bit. 1015 1016chkhistory.c - removed CHECK_HISTORY_OLD, no longer needed. 1017 1018killfile.c - get_one_article_kill() - added call to tmp_path() 1019 so that current article being downloaded has a .tmp 1020 extension on it. 1021 1022suck.c - removed all code that handled -k (MSnews kludge option). 1023 1024 main() - changed algorithm a bit so on restart, in 1025 addition to getting all old articles, check for any 1026 new articles and download them as well. Added code to 1027 handle call to do_lmovebatch. 1028 1029 - get_one_article() - rewrite to not use send_command(). 1030 This is the start of adding the ability to pipeline 1031 commands and receipt of articles. Added call to tmp_path() 1032 so that current article being downloaded has a .tmp 1033 extension on it. 1034 1035 - do_supplemental() - fix bug in call to TimerFunc(). 1036 1037 - scan_args() - added code to handle call to do_lmovebatch(). 1038 1039 - do_lmovebatch() - created. does a fork and execl to lmove, 1040 to put files in news/group/number format. 1041 1042suckutils.c - do_lockfile() - changed fprintf() to print_phrases() 1043 - add #include <sys/param.h> for BSDI systems and tweaked 1044 suck_config.h part where it handles PATH_MAX 1045 - tmp_path() - created, create a tmp file name with fullpath. 1046 104720 May 97 - suck-3.5.0 released 1048 1049--Changes to Suck-3.4.0 1050both.c - vprint_phrases() - rewrote to handle a couple of bugs, 1051 1, if len = PHRASES_BLOCK_SIZE then no null termination, 1052 2, if string arg > PHRASES_BLOCK_SIZE, infinite looped. 1053 1054suck.c - free_phrases() - fix typos of free_array() call for 1055 dedupe_phrases which caused a SIGBUS error. 1056 - get_message_index() - fix bugs in error_log() call for 1057 error messages for group command 1058 - main() - handle suck -V to correctly display version 1059 number without putting a hostname in. 1060 106130 Mar 97 - suck-3.4.1 released 1062 1063--Changes to Suck-3.3.2 1064 1065*.* - Tweaks to various configs to make more portable. 1066 1067*.c - got rid of all lingering \r\n in log and status messages. 1068 Added #define <sys/types.h> before sys/stat.h in various .c 1069 files, for more portability (Ultrix needs this). 1070 1071 phrases.h 1072*phrases.c - created. This is the code that loads in the language 1073 phrases, so you can rewrite the screen messages into 1074 another language, or just rewrite them. This necessitated 1075 changing every print to a screen to call print_phrases(). 1076 1077both.c - read_array(), do_a_phrases(), free_array(), 1078 convert_nl() - added. 1079 These are used by the load_phrases() routines to 1080 read in one array and alloc the memory for each phrases. 1081 - print_phrases() vprint_phrases(), str_int() - added. 1082 These routines print the phrases out with vars included. 1083 - signal_block() - added code to block PAUSESIGNAL. 1084 - error_log() - modified to call vprint_phrases() so that 1085 phrases print correctly. 1086 1087killfile.c - parse_killfile(), chk_msg_kill() - changed killfile 1088 logging from a command time to run time argument, added 1089 logyn to Master killfile structure. 1090 regex_scan() - fixed bug in handling quote character 1091 check_a_group() - changed \r to \n in checking nr of groups 1092 check_a_group(), parse_a_file() - added code to handle 1093 pathhost, subject, from, and nntp separators in group killfile. 1094 1095rpost.c - main(), scan_args() - added stuff to process language 1096 file. 1097 - free_phrases() - added, frees up memory from language file 1098 load. 1099 - load_phrases() - added, loads in the language file. 1100 1101suck.c - main(), scan_args() - added code to pass killog_yn to 1102 killfile routines. Added coded to process language file. 1103 Added coded to set up PAUSESIGNAL. 1104 1105 - get_message_index() - fixed bugs in writing suck.newrc, 1106 one where if invalid line, and one where maxread was 1107 never getting written back out. Also fixed bug in notting 1108 writing out line if error from server. Fixed bug in 1109 writing file where the cmd was written instead of line from 1110 file. Fixed bug where could write to a NULL fp at end of 1111 routine. 1112 1113 - get_articles() - rewrote way I calculate width of nritems 1114 for screen display, got rid of the log10() call, making 1115 the math lib (-lm) unnecessary. 1116 1117 - load_phrases() - added, loads in the language file. 1118 - free_phrases() - added, frees up memory from language file 1119 load. 1120 1121 - restart_yn() - fix bug in print of error message which 1122 caused it not to show the path of the suck.restart file, 1123 but rather show suck.sorted twice. 1124 1125 - sighandler() - added code to handle PAUSESIGNAL 1126 1127 - pause_signal() - created, swap pause_* with sig_* if we 1128 are called by signal handler. This allows the user to 1129 slow down suck while we are running. 1130 1131testhost.c - main() - added coded to process language file. 1132 1133 - load_phrases() - added, loads in the language file. 1134 - free_phrases() - added, frees up memory from language file 1135 load. 1136 1137timer.c - TimerFunc() - changed to write to file vice string, so can 1138 call print_phrases() 1139 114016 Mar 97 - suck-3.4.0 released 1141 1142--Changes to Suck-3.3.1 1143 1144killfile.c - regex_scan() - fixed bug which caused it to scan 1145 the first pattern on line multiple times, instead of 1146 scanning each pattern (added startline = tptr at end). 1147 1148rpost.c - main() - added version nr printout to DEBUG3 stuff. 1149 1150suck.c - main() - added version nr printout to DEBUG2 stuff. 1151 1152 - restart_yn() - added code to print error message if 1153 suck.restart exists, but suck.sorted doesn.t 1154 115516 Nov 96 - Suck-3.3.2 released 1156 1157--Changes to Suck-3.3.0 1158 1159rpost.c - log_fail() - fix bug in sprintf(), remove /. 1160 1161suck.c - get_message_index() - added code so that using 1162 a neg nr in sucknewsrc will allow you to download 1163 the last X nr of messages, handy for starting a 1164 new group. 1165 1166 - main() - check for NULLs on debug printout and 1167 handle gracefully 1168 1169 - scan_args(), get_message_index() - added code 1170 to handle msnews.microsoft.com using 224 vice 1171 221 for the return value on the XHDR command, 1172 hence the -k (kludge) option. 1173 1174testhost.c - main(), do_a_command() - added code to handle 1175 NNTP authorization. 1176 1177sample/get.news* - added simple lock mechanism so two instances 1178 of script can't run at same time. 1179 11805 Nov 96 - suck-3.3.1 released 1181 1182--Changes to Suck-3.2.2 1183 1184suck.c - main() - changed call to do_cleanup so that 1185 it would be called even if no articles, since 1186 this is not an error. 1187 - get_articles(), scan_args() - added code to 1188 handle the -W wait/pause argument to pause x nr 1189 of seconds between y nr of messages. 1190 - do_cleanup() - don't generate error if the sorted 1191 file doesn't exist. 1192 1193suck_config.h - added ifdef REGEX_H for killfile regex use. 1194 1195killfile.h 1196killfile.c - check_line() 1197 - parse_a_file() 1198 - free_node() 1199 - check_a_group() - added code to do the regex checks 1200 on subject, from, path and nntphost. 1201 - regex_scan() 1202 - regex_check() - created for regex stuff. 1203 1204rpost.c - do_batch() - added code to log failed uploads 1205 - log_fail() - created, create a file of failed uploads 1206 - do_article() - fixed a bug where if the last line 1207 of an article didn't end with a cr nl, then the . to 1208 signal eom wasn't recognized by remote server. 1209 12107 Oct 96 - Suck-3.3.0 released 1211 1212--Changes to Suck-3.2.1 1213 1214both.c - changed connect_to_nntphost, so can pass a portnr 1215 down, instead of always using the default 119. 1216 1217suck.c 1218rpost.c 1219testhost.c - main(), scan_args() - changed to handle the 1220 new option -N, for selecting nnrp port number. 1221 1222killfile.c - free_killfile() - removed lines that were 1223 explicitly freeing master.path, that is already 1224 handled in free_node(). 1225 122621 Sep 96 - Suck-3.2.1 released 1227 1228--Changes to Suck-3.2.0 1229 1230both.c - build_args() - created, parses a file for args, 1231 and builds an argv type array from it. 1232 - free_args() - created, frees memory allocated 1233 in build_args() 1234 1235chkhistory.c - cmp_msgid() - moved to suckutils.c, since 1236 it is also used in chkhistory_db.c. 1237 1238dedupe.c - created, dedupes the linked list of msg-ids. 1239 1240killfile.c - parse_a_file(), check_a_group() - added 1241 code to check for NNTP_Posting_Host in headers. 1242 1243killprg.c - chk_msg_kill_fork() - fix bug in check of 1244 retval from read of result from child process 1245 - killprg_closeit() - add nl to the sprintf 1246 so kill command is formatted correctly. 1247 1248rpost.c - made all retvals use ENUM values 1249 main() - removed ifdef RPOST_NNRP stuff added 1250 -M option processing (mode reader). Rewrote 1251 argument handling stuff so can add arg file 1252 processing 1253 do_article(), do_batch() - fix so if problem with 1254 article, it doesn't abort, just goes on to the 1255 next article. 1256 do_batch() - changed to use new Pargs struct to 1257 pass all the options down to it. 1258 scan_args() - created, moved argument handling 1259 to here. 1260 1261suck.h - Removed #ifdef NNRP made this a run-time option 1262 - added more fields to Master (for arg stuff) 1263 1264suck.c - main() - added -M option (mode reader) option. 1265 Moved all options to scan_args() so can do the 1266 read args from file stuff. This meant adding some 1267 fields to master, so could pass back and forth, 1268 and re-writing the arg handling stuff. 1269 - scan_args() - created, handle args here. 1270 - get_announcements() - removed ifdef NNRP stuff 1271 added stuff to check do_modereader 1272 - do_cleanup() - change FP_DATADIR to FP_TMPDIR on 1273 N_NEWRC and N_SORTED so it looks in the 1274 right location. 1275 - build_list() - deleted, see below. 1276 - get_message_index(), allocnode(), do_supplemental() 1277 rewritten, now all they do is build a list 1278 of message-ids, then the linked list is passed 1279 to dedupe_list(). This gets rid of the old 1280 way of deduping as building the list, and 1281 hopefully will speed up large message downloads. 1282 - get_message_index() - Added code to handle maxread 1283 parameter in sucknewsrc. Added check for count 1284 on group line, so if no messages available we 1285 don't even try. 1286 1287suckutils.c - do_lockfile() - change so PMaster is passed so 1288 can print to status log. Change print of removing 1289 stale lock file from errlog to status log, since this 1290 is not technically an error. 1291 129213 Sep 96 - Suck-3.2.0 released 1293 1294--Changes to Suck-3.1.0 1295 1296Makefile.in 1297config.h.in 1298configure.in - various changes so work on more systems 1299 1300*.h - changed #define WORD to #define WORD 1 1301 - various changes so they work with configure 1302 1303both.c killprg.c suck.c suckutils.c 1304 - added tests for limits.h 1305 - changed pid stuff to assume long vice int pids. This 1306 involved changing a couple of switches to if/else, and 1307 re-doing printf/scanfs with casts to long. 1308 - get_message_index() - added loop at end to write 1309 out rest of suck.newrc if the process was aborted 1310 (due to loss of pipe or other reasons). 1311 1312both.h - added test for pre-defined TRUE and FALSE 1313 - added test for PATH_MAX 1314 1315rpost.c - added -U - P options for NNTP authorization 1316 131712 Jul 96 - suck-3.1.0 released. 1318 1319--Changes to Suck-3.0.0 1320 1321ALL - added const to lots of function calls, and other places. Lots of 1322 - touch ups to make code compile without warning messages. 1323** - changed default to use memmove() vice bcopy() and set up config.h 1324 so you would uncomment to use bcopy vice memmove (reverse of old method) 1325** - changed _POSIX_PATH_MAX to PATH_MAX 1326 1327*.h - all modified so not to get included multiple times, and to stand 1328 alone (#ifndef, #define, #endif stuff) 1329 1330*.c - added #include <config.h> at top for autoconf stuff 1331 1332config.h - moved to suck_config.h so don't conflict with autoconf stuff. 1333 - changed CHECK_HISTORY_EXP to CHECK_HISTORY_OLD to make 1334 - new version the default. 1335 1336both.c - sgetline() - changed to use memmove vice bcopy 1337 - rewrote a bit to not use ENODATA and ETIMEDOUT 1338 - signal_block() - added handling for SIGPIPE for killprg 1339 1340suck.c - send_command() - created to handle requests for authorization 1341 when commands are sent. Replaces send_a_command(). 1342 - main() - added -U, -P option processing, and rewrote to use 1343 send_command(). 1344 - get_announcements() 1345 get_message_index() 1346 get_one_article() - rewritten to use send_command() 1347 - send_a_command() - removed, replaced by send_command() 1348 - main() - added do_cleanup stuff 1349 - do_cleanup() - created, cleans up after myself 1350 - get_articles() - removed ifp variable and close() not needed. 1351 1352killfile.c - get_one_article_kill() - rewritten to use send_command() 1353 - parse_killfile() 1354 - get_one_article_kill() - modified to handle call to 1355 either chk_msg_kill() or chk_msg_kill_fork() 1356 - chk_msg_kill() - fixed bug in counting of commas on group line. 1357 - changed functions for change from nrgrps to maxgrps or totgrps, 1358 see below. 1359killfile.h - added defines for killprg.c stuff 1360 - changed confusing defs of nrgrps in two different structs, 1361 now one is maxgrps, one is totgrps. 1362 1363killprg.c - created, this handles forking and calling of separate program 1364 - to check messages for killing or keeping 1365 1366rpost.c - do_article() - changed to use memmove vice bcopy 1367 - fixed bug in duping beginning of lines dots. 1368 - added long line support. 1369 - main() 1370 dobatch() - add -d option. This option will delete the batch 1371 file on successful upload of all messages. 1372 1373chkhistory.c - changed to make the new check_history() routine, made the 1374 - old routine optional 1375 - chkhistory() (new version) - removed extra fclose(fhist) 1376 1377Makefile - Moved to Makefile.in, rewritten to work with autoconf 1378 - added more warnings to defines and to tighten up code, added 1379 -ansi and -pedantic, this necessitated bunch of little changes 1380 in all files. 1381 - added SOCKS support 1382 1383Never released to public, beta testers only. 1384 1385--Changes to Suck-2.6.3 1386 1387killfile.c - pass_two() - fixed bug in malloc grpname (add +1 to 1388 strlen()). 1389 - malloc_line() - added +1 to malloc 1390 1391Makefile - fixed problem with older gcc's and linking (move $(LIBS) 1392 to end of compile lines). 1393 13948 May 1996 - suck 2.6.3 released 1395 1396--Changes to Suck-2.6.2 1397 1398All files - changed wording so that everything refers to articles 1399 vice messages, hopefully to avoid confusion. 1400 1401Makefile - added support for Profiling so can find time wasters. 1402 Added support for non standard locations of includes 1403 and libs for INN DB stuff. Added support for the 1404 separate compiling of chkhistory or chkhistory_db. 1405 1406chkhistory.c - Moved history database stuff to separate file, for 1407 easier maintenance. 1408 1409 - chkhistory() - there is now an experimental version 1410 of the flat file history checker. If you define 1411 CHECK_HISTORY_EXP in config.h, you'll get the new version. 1412 If not, you'll get the old. 1413 1414chkhistory_db.c - created. 1415 - check_history() - fixed bad ifdefs, all should have 1416 had USE_ in front of them. 1417 - chkhistory() - added missing master->nritems-- 1418 1419killfile.h 1420killfile.c - add NRGRPS param to allow you to prevent SPAM articles 1421 1422suck.h 1423suck.c - added -K option to bypass killfiles, and added -H option 1424 to bypass history file check. 1425 - build_list() - added prelim 1st test to the dedupe portion 1426 so that we don't always call strcmp() in hopes to speed things 1427 up. 1428 142931 Mar 96 - suck-2.6.2 released 1430 1431--Changes to Suck-2.6.1 1432 1433killfile.c - corrected len params for hilines and lolines in Params structure. 1434 1435 - cleaned up the docs and man pages in suck.1 had HIGHLINES which 1436 should have read HILINES 1437 1438 - added JDOC/* Japanese docs (Thanks Motoharu ) 1439 1440Makefile - fixed type in DBLIB 1441 1442suck.c - Makefile 1443 - main() - fixed version print to handle patch versions (2.6.1) 1444 144510 Mar 1996 - suck-2.6.1 released 1446 1447--Changes to Suck-2.6 1448 1449 - moved man pages and sample files to their own directories 1450 so that the base dir only contains source code 1451 1452ALL prgs - changed all stderr stuff to go through newly created error_log() 1453 - function. This is all part of the process to make these programs 1454 - have no messages go to screen, for use in crons, background etc. 1455 - Also added -e, -E, -s, and -S options to suck, rpost, and testhost. 1456 - This necessitated a change in the command line processing of testhost. 1457 - Now testhost requires hostname first. 1458 1459both.c - number() - re wrote to handle leading spaces gracefully 1460 - error_log() - created 1461 1462chkhistory.c - Added the stuff to handle DBM, NDBM, DBZ history database schemes. 1463 - I hope this stuff works as I have no way to test it. I can't even 1464 - compile the NDBM and DBZ stuff, as I don't even have the libs/include 1465 - files stuff. 1466 - cmp_msgid() - created, used to compare two articles ids IAW rfc 822. 1467 1468config.h - added minor comments re the history stuff and the Makefile. Added stuff 1469 - for group kill file processing. 1470 1471killfile.c - parse_killfile(), free_killfile(), chk_msg_kill() - modified 1472 - pass_two(), free_node(), check_a_group(), parse_a_file(), strnstr() - created 1473 - Major re-write to handle group kill and delete files. 1474 - also added quote param, to allow you to specify case-sensitive or 1475 - case insensitive matches. 1476 - Changed LINES param to HILINES and LOWLINES to match nr of lines above or 1477 - below the nr of lines in a article. 1478 - main() - commented out perror on no killfile, since this really isn't an error. 1479 1480rpost.c - get_article() 1481 - get_batch() 1482 - main() - added command line options, see above. 1483 - added fptr stuff and passed to subroutines to handle status messages. 1484 - added #define RNEWS_NNRP to handle INN servers that need 1485 - mode reader to post. 1486 1487suck.c - redid includes, moved various functions to suckutils.c 1488 - main() - added -V option to print version number, also added 1489 - command line options, see above, and added opening of status 1490 - log for silent mode. This changes the handling of the -s option. 1491 - get_articles() - removed reduntant killfile tests since that code 1492 - is now in killfile.c 1493 - main() 1494 - rnews_batch() - added -r option, and the ability to build multiple batch 1495 - files, with the max size specified on the command line. 1496 - get_message_index() - added check for group not found, if got re-write 1497 - line to newrc 1498 - added sanity check for a low high article nr, 1499 - in case remote hosts resets its article nrs. 1500 - main(), do_innbatch(), do_rnewsbatch() - added stuff for multiple feeds 1501 (postfix) 1502 1503suckutils.c - created, moved various functions not directly related 1504 to the getting of the articles from suck.c to here 1505 - full_path() - added postfix option so can have multiple feeds. 1506 1507suckutils.h - created 1508 1509testhost.c - added RETVAL enum used thru out program 1510 - main() - rewrote command line processing, see above. 1511 - added fptr stuff for status messages 1512 - added newgroups option. 1513 - do_a_command () - added fptr stuff for status messags 1514 - added option for args to command to be sent 1515 - check_date_format() - created, used to ensure date/time for 1516 - newgroups is in the right format. 1517 1518Makefile - tweaks to handle new directory structure and to handle 1519 passing version number to compile. Added code to handle 1520 DB lib linking and passing args to compile. Added user 1521 defines for owner, group, and mode for the executables 1522 and the man pages. 1523 152419 Feb 1996 - suck-2.6 released 1525 1526--Changes to Suck-2.5.1 1527 1528get.news.innxmit - added ${SITE} variable, fixed bug on ctlinnd call 1529 1530chkhistory.c - chkhistory() - moved search list stuff inside the else{} routine so 1531 - it doesn't get done on a bogus line. 1532 1533suck.c - main() - fixed a couple of printfs still going to stdout vice 1534 - where master.msgs points. 1535 1536 - get_articles() - added test for master being NULL to free_killfile() call 1537 1538both.c - sgetline() - added eob==start test in case buffer empty, 1539 no data for the strstr() test with a dirty buffer 1540 - THIS IS THE BUG THAT CAUSED MOST OF THE "No article found" 1541 error messages 1542 1543killfile.c - free_killfile() - added test for master being NULL 1544 154529 Dec 95 - suck-2.5.1 released 1546 1547--Changes to Suck-2.5 1548suck.c 1549killfile.c - ALL ROUTINES - Added Master structure, changed basic operation mode. 1550 Previously, we read suck.sorted to get each article. This was causing 1551 a lot of disk activity. Changed to keep the article list in memory. 1552 This included changing the handling of the restart, since we have to 1553 read the list into memory on a restart. Also fixed handling of 1554 stdout/stderr for status & error messages if in multifile mode or not. 1555 1556suck.c - do_innbatch() 1557 - do_rnewsbatch() - changed to use readdir() to build article files 1558 - rather than just assuming all articles were downloading 1559 - and going one up. This way if one article didn't download 1560 - the rest can still be batched up. 1561 - full_path() - fixed a bug in the resolving of relative paths. 1562 - get_articles() - add check for end of string when parsing for article id. 1563 - modified get_message loop to end on signal 1564 - send_a_command() - rewrote if to switch to handle UNEXPECTEDANS better 1565 - get_a_chunk() - rewrote a bit to speed it up (hopefully) 1566 - modified to handle double dots IAW RFC 977 2.4.1 1567 - sighandler() - created 1568 - main() - added call to signal() and to signal_block() 1569 - added -a options, always_batch; if we download at least one 1570 - article batch em up, even if we end on an error 1571 - added lockfile stuff 1572 - do_lockfile() - created, Hope this is portable 1573 - get_message_index() - any nr < 0 will cause us to just update sucknewsrc 1574 - with the new high article nr (to start a newgroup) 1575 - any line beginning with a # will be skipped 1576 - get_messages() - added call to free_killfile() 1577 - do_supplemental() - redid status messages a bit, added call to chkhistory() 1578 1579killfile.h - added free_killfile() definition, added to KillStruct 1580 1581killfile.c - get_a_chunk_mem() - modified to handle double dots IAW RFC 977 2.4.1 1582 - parse_killfile() 1583 - malloc_line() - created 1584 - check_line() - created 1585 - chk_msg_kill() - added stuff to search Path, Subject, and From line 1586 - and kill em if match 1587 - free_killfile() - created 1588 1589Makefile - added mkdir -p to install option, cleaned up a bit 1590 1591both.h - added enum for signal_block routine 1592 1593both.c - sgetline() - #ifdef TIMEOUT around timeval struct in variable declaration area 1594 - added calls to signal_block() 1595 - signal_block() - created, this is so the recv don't get interrupted by my abort signal 1596 - connect_to_nntphost() - added msgs parameter. This way suck can 1597 - point msgs to stderr if not in multifile mode 1598 1599config.h - added #define RNEWS for lpost 1600 - added #define bcopy() for portability sakes 1601 - added #define MYSIGNAL stuff 1602 - added #define CHECK_HISTORY stuff 1603 1604lpost.c - moved #define RNEWS to config.h to conform with other prgs 1605 1606get.news - eliminated 1607get.news.innxmit - created, for use by INND 1608 - changed to use flush vice reload for ctlinnd 1609get.news.rnews - created, for use by CNEWS 1610testhost.c - added #include "config.h" 1611 1612timer.c - changed message printout to include mins and seconds 1613 - added TIMER_TIMEONLY option to just disply time, not bytes 1614 1615timer.h - added to enum 1616 1617chkhistory.h - 1618chkhistory.c - created, allows to check /usr/lib/news/history for any articles this 1619 - system already has, and not download them 1620 1621suck.1 1622rpost.1 1623lpost.1 1624testhost.1 - created 1625 1626README 1627README.NEWS - merged, since much of the docs are now in the man pages. 1628 16291 Dec 95 - suck-2.5 released 1630 1631--Changes to Suck-2.4.1 1632 1633config.h - got rid of ##ifdef KILLFILE around #define N_KILLLOG to avoid 1634 make errors if KILLFILE is not defined 1635 1636rpost.c - do_batch() - changed do_article() to retval=do_article() 1637 so errors in upload got passed back. 1638 1639suck.c - main() 1640 get_articles() - added -s option, to force display of the status 1641 message for each message to stderr vice stdout. That way 1642 if someone is not using batch mode, they can still see those 1643 messages. 1644 - get_articles() - fixed bug where restart file was always deleted. 1645Oct 8, 1995 - released 1646 1647--Changes to 2.4 1648Makefile - various tweaks 1649 - moved DEBUG stuff to config.h 1650 1651get.news - added comments about where to change for rnews 1652 - changed the way I test to see if I am online to using a ping 1653 - vice just checking to see if PPP is up and running 1654 1655suck.c - get_announcement() - added #ifndef NNRP if NNTP server is called. 1656 NNTP servers don't need 'mode reader' command, so don't 1657 send it. 1658 - full_path() - modified to allow for command line setting of directory paths; 1659 changed variables passed to it. 1660 - main() - modified arg checking routine to allow for command line setting of 1661 directory paths 1662 - get_messages() - changed checkdir() to use full_path() 1663 - get_articles() - added #ifdef TIMER stuff 1664 - get_articles() - changed memcpy() to bcopy() for portability's sake 1665 - full_path() - changed PATH_MAX to POSIX_PATH_MAX for portability's sake 1666 - do_innbatch() 1667 - do_rnewsbatch() 1668 - get_articles() - added logcount, changed printf to make article file names 1669 00XX-1666, where leading zeros are applied 1670 - changed B_FALSE, B_INNXMIT, B_RNEWS to BATCH_ to avoid error on Sun compiler 1671 - changed informational msgs to print to stdout vice stderr 1672 - get_one_article() - created 1673 - get_a_chunk() - created 1674 - send_a_message() - created 1675 - get_articles() - moved all the stuff for one article to get_one_article() 1676 - send_a_message() and get_a_chunk() and added killfile 1677 - processing stuff and ifdef KILLFILE stuff 1678 - get_message_index() 1679 main() - moved handling of restart from get_articles() to main() 1680 1681 - do_dedupe() - modified 1682 - build_list() - created 1683 - get_articles() - added supplemental list processing, so user can specify 1684 - additional article numbers to download, in addition 1685 - to those from sucknewsrc. This is so a user can specify 1686 - articles that will NOT be checked against killfile stuff 1687 - Now suck.sorted has two fields per line, msgnr and a 1688 - one char field that states whether or not I must download 1689 - this article. If I must, I will bypass killfile routines. 1690 1691killfile.c - 1692killfile.h - created, contains stuff related to killfile processing 1693 1694suck.h - created, contains functions in suck.c needed by killfile.c stuff 1695 1696config.h - created, moved user changeable #defines to here. Renamed some 1697 so that they make more sense. Renamed suck.tmp to suck.newrc 1698 to be more descriptive. 1699 - added TIMEOUT option 1700 - moved DEBUG stuff from Makefile to here 1701 1702both.c - full_path() - moved to suck.c 1703 - sgetline() - #ifdef TIMEOUT stuff, to allow us to timeout if 1704 no data received from socket in some defined time. 1705 - plus some tweaks to speed up the routine 1706 - changed informational msgs to print to stdout vice stderr 1707 1708rpost.c - do_batch() - changed behavior if infile doesn't exist. Use to 1709 totally bomb the program, Now just displays error msg and 1710 goes on to next article 1711 - changed informational msgs to print to stdout vice stderr 1712 - do_batch() - some INNs put article number in outgoing file 1713 - in addition to the file name, so added check for this 1714 1715lpost.c - changed informational msgs to print to stdout vice stderr 1716 1717timer.c - created 1718timer.h - created, contains the timer display and update routines 1719 1720testhost.c- created, allows you to see if host is active and what commands it accepts 1721 - added LIST option to get active list 1722 17231 Oct 95 - posted 1724 1725--Changes to 2.3B 1726Rewrote code to my code styles, this basically means: no global variables, 1727 single exit(), #define anything liable to change, change indentation. 1728 1729both.c - added full_path() so can put files anywhere, just change #defines in both.h. 1730 added do_debug(), MyPerror() for easier debugging. 1731 sgetline(), total rewrite so less character moving around 1732 and handles partial lines, returns with the nl in buffer. 1733both.h - clarifed debugging options. 1734 centralized all #defines here for global changes 1735lpost.c - just cosmetic changes, as I hope to phase this out. 1736Makefile - added a couple of comments 1737rpost.c - rewrote to handle batch option 1738 added do_article(), process one article 1739 added do_batch(), loop thru batch file, process args 1740 run filter as needed 1741 added do_filter(), basically just fork() and execl() 1742suck.c - main() rewrite to handle args 1743 get_articles() rewritten to handle multifile output 1744 added get_announcements() to move this out of main() 1745 added do_dedupe() so no more system() calls. 1746 added allocnode() for use by do_dedupe() 1747 added checkdir() to check for and make directory 1748 added do_innbatch() to build batch file of article file 1749 names needed by innxmit 1750 added do_rnewsbatch() to build file formatted for rnews 17518 August 95 Suck2.3B released 1752 1753--NEW MAINTAINER 3 July 1995 boby@pixi.com 1754Minor changes so no warning msgs from gcc2.7.0. 1755suck.c - if low=high, never got article, fixed 1756suck.c - changed if lastread in sucknewsrc ==0 no get to == -1 17573 July 1995 suck-2.2 released 1758 1759--Changes to 2.2: 1760Sgetline now cares for maxlen which means lines > 1024 bytes will 1761be folded. Lpost got the option -v to print some debugging output. 1762The other changes are only cosmetical :). 1763 1764--Changes to 2.1.1: 1765Despite of the above proclamation i forgot to increase the buffer ;). 1766This is now fixed (hopefully). You see there is definately a need 1767for a new maintainer. 1768 1769--Changes to 2.1: 1770Radically increased buffer (+1 byte) thanks to operator@melchior.frmug.fr.net 1771rpost now more RFC0977 conform. 1772Renamed rpost.sh to blow. 1773Added another local posting script by huber@iamexwi.unibe.ch for inn. 1774 1775--Changes to 2.0: 1776added inews-alike rpost thanks to inspiration from ecarp@netcom.com. 1777 1778--Changes to 1.4: 1779added restart ability thanks to inspiration from David.H.West@um.cc.umich.edu. 1780 1781--Changes to 1.3: 1782fixed numeric ip handling. 1783 1784--Changes to 1.2: 1785added a missing htons() thanks to laurent@brasil.frmug.fr.net 1786added numeric ip address handling. 1787