Send inn-committers mailing list submissions to
        inn-committers@lists.isc.org

To subscribe or unsubscribe via the World Wide Web, visit
        https://lists.isc.org/mailman/listinfo/inn-committers
or, via email, send a message with subject or body 'help' to
        inn-committers-requ...@lists.isc.org

You can reach the person managing the list at
        inn-committers-ow...@lists.isc.org

When replying, please edit your Subject line so it is more specific
than "Re: Contents of inn-committers digest..."


Today's Topics:

   1. INN commit: branches/2.5 (3 files) (INN Commit)
   2. INN commit: branches/2.5 (4 files) (INN Commit)
   3. INN commit: branches/2.5/frontends (pullnews.in) (INN Commit)
   4. INN commit: branches/2.5/doc/man (libinn.3) (INN Commit)


----------------------------------------------------------------------

Message: 1
Date: Sat, 30 Aug 2014 05:06:33 -0700 (PDT)
From: INN Commit <r...@isc.org>
To: inn-committ...@isc.org
Subject: INN commit: branches/2.5 (3 files)
Message-ID: <20140830120633.5f7d367...@hope.eyrie.org>

    Date: Saturday, August 30, 2014 @ 05:06:32
  Author: iulius
Revision: 9665

pullnews:  new -B flag (header-only feeding)

Add a new feature to pullnews:  header-only feeding.

If the article does not already have a Bytes: header field, one is added.
Bodies are kept only for control articles.

Thanks to Geraint Edwards for the patch.

Modified:
  branches/2.5/doc/pod/news.pod
  branches/2.5/doc/pod/pullnews.pod
  branches/2.5/frontends/pullnews.in

-----------------------+
 doc/pod/news.pod      |    5 +--
 doc/pod/pullnews.pod  |   11 +++++-
 frontends/pullnews.in |   77 +++++++++++++++++++++++++++++++++++++++---------
 3 files changed, 76 insertions(+), 17 deletions(-)

Modified: doc/pod/news.pod
===================================================================
--- doc/pod/news.pod    2014-08-30 11:58:35 UTC (rev 9664)
+++ doc/pod/news.pod    2014-08-30 12:06:32 UTC (rev 9665)
@@ -14,8 +14,9 @@
 =item *
 
 Several improvements have been contributed to B<pullnews> by Geraint
-Edwards:  the B<-m> flag now permits to remove headers matching (or not)
-a given regexp, and B<rnews> reporting is improved.
+Edwards:  the new B<-B> flag triggers header-only feeding, the B<-m>
+flag now permits to remove headers matching (or not) a given regexp,
+and B<rnews> reporting is improved.
 
 =back
 

Modified: doc/pod/pullnews.pod
===================================================================
--- doc/pod/pullnews.pod        2014-08-30 11:58:35 UTC (rev 9664)
+++ doc/pod/pullnews.pod        2014-08-30 12:06:32 UTC (rev 9665)
@@ -4,10 +4,10 @@
 
 =head1 SYNOPSIS
 
-B<pullnews> [B<-hnqRx>] [B<-b> I<fraction>] [B<-c> I<config>] [B<-C> I<width>]
+B<pullnews> [B<-BhnOqRx>] [B<-b> I<fraction>] [B<-c> I<config>] [B<-C> 
I<width>]
 [B<-d> I<level>] [B<-f> I<fraction>] [B<-F> I<fakehop>] [B<-g> I<groups>]
 [B<-G> I<newsgroups>] [B<-H> I<headers>] [B<-k> I<checkpt>] [B<-l> I<logfile>]
-[B<-m> I<header_pats>] [B<-M> I<num>] [B<-N> I<timeout>] [B<-O>] [B<-p> 
I<port>]
+[B<-m> I<header_pats>] [B<-M> I<num>] [B<-N> I<timeout>] [B<-p> I<port>]
 [B<-P> I<hop_limit>] [B<-Q> I<level>] [B<-r> I<file>] [B<-s> 
I<to-server>[:I<port>]]
 [B<-S> I<max-run>] [B<-t> I<retries>] [B<-T> I<connect-pause>] [B<-w> I<num>]
 [B<-z> I<article-pause>] [B<-Z> I<group-pause>] [I<from-server> ...]
