Add shell implementations of basename and dirname to rc.subr. They
are supposed to mimic basename(1) and dirname(1), except that they are usable before /usr/bin is mounted.
This commit is contained in:
parent
7dd382bcbb
commit
532fa0d9ae
30
etc/rc.subr
30
etc/rc.subr
@ -1,4 +1,4 @@
|
|||||||
# $NetBSD: rc.subr,v 1.91 2012/04/07 17:28:44 christos Exp $
|
# $NetBSD: rc.subr,v 1.92 2012/12/17 18:17:27 apb Exp $
|
||||||
#
|
#
|
||||||
# Copyright (c) 1997-2011 The NetBSD Foundation, Inc.
|
# Copyright (c) 1997-2011 The NetBSD Foundation, Inc.
|
||||||
# All rights reserved.
|
# All rights reserved.
|
||||||
@ -1256,6 +1256,34 @@ collapse_backslash_newline()
|
|||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Shell implementations of basename and dirname, usable before
|
||||||
|
# the /usr file system is mounted.
|
||||||
|
#
|
||||||
|
basename()
|
||||||
|
{
|
||||||
|
local file="$1"
|
||||||
|
local suffix="$2"
|
||||||
|
local base
|
||||||
|
|
||||||
|
base="${file##*/}" # remove up to and including last '/'
|
||||||
|
base="${base%${suffix}}" # remove suffix, if any
|
||||||
|
command printf "%s\n" "${base}"
|
||||||
|
}
|
||||||
|
|
||||||
|
dirname()
|
||||||
|
{
|
||||||
|
local file="$1"
|
||||||
|
local dir
|
||||||
|
|
||||||
|
case "$file" in
|
||||||
|
/*/*) dir="${file%/*}" ;; # common case: absolute path
|
||||||
|
/*) dir="/" ;; # special case: name in root dir
|
||||||
|
*/*) dir="${file%/*}" ;; # common case: relative path with '/'
|
||||||
|
*) dir="." ;; # special case: name without '/'
|
||||||
|
esac
|
||||||
|
command printf "%s\n" "${dir}"
|
||||||
|
}
|
||||||
|
|
||||||
# Override the normal "echo" and "printf" commands, so that
|
# Override the normal "echo" and "printf" commands, so that
|
||||||
# partial lines printed by rc.d scripts appear immediately,
|
# partial lines printed by rc.d scripts appear immediately,
|
||||||
# instead of being buffered by rc(8)'s post-processor.
|
# instead of being buffered by rc(8)'s post-processor.
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
.\" $NetBSD: rc.subr.8,v 1.29 2011/08/11 22:52:46 apb Exp $
|
.\" $NetBSD: rc.subr.8,v 1.30 2012/12/17 18:17:27 apb Exp $
|
||||||
.\"
|
.\"
|
||||||
.\" Copyright (c) 2002-2011 The NetBSD Foundation, Inc.
|
.\" Copyright (c) 2002-2011 The NetBSD Foundation, Inc.
|
||||||
.\" All rights reserved.
|
.\" All rights reserved.
|
||||||
@ -40,6 +40,8 @@
|
|||||||
.It
|
.It
|
||||||
.Ic backup_file Ar action Ar file Ar current Ar backup
|
.Ic backup_file Ar action Ar file Ar current Ar backup
|
||||||
.It
|
.It
|
||||||
|
.Ic basename Ar file Op Ar suffix
|
||||||
|
.It
|
||||||
.Ic checkyesno Ar var
|
.Ic checkyesno Ar var
|
||||||
.It
|
.It
|
||||||
.Ic check_pidfile Ar pidfile Ar procname Op Ar interpreter
|
.Ic check_pidfile Ar pidfile Ar procname Op Ar interpreter
|
||||||
@ -48,6 +50,8 @@
|
|||||||
.It
|
.It
|
||||||
.Ic collapse_backslash_newline
|
.Ic collapse_backslash_newline
|
||||||
.It
|
.It
|
||||||
|
.Ic dirname Ar file
|
||||||
|
.It
|
||||||
.Ic err Ar exitval Ar message
|
.Ic err Ar exitval Ar message
|
||||||
.It
|
.It
|
||||||
.Ic load_rc_config Ar command
|
.Ic load_rc_config Ar command
|
||||||
@ -157,6 +161,12 @@ otherwise
|
|||||||
is moved to
|
is moved to
|
||||||
.Ar backup .
|
.Ar backup .
|
||||||
.El
|
.El
|
||||||
|
.Ic basename Ar file Op Ar suffix
|
||||||
|
Just like
|
||||||
|
.Xr basename 1 ,
|
||||||
|
except implemented using shell built-in commands, and usable before the
|
||||||
|
.Pa /usr/bin
|
||||||
|
direcory is available.
|
||||||
.It Ic checkyesno Ar var
|
.It Ic checkyesno Ar var
|
||||||
Return 0 if
|
Return 0 if
|
||||||
.Ar var
|
.Ar var
|
||||||
@ -214,6 +224,12 @@ is handled as per
|
|||||||
Copy input to output, collapsing
|
Copy input to output, collapsing
|
||||||
.Ao backslash Ac Ns Ao newline Ac
|
.Ao backslash Ac Ns Ao newline Ac
|
||||||
to nothing, but leaving other backslashes alone.
|
to nothing, but leaving other backslashes alone.
|
||||||
|
.Ic dirname Ar file
|
||||||
|
Just like
|
||||||
|
.Xr dirname 1 ,
|
||||||
|
except implemented using shell built-in commands, and usable before the
|
||||||
|
.Pa /usr/bin
|
||||||
|
direcory is available.
|
||||||
.It Ic err Ar exitval Ar message
|
.It Ic err Ar exitval Ar message
|
||||||
Display an error message to
|
Display an error message to
|
||||||
.Em stderr ,
|
.Em stderr ,
|
||||||
|
Loading…
Reference in New Issue
Block a user