io_splice 4.3.0 → 4.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
 - data/.document +0 -2
 - data/.gitignore +1 -2
 - data/{.wrongdoc.yml → .olddoc.yml} +3 -1
 - data/GIT-VERSION-GEN +1 -1
 - data/GNUmakefile +0 -5
 - data/README +39 -7
 - data/archive/.gitignore +3 -0
 - data/archive/slrnpull.conf +4 -0
 - data/ext/io_splice/io_splice_ext.c +10 -10
 - data/io_splice.gemspec +6 -9
 - data/lib/io/splice.rb +1 -1
 - data/pkg.mk +28 -39
 - metadata +32 -57
 - data/Rakefile +0 -33
 
    
        checksums.yaml
    ADDED
    
    | 
         @@ -0,0 +1,7 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            ---
         
     | 
| 
      
 2 
     | 
    
         
            +
            SHA1:
         
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: dcadc5a4c0bc52553768f5d4571f3630668e841a
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 3f3b773ece8adb9a746e315145a3b75fb21e4fed
         
     | 
| 
      
 5 
     | 
    
         
            +
            SHA512:
         
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 500904b87fe0360f1860968fe9d0997568f7f5918685f763419a2097d229a1aa2cec521809c5382ac8404cdf2804105de179976d0ebc48a622c8c5669d1ea2d4
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 87019a4a269b7bda7873921697bf33d0017bbf4f73c7784670066486fcb426205300253cab147fea77069d8e13d0cbd7319b378f9f05f58d6ac3b7176b5b72e7
         
     | 
    
        data/.document
    CHANGED
    
    
    
        data/.gitignore
    CHANGED
    
    
| 
         @@ -2,4 +2,6 @@ 
     | 
|
| 
       2 
2 
     | 
    
         
             
            cgit_url: http://bogomips.org/ruby_io_splice.git
         
     | 
| 
       3 
3 
     | 
    
         
             
            git_url: git://bogomips.org/ruby_io_splice.git
         
     | 
| 
       4 
4 
     | 
    
         
             
            rdoc_url: http://bogomips.org/ruby_io_splice/
         
     | 
| 
       5 
     | 
    
         
            -
             
     | 
| 
      
 5 
     | 
    
         
            +
            public_email: ruby-io-splice@bogomips.org
         
     | 
| 
      
 6 
     | 
    
         
            +
            private_email: bofh@bogomips.org
         
     | 
| 
      
 7 
     | 
    
         
            +
            ml_url: http://bogomips.org/ruby-io-splice/
         
     | 
    
        data/GIT-VERSION-GEN
    CHANGED
    
    
    
        data/GNUmakefile
    CHANGED
    
    | 
         @@ -1,13 +1,8 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            all::
         
     | 
| 
       2 
2 
     | 
    
         
             
            RCOV = rcov
         
     | 
| 
       3 
3 
     | 
    
         
             
            RSYNC_DEST := bogomips.org:/srv/bogomips/ruby_io_splice
         
     | 
| 
       4 
     | 
    
         
            -
            rfproject := qrp
         
     | 
| 
       5 
4 
     | 
    
         
             
            rfpackage := io_splice
         
     | 
| 
       6 
5 
     | 
    
         
             
            include pkg.mk
         
     | 
| 
       7 
     | 
    
         
            -
            ifneq ($(VERSION),)
         
     | 
| 
       8 
     | 
    
         
            -
            release::
         
     | 
| 
       9 
     | 
    
         
            -
            	$(RAKE) publish_news VERSION=$(VERSION)
         
     | 
| 
       10 
     | 
    
         
            -
            endif
         
     | 
| 
       11 
6 
     | 
    
         
             
            rcov: build
         
     | 
| 
       12 
7 
     | 
    
         
             
            	$(RCOV) -I lib:ext/io_splice $(test_unit)
         
     | 
| 
       13 
8 
     | 
    
         
             
            .PHONY: rcov
         
     | 
    
        data/README
    CHANGED
    
    | 
         @@ -87,14 +87,46 @@ don't email the git mailing list or maintainer with io_splice patches. 
     | 
|
| 
       87 
87 
     | 
    
         
             
            == Contact
         
     | 
| 
       88 
88 
     | 
    
         | 
| 
       89 
89 
     | 
    
         
             
            All feedback (bug reports, user/development discussion, patches, pull
         
     | 
| 
       90 
     | 
    
         
            -
            requests) go to the mailing list: mailto:ruby 
     | 
| 
      
 90 
     | 
    
         
            +
            requests) go to the mailing list: mailto:ruby-io-splice@bogomips.org
         
     | 
| 
      
 91 
     | 
    
         
            +
             
     | 
| 
      
 92 
     | 
    
         
            +
            Send patches (from "git format-patch") with "git send-email" and do not
         
     | 
| 
      
 93 
     | 
    
         
            +
            send HTML email or attachments.  We are very responsive to email and you
         
     | 
| 
      
 94 
     | 
    
         
            +
            will usually get a response within 24-72 hours.
         
     | 
| 
       91 
95 
     | 
    
         | 
| 
       92 
96 
     | 
    
         
             
            == Mailing List Archives
         
     | 
| 
       93 
97 
     | 
    
         | 
| 
       94 
     | 
    
         
            -
             
     | 
| 
       95 
     | 
    
         
            -
             
     | 