@@ -44,6 +44,13 @@
 our high for that group.  When I<fraction> is C<1.0>, pull all the articles on
 a renumbered server.  The default is to do nothing.
 
+=item B<-B>
+
+Feed is header-only, that is to say B<pullnews> only feeds the headers
+of the articles, plus one blank line.  It adds the Bytes: header field
+if the article does not already have one, and keeps the body only if
+the article is a control article.
+
 =item B<-c> I<config>
 
 Normally, the config file is stored in F<~/.pullnews> for the user running

Modified: frontends/pullnews.in
===================================================================
--- frontends/pullnews.in       2014-08-30 11:58:35 UTC (rev 9664)
+++ frontends/pullnews.in       2014-08-30 12:06:32 UTC (rev 9665)
@@ -12,8 +12,8 @@
 #               Full changelog can be found in the Subversion repository of the
 #               INN project.  Major changes are:
 #
-#               January 2010:  Geraint A. Edwards
-#               enable -m to remove headers matching (or not) a given regexp;
+#               January 2010:  Geraint A. Edwards added header-only feeding 
(-B);
+#               enabled -m to remove headers matching (or not) a given regexp;
 #               minor bug fix to rnews when -O; improved rnews reporting.
 #
 #               December 2008:  Matija Nalis added -O (optimized mode, checking
@@ -114,7 +114,7 @@
 }
 
 $usage =~ s!.*/!!;
-$usage .= " [ -hnOqRx -b fraction -c config -C width -d level
+$usage .= " [ -BhnOqRx -b fraction -c config -C width -d level
         -f fraction -F fakehop -g groups -G newsgroups -H headers
         -k checkpt -l logfile -m header_pats -M num -N num
         -p port -P hop_limit -Q level -r file -s host[:port] -S num
@@ -127,6 +127,10 @@
                 group.  When fraction is 1.0, pull all the articles on
                 the server.  The default is to do nothing.
 
+  -B            feed is header-only (headers plus one blank line).
+                Add the Bytes: header field if needed.  Keep body if
+                control article.
+
   -c config     specify the configuration file instead of the 
                 default of ~/.pullnews (in the running user's home directory).
 
@@ -218,11 +222,11 @@
 ";
 
 
-use vars qw($opt_b $opt_c $opt_C $opt_d $opt_f $opt_F $opt_g $opt_G
+use vars qw($opt_b $opt_B $opt_c $opt_C $opt_d $opt_f $opt_F $opt_g $opt_G
             $opt_h $opt_H $opt_k $opt_l $opt_m $opt_M $opt_n
             $opt_N $opt_O $opt_p $opt_P $opt_q $opt_Q $opt_r $opt_R $opt_s
             $opt_S $opt_t $opt_T $opt_w $opt_x $opt_z $opt_Z);
-getopts("b:c:C:d:f:F:g:G:hH:k:l:m:M:nN:Op:P:qQ:r:Rs:S:t:T:w:xz:Z:") || die 
$usage;
+getopts("b:Bc:C:d:f:F:g:G:hH:k:l:m:M:nN:Op:P:qQ:r:Rs:S:t:T:w:xz:Z:") || die 
$usage;
 
 die $usage if $opt_h;
 
@@ -233,6 +237,7 @@
 my $localServer         = $opt_s || $defaultHost;
 my $localPort           = $opt_p || $defaultPort;
 my $quiet               = $opt_q;
+my $header_only         = $opt_B;
 my $watermark           = $opt_w;
 my $retries             = $opt_t || $defaultRetries;
 my $retryTime           = $opt_T || $defaultRetryTime;
@@ -697,22 +702,43 @@
             }
         }
 
