"Fossies" - the Fresh Open Source Software Archive  

Source code changes of the file "src/Common/libzip/zip_file_set_external_attributes.c" between
VeraCrypt_1.21_Source.tar.bz2 and VeraCrypt_1.22_Source.tar.bz2

About: VeraCrypt is a free disk encryption software (based on TrueCrypt).

zip_file_set_external_attributes.c  (VeraCrypt_1.21_Source.tar.bz2):zip_file_set_external_attributes.c  (VeraCrypt_1.22_Source.tar.bz2)
skipping to change at line 37 skipping to change at line 37
GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/ */
#include "zipint.h" #include "zipint.h"
ZIP_EXTERN int ZIP_EXTERN int
zip_file_set_external_attributes(zip_t *za, zip_uint64_t idx, zip_flags_t flags, zip_file_set_external_attributes(zip_t *za, zip_uint64_t idx, zip_flags_t flags,
zip_uint8_t opsys, zip_uint32_t attributes) zip_uint8_t opsys, zip_uint32_t attributes) {
{
zip_entry_t *e; zip_entry_t *e;
int changed; int changed;
zip_uint8_t unchanged_opsys; zip_uint8_t unchanged_opsys;
zip_uint32_t unchanged_attributes; zip_uint32_t unchanged_attributes;
if (_zip_get_dirent(za, idx, 0, NULL) == NULL) if (_zip_get_dirent(za, idx, 0, NULL) == NULL)
return -1; return -1;
if (ZIP_IS_RDONLY(za)) { if (ZIP_IS_RDONLY(za)) {
zip_error_set(&za->error, ZIP_ER_RDONLY, 0); zip_error_set(&za->error, ZIP_ER_RDONLY, 0);
return -1; return -1;
} }
e = za->entry+idx; e = za->entry + idx;
unchanged_opsys = (e->orig ? (zip_uint8_t)(e->orig->version_madeby>>8) : (zi p_uint8_t)ZIP_OPSYS_DEFAULT); unchanged_opsys = (e->orig ? (zip_uint8_t)(e->orig->version_madeby >> 8) : ( zip_uint8_t)ZIP_OPSYS_DEFAULT);
unchanged_attributes = e->orig ? e->orig->ext_attrib : ZIP_EXT_ATTRIB_DEFAUL T; unchanged_attributes = e->orig ? e->orig->ext_attrib : ZIP_EXT_ATTRIB_DEFAUL T;
changed = (opsys != unchanged_opsys || attributes != unchanged_attributes); changed = (opsys != unchanged_opsys || attributes != unchanged_attributes);
if (changed) { if (changed) {
if (e->changes == NULL) { if (e->changes == NULL) {
if ((e->changes=_zip_dirent_clone(e->orig)) == NULL) { if ((e->changes = _zip_dirent_clone(e->orig)) == NULL) {
zip_error_set(&za->error, ZIP_ER_MEMORY, 0); zip_error_set(&za->error, ZIP_ER_MEMORY, 0);
return -1; return -1;
} }
} }
e->changes->version_madeby = (zip_uint16_t)((opsys << 8) | (e->changes-> e->changes->version_madeby = (zip_uint16_t)((opsys << 8) | (e->changes->v
version_madeby & 0xff)); ersion_madeby & 0xff));
e->changes->ext_attrib = attributes; e->changes->ext_attrib = attributes;
e->changes->changed |= ZIP_DIRENT_ATTRIBUTES; e->changes->changed |= ZIP_DIRENT_ATTRIBUTES;
} }
else if (e->changes) { else if (e->changes) {
e->changes->changed &= ~ZIP_DIRENT_ATTRIBUTES; e->changes->changed &= ~ZIP_DIRENT_ATTRIBUTES;
if (e->changes->changed == 0) { if (e->changes->changed == 0) {
_zip_dirent_free(e->changes); _zip_dirent_free(e->changes);
e->changes = NULL; e->changes = NULL;
} }
else { else {
e->changes->version_madeby = (zip_uint16_t)((unchanged_opsys << 8) | (e->changes->version_madeby & 0xff)); e->changes->version_madeby = (zip_uint16_t)((unchanged_opsys << 8) | (e->changes->version_madeby & 0xff));
e->changes->ext_attrib = unchanged_attributes; e->changes->ext_attrib = unchanged_attributes;
 End of changes. 5 change blocks. 
14 lines changed or deleted 13 lines changed or added

Home  |  About  |  Features  |  All  |  Newest  |  Dox  |  Diffs  |  RSS Feeds  |  Screenshots  |  Comments  |  Imprint  |  Privacy  |  HTTP(S)