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. |