-        my $article = $skip_article ? '' : $fromServer->article($i);
+        my $add_bytes_header = 0;
+        my $is_control_art = 0;
+        my $article;
+        if (not $skip_article and $header_only) {
+            $article = $fromServer->head($i);
+            if ($fromServer->code() == 221) {
+                my $has_bytes_header = 0;
+                for my $hdr (@$article) {
+                    if (lc(substr($hdr, 0, 6)) eq 'bytes:') {
+                        $has_bytes_header = 1;
+                    } elsif (lc(substr($hdr, 0, 8)) eq 'control:') {
+                        $is_control_art = 1;
+                        last;
+                    }
+                }
+                $add_bytes_header = 1 if not $has_bytes_header;
+                push @{$article}, "\n" if not $is_control_art;
+            }
+        }
+        if (not $skip_article and (not $header_only or $is_control_art or 
$add_bytes_header)) {
+            $article = $fromServer->article($i);
+        }
 
         if ($article) {
             my $msgid;
             my $xref = 0;
             my $headers = 1;
-            my $idx;
             my $line_len = 0;
-            my $tx_len = 0;              # Transmitted article length (bytes) 
(for rnews).
+            my $idx_blank_pre_body;      # Index of the blank line between 
headers/body.
+            my $tx_len = 0;              # Transmitted article length (bytes) 
(for rnews, Bytes:).
             my @header_nums_to_go = ();
             my $match_all_hdrs = 1;      # Assume no headers to match.
             my $skip_due_to_hdrs = 0;
             my %m_found_hdrs = ();
             my $curr_hdr = '';
 
-            for ($idx = 0 ; $idx < @{$article} ; $idx++) {
+            for (my $idx = 0 ; $idx < @{$article} ; $idx++) {
                 $line_len = length($article->[$idx]);
                 $len += $line_len;
                 $tx_len += $line_len;
@@ -720,9 +746,13 @@
                 $info{bytes} += $line_len;
 
                 next if not $headers;
+                $idx_blank_pre_body = $idx;
 
                 $curr_hdr = lc($1) if $article->[$idx] =~ /^([^:[:blank:]]+):/;
-                $curr_hdr = '    ' if $article->[$idx] eq "\n";
+                if ($article->[$idx] eq "\n") {
+                    $headers = 0;
+                    next;
+                }
 
                 if ($match_all_hdrs and @hdr_to_match and $article->[$idx] =~ 
/^[^[:blank:]]/) {
                     # Check header matches -m flag if new header.
@@ -798,8 +828,6 @@
                 if ($opt_x && $article->[$idx] =~ m!^xref:!i) {
                     $xref = 1;
                 }
-
-                $headers = 0 if $article->[$idx] eq "\n";
             }
             if (@hdr_to_match and (not $match_all_hdrs
                 or scalar(grep { ! /^!?#/ } @hdr_to_match) != keys 
%m_found_hdrs)) {
@@ -809,11 +837,13 @@
                 my $idx = pop @header_nums_to_go;  # Start from last, so 
numbers are not affected.
                 my $cut = join("\n\t", splice(@{$article}, $idx, 1));
                 $tx_len -= length($cut);
+                $idx_blank_pre_body--;
                 print LOG "\tDEBUGGING $i\tcut1 $cut" if $debug >= 2;
                 while ($article->[$idx] =~ /^[[:space:]](.+)/) {
                     # Folded lines.
                     my $cut = join("\n\t", splice(@{$article}, $idx, 1));
                     $tx_len -= length($cut);
+                    $idx_blank_pre_body--;
                     print LOG "\tDEBUGGING $i\tcut_ $cut" if $debug >= 2;
                 }
             }
@@ -830,10 +860,31 @@
             if ($opt_x && !$xref) {
                 warn "No Xref: header found in article, adding\n";
                 my $xref_h = "Xref: $server $group: $i\n";
-                splice(@{$article}, $idx, 0, $xref_h);
+                splice(@{$article}, $idx_blank_pre_body, 0, $xref_h);
                 $tx_len += length($xref_h);
+                $idx_blank_pre_body++;
             }
 
+            if ($add_bytes_header) {
+                # Compute the number of bytes the same way the :bytes
+                # metadata item would do.  The additional Bytes: header
+                # field is not counted, as well as headers removed by
+                # pullnews.
+                my $bytes_real_count = $tx_len + scalar(@{$article});
+                my $bytes_h = "Bytes: $bytes_real_count\n";
+                splice(@{$article}, $idx_blank_pre_body, 0, $bytes_h);
+                $tx_len += length($bytes_h);
+                $idx_blank_pre_body++;
+            }
+
+            if ($header_only and not $is_control_art and @{$article} > 
$idx_blank_pre_body+1) {
+                splice(@{$article}, $idx_blank_pre_body+1);
+                $tx_len = 0;
+                for my $line (@{$article}) {
+                    $tx_len += length($line);
+                }
+            }
+
             $pulled->{$server}->{$group}++;
 
             if ($skip_due_to_hdrs) {



------------------------------

Message: 2
Date: Sat, 30 Aug 2014 05:07:08 -0700 (PDT)
From: INN Commit <r...@isc.org>
To: inn-committ...@isc.org
Subject: INN commit: branches/2.5 (4 files)
Message-ID: <20140830120708.3bf2667...@hope.eyrie.org>

    Date: Saturday, August 30, 2014 @ 05:07:07
  Author: iulius
Revision: 9666

pullnews:  new -a flag (hashfeed ability)

Add a new feature to pullnews:  hashfeed to split feeds.  It uses MD5
and is Diablo-compatible.

Thanks to Geraint Edwards for the patch.

Modified:
  branches/2.5/doc/pod/news.pod
  branches/2.5/doc/pod/newsfeeds.pod
  branches/2.5/doc/pod/pullnews.pod
  branches/2.5/frontends/pullnews.in

-----------------------+
 doc/pod/news.pod      |    3 +-
 doc/pod/newsfeeds.pod |    3 +-
 doc/pod/pullnews.pod  |   40 +++++++++++++++++++++++++++++++++++-
 frontends/pullnews.in |   53 ++++++++++++++++++++++++++++++++++++++++++------
 4 files changed, 90 insertions(+), 9 deletions(-)

Modified: doc/pod/news.pod
===================================================================
--- doc/pod/news.pod    2014-08-30 12:06:32 UTC (rev 9665)
+++ doc/pod/news.pod    2014-08-30 12:07:07 UTC (rev 9666)
@@ -14,7 +14,8 @@
 =item *
 
 Several improvements have been contributed to B<pullnews> by Geraint
-Edwards:  the new B<-B> flag triggers header-only feeding, the B<-m>
+Edwards:  the new B<-a> flag adds the Diablo-compatible hashfeed
+ability, the new B<-B> flag triggers header-only feeding, the B<-m>
 flag now permits to remove headers matching (or not) a given regexp,
 and B<rnews> reporting is improved.
 

Modified: doc/pod/newsfeeds.pod
===================================================================
--- doc/pod/newsfeeds.pod       2014-08-30 12:06:32 UTC (rev 9665)
+++ doc/pod/newsfeeds.pod       2014-08-30 12:07:07 UTC (rev 9666)
@@ -440,7 +440,8 @@
 
 Therefore, it allows to a generate a second level of deterministic
 distribution.  Indeed, if a news server is fed C<Q1/2>, it can go on
-splitting thanks to C<Q1-3/9_4> for instance.
+splitting thanks to C<Q1-3/9_4> for instance.  Up to four levels of
+deterministic distribution can be used.
 
 The algorithm is compatible with the one used by S<Diablo 5.1> and up.
 If you want to use the legacy quickhashing method used by Diablo

Modified: doc/pod/pullnews.pod
===================================================================
--- doc/pod/pullnews.pod        2014-08-30 12:06:32 UTC (rev 9665)
+++ doc/pod/pullnews.pod        2014-08-30 12:07:07 UTC (rev 9666)
@@ -4,7 +4,8 @@
 
 =head1 SYNOPSIS
 
-B<pullnews> [B<-BhnOqRx>] [B<-b> I<fraction>] [B<-c> I<config>] [B<-C> 
I<width>]
+B<pullnews> [B<-BhnOqRx>] [B<-a> I<hashfeed>] [B<-b> I<fraction>]
+[B<-c> I<config>] [B<-C> I<width>]
 [B<-d> I<level>] [B<-f> I<fraction>] [B<-F> I<fakehop>] [B<-g> I<groups>]
 [B<-G> I<newsgroups>] [B<-H> I<headers>] [B<-k> I<checkpt>] [B<-l> I<logfile>]
 [B<-m> I<header_pats>] [B<-M> I<num>] [B<-N> I<timeout>] [B<-p> I<port>]
@@ -37,6 +38,43 @@
 
 =over 4
 
+=item B<-a> I<hashfeed>
+
+This option is a deterministic way to control the flow of articles and to
+split a feed.  The I<hashfeed> parameter must be in the form C<value/mod>
+or C<start-end/mod>.  The Message-ID of each article is hashed using MD5,
+which results in a 128-bit hash.  The lowest S<32 bits> are then taken
+by default as the hashfeed value (which is an integer).  If the hashfeed
+value modulus C<mod> plus one equals C<value> or is between C<start>
+and C<end>, B<pullnews> will feed the article.  All these numbers must
+be integers.
+
+For instance:
+
+    pullnews -a 1/2      Feeds about 50% of all articles.
+    pullnews -a 2/2      Feeds the other 50% of all articles.
+
+Another example:
+
+    pullnews -a 1-3/10   Feeds about 30% of all articles.
+    pullnews -a 4-5/10   Feeds about 20% of all articles.
+    pullnews -a 6-10/10  Feeds about 50% of all articles.
+
+You can use an extended syntax of the form C<value/mod:offset> or
+C<start-end/mod:offset> (using an underscore C<_> instead of a colon
+C<:> is also recognized).  As MD5 generates a 128-bit return value,
+it is possible to specify from which byte-offset the 32-bit integer
+used by hashfeed starts.  The default value for C<offset> is C<:0> and
+thirteen overlapping values from C<:0> to C<:12> can be used.  Only up to
+four totally independent values exist:  C<:0>, C<:4>, C<:8> and C<:12>.
+
+Therefore, it allows to a generate a second level of deterministic
+distribution.  Indeed, if B<pullnews> feeds C<1/2>, it can go on
+splitting thanks to C<1-3/9:4> for instance.  Up to four levels of
+deterministic distribution can be used.
+
+The algorithm is compatible with the one used by S<Diablo 5.1> and up.
+
 =item B<-b> I<fraction>
 
 Backtrack on server numbering reset.  Specify the proportion (C<0.0> to C<1.0>)

Modified: frontends/pullnews.in
===================================================================
--- frontends/pullnews.in       2014-08-30 12:06:32 UTC (rev 9665)
+++ frontends/pullnews.in       2014-08-30 12:07:07 UTC (rev 9666)
@@ -13,6 +13,7 @@
 #               INN project.  Major changes are:
 #
 #               January 2010:  Geraint A. Edwards added header-only feeding 
(-B);
+#               added ability to hashfeed (-a) - uses MD5 - Diablo-compatible;
 #               enabled -m to remove headers matching (or not) a given regexp;
 #               minor bug fix to rnews when -O; improved rnews reporting.
 #
@@ -114,13 +115,19 @@
 }
 
 $usage =~ s!.*/!!;
-$usage .= " [ -BhnOqRx -b fraction -c config -C width -d level
+$usage .= " [ -BhnOqRx -a hashfeed -b fraction -c config -C width -d level
         -f fraction -F fakehop -g groups -G newsgroups -H headers
         -k checkpt -l logfile -m header_pats -M num -N num
         -p port -P hop_limit -Q level -r file -s host[:port] -S num
         -t retries -T seconds -w num -z num -Z num ]
         [ upstream_host ... ]
 
+  -a hashfeed   only feed article if the MD5 hash of the Message-ID
+                matches hashfeed (where hashfeed is of the form value/mod,
+                value/mod:offset, start-end/mod, or start-end/mod:offset).
+                The algorithm used is compatible with the one used by Diablo;
+                see the pullnews man page for more details.
+
   -b fraction   backtrack on server numbering reset.  The proportion
                 (0.0 to 1.0) of a group's articles to pull when the
                 server's article number is less than our high for that
@@ -222,11 +229,11 @@
 ";
 
 
-use vars qw($opt_b $opt_B $opt_c $opt_C $opt_d $opt_f $opt_F $opt_g $opt_G
-            $opt_h $opt_H $opt_k $opt_l $opt_m $opt_M $opt_n
+use vars qw($opt_a $opt_b $opt_B $opt_c $opt_C $opt_d $opt_f $opt_F
+            $opt_g $opt_G $opt_h $opt_H $opt_k $opt_l $opt_m $opt_M $opt_n
             $opt_N $opt_O $opt_p $opt_P $opt_q $opt_Q $opt_r $opt_R $opt_s
             $opt_S $opt_t $opt_T $opt_w $opt_x $opt_z $opt_Z);
-getopts("b:Bc:C:d:f:F:g:G:hH:k:l:m:M:nN:Op:P:qQ:r:Rs:S:t:T:w:xz:Z:") || die 
$usage;
+getopts("a:b:Bc:C:d:f:F:g:G:hH:k:l:m:M:nN:Op:P:qQ:r:Rs:S:t:T:w:xz:Z:") || die 
$usage;
 
 die $usage if $opt_h;
 
@@ -237,6 +244,7 @@
 my $localServer         = $opt_s || $defaultHost;
 my $localPort           = $opt_p || $defaultPort;
 my $quiet               = $opt_q;
+my $hashfeed            = $opt_a || '';
 my $header_only         = $opt_B;
 my $watermark           = $opt_w;
 my $retries             = $opt_t || $defaultRetries;
@@ -279,6 +287,26 @@
 die "``-z'' value not an integer: $opt_z\n" if defined $opt_z and $opt_z !~ 
/^\d+$/;
 die "``-Z'' value not an integer: $opt_Z\n" if defined $opt_Z and $opt_Z !~ 
/^\d+$/;
 
+if ($hashfeed ne '') {
+    my $a_err = "``-a'' value not in format ``start[-end]/mod[:offset]'': 
$opt_a\n";
+    die $a_err if $opt_a !~ m!^(\d+)(?:-(\d+))?/(\d+)(?:[:_](\d+))?$!;
+    $hashfeed = {
+        'low'       => $1,
+        'high'      => $2 || $1,
+        'modulus'   => $3,
+        'offset'    => $4 || 0,
+    };
+    die $a_err if $hashfeed->{'low'} > $hashfeed->{'high'}
+                  or $hashfeed->{'modulus'} == 0
+                  or $hashfeed->{'offset'} > 12;
+    if ($hashfeed->{'low'} == 1 and $hashfeed->{'high'} == 
$hashfeed->{'modulus'}) {
+        $hashfeed = '';
+    } else {
+        require Digest::MD5;
+        Digest::MD5->import(qw/md5/);
+    }
+}
+
 $quiet = 1 if $quietness > 1;
 my %NNTP_Args = ();
 $NNTP_Args{'Timeout'} = $opt_N if defined $opt_N;
@@ -400,7 +428,7 @@
     print LOG "        ``+'' is an article the downstream server accepted\n";
     print LOG "        ``x'' is an article the upstream server couldn't ";
     print LOG "give out\n";
-    print LOG "        ``m'' is an article skipped due to headers (-m or 
-P)\n";
+    print LOG "        ``m'' is an article skipped due to headers (-a, -m or 
-P)\n";
     print LOG "\n";
     print LOG "Writing to rnews-format output: $rnews\n\n" if $rnews;
 }
@@ -734,7 +762,7 @@
             my $tx_len = 0;              # Transmitted article length (bytes) 
(for rnews, Bytes:).
             my @header_nums_to_go = ();
             my $match_all_hdrs = 1;      # Assume no headers to match.
-            my $skip_due_to_hdrs = 0;
+            my $skip_due_to_hdrs = 0;    # Set to 1 if triggered by -P, 2 if 
by -m, 3 if by -a.
             my %m_found_hdrs = ();
             my $curr_hdr = '';
 
@@ -885,9 +913,22 @@
                 }
             }
 
