Print this page
1575 untangle libmlrpc ... (libmlrpc)

*** 17,136 **** # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # This is a wrapper script around the ndrgen compiler (ndrgen1). - # CC must be defined in the environment or on the command line. ! NDRPROG="${0%/*}/ndrgen1" ! INCDIR=${ROOT}/usr/include/smbsrv PROGNAME=`basename $0` ndrgen_usage() { if [[ $1 != "" ]] ; then print "$PROGNAME: ERROR: $1" fi ! echo "usage: $PROGNAME [-Y cpp-path] file [file]..." exit 1 } ! # Copy header text from the input ndl file to the generated ndr C file. ! ndrgen_copy_header() { - ndl_file=$1 - ndr_file=$2 nawk 'BEGIN { copy=0; } /^\/\* NDRGEN_HEADER_BEGIN \*\// { copy=1; next; } /^\/\* NDRGEN_HEADER_END \*\// { copy=0; next; } ! /./ { if (copy==1) print; }' < $ndl_file > $ndr_file } - if [[ $# -lt 1 ]] ; then - ndrgen_usage - fi ! while getopts "Y" FLAG $*; do case $FLAG in ! Y) ! CC_FLAG="y" ! ;; ! *) ! ndrgen_usage ! ;; esac done ! if [[ $CC_FLAG = "y" ]] ; then ! shift $(($OPTIND - 1)) ! ! if [[ $# -lt 1 ]] ; then ! ndrgen_usage "C pre-processor path is missing" ! else ! CC=$1 ! shift $(($OPTIND - 1)) ! ! # Check for cw being invoked with -_cc or -_gcc ! if [[ $1 = "-_cc" || $1 = "-_gcc" ]] ; then ! CC_ARG=$1 ! shift $(($OPTIND - 1)) ! fi ! fi fi ! if [[ $CC = "" ]] ; then ! ndrgen_usage "C pre-processor is not defined" fi - if [ ! -f $CC ] || [ ! -x $CC ] ; then - ndrgen_usage "cannot run $CC" - fi - for i do if [[ ! -r $i ]] ; then print "$PROGNAME: ERROR: cannot read $i" exit 1 fi ! BASENAME=`basename $i .ndl` ! TMP_NAME=$BASENAME.ndl.c ! ! cp $i $TMP_NAME ! ! if $CC $CC_ARG -E -D__a64 -D__EXTENSIONS__ -D_FILE_OFFSET_BITS=64 \ ! -I. -I${INCDIR} -I${INCDIR}/ndl -DNDRGEN $TMP_NAME | \ ! $NDRPROG > $BASENAME.raw ! then ! touch ${BASENAME}_ndr.c ! ndrgen_copy_header $i ${BASENAME}_ndr.c ! ! cat - << EOF >> ${BASENAME}_ndr.c ! /* ! * Please do not edit this file. ! * It was generated using ndrgen. ! */ ! ! #include <strings.h> ! #include <smbsrv/ndr.h> ! #include <smbsrv/ndl/$BASENAME.ndl> ! EOF ! ! cat $BASENAME.raw >> ${BASENAME}_ndr.c ! ! rm -f $BASENAME.raw ! rm -f $TMP_NAME ! else ! rm -f $BASENAME.raw ! rm -f $TMP_NAME ! exit 1 ! fi done --- 17,118 ---- # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # + # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # + # Copyright 2013 Nexenta Systems, Inc. All rights reserved. + # # This is a wrapper script around the ndrgen compiler (ndrgen1). ! NDRPROG="${0}1" + # Note: most *.ndl files require an ANSI-compatible cpp, + # so we can NOT use /usr/lib/cpp or /usr/ccs/lib/cpp + # Wish there was an easier way to get an ANSI cpp. + CPP="${CC} -E" + CPPFLAGS="-DNDRGEN" + V_FLAG= + PROGNAME=`basename $0` ndrgen_usage() { if [[ $1 != "" ]] ; then print "$PROGNAME: ERROR: $1" fi ! echo "usage: $PROGNAME [options] file.ndl [file.ndl]..." ! echo " options: -Y cc-path -Ddefine -Iinclude" exit 1 } ! # Process the input ndl file ($1) generating C code on stdout. ! process() { + # Put the standard top matter + # + # Want the include directive to have just + # include "file.ndl" (no path) so... + inc_ndl=`basename $1` + cat - << EOF + /* + * Please do not edit this file. + * It was generated using ndrgen. + */ + + #include <strings.h> + #include <libmlrpc/ndr.h> + #include "$inc_ndl" + EOF + + # Put optional custom top matter nawk 'BEGIN { copy=0; } /^\/\* NDRGEN_HEADER_BEGIN \*\// { copy=1; next; } /^\/\* NDRGEN_HEADER_END \*\// { copy=0; next; } ! /./ { if (copy==1) print; }' $1 ! ! # now the real ndrgen output ! [ -n "$V_FLAG" ] && ! echo "$CPP $CPPFLAGS $1 | $NDRPROG" >&2 ! $CPP $CPPFLAGS $1 | $NDRPROG } ! while getopts "D:I:Y:V" FLAG ! do case $FLAG in ! D|I) CPPFLAGS="$CPPFLAGS -${FLAG}${OPTARG}";; ! Y) CPP="$OPTARG";; ! V) V_FLAG="V";; ! *) ndrgen_usage;; esac done + shift $(($OPTIND - 1)) ! if [[ $# -lt 1 ]] ; then ! ndrgen_usage fi ! if [ ! -x $CPP ] ; then ! ndrgen_usage "cannot run $CPP" fi for i do if [[ ! -r $i ]] ; then print "$PROGNAME: ERROR: cannot read $i" exit 1 fi ! base=`basename $i .ndl` ! process $i > ${base}_ndr.c || { ! echo "ndrgen error"; ! rm ${base}_ndr.c; ! } done