Mt Xia: Technical Consulting Group

Business Continuity / Disaster Recovery / High Availability
Data Center Automation / Audit Response / Audit Compliance

-
Current Location
-

css
  Downloads
    Scripts
      Korn
        K93_Unix

-

digg Digg this page
del.icio.us Post to del.icio.us
Slashdot Slashdot it!


Business Web Site Hosting
$3.99 / month includes Tools,
Shopping Cart, Site Builder

www.siteox.com

FREE Domain Registration
included with Web Site Hosting
Tools, Social Networking, Blog

www.siteox.com



#!/usr/bin/ksh93
################################################################
#### Program: expand_k93
#### 
#### Description: Emulation of the Unix "expand" command
#### 
#### Author: Dana French (dfrench@mtxia.com)
####         Copyright 2004
#### 
#### Date: 07/22/2004
#### 
################################################################
function expand_k93 {
  typeset TRUE="0"
  typeset FALSE="1"
  typeset INITIAL="${FALSE}"
  typeset VERBOSE="${FALSE}"
  typeset VERYVERB="${FALSE}"
  typeset FNAME

  while getopts ":ivV" OPTION
  do
    case "${OPTION}" in
        'i') INITIAL="${TRUE}";;
        'v') VERBOSE="${TRUE}";;
        'V') VERYVERB="${TRUE}";;
        '?') print "Syntax: expand_k93 [-i] [file ...]" && exit 1 ;;
    esac
  done
 
  shift $(( ${OPTIND} - 1 ))

  typeset STDIN="${1:+${FALSE}}"
  STDIN="${STDIN:-${TRUE}}"

#### Read in the data either from STDIN or one or more files
  if (( STDIN == TRUE ))
  then
      tabconvert_k93 "${INITIAL}"
  else
      for FNAME in "${@}"
      do
          exec 0<"${FNAME}"
            tabconvert_k93 "${INITIAL}"
          exec 0<&-
      done
  fi

  return 0
}
################################################################
function tabconvert_k93 {
  typeset INITIAL="${1}"
  typeset TRUE="0"
  typeset FALSE="1"
  typeset NONWHITE="${FALSE}"
  typeset PREVTAB="${FALSE}"
  typeset SPCS="        "
  typeset IDX="0"
  typeset CURCOL="0"
  typeset LINE
  typeset END
  typeset MODU

  while IFS="" read -r -- LINE
  do

    END="${#LINE}"
    NONWHITE="${FALSE}"
    PREVTAB="${FALSE}"
    CURCOL=0

    for (( IDX=0; IDX<=(END-1); ++IDX ))
    do

      if [[ "_${LINE:IDX:1}" = _$'\t' ]]
      then

        if (( INITIAL == TRUE )) && (( NONWHITE == TRUE ))
        then
          print -r -n -- "${LINE:IDX:1}"
          (( CURCOL++ ))
        else
          (( FILL = 8 - ( CURCOL % 8 ) ))
          (( PREVTAB == TRUE)) && FILL="8"
          print -r -n -- "${SPCS:0:FILL}"
          (( FILL == 8 )) && PREVTAB="${TRUE}"
          (( CURCOL = CURCOL + FILL ))
        fi

      else

        print -r -n -- "${LINE:IDX:1}"
        NONWHITE="${TRUE}"
        PREVTAB="${FALSE}"
        (( CURCOL++ ))

      fi

    done    # for loop

    print

  done    # while loop
}
################################################################

expand_k93 "${@}"

-
expand_k93
-
 


FREE Domain Registration
included with Web Site Hosting
Tools, Social Networking, Blog

www.siteox.com

Business Web Site Hosting
$3.99 / month includes Tools,
Shopping Cart, Site Builder

www.siteox.com