products/Sources/formale Sprachen/Java/openjdk-20-36_src/make/autoconf image not shown  

Quellcode-Bibliothek

© Kompilation durch diese Firma

[Weder Korrektheit noch Funktionsfähigkeit der Software werden zugesichert.]

Datei:   Sprache: Shell

#! /bin/sh -f
#
# Copyright (c) 2012, 2020, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License version 2 only, as
# published by the Free Software Foundation.
#
# This code is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
# version 2 for more details (a copy is included in the LICENSE file that
# accompanied this code).
#
# You should have received a copy of the GNU General Public License version
# 2 along with this work; if not, write to the Free Software Foundation,
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
#
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
# or visit www.oracle.com if you need additional information or have any
# questions.
#

#
# This script checks a copyright notice.
#
# The script should be located in the main jdk repository under make/scripts.
# It works with the templates in the make/data/license-templates directory of the jdk source.
#
# Usage: "lic_check.sh [-gpl] or [-gplcp] or [-bsd] file(s)"

script_directory=`dirname $0`
script_name=`basename $0`
first_option=$1

# parse the first argument

case "$1" in
 "-gpl")
  header="gpl-header"
  ;;
 "-gplcp")
  header="gpl-cp-header"
  ;;
 "-bsd")
  header="bsd-header"
                ;;
 *)
  echo "Usage: $0 [-gpl] or [-gplcp] or [-bsd] file(s)" 1>&2
  exit 1
  ;;
esac
shift

#initialize error status
error_status=0

# determine and set the absolute path for the script directory
D=`dirname "${script_directory}"`
B=`basename "${script_directory}"`
script_dir="`cd \"${D}\" 2>/dev/null && pwd || echo \"${D}\"`/${B}"

# set up a variable for the template directory
template_dir=${script_dir}/../data/license-templates

# Check existence of the template directory.
if [ ! -d ${template_dir} ] ; then
        echo "ERROR: The template directory "${template_dir}" doesn't exist." 1>&2
        exit 1
fi

# set the temporary file location
tmpfile=/tmp/source_file.$$
rm -f ${tmpfile}

# check number of lines in the template file
lines=`cat ${template_dir}/${header} | wc -l`

# the template file has one empty line at the end, we need to ignore it
lines=`expr ${lines} - 1`

