]> git.cameronkatri.com Git - pw-darwin.git/commitdiff
various: general adoption of SPDX licensing ID tags.
authorPedro F. Giffuni <pfg@FreeBSD.org>
Mon, 27 Nov 2017 15:37:16 +0000 (15:37 +0000)
committerPedro F. Giffuni <pfg@FreeBSD.org>
Mon, 27 Nov 2017 15:37:16 +0000 (15:37 +0000)
Mainly focus on files that use BSD 2-Clause license, however the tool I
was using misidentified many licenses so this was mostly a manual - error
prone - task.

The Software Package Data Exchange (SPDX) group provides a specification
to make it easier for automated tools to detect and summarize well known
opensource licenses. We are gradually adopting the specification, noting
that the tags are considered only advisory and do not, in any way,
superceed or replace the license texts.

No functional change intended.

19 files changed:
adduser/adduser.sh
adduser/rmuser.sh [new file with mode: 0644]
pw/bitmap.c
pw/bitmap.h [new file with mode: 0644]
pw/cpdir.c
pw/grupd.c
pw/psdate.c
pw/psdate.h [new file with mode: 0644]
pw/pw.c
pw/pw.h
pw/pw_conf.c
pw/pw_group.c
pw/pw_log.c
pw/pw_nis.c
pw/pw_user.c
pw/pw_vpw.c
pw/pwupd.c
pw/pwupd.h
pw/rm_r.c

index 4b0a6f61b2723ead35da9f6158d647c616743f38..5f80d77f7ca65bfaa9fd3e986ccf63e535516901 100644 (file)
@@ -1,5 +1,7 @@
 #!/bin/sh
 #
+# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+#
 # Copyright (c) 2002-2004 Michael Telahun Makonnen. All rights reserved.
 #
 # Redistribution and use in source and binary forms, with or without
