Lines Matching refs:ms

64 wmemstream_grow(struct wmemstream *ms, size_t newoff)  in wmemstream_grow()  argument
73 if (newsize > ms->len) { in wmemstream_grow()
74 buf = realloc(*ms->bufp, (newsize + 1) * sizeof(wchar_t)); in wmemstream_grow()
78 ms, ms->len, newsize); in wmemstream_grow()
80 wmemset(buf + ms->len + 1, 0, newsize - ms->len); in wmemstream_grow()
81 *ms->bufp = buf; in wmemstream_grow()
82 ms->len = newsize; in wmemstream_grow()
91 wmemstream_update(struct wmemstream *ms) in wmemstream_update() argument
94 *ms->sizep = ms->len < ms->offset ? ms->len : ms->offset; in wmemstream_update()
129 struct wmemstream *ms; in wmemstream_write() local
133 ms = cookie; in wmemstream_write()
134 wlen = wbuflen(&ms->mbstate, buf, len); in wmemstream_write()
139 if (!wmemstream_grow(ms, ms->offset + wlen)) in wmemstream_write()
148 while (len > 0 && ms->offset < ms->len) { in wmemstream_write()
149 charlen = mbrtowc(*ms->bufp + ms->offset, buf, len, in wmemstream_write()
150 &ms->mbstate); in wmemstream_write()
169 ms->offset++; in wmemstream_write()
172 wmemstream_update(ms); in wmemstream_write()
174 fprintf(stderr, "WMS: write(%p, %zu) = %zd\n", ms, len, consumed); in wmemstream_write()
182 struct wmemstream *ms; in wmemstream_seek() local
185 ms = cookie; in wmemstream_seek()
186 old = ms->offset; in wmemstream_seek()
191 ms->offset = off_t_to_size_t(pos); in wmemstream_seek()
199 if (pos + (ssize_t)ms->len < 0) { in wmemstream_seek()
203 (intmax_t)pos, ms->len); in wmemstream_seek()
209 if (OFF_MAX - ms->len < (size_t)pos) { in wmemstream_seek()
213 (intmax_t)pos, ms->len); in wmemstream_seek()
219 ms->offset = off_t_to_size_t(ms->len + pos); in wmemstream_seek()
223 if (ms->offset != old) in wmemstream_seek()
224 memset(&ms->mbstate, 0, sizeof(ms->mbstate)); in wmemstream_seek()
225 wmemstream_update(ms); in wmemstream_seek()
227 fprintf(stderr, "WMS: seek(%p, %jd, %d) %jd -> %jd\n", ms, in wmemstream_seek()
228 (intmax_t)pos, whence, (intmax_t)old, (intmax_t)ms->offset); in wmemstream_seek()
230 return (ms->offset); in wmemstream_seek()
244 struct wmemstream *ms; in open_wmemstream() local
255 ms = malloc(sizeof(*ms)); in open_wmemstream()
256 if (ms == NULL) { in open_wmemstream()
263 ms->bufp = bufp; in open_wmemstream()
264 ms->sizep = sizep; in open_wmemstream()
265 ms->len = 0; in open_wmemstream()
266 ms->offset = 0; in open_wmemstream()
267 memset(&ms->mbstate, 0, sizeof(mbstate_t)); in open_wmemstream()
268 wmemstream_update(ms); in open_wmemstream()
269 fp = funopen2(ms, NULL, wmemstream_write, wmemstream_seek, in open_wmemstream()
273 free(ms); in open_wmemstream()