#!/bin/sh fail=0 cat <<\EOF || fail=1 #ifndef UNLOCKED_IO_H # define UNLOCKED_IO_H 1 # ifndef USE_UNLOCKED_IO # define USE_UNLOCKED_IO 1 # endif # if USE_UNLOCKED_IO /* These are wrappers for functions/macros from GNU libc. The standard I/O functions are thread-safe. These *_unlocked ones are more efficient but not thread-safe. That they're not thread-safe is fine since all of the applications in this package are single threaded. */ EOF for f in $@; do u=`echo $f|tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ` cat <<EOF || fail=1 # if HAVE_${u}_UNLOCKED # undef $f EOF case $f in getchar) params=;; putchar | clearerr | feof | ferror | fflush | getc ) params=x;; putc | fputc | fputs ) params=x,y;; fgets ) params=x,y,z;; fread | fwrite ) params=w,x,y,z;; *) echo $0: missing case for $f 2>&1; fail=1;; esac cat <<EOF || fail=1 # define $f($params) ${f}_unlocked ($params) # endif EOF done cat <<\EOF || fail=1 # endif /* USE_UNLOCKED_IO */ #endif /* UNLOCKED_IO_H */ EOF (exit $fail); exit