#!/bin/bash

# mkcshadow: reads header names (like "features.h" or "sys/types.h")
#   from stdin, and creates shadow headers under cshadow/, except where
#   a header of the same name is already in shadow/.

while read header; do

  if [ ! -f shadow/$header ]; then

    # strip off directory names while making 
    #   any necessary directories

    dir=cshadow
    case "$header" in */*)
      right="$header"
      while [ "$right" != "${right##*/}" ] ; do
        dir="$dir/${right%%/*}"
        if [ ! -d "$dir" ]; then mkdir "$dir"; fi
        right="${right#*/}"
      done
      ;;
    esac
 
    UPNAME=`echo $header | tr 'a-z./-' 'A-Z___'`
    cat >"cshadow/$header" <<EOF
// -*- C++ -*- header wrapper.

// Copyright (C) 1998 Cygnus Solutions
//
// This file is part of the libstdc++ version 3 distribution.
//
// This software is a copyrighted work licensed under the terms of the
// Cygnus libstdc++ license. Please consult the file LICENSE.STD for
// details.

// Note: this file was automatically generated by the "mkcshadow"
//       script.  RTFM!

#ifndef  _INCLUDED_CPP_${UPNAME}_

# ifdef _IN_C_SWAMP_  /* sub-included by a C header */
#   include_next <${header}>
# else

    namespace _C_Swamp { namespace _C_Shadow { } }
    using namespace ::_C_Swamp::_C_Shadow;
    namespace _C_Swamp_ {
      extern "C" {
#       define _IN_C_SWAMP_
#       include_next <${header}>
      } // close extern "C"
    }   // close namespace _C_Swamp::
  
# endif /* _IN_C_SWAMP_ */
#endif /* _INCLUDED_CPP_${UPNAME}_ */
    
EOF

  fi
done
