+ if (f_more > 1)
+ {
+ /* block to block boundary in the original file. */
+ f_more = 1;
+ if (cat == pp->cat)
+ {
+ /* the resulting output is of the same category as the
+ the original
+ */
+ if (mb[ptr].offset == r_offset)
+ {
+ /* the resulting output block is empty. Delete
+ the original (if any)
+ */
+ if (is->method->debug > 3)
+ logf (LOG_LOG, "isc: release A");
+ if (mb[ptr].block)
+ isc_release_block (is, pp->cat, mb[ptr].block);
+ mb[ptr].block = pp->pos;
+ mb[ptr].dirty = 0;
+ }
+ else
+ {
+ /* indicate new boundary based on the original file */
+ mb[++ptr].block = pp->pos;
+ mb[ptr].dirty = 0;
+ mb[ptr].offset = r_offset;
+#if 0
+ if (r_item && cat == is->max_cat)
+ {
+ /* We are dealing with block(s) of max size. Block(s)
+ will be flushed. Note: the block(s) are surely not
+ the last one(s).
+ */
+ if (is->method->debug > 2)
+ logf (LOG_LOG, "isc: flush A %d sections", ptr);
+ flush_blocks (is, mb, ptr-1, r_buf, &firstpos, cat, 0);
+ ptr = 0;
+ mb[ptr].block = pp->pos;
+ mb[ptr].dirty = 0;
+ mb[ptr].offset = 0;
+ }
+#endif
+ }
+ }
+ }