Home | History | Annotate | Download | only in stdio

Lines Matching defs:ms

63 memstream_grow(struct memstream *ms, off_t newoff)
69 if (newsize > ms->len) {
70 buf = realloc(*ms->bufp, newsize + 1);
73 fprintf(stderr, "MS: %p growing from %zd to %zd\n",
74 ms, ms->len, newsize);
76 memset(buf + ms->len + 1, 0, newsize - ms->len);
77 *ms->bufp = buf;
78 ms->len = newsize;
87 memstream_update(struct memstream *ms)
90 *ms->sizep = ms->len < ms->offset ? ms->len : ms->offset;
96 struct memstream *ms;
100 ms = cookie;
101 more = ms->offset;
103 if (!memstream_grow(ms, more))
105 tocopy = ms->len - ms->offset;
108 memcpy(*ms->bufp + ms->offset, buf, tocopy);
109 ms->offset += tocopy;
110 memstream_update(ms);
112 fprintf(stderr, "MS: write(%p, %zu) = %zu\n", ms, len, tocopy);
120 struct memstream *ms;
125 ms = cookie;
127 old = ms->offset;
133 ms->offset = off_t_to_size_t(pos);
141 if (pos + (ssize_t)ms->len < 0) {
144 "MS: bad SEEK_END: pos %jd, len %zu\n",
145 (intmax_t)pos, ms->len);
151 if (OFF_MAX - (ssize_t)ms->len < pos) {
154 "MS: bad SEEK_END: pos %jd, len %zu\n",
155 (intmax_t)pos, ms->len);
161 ms->offset = off_t_to_size_t(ms->len + pos);
164 memstream_update(ms);
166 fprintf(stderr, "MS: seek(%p, %jd, %d) %zu -> %zu\n", ms,
167 (intmax_t)pos, whence, old, ms->offset);
169 return (ms->offset);
183 struct memstream *ms;
194 ms = malloc(sizeof(*ms));
195 if (ms == NULL) {
202 ms->bufp = bufp;
203 ms->sizep = sizep;
204 ms->len = 0;
205 ms->offset = 0;
206 memstream_update(ms);
207 fp = funopen2(ms, NULL, memstream_write, memstream_seek,
211 free(ms);