Expose iso_node_set_hidden(), to let a node be hidden in RR/ISO or Joliet tree.

This commit is contained in:
Vreixo Formoso 2007-12-13 20:27:58 +01:00
parent d10ed353e2
commit 60d68df84c
4 changed files with 35 additions and 11 deletions

View File

@ -43,6 +43,16 @@ enum IsoNodeType {
LIBISO_BOOT LIBISO_BOOT
}; };
/**
* Flag used to hide a file in the RR/ISO or Joliet tree.
*
* \see iso_node_set_hidden
*/
enum IsoHideNodeFlag {
LIBISO_HIDE_ON_RR = 1 << 0,
LIBISO_HIDE_ON_JOLIET = 1 << 1
};
/** /**
* Create a new image, empty. * Create a new image, empty.
* *
@ -300,6 +310,25 @@ void iso_node_set_ctime(IsoNode *node, time_t time);
*/ */
time_t iso_node_get_ctime(const IsoNode *node); time_t iso_node_get_ctime(const IsoNode *node);
/**
* Set if the node will be hidden in RR/ISO tree, Joliet tree or both.
*
* If the file is setted as hidden in one tree, it won't be included there, so
* it won't be visible in a OS accessing CD using that tree. For example,
* GNU/Linux systems access to Rock Ridge / ISO9960 tree in order to see
* what is recorded on CD, while MS Windows make use of the Joliet tree. If a
* file is hidden only in Joliet, it won't be visible in Windows systems,
* while still visible in Linux.
*
* If a file is hidden in both trees, it won't be written to image.
*
* @param node
* The node that is to be hidden.
* @param hide_attrs
* IsoHideNodeFlag's to set the trees in which file will be hidden.
*/
void iso_node_set_hidden(IsoNode *node, int hide_attrs);
/** /**
* Add a new node to a dir. Note that this function don't add a new ref to * Add a new node to a dir. Note that this function don't add a new ref to
* the node, so you don't need to free it, it will be automatically freed * the node, so you don't need to free it, it will be automatically freed

View File

@ -229,6 +229,11 @@ time_t iso_node_get_ctime(const IsoNode *node)
return node->ctime; return node->ctime;
} }
void iso_node_set_hidden(IsoNode *node, int hide_attrs)
{
node->hidden = hide_attrs;
}
/** /**
* Add a new node to a dir. Note that this function don't add a new ref to * Add a new node to a dir. Note that this function don't add a new ref to
* the node, so you don't need to free it, it will be automatically freed * the node, so you don't need to free it, it will be automatically freed

View File

@ -20,16 +20,6 @@
#include <unistd.h> #include <unistd.h>
#include <stdint.h> #include <stdint.h>
/**
* Flag used to hide a file in the RR/ISO or Joliet tree.
*
* \see iso_tree_node_set_hidden
*/
enum IsoHideNodeFlag {
LIBISO_HIDE_ON_RR = 1 << 0,
LIBISO_HIDE_ON_JOLIET = 1 << 1
};
/** /**
* *
*/ */

View File

@ -360,7 +360,7 @@ int iso_tree_add_node(IsoImage *image, IsoDir *parent, const char *path,
result = iso_tree_add_node_builder(image, parent, file, image->builder, result = iso_tree_add_node_builder(image, parent, file, image->builder,
node); node);
/* free the file */ /* free the file */
iso_file_source_unref(file); iso_file_source_unref(file);
return result; return result;
} }