|
From: <ny...@us...> - 2007-10-08 14:16:15
|
Revision: 428
http://pmplib.svn.sourceforge.net/pmplib/?rev=428&view=rev
Author: nyaochi
Date: 2007-10-08 07:16:18 -0700 (Mon, 08 Oct 2007)
Log Message:
-----------
Merge chunk_new_chid() and chunk_init() for simplicity.
Modified Paths:
--------------
trunk/pmplib/lib/pmp_ipod/chunk.c
trunk/pmplib/lib/pmp_ipod/chunk.h
trunk/pmplib/lib/pmp_ipod/ipod.c
trunk/pmplib/lib/pmp_ipod/ipod_photo.c
Modified: trunk/pmplib/lib/pmp_ipod/chunk.c
===================================================================
--- trunk/pmplib/lib/pmp_ipod/chunk.c 2007-10-08 08:40:37 UTC (rev 427)
+++ trunk/pmplib/lib/pmp_ipod/chunk.c 2007-10-08 14:16:18 UTC (rev 428)
@@ -53,6 +53,54 @@
return NULL;
}
+chunk_t* chunk_new(
+ const chunkdecl_t* cds,
+ chunk_t* parent,
+ const char *name
+ )
+{
+ chunk_t* child = NULL;
+ const chunkdecl_t* decl = NULL;
+
+ /* Find the chunk description. */
+ if (name != NULL) {
+ decl = find_chunkdecl(cds, (int8_t*)name);
+ }
+
+ if (parent != NULL) {
+ /* Expand the child array. */
+ parent->childlen = (chunk_t*)realloc(
+ parent->childlen,
+ sizeof(chunk_t) * (parent->num_children + 1)
+ );
+ if (parent->childlen) {
+ child = &parent->childlen[parent->num_children];
+ memset(child, 0, sizeof(chunk_t));
+ ++parent->num_children;
+ }
+
+ /* Initialize the child. */
+ if (child != NULL && decl != NULL) {
+ if (decl->init(child, 1)) {
+ return NULL;
+ }
+ }
+ } else {
+ /* Create a new chunk. */
+ child = (chunk_t*)calloc(1, sizeof(chunk_t));
+ if (child != NULL && decl != NULL) {
+ if (decl->init(child, 1)) {
+ /* Failed to initialize the chunk. */
+ free(child);
+ child = NULL;
+ }
+ }
+ }
+
+ return child;
+}
+
+/*
int chunk_init(
const chunkdecl_t* cds,
chunk_t* chunk,
@@ -66,20 +114,9 @@
}
if (ret = decl->init(chunk, 1)) return ret;
- /*
- if (strncmp(name, "mhod", 4) == 0) {
- itunesdb_mhod_t* mhod = (itunesdb_mhod_t*)chunk->data;
- const itunes_mhoddecl_t* decl2 = find_mhoddecl_by_name(subtype);
- if (!decl2) {
- decl->finish(chunk);
- return IPODE_UNKNOWNSUBTYPE;
- }
- chunk->overall_size = decl2->overall_size;
- mhod->type = decl2->type;
- }
- */
return 0;
}
+*/
void chunk_finish(
const chunkdecl_t* cds,
@@ -99,6 +136,7 @@
}
}
+/*
chunk_t* chunk_new_child(chunk_t* chunk)
{
chunk->childlen = (chunk_t*)realloc(
@@ -112,21 +150,14 @@
return NULL;
}
}
+*/
int chunk_is(
chunk_t* chunk,
const char *name
)
{
- /*
- if (strncmp(name, "mhod", 4) == 0) {
- itunesdb_mhod_t* mhod = (itunesdb_mhod_t*)chunk->data;
- const itunes_mhoddecl_t* decl = find_mhoddecl(chunk);
- return (decl && strcmp(decl->name, subtype) == 0) ? 1 : 0;
- } else {
- */
- return (strncmp(chunk->id, name, 4) == 0);
-/* }*/
+ return (strncmp(chunk->id, name, 4) == 0);
}
int chunk_repr(
Modified: trunk/pmplib/lib/pmp_ipod/chunk.h
===================================================================
--- trunk/pmplib/lib/pmp_ipod/chunk.h 2007-10-08 08:40:37 UTC (rev 427)
+++ trunk/pmplib/lib/pmp_ipod/chunk.h 2007-10-08 14:16:18 UTC (rev 428)
@@ -47,10 +47,11 @@
int (*serialize)(chunk_t* chunk, serializer_t* sio);
} chunkdecl_t;
-int chunk_init(const chunkdecl_t* cds, chunk_t* chunk, const char *name);
+chunk_t* chunk_new(const chunkdecl_t* cds, chunk_t* chunk, const char *name);
+//int chunk_init(const chunkdecl_t* cds, chunk_t* chunk, const char *name);
void chunk_finish(const chunkdecl_t* cds, chunk_t* chunk);
int chunk_is(chunk_t* chunk, const char *name);
-chunk_t* chunk_new_child(chunk_t* chunk);
+//chunk_t* chunk_new_child(chunk_t* chunk);
int chunk_repr(const chunkdecl_t* cds, chunk_t* chunk, size_t index, serializer_t* sio);
int chunk_read(const chunkdecl_t* cds, chunk_t* chunk, serializer_t* sio);
int chunk_write(const chunkdecl_t* cds, chunk_t* chunk, serializer_t* sio);
Modified: trunk/pmplib/lib/pmp_ipod/ipod.c
===================================================================
--- trunk/pmplib/lib/pmp_ipod/ipod.c 2007-10-08 08:40:37 UTC (rev 427)
+++ trunk/pmplib/lib/pmp_ipod/ipod.c 2007-10-08 14:16:18 UTC (rev 428)
@@ -545,9 +545,8 @@
/* Construct an "mhod" chunk for title. */
if (rec->title && *rec->title) {
- mhod = chunk_new_child(mhit);
+ mhod = chunk_new(itunesdb_cds, mhit, "mhod");
if (mhod) {
- if (ret = chunk_init(itunesdb_cds, mhod, "mhod")) return ret;
if (ret = itunesdb_mhod_init(mhod, "title")) return ret;
if (ret = itunesdb_set_mhod_string(mhod, rec->title)) return ret;
}
@@ -555,9 +554,8 @@
/* Construct an "mhod" chunk for artist. */
if (rec->artist && *rec->artist) {
- mhod = chunk_new_child(mhit);
+ mhod = chunk_new(itunesdb_cds, mhit, "mhod");
if (mhod) {
- if (ret = chunk_init(itunesdb_cds, mhod, "mhod")) return ret;
if (ret = itunesdb_mhod_init(mhod, "artist")) return ret;
if (ret = itunesdb_set_mhod_string(mhod, rec->artist)) return ret;
}
@@ -566,9 +564,8 @@
/* Construct an "mhod" chunk for album artist. */
value = (rec->album_artist && *rec->album_artist) ? rec->album_artist : rec->artist;
if (value && *value) {
- mhod = chunk_new_child(mhit);
+ mhod = chunk_new(itunesdb_cds, mhit, "mhod");
if (mhod) {
- if (ret = chunk_init(itunesdb_cds, mhod, "mhod")) return ret;
if (ret = itunesdb_mhod_init(mhod, "album_artist")) return ret;
if (ret = itunesdb_set_mhod_string(mhod, value)) return ret;
}
@@ -576,9 +573,8 @@
/* Construct an "mhod" chunk for album. */
if (rec->album && *rec->album) {
- mhod = chunk_new_child(mhit);
+ mhod = chunk_new(itunesdb_cds, mhit, "mhod");
if (mhod) {
- if (ret = chunk_init(itunesdb_cds, mhod, "mhod")) return ret;
if (ret = itunesdb_mhod_init(mhod, "album")) return ret;
if (ret = itunesdb_set_mhod_string(mhod, rec->album)) return ret;
}
@@ -586,27 +582,24 @@
/* Construct an "mhod" chunk for album. */
if (rec->genre && *rec->genre) {
- mhod = chunk_new_child(mhit);
+ mhod = chunk_new(itunesdb_cds, mhit, "mhod");
if (mhod) {
- if (ret = chunk_init(itunesdb_cds, mhod, "mhod")) return ret;
if (ret = itunesdb_mhod_init(mhod, "genre")) return ret;
if (ret = itunesdb_set_mhod_string(mhod, rec->genre)) return ret;
}
}
/* Construct an "mhod" chunk for filetype. */
- mhod = chunk_new_child(mhit);
+ mhod = chunk_new(itunesdb_cds, mhit, "mhod");
if (mhod) {
- if (ret = chunk_init(itunesdb_cds, mhod, "mhod")) return ret;
if (ret = itunesdb_mhod_init(mhod, "filetype")) return ret;
if (ret = itunesdb_set_mhod_string(mhod, L"MPEG Audio file")) return ret;
}
/* Construct an "mhod" chunk for comment. */
if (rec->comment && *rec->comment) {
- mhod = chunk_new_child(mhit);
+ mhod = chunk_new(itunesdb_cds, mhit, "mhod");
if (mhod) {
- if (ret = chunk_init(itunesdb_cds, mhod, "mhod")) return ret;
if (ret = itunesdb_mhod_init(mhod, "comment")) return ret;
if (ret = itunesdb_set_mhod_string(mhod, rec->comment)) return ret;
}
@@ -614,14 +607,13 @@
/* Construct an "mhod" chunk for location. */
if (rec->filename && *rec->filename) {
- mhod = chunk_new_child(mhit);
+ mhod = chunk_new(itunesdb_cds, mhit, "mhod");
if (mhod) {
ucs2char_t pathname[MAX_PATH], *p = NULL;
ucs2cpy(pathname, filepath_skiproot(rec->filename, path_to_root, 1));
for (p = pathname;*p;++p) {
if (*p == PATHCHAR) *p = ':';
}
- if (ret = chunk_init(itunesdb_cds, mhod, "mhod")) return ret;
if (ret = itunesdb_mhod_init(mhod, "location")) return ret;
if (ret = itunesdb_set_mhod_string(mhod, pathname)) return ret;
}
@@ -923,27 +915,23 @@
const ucs2char_t* artist = cur->artist;
if (prev_album == NULL || ucs2cmp(prev_album, album) != 0) {
- mhia = chunk_new_child(mhla);
- if (ret = chunk_init(itunesdb_cds, mhia, "mhia")) return ret;
+ mhia = chunk_new(itunesdb_cds, mhla, "mhia");
mhia_data = (itunesdb_mhia_t*)mhia->data;
- mhod = chunk_new_child(mhia);
+ mhod = chunk_new(itunesdb_cds, mhia, "mhod");
if (mhod) {
- if (ret = chunk_init(itunesdb_cds, mhod, "mhod")) return ret;
if (ret = itunesdb_mhod_init(mhod, "album_albumlist")) return ret;
if (ret = itunesdb_set_mhod_string(mhod, album)) return ret;
}
- mhod = chunk_new_child(mhia);
+ mhod = chunk_new(itunesdb_cds, mhia, "mhod");
if (mhod) {
- if (ret = chunk_init(itunesdb_cds, mhod, "mhod")) return ret;
if (ret = itunesdb_mhod_init(mhod, "artist_albumlist")) return ret;
if (ret = itunesdb_set_mhod_string(mhod, artist)) return ret;
}
- mhod = chunk_new_child(mhia);
+ mhod = chunk_new(itunesdb_cds, mhia, "mhod");
if (mhod) {
- if (ret = chunk_init(itunesdb_cds, mhod, "mhod")) return ret;
if (ret = itunesdb_mhod_init(mhod, "sort_artist_albumlist")) return ret;
if (ret = itunesdb_set_mhod_string(mhod, artist)) return ret;
}
@@ -985,24 +973,21 @@
mhyp_data->sort_order = 1;
/* Construct an "mhod" chunk for title. */
- mhod = chunk_new_child(mhyp);
+ mhod = chunk_new(itunesdb_cds, mhyp, "mhod");
if (mhod) {
- if (ret = chunk_init(itunesdb_cds, mhod, "mhod")) return ret;
if (ret = itunesdb_mhod_init(mhod, "title")) return ret;
if (ret = itunesdb_set_mhod_string(mhod, ucs2cs_master)) return ret;
}
/* Construct an "mhod" chunk for index: title. */
- mhod = chunk_new_child(mhyp);
+ mhod = chunk_new(itunesdb_cds, mhyp, "mhod");
if (mhod) {
- if (ret = chunk_init(itunesdb_cds, mhod, "mhod")) return ret;
if (ret = itunesdb_mhod_init(mhod, "index")) return ret;
qsort(si, num_records, sizeof(si[0]), comp_title);
if (ret = itunesdb_set_mhod_order(mhod, 0x03, si, num_records)) return ret;
- mhod = chunk_new_child(mhyp);
+ mhod = chunk_new(itunesdb_cds, mhyp, "mhod");
if (mhod) {
- if (ret = chunk_init(itunesdb_cds, mhod, "mhod")) return ret;
if (ret = itunesdb_mhod_init(mhod, "library_playlist_index")) return ret;
set_prefix(si, num_records, prefix_title);
if (ret = itunesdb_set_mhod_index(mhod, 0x03, si, num_records)) return ret;
@@ -1010,16 +995,14 @@
}
/* Construct an "mhod" chunk for index: sortartist, disc/tracknumber, title. */
- mhod = chunk_new_child(mhyp);
+ mhod = chunk_new(itunesdb_cds, mhyp, "mhod");
if (mhod) {
- if (ret = chunk_init(itunesdb_cds, mhod, "mhod")) return ret;
if (ret = itunesdb_mhod_init(mhod, "index")) return ret;
qsort(si, num_records, sizeof(si[0]), comp_sortartist);
if (ret = itunesdb_set_mhod_order(mhod, 0x05, si, num_records)) return ret;
- mhod = chunk_new_child(mhyp);
+ mhod = chunk_new(itunesdb_cds, mhyp, "mhod");
if (mhod) {
- if (ret = chunk_init(itunesdb_cds, mhod, "mhod")) return ret;
if (ret = itunesdb_mhod_init(mhod, "library_playlist_index")) return ret;
set_prefix(si, num_records, prefix_sortartist);
if (ret = itunesdb_set_mhod_index(mhod, 0x05, si, num_records)) return ret;
@@ -1027,16 +1010,14 @@
}
/* Construct an "mhod" chunk for index: album, disc/tracknumber, title. */
- mhod = chunk_new_child(mhyp);
+ mhod = chunk_new(itunesdb_cds, mhyp, "mhod");
if (mhod) {
- if (ret = chunk_init(itunesdb_cds, mhod, "mhod")) return ret;
if (ret = itunesdb_mhod_init(mhod, "index")) return ret;
qsort(si, num_records, sizeof(si[0]), comp_album);
if (ret = itunesdb_set_mhod_order(mhod, 0x04, si, num_records)) return ret;
- mhod = chunk_new_child(mhyp);
+ mhod = chunk_new(itunesdb_cds, mhyp, "mhod");
if (mhod) {
- if (ret = chunk_init(itunesdb_cds, mhod, "mhod")) return ret;
if (ret = itunesdb_mhod_init(mhod, "library_playlist_index")) return ret;
set_prefix(si, num_records, prefix_album);
if (ret = itunesdb_set_mhod_index(mhod, 0x04, si, num_records)) return ret;
@@ -1044,16 +1025,14 @@
}
/* Construct an "mhod" chunk for index: genre, sortartist, album, disc/tracknumber, title */
- mhod = chunk_new_child(mhyp);
+ mhod = chunk_new(itunesdb_cds, mhyp, "mhod");
if (mhod) {
- if (ret = chunk_init(itunesdb_cds, mhod, "mhod")) return ret;
if (ret = itunesdb_mhod_init(mhod, "index")) return ret;
qsort(si, num_records, sizeof(si[0]), comp_genre);
if (ret = itunesdb_set_mhod_order(mhod, 0x07, si, num_records)) return ret;
- mhod = chunk_new_child(mhyp);
+ mhod = chunk_new(itunesdb_cds, mhyp, "mhod");
if (mhod) {
- if (ret = chunk_init(itunesdb_cds, mhod, "mhod")) return ret;
if (ret = itunesdb_mhod_init(mhod, "library_playlist_index")) return ret;
set_prefix(si, num_records, prefix_genre);
if (ret = itunesdb_set_mhod_index(mhod, 0x07, si, num_records)) return ret;
@@ -1061,16 +1040,14 @@
}
/* Construct an "mhod" chunk for index: composer, title. */
- mhod = chunk_new_child(mhyp);
+ mhod = chunk_new(itunesdb_cds, mhyp, "mhod");
if (mhod) {
- if (ret = chunk_init(itunesdb_cds, mhod, "mhod")) return ret;
if (ret = itunesdb_mhod_init(mhod, "index")) return ret;
qsort(si, num_records, sizeof(si[0]), comp_composer);
if (ret = itunesdb_set_mhod_order(mhod, 0x12, si, num_records)) return ret;
- mhod = chunk_new_child(mhyp);
+ mhod = chunk_new(itunesdb_cds, mhyp, "mhod");
if (mhod) {
- if (ret = chunk_init(itunesdb_cds, mhod, "mhod")) return ret;
if (ret = itunesdb_mhod_init(mhod, "library_playlist_index")) return ret;
set_prefix(si, num_records, prefix_composer);
if (ret = itunesdb_set_mhod_index(mhod, 0x12, si, num_records)) return ret;
@@ -1078,34 +1055,30 @@
}
/* Construct an "mhod" chunk for index: albumartist, sortartist, disc/tracknumber, title. */
- mhod = chunk_new_child(mhyp);
+ mhod = chunk_new(itunesdb_cds, mhyp, "mhod");
if (mhod) {
- if (ret = chunk_init(itunesdb_cds, mhod, "mhod")) return ret;
if (ret = itunesdb_mhod_init(mhod, "index")) return ret;
qsort(si, num_records, sizeof(si[0]), comp_albumartist_sortartist);
if (ret = itunesdb_set_mhod_order(mhod, 0x23, si, num_records)) return ret;
}
/* Construct an "mhod" chunk for index: albumartist, album, disc/tracknumber, title*/
- mhod = chunk_new_child(mhyp);
+ mhod = chunk_new(itunesdb_cds, mhyp, "mhod");
if (mhod) {
- if (ret = chunk_init(itunesdb_cds, mhod, "mhod")) return ret;
if (ret = itunesdb_mhod_init(mhod, "index")) return ret;
qsort(si, num_records, sizeof(si[0]), comp_albumartist);
if (ret = itunesdb_set_mhod_order(mhod, 0x24, si, num_records)) return ret;
}
/* Construct an "mhod" chunk for index: title?. */
- mhod = chunk_new_child(mhyp);
+ mhod = chunk_new(itunesdb_cds, mhyp, "mhod");
if (mhod) {
- if (ret = chunk_init(itunesdb_cds, mhod, "mhod")) return ret;
if (ret = itunesdb_mhod_init(mhod, "index")) return ret;
qsort(si, num_records, sizeof(si[0]), comp_title);
if (ret = itunesdb_set_mhod_order(mhod, 0x1D, si, num_records)) return ret;
- mhod = chunk_new_child(mhyp);
+ mhod = chunk_new(itunesdb_cds, mhyp, "mhod");
if (mhod) {
- if (ret = chunk_init(itunesdb_cds, mhod, "mhod")) return ret;
if (ret = itunesdb_mhod_init(mhod, "library_playlist_index")) return ret;
set_prefix(si, num_records, prefix_title);
if (ret = itunesdb_set_mhod_index(mhod, 0x1D, si, num_records)) return ret;
@@ -1113,18 +1086,16 @@
}
/* Construct an "mhod" chunk for index: title?. */
- mhod = chunk_new_child(mhyp);
+ mhod = chunk_new(itunesdb_cds, mhyp, "mhod");
if (mhod) {
- if (ret = chunk_init(itunesdb_cds, mhod, "mhod")) return ret;
if (ret = itunesdb_mhod_init(mhod, "index")) return ret;
qsort(si, num_records, sizeof(si[0]), comp_title);
if (ret = itunesdb_set_mhod_order(mhod, 0x1E, si, num_records)) return ret;
}
/* Construct an "mhod" chunk for index: title?. */
- mhod = chunk_new_child(mhyp);
+ mhod = chunk_new(itunesdb_cds, mhyp, "mhod");
if (mhod) {
- if (ret = chunk_init(itunesdb_cds, mhod, "mhod")) return ret;
if (ret = itunesdb_mhod_init(mhod, "index")) return ret;
qsort(si, num_records, sizeof(si[0]), comp_title);
if (ret = itunesdb_set_mhod_order(mhod, 0x1F, si, num_records)) return ret;
@@ -1135,19 +1106,16 @@
/* */
for (i = 0;i < num_records;++i) {
- mhip = chunk_new_child(mhyp);
+ mhip = chunk_new(itunesdb_cds, mhyp, "mhip");
if (mhip) {
- itunesdb_mhip_t* mhip_data = NULL;
- if (ret = chunk_init(itunesdb_cds, mhip, "mhip")) return ret;
- mhip_data = (itunesdb_mhip_t*)mhip->data;
+ itunesdb_mhip_t* mhip_data = (itunesdb_mhip_t*)mhip->data;
mhip_data->flag_podcast_group = 0;
mhip_data->track_id = 1008 + i * 2;
mhip_data->group_id = 1008 + i * 2 + 1;
- mhod = chunk_new_child(mhip);
+ mhod = chunk_new(itunesdb_cds, mhip, "mhod");
if (mhod) {
- if (ret = chunk_init(itunesdb_cds, mhod, "mhod")) return ret;
if (ret = itunesdb_mhod_init(mhod, "playlist_order")) return ret;
if (ret = itunesdb_set_mhod_playlist_order(mhod, 1008 + i * 2 + 1)) return ret;
} else {
@@ -1190,9 +1158,8 @@
mhyp_data->sort_order = 1;
/* Construct an "mhod" chunk for title. */
- mhod = chunk_new_child(mhyp);
+ mhod = chunk_new(itunesdb_cds, mhyp, "mhod");
if (mhod) {
- if (ret = chunk_init(itunesdb_cds, mhod, "mhod")) return ret;
if (ret = itunesdb_mhod_init(mhod, "title")) return ret;
if (ret = itunesdb_set_mhod_string(mhod, playlist->name)) return ret;
}
@@ -1205,19 +1172,15 @@
int index = (int)get_record_index(playlist->entries[i], records, num_records);
if (index < num_records) {
- mhip = chunk_new_child(mhyp);
+ mhip = chunk_new(itunesdb_cds, mhyp, "mhip");
if (mhip) {
- itunesdb_mhip_t* mhip_data = NULL;
- if (ret = chunk_init(itunesdb_cds, mhip, "mhip")) return ret;
- mhip_data = (itunesdb_mhip_t*)mhip->data;
-
+ itunesdb_mhip_t* mhip_data = (itunesdb_mhip_t*)mhip->data;
mhip_data->flag_podcast_group = 0;
mhip_data->track_id = index;
mhip_data->group_id = index + num_records;
- mhod = chunk_new_child(mhip);
+ mhod = chunk_new(itunesdb_cds, mhip, "mhod");
if (mhod) {
- if (ret = chunk_init(itunesdb_cds, mhod, "mhod")) return ret;
if (ret = itunesdb_mhod_init(mhod, "playlist_order")) return ret;
if (ret = itunesdb_set_mhod_playlist_order(mhod, i+1)) return ret;
} else {
@@ -1253,11 +1216,10 @@
itunesdb_mhbd_t* mhbd_data = NULL;
/* Construct "mhbd" chunk. */
- mhbd = (chunk_t*)calloc(1, sizeof(chunk_t));
+ mhbd = chunk_new(itunesdb_cds, NULL, "mhbd");
if (!mhbd) {
return IPODE_FAILEDNEWCHUNK;
}
- if (ret = chunk_init(itunesdb_cds, mhbd, "mhbd")) return ret;
mhbd_data = (itunesdb_mhbd_t*)mhbd->data;
#if 0
@@ -1283,27 +1245,21 @@
#endif
/* Construct "mhsd" chunk with track type (type = 1). */
- mhsd = chunk_new_child(mhbd);
+ mhsd = chunk_new(itunesdb_cds, mhbd, "mhsd");
if (mhsd) {
- itunesdb_mhsd_t* mhsd_data = NULL;
- if (ret = chunk_init(itunesdb_cds, mhsd, "mhsd")) return ret;
- mhsd_data = (itunesdb_mhsd_t*)mhsd->data;
+ itunesdb_mhsd_t* mhsd_data = (itunesdb_mhsd_t*)mhsd->data;
mhsd_data->type = 1; /* track type. */
/* Construct "mhlt" chunk. */
- mhlt = chunk_new_child(mhsd);
+ mhlt = chunk_new(itunesdb_cds, mhsd, "mhlt");
if (mhlt) {
- if (ret = chunk_init(itunesdb_cds, mhlt, "mhlt")) return ret;
-
/* For all records... */
for (i = 0;i < num_records;++i) {
const pmp_music_record_t* rec = &records[i];
/* Construct "mhit" chunk. */
- mhit = chunk_new_child(mhlt);
+ mhit = chunk_new(itunesdb_cds, mhlt, "mhit");
if (mhit) {
- if (ret = chunk_init(itunesdb_cds, mhit, "mhit")) return ret;
-
/* This will fill "mhit" chunk and create "mhod" chunks. */
if (ret = set_music_record(mhit, rec, i, path_to_root)) return ret;
} else {
@@ -1320,32 +1276,24 @@
/* Construct "mhsd" chunk with playlist type (type = 3). */
/* Construct "mhsd" chunk with playlist type (type = 2). */
- mhsd = chunk_new_child(mhbd);
+ mhsd = chunk_new(itunesdb_cds, mhbd, "mhsd");
if (mhsd) {
- itunesdb_mhsd_t* mhsd_data = NULL;
- if (ret = chunk_init(itunesdb_cds, mhsd, "mhsd")) return ret;
- mhsd_data = (itunesdb_mhsd_t*)mhsd->data;
+ itunesdb_mhsd_t* mhsd_data = (itunesdb_mhsd_t*)mhsd->data;
mhsd_data->type = 2; /* playlist type. */
/* Construct "mhlp" chunk. */
- mhlp = chunk_new_child(mhsd);
+ mhlp = chunk_new(itunesdb_cds, mhsd, "mhlp");
if (mhlp) {
- if (ret = chunk_init(itunesdb_cds, mhlp, "mhlp")) return ret;
-
/* Create a master playlist. */
- mhyp = chunk_new_child(mhlp);
+ mhyp = chunk_new(itunesdb_cds, mhlp, "mhyp");
if (mhyp) {
- itunesdb_mhyp_t* mhyp_data = NULL;
- if (ret = chunk_init(itunesdb_cds, mhyp, "mhyp")) return ret;
if (ret = set_master_playlist(mhyp, records, num_records)) return ret;
}
/* Create user's playlists. */
for (i = 0;i < num_playlists;++i) {
- mhyp = chunk_new_child(mhlp);
+ mhyp = chunk_new(itunesdb_cds, mhlp, "mhyp");
if (mhyp) {
- itunesdb_mhyp_t* mhyp_data = NULL;
- if (ret = chunk_init(itunesdb_cds, mhyp, "mhyp")) return ret;
if (ret = set_playlist(mhyp, &playlists[i], records, num_records)) return ret;
} else {
return IPODE_FAILEDNEWCHUNK;
Modified: trunk/pmplib/lib/pmp_ipod/ipod_photo.c
===================================================================
--- trunk/pmplib/lib/pmp_ipod/ipod_photo.c 2007-10-08 08:40:37 UTC (rev 427)
+++ trunk/pmplib/lib/pmp_ipod/ipod_photo.c 2007-10-08 14:16:18 UTC (rev 428)
@@ -82,15 +82,13 @@
int ret = 0;
chunk_t* mhod = NULL;
- mhod = chunk_new_child(mhii);
+ mhod = chunk_new(artworkdb_cds, mhii, "mhod");
if (mhod) {
chunk_t* mhni = NULL;
- if (ret = chunk_init(artworkdb_cds, mhod, "mhod")) return ret;
if (ret = artworkdb_mhod_init(mhod, 2)) return ret;
- mhni = chunk_new_child(mhod);
- if (ret = chunk_init(artworkdb_cds, mhni, "mhni")) return ret;
+ mhni = chunk_new(artworkdb_cds, mhod, "mhni");
if (mhni) {
chunk_t* mhod = NULL;
artworkdb_mhni_t *mhni_data = (artworkdb_mhni_t*)mhni->data;
@@ -102,9 +100,8 @@
mhni_data->width = tn->width;
mhni_data->height = tn->height;
- mhod = chunk_new_child(mhni);
+ mhod = chunk_new(artworkdb_cds, mhni, "mhod");
if (mhod) {
- if (ret = chunk_init(artworkdb_cds, mhod, "mhod")) return ret;
if (ret = artworkdb_mhod_init(mhod, 3)) return ret;
if (ret = artworkdb_mhod_set_ucs2string(mhod, tn->filename)) return ret;
}
@@ -137,32 +134,25 @@
uint32_t i;
chunk_t *mhba = NULL, *mhod = NULL, *mhia = NULL;
- mhba = chunk_new_child(mhla);
+ mhba = chunk_new(artworkdb_cds, mhla, "mhba");
if (mhba) {
- artworkdb_mhba_t *mhba_data = NULL;
- if (ret = chunk_init(artworkdb_cds, mhba, "mhba")) return ret;
-
- mhba_data = (artworkdb_mhba_t*)mhba->data;
+ artworkdb_mhba_t *mhba_data = (artworkdb_mhba_t*)mhba->data;
mhba_data->num_mhod = 1;
mhba_data->num_mhia = album->num_entries;
mhba_data->playlist_id = 263;
mhba_data->prev_playlist_id = 100;
mhba_data->album_type = 1;
- mhod = chunk_new_child(mhba);
+ mhod = chunk_new(artworkdb_cds, mhba, "mhod");
if (mhod) {
- if (ret = chunk_init(artworkdb_cds, mhod, "mhod")) return ret;
if (ret = artworkdb_mhod_init(mhod, 1)) return ret;
if (ret = artworkdb_mhod_set_utf8string(mhod, album->name)) return ret;
}
for (i = 0;i < album->num_entries;++i) {
- mhia = chunk_new_child(mhba);
+ mhia = chunk_new(artworkdb_cds, mhba, "mhia");
if (mhia) {
- artworkdb_mhia_t *mhia_data = NULL;
- if (ret = chunk_init(artworkdb_cds, mhia, "mhia")) return ret;
-
- mhia_data = (artworkdb_mhia_t*)mhia->data;
+ artworkdb_mhia_t *mhia_data = (artworkdb_mhia_t*)mhia->data;
mhia_data->image_id = 100+i;
}
}
@@ -192,29 +182,24 @@
pmp_photo_album_t ma;
/* Construct "mhfd" chunk. */
- mhfd = (chunk_t*)calloc(1, sizeof(chunk_t));
+ mhfd = chunk_new(artworkdb_cds, NULL, "mhfd");
if (!mhfd) {
return IPODE_FAILEDNEWCHUNK;
}
- if (ret = chunk_init(artworkdb_cds, mhfd, "mhfd")) return ret;
- mhfd_data = (artworkdb_mhfd_t*)mhfd->data;
+ mhfd_data = (artworkdb_mhfd_t*)mhfd->data;
mhfd_data->unknown8 = 2;
mhfd_data->next_nhii = num_records;
/* Construct "mhsd" chunk (type = 1). */
- mhsd = chunk_new_child(mhfd);
+ mhsd = chunk_new(artworkdb_cds, mhfd, "mhsd");
if (mhsd) {
- artworkdb_mhsd_t* mhsd_data = NULL;
- if (ret = chunk_init(artworkdb_cds, mhsd, "mhsd")) return ret;
- mhsd_data = (artworkdb_mhsd_t*)mhsd->data;
+ artworkdb_mhsd_t* mhsd_data = (artworkdb_mhsd_t*)mhsd->data;
mhsd_data->type = 1; /* */
/* Construct "mhli" chunk. */
- mhli = chunk_new_child(mhsd);
- if (mhli) {
- if (ret = chunk_init(artworkdb_cds, mhli, "mhli")) return ret;
- } else {
+ mhli = chunk_new(artworkdb_cds, mhsd, "mhli");
+ if (mhli == NULL) {
return IPODE_FAILEDNEWCHUNK;
}
@@ -223,11 +208,9 @@
const ipod_photo_record_t* rec = &records[i];
/* Construct "mhii" chunk. */
- mhii = chunk_new_child(mhli);
+ mhii = chunk_new(artworkdb_cds, mhli, "mhii");
if (mhii) {
- artworkdb_mhii_t* mhii_data = NULL;
- if (ret = chunk_init(artworkdb_cds, mhii, "mhii")) return ret;
- mhii_data = (artworkdb_mhii_t*)mhii->data;
+ artworkdb_mhii_t* mhii_data = (artworkdb_mhii_t*)mhii->data;
/* This will fill "mhii" chunk and create "mhod" chunks. */
if (ret = set_photo_record(mhii, rec, i, path_to_root)) return ret;
@@ -242,18 +225,14 @@
}
/* Construct "mhsd" chunk (type = 2). */
- mhsd = chunk_new_child(mhfd);
+ mhsd = chunk_new(artworkdb_cds, mhfd, "mhsd");
if (mhsd) {
- artworkdb_mhsd_t* mhsd_data = NULL;
- if (ret = chunk_init(artworkdb_cds, mhsd, "mhsd")) return ret;
- mhsd_data = (artworkdb_mhsd_t*)mhsd->data;
+ artworkdb_mhsd_t* mhsd_data = (artworkdb_mhsd_t*)mhsd->data;
mhsd_data->type = 2; /* */
/* Construct "mhla" chunk. */
- mhla = chunk_new_child(mhsd);
- if (mhla) {
- if (ret = chunk_init(artworkdb_cds, mhla, "mhla")) return ret;
- } else {
+ mhla = chunk_new(artworkdb_cds, mhsd, "mhla");
+ if (mhla == NULL) {
return IPODE_FAILEDNEWCHUNK;
}
@@ -272,24 +251,19 @@
}
/* Construct "mhsd" chunk (type = 3). */
- mhsd = chunk_new_child(mhfd);
+ mhsd = chunk_new(artworkdb_cds, mhfd, "mhsd");
if (mhsd) {
- artworkdb_mhsd_t* mhsd_data = NULL;
- if (ret = chunk_init(artworkdb_cds, mhsd, "mhsd")) return ret;
- mhsd_data = (artworkdb_mhsd_t*)mhsd->data;
+ artworkdb_mhsd_t* mhsd_data = (artworkdb_mhsd_t*)mhsd->data;
mhsd_data->type = 3; /* */
/* Construct "mhlf" chunk. */
- mhlf = chunk_new_child(mhsd);
- if (mhlf) {
- if (ret = chunk_init(artworkdb_cds, mhlf, "mhlf")) return ret;
- } else {
+ mhlf = chunk_new(artworkdb_cds, mhsd, "mhlf");
+ if (mhlf == NULL) {
return IPODE_FAILEDNEWCHUNK;
}
for (i = 0;i < ipod->num_photo_formats;++i) {
- mhif = chunk_new_child(mhlf);
- if (ret = chunk_init(artworkdb_cds, mhif, "mhif")) return ret;
+ mhif = chunk_new(artworkdb_cds, mhlf, "mhif");
mhif_data = (artworkdb_mhif_t*)mhif->data;
mhif_data->format_id = ipod->photo_formats[i].format;
mhif_data->image_size = ipod->photo_formats[i].size;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|