Add nlink and ino fields. No true usage for now.
This commit is contained in:
parent
f8f2dcb6b0
commit
bf0c1dd219
@ -713,6 +713,7 @@ int ecma119_image_new(IsoImage *src, Ecma119WriteOpts *opts,
|
||||
|
||||
target->iso_level = opts->level;
|
||||
target->rockridge = 1; //TODO
|
||||
target->ino = 0;
|
||||
target->omit_version_numbers = opts->omit_version_numbers;
|
||||
target->allow_deep_paths = 0; //TODO
|
||||
target->sort_files = opts->sort_files;
|
||||
|
@ -55,6 +55,12 @@ struct ecma119_image {
|
||||
int sort_files; /**< if sort files or not. Sorting is based of
|
||||
* the weight of each file */
|
||||
|
||||
/**
|
||||
* In the CD, each file must have an unique inode number. So each
|
||||
* time we add a new file, this is incremented.
|
||||
*/
|
||||
ino_t ino;
|
||||
|
||||
char *input_charset;
|
||||
|
||||
uint32_t ms_block; /**< start block for a ms image */
|
||||
|
@ -79,10 +79,10 @@ int create_ecma119_node(Ecma119Image *img, IsoNode *iso, Ecma119Node **node)
|
||||
ecma->node = iso;
|
||||
iso_node_ref(iso);
|
||||
|
||||
// TODO what to do with full name? For now, not a problem, as we
|
||||
// haven't support for charset conversion. However, one we had it,
|
||||
// we need to choose whether to do it here (consumes more memory)
|
||||
// or on writting
|
||||
// TODO better handling of this, add support for harlinks
|
||||
ecma->nlink = 1;
|
||||
ecma->ino = ++img->ino;
|
||||
|
||||
*node = ecma;
|
||||
return ISO_SUCCESS;
|
||||
}
|
||||
@ -605,6 +605,8 @@ int create_placeholder(Ecma119Node *parent,
|
||||
ret->parent = parent;
|
||||
ret->type = ECMA119_PLACEHOLDER;
|
||||
ret->info.real_me = real;
|
||||
ret->ino = real->ino;
|
||||
ret->nlink = real->nlink;
|
||||
|
||||
*node = ret;
|
||||
return ISO_SUCCESS;
|
||||
|
@ -61,6 +61,10 @@ struct ecma119_node
|
||||
|
||||
IsoNode *node; /*< reference to the iso node */
|
||||
|
||||
// TODO add true support for this
|
||||
ino_t ino;
|
||||
nlink_t nlink;
|
||||
|
||||
/**< file, symlink, special, directory or placeholder */
|
||||
enum ecma119_node_type type;
|
||||
union {
|
||||
|
@ -62,13 +62,10 @@ int rrip_add_PX(Ecma119Image *t, Ecma119Node *n, struct susp_info *susp)
|
||||
PX[2] = 44;
|
||||
PX[3] = 1;
|
||||
iso_bb(&PX[4], n->node->mode, 4);
|
||||
// TODO support nlink and ino
|
||||
// TODO n->node->nlink
|
||||
iso_bb(&PX[12], 1, 4);
|
||||
iso_bb(&PX[12], n->nlink, 4);
|
||||
iso_bb(&PX[20], n->node->uid, 4);
|
||||
iso_bb(&PX[28], n->node->gid, 4);
|
||||
// TODO n->node->ino
|
||||
iso_bb(&PX[36], (int)n->node, 4);
|
||||
iso_bb(&PX[36], n->ino, 4);
|
||||
|
||||
return susp_append(t, susp, PX);
|
||||
}
|
||||
@ -720,6 +717,7 @@ int rrip_get_susp_fields(Ecma119Image *t, Ecma119Node *n, int type,
|
||||
|
||||
/*
|
||||
* SP must be the first entry for the "." record of the root directory
|
||||
* (SUSP, 5.3)
|
||||
*/
|
||||
if (type == 1 && n->parent == NULL) {
|
||||
ret = susp_add_SP(t, info);
|
||||
@ -785,7 +783,7 @@ int rrip_get_susp_fields(Ecma119Image *t, Ecma119Node *n, int type,
|
||||
uint8_t **comps = NULL; /* components of the SL field */
|
||||
size_t n_comp = 0; /* number of components */
|
||||
|
||||
// TODO handle output stream
|
||||
// TODO handle output charset
|
||||
name = n->node->name;
|
||||
namelen = strlen(name);
|
||||
|
||||
@ -847,13 +845,13 @@ int rrip_get_susp_fields(Ecma119Image *t, Ecma119Node *n, int type,
|
||||
*/
|
||||
if (28 <= sua_free) {
|
||||
/* the CE entry fills without reducing NM */
|
||||
sua_free -= 28; //TODO needed?
|
||||
sua_free -= 28;
|
||||
cew = 1;
|
||||
} else {
|
||||
/* we need to reduce NM */
|
||||
nm_type = 1;
|
||||
ce_len = (28 - sua_free) + 5;
|
||||
sua_free = 0;//su_size = space;
|
||||
sua_free = 0;
|
||||
cew = 1;
|
||||
}
|
||||
} else {
|
||||
|
Loading…
Reference in New Issue
Block a user