| 
       96 
     | 
    
         
            -
            { 
     | 
| 
       97 
     | 
    
         
            -
             
     | 
| 
      
 98 
     | 
    
         
            +
            We operate a {public-inbox}[http://public-inbox.org/] which
         
     | 
| 
      
 99 
     | 
    
         
            +
            feeds the mailing list.  You may subscribe either using
         
     | 
| 
      
 100 
     | 
    
         
            +
            {ssoma}[http://ssoma.public-inbox.org/] or by sending a mail
         
     | 
| 
      
 101 
     | 
    
         
            +
            to mailto:ruby-io-splice+subscribe@bogomips.org
         
     | 
| 
      
 102 
     | 
    
         
            +
             
     | 
| 
      
 103 
     | 
    
         
            +
            ssoma is a mail archiver/fetcher using git.  It operates in a similar
         
     | 
| 
      
 104 
     | 
    
         
            +
            fashion to tools such as slrnpull, fetchmail, or getmail.  ssoma
         
     | 
| 
      
 105 
     | 
    
         
            +
            subscription instructions:
         
     | 
| 
      
 106 
     | 
    
         
            +
             
     | 
| 
      
 107 
     | 
    
         
            +
                URL=git://bogomips.org/ruby-io-splice
         
     | 
| 
      
 108 
     | 
    
         
            +
                LISTNAME=ruby-io-splice
         
     | 
| 
      
 109 
     | 
    
         
            +
             
     | 
| 
      
 110 
     | 
    
         
            +
                # to initialize a maildir (this may be a new or existing maildir,
         
     | 
| 
      
 111 
     | 
    
         
            +
                # ssoma will not touch existing messages)
         
     | 
| 
      
 112 
     | 
    
         
            +
                # If you prefer mbox, use mbox:/path/to/mbox as the last argument
         
     | 
| 
      
 113 
     | 
    
         
            +
                # You may also use imap://$MAILSERVER/INBOX for an IMAP account
         
     | 
| 
      
 114 
     | 
    
         
            +
                # or imaps:// for an IMAPS account, as well.
         
     | 
| 
      
 115 
     | 
    
         
            +
                ssoma add $LISTNAME $URL maildir:/path/to/maildir
         
     | 
| 
      
 116 
     | 
    
         
            +
             
     | 
| 
      
 117 
     | 
    
         
            +
                # read with your favorite MUA (only using mutt as an example)
         
     | 
| 
      
 118 
     | 
    
         
            +
                mutt -f /path/to/maildir # (or /path/to/mbox)
         
     | 
| 
      
 119 
     | 
    
         
            +
             
     | 
| 
      
 120 
     | 
    
         
            +
                # to keep your mbox or maildir up-to-date, periodically run:
         
     | 
| 
      
 121 
     | 
    
         
            +
                ssoma sync $LISTNAME
         
     | 
| 
      
 122 
     | 
    
         
            +
             
     | 
| 
      
 123 
     | 
    
         
            +
                # your MUA may modify and delete messages from the maildir or mbox,
         
     | 
| 
      
 124 
     | 
    
         
            +
                # this does not affect ssoma functionality at all
         
     | 
| 
      
 125 
     | 
    
         
            +
             
     | 
| 
      
 126 
     | 
    
         
            +
                # to sync all your ssoma subscriptions
         
     | 
| 
      
 127 
     | 
    
         
            +
                ssoma sync
         
     | 
| 
      
 128 
     | 
    
         
            +
             
     | 
| 
      
 129 
     | 
    
         
            +
                # You may wish to sync in your cronjob
         
     | 
| 
      
 130 
     | 
    
         
            +
                ssoma sync --cron
         
     | 
| 
       98 
131 
     | 
    
         | 
| 
       99 
     | 
    
         
            -
            *  
     | 
| 
       100 
     | 
    
         
            -
            * http://bogomips.org/ruby_io_splice/archives/
         
     | 
| 
      
 132 
     | 
    
         
            +
            * http://bogomips.org/ruby-io-splice/
         
     | 
    
        data/archive/.gitignore
    ADDED
    
    
| 
         @@ -125,8 +125,8 @@ static void * WITHOUT_GVL(rb_blocking_function_t *func, void *data1, 
     | 
|
| 
       125 
125 
     | 
    
         | 
| 
       126 
126 
     | 
    
         
             
            struct splice_args {
         
     | 
| 
       127 
127 
     | 
    
         
             
            	int fd_in;
         
     | 
| 
       128 
     | 
    
         
            -
            	off_t *off_in;
         
     | 
| 
       129 
128 
     | 
    
         
             
            	int fd_out;
         
     | 
| 
      
 129 
     | 
    
         
            +
            	off_t *off_in;
         
     | 
| 
       130 
130 
     | 
    
         
             
            	off_t *off_out;
         
     | 
| 
       131 
131 
     | 
    
         
             
            	size_t len;
         
     | 
| 
       132 
132 
     | 
    
         
             
            	unsigned flags;
         
     | 
| 
         @@ -167,7 +167,7 @@ static ssize_t do_splice(int argc, VALUE *argv, unsigned dflags) 
     | 
|
| 
       167 
167 
     | 
    
         
             
            		a.fd_in = check_fileno(io_in);
         
     | 
| 
       168 
168 
     | 
    
         
             
            		a.fd_out = check_fileno(io_out);
         
     | 
| 
       169 
169 
     | 
    
         
             
            		bytes = (ssize_t)io_run(nogvl_splice, &a);
         
     | 
| 
       170 
     | 
    
         
            -
            		if (bytes  
     | 
| 
      
 170 
     | 
    
         
            +
            		if (bytes < 0) {
         
     | 
| 
       171 
171 
     | 
    
         
             
            			if (errno == EINTR)
         
     | 
| 
       172 
172 
     | 
    
         
             
            				continue;
         
     | 
| 
       173 
173 
     | 
    
         
             
            			if (waitall && errno == EAGAIN) {
         
     | 
| 
         @@ -238,7 +238,7 @@ static VALUE my_splice(int argc, VALUE *argv, VALUE self) 
     | 
|
| 
       238 
238 
     | 
    
         | 
| 
       239 
239 
     | 
    
         
             
            	if (n == 0)
         
     | 
| 
       240 
240 
     | 
    
         
             
            		rb_eof_error();
         
     | 
| 
       241 
     | 
    
         
            -
            	if (n  
     | 
| 
      
 241 
     | 
    
         
            +
            	if (n < 0)
         
     | 
| 
       242 
242 
     | 
    
         
             
            		rb_sys_fail("splice");
         
     | 
| 
       243 
243 
     | 
    
         
             
            	return SSIZET2NUM(n);
         
     | 
| 
       244 
244 
     | 
    
         
             
            }
         
     | 
| 
         @@ -264,7 +264,7 @@ static VALUE trysplice(int argc, VALUE *argv, VALUE self) 
     | 
|
| 
       264 
264 
     | 
    
         | 
| 
       265 
265 
     | 
    
         
             
            	if (n == 0)
         
     | 
| 
       266 
266 
     | 
    
         
             
            		return Qnil;
         
     | 
| 
       267 
     | 
    
         
            -
            	if (n  
     | 
| 
      
 267 
     | 
    
         
            +
            	if (n < 0) {
         
     | 
| 
       268 
268 
     | 
    
         
             
            		if (errno == EAGAIN)
         
     | 
| 
       269 
269 
     | 
    
         
             
            			return sym_EAGAIN;
         
     | 
| 
       270 
270 
     | 
    
         
             
            		rb_sys_fail("splice");
         
     | 
| 
         @@ -309,7 +309,7 @@ static ssize_t do_tee(int argc, VALUE *argv, unsigned dflags) 
     | 
|
| 
       309 
309 
     | 
    
         
             
            		a.fd_in = check_fileno(io_in);
         
     | 
| 
       310 
310 
     | 
    
         
             
            		a.fd_out = check_fileno(io_out);
         
     | 
| 
       311 
311 
     | 
    
         
             
            		bytes = (ssize_t)io_run(nogvl_tee, &a);
         
     | 
| 
       312 
     | 
    
         
            -
            		if (bytes  
     | 
| 
      
 312 
     | 
    
         
            +
            		if (bytes < 0) {
         
     | 
| 
       313 
313 
     | 
    
         
             
            			if (errno == EINTR)
         
     | 
| 
       314 
314 
     | 
    
         
             
            				continue;
         
     | 
| 
       315 
315 
     | 
    
         
             
            			if (waitall && errno == EAGAIN) {
         
     | 
| 
         @@ -366,7 +366,7 @@ static VALUE my_tee(int argc, VALUE *argv, VALUE self) 
     | 
|
| 
       366 
366 
     | 
    
         | 
| 
       367 
367 
     | 
    
         
             
            	if (n == 0)
         
     | 
| 
       368 
368 
     | 
    
         
             
            		rb_eof_error();
         
     | 
| 
       369 
     | 
    
         
            -
            	if (n  
     | 
| 
      
 369 
     | 
    
         
            +
            	if (n < 0)
         
     | 
| 
       370 
370 
     | 
    
         
             
            		rb_sys_fail("tee");
         
     | 
| 
       371 
371 
     | 
    
         | 
| 
       372 
372 
     | 
    
         
             
            	return SSIZET2NUM(n);
         
     | 
| 
         @@ -391,7 +391,7 @@ static VALUE trytee(int argc, VALUE *argv, VALUE self) 
     | 
|
| 
       391 
391 
     | 
    
         | 
| 
       392 
392 
     | 
    
         
             
            	if (n == 0)
         
     | 
| 
       393 
393 
     | 
    
         
             
            		return Qnil;
         
     | 
| 
       394 
     | 
    
         
            -
            	if (n  
     | 
| 
      
 394 
     | 
    
         
            +
            	if (n < 0) {
         
     | 
| 
       395 
395 
     | 
    
         
             
            		if (errno == EAGAIN)
         
     | 
| 
       396 
396 
     | 
    
         
             
            			return sym_EAGAIN;
         
     | 
| 
       397 
397 
     | 
    
         
             
            		rb_sys_fail("tee");
         
     | 
| 
         @@ -402,9 +402,9 @@ static VALUE trytee(int argc, VALUE *argv, VALUE self) 
     | 
|
| 
       402 
402 
     | 
    
         | 
| 
       403 
403 
     | 
    
         
             
            struct vmsplice_args {
         
     | 
| 
       404 
404 
     | 
    
         
             
            	int fd;
         
     | 
| 
      
 405 
     | 
    
         
            +
            	unsigned flags;
         
     | 
| 
       405 
406 
     | 
    
         
             
            	struct iovec *iov;
         
     | 
| 
       406 
407 
     | 
    
         
             
            	unsigned long nr_segs;
         
     | 
| 
       407 
     | 
    
         
            -
            	unsigned flags;
         
     | 
| 
       408 
408 
     | 
    
         
             
            };
         
     | 
| 
       409 
409 
     | 
    
         | 
| 
       410 
410 
     | 
    
         
             
            static void * nogvl_vmsplice(void *ptr)
         
     | 
| 
         @@ -476,7 +476,7 @@ static void advance_vmsplice_args(struct vmsplice_args *a, long n) 
     | 
|
| 
       476 
476 
     | 
    
         
             
             * This may allow the kernel to avoid data copies in some cases.
         
     | 
| 
       477 
477 
     | 
    
         
             
             * but is (probably) of limited usefulness in Ruby.  If you have
         
     | 
| 
       478 
478 
     | 
    
         
             
             * use cases or ideas for making this more useful for Ruby users,
         
     | 
| 
       479 
     | 
    
         
            -
             * please tell us at ruby 
     | 
| 
      
 479 
     | 
    
         
            +
             * please tell us at ruby-io-splice@bogomips.org!
         
     | 
| 
       480 
480 
     | 
    
         
             
             *
         
     | 
| 
       481 
481 
     | 
    
         
             
             * Also consider the "sendfile" RubyGem or IO.copy_stream in Ruby 1.9
         
     | 
| 
       482 
482 
     | 
    
         
             
             * if you want to do zero-copy file transfers to pipes or sockets.  As
         
     | 
| 
         @@ -520,7 +520,7 @@ static VALUE my_vmsplice(int argc, VALUE * argv, VALUE self) 
     | 
|
| 
       520 
520 
     | 
    
         
             
            		a.fd = check_fileno(io);
         
     | 
| 
       521 
521 
     | 
    
         
             
            		n = (ssize_t)io_run(nogvl_vmsplice, &a);
         
     | 
| 
       522 
522 
     | 
    
         | 
| 
       523 
     | 
    
         
            -
            		if (n  
     | 
| 
      
 523 
     | 
    
         
            +
            		if (n < 0) {
         
     | 
| 
       524 
524 
     | 
    
         
             
            			if (errno == EAGAIN) {
         
     | 
| 
       525 
525 
     | 
    
         
             
            				if (a.flags & SPLICE_F_NONBLOCK)
         
     | 
| 
       526 
526 
     | 
    
         
             
            					rb_sys_fail("vmsplice");
         
     | 
    
        data/io_splice.gemspec
    CHANGED
    
    | 
         @@ -1,26 +1,23 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            # -*- encoding: binary -*-
         
     | 
| 
       2 
2 
     | 
    
         
             
            ENV["VERSION"] or abort "VERSION= must be specified"
         
     | 
| 
       3 
3 
     | 
    
         
             
            manifest = File.readlines('.manifest').map! { |x| x.chomp! }
         
     | 
| 
       4 
     | 
    
         
            -
            require ' 
     | 
| 
       5 
     | 
    
         
            -
            extend  
     | 
| 
      
 4 
     | 
    
         
            +
            require 'olddoc'
         
     | 
| 
      
 5 
     | 
    
         
            +
            extend Olddoc::Gemspec
         
     | 
| 
       6 
6 
     | 
    
         
             
            name, summary, title = readme_metadata
         
     | 
| 
       7 
7 
     | 
    
         | 
| 
       8 
8 
     | 
    
         
             
            Gem::Specification.new do |s|
         
     | 
| 
       9 
9 
     | 
    
         
             
              s.name = %q{io_splice}
         
     | 
| 
       10 
10 
     | 
    
         
             
              s.version = ENV["VERSION"].dup
         
     | 
| 
       11 
11 
     | 
    
         
             
              s.authors = ["Ruby io_splice hackers"]
         
     | 
| 
       12 
     | 
    
         
            -
              s.date = Time.now.utc.strftime('%Y-%m-%d')
         
     | 
| 
       13 
12 
     | 
    
         
             
              s.description = readme_description
         
     | 
| 
       14 
     | 
    
         
            -
              s.email = %q{ruby 
     | 
| 
      
 13 
     | 
    
         
            +
              s.email = %q{ruby-io-splice@bogomips.org}
         
     | 
| 
       15 
14 
     | 
    
         
             
              s.extensions = %w(ext/io_splice/extconf.rb)
         
     | 
| 
       16 
15 
     | 
    
         
             
              s.extra_rdoc_files = extra_rdoc_files(manifest)
         
     | 
| 
       17 
16 
     | 
    
         
             
              s.files = manifest
         
     | 
| 
       18 
     | 
    
         
            -
              s.homepage =  
     | 
| 
      
 17 
     | 
    
         
            +
              s.homepage = Olddoc.config['rdoc_url']
         
     | 
| 
       19 
18 
     | 
    
         
             
              s.summary = summary
         
     | 
| 
       20 
     | 
    
         
            -
              s.rdoc_options = rdoc_options
         
     | 
| 
       21 
     | 
    
         
            -
              s.rubyforge_project = %q{qrp}
         
     | 
| 
       22 
19 
     | 
    
         
             
              s.test_files = Dir['test/test_*.rb']
         
     | 
| 
       23 
     | 
    
         
            -
              s.add_development_dependency(' 
     | 
| 
      
 20 
     | 
    
         
            +
              s.add_development_dependency('olddoc', '~> 1.0')
         
     | 
| 
       24 
21 
     | 
    
         | 
| 
       25 
     | 
    
         
            -
               
     | 
| 
      
 22 
     | 
    
         
            +
              s.licenses = %w(LGPL) # accessor not compatible with older RubyGems
         
     | 
| 
       26 
23 
     | 
    
         
             
            end
         
     | 
    
        data/lib/io/splice.rb
    CHANGED
    
    
    
        data/pkg.mk
    CHANGED
    
    | 
         @@ -1,7 +1,8 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            RUBY = ruby
         
     | 
| 
       2 
2 
     | 
    
         
             
            RAKE = rake
         
     | 
| 
       3 
3 
     | 
    
         
             
            RSYNC = rsync
         
     | 
| 
       4 
     | 
    
         
            -
             
     | 
| 
      
 4 
     | 
    
         
            +
            OLDDOC = olddoc
         
     | 
| 
      
 5 
     | 
    
         
            +
            RDOC = rdoc
         
     | 
| 
       5 
6 
     | 
    
         | 
| 
       6 
7 
     | 
    
         
             
            GIT-VERSION-FILE: .FORCE-GIT-VERSION-FILE
         
     | 
| 
       7 
8 
     | 
    
         
             
            	@./GIT-VERSION-GEN
         
     | 
| 
         @@ -44,44 +45,39 @@ $(ext_dl): $(ext_src) $(ext_pfx_src) $(ext_pfx)/$(ext)/Makefile 
     | 
|
| 
       44 
45 
     | 
    
         
             
            	$(MAKE) -C $(@D)
         
     | 
| 
       45 
46 
     | 
    
         
             
            lib := $(lib):$(ext_pfx)/$(ext)
         
     | 
| 
       46 
47 
     | 
    
         
             
            build: $(ext_dl)
         
     | 
| 
      
 48 
     | 
    
         
            +
            else
         
     | 
| 
      
 49 
     | 
    
         
            +
            build:
         
     | 
| 
       47 
50 
     | 
    
         
             
            endif
         
     | 
| 
       48 
51 
     | 
    
         | 
| 
       49 
     | 
    
         
            -
            pkg_extra  
     | 
| 
       50 
     | 
    
         
            -
             
     | 
| 
       51 
     | 
    
         
            -
            	$( 
     | 
| 
      
 52 
     | 
    
         
            +
            pkg_extra += GIT-VERSION-FILE NEWS LATEST
         
     | 
| 
      
 53 
     | 
    
         
            +
            NEWS: GIT-VERSION-FILE .olddoc.yml
         
     | 
| 
      
 54 
     | 
    
         
            +
            	$(OLDDOC) prepare
         
     | 
| 
      
 55 
     | 
    
         
            +
            LATEST: NEWS
         
     | 
| 
       52 
56 
     | 
    
         | 
| 
       53 
57 
     | 
    
         
             
            manifest:
         
     | 
| 
       54 
58 
     | 
    
         
             
            	$(RM) .manifest
         
     | 
| 
       55 
59 
     | 
    
         
             
            	$(MAKE) .manifest
         
     | 
| 
       56 
60 
     | 
    
         | 
| 
       57 
     | 
    
         
            -
            .manifest:  
     | 
| 
      
 61 
     | 
    
         
            +
            .manifest: $(pkg_extra)
         
     | 
| 
       58 
62 
     | 
    
         
             
            	(git ls-files && for i in $@ $(pkg_extra); do echo $$i; done) | \
         
     | 
| 
       59 
63 
     | 
    
         
             
            		LC_ALL=C sort > $@+
         
     | 
| 
       60 
64 
     | 
    
         
             
            	cmp $@+ $@ || mv $@+ $@
         
     | 
| 
       61 
65 
     | 
    
         
             
            	$(RM) $@+
         
     | 
| 
       62 
66 
     | 
    
         | 
| 
       63 
     | 
    
         
            -
            doc:: .document . 
     | 
| 
       64 
     | 
    
         
            -
            	find lib -type f -name '*.rbc' -exec rm -f '{}' ';'
         
     | 
| 
      
 67 
     | 
    
         
            +
            doc:: .document .olddoc.yml $(pkg_extra) $(PLACEHOLDERS)
         
     | 
| 
      
 68 
     | 
    
         
            +
            	-find lib -type f -name '*.rbc' -exec rm -f '{}' ';'
         
     | 
| 
       65 
69 
     | 
    
         
             
            	-find ext -type f -name '*.rbc' -exec rm -f '{}' ';'
         
     | 
| 
       66 
70 
     | 
    
         
             
            	$(RM) -r doc
         
     | 
| 
       67 
     | 
    
         
            -
            	$( 
     | 
| 
      
 71 
     | 
    
         
            +
            	$(RDOC) -f oldweb
         
     | 
| 
      
 72 
     | 
    
         
            +
            	$(OLDDOC) merge
         
     | 
| 
       68 
73 
     | 
    
         
             
            	install -m644 COPYING doc/COPYING
         
     | 
| 
       69 
     | 
    
         
            -
            	install -m644  
     | 
| 
      
 74 
     | 
    
         
            +
            	install -m644 NEWS doc/NEWS
         
     | 
| 
      
 75 
     | 
    
         
            +
            	install -m644 NEWS.atom.xml doc/NEWS.atom.xml
         
     | 
| 
      
 76 
     | 
    
         
            +
            	install -m644 $(shell LC_ALL=C grep '^[A-Z]' .document) doc/
         
     | 
| 
       70 
77 
     | 
    
         | 
| 
       71 
78 
     | 
    
         
             
            ifneq ($(VERSION),)
         
     | 
| 
       72 
79 
     | 
    
         
             
            pkggem := pkg/$(rfpackage)-$(VERSION).gem
         
     | 
| 
       73 
80 
     | 
    
         
             
            pkgtgz := pkg/$(rfpackage)-$(VERSION).tgz
         
     | 
| 
       74 
     | 
    
         
            -
            release_notes := release_notes-$(VERSION)
         
     | 
| 
       75 
     | 
    
         
            -
            release_changes := release_changes-$(VERSION)
         
     | 
| 
       76 
     | 
    
         
            -
             
     | 
| 
       77 
     | 
    
         
            -
            release-notes: $(release_notes)
         
     | 
| 
       78 
     | 
    
         
            -
            release-changes: $(release_changes)
         
     | 
| 
       79 
     | 
    
         
            -
            $(release_changes):
         
     | 
| 
       80 
     | 
    
         
            -
            	$(WRONGDOC) release_changes > $@+
         
     | 
| 
       81 
     | 
    
         
            -
            	$(VISUAL) $@+ && test -s $@+ && mv $@+ $@
         
     | 
| 
       82 
     | 
    
         
            -
            $(release_notes):
         
     | 
| 
       83 
     | 
    
         
            -
            	$(WRONGDOC) release_notes > $@+
         
     | 
| 
       84 
     | 
    
         
            -
            	$(VISUAL) $@+ && test -s $@+ && mv $@+ $@
         
     | 
| 
       85 
81 
     | 
    
         | 
| 
       86 
82 
     | 
    
         
             
            # ensures we're actually on the tagged $(VERSION), only used for release
         
     | 
| 
       87 
83 
     | 
    
         
             
            verify:
         
     | 
| 
         @@ -117,23 +113,9 @@ $(pkgtgz): manifest fix-perms 
     | 
|
| 
       117 
113 
     | 
    
         | 
| 
       118 
114 
     | 
    
         
             
            package: $(pkgtgz) $(pkggem)
         
     | 
| 
       119 
115 
     | 
    
         | 
| 
       120 
     | 
    
         
            -
             
     | 
| 
       121 
     | 
    
         
            -
            	# make tgz release on RubyForge
         
     | 
| 
       122 
     | 
    
         
            -
            	@echo rubyforge add_release -f \
         
     | 
| 
       123 
     | 
    
         
            -
            	  -n $(release_notes) -a $(release_changes) \
         
     | 
| 
       124 
     | 
    
         
            -
            	  $(rfproject) $(rfpackage) $(VERSION) $(pkgtgz)
         
     | 
| 
       125 
     | 
    
         
            -
            	@echo gem push $(pkggem)
         
     | 
| 
       126 
     | 
    
         
            -
            	@echo rubyforge add_file \
         
     | 
| 
       127 
     | 
    
         
            -
            	  $(rfproject) $(rfpackage) $(VERSION) $(pkggem)
         
     | 
| 
       128 
     | 
    
         
            -
            release:: verify package $(release_notes) $(release_changes)
         
     | 
| 
       129 
     | 
    
         
            -
            	# make tgz release on RubyForge
         
     | 
| 
       130 
     | 
    
         
            -
            	rubyforge add_release -f -n $(release_notes) -a $(release_changes) \
         
     | 
| 
       131 
     | 
    
         
            -
            	  $(rfproject) $(rfpackage) $(VERSION) $(pkgtgz)
         
     | 
| 
      
 116 
     | 
    
         
            +
            release:: verify package
         
     | 
| 
       132 
117 
     | 
    
         
             
            	# push gem to RubyGems.org
         
     | 
| 
       133 
118 
     | 
    
         
             
            	gem push $(pkggem)
         
     | 
| 
       134 
     | 
    
         
            -
            	# in case of gem downloads from RubyForge releases page
         
     | 
| 
       135 
     | 
    
         
            -
            	rubyforge add_file \
         
     | 
| 
       136 
     | 
    
         
            -
            	  $(rfproject) $(rfpackage) $(VERSION) $(pkggem)
         
     | 
| 
       137 
119 
     | 
    
         
             
            else
         
     | 
| 
       138 
120 
     | 
    
         
             
            gem install-gem: GIT-VERSION-FILE
         
     | 
| 
       139 
121 
     | 
    
         
             
            	$(MAKE) $@ VERSION=$(GIT_VERSION)
         
     | 
| 
         @@ -144,15 +126,13 @@ test_units := $(wildcard test/test_*.rb) 
     | 
|
| 
       144 
126 
     | 
    
         
             
            test: test-unit
         
     | 
| 
       145 
127 
     | 
    
         
             
            test-unit: $(test_units)
         
     | 
| 
       146 
128 
     | 
    
         
             
            $(test_units): build
         
     | 
| 
       147 
     | 
    
         
            -
            	$(RUBY) -I $(lib) $@
         
     | 
| 
      
 129 
     | 
    
         
            +
            	$(RUBY) -I $(lib) $@ $(RUBY_TEST_OPTS)
         
     | 
| 
       148 
130 
     | 
    
         | 
| 
       149 
131 
     | 
    
         
             
            # this requires GNU coreutils variants
         
     | 
| 
       150 
132 
     | 
    
         
             
            ifneq ($(RSYNC_DEST),)
         
     | 
| 
       151 
133 
     | 
    
         
             
            publish_doc:
         
     | 
| 
       152 
134 
     | 
    
         
             
            	-git set-file-times
         
     | 
| 
       153 
135 
     | 
    
         
             
            	$(MAKE) doc
         
     | 
| 
       154 
     | 
    
         
            -
            	find doc/images -type f | \
         
     | 
| 
       155 
     | 
    
         
            -
            		TZ=UTC xargs touch -d '1970-01-01 00:00:06' doc/rdoc.css
         
     | 
| 
       156 
136 
     | 
    
         
             
            	$(MAKE) doc_gz
         
     | 
| 
       157 
137 
     | 
    
         
             
            	$(RSYNC) -av doc/ $(RSYNC_DEST)/
         
     | 
| 
       158 
138 
     | 
    
         
             
            	git ls-files | xargs touch
         
     | 
| 
         @@ -160,9 +140,18 @@ endif 
     | 
|
| 
       160 
140 
     | 
    
         | 
| 
       161 
141 
     | 
    
         
             
            # Create gzip variants of the same timestamp as the original so nginx
         
     | 
| 
       162 
142 
     | 
    
         
             
            # "gzip_static on" can serve the gzipped versions directly.
         
     | 
| 
       163 
     | 
    
         
            -
            doc_gz: docs = $(shell find doc -type f ! -regex ' 
     | 
| 
      
 143 
     | 
    
         
            +
            doc_gz: docs = $(shell find doc -type f ! -regex '^.*\.gz$$')
         
     | 
| 
       164 
144 
     | 
    
         
             
            doc_gz:
         
     | 
| 
       165 
145 
     | 
    
         
             
            	for i in $(docs); do \
         
     | 
| 
       166 
146 
     | 
    
         
             
            	  gzip --rsyncable -9 < $$i > $$i.gz; touch -r $$i $$i.gz; done
         
     | 
| 
      
 147 
     | 
    
         
            +
            check-warnings:
         
     | 
| 
      
 148 
     | 
    
         
            +
            	@(for i in $$(git ls-files '*.rb'| grep -v '^setup\.rb$$'); \
         
     | 
| 
      
 149 
     | 
    
         
            +
            	  do $(RUBY) -d -W2 -c $$i; done) | grep -v '^Syntax OK$$' || :
         
     | 
| 
      
 150 
     | 
    
         
            +
             
     | 
| 
      
 151 
     | 
    
         
            +
            ifneq ($(PLACEHOLDERS),)
         
     | 
| 
      
 152 
     | 
    
         
            +
            $(PLACEHOLDERS):
         
     | 
| 
      
 153 
     | 
    
         
            +
            	echo olddoc_placeholder > $@
         
     | 
| 
      
 154 
     | 
    
         
            +
            endif
         
     | 
| 
       167 
155 
     | 
    
         | 
| 
       168 
156 
     | 
    
         
             
            .PHONY: all .FORCE-GIT-VERSION-FILE doc test $(test_units) manifest
         
     | 
| 
      
 157 
     | 
    
         
            +
            .PHONY: check-warnings
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,69 +1,51 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
     | 
    
         
            -
            name:  
     | 
| 
       3 
     | 
    
         
            -
              aW9fc3BsaWNl
         
     | 
| 
      
 2 
     | 
    
         
            +
            name: io_splice
         
     | 
| 
       4 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       5 
     | 
    
         
            -
              version: 4. 
     | 
| 
       6 
     | 
    
         
            -
              prerelease: 
         
     | 
| 
      
 4 
     | 
    
         
            +
              version: 4.4.0
         
     | 
| 
       7 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       8 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       9 
     | 
    
         
            -
            -  
     | 
| 
       10 
     | 
    
         
            -
              UnVieSBpb19zcGxpY2UgaGFja2Vycw==
         
     | 
| 
      
 7 
     | 
    
         
            +
            - Ruby io_splice hackers
         
     | 
| 
       11 
8 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       12 
9 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       13 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       14 
     | 
    
         
            -
            date:  
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2015-01-11 00:00:00.000000000 Z
         
     | 
| 
       15 
12 
     | 
    
         
             
            dependencies:
         
     | 
| 
       16 
13 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       17 
     | 
    
         
            -
              name:  
     | 
| 
       18 
     | 
    
         
            -
                d3Jvbmdkb2M=
         
     | 
| 
      
 14 
     | 
    
         
            +
              name: olddoc
         
     | 
| 
       19 
15 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       20 
     | 
    
         
            -
                none: false
         
     | 
| 
       21 
16 
     | 
    
         
             
                requirements:
         
     | 
| 
       22 
     | 
    
         
            -
                - -  
     | 
| 
       23 
     | 
    
         
            -
                    fj4=
         
     | 
| 
      
 17 
     | 
    
         
            +
                - - "~>"
         
     | 
| 
       24 
18 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       25 
     | 
    
         
            -
                    version:  
     | 
| 
       26 
     | 
    
         
            -
                      MS41
         
     | 
| 
      
 19 
     | 
    
         
            +
                    version: '1.0'
         
     | 
| 
       27 
20 
     | 
    
         
             
              type: :development
         
     | 
| 
       28 
21 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       29 
22 
     | 
    
         
             
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       30 
     | 
    
         
            -
                none: false
         
     | 
| 
       31 
23 
     | 
    
         
             
                requirements:
         
     | 
| 
       32 
     | 
    
         
            -
                - -  
     | 
| 
       33 
     | 
    
         
            -
                    fj4=
         
     | 
| 
      
 24 
     | 
    
         
            +
                - - "~>"
         
     | 
| 
       34 
25 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       35 
     | 
    
         
            -
                    version:  
     | 
| 
       36 
     | 
    
         
            -
             
     | 
| 
       37 
     | 
    
         
            -
             
     | 
| 
       38 
     | 
    
         
            -
              file
         
     | 
| 
       39 
     | 
    
         
            -
             
     | 
| 
      
 26 
     | 
    
         
            +
                    version: '1.0'
         
     | 
| 
      
 27 
     | 
    
         
            +
            description: |-
         
     | 
| 
      
 28 
     | 
    
         
            +
              The splice family of Linux system calls can transfer data between file
         
     | 
| 
       40 
29 
     | 
    
         
             
              descriptors without the need to copy data into userspace.  Instead of a
         
     | 
| 
       41 
     | 
    
         
            -
             
     | 
| 
       42 
30 
     | 
    
         
             
              userspace buffer, they rely on an ordinary Unix pipe as a kernel-level
         
     | 
| 
       43 
     | 
    
         
            -
             
     | 
| 
       44 
     | 
    
         
            -
             
     | 
| 
       45 
     | 
    
         
            -
            email: !binary |-
         
     | 
| 
       46 
     | 
    
         
            -
              cnVieS5pby5zcGxpY2VAbGlicmVsaXN0Lm9yZw==
         
     | 
| 
      
 31 
     | 
    
         
            +
              buffer.
         
     | 
| 
      
 32 
     | 
    
         
            +
            email: ruby-io-splice@bogomips.org
         
     | 
| 
       47 
33 
     | 
    
         
             
            executables: []
         
     | 
| 
       48 
34 
     | 
    
         
             
            extensions:
         
     | 
| 
       49 
     | 
    
         
            -
            -  
     | 
| 
       50 
     | 
    
         
            -
              ZXh0L2lvX3NwbGljZS9leHRjb25mLnJi
         
     | 
| 
      
 35 
     | 
    
         
            +
            - ext/io_splice/extconf.rb
         
     | 
| 
       51 
36 
     | 
    
         
             
            extra_rdoc_files:
         
     | 
| 
       52 
37 
     | 
    
         
             
            - README
         
     | 
| 
       53 
38 
     | 
    
         
             
            - LICENSE
         
     | 
| 
       54 
39 
     | 
    
         
             
            - NEWS
         
     | 
| 
       55 
     | 
    
         
            -
            - ChangeLog
         
     | 
| 
       56 
40 
     | 
    
         
             
            - lib/io/splice.rb
         
     | 
| 
       57 
41 
     | 
    
         
             
            - lib/io/splice/mri_18.rb
         
     | 
| 
       58 
42 
     | 
    
         
             
            - ext/io_splice/io_splice_ext.c
         
     | 
| 
       59 
     | 
    
         
            -
            - LATEST
         
     | 
| 
       60 
43 
     | 
    
         
             
            files:
         
     | 
| 
       61 
     | 
    
         
            -
            - .document
         
     | 
| 
       62 
     | 
    
         
            -
            - .gitignore
         
     | 
| 
       63 
     | 
    
         
            -
            - .manifest
         
     | 
| 
       64 
     | 
    
         
            -
            - . 
     | 
| 
      
 44 
     | 
    
         
            +
            - ".document"
         
     | 
| 
      
 45 
     | 
    
         
            +
            - ".gitignore"
         
     | 
| 
      
 46 
     | 
    
         
            +
            - ".manifest"
         
     | 
| 
      
 47 
     | 
    
         
            +
            - ".olddoc.yml"
         
     | 
| 
       65 
48 
     | 
    
         
             
            - COPYING
         
     | 
| 
       66 
     | 
    
         
            -
            - ChangeLog
         
     | 
| 
       67 
49 
     | 
    
         
             
            - GIT-VERSION-FILE
         
     | 
| 
       68 
50 
     | 
    
         
             
            - GIT-VERSION-GEN
         
     | 
| 
       69 
51 
     | 
    
         
             
            - GNUmakefile
         
     | 
| 
         @@ -71,7 +53,8 @@ files: 
     | 
|
| 
       71 
53 
     | 
    
         
             
            - LICENSE
         
     | 
| 
       72 
54 
     | 
    
         
             
            - NEWS
         
     | 
| 
       73 
55 
     | 
    
         
             
            - README
         
     | 
| 
       74 
     | 
    
         
            -
            -  
     | 
| 
      
 56 
     | 
    
         
            +
            - archive/.gitignore
         
     | 
| 
      
 57 
     | 
    
         
            +
            - archive/slrnpull.conf
         
     | 
| 
       75 
58 
     | 
    
         
             
            - examples/splice-cp.rb
         
     | 
| 
       76 
59 
     | 
    
         
             
            - examples/splice-tee.rb
         
     | 
| 
       77 
60 
     | 
    
         
             
            - ext/io_splice/extconf.rb
         
     | 
| 
         @@ -86,38 +69,30 @@ files: 
     | 
|
| 
       86 
69 
     | 
    
         
             
            - test/test_io_splice_eintr.rb
         
     | 
| 
       87 
70 
     | 
    
         
             
            - test/test_io_splice_in_full.rb
         
     | 
| 
       88 
71 
     | 
    
         
             
            homepage: http://bogomips.org/ruby_io_splice/
         
     | 
| 
       89 
     | 
    
         
            -
            licenses: 
     | 
| 
      
 72 
     | 
    
         
            +
            licenses:
         
     | 
| 
      
 73 
     | 
    
         
            +
            - LGPL
         
     | 
| 
      
 74 
     | 
    
         
            +
            metadata: {}
         
     | 
| 
       90 
75 
     | 
    
         
             
            post_install_message: 
         
     | 
| 
       91 
     | 
    
         
            -
            rdoc_options:
         
     | 
| 
       92 
     | 
    
         
            -
            - -t
         
     | 
| 
       93 
     | 
    
         
            -
            - io_splice - zero-copy pipe I/O for Linux and Ruby
         
     | 
| 
       94 
     | 
    
         
            -
            - -W
         
     | 
| 
       95 
     | 
    
         
            -
            - http://bogomips.org/ruby_io_splice.git/tree/%s
         
     | 
| 
      
 76 
     | 
    
         
            +
            rdoc_options: []
         
     | 
| 
       96 
77 
     | 
    
         
             
            require_paths:
         
     | 
| 
       97 
78 
     | 
    
         
             
            - lib
         
     | 
| 
       98 
79 
     | 
    
         
             
            required_ruby_version: !ruby/object:Gem::Requirement
         
     | 
| 
       99 
     | 
    
         
            -
              none: false
         
     | 
| 
       100 
80 
     | 
    
         
             
              requirements:
         
     | 
| 
       101 
     | 
    
         
            -
              - -  
     | 
| 
      
 81 
     | 
    
         
            +
              - - ">="
         
     | 
| 
       102 
82 
     | 
    
         
             
                - !ruby/object:Gem::Version
         
     | 
| 
       103 
83 
     | 
    
         
             
                  version: '0'
         
     | 
| 
       104 
84 
     | 
    
         
             
            required_rubygems_version: !ruby/object:Gem::Requirement
         
     | 
| 
       105 
     | 
    
         
            -
              none: false
         
     | 
| 
       106 
85 
     | 
    
         
             
              requirements:
         
     | 
| 
       107 
     | 
    
         
            -
              - -  
     | 
| 
      
 86 
     | 
    
         
            +
              - - ">="
         
     | 
| 
       108 
87 
     | 
    
         
             
                - !ruby/object:Gem::Version
         
     | 
| 
       109 
88 
     | 
    
         
             
                  version: '0'
         
     | 
| 
       110 
89 
     | 
    
         
             
            requirements: []
         
     | 
| 
       111 
     | 
    
         
            -
            rubyforge_project:  
     | 
| 
       112 
     | 
    
         
            -
             
     | 
| 
       113 
     | 
    
         
            -
            rubygems_version: 1.8.23
         
     | 
| 
      
 90 
     | 
    
         
            +
            rubyforge_project: 
         
     | 
| 
      
 91 
     | 
    
         
            +
            rubygems_version: 2.4.5
         
     | 
| 
       114 
92 
     | 
    
         
             
            signing_key: 
         
     | 
| 
       115 
     | 
    
         
            -
            specification_version:  
     | 
| 
      
 93 
     | 
    
         
            +
            specification_version: 4
         
     | 
| 
       116 
94 
     | 
    
         
             
            summary: zero-copy pipe I/O for Linux and Ruby
         
     | 
| 
       117 
95 
     | 
    
         
             
            test_files:
         
     | 
| 
       118 
     | 
    
         
            -
            -  
     | 
| 
       119 
     | 
    
         
            -
             
     | 
| 
       120 
     | 
    
         
            -
            -  
     | 
| 
       121 
     | 
    
         
            -
              dGVzdC90ZXN0X2lvX3NwbGljZS5yYg==
         
     | 
| 
       122 
     | 
    
         
            -
            - !binary |-
         
     | 
| 
       123 
     | 
    
         
            -
              dGVzdC90ZXN0X2lvX3NwbGljZV9laW50ci5yYg==
         
     | 
| 
      
 96 
     | 
    
         
            +
            - test/test_io_splice_in_full.rb
         
     | 
| 
      
 97 
     | 
    
         
            +
            - test/test_io_splice.rb
         
     | 
| 
      
 98 
     | 
    
         
            +
            - test/test_io_splice_eintr.rb
         
     | 
    
        data/Rakefile
    DELETED
    
    | 
         @@ -1,33 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            # -*- encoding: binary -*-
         
     | 
| 
       2 
     | 
    
         
            -
            require 'wrongdoc'
         
     | 
| 
       3 
     | 
    
         
            -
            cgit_url = Wrongdoc.config[:cgit_url]
         
     | 
| 
       4 
     | 
    
         
            -
            git_url = Wrongdoc.config[:git_url]
         
     | 
| 
       5 
     | 
    
         
            -
             
     | 
| 
       6 
     | 
    
         
            -
            desc "post news article to rubyforge"
         
     | 
| 
       7 
     | 
    
         
            -
            task :publish_news do
         
     | 
| 
       8 
     | 
    
         
            -
              require 'rubyforge'
         
     | 
| 
       9 
     | 
    
         
            -
              spec = Gem::Specification.load('io_splice.gemspec')
         
     | 
| 
       10 
     | 
    
         
            -
              tmp = Tempfile.new('rf-news')
         
     | 
| 
       11 
     | 
    
         
            -
              _, subject, body = `git cat-file tag v#{spec.version}`.split(/\n\n/, 3)
         
     | 
| 
       12 
     | 
    
         
            -
              tmp.puts subject
         
     | 
| 
       13 
     | 
    
         
            -
              tmp.puts
         
     | 
| 
       14 
     | 
    
         
            -
              tmp.puts spec.description.strip
         
     | 
| 
       15 
     | 
    
         
            -
              tmp.puts ""
         
     | 
| 
       16 
     | 
    
         
            -
              tmp.puts "* #{spec.homepage}"
         
     | 
| 
       17 
     | 
    
         
            -
              tmp.puts "* #{spec.email}"
         
     | 
| 
       18 
     | 
    
         
            -
              tmp.puts "* #{git_url}"
         
     | 
| 
       19 
     | 
    
         
            -
              tmp.print "\nChanges:\n\n"
         
     | 
| 
       20 
     | 
    
         
            -
              tmp.puts body
         
     | 
| 
       21 
     | 
    
         
            -
              tmp.flush
         
     | 
| 
       22 
     | 
    
         
            -
              system(ENV["VISUAL"], tmp.path) or abort "#{ENV["VISUAL"]} failed: #$?"
         
     | 
| 
       23 
     | 
    
         
            -
              msg = File.readlines(tmp.path)
         
     | 
| 
       24 
     | 
    
         
            -
              subject = msg.shift
         
     | 
| 
       25 
     | 
    
         
            -
              blank = msg.shift
         
     | 
| 
       26 
     | 
    
         
            -
              blank == "\n" or abort "no newline after subject!"
         
     | 
| 
       27 
     | 
    
         
            -
              subject.strip!
         
     | 
| 
       28 
     | 
    
         
            -
              body = msg.join("").strip!
         
     | 
| 
       29 
     | 
    
         
            -
             
     | 
| 
       30 
     | 
    
         
            -
              rf = RubyForge.new.configure
         
     | 
| 
       31 
     | 
    
         
            -
              rf.login
         
     | 
| 
       32 
     | 
    
         
            -
              rf.post_news('qrp', subject, body)
         
     | 
| 
       33 
     | 
    
         
            -
            end
         
     |