BAL and Maple Release 2.2

Signed-off-by: Shad Ansari <developer@Carbon.local>
diff --git a/bal_release/tools/copyright_tools/insert_copyright.pl b/bal_release/tools/copyright_tools/insert_copyright.pl
new file mode 100755
index 0000000..6f01d1a
--- /dev/null
+++ b/bal_release/tools/copyright_tools/insert_copyright.pl
@@ -0,0 +1,169 @@
+#!/usr/bin/perl
+###############################################################################
+#
+#  Copyright 2015 Broadcom Corporation
+#
+#  This program is the proprietary software of Broadcom Corporation
+#  and/or its licensors, and may only be used, duplicated, modified or
+#  distributed pursuant to the terms and conditions of a separate,
+#  written license agreement executed between you and Broadcom (an
+#  "Authorized License").  Except as set forth in an Authorized License,
+#  Broadcom grants no license (express or implied), right to use, or
+#  waiver of any kind with respect to the Software, and Broadcom
+#  expressly reserves all rights in and to the Software and all
+#  intellectual property rights therein.  IF YOU HAVE NO AUTHORIZED
+#  LICENSE, THEN YOU HAVE NO RIGHT TO USE THIS SOFTWARE IN ANY WAY, AND
+#  SHOULD IMMEDIATELY NOTIFY BROADCOM AND DISCONTINUE ALL USE OF THE
+#  SOFTWARE.
+#
+#  Except as expressly set forth in the Authorized License,
+#
+#  1.  This program, including its structure, sequence and organization,
+#  constitutes the valuable trade secrets of Broadcom, and you shall use
+#  all reasonable efforts to protect the confidentiality thereof, and to
+#  use this information only in connection with your use of Broadcom
+#  integrated circuit products.
+#
+#  2.  TO THE MAXIMUM EXTENT PERMITTED BY LAW, THE SOFTWARE IS PROVIDED
+#  "AS IS" AND WITH ALL FAULTS AND BROADCOM MAKES NO PROMISES,
+#  REPRESENTATIONS OR WARRANTIES, EITHER EXPRESS, IMPLIED, STATUTORY, OR
+#  OTHERWISE, WITH RESPECT TO THE SOFTWARE.  BROADCOM SPECIFICALLY
+#  DISCLAIMS ANY AND ALL IMPLIED WARRANTIES OF TITLE, MERCHANTABILITY,
+#  NONINFRINGEMENT, FITNESS FOR A PARTICULAR PURPOSE, LACK OF VIRUSES,
+#  ACCURACY OR COMPLETENESS, QUIET ENJOYMENT, QUIET POSSESSION OR
+#  CORRESPONDENCE TO DESCRIPTION. YOU ASSUME THE ENTIRE RISK ARISING OUT
+#  OF USE OR PERFORMANCE OF THE SOFTWARE.
+#
+#  3.  TO THE MAXIMUM EXTENT PERMITTED BY LAW, IN NO EVENT SHALL BROADCOM
+#  OR ITS LICENSORS BE LIABLE FOR (i) CONSEQUENTIAL, INCIDENTAL, SPECIAL,
+#  INDIRECT, OR EXEMPLARY DAMAGES WHATSOEVER ARISING OUT OF OR IN ANY WAY
+#  RELATING TO YOUR USE OF OR INABILITY TO USE THE SOFTWARE EVEN IF
+#  BROADCOM HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES; OR (ii)
+#  ANY AMOUNT IN EXCESS OF THE AMOUNT ACTUALLY PAID FOR THE SOFTWARE
+#  ITSELF OR U.S. $1, WHICHEVER IS GREATER. THESE LIMITATIONS SHALL APPLY
+#  NOTWITHSTANDING ANY FAILURE OF ESSENTIAL PURPOSE OF ANY LIMITED
+#  REMEDY.
+#
+###############################################################################
+#
+#  Script:  insert_copyright.pl
+#
+#  Purpose: This script inserts a copyright header into the beginning
+#           of a c/c++, shell script, and Makefiles.
+#
+#  Usage:   ./insert_copyright.pl -l <license file> [-t <type>] <source file>
+#             Options:
+#
+#             -l <file>   Specifies the license/copyright file to be inserted into the file
+#             -t <type>   Specifies the type of copyright to insert...
+#                           's' - shell script
+#                           'm' - Makefile
+#                           'c' - (default) c/c++ file
+#
+###############################################################################
+use Getopt::Long;
+my $licfile = "";
+my $srcfile = "";
+my $type = "";
+$result = GetOptions ("license_file=s" => \$licfile,
+                      "type=s"         => \$type);
+
+$srcfile = shift;
+
+## printf "$licfile, $type, $srcfile\n";
+
+sub InsertCfileCopyright
+{
+   my $lic  = shift;
+   my $src = shift;
+
+   print "/******************************************************************************\n";
+   print " *\n";
+
+   open( LICF, "< $lic" ) or die "Can't open $lic : $!";
+   while( $line = <LICF> ) {
+       print " *  $line";
+   }
+   close LICF;
+
+   print " *\n";
+   print " *****************************************************************************/\n";
+   print " \n";
+
+   if (length($srcfile) > 0) {
+       open( SRCF, "< $src" ) or die "Can't open $src : $!";
+       while( $line = <SRCF> ) {
+           print "$line";
+       }
+       close SRCF;
+   }
+}
+
+sub InsertMakefileCopyright
+{
+   my $lic = shift;
+   my $src = shift;
+
+   print "###############################################################################\n";
+   print "#\n";
+
+   open( LICF, "< $lic" ) or die "Can't open $lic : $!";
+   while( $line = <LICF> ) {
+       print "#  $line";
+   }
+   close LICF;
+
+   print "#\n";
+   print "###############################################################################\n";
+
+   if (length($srcfile) > 0) {
+       open( SRCF, "< $src" ) or die "Can't open $src : $!";
+       while( $line = <SRCF> ) {
+           print "$line";
+       }
+       close SRCF;
+   }
+}
+
+sub InsertShCopyright
+{
+   my $lic = shift;
+   my $src = shift;
+
+   if (length($srcfile) > 0) {
+       open( SRCF, "< $src" ) or die "Can't open $src : $!";
+       $line = <SRCF>;
+       print "$line";
+   }
+
+   print "###############################################################################\n";
+   print "#\n";
+
+   open( LICF, "< $lic" ) or die "Can't open $lic : $!";
+   while( $line = <LICF> ) {
+       print "#  $line";
+   }
+   close LICF;
+
+   print "#\n";
+   print "###############################################################################\n";
+
+   if (length($srcfile) > 0) {
+       while( $line = <SRCF> ) {
+           print "$line";
+       }
+       close SRCF;
+   }
+}
+
+if ($type eq "s") {
+    InsertShCopyright($licfile, $srcfile);
+} elsif ($type eq "m") {
+    InsertMakefileCopyright($licfile, $srcfile);
+} elsif ($type eq "c" || $type == "") {
+    InsertCfileCopyright($licfile, $srcfile);
+}
+
+exit;
+
+
diff --git a/bal_release/tools/copyright_tools/strip_c_copyright.pl b/bal_release/tools/copyright_tools/strip_c_copyright.pl
new file mode 100755
index 0000000..2464c58
--- /dev/null
+++ b/bal_release/tools/copyright_tools/strip_c_copyright.pl
@@ -0,0 +1,86 @@
+#!/usr/bin/perl
+###############################################################################
+#
+#  Copyright 2008-2014 Broadcom Corporation
+#
+#  This program is the proprietary software of Broadcom Corporation
+#  and/or its licensors, and may only be used, duplicated, modified or
+#  distributed pursuant to the terms and conditions of a separate,
+#  written license agreement executed between you and Broadcom (an
+#  "Authorized License").  Except as set forth in an Authorized License,
+#  Broadcom grants no license (express or implied), right to use, or
+#  waiver of any kind with respect to the Software, and Broadcom
+#  expressly reserves all rights in and to the Software and all
+#  intellectual property rights therein.  IF YOU HAVE NO AUTHORIZED
+#  LICENSE, THEN YOU HAVE NO RIGHT TO USE THIS SOFTWARE IN ANY WAY, AND
+#  SHOULD IMMEDIATELY NOTIFY BROADCOM AND DISCONTINUE ALL USE OF THE
+#  SOFTWARE.
+#
+#  Except as expressly set forth in the Authorized License,
+#
+#  1.  This program, including its structure, sequence and organization,
+#  constitutes the valuable trade secrets of Broadcom, and you shall use
+#  all reasonable efforts to protect the confidentiality thereof, and to
+#  use this information only in connection with your use of Broadcom
+#  integrated circuit products.
+#
+#  2.  TO THE MAXIMUM EXTENT PERMITTED BY LAW, THE SOFTWARE IS PROVIDED
+#  "AS IS" AND WITH ALL FAULTS AND BROADCOM MAKES NO PROMISES,
+#  REPRESENTATIONS OR WARRANTIES, EITHER EXPRESS, IMPLIED, STATUTORY, OR
+#  OTHERWISE, WITH RESPECT TO THE SOFTWARE.  BROADCOM SPECIFICALLY
+#  DISCLAIMS ANY AND ALL IMPLIED WARRANTIES OF TITLE, MERCHANTABILITY,
+#  NONINFRINGEMENT, FITNESS FOR A PARTICULAR PURPOSE, LACK OF VIRUSES,
+#  ACCURACY OR COMPLETENESS, QUIET ENJOYMENT, QUIET POSSESSION OR
+#  CORRESPONDENCE TO DESCRIPTION. YOU ASSUME THE ENTIRE RISK ARISING OUT
+#  OF USE OR PERFORMANCE OF THE SOFTWARE.
+#
+#  3.  TO THE MAXIMUM EXTENT PERMITTED BY LAW, IN NO EVENT SHALL BROADCOM
+#  OR ITS LICENSORS BE LIABLE FOR (i) CONSEQUENTIAL, INCIDENTAL, SPECIAL,
+#  INDIRECT, OR EXEMPLARY DAMAGES WHATSOEVER ARISING OUT OF OR IN ANY WAY
+#  RELATING TO YOUR USE OF OR INABILITY TO USE THE SOFTWARE EVEN IF
+#  BROADCOM HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES; OR (ii)
+#  ANY AMOUNT IN EXCESS OF THE AMOUNT ACTUALLY PAID FOR THE SOFTWARE
+#  ITSELF OR U.S. $1, WHICHEVER IS GREATER. THESE LIMITATIONS SHALL APPLY
+#  NOTWITHSTANDING ANY FAILURE OF ESSENTIAL PURPOSE OF ANY LIMITED
+#  REMEDY.
+#
+###############################################################################
+#
+#  Script:  strip_c_copyright.pl
+#
+#  Purpose: This script removes a copyright header from a c/c++
+#           file. The file is passed into the perl script via STDIN, so this
+#           script must be used in conjunction with something like 'cat'.
+#
+#  Usage:   cat <file> | ./strip_c_copyright.pl
+#
+#
+#  Previous attemps at c-style regular expressions...
+#    s#(?:\/\*(?:[^*]|(?:\*+[^*\/]))*\*+\/).*\n##;
+#    s#(?:\/\*.*Copyright\(c\)(?:[^*]|(?:\*+[^*\/]))*\*+\/).*\n|(?:\/\*(?:[^*]|(?:\*+[^*\/]))*Copyright\(c\)(?:[^*]|(?:\*+[^*\/]))*\*+\/).*\n##;
+#    good => s#(?:\/\*.*Copyright(?:[^*]|(?:\*+[^*\/]))*\*+\/).*\n|(?:\/\*(?:[^*]|(?:\*+[^*\/]))*Copyright(?:[^*]|(?:\*+[^*\/]))*\*+\/).*\n##;
+#    good => s#(?:\/\*.*Copyright(?:[^*]|(?:\*+[^*\/]))*\*+\/).*(?:\s)+|(?:\/\*(?:[^*]|(?:\*+[^*\/]))*Copyright(?:[^*]|(?:\*+[^*\/]))*\*+\/).*(?:\s)+##;
+#
+#  The following regex can be used for removing redundant C++
+#  copyright header from libssd files...
+#
+#  s#\/\/\*+[^*]*Copyright[^*]*\/\/\*+#//****************************************************************************#;
+#
+###############################################################################
+
+$/ = undef;
+$_ = <>;
+
+#
+# The following regex handles the old Teknovus-style copyright headers
+#
+# e.g. "/*         Copyright(c) 2008-2012 Broadcom, Corp.        */"
+#
+#s#(?:\/\*.*Copyright(?:[^*]|(?:\*+[^*\/]))*\*+\/).*(?:\s)+##;
+
+#
+# The following regex handles the new Broadcom standard copyright headers
+#
+s#(?:\/\*(?:[^*]|(?:\*+[^*\/]))*Copyright(?:[^*]|(?:\*+[^*\/]))*\*+\/).*(?:\s)+##;
+print;
+
diff --git a/bal_release/tools/copyright_tools/strip_sh_copyright.pl b/bal_release/tools/copyright_tools/strip_sh_copyright.pl
new file mode 100755
index 0000000..82406b1
--- /dev/null
+++ b/bal_release/tools/copyright_tools/strip_sh_copyright.pl
@@ -0,0 +1,63 @@
+#!/usr/bin/perl
+###############################################################################
+#
+#  Copyright 2008-2014 Broadcom Corporation
+#
+#  This program is the proprietary software of Broadcom Corporation
+#  and/or its licensors, and may only be used, duplicated, modified or
+#  distributed pursuant to the terms and conditions of a separate,
+#  written license agreement executed between you and Broadcom (an
+#  "Authorized License").  Except as set forth in an Authorized License,
+#  Broadcom grants no license (express or implied), right to use, or
+#  waiver of any kind with respect to the Software, and Broadcom
+#  expressly reserves all rights in and to the Software and all
+#  intellectual property rights therein.  IF YOU HAVE NO AUTHORIZED
+#  LICENSE, THEN YOU HAVE NO RIGHT TO USE THIS SOFTWARE IN ANY WAY, AND
+#  SHOULD IMMEDIATELY NOTIFY BROADCOM AND DISCONTINUE ALL USE OF THE
+#  SOFTWARE.
+#
+#  Except as expressly set forth in the Authorized License,
+#
+#  1.  This program, including its structure, sequence and organization,
+#  constitutes the valuable trade secrets of Broadcom, and you shall use
+#  all reasonable efforts to protect the confidentiality thereof, and to
+#  use this information only in connection with your use of Broadcom
+#  integrated circuit products.
+#
+#  2.  TO THE MAXIMUM EXTENT PERMITTED BY LAW, THE SOFTWARE IS PROVIDED
+#  "AS IS" AND WITH ALL FAULTS AND BROADCOM MAKES NO PROMISES,
+#  REPRESENTATIONS OR WARRANTIES, EITHER EXPRESS, IMPLIED, STATUTORY, OR
+#  OTHERWISE, WITH RESPECT TO THE SOFTWARE.  BROADCOM SPECIFICALLY
+#  DISCLAIMS ANY AND ALL IMPLIED WARRANTIES OF TITLE, MERCHANTABILITY,
+#  NONINFRINGEMENT, FITNESS FOR A PARTICULAR PURPOSE, LACK OF VIRUSES,
+#  ACCURACY OR COMPLETENESS, QUIET ENJOYMENT, QUIET POSSESSION OR
+#  CORRESPONDENCE TO DESCRIPTION. YOU ASSUME THE ENTIRE RISK ARISING OUT
+#  OF USE OR PERFORMANCE OF THE SOFTWARE.
+#
+#  3.  TO THE MAXIMUM EXTENT PERMITTED BY LAW, IN NO EVENT SHALL BROADCOM
+#  OR ITS LICENSORS BE LIABLE FOR (i) CONSEQUENTIAL, INCIDENTAL, SPECIAL,
+#  INDIRECT, OR EXEMPLARY DAMAGES WHATSOEVER ARISING OUT OF OR IN ANY WAY
+#  RELATING TO YOUR USE OF OR INABILITY TO USE THE SOFTWARE EVEN IF
+#  BROADCOM HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES; OR (ii)
+#  ANY AMOUNT IN EXCESS OF THE AMOUNT ACTUALLY PAID FOR THE SOFTWARE
+#  ITSELF OR U.S. $1, WHICHEVER IS GREATER. THESE LIMITATIONS SHALL APPLY
+#  NOTWITHSTANDING ANY FAILURE OF ESSENTIAL PURPOSE OF ANY LIMITED
+#  REMEDY.
+#
+###############################################################################
+#
+#  Script:  strip_sh_copyright.pl
+#
+#  Purpose: This script removes a copyright header from a shell script
+#           file or Makefile.  The file is passed into the perl script via
+#           STDIN, so this script must be used in conjunction with something
+#           like 'cat'.
+#
+#  Usage:   cat <file> | ./strip_sh_copyright.pl
+#
+###############################################################################
+
+$/ = undef;
+$_ = <>;
+s/##+(?:[^#]|(?:#[^#])*)*Copyright(?:[^#]|(?:#[^#])*)*##+\n//g;
+print;
diff --git a/bal_release/tools/copyright_tools/update_copyright.sh b/bal_release/tools/copyright_tools/update_copyright.sh
new file mode 100755
index 0000000..15f414d
--- /dev/null
+++ b/bal_release/tools/copyright_tools/update_copyright.sh
@@ -0,0 +1,221 @@
+#!/bin/sh
+###############################################################################
+#
+#  <:copyright-BRCM:2016:proprietary:standard
+#   
+#     Broadcom Ltd. Proprietary and Confidential.(c) 2016 Broadcom Ltd.
+#     All Rights Reserved
+#   
+#  This program is the proprietary software of Broadcom Ltd. and/or its
+#  licensors, and may only be used, duplicated, modified or distributed pursuant
+#  to the terms and conditions of a separate, written license agreement executed
+#  between you and Broadcom Ltd. (an "Authorized License").  Except as set forth in
+#  an Authorized License, Broadcom Ltd. grants no license (express or implied), right
+#  to use, or waiver of any kind with respect to the Software, and Broadcom Ltd.
+#  expressly reserves all rights in and to the Software and all intellectual
+#  property rights therein.  IF YOU HAVE NO AUTHORIZED LICENSE, THEN YOU HAVE
+#  NO RIGHT TO USE THIS SOFTWARE IN ANY WAY, AND SHOULD IMMEDIATELY NOTIFY
+#  BROADCOM LTD AND DISCONTINUE ALL USE OF THE SOFTWARE.
+#   
+#  Except as expressly set forth in the Authorized License,
+#   
+#  1. This program, including its structure, sequence and organization,
+#      constitutes the valuable trade secrets of Broadcom Ltd., and you shall use
+#      all reasonable efforts to protect the confidentiality thereof, and to
+#      use this information only in connection with your use of Broadcom Ltd.
+#      integrated circuit products.
+#   
+#  2. TO THE MAXIMUM EXTENT PERMITTED BY LAW, THE SOFTWARE IS PROVIDED "AS IS"
+#      AND WITH ALL FAULTS AND BROADCOM MAKES NO PROMISES, REPRESENTATIONS OR
+#      WARRANTIES, EITHER EXPRESS, IMPLIED, STATUTORY, OR OTHERWISE, WITH
+#      RESPECT TO THE SOFTWARE.  BROADCOM SPECIFICALLY DISCLAIMS ANY AND
+#      ALL IMPLIED WARRANTIES OF TITLE, MERCHANTABILITY, NONINFRINGEMENT,
+#      FITNESS FOR A PARTICULAR PURPOSE, LACK OF VIRUSES, ACCURACY OR
+#      COMPLETENESS, QUIET ENJOYMENT, QUIET POSSESSION OR CORRESPONDENCE
+#      TO DESCRIPTION. YOU ASSUME THE ENTIRE RISK ARISING OUT OF USE OR
+#      PERFORMANCE OF THE SOFTWARE.
+#   
+#  3. TO THE MAXIMUM EXTENT PERMITTED BY LAW, IN NO EVENT SHALL BROADCOM OR
+#      ITS LICENSORS BE LIABLE FOR (i) CONSEQUENTIAL, INCIDENTAL, SPECIAL,
+#      INDIRECT, OR EXEMPLARY DAMAGES WHATSOEVER ARISING OUT OF OR IN ANY
+#      WAY RELATING TO YOUR USE OF OR INABILITY TO USE THE SOFTWARE EVEN
+#      IF BROADCOM HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES;
+#      OR (ii) ANY AMOUNT IN EXCESS OF THE AMOUNT ACTUALLY PAID FOR THE
+#      SOFTWARE ITSELF OR U.S. $1, WHICHEVER IS GREATER. THESE LIMITATIONS
+#      SHALL APPLY NOTWITHSTANDING ANY FAILURE OF ESSENTIAL PURPOSE OF ANY
+#      LIMITED REMEDY.
+#  :>
+#
+###############################################################################
+#
+#  Script:  update_copyright.sh
+#
+#  Purpose: This script updates the copyright comment headers in
+#           c/c++, shell script, and Makefiles. Depending on the options
+#           specified below, this script will also automatically create a
+#           Perforce changelist and checkout the files before updating the
+#           copyright headers.
+#
+#  Usage:   ./update_copyright.sh [-c chglist num|"none"] <files>
+#             Options:
+#
+#             -c num|"none"    If -c is specified with a Perforce changelist 
+#                              number, then files that are updated by this
+#                              script will be put into the specified changelist.
+#
+#                              If '-c none' is specified, the script will not 
+#                              execute any Perforce commands before updating the
+#                              copyright in files. The user is expected to checkout 
+#                              the files prior to excuting this script.
+#
+#                              If -c is not specified (default), a new change list 
+#                              is created and all updated files are put into the new 
+#                              change list.
+#
+#
+#  This script makes use of the following perl scripts:
+#      strip_c_copyright.pl   - Strips a copyright header from a c/c++ file.
+#      strip_sh_copyright.pl  - Strips a copyright header from a Makefile or shell 
+#                               script.
+#      insert_copyright.pl    - Inserts a copyright header into a c/c++, shell script, 
+#                               or Makefile file.
+#
+#
+#  --------------------------
+#  Copyright Update Procedure
+#  --------------------------
+#
+#  The following procedure should be used to update the copyright information.
+#
+#  1) find . -regextype egrep -regex '.*\.c|.*\.h|.*\.cpp|.*Makefile|.*Makefile\.sdk|.*\.mk|.*\.sh' | xargs $PROJROOT/tools/copyright_tools/update_copyright.sh
+#
+#  To exlude a directory from the search, use the following command
+#
+#  1a) find . -path ./3rdparty -prune -o -regextype egrep -regex '.*\.c|.*\.h|.*\.cpp|.*Makefile|.*Makefile\.sdk|.*\.mk|.*\.sh' | xargs $PROJROOT/tools/copyright_tools/update_copyright.sh
+#
+#  2) Update the "Copyright (c)" statement in the debug CLI (./lib/libdbg/dbgCli.c)
+#        - Note: newer versions of the script may already handle this automatically.
+#
+#  3) Update the following files by hand because they do not follow
+#     the standard source file naming conventions:
+#         - bal/cur/3rdparty/indigo/indigo/modules/ofpal_driver/module/src/ofpal_driver.c
+#         - bal/cur/3rdparty/indigo/indigo/modules/ofpal-driver/utest/main.c
+#         - bal/cur/doxygen/Makefile
+#
+#      Also, you can use the following command to find additional straglers...
+#
+#         find . | xargs grep 2013
+#
+#  (Optional) Use the following procedure to verify the changes.
+#
+#        a) Use p4 to build a list of files that are being modified by this CL.
+#
+#           p4 describe <CL from step1> | grep '^\.\.\.' | awk '{print $2}' | sed 's%//SystemSoftware/Rel/pioneer/dml/%%g' | sed 's%\#.$%%g'  > p4_changes_files.txt
+#        
+#        b) Add the following bash script to a file called temp.sh and
+#           add execute permissions to the file.
+#
+#            #!/bin/sh
+#            #
+#            while read -r line; do
+#                echo "$line:  "`p4 diff -ds $line | grep changed`
+#            done < p4_changes_files.txt
+#        
+#        c) Run the script
+#
+#            ./temp.sh | tee p4_diffs.txt
+#        
+#        d) Check the scripe for unusual/unexpected changes and use 'p4 diff file'
+#           to investigate.
+#
+#            cat p4_diffs.txt | grep -v "changed 1 chunks 1 / 1 lines" | tee t1.txt
+#
+#
+###############################################################################
+
+COPYRIGHT_FILE=${PROJROOT}/COPYRIGHT
+P4_CHANGELIST_DESC="Copyright Header Update - "`date`
+
+if [ "$1" = "-c" ]
+    then
+    P4_CHANGELIST_NUM="$2"
+
+    if [ "$P4_CHANGELIST_NUM" = "" ]
+        then
+        echo "ERROR: must specify 'none' or P4 change list number for the '-c' option."
+        exit 1
+    elif [ "$P4_CHANGELIST_NUM" = "none" ]
+        then
+        echo "NOTE: Perforce commands will be skipped"
+    else
+        echo "Using existing change list $P4_CHANGELIST_NUM"
+    fi
+    shift ; shift
+else
+    P4_CHANGELIST_NUM=`echo -e "Change: new\nDescription: ${P4_CHANGELIST_DESC}" | p4 change -i | cut -d " " -f 2`
+    echo "Created change list $P4_CHANGELIST_NUM"
+fi
+
+for path in "$@"
+do
+  file=`basename $path`
+
+  file_ext="${file#*.}"
+
+  # Only checkout files from perforce is an existing or new change list was specified 
+  if [ "$P4_CHANGELIST_NUM" != "none" ]
+      then
+
+      # Only update text files
+      p4_file_type=`p4 fstat $path | grep headType | cut -d " " -f 3 | grep -o text`
+      if [ "$p4_file_type" != "text" ]
+          then
+          echo "WARNING: skipping file '$path' because it it not a text file."
+          continue  ### resumes iteration of an enclosing for loop ###
+      fi
+
+      # Open the file for editing
+      p4 opened $path 2>&1 | grep -q "not opened"
+      if [ $? != 0 ]
+          then
+          echo "WARNING: file '$path' is already opened for edit..."
+      else
+          p4 edit -c $P4_CHANGELIST_NUM $path &>/dev/null
+      fi
+  fi
+
+  # Update the Copyright based on file type
+  if [ "$file_ext" == "c" ] || [ "$file_ext" == "h" ] || [ "$file_ext" == "cpp" ]
+      then
+      #
+      # C/C++ files
+      #
+      echo -ne "Updating '$file', type = c/c++ ... "
+      cat $path | perl ${PROJROOT}/tools/copyright_tools/strip_c_copyright.pl > $path"_crtemp";
+      perl ${PROJROOT}/tools/copyright_tools/insert_copyright.pl -t c -l ${COPYRIGHT_FILE} $path"_crtemp" > $path;
+      rm $path"_crtemp"
+      echo "done."
+  elif [ "$file_ext" == "sh" ]
+      then
+      #
+      # Shell script files
+      #
+      echo -ne "Updating '$file', type = shell script ... "
+      cat $path | perl ${PROJROOT}/tools/copyright_tools/strip_sh_copyright.pl > $path"_crtemp";
+      perl ${PROJROOT}/tools/copyright_tools/insert_copyright.pl -t s -l ${COPYRIGHT_FILE} $path"_crtemp" > $path;
+      rm $path"_crtemp"
+      echo "done."
+  elif [ "$file" == "Makefile" ] || [ "$file" == "Makefile.sdk" ] || [ "$file_ext" == "mk" ]
+      then
+      #
+      # Makefiles
+      #
+      echo -ne "Updating '$file', type = Makefile ... "
+      cat $path | perl ${PROJROOT}/tools/copyright_tools/strip_sh_copyright.pl > $path"_crtemp";
+      perl ${PROJROOT}/tools/copyright_tools/insert_copyright.pl -t m -l ${COPYRIGHT_FILE} $path"_crtemp" > $path;
+      rm $path"_crtemp"
+      echo "done."
+  else
+      echo "Skipping $file, type = unknown type"
+  fi
+done
\ No newline at end of file