diff
- while (i < sizeof(buf) && (pg - page < len) &&
-   *pg != '\0' && *pg != '\n')
-   buf[i++] = *pg++;
+ size_t copy_len = strlcpy(buf, pg, bufsize);
+ i = copy_len;
+ pg += copy_len;
