Compare commits
6 Commits
release-1.
...
release-1.
Author | SHA1 | Date | |
---|---|---|---|
775b7a11b4 | |||
23679b86ff | |||
a4f07eb3b3 | |||
6905ab3e56 | |||
05e7f84966 | |||
6e5f840f11 |
@ -1,3 +1,10 @@
|
|||||||
|
libisofs-1.2.8.tar.gz Mon Mar 18 2013
|
||||||
|
===============================================================================
|
||||||
|
* New API call iso_image_get_pvd_times().
|
||||||
|
* Bug fix: Image size prediction altered the pointers to MD5 of data files
|
||||||
|
which stem from a previous session.
|
||||||
|
* Bug fix: Reading damaged Rock Ridge data could cause SIGSEGV by NULL.
|
||||||
|
|
||||||
libisofs-1.2.6.tar.gz Tue Jan 08 2013
|
libisofs-1.2.6.tar.gz Tue Jan 08 2013
|
||||||
===============================================================================
|
===============================================================================
|
||||||
* Bug fix: Appended partitions did not obey cylinder alignment
|
* Bug fix: Appended partitions did not obey cylinder alignment
|
||||||
|
12
configure.ac
12
configure.ac
@ -1,4 +1,4 @@
|
|||||||
AC_INIT([libisofs], [1.2.6], [http://libburnia-project.org])
|
AC_INIT([libisofs], [1.2.8], [http://libburnia-project.org])
|
||||||
AC_PREREQ([2.50])
|
AC_PREREQ([2.50])
|
||||||
dnl AC_CONFIG_HEADER([config.h])
|
dnl AC_CONFIG_HEADER([config.h])
|
||||||
|
|
||||||
@ -41,7 +41,7 @@ dnl If LIBISOFS_*_VERSION changes, be sure to change AC_INIT above to match.
|
|||||||
dnl
|
dnl
|
||||||
LIBISOFS_MAJOR_VERSION=1
|
LIBISOFS_MAJOR_VERSION=1
|
||||||
LIBISOFS_MINOR_VERSION=2
|
LIBISOFS_MINOR_VERSION=2
|
||||||
LIBISOFS_MICRO_VERSION=6
|
LIBISOFS_MICRO_VERSION=8
|
||||||
LIBISOFS_VERSION=$LIBISOFS_MAJOR_VERSION.$LIBISOFS_MINOR_VERSION.$LIBISOFS_MICRO_VERSION
|
LIBISOFS_VERSION=$LIBISOFS_MAJOR_VERSION.$LIBISOFS_MINOR_VERSION.$LIBISOFS_MICRO_VERSION
|
||||||
|
|
||||||
AC_SUBST(LIBISOFS_MAJOR_VERSION)
|
AC_SUBST(LIBISOFS_MAJOR_VERSION)
|
||||||
@ -51,10 +51,10 @@ AC_SUBST(LIBISOFS_VERSION)
|
|||||||
|
|
||||||
dnl Libtool versioning
|
dnl Libtool versioning
|
||||||
LT_RELEASE=$LIBISOFS_MAJOR_VERSION.$LIBISOFS_MINOR_VERSION
|
LT_RELEASE=$LIBISOFS_MAJOR_VERSION.$LIBISOFS_MINOR_VERSION
|
||||||
# 2013.01.08 development jump has not yet happened
|
# 2013.03.18 development jump has not yet happened
|
||||||
# SONAME = 68 - 62 = 6 . Library name = libisofs.6.62.0
|
# SONAME = 70 - 64 = 6 . Library name = libisofs.6.64.0
|
||||||
LT_CURRENT=68
|
LT_CURRENT=70
|
||||||
LT_AGE=62
|
LT_AGE=64
|
||||||
LT_REVISION=0
|
LT_REVISION=0
|
||||||
LT_CURRENT_MINUS_AGE=`expr $LT_CURRENT - $LT_AGE`
|
LT_CURRENT_MINUS_AGE=`expr $LT_CURRENT - $LT_AGE`
|
||||||
|
|
||||||
|
@ -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) 2009 - 2012 Thomas Schmitt
|
* Copyright (c) 2009 - 2013 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
|
||||||
@ -1613,6 +1613,7 @@ int checksum_prepare_nodes(Ecma119Image *target, IsoNode *node, int flag)
|
|||||||
*/;
|
*/;
|
||||||
} else if (ret == 1 && img->checksum_array == NULL) {
|
} else if (ret == 1 && img->checksum_array == NULL) {
|
||||||
/* No checksum array loaded. Delete "isofs.cx" */
|
/* No checksum array loaded. Delete "isofs.cx" */
|
||||||
|
if (!target->will_cancel)
|
||||||
iso_node_set_attrs(node, (size_t) 1,
|
iso_node_set_attrs(node, (size_t) 1,
|
||||||
&cx_names, cx_value_lengths, &cx_valuept, 4 | 8);
|
&cx_names, cx_value_lengths, &cx_valuept, 4 | 8);
|
||||||
no_md5 = 1;
|
no_md5 = 1;
|
||||||
@ -1639,8 +1640,9 @@ int checksum_prepare_nodes(Ecma119Image *target, IsoNode *node, int flag)
|
|||||||
}
|
}
|
||||||
/* Equip nodes with provisory isofs.cx numbers: 4 byte, all 0.
|
/* Equip nodes with provisory isofs.cx numbers: 4 byte, all 0.
|
||||||
Omit those from old image which will not be copied and have no MD5.
|
Omit those from old image which will not be copied and have no MD5.
|
||||||
|
Do not alter the nodes if this is only a will_cancel run.
|
||||||
*/
|
*/
|
||||||
if (!no_md5) {
|
if (!(target->will_cancel || no_md5)) {
|
||||||
ret = iso_file_set_isofscx(file, (unsigned int) 0, 0);
|
ret = iso_file_set_isofscx(file, (unsigned int) 0, 0);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -127,7 +127,7 @@ int iso_file_src_create(Ecma119Image *img, IsoFile *file, IsoFileSrc **src)
|
|||||||
/* insert the filesrc in the tree */
|
/* insert the filesrc in the tree */
|
||||||
ret = iso_rbtree_insert(img->files, fsrc, (void**)src);
|
ret = iso_rbtree_insert(img->files, fsrc, (void**)src);
|
||||||
if (ret <= 0) {
|
if (ret <= 0) {
|
||||||
if (ret == 0 && (*src)->checksum_index > 0) {
|
if (ret == 0 && (*src)->checksum_index > 0 && !img->will_cancel) {
|
||||||
/* Duplicate file source was mapped to previously registered source
|
/* Duplicate file source was mapped to previously registered source
|
||||||
*/
|
*/
|
||||||
cret = iso_file_set_isofscx(file, (*src)->checksum_index, 0);
|
cret = iso_file_set_isofscx(file, (*src)->checksum_index, 0);
|
||||||
@ -152,7 +152,7 @@ int iso_file_src_create(Ecma119Image *img, IsoFile *file, IsoFileSrc **src)
|
|||||||
no_md5 = 1;
|
no_md5 = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((img->md5_file_checksums & 1) && !no_md5) {
|
if ((img->md5_file_checksums & 1) && !(no_md5 || img->will_cancel)) {
|
||||||
img->checksum_idx_counter++;
|
img->checksum_idx_counter++;
|
||||||
if (img->checksum_idx_counter < 0x7fffffff) {
|
if (img->checksum_idx_counter < 0x7fffffff) {
|
||||||
fsrc->checksum_index = img->checksum_idx_counter;
|
fsrc->checksum_index = img->checksum_idx_counter;
|
||||||
|
@ -241,6 +241,10 @@ typedef struct
|
|||||||
char *copyright_file_id;
|
char *copyright_file_id;
|
||||||
char *abstract_file_id;
|
char *abstract_file_id;
|
||||||
char *biblio_file_id;
|
char *biblio_file_id;
|
||||||
|
char *creation_time;
|
||||||
|
char *modification_time;
|
||||||
|
char *expiration_time;
|
||||||
|
char *effective_time;
|
||||||
|
|
||||||
/* extension information */
|
/* extension information */
|
||||||
|
|
||||||
@ -2089,6 +2093,10 @@ void ifs_fs_free(IsoFilesystem *fs)
|
|||||||
free(data->copyright_file_id);
|
free(data->copyright_file_id);
|
||||||
free(data->abstract_file_id);
|
free(data->abstract_file_id);
|
||||||
free(data->biblio_file_id);
|
free(data->biblio_file_id);
|
||||||
|
free(data->creation_time);
|
||||||
|
free(data->modification_time);
|
||||||
|
free(data->expiration_time);
|
||||||
|
free(data->effective_time);
|
||||||
free(data->input_charset);
|
free(data->input_charset);
|
||||||
free(data->local_charset);
|
free(data->local_charset);
|
||||||
|
|
||||||
@ -2318,6 +2326,14 @@ int read_pvm(_ImageFsData *data, uint32_t block)
|
|||||||
data->abstract_file_id[0] = 0;
|
data->abstract_file_id[0] = 0;
|
||||||
data->biblio_file_id[0] = 0;
|
data->biblio_file_id[0] = 0;
|
||||||
}
|
}
|
||||||
|
data->creation_time =
|
||||||
|
iso_util_strcopy_untail((char*) pvm->vol_creation_time, 17);
|
||||||
|
data->modification_time =
|
||||||
|
iso_util_strcopy_untail((char*) pvm->vol_modification_time, 17);
|
||||||
|
data->expiration_time =
|
||||||
|
iso_util_strcopy_untail((char*) pvm->vol_expiration_time, 17);
|
||||||
|
data->effective_time =
|
||||||
|
iso_util_strcopy_untail((char*) pvm->vol_effective_time, 17);
|
||||||
|
|
||||||
data->nblocks = iso_read_bb(pvm->vol_space_size, 4, NULL);
|
data->nblocks = iso_read_bb(pvm->vol_space_size, 4, NULL);
|
||||||
|
|
||||||
@ -2857,9 +2873,9 @@ int image_builder_create_node(IsoNodeBuilder *builder, IsoImage *image,
|
|||||||
{
|
{
|
||||||
int ret, idx, to_copy;
|
int ret, idx, to_copy;
|
||||||
struct stat info;
|
struct stat info;
|
||||||
IsoNode *new;
|
IsoNode *new = NULL;
|
||||||
IsoBoot *bootcat;
|
IsoBoot *bootcat;
|
||||||
char *name;
|
char *name = NULL;
|
||||||
char *dest = NULL;
|
char *dest = NULL;
|
||||||
ImageFileSourceData *data;
|
ImageFileSourceData *data;
|
||||||
_ImageFsData *fsdata;
|
_ImageFsData *fsdata;
|
||||||
@ -2887,7 +2903,6 @@ int image_builder_create_node(IsoNodeBuilder *builder, IsoImage *image,
|
|||||||
goto ex;
|
goto ex;
|
||||||
}
|
}
|
||||||
|
|
||||||
new = NULL;
|
|
||||||
switch (info.st_mode & S_IFMT) {
|
switch (info.st_mode & S_IFMT) {
|
||||||
case S_IFREG:
|
case S_IFREG:
|
||||||
{
|
{
|
||||||
@ -2901,9 +2916,8 @@ int image_builder_create_node(IsoNodeBuilder *builder, IsoImage *image,
|
|||||||
"More than one catalog node has been found. "
|
"More than one catalog node has been found. "
|
||||||
"We can continue, but that could lead to "
|
"We can continue, but that could lead to "
|
||||||
"problems");
|
"problems");
|
||||||
if (ret < 0) {
|
if (ret < 0)
|
||||||
goto ex;
|
goto ex;
|
||||||
}
|
|
||||||
iso_node_unref((IsoNode*)image->bootcat->node);
|
iso_node_unref((IsoNode*)image->bootcat->node);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2911,9 +2925,7 @@ int image_builder_create_node(IsoNodeBuilder *builder, IsoImage *image,
|
|||||||
* a regular file */
|
* a regular file */
|
||||||
new = calloc(1, sizeof(IsoBoot));
|
new = calloc(1, sizeof(IsoBoot));
|
||||||
if (new == NULL) {
|
if (new == NULL) {
|
||||||
ret = ISO_OUT_OF_MEM;
|
ret = ISO_OUT_OF_MEM; goto ex;
|
||||||
free(name);
|
|
||||||
goto ex;
|
|
||||||
}
|
}
|
||||||
bootcat = (IsoBoot *) new;
|
bootcat = (IsoBoot *) new;
|
||||||
bootcat->lba = data->sections[0].block;
|
bootcat->lba = data->sections[0].block;
|
||||||
@ -2924,10 +2936,7 @@ int image_builder_create_node(IsoNodeBuilder *builder, IsoImage *image,
|
|||||||
if (bootcat->size > 0) {
|
if (bootcat->size > 0) {
|
||||||
bootcat->content = calloc(1, bootcat->size);
|
bootcat->content = calloc(1, bootcat->size);
|
||||||
if (bootcat->content == NULL) {
|
if (bootcat->content == NULL) {
|
||||||
ret = ISO_OUT_OF_MEM;
|
ret = ISO_OUT_OF_MEM; goto ex;
|
||||||
free(name);
|
|
||||||
free(new);
|
|
||||||
goto ex;
|
|
||||||
}
|
}
|
||||||
to_copy = bootcat->size;
|
to_copy = bootcat->size;
|
||||||
if (bootcat->size > fsdata->catsize)
|
if (bootcat->size > fsdata->catsize)
|
||||||
@ -2944,16 +2953,14 @@ int image_builder_create_node(IsoNodeBuilder *builder, IsoImage *image,
|
|||||||
IsoFile *file;
|
IsoFile *file;
|
||||||
|
|
||||||
ret = iso_file_source_stream_new(src, &stream);
|
ret = iso_file_source_stream_new(src, &stream);
|
||||||
if (ret < 0) {
|
if (ret < 0)
|
||||||
free(name);
|
|
||||||
goto ex;
|
goto ex;
|
||||||
}
|
|
||||||
/* take a ref to the src, as stream has taken our ref */
|
/* take a ref to the src, as stream has taken our ref */
|
||||||
iso_file_source_ref(src);
|
iso_file_source_ref(src);
|
||||||
|
|
||||||
file = calloc(1, sizeof(IsoFile));
|
file = calloc(1, sizeof(IsoFile));
|
||||||
if (file == NULL) {
|
if (file == NULL) {
|
||||||
free(name);
|
|
||||||
iso_stream_unref(stream);
|
iso_stream_unref(stream);
|
||||||
{ret = ISO_OUT_OF_MEM; goto ex;}
|
{ret = ISO_OUT_OF_MEM; goto ex;}
|
||||||
}
|
}
|
||||||
@ -2977,7 +2984,6 @@ int image_builder_create_node(IsoNodeBuilder *builder, IsoImage *image,
|
|||||||
data->block_size_log2,
|
data->block_size_log2,
|
||||||
data->uncompressed_size, 0);
|
data->uncompressed_size, 0);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
free(name);
|
|
||||||
iso_stream_unref(stream);
|
iso_stream_unref(stream);
|
||||||
goto ex;
|
goto ex;
|
||||||
}
|
}
|
||||||
@ -3008,7 +3014,6 @@ int image_builder_create_node(IsoNodeBuilder *builder, IsoImage *image,
|
|||||||
ret = iso_msg_submit(image->id, ISO_EL_TORITO_WARN, 0,
|
ret = iso_msg_submit(image->id, ISO_EL_TORITO_WARN, 0,
|
||||||
"More than one ISO node has been found for the same boot image.");
|
"More than one ISO node has been found for the same boot image.");
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
free(name);
|
|
||||||
iso_stream_unref(stream);
|
iso_stream_unref(stream);
|
||||||
goto ex;
|
goto ex;
|
||||||
}
|
}
|
||||||
@ -3026,7 +3031,6 @@ int image_builder_create_node(IsoNodeBuilder *builder, IsoImage *image,
|
|||||||
/* source is a directory */
|
/* source is a directory */
|
||||||
new = calloc(1, sizeof(IsoDir));
|
new = calloc(1, sizeof(IsoDir));
|
||||||
if (new == NULL) {
|
if (new == NULL) {
|
||||||
free(name);
|
|
||||||
{ret = ISO_OUT_OF_MEM; goto ex;}
|
{ret = ISO_OUT_OF_MEM; goto ex;}
|
||||||
}
|
}
|
||||||
new->type = LIBISO_DIR;
|
new->type = LIBISO_DIR;
|
||||||
@ -3042,12 +3046,10 @@ int image_builder_create_node(IsoNodeBuilder *builder, IsoImage *image,
|
|||||||
|
|
||||||
ret = iso_file_source_readlink(src, dest, LIBISOFS_NODE_PATH_MAX);
|
ret = iso_file_source_readlink(src, dest, LIBISOFS_NODE_PATH_MAX);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
free(name);
|
|
||||||
goto ex;
|
goto ex;
|
||||||
}
|
}
|
||||||
link = calloc(1, sizeof(IsoSymlink));
|
link = calloc(1, sizeof(IsoSymlink));
|
||||||
if (link == NULL) {
|
if (link == NULL) {
|
||||||
free(name);
|
|
||||||
{ret = ISO_OUT_OF_MEM; goto ex;}
|
{ret = ISO_OUT_OF_MEM; goto ex;}
|
||||||
}
|
}
|
||||||
link->dest = strdup(dest);
|
link->dest = strdup(dest);
|
||||||
@ -3068,8 +3070,7 @@ int image_builder_create_node(IsoNodeBuilder *builder, IsoImage *image,
|
|||||||
IsoSpecial *special;
|
IsoSpecial *special;
|
||||||
special = calloc(1, sizeof(IsoSpecial));
|
special = calloc(1, sizeof(IsoSpecial));
|
||||||
if (special == NULL) {
|
if (special == NULL) {
|
||||||
free(name);
|
ret = ISO_OUT_OF_MEM; goto ex;
|
||||||
{ret = ISO_OUT_OF_MEM; goto ex;}
|
|
||||||
}
|
}
|
||||||
special->dev = info.st_rdev;
|
special->dev = info.st_rdev;
|
||||||
special->node.type = LIBISO_SPECIAL;
|
special->node.type = LIBISO_SPECIAL;
|
||||||
@ -3080,11 +3081,12 @@ int image_builder_create_node(IsoNodeBuilder *builder, IsoImage *image,
|
|||||||
new->refcount = 0;
|
new->refcount = 0;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
default:
|
||||||
|
ret = ISO_BAD_ISO_FILETYPE; goto ex;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* fill fields */
|
/* fill fields */
|
||||||
new->refcount++;
|
new->refcount++;
|
||||||
new->name = name;
|
new->name = name; name = NULL;
|
||||||
new->mode = info.st_mode;
|
new->mode = info.st_mode;
|
||||||
new->uid = info.st_uid;
|
new->uid = info.st_uid;
|
||||||
new->gid = info.st_gid;
|
new->gid = info.st_gid;
|
||||||
@ -3099,7 +3101,7 @@ int image_builder_create_node(IsoNodeBuilder *builder, IsoImage *image,
|
|||||||
|
|
||||||
ret = src_aa_to_node(src, new, 0);
|
ret = src_aa_to_node(src, new, 0);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
goto failure;
|
goto ex;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Attach ino as xinfo if valid and no IsoStream is involved */
|
/* Attach ino as xinfo if valid and no IsoStream is involved */
|
||||||
@ -3107,18 +3109,17 @@ int image_builder_create_node(IsoNodeBuilder *builder, IsoImage *image,
|
|||||||
!fsdata->make_new_ino) {
|
!fsdata->make_new_ino) {
|
||||||
ret = iso_node_set_ino(new, info.st_ino, 0);
|
ret = iso_node_set_ino(new, info.st_ino, 0);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
goto failure;
|
goto ex;
|
||||||
}
|
}
|
||||||
|
|
||||||
*node = new;
|
*node = new; new = NULL;
|
||||||
{ret = ISO_SUCCESS; goto ex;}
|
{ret = ISO_SUCCESS; goto ex;}
|
||||||
|
|
||||||
failure:;
|
ex:;
|
||||||
/* todo: stuff any possible memory leak here */
|
|
||||||
if (name != NULL)
|
if (name != NULL)
|
||||||
free(name);
|
free(name);
|
||||||
free(new);
|
if (new != NULL)
|
||||||
ex:;
|
iso_node_unref(new);
|
||||||
LIBISO_FREE_MEM(dest);
|
LIBISO_FREE_MEM(dest);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@ -3568,6 +3569,8 @@ int iso_image_import(IsoImage *image, IsoDataSource *src,
|
|||||||
iso_image_set_copyright_file_id(image, data->copyright_file_id);
|
iso_image_set_copyright_file_id(image, data->copyright_file_id);
|
||||||
iso_image_set_abstract_file_id(image, data->abstract_file_id);
|
iso_image_set_abstract_file_id(image, data->abstract_file_id);
|
||||||
iso_image_set_biblio_file_id(image, data->biblio_file_id);
|
iso_image_set_biblio_file_id(image, data->biblio_file_id);
|
||||||
|
iso_image_set_pvd_times(image, data->creation_time,
|
||||||
|
data->modification_time, data->expiration_time, data->effective_time);
|
||||||
|
|
||||||
if (features != NULL) {
|
if (features != NULL) {
|
||||||
*features = malloc(sizeof(IsoReadImageFeatures));
|
*features = malloc(sizeof(IsoReadImageFeatures));
|
||||||
|
@ -145,6 +145,10 @@ void iso_image_unref(IsoImage *image)
|
|||||||
free(image->copyright_file_id);
|
free(image->copyright_file_id);
|
||||||
free(image->abstract_file_id);
|
free(image->abstract_file_id);
|
||||||
free(image->biblio_file_id);
|
free(image->biblio_file_id);
|
||||||
|
free(image->creation_time);
|
||||||
|
free(image->modification_time);
|
||||||
|
free(image->expiration_time);
|
||||||
|
free(image->effective_time);
|
||||||
if (image->used_inodes != NULL)
|
if (image->used_inodes != NULL)
|
||||||
free(image->used_inodes);
|
free(image->used_inodes);
|
||||||
if (image->system_area_data != NULL)
|
if (image->system_area_data != NULL)
|
||||||
@ -335,6 +339,37 @@ const char *iso_image_get_biblio_file_id(const IsoImage *image)
|
|||||||
return image->biblio_file_id;
|
return image->biblio_file_id;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int iso_image_set_pvd_times(IsoImage *image,
|
||||||
|
char *creation_time, char *modification_time,
|
||||||
|
char *expiration_time, char *effective_time)
|
||||||
|
{
|
||||||
|
if (creation_time == NULL || modification_time == NULL ||
|
||||||
|
expiration_time == NULL || effective_time == NULL)
|
||||||
|
return ISO_NULL_POINTER;
|
||||||
|
image->creation_time = strdup(creation_time);
|
||||||
|
image->modification_time = strdup(modification_time);
|
||||||
|
image->expiration_time = strdup(expiration_time);
|
||||||
|
image->effective_time = strdup(effective_time);
|
||||||
|
if (image->creation_time == NULL || image->modification_time == NULL ||
|
||||||
|
image->expiration_time == NULL || image->effective_time == NULL)
|
||||||
|
return ISO_OUT_OF_MEM;
|
||||||
|
return ISO_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
int iso_image_get_pvd_times(IsoImage *image,
|
||||||
|
char **creation_time, char **modification_time,
|
||||||
|
char **expiration_time, char **effective_time)
|
||||||
|
{
|
||||||
|
if (image->creation_time == NULL || image->modification_time == NULL ||
|
||||||
|
image->expiration_time == NULL || image->effective_time == NULL)
|
||||||
|
return ISO_NULL_POINTER;
|
||||||
|
*creation_time = image->creation_time;
|
||||||
|
*modification_time = image->modification_time;
|
||||||
|
*expiration_time = image->expiration_time;
|
||||||
|
*effective_time = image->effective_time;
|
||||||
|
return ISO_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
int iso_image_get_msg_id(IsoImage *image)
|
int iso_image_get_msg_id(IsoImage *image)
|
||||||
{
|
{
|
||||||
return image->id;
|
return image->id;
|
||||||
|
@ -49,6 +49,10 @@ struct Iso_Image
|
|||||||
char *copyright_file_id;
|
char *copyright_file_id;
|
||||||
char *abstract_file_id;
|
char *abstract_file_id;
|
||||||
char *biblio_file_id;
|
char *biblio_file_id;
|
||||||
|
char *creation_time;
|
||||||
|
char *modification_time;
|
||||||
|
char *expiration_time;
|
||||||
|
char *effective_time;
|
||||||
|
|
||||||
/* el-torito boot catalog */
|
/* el-torito boot catalog */
|
||||||
struct el_torito_boot_catalog *bootcat;
|
struct el_torito_boot_catalog *bootcat;
|
||||||
@ -234,4 +238,8 @@ int iso_image_set_checksums(IsoImage *image, char *checksum_array,
|
|||||||
uint32_t idx_count, int flag);
|
uint32_t idx_count, int flag);
|
||||||
|
|
||||||
|
|
||||||
|
int iso_image_set_pvd_times(IsoImage *image,
|
||||||
|
char *creation_time, char *modification_time,
|
||||||
|
char *expiration_time, char *effective_time);
|
||||||
|
|
||||||
#endif /*LIBISO_IMAGE_H_*/
|
#endif /*LIBISO_IMAGE_H_*/
|
||||||
|
@ -84,7 +84,7 @@
|
|||||||
*/
|
*/
|
||||||
#define iso_lib_header_version_major 1
|
#define iso_lib_header_version_major 1
|
||||||
#define iso_lib_header_version_minor 2
|
#define iso_lib_header_version_minor 2
|
||||||
#define iso_lib_header_version_micro 6
|
#define iso_lib_header_version_micro 8
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get version of the libisofs library at runtime.
|
* Get version of the libisofs library at runtime.
|
||||||
@ -3027,6 +3027,36 @@ void iso_image_set_biblio_file_id(IsoImage *image, const char *biblio_file_id);
|
|||||||
*/
|
*/
|
||||||
const char *iso_image_get_biblio_file_id(const IsoImage *image);
|
const char *iso_image_get_biblio_file_id(const IsoImage *image);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the four timestamps from the Primary Volume Descriptor of the imported
|
||||||
|
* ISO image. The timestamps are strings which are either empty or consist
|
||||||
|
* of 17 digits of the form YYYYMMDDhhmmsscc.
|
||||||
|
* None of the returned string pointers shall be used for altering or freeing
|
||||||
|
* data. They are just for reading.
|
||||||
|
*
|
||||||
|
* @param image
|
||||||
|
* The image to be inquired.
|
||||||
|
* @param vol_creation_time
|
||||||
|
* Returns a pointer to the Volume Creation time:
|
||||||
|
* When "the information in the volume was created."
|
||||||
|
* @param vol_modification_time
|
||||||
|
* Returns a pointer to Volume Modification time:
|
||||||
|
* When "the information in the volume was last modified."
|
||||||
|
* @param vol_expiration_time
|
||||||
|
* Returns a pointer to Volume Expiration time:
|
||||||
|
* When "the information in the volume may be regarded as obsolete."
|
||||||
|
* @param vol_effective_time
|
||||||
|
* Returns a pointer to Volume Expiration time:
|
||||||
|
* When "the information in the volume may be used."
|
||||||
|
* @return
|
||||||
|
* ISO_SUCCESS or error
|
||||||
|
*
|
||||||
|
* @since 1.2.8
|
||||||
|
*/
|
||||||
|
int iso_image_get_pvd_times(IsoImage *image,
|
||||||
|
char **creation_time, char **modification_time,
|
||||||
|
char **expiration_time, char **effective_time);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create a new set of El-Torito bootable images by adding a boot catalog
|
* Create a new set of El-Torito bootable images by adding a boot catalog
|
||||||
* and the default boot image.
|
* and the default boot image.
|
||||||
@ -7424,11 +7454,14 @@ int iso_image_hfsplus_get_blessed(IsoImage *img, IsoNode ***blessed_nodes,
|
|||||||
/** Too many chained symbolic links (FAILURE, HIGH, -395) */
|
/** Too many chained symbolic links (FAILURE, HIGH, -395) */
|
||||||
#define ISO_DEEP_SYMLINK 0xE830FE75
|
#define ISO_DEEP_SYMLINK 0xE830FE75
|
||||||
|
|
||||||
|
/** Unrecognized file type in ISO image (FAILURE, HIGH, -396) */
|
||||||
|
#define ISO_BAD_ISO_FILETYPE 0xE830FE74
|
||||||
|
|
||||||
|
|
||||||
/* Internal developer note:
|
/* Internal developer note:
|
||||||
Place new error codes directly above this comment.
|
Place new error codes directly above this comment.
|
||||||
Newly introduced errors must get a message entry in
|
Newly introduced errors must get a message entry in
|
||||||
libisofs/message.c, function iso_error_to_msg()
|
libisofs/messages.c, function iso_error_to_msg()
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* ! PLACE NEW ERROR CODES ABOVE. NOT AFTER THIS LINE ! */
|
/* ! PLACE NEW ERROR CODES ABOVE. NOT AFTER THIS LINE ! */
|
||||||
|
@ -98,6 +98,7 @@ iso_image_get_data_preparer_id;
|
|||||||
iso_image_get_mips_boot_files;
|
iso_image_get_mips_boot_files;
|
||||||
iso_image_get_msg_id;
|
iso_image_get_msg_id;
|
||||||
iso_image_get_publisher_id;
|
iso_image_get_publisher_id;
|
||||||
|
iso_image_get_pvd_times;
|
||||||
iso_image_get_root;
|
iso_image_get_root;
|
||||||
iso_image_get_session_md5;
|
iso_image_get_session_md5;
|
||||||
iso_image_get_system_area;
|
iso_image_get_system_area;
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2009 Thomas Schmitt
|
* Copyright (c) 2009 - 2013 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
|
||||||
@ -527,6 +527,7 @@ int checksum_copy_old_nodes(Ecma119Image *target, IsoNode *node, int flag)
|
|||||||
if (md5_pt == NULL)
|
if (md5_pt == NULL)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
if (!target->will_cancel) {
|
||||||
ret = iso_node_lookup_attr(node, "isofs.cx", &value_length,
|
ret = iso_node_lookup_attr(node, "isofs.cx", &value_length,
|
||||||
&value, 0);
|
&value, 0);
|
||||||
if (ret == 1 && value_length == 4) {
|
if (ret == 1 && value_length == 4) {
|
||||||
@ -538,7 +539,13 @@ int checksum_copy_old_nodes(Ecma119Image *target, IsoNode *node, int flag)
|
|||||||
}
|
}
|
||||||
if (value != NULL)
|
if (value != NULL)
|
||||||
free(value);
|
free(value);
|
||||||
|
|
||||||
|
/* ts B30114 : It is unclear why these are removed here.
|
||||||
|
At least with the opts->will_cancel runs,
|
||||||
|
this is not appropriate.
|
||||||
|
*/
|
||||||
iso_node_remove_xinfo(node, checksum_md5_xinfo_func);
|
iso_node_remove_xinfo(node, checksum_md5_xinfo_func);
|
||||||
|
}
|
||||||
iso_node_remove_xinfo(node, checksum_cx_xinfo_func);
|
iso_node_remove_xinfo(node, checksum_cx_xinfo_func);
|
||||||
}
|
}
|
||||||
} else if (node->type == LIBISO_DIR) {
|
} else if (node->type == LIBISO_DIR) {
|
||||||
|
@ -500,6 +500,8 @@ const char *iso_error_to_msg(int errcode)
|
|||||||
return "Symbolic link cannot be resolved";
|
return "Symbolic link cannot be resolved";
|
||||||
case ISO_DEEP_SYMLINK:
|
case ISO_DEEP_SYMLINK:
|
||||||
return "Too many chained symbolic links";
|
return "Too many chained symbolic links";
|
||||||
|
case ISO_BAD_ISO_FILETYPE:
|
||||||
|
return "Unrecognized file type in ISO image";
|
||||||
default:
|
default:
|
||||||
return "Unknown error";
|
return "Unknown error";
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user