Made code branch of Libisofs_with_aaiP unconditional
and removed change marks by (co-)copyright claims.
This commit is contained in:
parent
c1ba7d93d9
commit
0e0ecc1d00
@ -16,9 +16,8 @@
|
||||
*
|
||||
*/
|
||||
|
||||
/* ts A90218 : libburn.h is not necessarily available */
|
||||
/*
|
||||
# include "libburn/libburn.h"
|
||||
Use the copy of the struct burn_source definition in libisofs.h
|
||||
*/
|
||||
#define LIBISOFS_WITHOUT_LIBBURN yes
|
||||
#include "libisofs.h"
|
||||
|
@ -1,29 +1,25 @@
|
||||
/*
|
||||
* Copyright (c) 2007 Vreixo Formoso
|
||||
* Copyright (c) 2009 Thomas Schmitt
|
||||
*
|
||||
* 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 as
|
||||
* published by the Free Software Foundation. See COPYING file for details.
|
||||
*/
|
||||
|
||||
/* ts A90116 : libisofs.h eventually defines aaip_xinfo_func */
|
||||
/* libisofs.h defines aaip_xinfo_func */
|
||||
#include "libisofs.h"
|
||||
|
||||
#include "builder.h"
|
||||
#include "node.h"
|
||||
#include "fsource.h"
|
||||
|
||||
/* ts A90121 : needed for image->builder_ignore_acl */
|
||||
#include "image.h"
|
||||
#include "aaip_0_2.h"
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <limits.h>
|
||||
|
||||
/* ts A90207 */
|
||||
#ifdef Libisofs_with_aaiP
|
||||
#include "aaip_0_2.h"
|
||||
#endif
|
||||
|
||||
|
||||
void iso_node_builder_ref(IsoNodeBuilder *builder)
|
||||
@ -97,11 +93,8 @@ int default_create_node(IsoNodeBuilder *builder, IsoImage *image,
|
||||
struct stat info;
|
||||
IsoNode *new;
|
||||
char *name;
|
||||
|
||||
#ifdef Libisofs_with_aaiP
|
||||
unsigned char *aa_string;
|
||||
char *a_text = NULL, *d_text = NULL;
|
||||
#endif /* Libisofs_with_aaiP */
|
||||
|
||||
if (builder == NULL || src == NULL || node == NULL) {
|
||||
return ISO_NULL_POINTER;
|
||||
@ -191,9 +184,6 @@ int default_create_node(IsoNodeBuilder *builder, IsoImage *image,
|
||||
iso_node_set_ctime(new, info.st_ctime);
|
||||
iso_node_set_uid(new, info.st_uid);
|
||||
|
||||
#ifdef Libisofs_with_aaiP
|
||||
|
||||
/* ts A90207 */
|
||||
/* Eventually set S_IRWXG from ACL */
|
||||
if (image->builder_ignore_acl) {
|
||||
ret = iso_file_source_get_aa_string(src, &aa_string, 4);
|
||||
@ -207,8 +197,7 @@ int default_create_node(IsoNodeBuilder *builder, IsoImage *image,
|
||||
1 << 15); /* free ACL texts */
|
||||
}
|
||||
|
||||
/* ts A90115 */
|
||||
/* obtain ownership of eventual AA string */
|
||||
/* Obtain ownership of eventual AA string */
|
||||
ret = iso_file_source_get_aa_string(src, &aa_string,
|
||||
1 | (image->builder_ignore_acl << 1) |
|
||||
(image->builder_ignore_ea << 2 ));
|
||||
@ -218,8 +207,6 @@ int default_create_node(IsoNodeBuilder *builder, IsoImage *image,
|
||||
return ret;
|
||||
}
|
||||
|
||||
#endif /* Libisofs_with_aaiP */
|
||||
|
||||
*node = new;
|
||||
|
||||
return ISO_SUCCESS;
|
||||
|
@ -1,15 +1,15 @@
|
||||
/*
|
||||
* Copyright (c) 2007 Vreixo Formoso
|
||||
* Copyright (c) 2007 Mario Danic
|
||||
* Copyright (c) 2009 Thomas Schmitt
|
||||
*
|
||||
* 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 as
|
||||
* published by the Free Software Foundation. See COPYING file for details.
|
||||
*/
|
||||
|
||||
/* ts A90218 : libburn.h is not necessarily available */
|
||||
/*
|
||||
# include "libburn/libburn.h"
|
||||
Use the copy of the struct burn_source definition in libisofs.h
|
||||
*/
|
||||
#define LIBISOFS_WITHOUT_LIBBURN yes
|
||||
#include "libisofs.h"
|
||||
@ -887,10 +887,7 @@ int ecma119_image_new(IsoImage *src, IsoWriteOpts *opts, Ecma119Image **img)
|
||||
target->rockridge = opts->rockridge;
|
||||
target->joliet = opts->joliet;
|
||||
target->iso1999 = opts->iso1999;
|
||||
|
||||
/* ts A90122 */
|
||||
target->aaip = opts->aaip;
|
||||
|
||||
target->always_gmt = opts->always_gmt;
|
||||
target->ino = 0;
|
||||
target->omit_version_numbers = opts->omit_version_numbers
|
||||
@ -1520,7 +1517,6 @@ int iso_write_opts_set_rrip_version_1_10(IsoWriteOpts *opts, int oldvers)
|
||||
return ISO_SUCCESS;
|
||||
}
|
||||
|
||||
/* ts A90125 */
|
||||
int iso_write_opts_set_aaip_susp_1_10(IsoWriteOpts *opts, int oldvers)
|
||||
{
|
||||
if (opts == NULL) {
|
||||
|
@ -1,5 +1,6 @@
|
||||
/*
|
||||
* Copyright (c) 2007 Vreixo Formoso
|
||||
* Copyright (c) 2009 Thomas Schmitt
|
||||
*
|
||||
* 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 as
|
||||
@ -42,7 +43,6 @@ struct iso_write_opts {
|
||||
unsigned int joliet :1;
|
||||
unsigned int iso1999 :1;
|
||||
|
||||
/* ts A90122 */
|
||||
unsigned int aaip :1; /* whether to write eventual ACL and EAs */
|
||||
|
||||
/* allways write timestamps in GMT */
|
||||
@ -115,7 +115,6 @@ struct iso_write_opts {
|
||||
*/
|
||||
unsigned int rrip_version_1_10 :1;
|
||||
|
||||
/* ts A90125 */
|
||||
/**
|
||||
* Write AAIP as extension according to SUSP 1.10 rather than SUSP 1.12.
|
||||
* I.e. without announcing it by an ER field and thus without the need
|
||||
@ -262,7 +261,6 @@ struct ecma119_image
|
||||
unsigned int eltorito :1;
|
||||
unsigned int iso1999 :1;
|
||||
|
||||
/* ts A90122 */
|
||||
unsigned int aaip :1; /* whether to write eventual ACLs and EAs */
|
||||
|
||||
/* allways write timestamps in GMT */
|
||||
@ -285,7 +283,6 @@ struct ecma119_image
|
||||
/** Write old fashioned RRIP-1.10 rather than RRIP-1.12 */
|
||||
unsigned int rrip_version_1_10 :1;
|
||||
|
||||
/* ts A90125 */
|
||||
/* Write AAIP as extension according to SUSP 1.10 rather than SUSP 1.12. */
|
||||
unsigned int aaip_susp_1_10 :1;
|
||||
|
||||
|
@ -1,5 +1,6 @@
|
||||
/*
|
||||
* Copyright (c) 2007 Vreixo Formoso
|
||||
* Copyright (c) 2009 Thomas Schmitt
|
||||
*
|
||||
* 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 as
|
||||
@ -18,10 +19,7 @@
|
||||
#include "image.h"
|
||||
#include "tree.h"
|
||||
#include "eltorito.h"
|
||||
|
||||
#ifdef Libisofs_with_aaiP
|
||||
#include "aaip_0_2.h"
|
||||
#endif
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
@ -61,11 +59,7 @@ struct iso_read_opts
|
||||
unsigned int norock : 1; /*< Do not read Rock Ridge extensions */
|
||||
unsigned int nojoliet : 1; /*< Do not read Joliet extensions */
|
||||
unsigned int noiso1999 : 1; /*< Do not read ISO 9660:1999 enhanced tree */
|
||||
|
||||
#ifdef Libisofs_with_aaiP
|
||||
/* ts A90121 */
|
||||
unsigned int noaaip : 1; /* Do not read AAIP extension for EA and ACL */
|
||||
#endif /* Libisofs_with_aaiP */
|
||||
unsigned int noaaip : 1; /* Do not read AAIP extension for xattr and ACL */
|
||||
|
||||
/**
|
||||
* When both Joliet and RR extensions are present, the RR tree is used.
|
||||
@ -222,9 +216,6 @@ typedef struct
|
||||
/** If ISO 9660:1999 is available on image */
|
||||
unsigned int iso1999 : 1;
|
||||
|
||||
#ifdef Libisofs_with_aaiP
|
||||
/* ts A90121 */
|
||||
|
||||
/** Whether AAIP info shall be loaded if it is present.
|
||||
* 1 = yes , 0 = no
|
||||
*/
|
||||
@ -235,8 +226,6 @@ typedef struct
|
||||
*/
|
||||
int aaip_version;
|
||||
|
||||
#endif /* ! Libisofs_with_aaiP */
|
||||
|
||||
/**
|
||||
* Number of blocks of the volume, as reported in the PVM.
|
||||
*/
|
||||
@ -290,9 +279,6 @@ struct image_fs_data
|
||||
off_t offset;
|
||||
} data;
|
||||
|
||||
#ifdef Libisofs_with_aaiP
|
||||
/* ts A90114 */
|
||||
|
||||
/**
|
||||
* malloc() storage for the string of AA fields which represent
|
||||
* ACLs and XFS-style Extended Attributes. (Not to be confused with
|
||||
@ -300,9 +286,6 @@ struct image_fs_data
|
||||
*/
|
||||
unsigned char *aa_string;
|
||||
|
||||
#endif /* Libisofs_with_aaiP */
|
||||
|
||||
|
||||
};
|
||||
|
||||
struct child_list
|
||||
@ -945,21 +928,12 @@ void ifs_free(IsoFileSource *src)
|
||||
|
||||
free(data->sections);
|
||||
free(data->name);
|
||||
|
||||
#ifdef Libisofs_with_aaiP
|
||||
/* ts A90115 */
|
||||
|
||||
if (data->aa_string != NULL)
|
||||
free(data->aa_string);
|
||||
|
||||
#endif /* Libisofs_with_aaiP */
|
||||
|
||||
free(data);
|
||||
}
|
||||
|
||||
|
||||
#ifdef Libisofs_with_aaiP
|
||||
|
||||
static
|
||||
int ifs_get_aa_string(IsoFileSource *src, unsigned char **aa_string, int flag)
|
||||
{
|
||||
@ -981,17 +955,10 @@ int ifs_get_aa_string(IsoFileSource *src, unsigned char **aa_string, int flag)
|
||||
return 1;
|
||||
}
|
||||
|
||||
#endif /* Libisofs_with_aaiP */
|
||||
|
||||
|
||||
IsoFileSourceIface ifs_class = {
|
||||
|
||||
#ifdef Libisofs_with_aaiP
|
||||
1, /* version */
|
||||
#else
|
||||
0, /* version */
|
||||
#endif
|
||||
|
||||
ifs_get_path,
|
||||
ifs_get_name,
|
||||
ifs_lstat,
|
||||
@ -1004,12 +971,8 @@ IsoFileSourceIface ifs_class = {
|
||||
ifs_readlink,
|
||||
ifs_get_filesystem,
|
||||
ifs_free,
|
||||
ifs_lseek
|
||||
|
||||
#ifdef Libisofs_with_aaiP
|
||||
,
|
||||
ifs_lseek,
|
||||
ifs_get_aa_string
|
||||
#endif
|
||||
|
||||
};
|
||||
|
||||
@ -1082,16 +1045,10 @@ int iso_file_source_new_ifs(IsoImageFilesystem *fs, IsoFileSource *parent,
|
||||
|
||||
uint32_t relocated_dir = 0;
|
||||
|
||||
#ifdef Libisofs_with_aaiP
|
||||
|
||||
/* ts A90115 */
|
||||
unsigned char *aa_string = NULL;
|
||||
size_t aa_size = 0, aa_len = 0, prev_field = 0;
|
||||
int aa_done = 0;
|
||||
|
||||
#endif /* Libisofs_with_aaiP */
|
||||
|
||||
|
||||
if (fs == NULL || fs->data == NULL || record == NULL || src == NULL) {
|
||||
return ISO_NULL_POINTER;
|
||||
}
|
||||
@ -1332,10 +1289,6 @@ int iso_file_source_new_ifs(IsoImageFilesystem *fs, IsoFileSource *parent,
|
||||
}
|
||||
continue;
|
||||
|
||||
|
||||
#ifdef Libisofs_with_aaiP
|
||||
/* ts A90115 */
|
||||
|
||||
/* Need to read AA in any case so it is available for S_IRWXG
|
||||
mapping in case that fsdata->aaip_load != 1
|
||||
*/
|
||||
@ -1350,10 +1303,7 @@ int iso_file_source_new_ifs(IsoImageFilesystem *fs, IsoFileSource *parent,
|
||||
continue;
|
||||
}
|
||||
|
||||
#endif /* Libisofs_with_aaiP */
|
||||
|
||||
|
||||
/* ts A90112 : this message is inflationary */
|
||||
/* This message is inflationary */
|
||||
/*
|
||||
} else {
|
||||
ret = iso_msg_submit(fsdata->msgid, ISO_SUSP_UNHANDLED, 0,
|
||||
@ -1609,14 +1559,8 @@ int iso_file_source_new_ifs(IsoImageFilesystem *fs, IsoFileSource *parent,
|
||||
}
|
||||
ifsdata->info = atts;
|
||||
ifsdata->name = name;
|
||||
|
||||
#ifdef Libisofs_with_aaiP
|
||||
|
||||
ifsdata->aa_string = aa_string;
|
||||
|
||||
#endif /* Libisofs_with_aaiP */
|
||||
|
||||
|
||||
/* save extents */
|
||||
ifsdata->sections = realloc(ifsdata->sections,
|
||||
(1 + ifsdata->nsections) * sizeof(struct iso_file_section));
|
||||
@ -1983,26 +1927,17 @@ int read_root_susp_entries(_ImageFsData *data, uint32_t block)
|
||||
(strncmp((char*)sue->data.ER.ext_id, "AAIP_0002", 9) == 0 ||
|
||||
strncmp((char*)sue->data.ER.ext_id, "AAIP_0100", 9) == 0)) {
|
||||
|
||||
/* ts A90113 : tolerate AAIP ER even if not supported */
|
||||
/* Tolerate AAIP ER even if not supported */
|
||||
iso_msg_debug(data->msgid,
|
||||
"Suitable AAIP ER found.");
|
||||
|
||||
#ifdef Libisofs_with_aaiP
|
||||
|
||||
if (((char*)sue->data.ER.ext_id)[6] == '1')
|
||||
data->aaip_version = 100;
|
||||
else
|
||||
data->aaip_version = 2;
|
||||
if (!data->aaip_load)
|
||||
iso_msg_submit(data->msgid, ISO_AAIP_IGNORED, 0,
|
||||
"Identifier for extension AAIP found, but loading is not enabled.");
|
||||
|
||||
#else /* Libisofs_with_aaiP */
|
||||
|
||||
iso_msg_submit(data->msgid, ISO_AAIP_IGNORED, 0,
|
||||
"Identifier for future extension AAIP found and ignored.");
|
||||
|
||||
#endif /* ! Libisofs_with_aaiP */
|
||||
"Identifier for extension AAIP found, but loading is not enabled.");
|
||||
|
||||
} else {
|
||||
ret = iso_msg_submit(data->msgid, ISO_SUSP_MULTIPLE_ER, 0,
|
||||
@ -2170,16 +2105,9 @@ int iso_image_filesystem_new(IsoDataSource *src, struct iso_read_opts *opts,
|
||||
data->file_mode = opts->file_mode & ~S_IFMT;
|
||||
data->dir_mode = opts->dir_mode & ~S_IFMT;
|
||||
data->msgid = msgid;
|
||||
|
||||
#ifdef Libisofs_with_aaiP
|
||||
/* ts A90121 */
|
||||
|
||||
data->aaip_load = !opts->noaaip;
|
||||
data->aaip_version = -1;
|
||||
|
||||
#endif /* Libisofs_with_aaiP */
|
||||
|
||||
|
||||
/* ??? ts Nov 25 2008 :
|
||||
Shouldn't this go to library initialization or even to app ?
|
||||
*/
|
||||
@ -2385,10 +2313,7 @@ int image_builder_create_node(IsoNodeBuilder *builder, IsoImage *image,
|
||||
IsoNode *new;
|
||||
char *name;
|
||||
ImageFileSourceData *data;
|
||||
|
||||
#ifdef Libisofs_with_aaiP
|
||||
unsigned char *aa_string;
|
||||
#endif /* Libisofs_with_aaiP */
|
||||
|
||||
if (builder == NULL || src == NULL || node == NULL || src->data == NULL) {
|
||||
return ISO_NULL_POINTER;
|
||||
@ -2560,10 +2485,7 @@ int image_builder_create_node(IsoNodeBuilder *builder, IsoImage *image,
|
||||
new->next = NULL;
|
||||
*node = new;
|
||||
|
||||
#ifdef Libisofs_with_aaiP
|
||||
/* ts A90115 */
|
||||
|
||||
/* obtain ownership of eventual AA string */
|
||||
/* Obtain ownership of eventual AA string */
|
||||
ret = iso_file_source_get_aa_string(src, &aa_string, 1);
|
||||
if (ret == 1 && aa_string != NULL) {
|
||||
_ImageFsData *fsdata = data->fs->data;
|
||||
@ -2575,7 +2497,6 @@ int image_builder_create_node(IsoNodeBuilder *builder, IsoImage *image,
|
||||
return ret;
|
||||
} else {
|
||||
|
||||
/* ts A90208 */
|
||||
/* Look for ACL and perform S_IRWXG mapping */
|
||||
if (aa_string != NULL)
|
||||
iso_aa_get_acl_text(aa_string, info.st_mode, &a_text, &d_text,
|
||||
@ -2589,9 +2510,6 @@ int image_builder_create_node(IsoNodeBuilder *builder, IsoImage *image,
|
||||
aaip_xinfo_func(aa_string, 1);
|
||||
}
|
||||
}
|
||||
|
||||
#endif /* Libisofs_with_aaiP */
|
||||
|
||||
return ISO_SUCCESS;
|
||||
}
|
||||
|
||||
@ -2966,14 +2884,8 @@ int iso_read_opts_new(IsoReadOpts **opts, int profile)
|
||||
|
||||
ropts->file_mode = 0444;
|
||||
ropts->dir_mode = 0555;
|
||||
|
||||
#ifdef Libisofs_with_aaiP
|
||||
/* ts A90121 */
|
||||
|
||||
ropts->noaaip= 1;
|
||||
|
||||
#endif /* Libisofs_with_aaiP */
|
||||
|
||||
*opts = ropts;
|
||||
return ISO_SUCCESS;
|
||||
}
|
||||
@ -3024,22 +2936,15 @@ int iso_read_opts_set_no_iso1999(IsoReadOpts *opts, int noiso1999)
|
||||
return ISO_SUCCESS;
|
||||
}
|
||||
|
||||
/* ts A90121 */
|
||||
int iso_read_opts_set_no_aaip(IsoReadOpts *opts, int noaaip)
|
||||
{
|
||||
if (opts == NULL) {
|
||||
return ISO_NULL_POINTER;
|
||||
}
|
||||
|
||||
#ifdef Libisofs_with_aaiP
|
||||
opts->noaaip = noaaip ? 1 : 0;
|
||||
#endif /* Libisofs_with_aaiP */
|
||||
|
||||
return ISO_SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
|
||||
int iso_read_opts_set_preferjoliet(IsoReadOpts *opts, int preferjoliet)
|
||||
{
|
||||
if (opts == NULL) {
|
||||
|
@ -1,5 +1,6 @@
|
||||
/*
|
||||
* Copyright (c) 2007 Vreixo Formoso
|
||||
* Copyright (c) 2009 Thomas Schmitt
|
||||
*
|
||||
* 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 as
|
||||
@ -10,15 +11,9 @@
|
||||
* Filesystem/FileSource implementation to access the local filesystem.
|
||||
*/
|
||||
|
||||
/* ts A90116 : libisofs.h eventually defines Libisofs_with_aaiP */
|
||||
#include "libisofs.h"
|
||||
|
||||
#include "fsource.h"
|
||||
#include "util.h"
|
||||
|
||||
#ifdef Libisofs_with_aaiP
|
||||
#include "aaip_0_2.h"
|
||||
#endif
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <sys/types.h>
|
||||
@ -475,10 +470,6 @@ void lfs_free(IsoFileSource *src)
|
||||
}
|
||||
|
||||
|
||||
|
||||
#ifdef Libisofs_with_aaiP
|
||||
/* ts A90116 */
|
||||
|
||||
static
|
||||
int lfs_get_aa_string(IsoFileSource *src, unsigned char **aa_string, int flag)
|
||||
{
|
||||
@ -528,17 +519,10 @@ ex:;
|
||||
return ret;
|
||||
}
|
||||
|
||||
#endif /* Libisofs_with_aaiP */
|
||||
|
||||
|
||||
IsoFileSourceIface lfs_class = {
|
||||
|
||||
#ifdef Libisofs_with_aaiP
|
||||
1, /* version */
|
||||
#else
|
||||
0, /* version */
|
||||
#endif
|
||||
|
||||
lfs_get_path,
|
||||
lfs_get_name,
|
||||
lfs_lstat,
|
||||
@ -551,12 +535,8 @@ IsoFileSourceIface lfs_class = {
|
||||
lfs_readlink,
|
||||
lfs_get_filesystem,
|
||||
lfs_free,
|
||||
lfs_lseek
|
||||
|
||||
#ifdef Libisofs_with_aaiP
|
||||
,
|
||||
lfs_lseek,
|
||||
lfs_get_aa_string
|
||||
#endif
|
||||
|
||||
};
|
||||
|
||||
@ -770,55 +750,29 @@ int iso_local_filesystem_new(IsoFilesystem **fs)
|
||||
}
|
||||
|
||||
|
||||
/* ts A90127 */
|
||||
int iso_local_get_acl_text(char *disk_path, char **text, int flag)
|
||||
{
|
||||
|
||||
#ifdef Libisofs_with_aaiP
|
||||
|
||||
int ret;
|
||||
|
||||
ret = aaip_get_acl_text(disk_path, text, flag & (1 | 16 | 32 | (1 << 15)));
|
||||
return ret;
|
||||
|
||||
#else /* Libisofs_with_aaiP */
|
||||
|
||||
return 0;
|
||||
|
||||
#endif /* ! Libisofs_with_aaiP */
|
||||
|
||||
}
|
||||
|
||||
|
||||
/* ts A90118 */
|
||||
int iso_local_set_acl_text(char *disk_path, char *text, int flag)
|
||||
{
|
||||
|
||||
#ifdef Libisofs_with_aaiP
|
||||
|
||||
int ret;
|
||||
|
||||
ret = aaip_set_acl_text(disk_path, text, flag & (1 | 32));
|
||||
if (ret < 0)
|
||||
return ISO_AAIP_NO_SET_LOCAL;
|
||||
return ret;
|
||||
|
||||
#else /* Libisofs_with_aaiP */
|
||||
|
||||
return 0;
|
||||
|
||||
#endif /* ! Libisofs_with_aaiP */
|
||||
|
||||
}
|
||||
|
||||
|
||||
/* ts A90131 */
|
||||
int iso_local_get_attrs(char *disk_path, size_t *num_attrs, char ***names,
|
||||
size_t **value_lengths, char ***values, int flag)
|
||||
{
|
||||
|
||||
#ifdef Libisofs_with_aaiP
|
||||
|
||||
int ret;
|
||||
|
||||
ret = aaip_get_attr_list(disk_path,
|
||||
@ -827,26 +781,12 @@ int iso_local_get_attrs(char *disk_path, size_t *num_attrs, char ***names,
|
||||
if (ret <= 0)
|
||||
return ISO_AAIP_NO_GET_LOCAL;
|
||||
return 1;
|
||||
|
||||
#else /* Libisofs_with_aaiP */
|
||||
|
||||
*num_attrs = 0;
|
||||
*names = NULL;
|
||||
*value_lengths = NULL;
|
||||
*values = NULL;
|
||||
return 1;
|
||||
|
||||
#endif /* ! Libisofs_with_aaiP */
|
||||
|
||||
}
|
||||
|
||||
|
||||
/* ts A90131 */
|
||||
int iso_local_set_attrs(char *disk_path, size_t num_attrs, char **names,
|
||||
size_t *value_lengths, char **values, int flag)
|
||||
{
|
||||
|
||||
#ifdef Libisofs_with_aaiP
|
||||
int ret;
|
||||
|
||||
ret = aaip_set_attr_list(disk_path, num_attrs, names, value_lengths,
|
||||
@ -859,27 +799,14 @@ int iso_local_set_attrs(char *disk_path, size_t num_attrs, char **names,
|
||||
return ISO_AAIP_NO_SET_LOCAL;
|
||||
}
|
||||
return 1;
|
||||
|
||||
#else /* Libisofs_with_aaiP */
|
||||
|
||||
if (num_attrs > 0)
|
||||
return ISO_AAIP_NOT_ENABLED;
|
||||
return 1;
|
||||
|
||||
#endif /* ! Libisofs_with_aaiP */
|
||||
|
||||
}
|
||||
|
||||
|
||||
/* ts A90207 */
|
||||
int iso_local_get_perms_wo_acl(char *disk_path, mode_t *st_mode, int flag)
|
||||
{
|
||||
struct stat stbuf;
|
||||
int ret;
|
||||
|
||||
#ifdef Libisofs_with_aaiP
|
||||
char *a_text = NULL;
|
||||
#endif
|
||||
|
||||
if (flag & 32)
|
||||
ret = stat(disk_path, &stbuf);
|
||||
@ -888,17 +815,11 @@ int iso_local_get_perms_wo_acl(char *disk_path, mode_t *st_mode, int flag)
|
||||
if (ret == -1)
|
||||
return -1;
|
||||
*st_mode = stbuf.st_mode & (S_IRWXU | S_IRWXG | S_IRWXO);
|
||||
|
||||
#ifdef Libisofs_with_aaiP
|
||||
|
||||
ret = iso_local_get_acl_text(disk_path, &a_text, 16 | (flag & 32));
|
||||
if (a_text != NULL) {
|
||||
aaip_cleanout_st_mode(a_text, st_mode, 4 | 16);
|
||||
iso_local_get_acl_text(disk_path, &a_text, 1 << 15); /* free a_text */
|
||||
}
|
||||
|
||||
#endif /* Libisofs_with_aaiP */
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
@ -117,7 +117,6 @@ IsoFilesystem* iso_file_source_get_filesystem(IsoFileSource *src)
|
||||
}
|
||||
|
||||
|
||||
/* ts A90115 */
|
||||
inline
|
||||
int iso_file_source_get_aa_string(IsoFileSource *src,
|
||||
unsigned char **aa_string, int flag)
|
||||
|
@ -1,5 +1,6 @@
|
||||
/*
|
||||
* Copyright (c) 2007-2008 Vreixo Formoso, Mario Danic
|
||||
* Copyright (c) 2009 Thomas Schmitt
|
||||
*
|
||||
* 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 as
|
||||
@ -472,7 +473,6 @@ struct iso_filesystem
|
||||
*/
|
||||
struct IsoFileSource_Iface
|
||||
{
|
||||
/* ts A90114 */
|
||||
/**
|
||||
* Tells the version of the interface:
|
||||
* Version 0 provides functions up to (*lseek)().
|
||||
@ -683,11 +683,10 @@ struct IsoFileSource_Iface
|
||||
|
||||
/* Add-ons of .version 1 begin here */
|
||||
|
||||
/* ts A90114 */
|
||||
/**
|
||||
* Valid only if .version is > 0. See above.
|
||||
* Get the AA string with encoded ACL and XFS-style Extended Attributes
|
||||
* xattr. (Not to be confused with ECMA-119 Extended Attributes).
|
||||
* Get the AA string with encoded ACL and xattr.
|
||||
* (Not to be confused with ECMA-119 Extended Attributes).
|
||||
*
|
||||
* bit1 and bit2 of flag should be implemented so that freshly fetched
|
||||
* info does not include the undesired ACL or xattr. Nevertheless if the
|
||||
@ -935,12 +934,11 @@ char *iso_get_local_charset(int flag);
|
||||
int iso_image_new(const char *name, IsoImage **image);
|
||||
|
||||
|
||||
/* ts A90121 */
|
||||
/**
|
||||
* Control whether ACL and XFS-style Extended Attributes xattr will be
|
||||
* imported from external filesystems (typically the local POSIX filesystem)
|
||||
* when new nodes get inserted. If enabled by iso_write_opts_set_aaip() they
|
||||
* will later be written into the image as AAIP extension fields.
|
||||
* Control whether ACL and xattr will be imported from external filesystems
|
||||
* (typically the local POSIX filesystem) when new nodes get inserted. If
|
||||
* enabled by iso_write_opts_set_aaip() they will later be written into the
|
||||
* image as AAIP extension fields.
|
||||
*
|
||||
* A change of this setting does neither affect existing IsoNode objects
|
||||
* nor the way how ACL and xattr are handled when loading an ISO image.
|
||||
@ -1061,7 +1059,7 @@ int iso_lib_is_compatible(int major, int minor, int micro);
|
||||
* ---> 1 [BACKUP]
|
||||
* POSIX compatibility for backup. Simple settings, ISO level is set to
|
||||
* 3 and RR extensions are enabled. Useful for backup purposes.
|
||||
* Note that ACL and XFS-style xattr are not enabled by default.
|
||||
* Note that ACL and xattr are not enabled by default.
|
||||
* If you enable them, expect them not to show up in the mounted image.
|
||||
* They will have to be retrieved by libisofs applications like xorriso.
|
||||
* ---> 2 [DISTRIBUTION]
|
||||
@ -1145,10 +1143,8 @@ int iso_write_opts_set_joliet(IsoWriteOpts *opts, int enable);
|
||||
*/
|
||||
int iso_write_opts_set_iso1999(IsoWriteOpts *opts, int enable);
|
||||
|
||||
/* ts A90122 */
|
||||
/**
|
||||
* Control writing of AAIP informations for ACL and XFS-style Extended
|
||||
* Attributes xattr.
|
||||
* Control writing of AAIP informations for ACL and xattr.
|
||||
* For importing ACL and xattr when inserting nodes from external filesystems
|
||||
* (e.g. the local POSIX filesystem) see iso_image_set_ignore_aclea().
|
||||
* For loading of this information from images see iso_read_opts_set_no_aaip().
|
||||
@ -1251,7 +1247,6 @@ int iso_write_opts_set_joliet_longer_paths(IsoWriteOpts *opts, int allow);
|
||||
*/
|
||||
int iso_write_opts_set_rrip_version_1_10(IsoWriteOpts *opts, int oldvers);
|
||||
|
||||
/* ts A90125 */
|
||||
/**
|
||||
* Write AAIP as extension according to SUSP 1.10 rather than SUSP 1.12.
|
||||
* I.e. without announcing it by an ER field and thus without the need
|
||||
@ -1586,8 +1581,8 @@ int iso_read_opts_set_no_joliet(IsoReadOpts *opts, int nojoliet);
|
||||
int iso_read_opts_set_no_iso1999(IsoReadOpts *opts, int noiso1999);
|
||||
|
||||
/**
|
||||
* Control reading of AAIP informations about ACL and XFS-style Extended
|
||||
* Attributes xattr when loading existing images.
|
||||
* Control reading of AAIP informations about ACL and xattr when loading
|
||||
* existing images.
|
||||
* For importing ACL and xattr when inserting nodes from external filesystems
|
||||
* (e.g. the local POSIX filesystem) see iso_image_set_ignore_aclea().
|
||||
* For eventual writing of this information see iso_write_opts_set_aaip().
|
||||
@ -3752,7 +3747,7 @@ int iso_file_source_readlink(IsoFileSource *src, char *buf, size_t bufsiz);
|
||||
|
||||
|
||||
/**
|
||||
* Get the AA string with encoded ACL and XFS-style Extended Attributes xattr.
|
||||
* Get the AA string with encoded ACL and xattr.
|
||||
* (Not to be confused with ECMA-119 Extended Attributes).
|
||||
* @param src The file source object to be inquired.
|
||||
* @param aa_string Returns a pointer to the AA string data. If no AA
|
||||
@ -4204,37 +4199,29 @@ void iso_stream_get_id(IsoStream *stream, unsigned int *fs_id, dev_t *dev_id,
|
||||
#define ISO_DATA_SOURCE_FATAL 0xF030FCFF
|
||||
|
||||
|
||||
/* ts A90121 */
|
||||
/** AAIP info with ACL or xattr in ISO image will be ignored
|
||||
(NOTE, HIGH, -336) */
|
||||
#define ISO_AAIP_IGNORED 0xB030FEB0
|
||||
|
||||
/* ts A90130 */
|
||||
/** Error with decoding ACL from AAIP info (FAILURE, HIGH, -337) */
|
||||
#define ISO_AAIP_BAD_ACL 0xE830FEAF
|
||||
|
||||
/* ts A90130 */
|
||||
/** Error with encoding ACL for AAIP (FAILURE, HIGH, -338) */
|
||||
#define ISO_AAIP_BAD_ACL_TEXT 0xE830FEAE
|
||||
|
||||
/* ts A90130 */
|
||||
/** AAIP processing for ACL or xattr not enabled at compile time
|
||||
(FAILURE, HIGH, -339) */
|
||||
#define ISO_AAIP_NOT_ENABLED 0xE830FEAD
|
||||
|
||||
/* ts A90130 */
|
||||
/** Error with decoding AAIP info for ACL or xattr (FAILURE, HIGH, -340) */
|
||||
#define ISO_AAIP_BAD_AASTRING 0xE830FEAC
|
||||
|
||||
/* ts A90131 */
|
||||
/** Error with reading ACL or xattr from local file (FAILURE, HIGH, -341) */
|
||||
#define ISO_AAIP_NO_GET_LOCAL 0xE830FEAB
|
||||
|
||||
/* ts A90131 */
|
||||
/** Error with attaching ACL or xattr to local file (FAILURE, HIGH, -342) */
|
||||
#define ISO_AAIP_NO_SET_LOCAL 0xE830FEAA
|
||||
|
||||
/* ts A90206 */
|
||||
/** Unallowed attempt to set an xattr with non-userspace name
|
||||
(FAILURE, HIGH, -343) */
|
||||
#define ISO_AAIP_NON_USER_NAME 0xE830FEA9
|
||||
@ -4242,18 +4229,12 @@ void iso_stream_get_id(IsoStream *stream, unsigned int *fs_id, dev_t *dev_id,
|
||||
|
||||
/* --------------------------------- AAIP --------------------------------- */
|
||||
|
||||
/* ts A90112 : Enable experiments about xattr and ACL
|
||||
*/
|
||||
#define Libisofs_with_aaiP yes
|
||||
|
||||
|
||||
/* ts A90114 */
|
||||
/**
|
||||
* Function to identify and manage AA strings as xinfo of IsoNode.
|
||||
*
|
||||
* An AA string contains the Attribute List with the xattr and ACL of a node
|
||||
* in the image tree. It is formatted according to libisofs specification
|
||||
* AAIP-0.2 and ready to be written into the System Use Area resp. Continuation
|
||||
* AAIP-1.0 and ready to be written into the System Use Area resp. Continuation
|
||||
* Area of a directory entry in an ISO image.
|
||||
*
|
||||
* Applications are not supposed to manipulate AA strings directly. They should
|
||||
@ -4272,7 +4253,6 @@ void iso_stream_get_id(IsoStream *stream, unsigned int *fs_id, dev_t *dev_id,
|
||||
int aaip_xinfo_func(void *data, int flag);
|
||||
|
||||
|
||||
/* ts A90130 */
|
||||
/**
|
||||
* Get the eventual ACLs which are associated with the node.
|
||||
* The result will be in "long" text form as of man acl resp. acl_to_text().
|
||||
@ -4306,7 +4286,6 @@ int iso_node_get_acl_text(IsoNode *node,
|
||||
char **access_text, char **default_text, int flag);
|
||||
|
||||
|
||||
/* ts A90130 */
|
||||
/**
|
||||
* Set the ACLs of the given node to the lists in parameters access_text and
|
||||
* default_text or delete them.
|
||||
@ -4341,7 +4320,6 @@ int iso_node_get_acl_text(IsoNode *node,
|
||||
int iso_node_set_acl_text(IsoNode *node,
|
||||
char *access_text, char *default_text, int flag);
|
||||
|
||||
/* ts A90206 */
|
||||
/**
|
||||
* Like iso_node_get_permissions but reflecting ACL entry "group::" in S_IRWXG
|
||||
* rather than ACL entry "mask::". This is necessary if the permissions of a
|
||||
@ -4358,10 +4336,8 @@ int iso_node_set_acl_text(IsoNode *node,
|
||||
mode_t iso_node_get_perms_wo_acl(const IsoNode *node);
|
||||
|
||||
|
||||
/* ts A90131 */
|
||||
/**
|
||||
* Get the list of XFS-style Extended Attributes xattr which is associated
|
||||
* with the node.
|
||||
* Get the list of xattr which is associated with the node.
|
||||
* The resulting data may finally be disposed by a call to this function
|
||||
* with flag bit15 set, or its components may be freed one-by-one.
|
||||
* The following values are either NULL or malloc() memory:
|
||||
@ -4401,10 +4377,8 @@ mode_t iso_node_get_perms_wo_acl(const IsoNode *node);
|
||||
int iso_node_get_attrs(IsoNode *node, size_t *num_attrs,
|
||||
char ***names, size_t **value_lengths, char ***values, int flag);
|
||||
|
||||
/* ts A90131 */
|
||||
/**
|
||||
* Set the list of XFS-style Extended Attributes xattr which is associated
|
||||
* with the node.
|
||||
* Set the list of xattr which is associated with the node.
|
||||
* The data get copied so that you may dispose your input data afterwards.
|
||||
*
|
||||
* If enabled by flag bit0 then the submitted list of attributes will not only
|
||||
@ -4442,16 +4416,17 @@ int iso_node_set_attrs(IsoNode *node, size_t num_attrs, char **names,
|
||||
size_t *value_lengths, char **values, int flag);
|
||||
|
||||
|
||||
/* -------- This is an interface to the ACL of the local filesystem -------- */
|
||||
/* ----- This is an interface to ACL and xattr of the local filesystem ----- */
|
||||
|
||||
/**
|
||||
* libisofs has an internal system dependent adapter to ACL operations. For
|
||||
* the sake of completeness and simplicity it exposes this functionality to
|
||||
* its applications which might want to get and set ACLs from local files.
|
||||
* libisofs has an internal system dependent adapter to ACL and xattr
|
||||
* operations. For the sake of completeness and simplicity it exposes this
|
||||
* functionality to its applications which might want to get and set ACLs
|
||||
* from local files.
|
||||
*/
|
||||
|
||||
/* ts A90127 */
|
||||
/**
|
||||
* Get the ACL of the given file in the local filesystem in long text form.
|
||||
* Get an ACL of the given file in the local filesystem in long text form.
|
||||
*
|
||||
* @param disk_path
|
||||
* Path to the file
|
||||
@ -4461,7 +4436,7 @@ int iso_node_set_attrs(IsoNode *node, size_t num_attrs, char **names,
|
||||
* with bit15 set.
|
||||
* @param flag
|
||||
* Bitfield for control purposes
|
||||
* bit0= get default ACL rather than access ACL
|
||||
* bit0= get "default" ACL rather than "access" ACL
|
||||
* bit4= set *text = NULL and return 2
|
||||
* if the ACL matches st_mode permissions.
|
||||
* bit5= in case of symbolic link: inquire link target
|
||||
@ -4479,7 +4454,6 @@ int iso_node_set_attrs(IsoNode *node, size_t num_attrs, char **names,
|
||||
int iso_local_get_acl_text(char *disk_path, char **text, int flag);
|
||||
|
||||
|
||||
/* ts A90118 */
|
||||
/**
|
||||
* Set the ACL of the given file in the local filesystem to a given list
|
||||
* in long text form.
|
||||
@ -4490,7 +4464,7 @@ int iso_local_get_acl_text(char *disk_path, char **text, int flag);
|
||||
* The input text (0 terminated, ACL long text form)
|
||||
* @param flag
|
||||
* Bitfield for control purposes
|
||||
* bit0= set default ACL rather than access ACL
|
||||
* bit0= set "default" ACL rather than "access" ACL
|
||||
* bit5= in case of symbolic link: manipulate link target
|
||||
* @return
|
||||
* > 0 ok
|
||||
@ -4504,7 +4478,6 @@ int iso_local_get_acl_text(char *disk_path, char **text, int flag);
|
||||
int iso_local_set_acl_text(char *disk_path, char *text, int flag);
|
||||
|
||||
|
||||
/* ts A90207 */
|
||||
/**
|
||||
* Obtain permissions of a file in the local filesystem which shall reflect
|
||||
* ACL entry "group::" in S_IRWXG rather than ACL entry "mask::". This is
|
||||
@ -4526,7 +4499,6 @@ int iso_local_set_acl_text(char *disk_path, char *text, int flag);
|
||||
int iso_local_get_perms_wo_acl(char *disk_path, mode_t *st_mode, int flag);
|
||||
|
||||
|
||||
/* ts A90131 */
|
||||
/**
|
||||
* Get xattr and non-trivial ACLs of the given file in the local filesystem.
|
||||
* The resulting data has finally to be disposed by a call to this function
|
||||
@ -4564,7 +4536,6 @@ int iso_local_get_attrs(char *disk_path, size_t *num_attrs, char ***names,
|
||||
size_t **value_lengths, char ***values, int flag);
|
||||
|
||||
|
||||
/* ts A90131 */
|
||||
/**
|
||||
* Attach a list of xattr and ACLs to the given file in the local filesystem.
|
||||
*
|
||||
@ -4600,7 +4571,6 @@ int iso_local_set_attrs(char *disk_path, size_t num_attrs, char **names,
|
||||
|
||||
#ifdef LIBISOFS_WITHOUT_LIBBURN
|
||||
|
||||
/* ts A90218 */
|
||||
/**
|
||||
This is a copy from the API of libburn-0.6.0 (under GPL).
|
||||
It is supposed to be as stable as any overall include of libburn.h.
|
||||
@ -4609,6 +4579,10 @@ int iso_local_set_attrs(char *disk_path, size_t num_attrs, char **names,
|
||||
|
||||
Libisofs does not need to be linked with libburn at all. But if it is
|
||||
linked with libburn then it must be libburn-0.4.2 or later.
|
||||
|
||||
An application that provides own struct burn_source objects and does not
|
||||
include libburn/libburn.h has to define LIBISOFS_WITHOUT_LIBBURN before
|
||||
including libisofs/libisofs.h in order to make this copy available.
|
||||
*/
|
||||
|
||||
|
||||
@ -4702,7 +4676,6 @@ struct burn_source {
|
||||
off_t (*get_size)(struct burn_source *);
|
||||
|
||||
|
||||
/* ts A70125 : BROKE BINARY BACKWARD COMPATIBILITY AT libburn-0.3.1. */
|
||||
/* @since 0.3.2 */
|
||||
/** Program the reply of (*get_size) to a fixed value. It is advised
|
||||
to implement this by a attribute off_t fixed_size; in *data .
|
||||
@ -4750,7 +4723,6 @@ struct burn_source {
|
||||
void *data;
|
||||
|
||||
|
||||
/* ts A71222 : Supposed to be binary backwards compatible extension. */
|
||||
/* @since 0.4.2 */
|
||||
/** Valid only if above member .(*read)() is NULL. This indicates a
|
||||
version of struct burn_source younger than 0.
|
||||
|
@ -1,5 +1,6 @@
|
||||
/*
|
||||
* Copyright (c) 2007 Vreixo Formoso
|
||||
* Copyright (c) 2009 Thomas Schmitt
|
||||
*
|
||||
* 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 as
|
||||
@ -9,11 +10,7 @@
|
||||
#include "libisofs.h"
|
||||
#include "node.h"
|
||||
#include "stream.h"
|
||||
|
||||
#ifdef Libisofs_with_aaiP
|
||||
#include "aaip_0_2.h"
|
||||
#endif
|
||||
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
@ -277,7 +274,6 @@ const char *iso_node_get_name(const IsoNode *node)
|
||||
return node->name;
|
||||
}
|
||||
|
||||
/* ts A90128 */
|
||||
/**
|
||||
* See API function iso_node_set_permissions()
|
||||
*
|
||||
@ -290,17 +286,12 @@ int iso_node_set_perms_internal(IsoNode *node, mode_t mode, int flag)
|
||||
|
||||
node->mode = (node->mode & S_IFMT) | (mode & ~S_IFMT);
|
||||
|
||||
#ifdef Libisofs_with_aaiP
|
||||
/* ts A90119 */
|
||||
|
||||
/* If the node has ACL info : update ACL */
|
||||
ret = 1;
|
||||
if (!(flag & 1))
|
||||
ret = iso_node_set_acl_text(node, "", "", 2);
|
||||
|
||||
return ret;
|
||||
#endif
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
@ -1352,7 +1343,6 @@ int iso_node_new_special(char *name, mode_t mode, dev_t dev,
|
||||
}
|
||||
|
||||
|
||||
/* ts A90202 */
|
||||
/* @param flag bit0= inverse: cleanout everything but del_name
|
||||
*/
|
||||
static
|
||||
@ -1380,9 +1370,6 @@ int attrs_cleanout_name(char *del_name, size_t *num_attrs, char **names,
|
||||
}
|
||||
|
||||
|
||||
#ifdef Libisofs_with_aaiP
|
||||
|
||||
/* ts A90207 */
|
||||
/**
|
||||
* Backend of iso_node_get_attrs() with parameter node replaced by the
|
||||
* AA string from where to get the attribute list.
|
||||
@ -1459,16 +1446,10 @@ ex:;
|
||||
return ret;
|
||||
}
|
||||
|
||||
#endif /* ! Libisofs_with_aaiP */
|
||||
|
||||
|
||||
/* ts A90116 */
|
||||
int iso_node_get_attrs(IsoNode *node, size_t *num_attrs,
|
||||
char ***names, size_t **value_lengths, char ***values, int flag)
|
||||
{
|
||||
|
||||
#ifdef Libisofs_with_aaiP
|
||||
|
||||
void *xipt;
|
||||
unsigned char *aa_string = NULL;
|
||||
int ret;
|
||||
@ -1489,21 +1470,9 @@ int iso_node_get_attrs(IsoNode *node, size_t *num_attrs,
|
||||
ret = iso_aa_get_attrs(aa_string, num_attrs, names, value_lengths, values,
|
||||
flag);
|
||||
return ret;
|
||||
|
||||
#else /* Libisofs_with_aaiP */
|
||||
|
||||
*num_attrs = 0;
|
||||
*names = NULL;
|
||||
*value_lengths = NULL;
|
||||
*values = NULL;
|
||||
|
||||
#endif /* ! Libisofs_with_aaiP */
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
/* ts A90205 */
|
||||
/* Enlarge attribute list */
|
||||
static
|
||||
int attr_enlarge_list(char ***names, size_t **value_lengths, char ***values,
|
||||
@ -1527,7 +1496,6 @@ int attr_enlarge_list(char ***names, size_t **value_lengths, char ***values,
|
||||
}
|
||||
|
||||
|
||||
/* ts A90205 */
|
||||
/* Merge attribute list of node and given new attribute list into
|
||||
attribute list returned by m_* parameters.
|
||||
The m_* paramters have finally to be freed by a call with bit15 set.
|
||||
@ -1668,13 +1636,9 @@ int iso_node_merge_xattr(IsoNode *node, size_t num_attrs, char **names,
|
||||
}
|
||||
|
||||
|
||||
/* ts A90121 */
|
||||
int iso_node_set_attrs(IsoNode *node, size_t num_attrs, char **names,
|
||||
size_t *value_lengths, char **values, int flag)
|
||||
{
|
||||
|
||||
#ifdef Libisofs_with_aaiP
|
||||
|
||||
int ret, acl_saved = 0;
|
||||
size_t sret, result_len, m_num = 0, *m_value_lengths = NULL, i;
|
||||
unsigned char *result;
|
||||
@ -1745,18 +1709,9 @@ ex:;
|
||||
iso_node_merge_xattr(node, num_attrs, names, value_lengths, values,
|
||||
&m_num, &m_names, &m_value_lengths, &m_values, 1 << 15);
|
||||
return ret;
|
||||
|
||||
#else /* Libisofs_with_aaiP */
|
||||
|
||||
return ISO_AAIP_NOT_ENABLED;
|
||||
|
||||
#endif /* ! Libisofs_with_aaiP */
|
||||
|
||||
}
|
||||
|
||||
|
||||
#ifdef Libisofs_with_aaiP
|
||||
|
||||
static
|
||||
int iso_decode_acl(unsigned char *v_data, size_t v_len, size_t *consumed,
|
||||
char **text, size_t *text_fill, int flag)
|
||||
@ -1784,7 +1739,6 @@ int iso_decode_acl(unsigned char *v_data, size_t v_len, size_t *consumed,
|
||||
}
|
||||
|
||||
|
||||
/* ts A90207 */
|
||||
/**
|
||||
* Backend of iso_node_get_acl_text() with parameter node replaced by the
|
||||
* attribute list from where to get the ACL and by the associated st_mode
|
||||
@ -1856,16 +1810,9 @@ bad_decode:;
|
||||
}
|
||||
|
||||
|
||||
#endif /* ! Libisofs_with_aaiP */
|
||||
|
||||
|
||||
/* ts A90130 */
|
||||
int iso_node_get_acl_text(IsoNode *node,
|
||||
char **access_text, char **default_text, int flag)
|
||||
{
|
||||
|
||||
#ifdef Libisofs_with_aaiP
|
||||
|
||||
size_t num_attrs = 0, *value_lengths = NULL;
|
||||
char **names = NULL, **values = NULL;
|
||||
mode_t st_mode = 0;
|
||||
@ -1886,20 +1833,9 @@ int iso_node_get_acl_text(IsoNode *node,
|
||||
iso_node_get_attrs(node, &num_attrs, &names,
|
||||
&value_lengths, &values, 1 << 15); /* free memory */
|
||||
return ret;
|
||||
|
||||
#else /* Libisofs_with_aaiP */
|
||||
|
||||
*access_text = *default_text = NULL;
|
||||
return ISO_AAIP_NOT_ENABLED;
|
||||
|
||||
#endif /* ! Libisofs_with_aaiP */
|
||||
|
||||
}
|
||||
|
||||
|
||||
#ifdef Libisofs_with_aaiP
|
||||
|
||||
/* ts A90207 */
|
||||
int iso_aa_get_acl_text(unsigned char *aa_string, mode_t st_mode,
|
||||
char **access_text, char **default_text, int flag)
|
||||
{
|
||||
@ -1924,17 +1860,10 @@ ex:;
|
||||
return ret;
|
||||
}
|
||||
|
||||
#endif /* Libisofs_with_aaiP */
|
||||
|
||||
|
||||
|
||||
/* ts A90130 */
|
||||
int iso_node_set_acl_text(IsoNode *node, char *access_text, char *default_text,
|
||||
int flag)
|
||||
{
|
||||
|
||||
#ifdef Libisofs_with_aaiP
|
||||
|
||||
size_t num_attrs = 0, *value_lengths = NULL, i, j, consumed;
|
||||
size_t a_text_fill = 0, d_text_fill = 0;
|
||||
size_t v_len, acl_len= 0;
|
||||
@ -2109,24 +2038,11 @@ ex:;
|
||||
bad_decode:;
|
||||
ret = ISO_AAIP_BAD_ACL;
|
||||
goto ex;
|
||||
|
||||
#else /* Libisofs_with_aaiP */
|
||||
|
||||
if (access_text != NULL || default_text != NULL)
|
||||
return ISO_AAIP_NOT_ENABLED;
|
||||
return 1;
|
||||
|
||||
#endif /* ! Libisofs_with_aaiP */
|
||||
|
||||
}
|
||||
|
||||
|
||||
/* ts A90206 */
|
||||
mode_t iso_node_get_perms_wo_acl(const IsoNode *node)
|
||||
{
|
||||
|
||||
#ifdef Libisofs_with_aaiP
|
||||
|
||||
mode_t st_mode;
|
||||
int ret;
|
||||
char *a_text = NULL, *d_text = NULL;
|
||||
@ -2140,12 +2056,5 @@ mode_t iso_node_get_perms_wo_acl(const IsoNode *node)
|
||||
ex:;
|
||||
iso_node_get_acl_text((IsoNode *) node, &a_text, &d_text, 1 << 15);
|
||||
return st_mode;
|
||||
|
||||
#else /* Libisofs_with_aaiP */
|
||||
|
||||
return iso_node_get_permissions(node);
|
||||
|
||||
#endif /* ! Libisofs_with_aaiP */
|
||||
|
||||
}
|
||||
|
||||
|
@ -332,7 +332,6 @@ void iso_dir_iter_unregister(IsoDirIter *iter);
|
||||
void iso_notify_dir_iters(IsoNode *node, int flag);
|
||||
|
||||
|
||||
/* ts A90128 */
|
||||
/**
|
||||
* See API function iso_node_set_permissions()
|
||||
*
|
||||
@ -342,7 +341,6 @@ void iso_notify_dir_iters(IsoNode *node, int flag);
|
||||
int iso_node_set_perms_internal(IsoNode *node, mode_t mode, int flag);
|
||||
|
||||
|
||||
/* ts A90207 */
|
||||
/**
|
||||
* Like iso_node_get_acl_text() with param node replaced by aa_string and
|
||||
* st_mode from where to obtain the ACLs. All other parameter specs apply.
|
||||
|
@ -1,38 +1,27 @@
|
||||
/*
|
||||
* Copyright (c) 2007 Vreixo Formoso
|
||||
* Copyright (c) 2007 Mario Danic
|
||||
* Copyright (c) 2009 Thomas Schmitt
|
||||
*
|
||||
* 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 as
|
||||
* published by the Free Software Foundation. See COPYING file for details.
|
||||
*/
|
||||
|
||||
|
||||
/* ts A90116 : libisofs.h eventually defines Libisofs_with_aaiP */
|
||||
#include "libisofs.h"
|
||||
|
||||
#include "rockridge.h"
|
||||
#include "node.h"
|
||||
#include "ecma119_tree.h"
|
||||
#include "writer.h"
|
||||
#include "messages.h"
|
||||
#include "image.h"
|
||||
|
||||
#ifdef Libisofs_with_aaiP
|
||||
#include "aaip_0_2.h"
|
||||
#endif
|
||||
|
||||
#include <string.h>
|
||||
|
||||
|
||||
#ifdef Libisofs_with_aaiP
|
||||
|
||||
/* ts A90125 */
|
||||
static
|
||||
int susp_add_ES(Ecma119Image *t, struct susp_info *susp, int to_ce, int seqno);
|
||||
|
||||
#endif /* Libisofs_with_aaiP */
|
||||
|
||||
|
||||
static
|
||||
int susp_append(Ecma119Image *t, struct susp_info *susp, uint8_t *data)
|
||||
@ -479,9 +468,6 @@ int rrip_add_SL(Ecma119Image *t, struct susp_info *susp, uint8_t **comp,
|
||||
}
|
||||
|
||||
|
||||
#ifdef Libisofs_with_aaiP
|
||||
|
||||
/* ts A90112 */
|
||||
/*
|
||||
@param flag bit0= only account sizes in sua_free resp. ce_len
|
||||
parameters susp and data may be NULL in this case
|
||||
@ -544,8 +530,6 @@ int aaip_add_AA(Ecma119Image *t, struct susp_info *susp,
|
||||
return ISO_SUCCESS;
|
||||
}
|
||||
|
||||
#endif /* Libisofs_with_aaiP */
|
||||
|
||||
|
||||
/**
|
||||
* Add a SUSP "ER" System Use Entry to identify the Rock Ridge specification.
|
||||
@ -721,7 +705,6 @@ int susp_add_SP(Ecma119Image *t, struct susp_info *susp)
|
||||
}
|
||||
|
||||
|
||||
/* ts A90125 */
|
||||
/**
|
||||
* SUSP 1.12: [...] shall specify as an 8-bit number the Extension
|
||||
* Sequence Number of the extension specification utilized in the entries
|
||||
@ -750,8 +733,6 @@ int susp_add_ES(Ecma119Image *t, struct susp_info *susp, int to_ce, int seqno)
|
||||
}
|
||||
|
||||
|
||||
/* ts A90114 */
|
||||
|
||||
int aaip_xinfo_func(void *data, int flag)
|
||||
{
|
||||
if (flag & 1) {
|
||||
@ -761,7 +742,6 @@ int aaip_xinfo_func(void *data, int flag)
|
||||
}
|
||||
|
||||
|
||||
/* ts A90117 */
|
||||
/**
|
||||
* Compute SUA lentgth and eventual Continuation Area length of field NM and
|
||||
* eventually fields SL and AA. Because CA usage makes necessary the use of
|
||||
@ -782,13 +762,9 @@ int susp_calc_nm_sl_aa(Ecma119Image *t, Ecma119Node *n, size_t space,
|
||||
{
|
||||
char *name;
|
||||
size_t namelen, su_mem, ce_mem;
|
||||
|
||||
#ifdef Libisofs_with_aaiP
|
||||
/* ts A90112 */
|
||||
void *xipt;
|
||||
size_t num_aapt = 0, sua_free = 0;
|
||||
int ret;
|
||||
#endif
|
||||
|
||||
su_mem = *su_size;
|
||||
ce_mem = *ce;
|
||||
@ -922,11 +898,8 @@ int susp_calc_nm_sl_aa(Ecma119Image *t, Ecma119Node *n, size_t space,
|
||||
|
||||
}
|
||||
|
||||
#ifdef Libisofs_with_aaiP
|
||||
/* ts A90112 */
|
||||
xipt = NULL;
|
||||
|
||||
/* obtain num_aapt from node */
|
||||
xipt = NULL;
|
||||
num_aapt = 0;
|
||||
if (t->aaip) {
|
||||
ret = iso_node_get_xinfo(n->node, aaip_xinfo_func, &xipt);
|
||||
@ -942,9 +915,6 @@ int susp_calc_nm_sl_aa(Ecma119Image *t, Ecma119Node *n, size_t space,
|
||||
if (*ce > 0 && !(flag & 1))
|
||||
goto unannounced_ca;
|
||||
}
|
||||
|
||||
#endif /* Libisofs_with_aaiP */
|
||||
|
||||
return 1;
|
||||
|
||||
unannounced_ca:;
|
||||
@ -972,13 +942,7 @@ size_t rrip_calc_len(Ecma119Image *t, Ecma119Node *n, int type, size_t space,
|
||||
size_t *ce)
|
||||
{
|
||||
size_t su_size;
|
||||
|
||||
#ifdef Libisofs_with_aaiP
|
||||
/* ts A90112 */
|
||||
int ret;
|
||||
#else /* Libisofs_with_aaiP */
|
||||
int ret;
|
||||
#endif /* ! Libisofs_with_aaiP */
|
||||
|
||||
/* space min is 255 - 33 - 37 = 185
|
||||
* At the same time, it is always an odd number, but we need to pad it
|
||||
@ -990,15 +954,10 @@ size_t rrip_calc_len(Ecma119Image *t, Ecma119Node *n, int type, size_t space,
|
||||
|
||||
su_size = 0;
|
||||
|
||||
#ifdef Libisofs_with_aaiP
|
||||
|
||||
/* ts A90125 */
|
||||
/* If AAIP enabled and announced by ER : account for 5 bytes of ES */;
|
||||
if (t->aaip && !t->aaip_susp_1_10)
|
||||
su_size += 5;
|
||||
|
||||
#endif /* Libisofs_with_aaiP */
|
||||
|
||||
/* PX and TF, we are sure they always fit in SUA */
|
||||
if (!t->rrip_version_1_10) {
|
||||
su_size += 44 + 26;
|
||||
@ -1046,16 +1005,9 @@ size_t rrip_calc_len(Ecma119Image *t, Ecma119Node *n, int type, size_t space,
|
||||
*/
|
||||
su_size += 7 + 28; /* SP + CE */
|
||||
*ce = 182; /* ER of RRIP */
|
||||
|
||||
#ifdef Libisofs_with_aaiP
|
||||
/* ts A90113 */
|
||||
|
||||
if (t->aaip) {
|
||||
*ce += 160; /* ER of AAIP */
|
||||
}
|
||||
|
||||
#endif /* Libisofs_with_aaiP */
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -1111,13 +1063,9 @@ int rrip_get_susp_fields(Ecma119Image *t, Ecma119Node *n, int type,
|
||||
Ecma119Node *node;
|
||||
char *name = NULL;
|
||||
char *dest = NULL;
|
||||
|
||||
#ifdef Libisofs_with_aaiP
|
||||
/* ts A90112 */
|
||||
uint8_t *aapt;
|
||||
void *xipt;
|
||||
size_t num_aapt= 0;
|
||||
#endif
|
||||
size_t aaip_er_len= 0;
|
||||
size_t su_size_pd, ce_len_pd; /* predicted sizes of SUA and CA */
|
||||
int ce_is_predicted = 0;
|
||||
@ -1154,9 +1102,6 @@ int rrip_get_susp_fields(Ecma119Image *t, Ecma119Node *n, int type,
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef Libisofs_with_aaiP
|
||||
|
||||
/* ts A90125 */
|
||||
/* If AAIP enabled and announced by ER : Announce RRIP by ES */
|
||||
if (t->aaip && !t->aaip_susp_1_10) {
|
||||
ret = susp_add_ES(t, info, 0, 0);
|
||||
@ -1164,8 +1109,6 @@ int rrip_get_susp_fields(Ecma119Image *t, Ecma119Node *n, int type,
|
||||
goto add_susp_cleanup;
|
||||
}
|
||||
|
||||
#endif /* Libisofs_with_aaiP */
|
||||
|
||||
/* PX and TF, we are sure they always fit in SUA */
|
||||
ret = rrip_add_PX(t, node, info);
|
||||
if (ret < 0) {
|
||||
@ -1227,7 +1170,6 @@ int rrip_get_susp_fields(Ecma119Image *t, Ecma119Node *n, int type,
|
||||
|
||||
sua_free = space - info->suf_len;
|
||||
|
||||
/* ts A90117 */
|
||||
/* Try whether NM, SL, AA will fit into SUA */
|
||||
su_size_pd = info->suf_len;
|
||||
ce_len_pd = ce_len;
|
||||
@ -1295,7 +1237,6 @@ int rrip_get_susp_fields(Ecma119Image *t, Ecma119Node *n, int type,
|
||||
* will be completelly moved into the CA
|
||||
*/
|
||||
|
||||
/* ts A90117 */
|
||||
/* sua_free, ce_len, nm_type already account for CE */
|
||||
cew = 1;
|
||||
|
||||
@ -1458,9 +1399,6 @@ int rrip_get_susp_fields(Ecma119Image *t, Ecma119Node *n, int type,
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef Libisofs_with_aaiP
|
||||
/* ts A90114 */
|
||||
|
||||
/* Obtain AA field string from node
|
||||
and write it to directory entry or CE area.
|
||||
*/
|
||||
@ -1488,8 +1426,6 @@ int rrip_get_susp_fields(Ecma119Image *t, Ecma119Node *n, int type,
|
||||
}
|
||||
}
|
||||
|
||||
#endif /* Libisofs_with_aaiP */
|
||||
|
||||
} else {
|
||||
|
||||
/* "." or ".." entry */
|
||||
@ -1507,15 +1443,10 @@ int rrip_get_susp_fields(Ecma119Image *t, Ecma119Node *n, int type,
|
||||
* Note that SP entry was already added above
|
||||
*/
|
||||
|
||||
#ifdef Libisofs_with_aaiP
|
||||
/* ts A90113 */
|
||||
|
||||
if (t->aaip && !t->aaip_susp_1_10) {
|
||||
aaip_er_len = 160;
|
||||
}
|
||||
|
||||
#endif /* Libisofs_with_aaiP */
|
||||
|
||||
ret = susp_add_CE(t, 182 + aaip_er_len, info);
|
||||
/* 182 is RRIP-ER length */
|
||||
if (ret < 0) {
|
||||
@ -1526,18 +1457,12 @@ int rrip_get_susp_fields(Ecma119Image *t, Ecma119Node *n, int type,
|
||||
goto add_susp_cleanup;
|
||||
}
|
||||
|
||||
#ifdef Libisofs_with_aaiP
|
||||
/* ts A90113 */
|
||||
|
||||
if (t->aaip && !t->aaip_susp_1_10) {
|
||||
ret = aaip_add_ER(t, info, 0);
|
||||
if (ret < 0) {
|
||||
goto add_susp_cleanup;
|
||||
}
|
||||
}
|
||||
|
||||
#endif /* Libisofs_with_aaiP */
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1,6 +1,7 @@
|
||||
/*
|
||||
* Copyright (c) 2007 Vreixo Formoso
|
||||
* Copyright (c) 2007 Mario Danic
|
||||
* Copyright (c) 2009 Thomas Schmitt
|
||||
*
|
||||
* 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 as
|
||||
@ -117,16 +118,12 @@ struct rr_SL {
|
||||
};
|
||||
|
||||
|
||||
#ifdef Libisofs_with_aaiP
|
||||
|
||||
/** Arbitrary Attribute (AAIP, see doc/susp_aaip_0_2.txt) */
|
||||
/** Arbitrary Attribute (AAIP, see doc/susp_aaip_1_0.txt) */
|
||||
struct rr_AA {
|
||||
uint8_t flags[1];
|
||||
uint8_t comps[1];
|
||||
};
|
||||
|
||||
#endif /* Libisofs_with_aaiP */
|
||||
|
||||
|
||||
/**
|
||||
* Struct for a SUSP System User Entry (SUSP, 4.1)
|
||||
@ -146,10 +143,7 @@ struct susp_sys_user_entry
|
||||
struct rr_NM NM;
|
||||
struct rr_CL CL;
|
||||
struct rr_SL SL;
|
||||
|
||||
#ifdef Libisofs_with_aaiP
|
||||
struct rr_AA AA;
|
||||
#endif /* Libisofs_with_aaiP */
|
||||
|
||||
} data; /* 5 to 4+len_sue */
|
||||
};
|
||||
@ -283,8 +277,6 @@ int read_rr_SL(struct susp_sys_user_entry *sl, char **dest, int *cont);
|
||||
int read_rr_PN(struct susp_sys_user_entry *pn, struct stat *st);
|
||||
|
||||
|
||||
#ifdef Libisofs_with_aaiP
|
||||
|
||||
/**
|
||||
* Collects the AA field string from single AA fields.
|
||||
* (see doc/susp_aaip_0_2.txt)
|
||||
@ -305,7 +297,5 @@ int read_aaip_AA(struct susp_sys_user_entry *sue,
|
||||
unsigned char **aa_string, size_t *aa_size, size_t *aa_len,
|
||||
size_t *prev_field, int *is_done, int flag);
|
||||
|
||||
#endif /* Libisofs_with_aaiP */
|
||||
|
||||
|
||||
#endif /* LIBISO_ROCKRIDGE_H */
|
||||
|
@ -1,5 +1,6 @@
|
||||
/*
|
||||
* Copyright (c) 2007 Vreixo Formoso
|
||||
* Copyright (c) 2009 Thomas Schmitt
|
||||
*
|
||||
* 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 as
|
||||
@ -7,8 +8,8 @@
|
||||
*/
|
||||
|
||||
/*
|
||||
* This file contains functions related to the reading of SUSP and
|
||||
* Rock Ridge extensions on an ECMA-119 image.
|
||||
* This file contains functions related to the reading of SUSP,
|
||||
* Rock Ridge and AAIP extensions on an ECMA-119 image.
|
||||
*/
|
||||
|
||||
#include "libisofs.h"
|
||||
@ -415,7 +416,6 @@ int read_rr_PN(struct susp_sys_user_entry *pn, struct stat *st)
|
||||
return ISO_WRONG_RR;
|
||||
}
|
||||
|
||||
/* ts A90129 */
|
||||
/* (dev_t << 32) causes compiler warnings on FreeBSD
|
||||
because sizeof(dev_t) is 4.
|
||||
*/
|
||||
@ -426,7 +426,7 @@ int read_rr_PN(struct susp_sys_user_entry *pn, struct stat *st)
|
||||
high_shift);
|
||||
}
|
||||
|
||||
/* <<< was originally:
|
||||
/* was originally:
|
||||
st->st_rdev = (dev_t)((dev_t)iso_read_bb(pn->data.PN.high, 4, NULL) << 32)
|
||||
| (dev_t)iso_read_bb(pn->data.PN.low, 4, NULL);
|
||||
*/
|
||||
@ -435,9 +435,6 @@ int read_rr_PN(struct susp_sys_user_entry *pn, struct stat *st)
|
||||
}
|
||||
|
||||
|
||||
#ifdef Libisofs_with_aaiP
|
||||
|
||||
|
||||
int read_aaip_AA(struct susp_sys_user_entry *sue,
|
||||
unsigned char **aa_string, size_t *aa_size, size_t *aa_len,
|
||||
size_t *prev_field, int *is_done, int flag)
|
||||
@ -483,5 +480,3 @@ int read_aaip_AA(struct susp_sys_user_entry *sue,
|
||||
return ISO_SUCCESS;
|
||||
}
|
||||
|
||||
#endif /* Libisofs_with_aaiP */
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user