+            if (not $skip_due_to_hdrs and ref $hashfeed) {
+                my $hash_val = unpack('N', substr(md5($msgid), 
12-$hashfeed->{'offset'}, 4)) % $hashfeed->{'modulus'} + 1;
+                $skip_due_to_hdrs = 3 if $hash_val < $hashfeed->{'low'} or 
$hash_val > $hashfeed->{'high'};
+            }
+
             $pulled->{$server}->{$group}++;
 
             if ($skip_due_to_hdrs) {
+                if ($debug >= 2) { 
+                    print LOG "\tDEBUGGING $i\tskip_art: " .
+                              ($skip_due_to_hdrs == 1 ? 'hopsPath'
+                                  : ($skip_due_to_hdrs == 2 ? 'hdr'
+                                      : ($skip_due_to_hdrs == 3 ? 'hashfeed'
+                                          : 'unknown'))) .
+                              "\n";
+                }
                 print LOG "m" unless $quiet;
             } elsif ($rnews) {
                 printf RNEWS "#! rnews %d\n", $tx_len;



------------------------------

Message: 3
Date: Sat, 30 Aug 2014 05:09:31 -0700 (PDT)
From: INN Commit <r...@isc.org>
To: inn-committ...@isc.org
Subject: INN commit: branches/2.5/frontends (pullnews.in)
Message-ID: <20140830120931.c579f67...@hope.eyrie.org>

    Date: Saturday, August 30, 2014 @ 05:09:31
  Author: iulius
Revision: 9667

pullnews: improve logging when an error occurs during GROUP

Also rewrite a ternary condition to improve readability.

Patch from Geraint A. Edwards.

Modified:
  branches/2.5/frontends/pullnews.in

-------------+
 pullnews.in |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

Modified: pullnews.in
===================================================================
--- pullnews.in 2014-08-30 12:07:07 UTC (rev 9666)
+++ pullnews.in 2014-08-30 12:09:31 UTC (rev 9667)
@@ -256,7 +256,7 @@
 my $no_op               = $opt_n || 0;
 my $reader              = $opt_R || 0;
 my $quietness           = $opt_Q || 0;
-my $skip_headers        = defined $opt_H ? lc($opt_H) : '';
+my $skip_headers        = lc($opt_H || '');
 my $logFile             = '>&STDOUT';
 $logFile                = ">>$opt_l" if $opt_l;
 my @hdr_to_match        = split(/\s+/, $opt_m) if defined $opt_m;
@@ -655,7 +655,7 @@
 
     if (!defined($narticles)) { # Group command failed.
         warn sprintf ("Group command failed for $group: %s %s\n",
-                      $fromServer->code(), $fromServer->message());
+                      $fromServer->code() || 'NO_CODE', 
$fromServer->message());
         return undef;
     }
 



