ほにゃららwrite()とかを分割するパーツです。
splitter.c
/* Splitter */
#include <stdio.h>
#define DEBUG_PRINT(...) printf(__VA_ARGS__)
static void splitter(size_t total_size, size_t split_size)
{
size_t offset = 0;
size_t length = split_size;
DEBUG_PRINT("\nTotal=%u, Split=%u\n", total_size, split_size);
while (offset < total_size) {
if (offset + length > total_size) {
length = total_size - offset;
}
/* ex. write() */
DEBUG_PRINT(" Offset=%d, Length=%d\n", offset, length);
offset += length;
}
return;
}
/* Test Driver */
int main(void)
{
splitter( 0, 1000);
splitter(1000, 1000);
splitter(2000, 999);
splitter(2000, 1000);
splitter(2000, 1001);
return 0;
}