1*83087275Skrw /* $OpenBSD: fopen_test.c,v 1.2 2015/01/20 04:41:01 krw Exp $ */
25054e3e7Sguenther /*
35054e3e7Sguenther * Copyright (c) 2008 Bret S. Lambert <blambert@openbsd.org>
45054e3e7Sguenther *
55054e3e7Sguenther * Permission to use, copy, modify, and distribute this software for any
65054e3e7Sguenther * purpose with or without fee is hereby granted, provided that the above
75054e3e7Sguenther * copyright notice and this permission notice appear in all copies.
85054e3e7Sguenther *
95054e3e7Sguenther * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
105054e3e7Sguenther * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
115054e3e7Sguenther * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
125054e3e7Sguenther * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
135054e3e7Sguenther * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
145054e3e7Sguenther * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
155054e3e7Sguenther * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
165054e3e7Sguenther */
175054e3e7Sguenther
185054e3e7Sguenther #include <stdio.h>
195054e3e7Sguenther #include <pthread.h>
205054e3e7Sguenther #include "local.h"
215054e3e7Sguenther
225054e3e7Sguenther int
writefn(void * cookie,const char * buf,int size)235054e3e7Sguenther writefn(void *cookie, const char *buf, int size)
245054e3e7Sguenther {
255054e3e7Sguenther return 0;
265054e3e7Sguenther }
275054e3e7Sguenther
285054e3e7Sguenther void
fopen_thread(void * v)295054e3e7Sguenther fopen_thread(void *v)
305054e3e7Sguenther {
315054e3e7Sguenther FILE *file;
325054e3e7Sguenther int i;
335054e3e7Sguenther
345054e3e7Sguenther for (i = 0; i < 4096; i++) {
355054e3e7Sguenther file = fwopen(&i, writefn);
365054e3e7Sguenther if (file != NULL) {
375054e3e7Sguenther fputc('0', file);
385054e3e7Sguenther pthread_yield();
395054e3e7Sguenther fclose(file);
405054e3e7Sguenther }
415054e3e7Sguenther }
425054e3e7Sguenther }
435054e3e7Sguenther
445054e3e7Sguenther int
main(void)455054e3e7Sguenther main(void)
465054e3e7Sguenther {
475054e3e7Sguenther run_threads(fopen_thread, NULL);
485054e3e7Sguenther exit(0);
495054e3e7Sguenther }
50