updf_copy_toΒΆ
updf_copy_to copies a storages and all containing streams, storages and properties recursively into another storage.
-
ret = updf_copy_to(stg, stgDest)
Return Value
ret is either the number 1 or an error object, if an error occurred. (see error_create).
Parameters
-
stg
stg is a storage object (see updf_create_file, updf_open_file, updf_create_storage).
-
stgDest
stgDest is the destination storage located in the same file or a different file.
Example
def test_updf_copy_to()
{
ssFile = create_test_file();
ssRoot = GetTempPath();
stg = updf_open_file(ssFile);
updf_dump(stg, ssRoot + "test-dump");
stg = stgDest = 0; gc()
stg = updf_open_file(ssFile);
if (type(stg) == "error") error();
stgDest = updf_create_file(ssFile + "-2");
if (type(stgDest) == "error") error();
rc = updf_copy_to(stg, stgDest);
if (type(rc) == "error") error();
rc = updf_dump(stg, ssFile + ".1", 0x100);
rc = updf_dump(stgDest, ssFile + ".2", 0x100);
_check_updf(ssFile);
_cleanup_updf(ssFile);
stg = stgDest = 0; gc()
}
def create_test_file()
{
ssRoot = GetTempPath();
ssFile = ssRoot + "test-copy-to-updf.updf";
stg = updf_create_file(ssFile);
f = updf_create_stream(stg, "stream1");
fwrite_char(f, "test1");
fclose(f);
props = updf_prop_open(stg, "stream1")
updf_prop_set_at(props, "1", updf_propval_new(1));
updf_prop_set_at(props, "2", updf_propval_new(2));
updf_prop_set_at(props, "3", updf_propval_new(3));
updf_prop_close(props);
f = updf_create_stream(stg, "stream2");
fwrite_char(f, "test2");
fclose(f);
stg1 = updf_create_storage(stg, "stg1", 0);
f = updf_create_stream(stg1, "stream11");
fwrite_char(f, "test11");
fclose(f);
f = updf_create_stream(stg1, "stream21");
fwrite_char(f, "test21");
fclose(f);
updf_close_storage(stg1)
updf_close_storage(stg)
return ssFile;
}
def _cleanup_updf(ssFile)
{
DeleteFile(ssFile + ".1\\" + "stream1");
DeleteFile(ssFile + ".1\\" + "stream1._props_");
DeleteFile(ssFile + ".1\\" + "stream2");
DeleteFile(ssFile + ".1\\" + "stg1\\stream11");
DeleteFile(ssFile + ".1\\" + "stg1\\stream21");
RemoveDirectory(ssFile + ".1\\" + "stg1");
RemoveDirectory(ssFile + ".1");
DeleteFile(ssFile + ".2\\" + "stream1");
DeleteFile(ssFile + ".2\\" + "stream1._props_");
DeleteFile(ssFile + ".2\\" + "stream2");
DeleteFile(ssFile + ".2\\" + "stg1\\stream11");
DeleteFile(ssFile + ".2\\" + "stg1\\stream21");
RemoveDirectory(ssFile + ".2\\" + "stg1");
RemoveDirectory(ssFile + ".2");
DeleteFile(ssFile);
DeleteFile(ssFile + "-2");
}
def _check_updf(ssFile)
{
s1 = text_file_read(ssFile + ".1\\" + "stream1")
s2 = text_file_read(ssFile + ".2\\" + "stream1")
if (s1 != s2) {
error();
}
s1 = text_file_read(ssFile + ".1\\" + "stream1._props_")
s2 = text_file_read(ssFile + ".2\\" + "stream1._props_")
if (s1 != s2) {
error();
}
s1 = text_file_read(ssFile + ".1\\" + "stream2")
s2 = text_file_read(ssFile + ".2\\" + "stream2")
if (s1 != s2) {
error();
}
s1 = text_file_read(ssFile + ".1\\" + "stg1\\stream11")
s2 = text_file_read(ssFile + ".2\\" + "stg1\\stream11")
if (s1 != s2) {
error();
}
s1 = text_file_read(ssFile + ".1\\" + "stg1\\stream21")
s2 = text_file_read(ssFile + ".2\\" + "stg1\\stream21")
if (s1 != s2) {
error();
}
}
test_updf_copy_to();
History
Version | Description |
---|---|
5.6.0 | New |
id-1380051