Option to set default values for file timestamps.

release-1.5.4.branch
Vreixo Formoso 15 years ago
parent ebcd5883e2
commit d92f8f68d2
  1. 2
      demo/iso.c
  2. 2
      demo/iso_grow.c
  3. 2
      demo/iso_modify.c
  4. 2
      demo/iso_ms.c
  5. 6
      src/ecma119.c
  6. 2
      src/ecma119.h
  7. 8
      src/libisofs.h
  8. 9
      src/rockridge.c

@ -72,6 +72,8 @@ int main(int argc, char **argv)
0, /* file_mode */
0, /* uid */
0, /* gid */
0, /* replace_timestamps */
0, /* timestamp */
NULL, /* output charset */
0, /* appendable */
0, /* ms_block */

@ -54,6 +54,8 @@ int main(int argc, char **argv)
0, /* file_mode */
0, /* uid */
0, /* gid */
0, /* replace_timestamps */
0, /* timestamp */
NULL, /* output charset */
0, /* appendable */
0, /* ms_block */

@ -49,6 +49,8 @@ int main(int argc, char **argv)
0, /* file_mode */
0, /* uid */
0, /* gid */
0, /* replace_timestamps */
0, /* timestamp */
NULL, /* output charset */
0, /* appendable */
0, /* ms_block */

@ -49,6 +49,8 @@ int main(int argc, char **argv)
0, /* file_mode */
0, /* uid */
0, /* gid */
0, /* replace_timestamps */
0, /* timestamp */
NULL, /* output charset */
0, /* appendable */
0, /* ms_block */

@ -848,7 +848,11 @@ int ecma119_image_new(IsoImage *src, Ecma119WriteOpts *opts, Ecma119Image **img)
target->now = time(NULL);
target->ms_block = opts->ms_block;
target->appendable = opts->appendable;
target->replace_timestamps = opts->replace_timestamps ? 1 : 0;
target->timestamp = opts->replace_timestamps == 2 ?
opts->timestamp : target->now;
/* el-torito? */
target->eltorito = (src->bootcat == NULL ? 0 : 1);
target->catalog = src->bootcat;

@ -58,11 +58,13 @@ struct ecma119_image
unsigned int replace_gid :1;
unsigned int replace_file_mode :1;
unsigned int replace_dir_mode :1;
unsigned int replace_timestamps :1;
uid_t uid;
gid_t gid;
mode_t file_mode;
mode_t dir_mode;
time_t timestamp;
/**
* if sort files or not. Sorting is based of the weight of each file

@ -184,6 +184,14 @@ struct ecma119_write_opts {
uid_t uid; /** uid to use when replace_uid == 2. */
gid_t gid; /** gid to use when replace_gid == 2. */
/**
* 0 to use IsoNode timestamps, 1 to use recording time, 2 to use
* values from timestamp field. This has only meaning if RR extensions
* are enabled.
*/
unsigned int replace_timestamps :2;
time_t timestamp;
/**
* Charset for the RR filenames that will be created.
* NULL to use default charset, the locale one.

@ -113,6 +113,7 @@ int rrip_add_PX(Ecma119Image *t, Ecma119Node *n, struct susp_info *susp)
static
int rrip_add_TF(Ecma119Image *t, Ecma119Node *n, struct susp_info *susp)
{
IsoNode *iso;
uint8_t *TF = malloc(5 + 3 * 7);
if (TF == NULL) {
return ISO_OUT_OF_MEM;
@ -123,9 +124,11 @@ int rrip_add_TF(Ecma119Image *t, Ecma119Node *n, struct susp_info *susp)
TF[2] = 5 + 3 * 7;
TF[3] = 1;
TF[4] = (1 << 1) | (1 << 2) | (1 << 3);
iso_datetime_7(&TF[5], n->node->mtime);
iso_datetime_7(&TF[12], n->node->atime);
iso_datetime_7(&TF[19], n->node->ctime);
iso = n->node;
iso_datetime_7(&TF[5], t->replace_timestamps ? t->timestamp : iso->mtime);
iso_datetime_7(&TF[12], t->replace_timestamps ? t->timestamp : iso->atime);
iso_datetime_7(&TF[19], t->replace_timestamps ? t->timestamp : iso->ctime);
return susp_append(t, susp, TF);
}

Loading…
Cancel
Save