ruby-core@ruby-lang.org archive (unofficial mirror)
 help / color / mirror / Atom feed
* [ruby-core:98625] [Ruby master Bug#9790] Zlib::GzipReader only decompressed the first of concatenated files
       [not found] <redmine.issue-9790.20140430205653.8087@ruby-lang.org>
@ 2020-06-02 16:17 ` merch-redmine
  2020-07-22 15:39 ` [ruby-core:99267] " merch-redmine
  1 sibling, 0 replies; 2+ messages in thread
From: merch-redmine @ 2020-06-02 16:17 UTC (permalink / raw
  To: ruby-core

Issue #9790 has been updated by jeremyevans0 (Jeremy Evans).


ko1 (Koichi Sasada) wrote in #note-10:
> * mame: can each_file return an Enumerator?  Seems difficult to implement it
> * matz: How about always behaving like zcat?  Is an option to keep the old behaviors really needed?
> * akr: The traditional behavior should be kept
> * akr: gzip(1) describes concatenation of gzip files in ADVANCED USAGE. https://www.gnu.org/software/gzip/manual/gzip.html#Advanced-usage
> 
> Conclusion:
> 
> * matz: it should behave like zcat.  Handling each member should be deleted.

I'm not sure, but it seems the proposal here would be to make all Zlib::GzipReader methods transparently handle multiple streams. There are two issues with doing that:

1. It's very invasive, all methods would need to change, some in fairly complex ways.

2. More importantly, it would break cases where non-gzip data was stored after gzip data.  Currently you can use GzipReader in such cases, and the io pointer after the gzip processing will be directly after where the gzip stream ends, at which point you can use the io normally.  Basically, if you make this change, you could no longer embed a gzip stream in the middle of a file and read just that stream.

If we don't want to add Zlib::GzipReader.each_file but we want to add something like zcat, here's a pull request that implements Zlib::GzipReader.zcat: https://github.com/ruby/zlib/pull/13.  I think Zlib::GzipReader.each_file is a more useful and flexible method than Zlib::GzipReader.zcat.  We could certainly have both, though.

----------------------------------------
Bug #9790: Zlib::GzipReader only decompressed the first of concatenated files
https://bugs.ruby-lang.org/issues/9790#change-85949

* Author: quainjn (Jake Quain)
* Status: Feedback
* Priority: Normal
* Assignee: drbrain (Eric Hodel)
* ruby -v: 2.1.1
* Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN
----------------------------------------
There is a similar old issue in Node that I came across that perfectly describes the situation in ruby:

https://github.com/joyent/node/issues/6032

In ruby given the following setup:

```
echo "1" > 1.txt
echo "2" > 2.txt
gzip 1.txt
gzip 2.txt
cat 1.txt.gz 2.txt.gz > 3.txt.gz
```

Calling:
    
```
Zlib::GzipReader.open("3.txt.gz") do |gz|
  print gz.read
end
```

would just print:

```
1
```


---Files--------------------------------
zlib-gzreader-each_file-9790.patch (3.47 KB)


-- 
https://bugs.ruby-lang.org/

^ permalink raw reply	[flat|nested] 2+ messages in thread

* [ruby-core:99267] [Ruby master Bug#9790] Zlib::GzipReader only decompressed the first of concatenated files
       [not found] <redmine.issue-9790.20140430205653.8087@ruby-lang.org>
  2020-06-02 16:17 ` [ruby-core:98625] [Ruby master Bug#9790] Zlib::GzipReader only decompressed the first of concatenated files merch-redmine
@ 2020-07-22 15:39 ` merch-redmine
  1 sibling, 0 replies; 2+ messages in thread
From: merch-redmine @ 2020-07-22 15:39 UTC (permalink / raw
  To: ruby-core

Issue #9790 has been updated by jeremyevans0 (Jeremy Evans).

Status changed from Feedback to Closed

matz approved Zlib::GzipReader.zcat, so I merged the pull request into zlib.

----------------------------------------
Bug #9790: Zlib::GzipReader only decompressed the first of concatenated files
https://bugs.ruby-lang.org/issues/9790#change-86654

* Author: quainjn (Jake Quain)
* Status: Closed
* Priority: Normal
* Assignee: drbrain (Eric Hodel)
* ruby -v: 2.1.1
* Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN
----------------------------------------
There is a similar old issue in Node that I came across that perfectly describes the situation in ruby:

https://github.com/joyent/node/issues/6032

In ruby given the following setup:

```
echo "1" > 1.txt
echo "2" > 2.txt
gzip 1.txt
gzip 2.txt
cat 1.txt.gz 2.txt.gz > 3.txt.gz
```

Calling:
    
```
Zlib::GzipReader.open("3.txt.gz") do |gz|
  print gz.read
end
```

would just print:

```
1
```


---Files--------------------------------
zlib-gzreader-each_file-9790.patch (3.47 KB)


-- 
https://bugs.ruby-lang.org/

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2020-07-22 15:39 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <redmine.issue-9790.20140430205653.8087@ruby-lang.org>
2020-06-02 16:17 ` [ruby-core:98625] [Ruby master Bug#9790] Zlib::GzipReader only decompressed the first of concatenated files merch-redmine
2020-07-22 15:39 ` [ruby-core:99267] " merch-redmine

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).