• Home
  • Raw
  • Download

Lines Matching refs:chain

920 	FLAC__Metadata_Chain *chain;  member
957 static void chain_init_(FLAC__Metadata_Chain *chain) in chain_init_() argument
959 FLAC__ASSERT(0 != chain); in chain_init_()
961 chain->filename = 0; in chain_init_()
962 chain->is_ogg = false; in chain_init_()
963 chain->head = chain->tail = 0; in chain_init_()
964 chain->nodes = 0; in chain_init_()
965 chain->status = FLAC__METADATA_CHAIN_STATUS_OK; in chain_init_()
966 chain->initial_length = 0; in chain_init_()
967 chain->read_cb = 0; in chain_init_()
970 static void chain_clear_(FLAC__Metadata_Chain *chain) in chain_clear_() argument
974 FLAC__ASSERT(0 != chain); in chain_clear_()
976 for(node = chain->head; node; ) { in chain_clear_()
982 if(0 != chain->filename) in chain_clear_()
983 free(chain->filename); in chain_clear_()
985 chain_init_(chain); in chain_clear_()
988 static void chain_append_node_(FLAC__Metadata_Chain *chain, FLAC__Metadata_Node *node) in chain_append_node_() argument
990 FLAC__ASSERT(0 != chain); in chain_append_node_()
996 if(0 != chain->tail) in chain_append_node_()
997 chain->tail->data->is_last = false; in chain_append_node_()
999 if(0 == chain->head) in chain_append_node_()
1000 chain->head = node; in chain_append_node_()
1002 FLAC__ASSERT(0 != chain->tail); in chain_append_node_()
1003 chain->tail->next = node; in chain_append_node_()
1004 node->prev = chain->tail; in chain_append_node_()
1006 chain->tail = node; in chain_append_node_()
1007 chain->nodes++; in chain_append_node_()
1010 static void chain_remove_node_(FLAC__Metadata_Chain *chain, FLAC__Metadata_Node *node) in chain_remove_node_() argument
1012 FLAC__ASSERT(0 != chain); in chain_remove_node_()
1015 if(node == chain->head) in chain_remove_node_()
1016 chain->head = node->next; in chain_remove_node_()
1020 if(node == chain->tail) in chain_remove_node_()
1021 chain->tail = node->prev; in chain_remove_node_()
1025 if(0 != chain->tail) in chain_remove_node_()
1026 chain->tail->data->is_last = true; in chain_remove_node_()
1028 chain->nodes--; in chain_remove_node_()
1031 static void chain_delete_node_(FLAC__Metadata_Chain *chain, FLAC__Metadata_Node *node) in chain_delete_node_() argument
1033 chain_remove_node_(chain, node); in chain_delete_node_()
1037 static off_t chain_calculate_length_(FLAC__Metadata_Chain *chain) in chain_calculate_length_() argument
1041 for(node = chain->head; node; node = node->next) in chain_calculate_length_()
1052 FLAC__ASSERT(0 != iterator->chain); in iterator_insert_node_()
1053 FLAC__ASSERT(0 != iterator->chain->head); in iterator_insert_node_()
1054 FLAC__ASSERT(0 != iterator->chain->tail); in iterator_insert_node_()
1062 iterator->chain->head = node; in iterator_insert_node_()
1068 iterator->chain->nodes++; in iterator_insert_node_()
1077 FLAC__ASSERT(0 != iterator->chain); in iterator_insert_node_after_()
1078 FLAC__ASSERT(0 != iterator->chain->head); in iterator_insert_node_after_()
1079 FLAC__ASSERT(0 != iterator->chain->tail); in iterator_insert_node_after_()
1087 iterator->chain->tail = node; in iterator_insert_node_after_()
1093 iterator->chain->tail->data->is_last = true; in iterator_insert_node_after_()
1095 iterator->chain->nodes++; in iterator_insert_node_after_()
1099 static FLAC__bool chain_merge_adjacent_padding_(FLAC__Metadata_Chain *chain, FLAC__Metadata_Node *n… in chain_merge_adjacent_padding_() argument
1105 chain_delete_node_(chain, node->next); in chain_merge_adjacent_padding_()
1119 static off_t chain_prepare_for_write_(FLAC__Metadata_Chain *chain, FLAC__bool use_padding) in chain_prepare_for_write_() argument
1121 off_t current_length = chain_calculate_length_(chain); in chain_prepare_for_write_()
1125 …if(current_length < chain->initial_length && chain->tail->data->type == FLAC__METADATA_TYPE_PADDIN… in chain_prepare_for_write_()
1126 const off_t delta = chain->initial_length - current_length; in chain_prepare_for_write_()
1127 chain->tail->data->length += delta; in chain_prepare_for_write_()
1129 FLAC__ASSERT(current_length == chain->initial_length); in chain_prepare_for_write_()
1132 else if(current_length + (off_t)FLAC__STREAM_METADATA_HEADER_LENGTH <= chain->initial_length) { in chain_prepare_for_write_()
1136 chain->status = FLAC__METADATA_CHAIN_STATUS_MEMORY_ALLOCATION_ERROR; in chain_prepare_for_write_()
1139 padding->length = chain->initial_length - (FLAC__STREAM_METADATA_HEADER_LENGTH + current_length); in chain_prepare_for_write_()
1142 chain->status = FLAC__METADATA_CHAIN_STATUS_MEMORY_ALLOCATION_ERROR; in chain_prepare_for_write_()
1146 chain_append_node_(chain, node); in chain_prepare_for_write_()
1147 current_length = chain_calculate_length_(chain); in chain_prepare_for_write_()
1148 FLAC__ASSERT(current_length == chain->initial_length); in chain_prepare_for_write_()
1151 else if(current_length > chain->initial_length) { in chain_prepare_for_write_()
1152 const off_t delta = current_length - chain->initial_length; in chain_prepare_for_write_()
1153 if(chain->tail->data->type == FLAC__METADATA_TYPE_PADDING) { in chain_prepare_for_write_()
1155 if((off_t)chain->tail->data->length + (off_t)FLAC__STREAM_METADATA_HEADER_LENGTH == delta) { in chain_prepare_for_write_()
1156 chain_delete_node_(chain, chain->tail); in chain_prepare_for_write_()
1157 current_length = chain_calculate_length_(chain); in chain_prepare_for_write_()
1158 FLAC__ASSERT(current_length == chain->initial_length); in chain_prepare_for_write_()
1161 else if((off_t)chain->tail->data->length >= delta) { in chain_prepare_for_write_()
1162 chain->tail->data->length -= delta; in chain_prepare_for_write_()
1164 FLAC__ASSERT(current_length == chain->initial_length); in chain_prepare_for_write_()
1173 static FLAC__bool chain_read_cb_(FLAC__Metadata_Chain *chain, FLAC__IOHandle handle, FLAC__IOCallba… in chain_read_cb_() argument
1177 FLAC__ASSERT(0 != chain); in chain_read_cb_()
1185 chain->status = FLAC__METADATA_CHAIN_STATUS_READ_ERROR; in chain_read_cb_()
1188 chain->status = FLAC__METADATA_CHAIN_STATUS_SEEK_ERROR; in chain_read_cb_()
1191 chain->status = FLAC__METADATA_CHAIN_STATUS_NOT_A_FLAC_FILE; in chain_read_cb_()
1201 chain->status = FLAC__METADATA_CHAIN_STATUS_READ_ERROR; in chain_read_cb_()
1204 chain->first_offset = (off_t)pos; in chain_read_cb_()
1215 chain->status = FLAC__METADATA_CHAIN_STATUS_MEMORY_ALLOCATION_ERROR; in chain_read_cb_()
1221 chain->status = FLAC__METADATA_CHAIN_STATUS_READ_ERROR; in chain_read_cb_()
1228 chain->status = FLAC__METADATA_CHAIN_STATUS_MEMORY_ALLOCATION_ERROR; in chain_read_cb_()
1235chain->status = get_equivalent_status_(read_metadata_block_data_cb_(handle, read_cb, seek_cb, node… in chain_read_cb_()
1236 if(chain->status != FLAC__METADATA_CHAIN_STATUS_OK) { in chain_read_cb_()
1240 chain_append_node_(chain, node); in chain_read_cb_()
1247 chain->status = FLAC__METADATA_CHAIN_STATUS_READ_ERROR; in chain_read_cb_()
1250 chain->last_offset = (off_t)pos; in chain_read_cb_()
1253 chain->initial_length = chain_calculate_length_(chain); in chain_read_cb_()
1260 FLAC__Metadata_Chain *chain = (FLAC__Metadata_Chain*)client_data; in chain_read_ogg_read_cb_() local
1262 if(*bytes > 0 && chain->status == FLAC__METADATA_CHAIN_STATUS_OK) { in chain_read_ogg_read_cb_()
1263 *bytes = chain->read_cb(buffer, sizeof(FLAC__byte), *bytes, chain->handle); in chain_read_ogg_read_cb_()
1281 FLAC__Metadata_Chain *chain = (FLAC__Metadata_Chain*)client_data; in chain_read_ogg_metadata_cb_() local
1288 chain->status = FLAC__METADATA_CHAIN_STATUS_MEMORY_ALLOCATION_ERROR; in chain_read_ogg_metadata_cb_()
1295 chain->status = FLAC__METADATA_CHAIN_STATUS_MEMORY_ALLOCATION_ERROR; in chain_read_ogg_metadata_cb_()
1299 chain_append_node_(chain, node); in chain_read_ogg_metadata_cb_()
1304 FLAC__Metadata_Chain *chain = (FLAC__Metadata_Chain*)client_data; in chain_read_ogg_error_cb_() local
1306 chain->status = FLAC__METADATA_CHAIN_STATUS_INTERNAL_ERROR; /*@@@ maybe needs better error code */ in chain_read_ogg_error_cb_()
1309 static FLAC__bool chain_read_ogg_cb_(FLAC__Metadata_Chain *chain, FLAC__IOHandle handle, FLAC__IOCa… in chain_read_ogg_cb_() argument
1313 FLAC__ASSERT(0 != chain); in chain_read_ogg_cb_()
1317 chain->handle = handle; in chain_read_ogg_cb_()
1318 chain->read_cb = read_cb; in chain_read_ogg_cb_()
1320 chain->status = FLAC__METADATA_CHAIN_STATUS_MEMORY_ALLOCATION_ERROR; in chain_read_ogg_cb_()
1324 …ead_ogg_write_cb_, chain_read_ogg_metadata_cb_, chain_read_ogg_error_cb_, chain) != FLAC__STREAM_D… in chain_read_ogg_cb_()
1326 chain->status = FLAC__METADATA_CHAIN_STATUS_INTERNAL_ERROR; /*@@@ maybe needs better error code */ in chain_read_ogg_cb_()
1330chain->first_offset = 0; /*@@@ wrong; will need to be set correctly to implement metadata writing … in chain_read_ogg_cb_()
1333 chain->status = FLAC__METADATA_CHAIN_STATUS_INTERNAL_ERROR; /*@@@ maybe needs better error code */ in chain_read_ogg_cb_()
1334 if(chain->status != FLAC__METADATA_CHAIN_STATUS_OK) { in chain_read_ogg_cb_()
1341chain->last_offset = 0; /*@@@ wrong; will need to be set correctly to implement metadata writing f… in chain_read_ogg_cb_()
1343 chain->initial_length = chain_calculate_length_(chain); in chain_read_ogg_cb_()
1348 static FLAC__bool chain_rewrite_metadata_in_place_cb_(FLAC__Metadata_Chain *chain, FLAC__IOHandle h… in chain_rewrite_metadata_in_place_cb_() argument
1352 FLAC__ASSERT(0 != chain); in chain_rewrite_metadata_in_place_cb_()
1353 FLAC__ASSERT(0 != chain->head); in chain_rewrite_metadata_in_place_cb_()
1355 if(0 != seek_cb(handle, chain->first_offset, SEEK_SET)) { in chain_rewrite_metadata_in_place_cb_()
1356 chain->status = FLAC__METADATA_CHAIN_STATUS_SEEK_ERROR; in chain_rewrite_metadata_in_place_cb_()
1360 for(node = chain->head; node; node = node->next) { in chain_rewrite_metadata_in_place_cb_()
1362 chain->status = FLAC__METADATA_CHAIN_STATUS_WRITE_ERROR; in chain_rewrite_metadata_in_place_cb_()
1366 chain->status = FLAC__METADATA_CHAIN_STATUS_WRITE_ERROR; in chain_rewrite_metadata_in_place_cb_()
1373 chain->status = FLAC__METADATA_CHAIN_STATUS_OK; in chain_rewrite_metadata_in_place_cb_()
1377 static FLAC__bool chain_rewrite_metadata_in_place_(FLAC__Metadata_Chain *chain) in chain_rewrite_metadata_in_place_() argument
1382 FLAC__ASSERT(0 != chain->filename); in chain_rewrite_metadata_in_place_()
1384 if(0 == (file = fopen(chain->filename, "r+b"))) { in chain_rewrite_metadata_in_place_()
1385 chain->status = FLAC__METADATA_CHAIN_STATUS_ERROR_OPENING_FILE; in chain_rewrite_metadata_in_place_()
1390 …ret = chain_rewrite_metadata_in_place_cb_(chain, (FLAC__IOHandle)file, (FLAC__IOCallback_Write)fwr… in chain_rewrite_metadata_in_place_()
1397 static FLAC__bool chain_rewrite_file_(FLAC__Metadata_Chain *chain, const char *tempfile_path_prefix) in chain_rewrite_file_() argument
1404 FLAC__ASSERT(0 != chain); in chain_rewrite_file_()
1405 FLAC__ASSERT(0 != chain->filename); in chain_rewrite_file_()
1406 FLAC__ASSERT(0 != chain->head); in chain_rewrite_file_()
1409 if(0 == (f = fopen(chain->filename, "rb"))) { in chain_rewrite_file_()
1410 chain->status = FLAC__METADATA_CHAIN_STATUS_ERROR_OPENING_FILE; in chain_rewrite_file_()
1413 if(!open_tempfile_(chain->filename, tempfile_path_prefix, &tempfile, &tempfilename, &status)) { in chain_rewrite_file_()
1414 chain->status = get_equivalent_status_(status); in chain_rewrite_file_()
1418 if(!copy_n_bytes_from_file_(f, tempfile, chain->first_offset, &status)) { in chain_rewrite_file_()
1419 chain->status = get_equivalent_status_(status); in chain_rewrite_file_()
1425 for(node = chain->head; node; node = node->next) { in chain_rewrite_file_()
1427 chain->status = get_equivalent_status_(status); in chain_rewrite_file_()
1431 chain->status = get_equivalent_status_(status); in chain_rewrite_file_()
1438 if(0 != fseeko(f, chain->last_offset, SEEK_SET)) { in chain_rewrite_file_()
1440 chain->status = FLAC__METADATA_CHAIN_STATUS_SEEK_ERROR; in chain_rewrite_file_()
1445 chain->status = get_equivalent_status_(status); in chain_rewrite_file_()
1451 if(!transport_tempfile_(chain->filename, &tempfile, &tempfilename, &status)) in chain_rewrite_file_()
1458 static FLAC__bool chain_rewrite_file_cb_(FLAC__Metadata_Chain *chain, FLAC__IOHandle handle, FLAC__… in chain_rewrite_file_cb_() argument
1463 FLAC__ASSERT(0 != chain); in chain_rewrite_file_cb_()
1464 FLAC__ASSERT(0 == chain->filename); in chain_rewrite_file_cb_()
1465 FLAC__ASSERT(0 != chain->head); in chain_rewrite_file_cb_()
1468 …if(!copy_n_bytes_from_file_cb_(handle, read_cb, temp_handle, temp_write_cb, chain->first_offset, &… in chain_rewrite_file_cb_()
1469 chain->status = get_equivalent_status_(status); in chain_rewrite_file_cb_()
1474 for(node = chain->head; node; node = node->next) { in chain_rewrite_file_cb_()
1476 chain->status = FLAC__METADATA_CHAIN_STATUS_WRITE_ERROR; in chain_rewrite_file_cb_()
1480 chain->status = FLAC__METADATA_CHAIN_STATUS_WRITE_ERROR; in chain_rewrite_file_cb_()
1487 if(0 != seek_cb(handle, chain->last_offset, SEEK_SET)) { in chain_rewrite_file_cb_()
1488 chain->status = FLAC__METADATA_CHAIN_STATUS_SEEK_ERROR; in chain_rewrite_file_cb_()
1492 chain->status = get_equivalent_status_(status); in chain_rewrite_file_cb_()
1501 FLAC__Metadata_Chain *chain = (FLAC__Metadata_Chain*)calloc(1, sizeof(FLAC__Metadata_Chain)); in FLAC__metadata_chain_new() local
1503 if(0 != chain) in FLAC__metadata_chain_new()
1504 chain_init_(chain); in FLAC__metadata_chain_new()
1506 return chain; in FLAC__metadata_chain_new()
1509 FLAC_API void FLAC__metadata_chain_delete(FLAC__Metadata_Chain *chain) in FLAC__metadata_chain_delete() argument
1511 FLAC__ASSERT(0 != chain); in FLAC__metadata_chain_delete()
1513 chain_clear_(chain); in FLAC__metadata_chain_delete()
1515 free(chain); in FLAC__metadata_chain_delete()
1518 FLAC_API FLAC__Metadata_ChainStatus FLAC__metadata_chain_status(FLAC__Metadata_Chain *chain) in FLAC__metadata_chain_status() argument
1522 FLAC__ASSERT(0 != chain); in FLAC__metadata_chain_status()
1524 status = chain->status; in FLAC__metadata_chain_status()
1525 chain->status = FLAC__METADATA_CHAIN_STATUS_OK; in FLAC__metadata_chain_status()
1529 static FLAC__bool chain_read_(FLAC__Metadata_Chain *chain, const char *filename, FLAC__bool is_ogg) in chain_read_() argument
1534 FLAC__ASSERT(0 != chain); in chain_read_()
1537 chain_clear_(chain); in chain_read_()
1539 if(0 == (chain->filename = strdup(filename))) { in chain_read_()
1540 chain->status = FLAC__METADATA_CHAIN_STATUS_MEMORY_ALLOCATION_ERROR; in chain_read_()
1544 chain->is_ogg = is_ogg; in chain_read_()
1547 chain->status = FLAC__METADATA_CHAIN_STATUS_ERROR_OPENING_FILE; in chain_read_()
1553 chain_read_ogg_cb_(chain, file, (FLAC__IOCallback_Read)fread) : in chain_read_()
1554 chain_read_cb_(chain, file, (FLAC__IOCallback_Read)fread, fseek_wrapper_, ftell_wrapper_) in chain_read_()
1562 FLAC_API FLAC__bool FLAC__metadata_chain_read(FLAC__Metadata_Chain *chain, const char *filename) in FLAC__metadata_chain_read() argument
1564 return chain_read_(chain, filename, /*is_ogg=*/false); in FLAC__metadata_chain_read()
1568 FLAC_API FLAC__bool FLAC__metadata_chain_read_ogg(FLAC__Metadata_Chain *chain, const char *filename) in FLAC__metadata_chain_read_ogg() argument
1570 return chain_read_(chain, filename, /*is_ogg=*/true); in FLAC__metadata_chain_read_ogg()
1573 static FLAC__bool chain_read_with_callbacks_(FLAC__Metadata_Chain *chain, FLAC__IOHandle handle, FL… in chain_read_with_callbacks_() argument
1577 FLAC__ASSERT(0 != chain); in chain_read_with_callbacks_()
1579 chain_clear_(chain); in chain_read_with_callbacks_()
1582 chain->status = FLAC__METADATA_CHAIN_STATUS_INVALID_CALLBACKS; in chain_read_with_callbacks_()
1586 chain->is_ogg = is_ogg; in chain_read_with_callbacks_()
1590 chain->status = FLAC__METADATA_CHAIN_STATUS_SEEK_ERROR; in chain_read_with_callbacks_()
1596 chain_read_ogg_cb_(chain, handle, callbacks.read) : in chain_read_with_callbacks_()
1597 chain_read_cb_(chain, handle, callbacks.read, callbacks.seek, callbacks.tell) in chain_read_with_callbacks_()
1603 FLAC_API FLAC__bool FLAC__metadata_chain_read_with_callbacks(FLAC__Metadata_Chain *chain, FLAC__IOH… in FLAC__metadata_chain_read_with_callbacks() argument
1605 return chain_read_with_callbacks_(chain, handle, callbacks, /*is_ogg=*/false); in FLAC__metadata_chain_read_with_callbacks()
1609 FLAC_API FLAC__bool FLAC__metadata_chain_read_ogg_with_callbacks(FLAC__Metadata_Chain *chain, FLAC_… in FLAC__metadata_chain_read_ogg_with_callbacks() argument
1611 return chain_read_with_callbacks_(chain, handle, callbacks, /*is_ogg=*/true); in FLAC__metadata_chain_read_ogg_with_callbacks()
1614 FLAC_API FLAC__bool FLAC__metadata_chain_check_if_tempfile_needed(FLAC__Metadata_Chain *chain, FLAC… in FLAC__metadata_chain_check_if_tempfile_needed() argument
1620 const off_t current_length = chain_calculate_length_(chain); in FLAC__metadata_chain_check_if_tempfile_needed()
1622 FLAC__ASSERT(0 != chain); in FLAC__metadata_chain_check_if_tempfile_needed()
1626 …if(current_length < chain->initial_length && chain->tail->data->type == FLAC__METADATA_TYPE_PADDIN… in FLAC__metadata_chain_check_if_tempfile_needed()
1629 else if(current_length + (off_t)FLAC__STREAM_METADATA_HEADER_LENGTH <= chain->initial_length) in FLAC__metadata_chain_check_if_tempfile_needed()
1632 else if(current_length > chain->initial_length) { in FLAC__metadata_chain_check_if_tempfile_needed()
1633 const off_t delta = current_length - chain->initial_length; in FLAC__metadata_chain_check_if_tempfile_needed()
1634 if(chain->tail->data->type == FLAC__METADATA_TYPE_PADDING) { in FLAC__metadata_chain_check_if_tempfile_needed()
1636 if((off_t)chain->tail->data->length + (off_t)FLAC__STREAM_METADATA_HEADER_LENGTH == delta) in FLAC__metadata_chain_check_if_tempfile_needed()
1639 else if((off_t)chain->tail->data->length >= delta) in FLAC__metadata_chain_check_if_tempfile_needed()
1645 return (current_length != chain->initial_length); in FLAC__metadata_chain_check_if_tempfile_needed()
1648 FLAC_API FLAC__bool FLAC__metadata_chain_write(FLAC__Metadata_Chain *chain, FLAC__bool use_padding,… in FLAC__metadata_chain_write() argument
1654 FLAC__ASSERT(0 != chain); in FLAC__metadata_chain_write()
1656 if (chain->is_ogg) { /* cannot write back to Ogg FLAC yet */ in FLAC__metadata_chain_write()
1657 chain->status = FLAC__METADATA_CHAIN_STATUS_INTERNAL_ERROR; in FLAC__metadata_chain_write()
1661 if (0 == chain->filename) { in FLAC__metadata_chain_write()
1662 chain->status = FLAC__METADATA_CHAIN_STATUS_READ_WRITE_MISMATCH; in FLAC__metadata_chain_write()
1666 current_length = chain_prepare_for_write_(chain, use_padding); in FLAC__metadata_chain_write()
1673 get_file_stats_(chain->filename, &stats); in FLAC__metadata_chain_write()
1675 if(current_length == chain->initial_length) { in FLAC__metadata_chain_write()
1676 if(!chain_rewrite_metadata_in_place_(chain)) in FLAC__metadata_chain_write()
1680 if(!chain_rewrite_file_(chain, tempfile_path_prefix)) in FLAC__metadata_chain_write()
1686 chain->initial_length = current_length; in FLAC__metadata_chain_write()
1687 chain->last_offset = chain->first_offset; in FLAC__metadata_chain_write()
1688 for(node = chain->head; node; node = node->next) in FLAC__metadata_chain_write()
1689 chain->last_offset += (FLAC__STREAM_METADATA_HEADER_LENGTH + node->data->length); in FLAC__metadata_chain_write()
1694 set_file_stats_(chain->filename, &stats); in FLAC__metadata_chain_write()
1699 FLAC_API FLAC__bool FLAC__metadata_chain_write_with_callbacks(FLAC__Metadata_Chain *chain, FLAC__bo… in FLAC__metadata_chain_write_with_callbacks() argument
1703 FLAC__ASSERT(0 != chain); in FLAC__metadata_chain_write_with_callbacks()
1705 if (chain->is_ogg) { /* cannot write back to Ogg FLAC yet */ in FLAC__metadata_chain_write_with_callbacks()
1706 chain->status = FLAC__METADATA_CHAIN_STATUS_INTERNAL_ERROR; in FLAC__metadata_chain_write_with_callbacks()
1710 if (0 != chain->filename) { in FLAC__metadata_chain_write_with_callbacks()
1711 chain->status = FLAC__METADATA_CHAIN_STATUS_READ_WRITE_MISMATCH; in FLAC__metadata_chain_write_with_callbacks()
1716 chain->status = FLAC__METADATA_CHAIN_STATUS_INVALID_CALLBACKS; in FLAC__metadata_chain_write_with_callbacks()
1720 if (FLAC__metadata_chain_check_if_tempfile_needed(chain, use_padding)) { in FLAC__metadata_chain_write_with_callbacks()
1721 chain->status = FLAC__METADATA_CHAIN_STATUS_WRONG_WRITE_CALL; in FLAC__metadata_chain_write_with_callbacks()
1725 current_length = chain_prepare_for_write_(chain, use_padding); in FLAC__metadata_chain_write_with_callbacks()
1731 FLAC__ASSERT(current_length == chain->initial_length); in FLAC__metadata_chain_write_with_callbacks()
1733 return chain_rewrite_metadata_in_place_cb_(chain, handle, callbacks.write, callbacks.seek); in FLAC__metadata_chain_write_with_callbacks()
1736 …C__metadata_chain_write_with_callbacks_and_tempfile(FLAC__Metadata_Chain *chain, FLAC__bool use_pa… in FLAC__metadata_chain_write_with_callbacks_and_tempfile() argument
1740 FLAC__ASSERT(0 != chain); in FLAC__metadata_chain_write_with_callbacks_and_tempfile()
1742 if (chain->is_ogg) { /* cannot write back to Ogg FLAC yet */ in FLAC__metadata_chain_write_with_callbacks_and_tempfile()
1743 chain->status = FLAC__METADATA_CHAIN_STATUS_INTERNAL_ERROR; in FLAC__metadata_chain_write_with_callbacks_and_tempfile()
1747 if (0 != chain->filename) { in FLAC__metadata_chain_write_with_callbacks_and_tempfile()
1748 chain->status = FLAC__METADATA_CHAIN_STATUS_READ_WRITE_MISMATCH; in FLAC__metadata_chain_write_with_callbacks_and_tempfile()
1753 chain->status = FLAC__METADATA_CHAIN_STATUS_INVALID_CALLBACKS; in FLAC__metadata_chain_write_with_callbacks_and_tempfile()
1757 chain->status = FLAC__METADATA_CHAIN_STATUS_INVALID_CALLBACKS; in FLAC__metadata_chain_write_with_callbacks_and_tempfile()
1761 if (!FLAC__metadata_chain_check_if_tempfile_needed(chain, use_padding)) { in FLAC__metadata_chain_write_with_callbacks_and_tempfile()
1762 chain->status = FLAC__METADATA_CHAIN_STATUS_WRONG_WRITE_CALL; in FLAC__metadata_chain_write_with_callbacks_and_tempfile()
1766 current_length = chain_prepare_for_write_(chain, use_padding); in FLAC__metadata_chain_write_with_callbacks_and_tempfile()
1772 FLAC__ASSERT(current_length != chain->initial_length); in FLAC__metadata_chain_write_with_callbacks_and_tempfile()
1776 chain->status = FLAC__METADATA_CHAIN_STATUS_SEEK_ERROR; in FLAC__metadata_chain_write_with_callbacks_and_tempfile()
1780 …if(!chain_rewrite_file_cb_(chain, handle, callbacks.read, callbacks.seek, callbacks.eof, temp_hand… in FLAC__metadata_chain_write_with_callbacks_and_tempfile()
1786 chain->initial_length = current_length; in FLAC__metadata_chain_write_with_callbacks_and_tempfile()
1787 chain->last_offset = chain->first_offset; in FLAC__metadata_chain_write_with_callbacks_and_tempfile()
1788 for(node = chain->head; node; node = node->next) in FLAC__metadata_chain_write_with_callbacks_and_tempfile()
1789 chain->last_offset += (FLAC__STREAM_METADATA_HEADER_LENGTH + node->data->length); in FLAC__metadata_chain_write_with_callbacks_and_tempfile()
1795 FLAC_API void FLAC__metadata_chain_merge_padding(FLAC__Metadata_Chain *chain) in FLAC__metadata_chain_merge_padding() argument
1799 FLAC__ASSERT(0 != chain); in FLAC__metadata_chain_merge_padding()
1801 for(node = chain->head; node; ) { in FLAC__metadata_chain_merge_padding()
1802 if(!chain_merge_adjacent_padding_(chain, node)) in FLAC__metadata_chain_merge_padding()
1807 FLAC_API void FLAC__metadata_chain_sort_padding(FLAC__Metadata_Chain *chain) in FLAC__metadata_chain_sort_padding() argument
1812 FLAC__ASSERT(0 != chain); in FLAC__metadata_chain_sort_padding()
1818 for(i = 0, node = chain->head; i < chain->nodes; i++) { in FLAC__metadata_chain_sort_padding()
1821 chain_remove_node_(chain, node); in FLAC__metadata_chain_sort_padding()
1822 chain_append_node_(chain, node); in FLAC__metadata_chain_sort_padding()
1830 FLAC__metadata_chain_merge_padding(chain); in FLAC__metadata_chain_sort_padding()
1853 …I void FLAC__metadata_iterator_init(FLAC__Metadata_Iterator *iterator, FLAC__Metadata_Chain *chain) in FLAC__metadata_iterator_init() argument
1856 FLAC__ASSERT(0 != chain); in FLAC__metadata_iterator_init()
1857 FLAC__ASSERT(0 != chain->head); in FLAC__metadata_iterator_init()
1859 iterator->chain = chain; in FLAC__metadata_iterator_init()
1860 iterator->current = chain->head; in FLAC__metadata_iterator_init()
1928 chain_delete_node_(iterator->chain, iterator->current); in FLAC__metadata_iterator_delete_block()