FLAC__bool do_major_operation__remove(FLAC__Metadata_Chain *chain, const CommandLineOptions *options) { FLAC__Metadata_Iterator *iterator = FLAC__metadata_iterator_new(); FLAC__bool ok = true; unsigned block_number; if(0 == iterator) die("out of memory allocating iterator"); FLAC__metadata_iterator_init(iterator, chain); block_number = 0; while(ok && FLAC__metadata_iterator_next(iterator)) { block_number++; if(passes_filter(options, FLAC__metadata_iterator_get_block(iterator), block_number)) { ok &= FLAC__metadata_iterator_delete_block(iterator, options->use_padding); if(options->use_padding) ok &= FLAC__metadata_iterator_next(iterator); } } FLAC__metadata_iterator_delete(iterator); return ok; }
FLAC__bool do_major_operation__list(const char *filename, FLAC__Metadata_Chain *chain, const CommandLineOptions *options) { FLAC__Metadata_Iterator *iterator = FLAC__metadata_iterator_new(); FLAC__StreamMetadata *block; FLAC__bool ok = true; unsigned block_number; if(0 == iterator) die("out of memory allocating iterator"); FLAC__metadata_iterator_init(iterator, chain); block_number = 0; do { block = FLAC__metadata_iterator_get_block(iterator); ok &= (0 != block); if(!ok) fprintf(stderr, "%s: ERROR: couldn't get block from chain\n", filename); else if(passes_filter(options, FLAC__metadata_iterator_get_block(iterator), block_number)) write_metadata(filename, block, block_number, !options->utf8_convert, options->application_data_format_is_hexdump); block_number++; } while(ok && FLAC__metadata_iterator_next(iterator)); FLAC__metadata_iterator_delete(iterator); return ok; }
static int determine_display_tasks_filtered(void) { struct per_pid *p; struct per_pidcomm *c; int count = 0; p = all_data; while (p) { p->display = 0; if (p->start_time == 1) p->start_time = first_time; /* no exit marker, task kept running to the end */ if (p->end_time == 0) p->end_time = last_time; c = p->all; while (c) { c->display = 0; if (c->start_time == 1) c->start_time = first_time; if (passes_filter(p, c)) { c->display = 1; p->display = 1; count++; } if (c->end_time == 0) c->end_time = last_time; c = c->next; } p = p->next; } return count; }