#! /bin/sh

# 
# a shell library file
#

THIS_COMMAND_BASE=`echo "$0" \
                    | sed -e "s|^.*/\([^/][^/]*\)$|\1|g"`

#GRID_INFO_SYSTEM_LOGFILE=${localstatedir}/grid-info-system.log
#GRID_INFO_SYSTEM_ERRORFILE=${localstatedir}/grid-info-system.log

debug_out ()
{
  :
  #echo "DEBUG:" "$*"
}

ldap_shell_init ()
{
  LDAP_OP=
  LDAP_MSGID=
  LDAP_DN=
  LDAP_SCOPE=
  LDAP_FILTER=
  LDAP_ATTRS_ONLY=
  LDAP_ATTRS=
  LDAP_SUFFIX=

  return 0
}

ldap_shell_ldif_line_collate ()
{
 # use subshell to insulate IFS changes
 {
   IFS=
   FULL_LINE=
   FIRST_LINE=true

   while read line
   do
      case "$line" in
        \ *)
          FULL_LINE="${FULL_LINE}"`echo "${line}" | sed -e 's/^ //'`
          ;;
         *)
          if test ! "X${FIRST_LINE}" = "Xtrue"
          then
            echo "${FULL_LINE}"
          fi
          FIRST_LINE=false
          FULL_LINE="${line}"
          ;;
      esac
   done

   if test ! "X${FIRST_LINE}" = "Xtrue"
   then
     echo "${FULL_LINE}"
   fi
 } 
}

ldap_shell_read ()
{
  if read LDAP_OP && \
     read name LDAP_MSGID &&
     [ "X$name" = "Xmsgid:" ]
  then

    case "$LDAP_OP"
    in
      SEARCH)
        # read all search command parameters
        while read name value
        do
          case "${name}"
          in
            base: )
              LDAP_DN="${value}"
              ;;

            scope: )
              LDAP_SCOPE="${value}"
              ;;

            filter: )
              LDAP_FILTER="${value}"
              ;;

            attrsonly: )
              LDAP_ATTRS_ONLY="${value}"
              ;;

            attrs: )
              LDAP_ATTRS="${value}"
              ;;

            suffix: )
              LDAP_SUFFIX="${value}"
              ;;

            *)
              debug_out "ignoring unsupported  ${LDAP_OP} parameter \"${name} ${value}\""
              ;;
          esac
        done
        ;;

      ADD)
        # read up to and including add DN parameter
        # leave rest of object entry on stdin
        while read name value
        do
          case "${name}"
          in
            dn: )
              LDAP_DN="${value}"
              break
              ;;
            suffix: )
              LDAP_SUFFIX="${value}"
              ;;
            * )
              debug_out "ignoring unsupported ${LDAP_OP} parameter \"${name}\""
              ;;
          esac
        done
        ;;
    esac

    return 0
  else
    return 1
  fi
}

ldap_shell_result_block ()
{
  echo "RESULT"
  echo "code: ${1}"
}

ldap_shell_failed=1
ldap_shell_success=0

ldap_shell_log_event ()
{
  if test ! "X${GRID_INFO_SYSTEM_LOGFILE}" = "X"
  then
    echo `date` "${THIS_COMMAND_BASE} [$$]: log:" "$@" \
      >> "${GRID_INFO_SYSTEM_LOGFILE}"
  fi
}

ldap_shell_log_error ()
{
  if test ! "X${GRID_INFO_SYSTEM_ERRORFILE}" = "X"
  then
    echo `date` "${THIS_COMMAND_BASE} [$$]: error:" "$@" \
      >> "${GRID_INFO_SYSTEM_ERRORFILE}"
  fi
}

