Bump GPLv2+ to GPLv3+ for some files, clarify BSD 2-clause. Everything else stays under GPLv3+. New Linking Exception exempts resulting executables from LGPLv3 section 4. Add CONTRIBUTORS file to keep track of licensing. Remove 'Copyright Red Hat Inc' comments. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
		
			
				
	
	
		
			208 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			208 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
#!/bin/bash
 | 
						|
#
 | 
						|
# This file is part of the Cygwin DLL.
 | 
						|
 | 
						|
# Directory where the config files are stored
 | 
						|
SYSCONFDIR=/etc
 | 
						|
LOCALSTATEDIR=/var
 | 
						|
 | 
						|
progname=$0
 | 
						|
auto_answer=""
 | 
						|
service_name=cygserver
 | 
						|
 | 
						|
request()
 | 
						|
{
 | 
						|
  if [ "${auto_answer}" = "yes" ]
 | 
						|
  then
 | 
						|
    echo "$1 (yes/no) yes"
 | 
						|
    return 0
 | 
						|
  elif [ "${auto_answer}" = "no" ]
 | 
						|
  then
 | 
						|
    echo "$1 (yes/no) no"
 | 
						|
    return 1
 | 
						|
  fi
 | 
						|
 | 
						|
  answer=""
 | 
						|
  while [ "X${answer}" != "Xyes" -a "X${answer}" != "Xno" ]
 | 
						|
  do
 | 
						|
    echo -n "$1 (yes/no) "
 | 
						|
    read -e answer
 | 
						|
  done
 | 
						|
  if [ "X${answer}" = "Xyes" ]
 | 
						|
  then
 | 
						|
    return 0
 | 
						|
  else
 | 
						|
    return 1
 | 
						|
  fi
 | 
						|
}
 | 
						|
 | 
						|
# Check options
 | 
						|
 | 
						|
while :
 | 
						|
do
 | 
						|
  case $# in
 | 
						|
  0)
 | 
						|
    break
 | 
						|
    ;;
 | 
						|
  esac
 | 
						|
 | 
						|
  option=$1
 | 
						|
  shift
 | 
						|
 | 
						|
  case "${option}" in
 | 
						|
  -d | --debug )
 | 
						|
    set -x
 | 
						|
    ;;
 | 
						|
 | 
						|
  -y | --yes )
 | 
						|
    auto_answer=yes
 | 
						|
    ;;
 | 
						|
 | 
						|
  -n | --no )
 | 
						|
    auto_answer=no
 | 
						|
    ;;
 | 
						|
 | 
						|
  -N | --name )
 | 
						|
    service_name=$1
 | 
						|
    shift
 | 
						|
    ;;
 | 
						|
 | 
						|
  *)
 | 
						|
    echo "usage: ${progname} [OPTION]..."
 | 
						|
    echo
 | 
						|
    echo "This script creates an Cygserver service configuration."
 | 
						|
    echo
 | 
						|
    echo "Options:"
 | 
						|
    echo "  --debug  -d            Enable shell's debug output."
 | 
						|
    echo "  --yes    -y            Answer all questions with \"yes\" automatically."
 | 
						|
    echo "  --no     -n            Answer all questions with \"no\" automatically."
 | 
						|
    echo "  --name   -N <name>     cygserver windows service name."
 | 
						|
    echo
 | 
						|
    exit 1
 | 
						|
    ;;
 | 
						|
 | 
						|
  esac
 | 
						|
done
 | 
						|
 | 
						|
# Check if running on NT
 | 
						|
_sys="`uname`"
 | 
						|
_nt=`expr "${_sys}" : "CYGWIN_NT"`
 | 
						|
 | 
						|
# Check for running cygserver processes first.
 | 
						|
if ps -ef | grep -v grep | grep -q ${service_name}
 | 
						|
then
 | 
						|
  echo
 | 
						|
  echo "There is a cygserver (${service_name}) already running. Nothing to do, apparently."
 | 
						|
  echo
 | 
						|
  exit 1
 | 
						|
fi
 | 
						|
 | 
						|
# Check for ${SYSCONFDIR} directory
 | 
						|
if [ -e "${SYSCONFDIR}" -a ! -d "${SYSCONFDIR}" ]
 | 
						|
then
 | 
						|
  echo
 | 
						|
  echo "${SYSCONFDIR} is existant but not a directory."
 | 
						|
  echo "Cannot create global configuration file."
 | 
						|
  echo
 | 
						|
  exit 1
 | 
						|
fi
 | 
						|
 | 
						|
# Create it if necessary
 | 
						|
if [ ! -e "${SYSCONFDIR}" ]
 | 
						|
then
 | 
						|
  mkdir "${SYSCONFDIR}"
 | 
						|
  if [ ! -e "${SYSCONFDIR}" ]
 | 
						|
  then
 | 
						|
    echo
 | 
						|
    echo "Creating ${SYSCONFDIR} directory failed"
 | 
						|
    echo
 | 
						|
    exit 1
 | 
						|
  fi
 | 
						|
