Hello community, here is the log from the commit of package zchunk for openSUSE:Factory checked in at 2018-10-31 13:15:11 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/zchunk (Old) and /work/SRC/openSUSE:Factory/.zchunk.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "zchunk" Wed Oct 31 13:15:11 2018 rev:4 rq:645358 version:0.9.13 Changes: -------- --- /work/SRC/openSUSE:Factory/zchunk/zchunk.changes 2018-10-11 11:47:58.234594501 +0200 +++ /work/SRC/openSUSE:Factory/.zchunk.new/zchunk.changes 2018-10-31 13:18:13.647238248 +0100 @@ -1,0 +2,7 @@ +Mon Oct 29 19:52:30 UTC 2018 - Luigi Baldoni <aloi...@gmx.com> + +- Update to version 0.9.13 + * Add read support for zchunk files with optional flags + * Fix tests for zstd-1.3.6 + +------------------------------------------------------------------- Old: ---- zchunk-0.9.11.tar.gz New: ---- zchunk-0.9.13.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ zchunk.spec ++++++ --- /var/tmp/diff_new_pack.hH35h2/_old 2018-10-31 13:18:17.611234518 +0100 +++ /var/tmp/diff_new_pack.hH35h2/_new 2018-10-31 13:18:17.615234514 +0100 @@ -13,7 +13,7 @@ # license that conforms to the Open Source Definition (Version 1.9) # published by the Open Source Initiative. -# Please submit bugfixes or comments via http://bugs.opensuse.org/ +# Please submit bugfixes or comments via https://bugs.opensuse.org/ # @@ -22,7 +22,7 @@ %global devname libzck-devel Name: zchunk -Version: 0.9.11 +Version: 0.9.13 Release: 0 Summary: Compressed file format that allows easy deltas License: BSD-2-Clause AND MIT ++++++ zchunk-0.9.11.tar.gz -> zchunk-0.9.13.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/zchunk-0.9.11/meson.build new/zchunk-0.9.13/meson.build --- old/zchunk-0.9.11/meson.build 2018-09-27 15:17:14.000000000 +0200 +++ new/zchunk-0.9.13/meson.build 2018-10-08 15:53:06.000000000 +0200 @@ -1,5 +1,5 @@ project('zck', 'c', - version : '0.9.11', + version : '0.9.13', meson_version : '>=0.44.0', default_options : ['c_std=gnu99']) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/zchunk-0.9.11/src/lib/header.c new/zchunk-0.9.13/src/lib/header.c --- old/zchunk-0.9.11/src/lib/header.c 2018-09-27 15:17:14.000000000 +0200 +++ new/zchunk-0.9.13/src/lib/header.c 2018-10-08 15:53:06.000000000 +0200 @@ -36,10 +36,14 @@ static bool check_flags(zckCtx *zck, size_t flags) { zck->has_streams = flags & 1; if(zck->has_streams) { + flags -= 1; set_fatal_error(zck, "This version of zchunk doesn't support streams"); return false; } + zck->has_optional_flags = flags & 2; + if(zck->has_optional_flags) + flags -= 2; flags = flags & (SIZE_MAX - 1); if(flags != 0) { set_fatal_error(zck, "Unknown flags(s) set"); @@ -48,6 +52,13 @@ return true; } +static bool check_optional_flags(zckCtx *zck, size_t flags) { + flags = flags & (SIZE_MAX - 1); + if(flags != 0) + zck_log(ZCK_LOG_WARNING, "Unknown optional flags %i set", flags); + return true; +} + static bool read_header_from_file(zckCtx *zck) { /* Allocate header and store any extra bytes at beginning of header */ zck->header = zrealloc(zck->header, zck->lead_size + zck->header_length); @@ -128,6 +139,22 @@ if(!comp_init(zck)) return false; + /* Read optional flags */ + if(zck->has_optional_flags) { + size_t opt_flags = 0; + if(!compint_to_size(zck, &opt_flags, header+length, &length, + max_length)) + return false; + if(!check_optional_flags(zck, opt_flags)) + return false; + size_t opt_flag_data_size = 0; + if(!compint_to_size(zck, &opt_flag_data_size, header+length, &length, + max_length)) + return false; + if(opt_flag_data_size > 0) + length += opt_flag_data_size; + } + /* Read and initialize index size */ if(!compint_to_int(zck, &tmp, header+length, &length, max_length)) return false; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/zchunk-0.9.11/src/lib/zck_private.h new/zchunk-0.9.13/src/lib/zck_private.h --- old/zchunk-0.9.11/src/lib/zck_private.h 2018-09-27 15:17:14.000000000 +0200 +++ new/zchunk-0.9.13/src/lib/zck_private.h 2018-10-08 15:53:06.000000000 +0200 @@ -260,6 +260,7 @@ zckHash work_index_hash; size_t stream; int has_streams; + int has_optional_flags; char *read_buf; size_t read_buf_size; Binary files old/zchunk-0.9.11/test/abi/stable/libzck.so.0.9.11 and new/zchunk-0.9.13/test/abi/stable/libzck.so.0.9.11 differ Binary files old/zchunk-0.9.11/test/abi/stable/libzck.so.0.9.13 and new/zchunk-0.9.13/test/abi/stable/libzck.so.0.9.13 differ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/zchunk-0.9.11/test/abi/stable/zck.h new/zchunk-0.9.13/test/abi/stable/zck.h --- old/zchunk-0.9.11/test/abi/stable/zck.h 2018-09-27 15:17:14.000000000 +0200 +++ new/zchunk-0.9.13/test/abi/stable/zck.h 2018-10-08 15:53:06.000000000 +0200 @@ -1,7 +1,7 @@ #ifndef ZCK_H #define ZCK_H -#define ZCK_VERSION "0.9.11" +#define ZCK_VERSION "0.9.13" #include <stdlib.h> #include <stdbool.h> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/zchunk-0.9.11/test/compat_reports/zchunk/0.9.10_to_0.9.11/compat_report.html new/zchunk-0.9.13/test/compat_reports/zchunk/0.9.10_to_0.9.11/compat_report.html --- old/zchunk-0.9.11/test/compat_reports/zchunk/0.9.10_to_0.9.11/compat_report.html 2018-09-27 15:17:14.000000000 +0200 +++ new/zchunk-0.9.13/test/compat_reports/zchunk/0.9.10_to_0.9.11/compat_report.html 1970-01-01 01:00:00.000000000 +0100 @@ -1,475 +0,0 @@ -<!-- kind:binary;verdict:compatible;affected:0;added:0;removed:0;type_problems_high:0;type_problems_medium:0;type_problems_low:0;interface_problems_high:0;interface_problems_medium:0;interface_problems_low:0;changed_constants:0;tool_version:2.3 --> -<!-- kind:source;verdict:compatible;affected:0;added:0;removed:0;type_problems_high:0;type_problems_medium:0;type_problems_low:0;interface_problems_high:0;interface_problems_medium:0;interface_problems_low:0;changed_constants:0;tool_version:2.3 --> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> -<meta name="viewport" content="width=device-width,initial-scale=1" /> -<meta name="keywords" content="zchunk, compatibility, API, ABI, report" /> -<meta name="description" content="API/ABI compatibility report for the zchunk object between 0.9.10 and 0.9.11 versions" /> -<meta name="robots" content="noindex" /> -<title>zchunk: 0.9.10 to 0.9.11 compatibility report</title> -<style type="text/css"> -body { - font-family:Arial, sans-serif; - background-color:White; - color:Black; -} -hr { - color:Black; - background-color:Black; - height:1px; - border:0; -} -h1 { - margin-bottom:0px; - padding-bottom:0px; - font-size:1.625em; -} -h2 { - margin-bottom:0px; - padding-bottom:0px; - font-size:1.25em; - white-space:nowrap; -} -span.section { - font-weight:bold; - cursor:pointer; - color:#003E69; - white-space:nowrap; - margin-left:0.3125em; -} -span.new_sign { - font-weight:bold; - margin-left:1.65em; - color:#003E69; -} -span.new_sign_lbl { - margin-left:3em; - font-size:1em; - color:Black; -} -span:hover.section { - color:#336699; -} -span.sect_aff { - cursor:pointer; - padding-left:1.55em; - font-size:0.875em; - color:#cc3300; -} -span.sect_info { - cursor:pointer; - padding-left:1.55em; - font-size:0.875em; - color:Black; -} -span.ext { - font-weight:normal; -} -span.h_name { - color:#cc3300; - font-size:0.875em; - font-weight:bold; -} -div.h_list, div.lib_list { - font-size:0.94em; - padding-left:0.4em; -} -span.ns { - color:#408080; - font-size:0.94em; -} -span.lib_name { - color:Green; - font-size:0.875em; - font-weight:bold; -} -span.iname { - font-weight:bold; - color:#003E69; - margin-left:0.3125em; -} -span.iname_b { - font-weight:bold; -} -span.iname_a { - color:#333333; - font-weight:bold; - font-size:0.94em; -} -span.sym_p { - font-weight:normal; - white-space:normal; -} -span.sym_pd { - white-space:normal; -} -span.sym_p span, span.sym_pd span { - white-space:nowrap; -} -div.affect { - padding-left:1em; - padding-bottom:10px; - font-size:0.87em; - font-style:italic; - line-height:0.9em; -} -div.affected { - padding-left:1.9em; - padding-top:10px; -} -table.ptable { - border-collapse:collapse; - border:1px outset black; - margin-left:0.95em; - margin-top:3px; - margin-bottom:3px; - width:56.25em; -} -table.ptable td { - border:1px solid gray; - padding:3px; - font-size:0.875em; - text-align:left; - vertical-align:top; - max-width:28em; - word-wrap:break-word; -} -table.ptable th.pn { - width:2%; -} -table.ptable th.chg { - width:47%; -} -table.vtable { - border-collapse:collapse; - border:1px outset black; - margin-left:1.9em; - margin-top:0.7em; -} -table.vtable td { - border:1px solid gray; - padding:3px; - font-size:0.875em; - vertical-align:top; - max-width:450px; - word-wrap:break-word; -} -table.ptable th, table.vtable th { - background-color:#eeeeee; - font-weight:bold; - color:#333333; - font-family:Verdana, Arial; - font-size:0.875em; - border:1px solid gray; - text-align:center; - vertical-align:top; - white-space:nowrap; - padding:3px; -} -table.summary { - border-collapse:collapse; - border:1px outset black; -} -table.summary th { - background-color:#eeeeee; - font-weight:normal; - text-align:left; - font-size:0.94em; - white-space:nowrap; - border:1px inset gray; - padding:3px; -} -table.summary td { - text-align:right; - white-space:nowrap; - border:1px inset gray; - padding:3px 5px 3px 10px; -} -span.mngl { - padding-left:1em; - font-size:0.875em; - cursor:text; - color:#444444; - font-weight:bold; -} -span.pleft { - padding-left:2.5em; -} -span.sym_ver { - color:#333333; - white-space:nowrap; - font-family:"DejaVu Sans Mono", Monospace; -} -span.attr { - color:#333333; - font-weight:normal; -} -span.color_p { - font-style:italic; - color:Brown; -} -span.p { - font-style:italic; -} -span.fp { - font-style:italic; - background-color:#DCDCDC; -} -span.ttype { - font-weight:normal; -} -span.nowrap { - white-space:nowrap; -} -span.value { - font-weight:bold; -} -.passed { - background-color:#CCFFCC; - font-weight:normal; -} -.warning { - background-color:#F4F4AF; - font-weight:normal; -} -.failed { - background-color:#FFCCCC; - font-weight:normal; -} -.new { - background-color:#C6DEFF; - font-weight:normal; -} -.compatible { - background-color:#CCFFCC; - font-weight:normal; -} -.almost_compatible { - background-color:#FFDAA3; - font-weight:normal; -} -.incompatible { - background-color:#FFCCCC; - font-weight:normal; -} -.gray { - background-color:#DCDCDC; - font-weight:normal; -} -.top_ref { - font-size:0.69em; -} -.footer { - font-size:0.75em; -} - -.tabset { - float:left; -} -a.tab { - border:1px solid Black; - float:left; - margin:0px 5px -1px 0px; - padding:3px 5px 3px 5px; - position:relative; - font-size:0.875em; - background-color:#DDD; - text-decoration:none; - color:Black; -} -a.disabled:hover -{ - color:Black; - background:#EEE; -} -a.active:hover -{ - color:Black; - background:White; -} -a.active { - border-bottom-color:White; - background-color:White; -} -div.tab { - border-top:1px solid Black; - padding:0px; - width:100%; - clear:both; -} -</style> -<script type="text/javascript" language="JavaScript"> -<!-- -function showContent(header, id) -{ - e = document.getElementById(id); - if(e.style.display == 'none') - { - e.style.display = 'block'; - e.style.visibility = 'visible'; - header.innerHTML = header.innerHTML.replace(/\[[^0-9 ]\]/gi,"[−]"); - } - else - { - e.style.display = 'none'; - e.style.visibility = 'hidden'; - header.innerHTML = header.innerHTML.replace(/\[[^0-9 ]\]/gi,"[+]"); - } -} -function initTabs() -{ - var url = window.location.href; - if(url.indexOf('_Source_')!=-1 || url.indexOf('#Source')!=-1) - { - var tab1 = document.getElementById('BinaryID'); - var tab2 = document.getElementById('SourceID'); - tab1.className='tab disabled'; - tab2.className='tab active'; - } - var sets = document.getElementsByTagName('div'); - for (var i = 0; i < sets.length; i++) - { - if (sets[i].className.indexOf('tabset') != -1) - { - var tabs = []; - var links = sets[i].getElementsByTagName('a'); - for (var j = 0; j < links.length; j++) - { - if (links[j].className.indexOf('tab') != -1) - { - tabs.push(links[j]); - links[j].tabs = tabs; - var tab = document.getElementById(links[j].href.substr(links[j].href.indexOf('#') + 1)); - //reset all tabs on start - if (tab) - { - if (links[j].className.indexOf('active')!=-1) { - tab.style.display = 'block'; - } - else { - tab.style.display = 'none'; - } - } - links[j].onclick = function() - { - var tab = document.getElementById(this.href.substr(this.href.indexOf('#') + 1)); - if (tab) - { - //reset all tabs before change - for (var k = 0; k < this.tabs.length; k++) - { - document.getElementById(this.tabs[k].href.substr(this.tabs[k].href.indexOf('#') + 1)).style.display = 'none'; - this.tabs[k].className = this.tabs[k].className.replace('active', 'disabled'); - } - this.className = 'tab active'; - tab.style.display = 'block'; - // window.location.hash = this.id.replace('ID', ''); - return false; - } - } - } - } - } - } - if(url.indexOf('#')!=-1) { - location.href=location.href; - } -} -if (window.addEventListener) window.addEventListener('load', initTabs, false); -else if (window.attachEvent) window.attachEvent('onload', initTabs); ---> -</script> -</head> -<body><a name='Source'></a><a name='Binary'></a><a name='Top'></a><h1>API compatibility report for the <span style='color:Blue;'>libzck.so</span> object between <span style='color:Red;'>0.9.10</span> and <span style='color:Red;'>0.9.11</span> versions on <span style='color:Blue;'>x86_64</span></h1> - - <br/> - <div class='tabset'> - <a id='BinaryID' href='#BinaryTab' class='tab active'>Binary<br/>Compatibility</a> - <a id='SourceID' href='#SourceTab' style='margin-left:3px' class='tab disabled'>Source<br/>Compatibility</a> - </div><div id='BinaryTab' class='tab'> -<h2>Test Info</h2><hr/> -<table class='summary'> -<tr><th>Module Name</th><td>zchunk</td></tr> -<tr><th>Version #1</th><td>0.9.10</td></tr> -<tr><th>Version #2</th><td>0.9.11</td></tr> -<tr><th>Arch</th><td>x86_64</td></tr> -<tr><th>GCC Version</th><td>8.1.1</td></tr> -<tr><th>Subject</th><td width='150px'>Binary Compatibility</td></tr> -</table> -<h2>Test Results</h2><hr/> -<table class='summary'><tr><th>Total Header Files</th><td><a href='#Headers' style='color:Blue;'>1</a></td></tr> -<tr><th>Total Objects</th><td><a href='#Libs' style='color:Blue;'>1</a></td></tr> -<tr><th>Total Symbols / Types</th><td>71 / 13</td></tr> -<tr><th>Compatibility</th> -<td class='compatible'>100%</td> -</tr> -</table> -<h2>Problem Summary</h2><hr/> -<table class='summary'><tr><th></th><th style='text-align:center;'>Severity</th><th style='text-align:center;'>Count</th></tr><tr><th>Added Symbols</th><td>-</td><td>0</td></tr> -<tr><th>Removed Symbols</th><td>High</td><td>0</td></tr> -<tr><th rowspan='3'>Problems with<br/>Data Types</th><td>High</td><td>0</td></tr> -<tr><td>Medium</td><td>0</td></tr> -<tr><td>Low</td><td>0</td></tr> -<tr><th rowspan='3'>Problems with<br/>Symbols</th><td>High</td><td>0</td></tr> -<tr><td>Medium</td><td>0</td></tr> -<tr><td>Low</td><td>0</td></tr> -<tr><th>Problems with<br/>Constants</th><td>Low</td><td>0</td></tr> -</table> - -<a name='Headers'></a><h2>Header Files <span class='gray'> 1 </span></h2><hr/> -<div class='h_list'> -zck.h<br/> -</div> -<br/><a class='top_ref' href='#Top'>to the top</a><br/> -<a name='Libs'></a><h2>Objects <span class='gray'> 1 </span></h2><hr/> -<div class='lib_list'> -libzck.so.0.9.10<br/> -</div> -<br/><a class='top_ref' href='#Top'>to the top</a><br/> -<br/><br/><br/></div><div id='SourceTab' class='tab'> -<h2>Test Info</h2><hr/> -<table class='summary'> -<tr><th>Module Name</th><td>zchunk</td></tr> -<tr><th>Version #1</th><td>0.9.10</td></tr> -<tr><th>Version #2</th><td>0.9.11</td></tr> -<tr><th>Arch</th><td>x86_64</td></tr> -<tr><th>Subject</th><td width='150px'>Source Compatibility</td></tr> -</table> -<h2>Test Results</h2><hr/> -<table class='summary'><tr><th>Total Header Files</th><td><a href='#Headers' style='color:Blue;'>1</a></td></tr> -<tr><th>Total Objects</th><td><a href='#Libs' style='color:Blue;'>1</a></td></tr> -<tr><th>Total Symbols / Types</th><td>71 / 13</td></tr> -<tr><th>Compatibility</th> -<td class='compatible'>100%</td> -</tr> -</table> -<h2>Problem Summary</h2><hr/> -<table class='summary'><tr><th></th><th style='text-align:center;'>Severity</th><th style='text-align:center;'>Count</th></tr><tr><th>Added Symbols</th><td>-</td><td>0</td></tr> -<tr><th>Removed Symbols</th><td>High</td><td>0</td></tr> -<tr><th rowspan='3'>Problems with<br/>Data Types</th><td>High</td><td>0</td></tr> -<tr><td>Medium</td><td>0</td></tr> -<tr><td>Low</td><td>0</td></tr> -<tr><th rowspan='3'>Problems with<br/>Symbols</th><td>High</td><td>0</td></tr> -<tr><td>Medium</td><td>0</td></tr> -<tr><td>Low</td><td>0</td></tr> -<tr><th>Problems with<br/>Constants</th><td>Low</td><td>0</td></tr> -</table> - -<a name='Headers'></a><h2>Header Files <span class='gray'> 1 </span></h2><hr/> -<div class='h_list'> -zck.h<br/> -</div> -<br/><a class='top_ref' href='#Top'>to the top</a><br/> -<a name='Libs'></a><h2>Objects <span class='gray'> 1 </span></h2><hr/> -<div class='lib_list'> -libzck.so.0.9.10<br/> -</div> -<br/><a class='top_ref' href='#Top'>to the top</a><br/> -<br/><br/><br/></div><hr/> -<div class='footer' align='right'><i>Generated by <a href='https://github.com/lvc/abi-compliance-checker'>ABI Compliance Checker</a> 2.3  </i> -</div> -<br/> - -</body></html> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/zchunk-0.9.11/test/compat_reports/zchunk/0.9.12_to_0.9.13/compat_report.html new/zchunk-0.9.13/test/compat_reports/zchunk/0.9.12_to_0.9.13/compat_report.html --- old/zchunk-0.9.11/test/compat_reports/zchunk/0.9.12_to_0.9.13/compat_report.html 1970-01-01 01:00:00.000000000 +0100 +++ new/zchunk-0.9.13/test/compat_reports/zchunk/0.9.12_to_0.9.13/compat_report.html 2018-10-08 15:53:06.000000000 +0200 @@ -0,0 +1,475 @@ +<!-- kind:binary;verdict:compatible;affected:0;added:0;removed:0;type_problems_high:0;type_problems_medium:0;type_problems_low:0;interface_problems_high:0;interface_problems_medium:0;interface_problems_low:0;changed_constants:0;tool_version:2.3 --> +<!-- kind:source;verdict:compatible;affected:0;added:0;removed:0;type_problems_high:0;type_problems_medium:0;type_problems_low:0;interface_problems_high:0;interface_problems_medium:0;interface_problems_low:0;changed_constants:0;tool_version:2.3 --> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> +<meta name="viewport" content="width=device-width,initial-scale=1" /> +<meta name="keywords" content="zchunk, compatibility, API, ABI, report" /> +<meta name="description" content="API/ABI compatibility report for the zchunk object between 0.9.12 and 0.9.13 versions" /> +<meta name="robots" content="noindex" /> +<title>zchunk: 0.9.12 to 0.9.13 compatibility report</title> +<style type="text/css"> +body { + font-family:Arial, sans-serif; + background-color:White; + color:Black; +} +hr { + color:Black; + background-color:Black; + height:1px; + border:0; +} +h1 { + margin-bottom:0px; + padding-bottom:0px; + font-size:1.625em; +} +h2 { + margin-bottom:0px; + padding-bottom:0px; + font-size:1.25em; + white-space:nowrap; +} +span.section { + font-weight:bold; + cursor:pointer; + color:#003E69; + white-space:nowrap; + margin-left:0.3125em; +} +span.new_sign { + font-weight:bold; + margin-left:1.65em; + color:#003E69; +} +span.new_sign_lbl { + margin-left:3em; + font-size:1em; + color:Black; +} +span:hover.section { + color:#336699; +} +span.sect_aff { + cursor:pointer; + padding-left:1.55em; + font-size:0.875em; + color:#cc3300; +} +span.sect_info { + cursor:pointer; + padding-left:1.55em; + font-size:0.875em; + color:Black; +} +span.ext { + font-weight:normal; +} +span.h_name { + color:#cc3300; + font-size:0.875em; + font-weight:bold; +} +div.h_list, div.lib_list { + font-size:0.94em; + padding-left:0.4em; +} +span.ns { + color:#408080; + font-size:0.94em; +} +span.lib_name { + color:Green; + font-size:0.875em; + font-weight:bold; +} +span.iname { + font-weight:bold; + color:#003E69; + margin-left:0.3125em; +} +span.iname_b { + font-weight:bold; +} +span.iname_a { + color:#333333; + font-weight:bold; + font-size:0.94em; +} +span.sym_p { + font-weight:normal; + white-space:normal; +} +span.sym_pd { + white-space:normal; +} +span.sym_p span, span.sym_pd span { + white-space:nowrap; +} +div.affect { + padding-left:1em; + padding-bottom:10px; + font-size:0.87em; + font-style:italic; + line-height:0.9em; +} +div.affected { + padding-left:1.9em; + padding-top:10px; +} +table.ptable { + border-collapse:collapse; + border:1px outset black; + margin-left:0.95em; + margin-top:3px; + margin-bottom:3px; + width:56.25em; +} +table.ptable td { + border:1px solid gray; + padding:3px; + font-size:0.875em; + text-align:left; + vertical-align:top; + max-width:28em; + word-wrap:break-word; +} +table.ptable th.pn { + width:2%; +} +table.ptable th.chg { + width:47%; +} +table.vtable { + border-collapse:collapse; + border:1px outset black; + margin-left:1.9em; + margin-top:0.7em; +} +table.vtable td { + border:1px solid gray; + padding:3px; + font-size:0.875em; + vertical-align:top; + max-width:450px; + word-wrap:break-word; +} +table.ptable th, table.vtable th { + background-color:#eeeeee; + font-weight:bold; + color:#333333; + font-family:Verdana, Arial; + font-size:0.875em; + border:1px solid gray; + text-align:center; + vertical-align:top; + white-space:nowrap; + padding:3px; +} +table.summary { + border-collapse:collapse; + border:1px outset black; +} +table.summary th { + background-color:#eeeeee; + font-weight:normal; + text-align:left; + font-size:0.94em; + white-space:nowrap; + border:1px inset gray; + padding:3px; +} +table.summary td { + text-align:right; + white-space:nowrap; + border:1px inset gray; + padding:3px 5px 3px 10px; +} +span.mngl { + padding-left:1em; + font-size:0.875em; + cursor:text; + color:#444444; + font-weight:bold; +} +span.pleft { + padding-left:2.5em; +} +span.sym_ver { + color:#333333; + white-space:nowrap; + font-family:"DejaVu Sans Mono", Monospace; +} +span.attr { + color:#333333; + font-weight:normal; +} +span.color_p { + font-style:italic; + color:Brown; +} +span.p { + font-style:italic; +} +span.fp { + font-style:italic; + background-color:#DCDCDC; +} +span.ttype { + font-weight:normal; +} +span.nowrap { + white-space:nowrap; +} +span.value { + font-weight:bold; +} +.passed { + background-color:#CCFFCC; + font-weight:normal; +} +.warning { + background-color:#F4F4AF; + font-weight:normal; +} +.failed { + background-color:#FFCCCC; + font-weight:normal; +} +.new { + background-color:#C6DEFF; + font-weight:normal; +} +.compatible { + background-color:#CCFFCC; + font-weight:normal; +} +.almost_compatible { + background-color:#FFDAA3; + font-weight:normal; +} +.incompatible { + background-color:#FFCCCC; + font-weight:normal; +} +.gray { + background-color:#DCDCDC; + font-weight:normal; +} +.top_ref { + font-size:0.69em; +} +.footer { + font-size:0.75em; +} + +.tabset { + float:left; +} +a.tab { + border:1px solid Black; + float:left; + margin:0px 5px -1px 0px; + padding:3px 5px 3px 5px; + position:relative; + font-size:0.875em; + background-color:#DDD; + text-decoration:none; + color:Black; +} +a.disabled:hover +{ + color:Black; + background:#EEE; +} +a.active:hover +{ + color:Black; + background:White; +} +a.active { + border-bottom-color:White; + background-color:White; +} +div.tab { + border-top:1px solid Black; + padding:0px; + width:100%; + clear:both; +} +</style> +<script type="text/javascript" language="JavaScript"> +<!-- +function showContent(header, id) +{ + e = document.getElementById(id); + if(e.style.display == 'none') + { + e.style.display = 'block'; + e.style.visibility = 'visible'; + header.innerHTML = header.innerHTML.replace(/\[[^0-9 ]\]/gi,"[−]"); + } + else + { + e.style.display = 'none'; + e.style.visibility = 'hidden'; + header.innerHTML = header.innerHTML.replace(/\[[^0-9 ]\]/gi,"[+]"); + } +} +function initTabs() +{ + var url = window.location.href; + if(url.indexOf('_Source_')!=-1 || url.indexOf('#Source')!=-1) + { + var tab1 = document.getElementById('BinaryID'); + var tab2 = document.getElementById('SourceID'); + tab1.className='tab disabled'; + tab2.className='tab active'; + } + var sets = document.getElementsByTagName('div'); + for (var i = 0; i < sets.length; i++) + { + if (sets[i].className.indexOf('tabset') != -1) + { + var tabs = []; + var links = sets[i].getElementsByTagName('a'); + for (var j = 0; j < links.length; j++) + { + if (links[j].className.indexOf('tab') != -1) + { + tabs.push(links[j]); + links[j].tabs = tabs; + var tab = document.getElementById(links[j].href.substr(links[j].href.indexOf('#') + 1)); + //reset all tabs on start + if (tab) + { + if (links[j].className.indexOf('active')!=-1) { + tab.style.display = 'block'; + } + else { + tab.style.display = 'none'; + } + } + links[j].onclick = function() + { + var tab = document.getElementById(this.href.substr(this.href.indexOf('#') + 1)); + if (tab) + { + //reset all tabs before change + for (var k = 0; k < this.tabs.length; k++) + { + document.getElementById(this.tabs[k].href.substr(this.tabs[k].href.indexOf('#') + 1)).style.display = 'none'; + this.tabs[k].className = this.tabs[k].className.replace('active', 'disabled'); + } + this.className = 'tab active'; + tab.style.display = 'block'; + // window.location.hash = this.id.replace('ID', ''); + return false; + } + } + } + } + } + } + if(url.indexOf('#')!=-1) { + location.href=location.href; + } +} +if (window.addEventListener) window.addEventListener('load', initTabs, false); +else if (window.attachEvent) window.attachEvent('onload', initTabs); +--> +</script> +</head> +<body><a name='Source'></a><a name='Binary'></a><a name='Top'></a><h1>API compatibility report for the <span style='color:Blue;'>libzck.so</span> object between <span style='color:Red;'>0.9.12</span> and <span style='color:Red;'>0.9.13</span> versions on <span style='color:Blue;'>x86_64</span></h1> + + <br/> + <div class='tabset'> + <a id='BinaryID' href='#BinaryTab' class='tab active'>Binary<br/>Compatibility</a> + <a id='SourceID' href='#SourceTab' style='margin-left:3px' class='tab disabled'>Source<br/>Compatibility</a> + </div><div id='BinaryTab' class='tab'> +<h2>Test Info</h2><hr/> +<table class='summary'> +<tr><th>Module Name</th><td>zchunk</td></tr> +<tr><th>Version #1</th><td>0.9.12</td></tr> +<tr><th>Version #2</th><td>0.9.13</td></tr> +<tr><th>Arch</th><td>x86_64</td></tr> +<tr><th>GCC Version</th><td>8.1.1</td></tr> +<tr><th>Subject</th><td width='150px'>Binary Compatibility</td></tr> +</table> +<h2>Test Results</h2><hr/> +<table class='summary'><tr><th>Total Header Files</th><td><a href='#Headers' style='color:Blue;'>1</a></td></tr> +<tr><th>Total Objects</th><td><a href='#Libs' style='color:Blue;'>1</a></td></tr> +<tr><th>Total Symbols / Types</th><td>71 / 13</td></tr> +<tr><th>Compatibility</th> +<td class='compatible'>100%</td> +</tr> +</table> +<h2>Problem Summary</h2><hr/> +<table class='summary'><tr><th></th><th style='text-align:center;'>Severity</th><th style='text-align:center;'>Count</th></tr><tr><th>Added Symbols</th><td>-</td><td>0</td></tr> +<tr><th>Removed Symbols</th><td>High</td><td>0</td></tr> +<tr><th rowspan='3'>Problems with<br/>Data Types</th><td>High</td><td>0</td></tr> +<tr><td>Medium</td><td>0</td></tr> +<tr><td>Low</td><td>0</td></tr> +<tr><th rowspan='3'>Problems with<br/>Symbols</th><td>High</td><td>0</td></tr> +<tr><td>Medium</td><td>0</td></tr> +<tr><td>Low</td><td>0</td></tr> +<tr><th>Problems with<br/>Constants</th><td>Low</td><td>0</td></tr> +</table> + +<a name='Headers'></a><h2>Header Files <span class='gray'> 1 </span></h2><hr/> +<div class='h_list'> +zck.h<br/> +</div> +<br/><a class='top_ref' href='#Top'>to the top</a><br/> +<a name='Libs'></a><h2>Objects <span class='gray'> 1 </span></h2><hr/> +<div class='lib_list'> +libzck.so.0.9.12<br/> +</div> +<br/><a class='top_ref' href='#Top'>to the top</a><br/> +<br/><br/><br/></div><div id='SourceTab' class='tab'> +<h2>Test Info</h2><hr/> +<table class='summary'> +<tr><th>Module Name</th><td>zchunk</td></tr> +<tr><th>Version #1</th><td>0.9.12</td></tr> +<tr><th>Version #2</th><td>0.9.13</td></tr> +<tr><th>Arch</th><td>x86_64</td></tr> +<tr><th>Subject</th><td width='150px'>Source Compatibility</td></tr> +</table> +<h2>Test Results</h2><hr/> +<table class='summary'><tr><th>Total Header Files</th><td><a href='#Headers' style='color:Blue;'>1</a></td></tr> +<tr><th>Total Objects</th><td><a href='#Libs' style='color:Blue;'>1</a></td></tr> +<tr><th>Total Symbols / Types</th><td>71 / 13</td></tr> +<tr><th>Compatibility</th> +<td class='compatible'>100%</td> +</tr> +</table> +<h2>Problem Summary</h2><hr/> +<table class='summary'><tr><th></th><th style='text-align:center;'>Severity</th><th style='text-align:center;'>Count</th></tr><tr><th>Added Symbols</th><td>-</td><td>0</td></tr> +<tr><th>Removed Symbols</th><td>High</td><td>0</td></tr> +<tr><th rowspan='3'>Problems with<br/>Data Types</th><td>High</td><td>0</td></tr> +<tr><td>Medium</td><td>0</td></tr> +<tr><td>Low</td><td>0</td></tr> +<tr><th rowspan='3'>Problems with<br/>Symbols</th><td>High</td><td>0</td></tr> +<tr><td>Medium</td><td>0</td></tr> +<tr><td>Low</td><td>0</td></tr> +<tr><th>Problems with<br/>Constants</th><td>Low</td><td>0</td></tr> +</table> + +<a name='Headers'></a><h2>Header Files <span class='gray'> 1 </span></h2><hr/> +<div class='h_list'> +zck.h<br/> +</div> +<br/><a class='top_ref' href='#Top'>to the top</a><br/> +<a name='Libs'></a><h2>Objects <span class='gray'> 1 </span></h2><hr/> +<div class='lib_list'> +libzck.so.0.9.12<br/> +</div> +<br/><a class='top_ref' href='#Top'>to the top</a><br/> +<br/><br/><br/></div><hr/> +<div class='footer' align='right'><i>Generated by <a href='https://github.com/lvc/abi-compliance-checker'>ABI Compliance Checker</a> 2.3  </i> +</div> +<br/> + +</body></html> Binary files old/zchunk-0.9.11/test/files/empty.optflags.zck and new/zchunk-0.9.13/test/files/empty.optflags.zck differ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/zchunk-0.9.11/test/meson.build new/zchunk-0.9.13/test/meson.build --- old/zchunk-0.9.11/test/meson.build 2018-09-27 15:17:14.000000000 +0200 +++ new/zchunk-0.9.13/test/meson.build 2018-10-08 15:53:06.000000000 +0200 @@ -2,6 +2,7 @@ subdir('lib') incdir = include_directories(['lib', '../src/lib', '../include']) empty = executable('empty', ['empty.c'] + util_sources, include_directories: incdir, dependencies: [zstd_dep, openssl_dep]) +optflag = executable('optflag', ['optflag.c'] + util_sources, include_directories: incdir, dependencies: [zstd_dep, openssl_dep]) shacheck = find_program('shacheck.sh') file_path = join_paths(meson.source_root(), 'test/files') @@ -47,6 +48,14 @@ ) test( + 'check opening file with optional flags', + optflag, + args: [ + join_paths(file_path, 'empty.optflags.zck') + ] +) + +test( 'check verbosity in unzck', unzck, args: [ @@ -141,10 +150,14 @@ ] ) -check_sha = '0418aaca75b6b64c3ac9bc50fc0974e48c76691869977907fad25eea834f3c85' +check_sha = '430c1963f71efe663272d39f7a7941d4a4e78d43c20caba8876a12f6a18eaeb1' +if zstd_dep.found() and zstd_dep.version().version_compare('<=1.3.5') + check_sha = '0418aaca75b6b64c3ac9bc50fc0974e48c76691869977907fad25eea834f3c85' +endif if zstd_dep.found() and zstd_dep.version().version_compare('<=1.3.4') check_sha = '08c9ce94470ad4ab7f8a64e67872e138964eb562d13686d9c941baa3a09d2835' endif + test( 'compress auto-chunked file - no dict', shacheck, @@ -174,7 +187,10 @@ ] ) -check_sha = 'cba69c5fc88fda4352470f3eb0fe5df04e9f1f08c88e0af5a96e53ed3f84526c' +check_sha = '1e8d64ec058d815a7f841aeeeb74ba4c028340f1275ce993fba175fec04fde1e' +if zstd_dep.found() and zstd_dep.version().version_compare('<=1.3.5') + check_sha = 'cba69c5fc88fda4352470f3eb0fe5df04e9f1f08c88e0af5a96e53ed3f84526c' +endif if zstd_dep.found() and zstd_dep.version().version_compare('<=1.3.4') check_sha = '53205d490819bbb681224e21acf0b85ec44c62c5c1f46e59bd084ac471ed534c' endif diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/zchunk-0.9.11/test/optflag.c new/zchunk-0.9.13/test/optflag.c --- old/zchunk-0.9.11/test/optflag.c 1970-01-01 01:00:00.000000000 +0100 +++ new/zchunk-0.9.13/test/optflag.c 2018-10-08 15:53:06.000000000 +0200 @@ -0,0 +1,73 @@ +/* + * Copyright 2018 Jonathan Dieter <jdie...@gmail.com> + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#include <stdlib.h> +#include <stdio.h> +#include <string.h> +#include <stdbool.h> +#include <unistd.h> +#include <sys/types.h> +#include <sys/stat.h> +#include <fcntl.h> +#include <errno.h> +#include <zck.h> +#include "zck_private.h" +#include "util.h" + +int main (int argc, char *argv[]) { + zck_set_log_level(ZCK_LOG_DEBUG); + char data[1000] = {0}; + + /* Open zchunk file and verify that zck->has_optional_flags is set */ + int in = open(argv[1], O_RDONLY); + if(in < 0) { + perror("Unable to open empty.zck for reading"); + exit(1); + } + + zckCtx *zck = zck_create(); + if(zck == NULL) + exit(1); + if(!zck_init_read(zck, in)) { + printf("%s", zck_get_error(zck)); + exit(1); + } + if(!zck->has_optional_flags) { + printf("zck->has_optional_flags should be set, but isn't"); + exit(1); + } + memset(data, 0, 1000); + ssize_t len = zck_read(zck, data, 1000); + if(len > 0) { + printf("%li bytes read, but file should be empty\n", (long)len); + exit(1); + } + if(!zck_close(zck)) + exit(1); + + zck_free(&zck); + return 0; +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/zchunk-0.9.11/zchunk_format.txt new/zchunk-0.9.13/zchunk_format.txt --- old/zchunk-0.9.11/zchunk_format.txt 2018-09-27 15:17:14.000000000 +0200 +++ new/zchunk-0.9.13/zchunk_format.txt 2018-10-08 15:53:06.000000000 +0200 @@ -38,9 +38,13 @@ The preface: -+===============+============+========================+ -| Data checksum | Flags (ci) | Compression type (ci ) | -+===============+============+========================+ ++===============+============+========================+=====================+ +| Data checksum | Flags (ci) | Compression type (ci ) | Optional flags (ci) | ++===============+============+========================+=====================+ + ++==============================+====================+ +| Optional flag data size (ci) | Optional flag data | ++==============================+====================+ Data checksum This is the checksum of everything after the header, including the compressed @@ -54,6 +58,7 @@ Current flags are: bit 0: File has data streams + bit 1: File has optional flags Compression type This is an integer containing the type of compression used to compress dict and @@ -63,6 +68,22 @@ 0 - Uncompressed 2 - zstd +Optional flags + This is a compressed integer containing a bitmask of optional flags, and will + only be set if flag bit 1 is set. All unused flags MUST be set to 0. If a + decoder sees a flag set that it doesn't recognize, it MUST ignore the flag and + continue as normal. + + Current optional flags are: + - none + +Optional flag data size + This is an integer containing the optional flag data size, and will only be set + if flag bit 1 is set. + +Optional flag data + This contains any data required for optional flags, and will only be set if + flag bit 1 is set. The index: +=================+==========================+==================+