Skip to Content.
Sympa Menu

sm-commit - [SM-Commit] GIT changes to master sorcery by Jaka Kranjc (2a5c87027f7a7b2c5640ae9803b7f3980b3d3813)

sm-commit AT lists.ibiblio.org

Subject: Source Mage code commit list

List archive

Chronological Thread  
  • From: Jaka Kranjc <scm AT sourcemage.org>
  • To: sm-commit AT lists.ibiblio.org
  • Subject: [SM-Commit] GIT changes to master sorcery by Jaka Kranjc (2a5c87027f7a7b2c5640ae9803b7f3980b3d3813)
  • Date: Tue, 29 Apr 2008 15:38:30 -0500

GIT changes to master sorcery by Jaka Kranjc <lynxlynxlynx AT sourcemage.org>:

ChangeLog | 3 +++
var/lib/sorcery/modules/libmisc | 36 ++++++++++++++++++++++++------------
2 files changed, 27 insertions(+), 12 deletions(-)

New commits:
commit 2a5c87027f7a7b2c5640ae9803b7f3980b3d3813
Author: Jaka Kranjc <lynxlynxlynx AT sourcemage.org>
Commit: Jaka Kranjc <lynxlynxlynx AT sourcemage.org>

libmisc: made smgl_dirname pass the last failing unit test

not quite happy with it, I'll retry making the first implementation
completely conformant

diff --git a/ChangeLog b/ChangeLog
index 518e9c6..708ae2d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,6 @@
+2008-04-29 Jaka Kranjc <lynxlynxlynx AT sourcemage.org>
+ * libmisc: made smgl_dirname pass the last failing unit test
+
2008-04-28 Jaka Kranjc <lynxlynxlynx AT sourcemage.org>
* libresurrect: fixed ordering of the version cache addition
* libgpg: fixed case in an error message
diff --git a/var/lib/sorcery/modules/libmisc b/var/lib/sorcery/modules/libmisc
index ca91ac9..36d0b9b 100755
--- a/var/lib/sorcery/modules/libmisc
+++ b/var/lib/sorcery/modules/libmisc
@@ -1445,25 +1445,37 @@ function awkuniq() {
## Dirname written in bash, optionally uses an upvar (making it forkless).
#---------------------------------------------------------------------
function smgl_dirname() {
- local __dir=() __dirname i
- explode "$1" / __dir
+ local __dir=() __dirname i __last_dir

- [[ ${1:0:1} != / ]] && __dirname="."
+ # Pull of any trailing /'s, there could be more than/one///
+ __dirname=$1
+ while [[ $__dirname != $__last_dir ]]; do
+ __last_dir=$__dirname
+ __dirname=${__dirname%/}
+ done
+ if [[ -z $__dirname ]]; then
+ __dirname=/
+ fi

- for (( i=0; i < ${#__dir[@]}; i++ )); do
- if [[ -n ${__dir[$i]} ]]; then
- __dirname="$__dirname/${__dir[$i]}"
- fi
+ explode "$__dirname" / __dir
+ [[ ${__dirname:0:1} == / ]] && unset __dirname || __dirname="."
+ for (( i=0; i < ${#__dir[@]}-1; i++ )); do
+ __dirname="$__dirname/${__dir[$i]}"
+ done
+
+ # Pull of any trailing /'s
+ while [[ $__dirname != $__last_dir ]]; do
+ __last_dir=$__dirname
+ __dirname=${__dirname%/}
done
if [[ -z $__dirname ]]; then
__dirname=/
else
- __dirname="${__dirname%/*}"
- if [[ -z $__dirname ]]; then
- __dirname=/
- else
+ if [[ ${__dirname:0:2} == // ]]; then
+ __dirname="${__dirname:1}"
+ elif [[ ${__dirname:0:2} == ./ ]]; then
# usually not strictly necessary, but let's be conformant with dirname
- [[ ${__dirname:0:2} == ./ ]] && __dirname="${__dirname:2}"
+ __dirname="${__dirname:2}"
fi
fi




  • [SM-Commit] GIT changes to master sorcery by Jaka Kranjc (2a5c87027f7a7b2c5640ae9803b7f3980b3d3813), Jaka Kranjc, 04/29/2008

Archive powered by MHonArc 2.6.24.

Top of Page