Extended influence of iso_write_opts_set_dir_rec_mtime() to Joliet and
ISO 9660:1999.
This commit is contained in:
parent
bddc44d1ca
commit
6a1bbaa902
@ -402,7 +402,7 @@ void write_one_dir_record(Ecma119Image *t, Ecma119Node *node, int file_id,
|
|||||||
rec->len_dr[0] = len_dr + (info != NULL ? info->suf_len : 0);
|
rec->len_dr[0] = len_dr + (info != NULL ? info->suf_len : 0);
|
||||||
iso_bb(rec->block, block - t->eff_partition_offset, 4);
|
iso_bb(rec->block, block - t->eff_partition_offset, 4);
|
||||||
iso_bb(rec->length, len, 4);
|
iso_bb(rec->length, len, 4);
|
||||||
if (t->dir_rec_mtime) {
|
if (t->dir_rec_mtime & 1) {
|
||||||
iso= node->node;
|
iso= node->node;
|
||||||
iso_datetime_7(rec->recording_time,
|
iso_datetime_7(rec->recording_time,
|
||||||
t->replace_timestamps ? t->timestamp : iso->mtime,
|
t->replace_timestamps ? t->timestamp : iso->mtime,
|
||||||
@ -2701,7 +2701,13 @@ int iso_write_opts_set_dir_rec_mtime(IsoWriteOpts *opts, int allow)
|
|||||||
if (opts == NULL) {
|
if (opts == NULL) {
|
||||||
return ISO_NULL_POINTER;
|
return ISO_NULL_POINTER;
|
||||||
}
|
}
|
||||||
opts->dir_rec_mtime = allow ? 1 : 0;
|
if (allow < 0)
|
||||||
|
allow = 1;
|
||||||
|
else if (allow & (1 << 14))
|
||||||
|
allow &= ~1;
|
||||||
|
else if (allow & 6)
|
||||||
|
allow |= 1;
|
||||||
|
opts->dir_rec_mtime = allow & 7;
|
||||||
return ISO_SUCCESS;
|
return ISO_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -202,8 +202,9 @@ struct iso_write_opts {
|
|||||||
* to expect that we do have a creation timestamp with the source.
|
* to expect that we do have a creation timestamp with the source.
|
||||||
* mkisofs writes mtimes and the result seems more suitable if mounted
|
* mkisofs writes mtimes and the result seems more suitable if mounted
|
||||||
* without Rock Ridge support.)
|
* without Rock Ridge support.)
|
||||||
|
* bit0= ECMA-119, bit1= Joliet, bit2= ISO 9660:1999
|
||||||
*/
|
*/
|
||||||
unsigned int dir_rec_mtime :1;
|
unsigned int dir_rec_mtime :3;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Compute MD5 checksum for the whole session and record it as index 0 of
|
* Compute MD5 checksum for the whole session and record it as index 0 of
|
||||||
@ -476,8 +477,10 @@ struct ecma119_image
|
|||||||
/* Write AAIP as extension according to SUSP 1.10 rather than SUSP 1.12. */
|
/* Write AAIP as extension according to SUSP 1.10 rather than SUSP 1.12. */
|
||||||
unsigned int aaip_susp_1_10 :1;
|
unsigned int aaip_susp_1_10 :1;
|
||||||
|
|
||||||
/* Store in ECMA-119 timestamp mtime of source */
|
/* Store in ECMA-119, Joliet, ISO 9660:1999 timestamp the mtime of source
|
||||||
unsigned int dir_rec_mtime :1;
|
bit0= ECMA-119, bit1= Joliet, bit2= ISO 9660:1999.
|
||||||
|
*/
|
||||||
|
unsigned int dir_rec_mtime :3;
|
||||||
|
|
||||||
unsigned int md5_session_checksum :1;
|
unsigned int md5_session_checksum :1;
|
||||||
unsigned int md5_file_checksums :2;
|
unsigned int md5_file_checksums :2;
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2007 Vreixo Formoso
|
* Copyright (c) 2007 Vreixo Formoso
|
||||||
* Copyright (c) 2011 Thomas Schmitt
|
* Copyright (c) 2011-2012 Thomas Schmitt
|
||||||
*
|
*
|
||||||
* This file is part of the libisofs project; you can redistribute it and/or
|
* This file is part of the libisofs project; you can redistribute it and/or
|
||||||
* modify it under the terms of the GNU General Public License version 2
|
* modify it under the terms of the GNU General Public License version 2
|
||||||
@ -688,6 +688,7 @@ void write_one_dir_record(Ecma119Image *t, Iso1999Node *node, int file_id,
|
|||||||
: (uint8_t*)node->name;
|
: (uint8_t*)node->name;
|
||||||
|
|
||||||
struct ecma119_dir_record *rec = (struct ecma119_dir_record*)buf;
|
struct ecma119_dir_record *rec = (struct ecma119_dir_record*)buf;
|
||||||
|
IsoNode *iso;
|
||||||
|
|
||||||
len_dr = 33 + len_fi + ((len_fi % 2) ? 0 : 1);
|
len_dr = 33 + len_fi + ((len_fi % 2) ? 0 : 1);
|
||||||
|
|
||||||
@ -719,7 +720,15 @@ void write_one_dir_record(Ecma119Image *t, Iso1999Node *node, int file_id,
|
|||||||
rec->len_dr[0] = len_dr;
|
rec->len_dr[0] = len_dr;
|
||||||
iso_bb(rec->block, block, 4);
|
iso_bb(rec->block, block, 4);
|
||||||
iso_bb(rec->length, len, 4);
|
iso_bb(rec->length, len, 4);
|
||||||
iso_datetime_7(rec->recording_time, t->now, t->always_gmt);
|
|
||||||
|
/* was: iso_datetime_7(rec->recording_time, t->now, t->always_gmt);
|
||||||
|
*/
|
||||||
|
iso= node->node;
|
||||||
|
iso_datetime_7(rec->recording_time,
|
||||||
|
(t->dir_rec_mtime & 4) ? ( t->replace_timestamps ?
|
||||||
|
t->timestamp : iso->mtime )
|
||||||
|
: t->now, t->always_gmt);
|
||||||
|
|
||||||
rec->flags[0] = ((node->type == ISO1999_DIR) ? 2 : 0) | (multi_extend ? 0x80 : 0);
|
rec->flags[0] = ((node->type == ISO1999_DIR) ? 2 : 0) | (multi_extend ? 0x80 : 0);
|
||||||
iso_bb(rec->vol_seq_number, (uint32_t) 1, 2);
|
iso_bb(rec->vol_seq_number, (uint32_t) 1, 2);
|
||||||
rec->len_fi[0] = len_fi;
|
rec->len_fi[0] = len_fi;
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2007 Vreixo Formoso
|
* Copyright (c) 2007 Vreixo Formoso
|
||||||
* Copyright (c) 2007 Mario Danic
|
* Copyright (c) 2007 Mario Danic
|
||||||
* Copyright (c) 2011 Thomas Schmitt
|
* Copyright (c) 2011-2012 Thomas Schmitt
|
||||||
*
|
*
|
||||||
* This file is part of the libisofs project; you can redistribute it and/or
|
* This file is part of the libisofs project; you can redistribute it and/or
|
||||||
* modify it under the terms of the GNU General Public License version 2
|
* modify it under the terms of the GNU General Public License version 2
|
||||||
@ -758,6 +758,7 @@ void write_one_dir_record(Ecma119Image *t, JolietNode *node, int file_id,
|
|||||||
: (uint8_t*)node->name;
|
: (uint8_t*)node->name;
|
||||||
|
|
||||||
struct ecma119_dir_record *rec = (struct ecma119_dir_record*)buf;
|
struct ecma119_dir_record *rec = (struct ecma119_dir_record*)buf;
|
||||||
|
IsoNode *iso;
|
||||||
|
|
||||||
len_dr = 33 + len_fi + ((len_fi % 2) ? 0 : 1);
|
len_dr = 33 + len_fi + ((len_fi % 2) ? 0 : 1);
|
||||||
|
|
||||||
@ -797,7 +798,15 @@ void write_one_dir_record(Ecma119Image *t, JolietNode *node, int file_id,
|
|||||||
rec->len_dr[0] = len_dr;
|
rec->len_dr[0] = len_dr;
|
||||||
iso_bb(rec->block, block - t->eff_partition_offset, 4);
|
iso_bb(rec->block, block - t->eff_partition_offset, 4);
|
||||||
iso_bb(rec->length, len, 4);
|
iso_bb(rec->length, len, 4);
|
||||||
iso_datetime_7(rec->recording_time, t->now, t->always_gmt);
|
|
||||||
|
/* was: iso_datetime_7(rec->recording_time, t->now, t->always_gmt);
|
||||||
|
*/
|
||||||
|
iso= node->node;
|
||||||
|
iso_datetime_7(rec->recording_time,
|
||||||
|
(t->dir_rec_mtime & 2) ? ( t->replace_timestamps ?
|
||||||
|
t->timestamp : iso->mtime )
|
||||||
|
: t->now, t->always_gmt);
|
||||||
|
|
||||||
rec->flags[0] = ((node->type == JOLIET_DIR) ? 2 : 0) | (multi_extend ? 0x80 : 0);
|
rec->flags[0] = ((node->type == JOLIET_DIR) ? 2 : 0) | (multi_extend ? 0x80 : 0);
|
||||||
iso_bb(rec->vol_seq_number, (uint32_t) 1, 2);
|
iso_bb(rec->vol_seq_number, (uint32_t) 1, 2);
|
||||||
rec->len_fi[0] = len_fi;
|
rec->len_fi[0] = len_fi;
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2007-2008 Vreixo Formoso, Mario Danic
|
* Copyright (c) 2007-2008 Vreixo Formoso, Mario Danic
|
||||||
* Copyright (c) 2009-2011 Thomas Schmitt
|
* Copyright (c) 2009-2012 Thomas Schmitt
|
||||||
*
|
*
|
||||||
* This file is part of the libisofs project; you can redistribute it and/or
|
* This file is part of the libisofs project; you can redistribute it and/or
|
||||||
* modify it under the terms of the GNU General Public License version 2
|
* modify it under the terms of the GNU General Public License version 2
|
||||||
@ -1653,9 +1653,35 @@ int iso_write_opts_set_rrip_1_10_px_ino(IsoWriteOpts *opts, int enable);
|
|||||||
int iso_write_opts_set_aaip_susp_1_10(IsoWriteOpts *opts, int oldvers);
|
int iso_write_opts_set_aaip_susp_1_10(IsoWriteOpts *opts, int oldvers);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Store as ECMA-119 Directory Record timestamp the mtime of the source
|
* Store as ECMA-119 Directory Record timestamp the mtime of the source node
|
||||||
* rather than the image creation time.
|
* rather than the image creation time.
|
||||||
|
* If storing of mtime is enabled, then the settings of
|
||||||
|
* iso_write_opts_set_replace_timestamps() apply. (replace==1 will revoke,
|
||||||
|
* replace==2 will override mtime by iso_write_opts_set_default_timestamp().
|
||||||
*
|
*
|
||||||
|
* Since version 1.2.0 this may apply also to Joliet and ISO 9660:1999. To
|
||||||
|
* reduce the probability of unwanted behavior changes between pre-1.2.0 and
|
||||||
|
* post-1.2.0, the bits for Joliet and ISO 9660:1999 also enable ECMA-119.
|
||||||
|
* The hopefully unlikely bit14 may then be used to disable mtime for ECMA-119.
|
||||||
|
*
|
||||||
|
* To enable mtime for all three directory trees, submit 7.
|
||||||
|
* To disable this feature completely, submit 0.
|
||||||
|
*
|
||||||
|
* @param opts
|
||||||
|
* The option set to be manipulated.
|
||||||
|
* @param allow
|
||||||
|
* If this parameter is negative, then mtime is enabled only for ECMA-119.
|
||||||
|
* With positive numbers, the parameter is interpreted as bit field :
|
||||||
|
* bit0= enable mtime for ECMA-119
|
||||||
|
* bit1= enable mtime for Joliet and ECMA-119
|
||||||
|
* bit2= enable mtime for ISO 9660:1999 and ECMA-119
|
||||||
|
* bit14= disable mtime for ECMA-119 although some of the other bits
|
||||||
|
* would enable it
|
||||||
|
* @since 1.2.0
|
||||||
|
* Before version 1.2.0 this applied only to ECMA-119 :
|
||||||
|
* 0 stored image creation time in ECMA-119 tree.
|
||||||
|
* Any other value caused storing of mtime.
|
||||||
|
* Joliet and ISO 9660:1999 always stored the image creation time.
|
||||||
* @since 0.6.12
|
* @since 0.6.12
|
||||||
*/
|
*/
|
||||||
int iso_write_opts_set_dir_rec_mtime(IsoWriteOpts *opts, int allow);
|
int iso_write_opts_set_dir_rec_mtime(IsoWriteOpts *opts, int allow);
|
||||||
@ -1783,8 +1809,10 @@ int iso_write_opts_set_default_gid(IsoWriteOpts *opts, gid_t gid);
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 0 to use IsoNode timestamps, 1 to use recording time, 2 to use
|
* 0 to use IsoNode timestamps, 1 to use recording time, 2 to use
|
||||||
* values from timestamp field. This has only meaning if RR extensions
|
* values from timestamp field. This applies to the timestamps of Rock Ridge
|
||||||
* are enabled.
|
* and if the use of mtime is enabled by iso_write_opts_set_dir_rec_mtime().
|
||||||
|
* In the latter case, value 1 will revoke the recording of mtime, value
|
||||||
|
* 2 will override mtime by iso_write_opts_set_default_timestamp().
|
||||||
*
|
*
|
||||||
* @see iso_write_opts_set_default_timestamp
|
* @see iso_write_opts_set_default_timestamp
|
||||||
* @since 0.6.2
|
* @since 0.6.2
|
||||||
|
Loading…
Reference in New Issue
Block a user