------------------------------

Message: 4
Date: Sat, 30 Aug 2014 05:13:47 -0700 (PDT)
From: INN Commit <r...@isc.org>
To: inn-committ...@isc.org
Subject: INN commit: branches/2.5/doc/man (libinn.3)
Message-ID: <20140830121347.3352267...@hope.eyrie.org>

    Date: Saturday, August 30, 2014 @ 05:13:46
  Author: iulius
Revision: 9668

libinn documentation:  update the name of the fdflag functions

Modified:
  branches/2.5/doc/man/libinn.3

----------+
 libinn.3 |    6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

Modified: libinn.3
===================================================================
--- libinn.3    2014-08-30 12:09:31 UTC (rev 9667)
+++ libinn.3    2014-08-30 12:13:46 UTC (rev 9668)
@@ -232,7 +232,7 @@
 or
 .IR CAlistopen .
 .PP
-.I CloseOnExec
+.I close_on_exec
 can make a descriptor ``close-on-exec'' so that it is not shared
 with any child processes.
 If the flag is non-zero, the file is so marked; if zero, the ``close-on-exec''
@@ -277,7 +277,7 @@
 releases any state maintained in the handle and returns an allocated copy
 of the text that should be used for the Distribution header.
 .PP
-.I SetNonBlocking
+.I nonblocking
 enables (if
 .I flag
 is non-zero) or disables (if
@@ -463,7 +463,7 @@
     Fatal("Can't open active file");
 
 /* Don't pass the file on to our children. */
-CloseOnExec(fileno(F), 1);
+close_on_exec(fileno(F), 1);
 
 /* Make a local copy. */
 p = ReadInDescriptor(fileno(F), (struct stat *)NULL);



------------------------------

_______________________________________________
inn-committers mailing list
inn-committers@lists.isc.org
https://lists.isc.org/mailman/listinfo/inn-committers

End of inn-committers Digest, Vol 66, Issue 9
*********************************************

Reply via email to