summaryrefslogtreecommitdiff
path: root/examples/scripts.noah/string.bash
diff options
context:
space:
mode:
Diffstat (limited to 'examples/scripts.noah/string.bash')
-rw-r--r--examples/scripts.noah/string.bash226
1 files changed, 0 insertions, 226 deletions
diff --git a/examples/scripts.noah/string.bash b/examples/scripts.noah/string.bash
deleted file mode 100644
index d80ebe80..00000000
--- a/examples/scripts.noah/string.bash
+++ /dev/null
@@ -1,226 +0,0 @@
-# string.bash --- bash emulation of string(3) library routines
-# Author: Noah Friedman <friedman@prep.ai.mit.edu>
-# Created: 1992-07-01
-# Last modified: 1993-09-29
-# Public domain
-
-# Conversion to bash v2 syntax done by Chet Ramey
-
-# Commentary:
-# Code:
-
-#:docstring strcat:
-# Usage: strcat s1 s2
-#
-# Strcat appends the value of variable s2 to variable s1.
-#
-# Example:
-# a="foo"
-# b="bar"
-# strcat a b
-# echo $a
-# => foobar
-#
-#:end docstring:
-
-###;;;autoload
-function strcat ()
-{
- local s1_val s2_val
-
- s1_val=${!1} # indirect variable expansion
- s2_val=${!2}
- eval "$1"=\'"${s1_val}${s2_val}"\'
-}
-
-#:docstring strncat:
-# Usage: strncat s1 s2 $n
-#
-# Line strcat, but strncat appends a maximum of n characters from the value
-# of variable s2. It copies fewer if the value of variabl s2 is shorter
-# than n characters. Echoes result on stdout.
-#
-# Example:
-# a=foo
-# b=barbaz
-# strncat a b 3
-# echo $a
-# => foobar
-#
-#:end docstring:
-
-###;;;autoload
-function strncat ()
-{
- local s1="$1"
- local s2="$2"
- local -i n="$3"
- local s1_val s2_val
-
- s1_val=${!s1} # indirect variable expansion
- s2_val=${!s2}
-
- if [ ${#s2_val} -gt ${n} ]; then
- s2_val=${s2_val:0:$n} # substring extraction
- fi
-
- eval "$s1"=\'"${s1_val}${s2_val}"\'
-}
-
-#:docstring strcmp:
-# Usage: strcmp $s1 $s2
-#
-# Strcmp compares its arguments and returns an integer less than, equal to,
-# or greater than zero, depending on whether string s1 is lexicographically
-# less than, equal to, or greater than string s2.
-#:end docstring:
-
-###;;;autoload
-function strcmp ()
-{
- [ "$1" = "$2" ] && return 0
-
- [ "${1}" '<' "${2}" ] > /dev/null && return -1
-
- return 1
-}
-
-#:docstring strncmp:
-# Usage: strncmp $s1 $s2 $n
-#
-# Like strcmp, but makes the comparison by examining a maximum of n
-# characters (n less than or equal to zero yields equality).
-#:end docstring:
-
-###;;;autoload
-function strncmp ()
-{
- if [ -z "${3}" ] || [ "${3}" -le "0" ]; then
- return 0
- fi
-
- if [ ${3} -ge ${#1} ] && [ ${3} -ge ${#2} ]; then
- strcmp "$1" "$2"
- return $?
- else
- s1=${1:0:$3}
- s2=${2:0:$3}
- strcmp $s1 $s2
- return $?
- fi
-}
-
-#:docstring strlen:
-# Usage: strlen s
-#
-# Strlen returns the number of characters in string literal s.
-#:end docstring:
-
-###;;;autoload
-function strlen ()
-{
- eval echo "\${#${1}}"
-}
-
-#:docstring strspn:
-# Usage: strspn $s1 $s2
-#
-# Strspn returns the length of the maximum initial segment of string s1,
-# which consists entirely of characters from string s2.
-#:end docstring:
-
-###;;;autoload
-function strspn ()
-{
- # Unsetting IFS allows whitespace to be handled as normal chars.
- local IFS=
- local result="${1%%[!${2}]*}"
-
- echo ${#result}
-}
-
-#:docstring strcspn:
-# Usage: strcspn $s1 $s2
-#
-# Strcspn returns the length of the maximum initial segment of string s1,
-# which consists entirely of characters not from string s2.
-#:end docstring:
-
-###;;;autoload
-function strcspn ()
-{
- # Unsetting IFS allows whitspace to be handled as normal chars.
- local IFS=
- local result="${1%%[${2}]*}"
-
- echo ${#result}
-}
-
-#:docstring strstr:
-# Usage: strstr s1 s2
-#
-# Strstr echoes a substring starting at the first occurrence of string s2 in
-# string s1, or nothing if s2 does not occur in the string. If s2 points to
-# a string of zero length, strstr echoes s1.
-#:end docstring:
-
-###;;;autoload
-function strstr ()
-{
- # if s2 points to a string of zero length, strstr echoes s1
- [ ${#2} -eq 0 ] && { echo "$1" ; return 0; }
-
- # strstr echoes nothing if s2 does not occur in s1
- case "$1" in
- *$2*) ;;
- *) return 1;;
- esac
-
- # use the pattern matching code to strip off the match and everything
- # following it
- first=${1/$2*/}
-
- # then strip off the first unmatched portion of the string
- echo "${1##$first}"
-}
-
-#:docstring strtok:
-# Usage: strtok s1 s2
-#
-# Strtok considers the string s1 to consist of a sequence of zero or more
-# text tokens separated by spans of one or more characters from the
-# separator string s2. The first call (with a non-empty string s1
-# specified) echoes a string consisting of the first token on stdout. The
-# function keeps track of its position in the string s1 between separate
-# calls, so that subsequent calls made with the first argument an empty
-# string will work through the string immediately following that token. In
-# this way subsequent calls will work through the string s1 until no tokens
-# remain. The separator string s2 may be different from call to call.
-# When no token remains in s1, an empty value is echoed on stdout.
-#:end docstring:
-
-###;;;autoload
-function strtok ()
-{
- :
-}
-
-#:docstring strtrunc:
-# Usage: strtrunc $n $s1 {$s2} {$...}
-#
-# Used by many functions like strncmp to truncate arguments for comparison.
-# Echoes the first n characters of each string s1 s2 ... on stdout.
-#:end docstring:
-
-###;;;autoload
-function strtrunc ()
-{
- n=$1 ; shift
- for z; do
- echo "${z:0:$n}"
- done
-}
-
-provide string
-
-# string.bash ends here