2f383215ff
Implement Writer for file contents.
...
Some aspects, such as better reporting of file bigger or smaller than
expected is needed, but all situations are handled propertly.
2007-12-20 22:17:18 +01:00
449ed65fe9
Improve IsoStream interface implementation.
2007-12-20 20:58:03 +01:00
a161f4249c
Improve IsoFileSource interface implementation.
2007-12-20 20:47:39 +01:00
f2e3a2c9fc
Guard against empty names.
2007-12-20 16:09:29 +01:00
e6bd1586d6
Replace glibc tsearch() with a custom red-black tree implementation.
...
The library supplied tree estructure is not enought for our needs, due to its
limited API. Thus, we have implemented a suitable red-black tree.
2007-12-20 00:25:25 +01:00
5eb3a7e038
Implementation of function to write the PVD.
...
The directory entry for the root directory is still missing.
2007-12-18 21:55:01 +01:00
2dc15ab164
Add some util functions, mostly copied from old libisofs.
2007-12-18 21:51:33 +01:00
39bde82ff6
Move size, ino, dev cache from IsoFileSrc to IsoStream.
...
That is a better decission, as it reduces the number of stat() call
needed, and anyway some Streams will need the size.
2007-12-18 20:46:28 +01:00
5b93cb4cdc
Fix bug, root refcount must be initialized to 1.
2007-12-18 10:54:09 +01:00
36894d6a23
Implementation of the write function to use by the Writers.
2007-12-18 00:37:24 +01:00
257b08bfcf
Code to compute position of directory records and path tables.
2007-12-18 00:20:03 +01:00
5e2de57aa9
Initial structure for ECMA-119 writer.
2007-12-17 23:22:19 +01:00
159b775d22
Improve message functions to support message formating in printf style.
2007-12-17 21:12:51 +01:00
f279676b6b
Check file size to ensure file bigger than 4GB are not added to image.
2007-12-17 20:47:53 +01:00
c8715941e6
Define some functions and responsabilities for image generation.
...
Still very preliminary work.
2007-12-16 19:10:47 +01:00
c03d4d9b33
Implementation of name mangling algorithm.
...
This has to ensure that file names are unique among all files in an iso
directory. Current implementation can be improved by using a hash table
to keep the names, instead of iterate over all children. An alternative
method, keeping children sorted all the time, thus allowing binary
search, has been considered but discarded.
Current implementation support up to 9,999,999 equal files per
directory.
2007-12-16 17:32:05 +01:00
56cdd00638
Sorting of nodes in a dir acording to ECMA-119, 9.3.
2007-12-15 18:40:33 +01:00
411524c330
Handling of iso directory depth restrictions on tree creation time.
...
Note that this doesn't involve the RR reparent. It just ignore the files
that break iso restrictions (see ECMA-119, 6.8.2.1).
2007-12-15 18:29:40 +01:00
0a340c53d5
Fix bug in open() function for local file srcs, to deal with symlinks.
2007-12-15 17:12:21 +01:00
40b27dbacc
Initial support for low level ECMA-119 tree.
...
This only adds the tree creation functions, no sorting and name mangling
yet. Only plain ECMA-119 supported for now, nor RR, relaxed
restrictions, etc..
This also adds a little test program.
2007-12-15 16:55:44 +01:00
aa312cf7d7
Fix bug in IsoFileSrc implementation, related to a wrogn usage of tsearch.
...
It happens that tsearch seems to not return a pointer to the inserted element,
but a pointer to a pointer to the inserted element (that makes sense, as we
are inserted pointers...). This bug, thus, was related to a wrong
understanding of the tsearch API!
2007-12-15 16:48:50 +01:00
7b241176fb
Init implementation of IsoFileSrc.
...
Ecma119Image, defined for first time in this commit, is the context for image
written. It keeps the low level objects needed during image written.
IsoFileSrc is the low level object that takes care about the info needed to
write file contents to image. It takes care about reading from Stream in 2K
block chunks. To prevent the same file be written twice to image, we keep in
Ecma119Image a search tree, indexed by the triple key (fs, device, inode) that
uniquelly identifies a source.
2007-12-15 13:13:49 +01:00
dd83f85d09
Support for identification of source Streams.
...
We identify uniquelly a given source Stream by a triple of numbers: the
filesystem id, the device id inside the filesystem, and the inode id.
2007-12-15 12:51:48 +01:00
8f7222609e
Add support for generating ISO identifiers from ASCII strings.
2007-12-14 22:13:00 +01:00
315f1a1717
Support for charset conversion from any encoding to ASCII.
2007-12-14 21:42:55 +01:00
115da82c9e
First util functions, with corresponding unit test.
2007-12-13 21:02:36 +01:00
60d68df84c
Expose iso_node_set_hidden(), to let a node be hidden in RR/ISO or Joliet tree.
2007-12-13 20:27:58 +01:00
d10ed353e2
Implement function to recursively add a dir to an iso tree.
...
This commit also to the following changes:
- create_node() on builder never frees the IsoFileSource, it is responsability
of the caller to free it.
- Recursive addition options added to IsoImage (not exposed to public API yet)
- create_node() takes care about follow_symlinks
- Added little demo program to test it.
2007-12-11 22:47:04 +01:00
0306bb5daf
Redefine readdir() on IsoFileSource, to skip "." and ".." dirs.
2007-12-11 22:41:18 +01:00
008871cfd8
Additon of nodes based on Builder. Pass Image as a parameter to builder methods.
2007-12-09 18:47:29 +01:00
e28f924913
Ensure local filesystem is deleted when needed.
2007-12-08 02:49:27 +01:00
b03fbf0ee0
Implement function to get node from path on image. Little unit test too.
2007-12-08 01:39:31 +01:00
f04ddb4435
Add getter and setter for sort_weight.
2007-12-07 22:36:26 +01:00
70b9b87150
Expose iso_node_get_type().
2007-12-07 22:25:31 +01:00
27670f8d3a
More tests related with iso tree.
2007-12-07 22:20:14 +01:00
7d417e9fa6
Added a mocked filesystem to simulate a real filesystem in tests.
2007-12-07 17:29:27 +01:00
45f4d0a29e
Add function to add an exiting file to the iso tree.
...
Node is created using a builder. Default builder and filesystem is added
to IsoImage. Later we should expose setters for this atts.
2007-12-07 03:02:46 +01:00
c93fa154d5
Getters and setters for time attributes on IsoNode.
2007-12-06 22:52:01 +01:00
7f9c5c9065
Unit test for tree functions. Little fixes.
2007-12-06 22:45:16 +01:00
5df6b2c3d2
Fix bug in tree functions.
2007-12-06 16:44:52 +01:00
dad43d9ede
Add some unit tests related to IsoNode.
2007-12-06 16:19:14 +01:00
5abb569e0c
Keep children sorted when renaming a node.
2007-12-06 16:18:51 +01:00
b2d41de603
Allow adding of special files to iso tree node.
2007-12-06 02:43:24 +01:00
007be29c6d
Fix little bug: ensure number of children is incremented when adding a
...
new node to a dir.
2007-12-06 02:38:19 +01:00
d4deb4866f
Take care about duplicate node names in iso_node_set_name().
2007-12-06 02:22:11 +01:00
06db9a3c73
Free destination on IsoSymlinks.
2007-12-06 02:13:01 +01:00
f62c34776f
Begin implementation of tree operations.
2007-12-06 02:11:05 +01:00
8e7fe9b5a5
Add replace flag to iso_dir_add_node().
2007-12-05 22:37:57 +01:00
14f4aa7d07
Init builder implementation.
2007-12-04 22:33:40 +01:00
6616eae76b
Unref Stream when freeing a IsoFile.
2007-12-03 21:53:20 +01:00