Lines Matching refs:ms

56 wmemstream_grow(struct wmemstream *ms, fpos_t newoff)
65 if (newsize > ms->len) {
66 buf = realloc(*ms->bufp, (newsize + 1) * sizeof(wchar_t));
70 ms, ms->len, newsize);
72 wmemset(buf + ms->len + 1, 0, newsize - ms->len);
73 *ms->bufp = buf;
74 ms->len = newsize;
83 wmemstream_update(struct wmemstream *ms)
86 assert(ms->len >= 0 && ms->offset >= 0);
87 *ms->sizep = ms->len < ms->offset ? ms->len : ms->offset;
122 struct wmemstream *ms;
126 ms = cookie;
127 wlen = wbuflen(&ms->mbstate, buf, len);
132 if (!wmemstream_grow(ms, ms->offset + wlen))
141 while (len > 0 && ms->offset < ms->len) {
142 charlen = mbrtowc(*ms->bufp + ms->offset, buf, len,
143 &ms->mbstate);
162 ms->offset++;
165 wmemstream_update(ms);
167 fprintf(stderr, "WMS: write(%p, %d) = %zd\n", ms, len, consumed);
175 struct wmemstream *ms;
178 ms = cookie;
179 old = ms->offset;
184 ms->offset = pos;
192 if (pos + ms->len < 0) {
196 (intmax_t)pos, ms->len);
202 if (FPOS_MAX - ms->len < pos) {
206 (intmax_t)pos, ms->len);
212 ms->offset = ms->len + pos;
216 if (ms->offset != old)
217 memset(&ms->mbstate, 0, sizeof(ms->mbstate));
218 wmemstream_update(ms);
220 fprintf(stderr, "WMS: seek(%p, %jd, %d) %jd -> %jd\n", ms,
221 (intmax_t)pos, whence, (intmax_t)old, (intmax_t)ms->offset);
223 return (ms->offset);
237 struct wmemstream *ms;
248 ms = malloc(sizeof(*ms));
249 if (ms == NULL) {
256 ms->bufp = bufp;
257 ms->sizep = sizep;
258 ms->len = 0;
259 ms->offset = 0;
260 memset(&ms->mbstate, 0, sizeof(mbstate_t));
261 wmemstream_update(ms);
262 fp = funopen(ms, NULL, wmemstream_write, wmemstream_seek,
266 free(ms);