changeset 3517:fc06aa9f08c8

*** empty log message ***
author Jim Meyering <jim@meyering.net>
date Wed, 26 Sep 2001 08:13:41 +0000
parents 6c7cdd88a9b5
children 4cfc9bb4c2a5
files lib/gen-uio
diffstat 1 files changed, 46 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
new file mode 100755
--- /dev/null
+++ b/lib/gen-uio
@@ -0,0 +1,46 @@
+#!/bin/sh
+
+tmp=gen-uio.$$
+trap 'status=$?; rm -f $tmp && exit $status' 0
+trap 'exit $?' 1 2 13 15
+
+cat <<\EOF
+#ifndef UNLOCKED_IO_H
+# define UNLOCKED_IO_H 1
+
+# 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 these applications are single threaded.  */
+
+EOF
+
+for f in $@; do
+  u=`echo $f|tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ`
+  echo "#  if HAVE_${u}_UNLOCKED"
+  echo "#   undef $f"
+  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; exit 1;;
+  esac
+  echo "#   define $f($params) ${f}_unlocked ($params)"
+  echo '#  endif'
+done
+
+cat <<\EOF
+
+# endif /* USE_UNLOCKED_IO */
+#endif /* UNLOCKED_IO_H */
+EOF