fi
 | 
						|
 | 
						|
# Create /var/log if not already existing
 | 
						|
if [ -f ${LOCALSTATEDIR}/log ]
 | 
						|
then
 | 
						|
  echo "Creating ${LOCALSTATEDIR}/log failed!"
 | 
						|
else
 | 
						|
  if [ ! -d ${LOCALSTATEDIR}/log ]
 | 
						|
  then
 | 
						|
    mkdir -p ${LOCALSTATEDIR}/log
 | 
						|
  fi
 | 
						|
fi
 | 
						|
 | 
						|
# Check if cygserver.conf exists. If yes, ask for overwriting
 | 
						|
if [ -f "${SYSCONFDIR}/cygserver.conf" ]
 | 
						|
then
 | 
						|
  if request "Overwrite existing ${SYSCONFDIR}/cygserver.conf file?"
 | 
						|
  then
 | 
						|
    rm -f "${SYSCONFDIR}/cygserver.conf"
 | 
						|
    if [ -f "${SYSCONFDIR}/cygserver.conf" ]
 | 
						|
    then
 | 
						|
      echo
 | 
						|
      echo "Can't overwrite. ${SYSCONFDIR}/cygserver.conf is write protected."
 | 
						|
      echo
 | 
						|
      exit 1
 | 
						|
    fi
 | 
						|
  fi
 | 
						|
fi
 | 
						|
 | 
						|
# Create default cygserver.conf from skeleton files in /etc/defaults/etc
 | 
						|
if [ ! -f "${SYSCONFDIR}/cygserver.conf" ]
 | 
						|
then
 | 
						|
  echo "Generating ${SYSCONFDIR}/cygserver.conf file"
 | 
						|
  cp "${SYSCONFDIR}/defaults/etc/cygserver.conf" "${SYSCONFDIR}/cygserver.conf"
 | 
						|
  if [ ! -f "${SYSCONFDIR}/cygserver.conf" ]
 | 
						|
  then
 | 
						|
    echo
 | 
						|
    echo "Couldn't create ${SYSCONFDIR}/cygserver.conf."
 | 
						|
    echo "Perhaps there's no default file in ${SYSCONFDIR}/defaults/etc?"
 | 
						|
    echo "Reinstalling Cygwin might help."
 | 
						|
    echo
 | 
						|
    exit 1
 | 
						|
  fi
 | 
						|
  chmod 664 "${SYSCONFDIR}/cygserver.conf"
 | 
						|
  chown 18.544 "${SYSCONFDIR}/cygserver.conf"
 | 
						|
fi
 | 
						|
 | 
						|
# On NT ask if cygserver should be installed as service
 | 
						|
if [ ${_nt} -gt 0 ]
 | 
						|
then
 | 
						|
  # But only if it is not already installed
 | 
						|
  if ! cygrunsrv -Q ${service_name} > /dev/null 2>&1
 | 
						|
  then
 | 
						|
    echo
 | 
						|
    echo
 | 
						|
    echo "Warning: The following function requires administrator privileges!"
 | 
						|
    echo
 | 
						|
    echo "Do you want to install cygserver as service?"
 | 
						|
    if request "(Say \"no\" if it's already installed as service)"
 | 
						|
    then
 | 
						|
      if ! cygrunsrv -I ${service_name} -d "CYGWIN cygserver" -p /usr/sbin/cygserver
 | 
						|
      then
 | 
						|
        echo
 | 
						|
	echo "Installation of cygserver as service failed.  Please check the"
 | 
						|
	echo "error messages you got.  They might give a clue why it failed."
 | 
						|
	echo
 | 
						|
	echo "A good start is either you don't have administrator privileges"
 | 
						|
	echo "or a missing cygrunsrv binary.  Please check for both."
 | 
						|
	echo
 | 
						|
	exit 1
 | 
						|
      fi
 | 
						|
      echo
 | 
						|
      echo "The service has been installed under LocalSystem account."
 | 
						|
      echo "To start it, call \`net start ${service_name}' or \`cygrunsrv -S ${service_name}'."
 | 
						|
    fi
 | 
						|
    touch "${LOCALSTATEDIR}/log/cygserver.log"
 | 
						|
    chown 18.544 "${LOCALSTATEDIR}/log/cygserver.log"
 | 
						|
  fi
 | 
						|
fi
 | 
						|
 | 
						|
echo
 | 
						|
echo "Further configuration options are available by editing the configuration"
 | 
						|
echo "file ${SYSCONFDIR}/cygserver.conf.  Please read the inline information in that"
 | 
						|
echo "file carefully. The best option for the start is to just leave it alone."
 | 
						|
echo
 | 
						|
echo "Basic Cygserver configuration finished. Have fun!"
 | 
						|
echo
 |