# A loop through the all script parameters:
#
# 1. Given a set of source files and a license template header, read a file name of each source file.
# 2. Check if a given file exists. When a directory is encountered, dive in and process all sources in those directories.
# 3. Read each line of the given file and check it for a copyright string.
# 4. If a copyright string found, check the correctness of the years format in the string and replace years with %YEARS%.
# 5. Continue reading the file until the number of lines is equal to the length of the license template header ($lines) and remove a comment prefix for each line.
# 6. Store the result (the license header from a given file) into a temporary file.
# 7. If a temporary file is not empty, compare it with a template file to verify if the license text is the same as in a template.
# 8. Produce a error in case a temporary file is empty, it means we didn't find a copyright string, or it's not correct
#
while [ "$#" -gt "0" ] ; do
 touch ${tmpfile}

 # In case of the directory as a parameter check recursively every file inside.
 if [ -d $1 ] ; then
  curdir=`pwd`
  cd $1
  echo "*** Entering directory: "`pwd`
  echo "***"
  files=`ls .`
  sh ${script_dir}/${script_name} ${first_option} ${files}
  status=$?
  if [ ${error_status} -ne 1 ] ; then
   error_status=${status}
  fi
  cd ${curdir}
  shift
  continue
 else
  echo "### Checking copyright notice in the file: "$1
  echo "###"
 fi

 # Check the existence of the source file.
 if [ ! -f $1 ] ; then
         echo "ERROR: The source file "$1" doesn't exist." 1>&2
  error_status=1
  shift
         continue
 fi

 # read the source file and determine where the header starts, then get license header without prefix
 counter=0
 while read line ; do
  # remove windows "line feed" character from the line (if any)
  line=`echo "${line}" | tr -d '\r'`
  # check if the given line contains copyright
  check_copyright=`echo "${line}" | grep "Copyright (c) "`
  if [ "${check_copyright}" != "" ] ; then
   # determine the comment prefix
   prefix=`echo "${line}" | cut -d "C" -f 1`
   # remove prefix (we use "_" as a sed delimiter, since the prefix could be like //)
   copyright_without_prefix=`echo "${line}" | sed s_"^${prefix}"__g`
   # copyright years
   year1=`echo "${copyright_without_prefix}" | cut -d " " -f 3`
   year2=`echo "${copyright_without_prefix}" | cut -d " " -f 4`
   # Processing the first year in the copyright string
   length=`expr "${year1}" : '.*'`
   if [ ${length} -ne 5 ] ; then
           break
   fi
   check_year1=`echo ${year1} | egrep "19[0-9][0-9],|2[0-9][0-9][0-9],"`
   if [ "${check_year1}" = "" ] ; then
           break
   fi
   # Processing the second year in the copyright string
   if [ "${year2}" != "Oracle" ] ; then
           length=`expr "${year2}" : '.*'`
           if [ ${length} -ne 5 ] ; then
                   break
           else
                   check_year2=`echo ${year2} | egrep "19[0-9][0-9],|2[0-9][0-9][0-9],"`
                   if [ "${check_year2}" = "" ] ; then
                           break
                   fi
           fi
   fi

   # copyright string without copyright years
   no_years=`echo "${copyright_without_prefix}" | sed 's/[0-9,]*//g'`
   # copyright string before years
   before_years=`echo "${no_years}" | cut -d "O" -f 1`
   # copyright string after years
   after_years=`echo "${no_years}" | cut -d ")" -f 2`
   # form a new copyright string with %YEARS%
   new_copyright=`echo ${before_years}"%YEARS%"${after_years}`
   # save the new copyright string to a file
   echo "${new_copyright}" > ${tmpfile}
   # start counting the lines
                        counter=1
   # move to the next line
   continue
  fi
  if [ ${counter} -ne 0 ] ; then
   # this should be a license header line, hence increment counter
   counter=`expr ${counter} + 1`
   # record a string without a prefix to a file
   newline=`echo "${line}" | sed s_"^${prefix}"__`

   # we need to take care of the empty lines in the header, i.e. check the prefix without spaces
   trimmed_prefix=`echo "${prefix}" | tr -d " "`
   trimmed_line=`echo "${line}"  | tr -d " "`
   if [ "${trimmed_line}" = "${trimmed_prefix}" ] ; then
    echo "" >> ${tmpfile}
   else
    echo "${newline}" >> ${tmpfile}
   fi
  fi
  # stop reading lines when a license header ends and add an empty line to the end
  if [ ${counter} -eq ${lines} ] ; then
   echo "" >> ${tmpfile}
   break
  fi
 done < $1

 # compare the license header with a template file
 if [ -s ${tmpfile} ] ; then
  diff -c ${tmpfile} ${template_dir}/${header} 1>&2
  if [ "$?" = "0" ] ; then
   echo "SUCCESS: The license header for "`pwd`"/"$1" has been verified."
   echo "###"
  else
   echo "ERROR: License header is not correct in "`pwd`"/"$1 1>&2
   echo "See diffs above. " 1>&2
   echo "###" 1>&2
   echo "" 1>&2
   error_status=1
  fi
 else
  # If we don't have a temporary file, there is a problem with a copyright string (or no copyright string)
  echo "ERROR: Copyright string is not correct or missing in "`pwd`"/"$1 1>&2
  echo "###" 1>&2
  echo "" 1>&2
  error_status=1
 fi
 rm -f ${tmpfile}
 shift
done
if [ ${error_status} -ne 0 ] ; then
 exit 1
fi

¤ Dauer der Verarbeitung: 0.26 Sekunden  (vorverarbeitet)  ¤





Druckansicht
unsichere Verbindung
Druckansicht
sprechenden Kalenders

in der Quellcodebibliothek suchen




Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.


Bemerkung:

Die farbliche Syntaxdarstellung ist noch experimentell.


Bot Zugriff