Support for different default permissions for file and dirs on image
import.
This commit is contained in:
parent
04c6bf39b4
commit
e42a583a2f
2
TODO
2
TODO
@ -27,7 +27,7 @@ OK #00003 make error.h header public
|
|||||||
#00020 (fs_image.c) -> handle RR info in Joliet tree
|
#00020 (fs_image.c) -> handle RR info in Joliet tree
|
||||||
#00021 (fs_image.c) -> handle RR info in ISO 9660:1999 tree
|
#00021 (fs_image.c) -> handle RR info in ISO 9660:1999 tree
|
||||||
#00022 (joliet.c) -> support relaxed constraints in joliet filenames
|
#00022 (joliet.c) -> support relaxed constraints in joliet filenames
|
||||||
#00023 (libisofs.h) -> let different default file and dir mode for iso reading
|
OK #00023 (libisofs.h) -> let different default file and dir mode for iso reading
|
||||||
#00024 (libisofs.h) -> option to convert names to lower case for iso reading
|
#00024 (libisofs.h) -> option to convert names to lower case for iso reading
|
||||||
#00025 (libisofs.h) -> support for merging old image files
|
#00025 (libisofs.h) -> support for merging old image files
|
||||||
#00026 (libisofs.h) -> add support for "hidden" bootable images.
|
#00026 (libisofs.h) -> add support for "hidden" bootable images.
|
||||||
|
@ -67,8 +67,8 @@ struct iso_read_opts
|
|||||||
|
|
||||||
uid_t uid; /**< Default uid when no RR */
|
uid_t uid; /**< Default uid when no RR */
|
||||||
gid_t gid; /**< Default uid when no RR */
|
gid_t gid; /**< Default uid when no RR */
|
||||||
mode_t mode; /**< Default mode when no RR (only permissions) */
|
mode_t dir_mode; /**< Default mode when no RR (only permissions) */
|
||||||
/* TODO #00023 : let different default file and dir mode for iso reading */
|
mode_t file_mode;
|
||||||
/* TODO #00024 : option to convert names to lower case for iso reading */
|
/* TODO #00024 : option to convert names to lower case for iso reading */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -115,7 +115,8 @@ typedef struct
|
|||||||
|
|
||||||
uid_t uid; /**< Default uid when no RR */
|
uid_t uid; /**< Default uid when no RR */
|
||||||
gid_t gid; /**< Default uid when no RR */
|
gid_t gid; /**< Default uid when no RR */
|
||||||
mode_t mode; /**< Default mode when no RR (only permissions) */
|
mode_t dir_mode; /**< Default mode when no RR (only permissions) */
|
||||||
|
mode_t file_mode;
|
||||||
|
|
||||||
int msgid;
|
int msgid;
|
||||||
|
|
||||||
@ -1064,13 +1065,13 @@ int iso_file_source_new_ifs(IsoImageFilesystem *fs, IsoFileSource *parent,
|
|||||||
|
|
||||||
} else {
|
} else {
|
||||||
/* RR extensions are not read / used */
|
/* RR extensions are not read / used */
|
||||||
atts.st_mode = fsdata->mode;
|
|
||||||
atts.st_gid = fsdata->gid;
|
atts.st_gid = fsdata->gid;
|
||||||
atts.st_uid = fsdata->uid;
|
atts.st_uid = fsdata->uid;
|
||||||
if (record->flags[0] & 0x02)
|
if (record->flags[0] & 0x02) {
|
||||||
atts.st_mode |= S_IFDIR;
|
atts.st_mode = S_IFDIR | fsdata->dir_mode;
|
||||||
else
|
} else {
|
||||||
atts.st_mode |= S_IFREG;
|
atts.st_mode = S_IFREG | fsdata->file_mode;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -1723,7 +1724,8 @@ int iso_image_filesystem_new(IsoDataSource *src, struct iso_read_opts *opts,
|
|||||||
/* fill data from opts */
|
/* fill data from opts */
|
||||||
data->gid = opts->gid;
|
data->gid = opts->gid;
|
||||||
data->uid = opts->uid;
|
data->uid = opts->uid;
|
||||||
data->mode = opts->mode & ~S_IFMT;
|
data->file_mode = opts->file_mode & ~S_IFMT;
|
||||||
|
data->dir_mode = opts->dir_mode & ~S_IFMT;
|
||||||
data->msgid = msgid;
|
data->msgid = msgid;
|
||||||
|
|
||||||
setlocale(LC_CTYPE, "");
|
setlocale(LC_CTYPE, "");
|
||||||
@ -2453,7 +2455,8 @@ int iso_read_opts_new(IsoReadOpts **opts, int profile)
|
|||||||
return ISO_OUT_OF_MEM;
|
return ISO_OUT_OF_MEM;
|
||||||
}
|
}
|
||||||
|
|
||||||
ropts->mode = 0555;
|
ropts->file_mode = 0444;
|
||||||
|
ropts->dir_mode = 0555;
|
||||||
*opts = ropts;
|
*opts = ropts;
|
||||||
return ISO_SUCCESS;
|
return ISO_SUCCESS;
|
||||||
}
|
}
|
||||||
@ -2531,12 +2534,14 @@ int iso_read_opts_set_default_gid(IsoReadOpts *opts, gid_t gid)
|
|||||||
return ISO_SUCCESS;
|
return ISO_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
int iso_read_opts_set_default_permissions(IsoReadOpts *opts, mode_t perm)
|
int iso_read_opts_set_default_permissions(IsoReadOpts *opts, mode_t file_perm,
|
||||||
|
mode_t dir_perm)
|
||||||
{
|
{
|
||||||
if (opts == NULL) {
|
if (opts == NULL) {
|
||||||
return ISO_NULL_POINTER;
|
return ISO_NULL_POINTER;
|
||||||
}
|
}
|
||||||
opts->mode = perm;
|
opts->file_mode = file_perm;
|
||||||
|
opts->dir_mode = dir_perm;
|
||||||
return ISO_SUCCESS;
|
return ISO_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -973,8 +973,14 @@ int iso_read_opts_set_default_gid(IsoReadOpts *opts, gid_t gid);
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Set default permissions for files when RR extensions are not present.
|
* Set default permissions for files when RR extensions are not present.
|
||||||
|
*
|
||||||
|
* @param file_perm
|
||||||
|
* Permissions for files.
|
||||||
|
* @param dir_perm
|
||||||
|
* Permissions for directories.
|
||||||
*/
|
*/
|
||||||
int iso_read_opts_set_default_permissions(IsoReadOpts *opts, mode_t perm);
|
int iso_read_opts_set_default_permissions(IsoReadOpts *opts, mode_t file_perm,
|
||||||
|
mode_t dir_perm);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set the input charset of the file names on the image. NULL to use locale
|
* Set the input charset of the file names on the image. NULL to use locale
|
||||||
|
Loading…
Reference in New Issue
Block a user