diff --git a/adduser/rmuser.sh b/adduser/rmuser.sh
new file mode 100644 (file)
index 0000000..abaf004
--- /dev/null
@@ -0,0 +1,363 @@
+#!/bin/sh
+#
+# SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+#
+# Copyright (c) 2002, 2003 Michael Telahun Makonnen. All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+#    notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+#    notice, this list of conditions and the following disclaimer in the
+#    documentation and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+#      Email: Mike Makonnen <mtm@FreeBSD.Org>
+#
+# $FreeBSD$
+#
+
+ATJOBDIR="/var/at/jobs"
+CRONJOBDIR="/var/cron/tabs"
+MAILSPOOL="/var/mail"
+SIGKILL="-KILL"
+TEMPDIRS="/tmp /var/tmp"
+THISCMD=`/usr/bin/basename $0`
+PWCMD="${PWCMD:-/usr/sbin/pw}"
+
+# err msg
+#      Display $msg on stderr.
+#
+err() {
+       echo 1>&2 ${THISCMD}: $*
+}
+
+# verbose
+#      Returns 0 if verbose mode is set, 1 if it is not.
+#
+verbose() {
+       [ -n "$vflag" ] && return 0 || return 1
+}
+
+# rm_files login
+#      Removes files or empty directories belonging to $login from various
+#      temporary directories.
+#
+rm_files() {
+       # The argument is required
+       [ -n $1 ] && login=$1 || return
+
+       totalcount=0
+       for _dir in ${TEMPDIRS} ; do
+               filecount=0
+               if [ ! -d $_dir ]; then
+                       err "$_dir is not a valid directory."
+                       continue
+               fi
+               verbose && echo -n "Removing files owned by ($login) in $_dir:"
+               filecount=`find 2>/dev/null "$_dir" -user "$login" -delete -print |
+                   wc -l | sed 's/ *//'`
+               verbose && echo " $filecount removed."
+               totalcount=$(($totalcount + $filecount))
+       done
+       ! verbose && [ $totalcount -ne 0 ] && echo -n " files($totalcount)"
+}
+
+# rm_mail login
+#      Removes unix mail and pop daemon files belonging to the user
+#      specified in the $login argument.
+#
+rm_mail() {
+       # The argument is required
+       [ -n $1 ] && login=$1 || return
+
+       verbose && echo -n "Removing mail spool(s) for ($login):"
+       if [ -f ${MAILSPOOL}/$login ]; then
+               verbose && echo -n " ${MAILSPOOL}/$login" ||
+                   echo -n " mailspool"
+               rm ${MAILSPOOL}/$login
+       fi
+       if [ -f ${MAILSPOOL}/.${login}.pop ]; then
+               verbose && echo -n " ${MAILSPOOL}/.${login}.pop" ||
+                   echo -n " pop3"
+               rm ${MAILSPOOL}/.${login}.pop
+       fi
+       verbose && echo '.'
+}
+
+# kill_procs login
+#      Send a SIGKILL to all processes owned by $login.
+#
+kill_procs() {
+       # The argument is required
+       [ -n $1 ] && login=$1 || return
+
+       verbose && echo -n "Terminating all processes owned by ($login):"
+       killcount=0
+       proclist=`ps 2>/dev/null -U $login | grep -v '^\ *PID' | awk '{print $1}'`
+       for _pid in $proclist ; do
+               kill 2>/dev/null ${SIGKILL} $_pid
+               killcount=$(($killcount + 1))
+       done
+       verbose && echo " ${SIGKILL} signal sent to $killcount processes."
+       ! verbose && [ $killcount -ne 0 ] && echo -n " processes(${killcount})"
+}
+
+# rm_at_jobs login
+#      Remove at (1) jobs belonging to $login.
+#
+rm_at_jobs() {
+       # The argument is required
+       [ -n $1 ] && login=$1 || return
+
+       atjoblist=`find 2>/dev/null ${ATJOBDIR} -maxdepth 1 -user $login -print`
+       jobcount=0
+       verbose && echo -n "Removing at(1) jobs owned by ($login):"
+       for _atjob in $atjoblist ; do
+               rm -f $_atjob
+               jobcount=$(($jobcount + 1))
+       done
+       verbose && echo " $jobcount removed."
+       ! verbose && [ $jobcount -ne 0 ] && echo -n " at($jobcount)"
+}
+
+# rm_crontab login
+#      Removes crontab file belonging to user $login.
+#
+rm_crontab() {
+       # The argument is required
+       [ -n $1 ] && login=$1 || return
+
+       verbose && echo -n "Removing crontab for ($login):"
+       if [ -f ${CRONJOBDIR}/$login ]; then
+               verbose && echo -n " ${CRONJOBDIR}/$login" || echo -n " crontab"
+               rm -f ${CRONJOBDIR}/$login
+       fi
+       verbose && echo '.'
+}
+
+# rm_ipc login
+#      Remove all IPC mechanisms which are owned by $login.
+#
+rm_ipc() {
+       verbose && echo -n "Removing IPC mechanisms"
+       for i in s m q; do
+               ipcs -$i |
+               awk -v i=$i -v login=$1 '$1 == i && $5 == login { print $2 }' |
+               xargs -n 1 ipcrm -$i
+       done
+       verbose && echo '.'
+}
+
+# rm_user login
+#      Remove user $login from the system. This subroutine makes use
+#      of the pw(8) command to remove a user from the system. The pw(8)
+#      command will remove the specified user from the user database
+#      and group file and remove any crontabs. His home
+#      directory will be removed if it is owned by him and contains no 
+#      files or subdirectories owned by other users. Mail spool files will
+#      also be removed.
+#
+rm_user() {
+       # The argument is required
+       [ -n $1 ] && login=$1 || return
+
+       verbose && echo -n "Removing user ($login)"
+       [ -n "$pw_rswitch" ] && {
+               verbose && echo -n " (including home directory)"
+               ! verbose && echo -n " home"
+       }
+       ! verbose && echo -n " passwd"
+       verbose && echo -n " from the system:"
+       ${PWCMD} userdel -n $login $pw_rswitch
+       verbose && echo ' Done.'
+}
+
+# prompt_yesno msg
+#      Prompts the user with a $msg. The answer is expected to be
+#      yes, no, or some variation thereof. This subroutine returns 0
+#      if the answer was yes, 1 if it was not.
+#
+prompt_yesno() {
+       # The argument is required
+       [ -n "$1" ] && msg="$1" || return
+
+        while : ; do
+                echo -n "$msg"
+                read _ans
+                case $_ans in
+                [Nn][Oo]|[Nn])
+                       return 1
+                        ;;
+                [Yy][Ee][Ss]|[Yy][Ee]|[Yy])
+                        return 0
+                        ;;
+                *)
+                        ;;
+                esac
+       done
+}
+
+# show_usage
+#      (no arguments)
+#      Display usage message.
+#
+show_usage() {
+       echo "usage: ${THISCMD} [-yv] [-f file] [user ...]"
+       echo "       if the -y switch is used, either the -f switch or"
+       echo "       one or more user names must be given"
+}
+
+#### END SUBROUTINE DEFENITION ####
+
+ffile=
+fflag=
+procowner=
+pw_rswitch=
+userlist=
+yflag=
+vflag=
+
+procowner=`/usr/bin/id -u`
+if [ "$procowner" != "0" ]; then
+       err 'you must be root (0) to use this utility.'
+       exit 1
+fi
+
+args=`getopt 2>/dev/null yvf: $*`
+if [ "$?" != "0" ]; then
+       show_usage
+       exit 1
+fi
+set -- $args
+for _switch ; do
+       case $_switch in
+       -y)
+               yflag=1
+               shift
+               ;;
+       -v)
+               vflag=1
+               shift
+               ;;
+       -f)
+               fflag=1
+               ffile="$2"
+               shift; shift
+               ;;
+       --)
+               shift
+               break
+               ;;
+       esac
+done
+
+# Get user names from a file if the -f switch was used. Otherwise,
+# get them from the commandline arguments. If we're getting it
+# from a file, the file must be owned by and writable only by root.
+#
+if [ $fflag ]; then
+       _insecure=`find $ffile ! -user 0 -or -perm +0022`
+       if [ -n "$_insecure" ]; then
+               err "file ($ffile) must be owned by and writeable only by root."
+               exit 1
+       fi
+       if [ -r "$ffile" ]; then
+               userlist=`cat $ffile | while read _user _junk ; do
+                       case $_user in
+                       \#*|'')
+                               ;;
+                       *)
+                               echo -n "$userlist $_user"
+                               ;;
+                       esac
+               done`
+       fi
+else
+       while [ $1 ] ; do
+               userlist="$userlist $1"
+               shift
+       done
+fi
+
+# If the -y or -f switch has been used and the list of users to remove
+# is empty it is a fatal error. Otherwise, prompt the user for a list
+# of one or more user names.
+#
+if [ ! "$userlist" ]; then
+       if [ $fflag ]; then
+               err "($ffile) does not exist or does not contain any user names."
+               exit 1
+       elif [ $yflag ]; then
+               show_usage
+               exit 1
+       else
+               echo -n "Please enter one or more usernames: "
+               read userlist
+       fi
+fi
+
+_user=
+_uid=
+for _user in $userlist ; do
+       # Make sure the name exists in the passwd database and that it
+       # does not have a uid of 0
+       #
+       userrec=`pw 2>/dev/null usershow -n $_user`
+       if [ "$?" != "0" ]; then
+               err "user ($_user) does not exist in the password database."
+               continue
+       fi
+       _uid=`echo $userrec | awk -F: '{print $3}'`
+       if [ "$_uid" = "0" ]; then
+               err "user ($_user) has uid 0. You may not remove this user."
+               continue
+       fi
+
+       # If the -y switch was not used ask for confirmation to remove the
+       # user and home directory.
+       #
+       if [ -z "$yflag" ]; then
+               echo "Matching password entry:"
+               echo
+               echo $userrec
+               echo
+               if ! prompt_yesno "Is this the entry you wish to remove? " ; then
+                       continue
+               fi
+               _homedir=`echo $userrec | awk -F: '{print $9}'`
+               if prompt_yesno "Remove user's home directory ($_homedir)? "; then
+                       pw_rswitch="-r"
+               fi
+       else
+               pw_rswitch="-r"
+       fi
+
+       # Disable any further attempts to log into this account
+       ${PWCMD} 2>/dev/null lock $_user
+
+       # Remove crontab, mail spool, etc. Then obliterate the user from
+       # the passwd and group database.
+       #
+       ! verbose && echo -n "Removing user ($_user):"
+       rm_crontab $_user
+       rm_at_jobs $_user
+       rm_ipc $_user
+       kill_procs $_user
+       rm_files $_user
+       rm_mail $_user
+       rm_user $_user
+       ! verbose && echo "."
+done
index 8e96bff40ba731c791ae427d032064071b0bedad..be82b2c792dd9537ebd02068e22ca3b45e691e82 100644 (file)
@@ -1,4 +1,6 @@
 /*-
+ * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+ *
  * Copyright (C) 1996
  *     David L. Nugent.  All rights reserved.
  *
diff --git a/pw/bitmap.h b/pw/bitmap.h
new file mode 100644 (file)
index 0000000..570c678
--- /dev/null
@@ -0,0 +1,52 @@
+/*-
+ * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+ *
+ * Copyright (C) 1996
+ *     David L. Nugent.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY DAVID L. NUGENT AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL DAVID L. NUGENT OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#ifndef _BITMAP_H_
+#define _BITMAP_H_
+
+#include <sys/cdefs.h>
+
+struct bitmap
+{
+       int           size;
+       unsigned char *map;
+};
+
+__BEGIN_DECLS
+struct bitmap bm_alloc(int size);
+void bm_dealloc(struct bitmap * bm);
+void bm_setbit(struct bitmap * bm, int pos);
+void bm_clrbit(struct bitmap * bm, int pos);
+int bm_isset(struct bitmap * bm, int pos);
+int bm_firstunset(struct bitmap * bm);
+int bm_lastset(struct bitmap * bm);
+__END_DECLS
+
+#endif                         /* !_BITMAP_H */
index 679758ba9a338ccb2d8b294b644b83bb8e4d75bd..4e6ca8828b913263dcefe602d98e896e7310b30b 100644 (file)
@@ -1,4 +1,6 @@
 /*-
+ * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+ *
  * Copyright (C) 1996
  *     David L. Nugent.  All rights reserved.
  *
index 5d0df0263e4a8296e92f0a22fb0121bff010a50a..e98dd295183f2fb7560d6951059037f540bed795 100644 (file)
@@ -1,4 +1,6 @@
 /*-
+ * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+ *
  * Copyright (C) 1996
  *     David L. Nugent.  All rights reserved.
  *
index b63d882bc7bc56bf1feb1f4bae8d8c5a42b0afff..94d2a343375f10a34d9d47ebaf34ba658053390c 100644 (file)
@@ -1,4 +1,6 @@
 /*-
+ * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+ *
  * Copyright (C) 1996
  *     David L. Nugent.  All rights reserved.
  *
diff --git a/pw/psdate.h b/pw/psdate.h
new file mode 100644 (file)
index 0000000..bb71da3
--- /dev/null
@@ -0,0 +1,42 @@
+/*-
+ * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+ *
+ * Copyright (C) 1996
+ *     David L. Nugent.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY DAVID L. NUGENT AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL DAVID L. NUGENT OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#ifndef _PSDATE_H_
+#define _PSDATE_H_
+
+#include <time.h>
+#include <sys/cdefs.h>
+
+__BEGIN_DECLS
+time_t parse_date(time_t dt, char const * str);
+void print_date(char *buf, time_t t, int dotime);
+__END_DECLS
+
+#endif                         /* !_PSDATE_H_ */
diff --git a/pw/pw.c b/pw/pw.c
index 700a7b2e533219581ffc825a47a51eea4cf1e3f2..5f02a1513651f4548353158f5ca5cf816b1dd1c7 100644 (file)
--- a/pw/pw.c
+++ b/pw/pw.c
@@ -1,4 +1,6 @@
 /*-
+ * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+ *
  * Copyright (C) 1996
  *     David L. Nugent.  All rights reserved.
  *
diff --git a/pw/pw.h b/pw/pw.h
index 592d5921556fe0c7da58b4ba4855ebc084b92c93..816c7555658421be56eba8930b6901a69510f6dd 100644 (file)
--- a/pw/pw.h
+++ b/pw/pw.h
@@ -1,4 +1,6 @@
 /*-
+ * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+ *
  * Copyright (C) 1996
  *     David L. Nugent.  All rights reserved.
  *
index a3bd0bd367333a7876bf70ee3d9b8b191bb1d383..e1dc6825e81a636d2d26c781ffa12db60309c0e1 100644 (file)
@@ -1,4 +1,6 @@
 /*-
+ * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+ *
  * Copyright (C) 1996
  *     David L. Nugent.  All rights reserved.
  *
index 0a2b1eb116e7374d291ed77cb3cb912e3a0fbd7c..dd650625fde32429132de1fc4460d90cc0379957 100644 (file)
@@ -1,4 +1,6 @@
 /*-
+ * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+ *
  * Copyright (C) 1996
  *     David L. Nugent.  All rights reserved.
  *
index fe8d803b8d2beebf698b9c47d81cd8cb689c3253..17e14d1e44eded51a01dd6d14b8e7a5df9fb681d 100644 (file)
@@ -1,4 +1,6 @@
 /*-
+ * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+ *
  * Copyright (C) 1996
  *     David L. Nugent.  All rights reserved.
  *
index 087c9460f3f3e4ee00bb1b95e8d0aab7b4114618..4b70bc1de1f67995c566ada1b0f6d5501295a1f8 100644 (file)
@@ -1,4 +1,6 @@
 /*-
+ * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+ *
  * Copyright (C) 1996
  *     David L. Nugent.  All rights reserved.
  *
index 92d5c6c5dbb5c8b94ea213452e1a6f7852cf8ff9..395564d1f0040ab38dd2b850c431086fe3ff6371 100644 (file)
@@ -1,4 +1,6 @@
 /*-
+ * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+ *
  * Copyright (C) 1996
  *     David L. Nugent.  All rights reserved.
  *
index 58e52946f146ff02b271c9960bf54dbcabeb93a1..ea87f715a2b087123b281ee63b117a13ad619b94 100644 (file)
@@ -1,4 +1,6 @@
 /*-
+ * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+ *
  * Copyright (C) 1996
  *     David L. Nugent.  All rights reserved.
  *
index 87c3c994bada86698e0fd233f964143866ca99a4..ac91c9e4c1bb38ea63bc81b610fca1f7024b4147 100644 (file)
@@ -1,4 +1,6 @@
 /*-
+ * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+ *
  * Copyright (C) 1996
  *     David L. Nugent.  All rights reserved.
  *
index daca487835f126757904b1953fa50202e6972009..b6f268baae5cf1815c431a12f12cf2e2943d130c 100644 (file)
@@ -1,4 +1,6 @@
 /*-
+ * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+ *
  * Copyright (C) 1996
  *     David L. Nugent.  All rights reserved.
  *
index 45fc5d14663aff9c70e4e5f0e8c15c8993c65b99..940266d81679af42a945e9c26b82a60cb43dc576 100644 (file)
--- a/pw/rm_r.c
+++ b/pw/rm_r.c
@@ -1,4 +1,6 @@
 /*-
+ * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+ *
  * Copyright (C) 1996
  *     David L. Nugent.  All rights reserved.
  *