Author: Sakthivel Kathirvel
Created: Apr 2006
Last Updated: Jan 2015
[grep]
grep -rain
grep -Pain
grep -inverse
grep -PairHana
cat -EAT
ls -god
ls -dog */ [dir only]
ls -A .* | grep '^\.' [ list only the hidden files]
ls -got ;
ls -gothic
ls -halt
less -JIN
less -JINSR
zip -rum
unzip -Call
unzip -Cap
find -follow -type -name -maxdepth [ "-follow" the "-type" by "-name" for "-maxdepth" ]
tree -t | grep *log* | less -JIS
top -bd 5 -n 9419
grep -Pvi samplesize\|apache\|log4\|factory\|debug logs.1 | less -JIS
grep no file path ; only file names.
grep -HanaPair object . --include=*.java | awk 'sub(/^.*\//, "")' | less -JIS
grep partial file path names ; only file names.
$ grep -HanaPair object . --include=*.java | awk 'sub(/^.*\/src\/org\/apache\/log4j\/builder\//, "")' | less -JIS
[solaris]
HISTTIMEFORMAT="%h-%d-%y - %H:%M:%S "
shopt -s histappend
PS1="\033[1;34m\]\u@\033[1;0m\]\h:\033[1;46m\$(pwd 2)\033[0m\]\n$ "
scd(){ pushd . > /dev/null; builtin cd "$@";}
alias cd="scd"
alias dt="/usr/openpkg/bin/find ./ -maxdepth 2 -type d -print | sed -e 's;[^/]*/;|____;g;s;____|; |;g'"
alias l="less -JIS"
alias ls="ls -haltF"
[linux]
HISTTIMEFORMAT="%h-%d-%y - %H:%M:%S "
shopt -s histappend
PS1="\033[1;34m\]\u@\033[1;0m\]\h:\033[1;46m\$(pwd 2)\033[0m\]\n$ "
scd(){ pushd . > /dev/null; builtin cd "$@";}
alias cd="scd"
alias dt="find ./ -maxdepth 2 -type d -print | sed -e 's;[^/]*/;|____;g;s;____|; |;g'"
alias l="less -JIS"
alias ls="ls -haltF"
alias li="less -JIS" ; alias l="ls -haltF" ; alias hi='history | li' ; alias di='dirs -v' ; alias pu='pushd `pwd`';
function _dt() { find ./ -maxdepth "$1" -type d -print | sed -e 's;[^/]*/;|____;g;s;____|; |;g' ;}; alias dt=_dt
function scd(){ pushd . > /dev/null; builtin cd "$@";} ; alias cd="scd"
function _g() { grep -Pair "$1"; } ; alias g=_g
function _fi() { find -iname "$1"; }; alias fi=_fi
[cygwin]
HISTTIMEFORMAT="%h-%d-%y - %H:%M:%S "
shopt -s histappendec
PS1="\033[1;34m\]\u@\033[1;0m\]\h:\033[1;46m\$(pwd 2)\033[0m\]\n$ "
scd(){ pushd . > /dev/null; builtin cd "$@";}
alias cd="scd"
alias dt="find ./ -maxdepth 2 -type d -print | sed -e 's;[^/]*/;|____;g;s;____|; |;g'"
alias l="less -JIS"
alias ls="ls -haltF"
alias dhs='echo `date` | tee -a c:/history-`date +%F`.txt ; dirs -v | tee -a c:/history-`date +%F`.txt'
[bashrc]
$ less -JIS ~/.bashrc
# .bashrc
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
# User specific aliases and functions
alias pu='pushd .'
alias di='dirs -v | tee ~/dirs.txt'
alias li='less -JIS'
alias ls='ls -halt'
HISTTIMEFORMAT="%h-%d-%y - %H:%M:%S "
shopt -s histappend
PS1="\033[1;34m\]\u@\033[1;0m\]\h:\033[1;46m\$(pwd 2)\033[0m\]\n$ "
#alias cd="pushd . > /dev/null; cd $1"
scd(){
pushd . > /dev/null;
builtin cd "$@";
}
alias cd="scd"
#more bash shell stuff http://www.hypexr.org/bash_tutorial.php#emacs
[multi file renames]
for f in *txt ; do mv $f `basename $f txt`txt.backup; done
[p4v] p4commands
p4 clients -u
p4 clients -e * [ nameFilter flag limits output to clients whose name matches the nameFilter pattern e.g. -e 'svr-dev-rel*']
p4 clients -u | grep -Pai dcs | cut -d' ' -f 2 | xargs -t -n 1 p4 client -o | grep -Pai ^Access\|^Client
[solaris]
p4 clients -u | cut -d' ' -f 2 | xargs -t -n 1 p4 client -o | /usr/openpkg/bin/grep -Pai ^Host
[linux]
p4 clients -u | cut -d' ' -f 2 | xargs -t -n 1 p4 client -o | grep -Pai ^Host
p4 describe -s 204945
[where core files ]
/app/corefiles/%h.%e.%p
[less]
less [example search pattern = /58=.{10} ; meaning= pattern starting with 58=and any 10 chars that follow. ]
[date]
date +%Y-%m-%d-%H-%M-%S
`date +%F-%I-%M-%S`.txt
echo `hostname`@`date +%m-%d-%Y-%H-%M`
if (profiler) profiler->iTraceStamp("OUT320");
`date +%F-%I-%M-%S`.txt
[.bash_history]
shopt -s histappend ; history -a
# User specific aliases and functions
alias pu='pushd .'
alias di='dirs -v | tee ~/dirs.txt'
alias li='less -JIS'
alias ls='ls -halt'
pushd ~
alias cd="pushd . > /dev/null; cd $1"
[solaris]
HISTTIMEFORMAT="%h-%d-%y - %H:%M:%S "
shopt -s histappend
PS1="\033[1;34m\]\u@\033[1;0m\]\h:\033[1;46m\$(pwd 2)\033[0m\]\n$ "
scd(){ pushd . > /dev/null; builtin cd "$@";}
alias cd="scd"
alias dt="/usr/openpkg/bin/find ./ -maxdepth 2 -type d -print | sed -e 's;[^/]*/;|____;g;s;____|; |;g'"
alias l="less -JIS"
alias ls="ls -haltF"
[linux]
HISTTIMEFORMAT="%h-%d-%y - %H:%M:%S "
shopt -s histappend
PS1="\033[1;34m\]\u@\033[1;0m\]\h:\033[1;46m\$(pwd 2)\033[0m\]\n$ "
scd(){ pushd . > /dev/null; builtin cd "$@";}
alias cd="scd"
alias dt="find ./ -maxdepth 2 -type d -print | sed -e 's;[^/]*/;|____;g;s;____|; |;g'"
alias l="less -JIS"
alias ls="ls -haltF"
[xserver]
/usr/X11R6/bin/startxwin.sh
XWin -multiwindow -clipboard -silent-dup-error -dpi 100 2>&1 1>/dev/null & ; DISPLAY=:0.0 ; export DISPLAY
XWin -clipboard -silent-dup-error -dpi 100 -scrollbars -multimonitors 2>&1 1>/dev/null &
XWin -clipboard -silent-dup-error -dpi 100 -scrollbars -multimonitors 2>&1 1>/dev/null &
xhost +
[win 7 ; cygwin ; ]
528 XWin -multiwindow -clipboard -silent-dup-error -dpi 100 2>&1 1>/dev/null &
529 DISPLAY=:0.0 ; export DISPLAY
530 xhost +
[unix process by tree view]
[solaris]
ps -o pid args -H -U 1616
ps -TF -p
ptree -a
/usr/ucb/ps with args ww [ very wide format - show the complete command]
/usr/ucb/ps -ejH
[show threads of process - linux]
[linux]
pstree -hcpaAlG | grep -rainPA10 java.* [ shows process tree]
ps axjf [ shows nice process tree ]
pstree -hcpaAl | grep -rainPA10 gdb/|java.*
pstree -hcpaAl | grep -rainPA10 p4v.*
ps -eLf | grep `id -u` | grep -rain java
ps -wwf [ very wide format - show the complete command]
ps ux
[unix machine info]
[linux]
cat /proc/cpuinfo
cat /proc/meminfo
dmesg
lspci
The newer version of cpuinfo as reflected in this post seems to have the necessary components to differentiate between multi-core cpus.
cpu cores physical id core id.
Physical ID assigns a Unique ID to each CPU.
CPU cores reflects the number of Cores making up the CPU
core Id: identifies the core represented.
cat /proc/cpuinfo | grep physical.*id
cat /proc/cpuinfo | grep core.*id
[solaris]
[netstat]
netstat -pan [ show [aA]ll [n]umeric ports w/ [p]rocess id]
[netcat]
nc -vv -l -p 6080 < "C:\manifest.txtnetcat.bin"
[xterm]
xterm wrap turnon turnoff
To turn auto-wrap off:
to OFF=>
echo -e "/033[?7l"
to turn it on:
to ON=>echo -e "/033[?7h"
xterm start
export DISPLAY=10.212.161.80:0.0; xterm -aw -fg black -bg white -fn -adobe-courier-bold-r-normal--14-140-75-75-m-90-iso8859-1 -sl 3000 -title "`echo $HOSTNAME` DEV. BUILD.SERVER - " -e /bin/bash &
[cygwin window title ]
printf \\033]0\;\%s\\007 "cygwin-left"
printf \\033]0\;\%s\\007 "cygwin-right"
[diff/sdiff ]
sdiff -Bibas -w 100 old.file.txt new.file.txt
diff -Bad -wib -Easy --suppress-common-lines old.file.txt new.file.txt | less -JIS
[win-emacs]
~/xEmacs/XEmacs-21.4.21/i586-pc-win32/xemacs.exe
~/GNu-emacs-21.3/bin/runemacs.exe
C:/Documents and Settings/skathirvel/Application Data/.emacs
"C:\Program Files (x86)\Xming\Xming.exe" :0 -clipboard -multiwindow -dpi 108 -fp c:/windows/fonts
[unix-emacs]
emacs -fn -adobe-courier-medium-r-normal--18-180-75-75-m-110-iso8859-1 &
xlsfonts.exe *adobe-courier-medium-r-normal* | less -JIN
;; disable color crap
(setq-default global-font-lock-mode nil)
set cscope on the PATH
export DISPLAY=10.212.161.80:0.0;export PATH=/app/skathirvel:$PATH;emacs -fn -adobe-courier-medium-r-normal--18-180-75-75-m-110-iso8859-1 &
[make]
make -f ./makefile.simple install | awk '/g/+/+|Installing|cp/{ print $0 }'
[cscope]
>rm -fr cscope.files cscope.out
>find `pwd` /( -iname '*.cpp' -o -iname '*.cc' -o -iname '*.c' -o -iname '*.h' -o -iname '*.hh' -o -iname '*.hpp' /) -follow -print > cscope.files
>/cygdrive/c/users/skathirvel/cscope.exe -b -q -k
[in emacs] M-x cscope-set-initial-directory
[hotkey combinations]
[cscope]
C-c s s Find symbol.
;; C-c s d Find global definition.
;; C-c s g Find global definition (alternate binding).
;; C-c s G Find global definition without prompting.
;; C-c s c Find functions calling a function.
;; C-c s C Find called functions (list functions called
;; from a function).
;; C-c s t Find text string.
;; C-c s e Find egrep pattern.
;; C-c s f Find a file.
;; C-c s i Find files #including a file.
find \( -iname *.a -o -iname *.o \) | xargs -t -n 1 rm -fr ;
find -type f | xargs md5sum > md5sum.txt.`date +%Y%m-%d-%H-%M-%S`
[nm] w/ obj(.o) file]
nm -gl -fposix --demangle some_object_file.o | gawk '{ gsub("/some/directory/path/toafile" ""); print } ' | less -JIN
[nm w/ archive (.a) file]
nm -gopPl -fposix --demangle some_static_lib.a | grep -Pair | less -JIS
ar tv ./some/directory/path/toafile/some_static_lib.a| less -JIS
[g++]
g++ -print-search-dirs | tr ':' '\n'
gcc -E file.c
or
g++ -E file.cpp
will do this for you. The -E switch forces the compiler to stop after the preprocessing phase spitting all it’s got at the moment to standard output.
g++ -E $1 |\
grep '^# [0-9]* "[^"]*"' |\
grep -o '"[^"]*"' |\
grep -o '[^"<>]*' |\
grep -v '^/usr/' |\
sort |\
uniq
[find]
find . -maxdepth 2 -type d -follow
find . -maxdepth 4 -type f -follow -iname *.jar
find -iname * -printf `pwd`/%h/%f//n
find /( -type f -iname /) -printf `pwd`/%h/%f//n | xargs ls -tog | less -JI
find /( -type f -iname *tnt*.in*ing /) -printf `pwd`/%h/%f//n | xargs ls -tog | less -JI
/usr/openpkg/bin/find /( -type f -iname *apache*log4j*in*ing.gz /) -printf `pwd`/%h/%f//n | xargs ls -tog | less -JI
/usr/openpkg/bin/find /( -type f -iname *apache*apacheout*ing.gz /) -printf `pwd`/%h/%f//n | xargs ls -tog | less -JI
find -perm 644 -iname *.cc -type f -printf `pwd`/%h/%f//n
find `pwd` -size +40k -exec wc -l "{}" /; | sort -g -r | awk '{ print "| " $2 " | " $1 " |" }'
/usr/openpkg/bin/find -iname *apache*.log -follow | xargs ls -goth
find /app/skathirvel/2006 -iname *.yml -type f -exec ls -halt "{}" +; < find and sort by time >
find /app/skathirvel/2006 -iname *.yml -type f -exec ls -rhalt "{}" +; < find and reverse sort by time >
find gateway -type f | egrep '\.(c|cc|cpp|h|hh|H|C)$' | grep log4j
find gateway -type f | egrep '\.(c|cc|cpp|h|hh|H|C)$' | grep log4j
[zgrep]
/usr/openpkg/bin/zgrep -ain
grep -Pain 35=d /some/directory/path/toafile/app.log | tr '/01' '|' | less -JI
sed -n '1661928 1662928p' /some/directory/path/toafile/app.log
p4 describe -s 2516943 | sed 's/\(.*\)\(google.com\)\(...\)\(.*\)/\2\3/'
[tree]
ls -goth | grep ^- [ file only] sorted by time
ls -godh */ | grep ^d [dir only]
ls -goSh [ sorted by size]
ls -goth | grep ^- [ file only] sorted by time
[reverse]
ls -gothr | grep ^- [ file only] sorted by time
ls -godhr */ | grep ^d [dir only]
ls -goShr [ sorted by size]
ls -R | grep ":$" | sed -e 's/:$//' -e 's/[^-][^//]*///--/g' -e 's/^/ /' -e 's/-/|/' [ tree display]
find /skathirvel -type d -print | sed -e 's;[^/]*/;|____;g;s;____|; |;g' [ tree display ]
[windows search]
from:sakthivel to:foo date:>12/01/08 date:<12/30/2008 msft
from:sakthivel to:foo date:>01/01/09 date:<02/01/2009 msft
date:>01/01/09 date:<02/01/2009 subject:(gateway rm) folder:inbox
from:foo date:11/2009..12/2009
from:foo date:11/2009..12/2009
from:skathirvel date:11/2009..12/2009
ext:doc MSFT 128
ext:pdf msft 128
[eclipse]
[java] C:\eclipse-standard-kepler-R-win32-installed-sep17-2013\eclipse\eclipse.exe -vm "C:\Program Files (x86)\Java\jre7\bin\java.exe" -data C:/SHAK_JAVA_ECLIPSE_Solution-Echo &
[java] C:\eclipse-jee-kepler-SR2-win32-x86_64\eclipse\eclipse.exe -vm c:\Java\jdk1.7.0_67\bin\java.exe -data C:/SHAK_JAVA_ECLIPSE_Solution-Echo &
[deprecated] C:/eclipse-3.7-java-indigo-win32-installed-jul-12-2011/eclipse/eclipse.exe -vm C:/jdk1.6.0_26/bin/java.exe -data C:/SHAK_JAVA_ECLIPSE_Solution-Echo &
[deprecated] c:/eclipse-java-helios-SR2-win32-installed-May312011/eclipse/eclipse.exe -vm C:/jdk1.6.0_14/bin/java.exe -data C:/SHAK_JAVA_ECLIPSE_Solution-Echo &
[deprecated] C:/eclipse-SDK-3.5.2-win32-mar-2010/eclipse/eclipse.exe -vm C:/jdk1.6.0_14/bin/java.exe -data C:/SHAK_JAVA_ECLIPSE_Solution-Echo &
[deprecated] C:/eclipse-java-galileo-SR1-win32-2009-dec/eclipse/eclipse.exe -vm C:/jdk1.6.0_14/bin/java.exe -data C:/SHAK_JAVA_ECLIPSE_Solution-Echo &
[deprecated]C:/eclipse-jee-ganymede-SR1-win32/eclipse/eclipse.exe -vm c:/jdk1.5.0_15/bin/java.exe -data C:/SHAK_JAVA_ECLIPSE_Solution-Echo &
[cpp]
C:\eclipse-cpp-kepler-R-win32--installed-sep17-2013\eclipse\eclipse.exe -vm "C:\Program Files (x86)\Java\jre7\bin\java.exe" -data C:/SHAK_CPP_ECLIPSE_Solution-Echo &
[deprecated] C:/eclipse-cpp-kepler-R-win32-installed-jul-08-2013/eclipse/eclipse.exe -vm C:/jdk1.7.0_25/bin/java.exe -data C:/SHAK_CPP_ECLIPSE_Solution-Echo &
[deprecated ] C:/eclipse-3.7-cpp-indigo-incubation-win32-installed-jul-12-2011/eclipse/eclipse.exe -vm C:/jdk1.6.0_26/bin/java.exe -data C:/SHAK_CPP_ECLIPSE_Solution-Echo &
[deprecated ] C:/eclipse-cpp-helios-SR2-win32-installed-May312011/eclipse/eclipse.exe -vm C:/jdk1.6.0_14/bin/java.exe -data C:/SHAK_CPP_ECLIPSE_Solution-Echo &
[deprecated ] C:/eclipse-cpp-galileo-SR1-win32-2009-dec/eclipse/eclipse.exe -vm C:/jdk1.6.0_14/bin/java.exe -data C:/SHAK_CPP_ECLIPSE_Solution-Echo &
[deprecated] C:/eclipse-cpp-galileo-win32.zip.dir/eclipse/eclipse.exe -vm C:/jdk1.6.0_14/bin/java.exe -data C:/SHAK_CPP_ECLIPSE_Solution-Echo &
[zip_unzip]
zip -mu -rv9 2009.mar.10.zip * -i *20090310* [ for persist file archive]
zip -mu -rv9 jan.29.09.zip * -i *01*29* [ gateway log files; create a zip file and delete files in the dir]
zip -d oct.10.17.08.zip *10*21* [ delete files inside the zip file]
unzip -Cal oct.10.17.08.zip /*10/*17/* [ list files inside a zip file]
unzip -Cal oct.10.17.08.zip /*10/*17/*.err [ list files inside a zip file]
unzip -Cap oct.10.17.08.zip runtime.err
unzip -qq -d apache-log4j "c:\lib\runtime.jar" [ extract .jar to a directory very quietly]
[tar]
tar cvf ~/apache-log4j.tar /app/ --exclude "/var/log" --exclude "/samples"
[grep]
grep -rain 201=1.*202=30.*541=30.*occ=tgt app.log
grep -rainPA1 class.*Interaface * --include=*.{c cc cpp hh h}
grep -rainPC2 shakdebug * --include=*.{c cc cpp h hh} | less -JINS
$ pstree -hcpaAl | grep -rainPA10 /(gdb/|java.*/)
173: | | |-grep 13345 -rainPA10 (gdb|java.*)
174- | | `-pstree 13344 -hcpaAl
[awk]
$ awk -F'/t' '{ print $29 }' sample.txt [ parse the tab delimited file and print the fields]
[du]
$ du -m --max-depth=1 ~/ | sort -n -k 1
$ du -h --max-depth=1 `pwd`
[locate]
$ /cygdrive/c/2006/locate32_x64-3.1.11.7100/locate configdb | grep apache | grep java
/cygdrive/c/2006/locate32_x64-3.1.11.7100/locate -lDa30 history | li
skathirvel@achdv-skathirev /cygdrive/e/2006
$ updatedb --output=2006.locate.db --localpaths='/cygdrive/e/2006'
skathirvel@achdv-skathirev /cygdrive/e/2007
$ updatedb --output=2007.locate.db --localpaths='e:/2007/'
updatedb --output=/cygdrive/c/2007/2007.locate.db --localpaths='/cygdrive/c/2007 &
$ locate -i --database=/cygdrive/e/2007/2007.locate.db */.pst
Unix shell commands I use frequently and accumulated over the years ...
Labels:
awk,
eclipse,
perforce,
sed,
shell-scripting,
unix-commands
Unix self extracting shell script stub
#!/bin/sh This Bourne shell script stub program that can be used to install any Java based app in unix-like platforms. When built with a installer builder tool, this bourne shell script becomes an executable self extracting file with application installer (an executable JAR file) that contains the application payload files and platform specific JRE "embedded" to the 'tail' of the script. At runtime, this script performs, among serveral functions, 1. checks if valid JRE is installed on the host box ( needed to run app installer), 2. If not it extracts the JRE that is 'embedded' inside the self extracting shell script and installs it first, 3. resolves the right JRE install path, 4. verify the just installed JRE for integrity 5. perform necessary disk space checks, 6. extract the "embedded" application binary installer JAR file into /tmp directory, 7. Launches the Java based product installer when runs installs the app payload (files and other artifacts). Author : Sakthivel Kathirvel Last updated: Apr 24 2006 initialize() { set +o notify trap handleAbort 2 FIXED_BLOCK_SIZE=1024 DISK_BLOCK_SIZE=512 POSIXLY_CORRECT=1; export POSIXLY_CORRECT pbc=1 # the following file TYPE[S] are defined by builder. Any change to the TYPE number should confirm to the type number defined here. VERIFY_CLASS_TYPE=5 APP_ARCHIVE_TYPE=6 JVM_FILE_TYPE=1 EMBED_JARS_TYPE=3 BIN_FILE_TYPE=7 JVM_INSTALLER_TYPE=4 sv=2 #sv - jvm search&verify result; successful search&verify sets to zero; initializing to non-zero resolve=2 #resolution of matched jvm file result that is required for launching the java app. successful resolution sets to zero; initializing to non-zero verify=2 # verification of a JVM result. successful verification of searched JVM sets to zero; initializing to non-zero install_jvm=2 # result of bundled JVM installation. successful installation sets to zero; initializing to non-zero resolvedJVMVerified=2 #app launcher verifies the embedded resolved JVM file and set the value to 0, if verification is successful. installer launcher does NOT use this. initializing to non-zero. GNU_JVM_TEMP=0 #set to 1 upon the successful installation of bundled JVM; initializing to zero. uimode=2 # the default ui mode of the app is gui which corresponds uimode to non-zero. a console mode sets to zero. [ -z "$disk_space_check_off" ] && disk_space_check_off=0 # disk_space_check_off is not defined, switching it on by default. [ -z "$`date +%F`_HOME" ] && `date +%F`_HOME="$HOME" if [ ! -d "$`date +%F`_HOME" ] ; then mkdir -p "$`date +%F`_HOME" >/dev/null 2>&1 if [ $? -ne 0 ] ; then cls tempLocationErrMesg "$`date +%F`_HOME" cleanupandexit 1 fi fi rand=$$`date '+%j%H%M%S'` rand=`echo "$rand" | sed 's/[a-zA-Z]//g;s/%//g'` if [ `isNumeric $rand` -ne 0 ] ; then rand=$$ fi `date +%F`="$`date +%F`_HOME/`date +%F`$rand" mkdir $`date +%F` >/dev/null 2>&1 if [ $? -ne 0 ] ; then cls tempLocationErrMesg "$`date +%F`" cleanupandexit 1 fi awk 'END{ print "Test file created by installer" >> a ;}' a="$`date +%F`/writecheck" /dev/null if [ -f "$`date +%F`/writecheck" ] ; then rm -f "$`date +%F`/writecheck" else cls tempLocationErrMesg "$`date +%F`" cleanupandexit 1 fi [ -n "$VeryVerbose" ] && dbg "Temp directory used by shell script launcher = $`date +%F`" if [ -n "$LOG" ] ; then [ ! -d `dirname $LOG` ] && LOG=`pwd`/`basename "$LOG"` awk 'END{ s=sprintf("Log file created by Platform installer @%s",b); print s >> a ;}' a="$LOG" b="`date`"/dev/null if [ ! -f "$LOG" ] ; then LOG=/dev/null fi else LOG=/dev/null fi [ `awk 'END{ if(index(a,"-silent") > 0) {print 0; } else { print 2;} }' a="$app_args" /dev/null` -eq 0 ] && SILENT=true [ `awk 'END{ if(index(a,"-console") > 0) {print 0; } else { print 2;} }' a="$app_args" /dev/null` -eq 0 ] && uimode=0 [ -z "$SILENT" ] && setpbmesg [ -z "$pbmesg" ] && pbmesg="Initializing" cls banner } programAborted() { cat << HASTOP Program Aborted. Cleaning up........ HASTOP } handleAbort() { DBG=0 cleanupandexit 1 abort } noJVMFound() { cat << noJVMFoundSTOP This application requires a Java Run Time Environment (JRE) to run. Searching for one on your computer was not successful. Please use the command line switch -javahome to specify a valid JRE. For more help use the option -help. noJVMFoundSTOP } dsCheckFailed() { cat << dsCheckFailedSTOP The directory $`date +%F` does not contain enough space to extract temporary files. Please specify a temporary directory using the -tempdir option. Use the -help option for more information. dsCheckFailedSTOP } cleanupandexit() { pbl if [ \( "$DBG" -ne 1 -a -d "$`date +%F`" \) ] ; then rm -fr "$`date +%F`" fi [ -n "$2" ] && { cls case "$2" in abort) programAborted;; nojvm) noJVMFound;; nospace) dsCheckFailed;; esac } exit $1 } dbg() { if [ "$DBG" -eq 1 ] ; then if [ -n "$LOG" ] ; then echo "$1" >> "$LOG" fi fi } pbl() { [ -z "$SILENT" ] && echo } Timer() { sleep 5 foo=`kill -9 $1 > /dev/null 2>&1` } convert() { echo "ibase=16; $1" | bc } findFullPath() { if [ -x "./$0" ] ; then INSTALLER_PATH="`pwd`/$0" elif [ -x "$0" ] ; then INSTALLER_PATH="$0" fi dbg "INSTALLER_PATH="$INSTALLER_PATH"" } banner() { [ -z "$SILENT" ] && { cat << BSTOP $pbmesg........ BSTOP } } pbclr() { [ -z "$SILENT" ] && { awk ' END { printf("%c",13); printf("%s"," "); i=length(pbmesg); for (k=1 ; k <= i; k++ ) printf("%c",32); }' pbmesg="$pbmesg" /dev/null` case ${num} in "") echo 0;; *) echo 1;; esac else echo 1 fi } extractAll() { findFullPath [ -z "$`date +%F`_HOME" ] && `date +%F`_HOME=`pwd` SILENT=true initialize OFFSET=0 FIXED_BLOCK_SIZE=1024 if [ ! -x "$INSTALLER_PATH" ] ; then dbg "Can't locate the installer archive. Extraction failed." cleanupandexit 100 fi I=0 while [ $I -lt $FILEINDEXCOUNT ] ; do II=`awk 'END{ s=sprintf("$FILEINDEX%s", I); print s }' I=$I /dev/null` eval II=$II dbg "$II" SIZE=`awk 'END{ split(II,FIELDS, ":"); print FIELDS[3] }' II=$II /dev/null` OFFSET=`awk 'END{ split(II,FIELDS, ":"); print FIELDS[4] }' II=$II /dev/null` NAME=`awk 'END{ split(II,FIELDS, ":"); print FIELDS[5] }' II=$II /dev/null` SIZE=`convert $SIZE` OFFSET=`convert $OFFSET` NAME="$`date +%F`/$NAME" dbg "NAME=$NAME SIZE=$SIZE OFFSET=$OFFSET" checkDiskSpace "$SIZE" "$`date +%F`" "$NAME" [ $disk_space_check -ne 0 ] && { DBG=0 cleanupandexit 1 nospace } extractAFile I=`expr $I + 1` done echo "$I files extracted in the directory $`date +%F`" } extractAFile() { [ $VeryVerbose ] && dbg "extracting the file $NAME of SIZE=$SIZE at OFFSET=$OFFSET" if [ "$SIZE" -le "$FIXED_BLOCK_SIZE" ] ; then BOFFSET=`expr $OFFSET / "$FIXED_BLOCK_SIZE"` dd if="$INSTALLER_PATH" of="$`date +%F`/filePadded" bs="$FIXED_BLOCK_SIZE" skip="$BOFFSET" count=1 > /dev/null 2>&1 dd if="$`date +%F`/filePadded" of="$NAME" bs="$SIZE" count=1 > /dev/null 2>&1 rm -f "$`date +%F`/filePadded" else BOFFSET=`expr $OFFSET / "$FIXED_BLOCK_SIZE"` BLOCKS=`expr $SIZE / "$FIXED_BLOCK_SIZE"` BLOCKS=`expr $BLOCKS + 1` dd if="$INSTALLER_PATH" of="$`date +%F`/filePadded" bs="$FIXED_BLOCK_SIZE" skip="$BOFFSET" count=$BLOCKS > /dev/null 2>&1 dd if="$`date +%F`/filePadded" of="$NAME" bs="$SIZE" count=1 > /dev/null 2>&1 rm -f "$`date +%F`/filePadded" fi } extractJVMFiles() { if [ -f "$`date +%F`/jvmfit" ] ; then c=`wc -l "$`date +%F`/jvmfit" | awk '{ print $1 }'` I=1 while [ $I -le $c ] ; do II=`sed -n -e "${I}p" $`date +%F`/jvmfit` SIZE=`awk 'END{ split(II,FIELDS, ":"); print FIELDS[3] }' II=$II /dev/null` OFFSET=`awk 'END{ split(II,FIELDS, ":"); print FIELDS[4] }' II=$II /dev/null` NAME=`awk 'END{ split(II,FIELDS, ":"); print FIELDS[5] }' II=$II /dev/null` SIZE=`convert $SIZE` OFFSET=`convert $OFFSET` NAME="$`date +%F`/$NAME" extractAFile if [ -f "$NAME" ] ; then sed "s/ //;s/^[ ]*//;s/[ ]*$//" "$NAME" >> "$NAME.sed" 2>/dev/null rm -f "$NAME" mv $NAME.sed $NAME echo "$NAME" >> "$`date +%F`/jvmlist" fi I=`expr $I + 1` done fi [ $VeryVerbose ] && { dbg "reading jvm list..." ; if [ -f "$`date +%F`/jvmlist" ] ; then cat "$`date +%F`/jvmlist" >> $LOG 2>/dev/null; fi } } extractVerifyJar() { I=0 while [ $I -lt $FILEINDEXCOUNT ] ; do II=`awk 'END{ s=sprintf("$FILEINDEX%s", I); print s }' I=$I /dev/null` eval II=$II TYPE=`awk 'END{ split(II,FIELDS, ":"); print FIELDS[1]; }' II=$II /dev/null` TYPE=`convert $TYPE` if [ "$TYPE" -eq "$VERIFY_CLASS_TYPE" ] ; then SIZE=`awk 'END{ split(II,FIELDS, ":"); print FIELDS[3] }' II=$II /dev/null` OFFSET=`awk 'END{ split(II,FIELDS, ":"); print FIELDS[4] }' II=$II /dev/null` NAME=`awk 'END{ split(II,FIELDS, ":"); print FIELDS[5] }' II=$II /dev/null` SIZE=`convert $SIZE` OFFSET=`convert $OFFSET` NAME="$`date +%F`/$NAME" extractAFile break fi I=`expr $I + 1` done } makeJVMFit() { I=0 while [ $I -lt $FILEINDEXCOUNT ] ; do II=`awk 'END{ s=sprintf("$FILEINDEX%s", I); print s }' I=$I /dev/null` eval II=$II TYPE=`awk 'END{ split(II,FIELDS, ":"); print FIELDS[1]; }' II=$II /dev/null` TYPE=`convert $TYPE` if [ "$TYPE" -eq "$JVM_FILE_TYPE" ] ; then echo $II >> $`date +%F`/jvmfit fi I=`expr $I + 1` done } writetab() { awk ' BEGIN { processingTag=0 } $0 == "/:" { if (beginprocessingTag == 1) beginprocessingTag=0 ; next } $0 == tag { beginprocessingTag=1; next } { if (beginprocessingTag == 1) { print $0 >> tab; next } } END { } ' tab="$2" tag="$3" "$1" } searchAndVerify() { pbclr pbmesg="Searching JVM" dbg "--------------------------------------------------------------------------------------------" dbg "Searching a JVM using $1" if [ -f "$`date +%F`/pathHint" ] ; then rm -f "$`date +%F`/pathHint" fi JVM_EXE=`awk ' BEGIN { FS=":" } /^JVM_EXE/ { print $2; exit }' "$1" 2>/dev/null` JVM_EXE=`echo "$JVM_EXE" | sed 's/^[ ]*//;s/[ ]*$//;s/^[ ]*//;s/[ ]*$//;s/\"//g'` if [ -z "$JVM_EXE" ] ; then [ $VeryVerbose ] && dbg "value of JVM_EXE is an empty string in JVM FILE="$JVM_FILE". Trying next JVM File." return else [ $VeryVerbose ] && dbg "value of JVM_EXE=$JVM_EXE in JVM FILE=$JVM_FILE" fi writetab "$1" "$`date +%F`/pathHint" "PATH_HINT:" if [ -f "$`date +%F`/pathHint" ] ; then [ $VeryVerbose ] && { dbg "using path hints in the JVM file $1"; } pathHintc=`wc -l "$`date +%F`/pathHint" | awk '{ print $1 }'` pathHintcc=1 while [ $pathHintcc -le $pathHintc ] ; do pbc=`expr $pbc + 1` pb PathHint=`sed -n -e "${pathHintcc}p;s/^[ ]*//;s/[ ]*$//" "$`date +%F`/pathHint"` if [ -f "$1.fr" ] ; then rm -f "$1.fr" fi [ $VeryVerbose ] && dbg "using the pathHint=$PathHint." if [ -d "$PathHint" ] ; then for x in $PathHint ; do if [ -x "$x/$JVM_EXE" ] ; then echo "$x/$JVM_EXE" >> "$1.fr.shellxpansion" fi if [ -x "$x/jre/$JVM_EXE" ] ; then echo "$x/jre/$JVM_EXE" >> "$1.fr.shellxpansion" fi done [ $VeryVerbose ] && { dbg "reading find result from shell expansion..." ; cat "$1.fr.shellxpansion" >> $LOG 2>/dev/null; } fi find $PathHint/$JVM_EXE > "$1.fr.findcommand" 2>/dev/null if [ $? -eq 0 ] ; then if [ -f "$1.fr.findcommand" ] ; then [ $VeryVerbose ] && { dbg "reading find result from find command..." ; cat "$1.fr.findcommand" >> $LOG 2>/dev/null; } frc=`wc -l "$1.fr.findcommand" | awk '{ print $1 }'` frcc=1 while [ $frcc -le $frc ] ; do frl=`sed -n -e "${frcc}p" "$1.fr.findcommand"` grep "$frl" "$1.fr.shellxpansion" 1>/dev/null 2>&1 if [ $? -ne 0 ] ; then echo "$frl" >> "$1.fr.shellxpansion" fi frcc=`expr $frcc + 1` done fi fi if [ -f "$1.fr.findcommand" ] ; then rm -f "$1.fr.findcommand" fi if [ -f "$1.fr.shellxpansion" ] ; then mv "$1.fr.shellxpansion" "$1.fr" rm -f "$1.fr.shellxpansion" fi if [ -f "$1.fr" ] ; then [ $VeryVerbose ] && { dbg "reading find result after merging..." ; cat "$1.fr" >> $LOG 2>/dev/null; } frc=`wc -l "$1.fr" | awk '{ print $1 }'` frcc=1 while [ $frcc -le $frc ] ; do frl=`sed -n -e "${frcc}p" "$1.fr"` jvm_exe=`echo $JVM_EXE | sed 's/\//\\\\\//g'` VerifyJVM "$1" "$frl" if [ $verify -eq 0 ] ; then J=`echo "$frl" | sed "s/${jvm_exe}//"` J=`echo "$J" | sed 's/^[ ]*//;s/[ ]*$//;s/^[ ]*//;s/[ ]*$//'` echo "JVM_HOME:$J" >> "$1" RESOLVED_JVM="$1" sv=0 dbg "Verification passed for $frl using the JVM file $1." rm -f "$1.fr" return else dbg "Verification failed for $frl using the JVM file $1." fi frcc=`expr $frcc + 1` done else [ $VeryVerbose ] && { dbg "find result is empty for the pathhint=$PathHint"; } fi pathHintcc=`expr $pathHintcc + 1` done else dbg "path hint is not specified in the JVM file $1" fi } VerifyJVM() { pbclr pbmesg="Verifying JVM" pb [ ! -f "$`date +%F`/Verify.jar" ] && extractVerifyJar awk ' BEGIN { begin=0; i=1 } $0 == "/:" { if (begin == 1) begin=0 ; next; } $0 == tag { begin=1; next; } { if (begin== 1) { item[i]=$0; i++; next; } } END { for (k=1; k < i; k++) print item[k] >> tab; } ' tab="$`date +%F`/sp" tag="JVM_PROPERTIES:" "$1" 2>/dev/null if [ -f "$`date +%F`/sp" ] ; then spc=`wc -l "$`date +%F`/sp" | awk '{ print $1 }'` spcc=1 systemprops= while [ $spcc -le $spc ] ; do spl=`sed -n -e "${spcc}p" "$`date +%F`/sp"` spl=`echo "$spl" | sed 's/\"//g'` systemprops=`awk 'END { i=index(spl,"="); s=substr(spl,1,i-1); ss=sprintf("%s %s", sp, s); print ss; } ' spl="$spl" sp="$systemprops" /dev/null` spcc=`expr $spcc + 1` done jvm_classpath= cp_switch=`awk 'BEGIN{ FS=":"} $1 == tag { print $2; exit; }' tag=CLASSPATH $1` cp_switch=`echo "$cp_switch" | sed 's/\"//g'` jvm_classpath=`awk 'BEGIN { FS=":" } $1 == tag { i=index($0,":"); s=substr($0,i+1); print s; exit; }' tag=JVM_CLASSPATH $1` if [ -z "$jvm_classpath" ] ; then dbg "Verifying... $2 $cp_switch $`date +%F`/Verify.jar Verify $systemprops" eval "$2" $cp_switch "$`date +%F`/Verify.jar" Verify $systemprops 1>"$`date +%F`/jvmout" 2>/dev/null& bgpid=$! Timer $bgpid& wait $bgpid 1>/dev/null 2>&1 else jb=`awk 'BEGIN { FS=":" } $1 == tag { i=index($0,":"); s=substr($0,i+1); print s; exit; }' tag=JVM_EXE $1 2>/dev/null` jb=`echo "$jb" | sed 's/^[ ]*//;s/[ ]*$//;s/^[ ]*//;s/[ ]*$//'` jb=`echo "$jb" | sed 's/\//\\\\\//g'` JVM_HOME=`echo "$2" | sed "s/${jb}//"` eval jvm_classpath="$jvm_classpath" dbg "Verifying... $2 $cp_switch $jvm_classpath:$`date +%F`/Verify.jar Verify $systemprops" eval "$2" $cp_switch "$jvm_classpath":"$`date +%F`/Verify.jar" Verify $systemprops 1>"$`date +%F`/jvmout" 2>/dev/null& bgpid=$! Timer $bgpid& wait $bgpid 1>/dev/null 2>&1 JVM_HOME= fi if [ -f "$`date +%F`/jvmout" ] ; then spc=`wc -l "$`date +%F`/sp" | awk '{ print $1 }'` spcc=1 systemprops= while [ $spcc -le $spc ] ; do spl=`sed -n -e "${spcc}p" "$`date +%F`/sp"` spl=`echo $spl | sed 's/\"//g'` jvmfilevalue=`awk 'END { i=index(spl,"="); s=substr(spl,i+1); print s } ' spl="$spl" sp="$systemprops" /dev/null` jvmoutc=`expr $spcc + 1` jvmout=`sed -n -e "${jvmoutc}p" "$`date +%F`/jvmout"` verify=`awk ' END { exactMatch=1 verify=2 len = length(jvmfilevalue) for (k = len ; k >len-3 ; k--) { char=substr(jvmfilevalue, k, 1); s = sprintf("%s%s", s,char); } if (length(s) == length("...")) { if ( index(s, "...") == 1) { exactMatch=0 } } if (exactMatch == 1) { if ( (length(jvmfilevalue) == length(jvmout)) && (index(jvmfilevalue, jvmout) == 1) ) verify=0 } else { jvmfilevalue_prefix=substr(jvmfilevalue, 1, len-3) if (index(jvmout,jvmfilevalue_prefix) == 1 ) verify=0 } if (length(VeryVerbose) > 0) { printf("jvm system property specified in jvm file=%s\n",jvmfilevalue) >> ilog printf("jvm system property from running Verify diagnostics on the JVM=%s\n",jvmout) >> ilog if (verify == 0) { if (exactMatch == 1) { print "exact match of system property succeeded" >> ilog } else { print "non-exact match of system property succeeded" >> ilog } } else { if (exactMatch == 1) { print "exact match of system property failed" >> ilog } else { print "non-exact match of system property failed" >> ilog } } } print verify } ' jvmout="$jvmout" jvmfilevalue="$jvmfilevalue" VeryVerbose="$VeryVerbose" ilog="$LOG" /dev/null` if [ $verify -ne 0 ] ; then break fi spcc=`expr $spcc + 1` done else dbg "$`date +%F`/jvmout does not exist. JVM Verification process may have failed." fi else dbg "system properties are not specified in "$1"" fi rm -f "$`date +%F`/sp" rm -f "$`date +%F`/jvmout" } searchParitions() { for i in $1 ; do find ${i} -type d \ \( -name '*[jJ][dD][kK]*' \ -o -name '*[jJ][rR][eE]*' \ -o -name '*[jJ][aA][vV][aA]*' \ -o -name '*[jJ]2[rR][eE]*' \ -o -name '*[jJ]2[sS][eE]*' \ \) >> "$`date +%F`/searchParitionsResult" 2>/dev/null done } writesptab() { sed 's/^[ ]*//;s/[ ]*$//' "$1" >> "$1.tmp" 2>/dev/null mv "$1.tmp" "$1" awk ' BEGIN { begin=0; i=1} $0 == "/:" { if (begin == 1) begin=0 ; next; } $0 == tag { begin=1; next; } { if (begin== 1) { item[i]=$0; i++; next; } } END { for (k=1; k < i; k++) { s=sprintf("%s%s;",s,item[k]); } s=sprintf("%s%s",s,JF); print s >> tab } ' JF="$1" tab="$`date +%F`/sp" tag="JVM_PROPERTIES:" "$1" 2>/dev/null } verifyJavaHome() { if [ -f "$`date +%F`/jvmlist" ] ; then jvmlc=`wc -l "$`date +%F`/jvmlist" | awk '{ print $1 }'` cc=1 while [ $cc -le $jvmlc ] ; do JVM_FILE=`sed -n -e "${cc}p" "$`date +%F`/jvmlist" 2>/dev/null` if [ -f "$JVM_FILE" ] ; then JVM_EXE=`awk ' BEGIN { FS=":" } /^JVM_EXE/ { print $2; exit }' "$JVM_FILE"` JVM_EXE=`echo "$JVM_EXE" | sed 's/^[ ]*//;s/[ ]*$//;s/^[ ]*//;s/[ ]*$//;s/\"//g'` if [ -z "$JVM_EXE" ] ; then [ $VeryVerbose ] && dbg "value of JVM_EXE is an empty string in JVM FILE="$JVM_FILE". Trying next JVM File" continue else [ $VeryVerbose ] && dbg "value of JVM_EXE=$JVM_EXE in JVM FILE="$JVM_FILE"" fi if [ -x "$JAVA_HOME/$JVM_EXE" ] ; then [ $VeryVerbose ] && dbg "Verifying $JAVA_HOME using the JVM file $JVM_FILE" VerifyJVM "$JVM_FILE" "$JAVA_HOME/$JVM_EXE" if [ $verify -eq 0 ] ; then J="$JAVA_HOME" J=`echo "$J" | sed 's/^[ ]*//;s/[ ]*$//;s/^[ ]*//;s/[ ]*$//'` echo "JVM_HOME:$J" >> "$JVM_FILE" RESOLVED_JVM="$JVM_FILE" sv=0 dbg "Verification passed for $JAVA_HOME using the JVM file $JVM_FILE." return else dbg "Verification failed for $JAVA_HOME using the JVM file $JVM_FILE" fi fi fi cc=`expr $cc + 1` done else [ $VeryVerbose ] && dbg "jvm files not specified. Verification cannot be performed for JVM specfied using $JAVA_HOME" fi } checkEnvironment() { dbg "Checking the environment variables specifed in the JVM files to find the JVM..." if [ -f "$`date +%F`/jvmlist" ] ; then checkEnvlc=`wc -l "$`date +%F`/jvmlist" | awk '{ print $1 }'` checkEnvcc=1 while [ $checkEnvcc -le $checkEnvlc ] ; do checkEnvJvmFile=`sed -n -e "${checkEnvcc}p" "$`date +%F`/jvmlist" 2>/dev/null` for pathVariable in `echo $PATH|sed 's/:/ /g'` do if [ -x "$pathVariable/java" ] ; then VerifyJVM "$checkEnvJvmFile" "$pathVariable/java" if [ $verify -eq 0 ] ; then pathVariable=`echo $pathVariable | sed 's/\/bin//g'` echo "JVM_HOME:$pathVariable" >> "$checkEnvJvmFile" RESOLVED_JVM="$checkEnvJvmFile" sv=0 dbg "Verification passed for $pathVariable/$checkEnvJvmExe using the JVM file $checkEnvJvmFile." return fi fi done checkEnvJvmExe=`awk ' BEGIN { FS=":" } /^JVM_EXE/ { print $2; exit }' "$checkEnvJvmFile" 2>/dev/null` checkEnvJvmExe=`echo "$checkEnvJvmExe" | sed 's/^[ ]*//;s/[ ]*$//'` if [ -z "$checkEnvJvmExe" ] ; then [ $VeryVerbose ] && dbg "value of JVM_EXE is an empty string in JVM FILE="$checkEnvJvmFile". Trying next JVM File." checkEnvcc=`expr $checkEnvcc + 1` continue else [ $VeryVerbose ] && dbg "value of JVM_EXE=$JVM_EXE in JVM FILE=$checkEnvJvmFile" fi if [ -f "$`date +%F`/platformHint" ] ; then rm -f "$`date +%F`/platformHint" fi writetab "$checkEnvJvmFile" "$`date +%F`/platformHint" "PLATFORM_HINT:" if [ -f "$`date +%F`/platformHint" ] ; then [ $VeryVerbose ] && dbg "using platform hints or environment variables in the JVM file $checkEnvJvmFile" platformHintlc=`wc -l "$`date +%F`/platformHint" | awk '{ print $1 }'` platformHintcc=1 while [ $platformHintcc -le $platformHintlc ] ; do platformHintLine=`sed -n -e "${platformHintcc}p;s/^[ ]*//;s/[ ]*$//" "$`date +%F`/platformHint" | sed 's/\(.*\)/$\1/'` eval platformHintEvaled=$platformHintLine if [ -n "$platformHintEvaled" ] ; then if [ -x "$platformHintEvaled/$checkEnvJvmExe" ] ; then dbg "A jvm found at $platformHintEvaled/$checkEnvJvmExe" VerifyJVM "$checkEnvJvmFile" "$platformHintEvaled/$checkEnvJvmExe" if [ $verify -eq 0 ] ; then platformHintEvaled=`echo "$platformHintEvaled" | sed 's/^[ ]*//;s/[ ]*$//;s/^[ ]*//;s/[ ]*$//'` echo "JVM_HOME:$platformHintEvaled" >> "$checkEnvJvmFile" RESOLVED_JVM="$checkEnvJvmFile" sv=0 dbg "Verification passed for $platformHintEvaled/$checkEnvJvmExe using the JVM file $checkEnvJvmFile." return else dbg "Verification failed for $platformHintEvaled/$checkEnvJvmExe using the JVM file $checkEnvJvmFile." fi fi else dbg "$platformHintLine is not defined in the shell environment specifed in the JVM FILE `basename $checkEnvJvmFile`" fi platformHintcc=`expr $platformHintcc + 1` done else dbg "platform hints or environment variables are not specified in the JVM file $checkEnvJvmFile" fi checkEnvcc=`expr $checkEnvcc + 1` done else [ $VeryVerbose ] && dbg "jvm files not specified in the launcher. Environment Variables cannot be checked." fi } searchJVM() { makeJVMFit extractJVMFiles [ "$JAVA_HOME" ] && { dbg "command line switch -javahome is specified. Verifying the JVM with the JVM files specifed with the launcher." verifyJavaHome if [ $sv -eq 0 ] ; then return else dbg "JVM specified with -javahome cannot be verified with the JVM files specified with the launcher. Environment Variables will be checked next..." fi } checkEnvironment if [ $sv -eq 0 ] ; then return else dbg "No JVM can be found using the shell environment variable. Searching JVM will continue with Path Hints specified in the JVM Files..." fi JVM_FILE= if [ -f "$`date +%F`/jvmlist" ] ; then jvmlc=`wc -l "$`date +%F`/jvmlist" | awk '{ print $1 }'` cc=1 while [ $cc -le $jvmlc ] ; do JVM_FILE=`sed -n -e "${cc}p" "$`date +%F`/jvmlist" 2>/dev/null` if [ -f "$JVM_FILE" ] ; then searchAndVerify "$JVM_FILE" if [ $sv -eq 0 ] ; then dbg "jvm found and verification passed for $JVM_FILE." break fi fi cc=`expr $cc + 1` done else dbg "jvm files not specified. Searching a JVM cannot be performed." fi } aggregatecp() { aggregatecpc=`wc -l "$1" | awk '{ print $1 }'` aggregatecpcc=1 while [ $aggregatecpcc -le $aggregatecpc ] ; do aggregatecpl=`sed -n -e "${aggregatecpcc}p" "$1" 2>/dev/null` aggregatecpl=`echo "$aggregatecpl" | sed 's/\"//g' 2>/dev/null` AGGREGATECP=`awk ' END { s=sprintf("%c%s%c",34,b,34); s=sprintf("%s:%s",a,s); printf s }' a="$AGGREGATECP" b="$aggregatecpl" /dev/null` aggregatecpcc=`expr $aggregatecpcc + 1` done echo "$AGGREGATECP" } extractArchiveJar() { [ -n "$VeryVerbose" ] && dbg "Installer JAR archive is embedded. Extracting ..." I=0 while [ $I -lt $FILEINDEXCOUNT ] ; do II=`awk 'END{ s=sprintf("$FILEINDEX%s", I); print s }' I=$I /dev/null` eval II=$II TYPE=`awk 'END{ split(II,FIELDS, ":"); print FIELDS[1]; }' II=$II /dev/null` TYPE=`convert $TYPE` if [ "$TYPE" -eq "$APP_ARCHIVE_TYPE" ] ; then SIZE=`awk 'END{ split(II,FIELDS, ":"); print FIELDS[3] }' II=$II /dev/null` OFFSET=`awk 'END{ split(II,FIELDS, ":"); print FIELDS[4] }' II=$II /dev/null` NAME=`awk 'END{ split(II,FIELDS, ":"); print FIELDS[5] }' II=$II /dev/null` SIZE=`convert $SIZE` OFFSET=`convert $OFFSET` NAME="$`date +%F`/$NAME" checkDiskSpace "$SIZE" "$`date +%F`" "$NAME" [ $disk_space_check -ne 0 ] && cleanupandexit 1 nospace pbclr pbmesg="Extracting Installation Archive" pb extractAFile INSTALLER_ARCHIVE="$NAME" break fi I=`expr $I + 1` done } extractEmbeddedJar() { embeddedJarc=0 while [ $embeddedJarc -lt $FILEINDEXCOUNT ] ; do FI_KEY=`awk 'END{ s=sprintf("$FILEINDEX%s", I); print s }' I=$embeddedJarc /dev/null` eval FI_VALUE=$FI_KEY TYPE=`awk 'END{ split(a,FIELDS, ":"); print FIELDS[1]; }' a=$FI_VALUE /dev/null` TYPE=`convert $TYPE` if [ "$TYPE" -eq $EMBED_JARS_TYPE ] ; then SIZE=`awk 'END{ split(a,FIELDS, ":"); print FIELDS[3] }' a=$FI_VALUE /dev/null` OFFSET=`awk 'END{ split(a,FIELDS, ":"); print FIELDS[4] }' a=$FI_VALUE /dev/null` NAME=`awk 'END{ split(a,FIELDS, ":"); print FIELDS[5] }' a=$FI_VALUE /dev/null` SIZE=`convert $SIZE` OFFSET=`convert $OFFSET` NAME="$`date +%F`/$NAME" dbg "extracting embedded jars in the archive." checkDiskSpace "$SIZE" "$`date +%F`" "$NAME" [ $disk_space_check -ne 0 ] && cleanupandexit 1 nospace extractAFile EMBEDDED_JARS=`awk ' END { s=sprintf("%c%s%c",34,b,34); s=sprintf("%s:%s",a,s); printf s }' a="$EMBEDDED_JARS" b="$NAME" /dev/null` fi embeddedJarc=`expr $embeddedJarc + 1` done } parseJavaArgs() { awk '$0 !~ /^-/ && /.*,.*/{ if (length($0) > 1 ) { t=split($0,FIELDS,",") if (t == 2) print FIELDS[2]; } } /^-/{ printf("%s\n",$0); }' | sed 's/\\//g;s/)//;s/^[ ]*//;s/[ ]*$//;s/^\"//;s/\"$//;s/@\(.*\)@\(.*\)/\1=\2/' >> "$`date +%F`/javaargs" } aggregateJavaArgs() { #/dev/null` -ne 1 ] ; then javaArgsResolved=`awk '{ split(A, FIELDS,"="); if ( index($0, FIELDS[1]) == 1 ) { i=index($0, ":") ; if ( i > 1 ) { s=substr($0, i+1); if (length(FIELDS[2]) > 0) { s=sprintf("%s%s",s, FIELDS[2]); } print s; exit; } } }' A="$javaArgsl" "$1"` if [ -n "$javaArgsResolved" ] ; then [ -n "$VeryVerbose" ] && dbg "Java Argument `echo "$javaArgsl" | cut -d= -f1` is resolved to $javaArgsResolved in the JVM FILE $1" else dbg "Java argument `echo "$javaArgsl" | cut -d= -f1` is not defined in the JVM file $1." fi else javaArgsResolved="$javaArgsl" [ -n "$VeryVerbose" ] && dbg "using literal Java Argument $javaArgsResolved" fi if [ -n "$javaArgsResolved" ] ; then JAVA_ARGS=`awk 'END{ printf("%s %s", a, b); }' a="$javaArgsResolved" b="$JAVA_ARGS" /dev/null` fi javaArgscc=`expr $javaArgscc + 1` done } resolveRuntimeJavaArgs() { [ -n "$VeryVerbose" ] && dbg "resolving runtime java args" jaFile=`modifyFileName "$INSTALLER_PATH" ja` if [ -f "$jaFile" ] ; then cat "$jaFile" | sed 's/%IF_EXISTS%//' | parseJavaArgs else dbg "Run time Java arguments are not specified." fi } resolveBuildTimeJavaArgs() { [ -n "$VeryVerbose" ] && dbg "resolving buildtime java args" if [ -n "$JAVA_ARGS_UNRESOLVED" ] ; then echo "$JAVA_ARGS_UNRESOLVED" | sed 's/%IF_EXISTS%//g;s/) */+/g;s/\(-[^ .]*\)/\1+/g' | tr '+' '\012' | sed 's/^[ ]*//;s/[ ]*$//' | parseJavaArgs [ \( -f "$`date +%F`/javaargs" -a -n "$VeryVerbose" \) ] && cp "$`date +%F`/javaargs" "$`date +%F`/javaargs.buildtime" else dbg "Build time Java arguments are not specified." fi } modifyFileName() { installerDir=`dirname "$1"` installerDir=`echo "$installerDir" | sed 's/\//\\\\\//g'` awk 'END { t=split(a,FIELDS,"."); if ( t > 1 ) { for (i=1; i<=t-1;i++) s=sprintf("%s.%s",s,FIELDS[i]); } else { s=a; } print s; }' a=`basename "$1"` /dev/null | sed "s/^\.//;s/\.$//;s/\(.*\)/${installerDir}\/\1.${2}/" } processCommandLineCP() { if [ `awk 'END{ if (index(a,"@") == 1) print 0 ; else print 1; }' a="$1" /dev/null` -eq 0 ] ; then file=`awk 'END{ s=substr(a, 2); print s; }' a="$1" /dev/null` [ -f "$file" ] && CommandLineCP=`aggregatecp "$file"` else CommandLineCP=`awk 'END{ t=split(a,FIELDS,":"); for ( i=1; i<=t; i++) { if ( length(FIELDS[i]) > 0 ) { quotedCPItem=sprintf("%c%s%c",34,FIELDS[i],34); s=sprintf("%s:%s",s,quotedCPItem); } } printf s; }' a="$1" /dev/null` fi echo "$CommandLineCP" | sed 's/^://' } resolveLaunchCommand() { if [ -f "$1" ] ; then JVM_HOME=`awk 'BEGIN { FS=":" } $1 == tag { i=index($0,":"); s=substr($0,i+1); print s; exit; }' tag=JVM_HOME "$1" 2>/dev/null` JVM_HOME=`echo "$JVM_HOME" | sed 's/^[ ]*//;s/[ ]*$//;s/^[ ]*//;s/[ ]*$//'` [ ! -d "$JVM_HOME" ] && { dbg "JavaHome is not resolved correctly in the jvm file $1. Failed to launch the application." return } JVM_EXE=`awk 'BEGIN { FS=":" } $1 == tag { i=index($0,":"); s=substr($0,i+1); print s; exit; }' tag=JVM_EXE "$1" 2>/dev/null` JVM_EXE=`echo "$JVM_EXE" | sed 's/^[ ]*//;s/[ ]*$//;s/^[ ]*//;s/[ ]*$//;s/\"//g'` [ -z "$JVM_EXE" ] && { dbg "Javaexe is not resolved correctly or empty in the jvm file $1. Failed to launch the application." return } CLASSPATH_SWITCH=`awk 'BEGIN{ FS=":"} $1 == tag { print $2; exit; }' tag=CLASSPATH "$1" 2>/dev/null` CLASSPATH_SWITCH=`echo "$CLASSPATH_SWITCH" | sed 's/^[ ]*//;s/[ ]*$//;s/^[ ]*//;s/[ ]*$//;s/\"//g'` [ -z $CLASSPATH_SWITCH ] && { dbg "Classpath switch is not specified in the jvm file $1. Failed to launch the application." return } if [ -n "$CP_P" ] ; then PREPEND_CLASSPATH=`processCommandLineCP "$CP_P"` else dbg "-cp:p operand is empty" fi if [ -n "$CP_A" ] ; then APPEND_CLASSPATH=`processCommandLineCP "$CP_A"` else dbg "-cp:a operand is empty" fi cp1File=`modifyFileName "$INSTALLER_PATH" cp1` [ -f "$cp1File" ] && { CP1=`aggregatecp "$cp1File"` dbg "classpath specified in the $cp1File=$CP1" } JVM_CLASSPATH=`awk 'BEGIN { FS=":" } $1 == tag { i=index($0,":"); s=substr($0,i+1); print s; exit; }' tag=JVM_CLASSPATH "$1" 2>/dev/null` cpFile=`modifyFileName "$INSTALLER_PATH" cp` [ -f "$cpFile" ] && { CP=`aggregatecp "$cpFile"` dbg "classpath specified in the $cpFile=$CP" } if [ -z "$APPLICATION_ARCHIVE" ] ; then dbg "Installer JAR archive is not embedded." APPLICATION_ARCHIVE= elif [ "$APPLICATION_ARCHIVE" = EMBED ] ; then extractArchiveJar if [ -f "$INSTALLER_ARCHIVE" ] ; then archiveSize=`wc -c "$INSTALLER_ARCHIVE" | awk '{ if ( $1 ~ /^[0-9]/ ) print $1 ; else print 0; }' 2>/dev/null` if [ $archiveSize -ne $SIZE ] ; then archiveSize=`ls -l "$INSTALLER_ARCHIVE" | awk '{ if ( $5 ~ /^[0-9]/ ) print $5 ; else print 0; }' 2>/dev/null` if [ $archiveSize -ne $SIZE ] ; then dbg "Extracted Installer JAR archive file size incorrect. archive may be corrupt. Failed to launch the application." return else APPLICATION_ARCHIVE="$INSTALLER_ARCHIVE" fi else APPLICATION_ARCHIVE="$INSTALLER_ARCHIVE" fi else dbg "Error extracting Installer JAR archive from shell script wrapper. Failed to launch the application." return fi elif [ -n "$APP_ORIG_HOME" ] ; then if [ -f "$APP_ORIG_HOME"/"$APPLICATION_ARCHIVE" ] ; then dbg "Installer JAR archive is not embedded. Copying from $APP_ORIG_HOME/$APPLICATION_ARCHIVE" rclSize=`wc -c "$APP_ORIG_HOME/$APPLICATION_ARCHIVE" | awk '{ if ( $1 ~ /^[0-9]/ ) print $1 ; else print 0; }' 2>/dev/null` checkDiskSpace "$rclSize" "$`date +%F`" "$APP_ORIG_HOME/$APPLICATION_ARCHIVE" [ $disk_space_check -ne 0 ] && cleanupandexit 1 nospace cp "$APP_ORIG_HOME/$APPLICATION_ARCHIVE" "$`date +%F`/$APPLICATION_ARCHIVE" if [ $? -eq 0 ] ; then INSTALLER_ARCHIVE="$`date +%F`/$APPLICATION_ARCHIVE" else dbg "Error copying the Installer JAR archive from the CD media to temp location on the host machine. Failed to launch the application." return fi else dbg "Installer JAR archive is not located in the CD media location. Failed to launch the application." return fi else dbg "CD media location is not defined and Installer JAR archive cannot be located. Failed to launch the application." return fi [ -n "$INSTALLER_ARCHIVE" ] && INSTALLER_ARCHIVE=`awk 'END { s=sprintf("%c%s%c",34,a,34); print s; }' a="$INSTALLER_ARCHIVE" /dev/null` extractEmbeddedJar cp2File=`modifyFileName "$INSTALLER_PATH" cp2` [ -f "$cp2File" ] && { CP2=`aggregatecp "$cp2File"` dbg "classpath specified in the $cp2File=$CP2" } spFile=`modifyFileName "$INSTALLER_PATH" sp` [ -f "$spFile" ] && { runtimespc=`wc -l "$spFile" | awk '{ print $1 }'` runtimespcc=1 while [ $runtimespcc -le $runtimespc ] ; do runtimespl=`sed -n -e "${runtimespcc}p" "$spFile" 2>/dev/null` RUNTIME_SYSTEMPROP=`awk 'END{ s=sprintf("%s -D%s ",a,b); print s; }' a="$RUNTIME_SYSTEMPROP" b="$runtimespl" /dev/null` runtimespcc=`expr $runtimespcc + 1` done dbg "java runtime system properties specified in $spFile file = $RUNTIME_SYSTEMPROP" } resolveBuildTimeJavaArgs "$1" # javaArgsc=`wc -l "$2" | awk '{ print $1 }'` javaArgscc=1 while [ $javaArgscc -le $javaArgsc ] ; do javaArgsl=`sed -n -e "${javaArgscc}p" "$2"` javaArgsl=`echo "$javaArgsl" | sed 's/^[ ]*//;s/[ ]*$//'` if [ `awk 'END { print index(a,"-") }' a="$javaArgsl" resolveRuntimeJavaArgs "$1" # /dev/null` eval FI_VALUE=$FI_KEY TYPE=`awk 'END{ split(a,FIELDS, ":"); print FIELDS[1]; }' a=$FI_VALUE /dev/null` TYPE=`convert $TYPE` if [ "$TYPE" -eq $JVM_INSTALLER_TYPE ] ; then SIZE=`awk 'END{ split(a,FIELDS, ":"); print FIELDS[3] }' a=$FI_VALUE /dev/null` OFFSET=`awk 'END{ split(a,FIELDS, ":"); print FIELDS[4] }' a=$FI_VALUE /dev/null` NAME=`awk 'END{ split(a,FIELDS, ":"); print FIELDS[5] }' a=$FI_VALUE /dev/null` SIZE=`convert $SIZE` OFFSET=`convert $OFFSET` NAME="$`date +%F`/$NAME" dbg "Extracting bundled JRE..." pbclr pbmesg="Extracting Bundled JRE" pb checkDiskSpace "$SIZE" "$`date +%F`" "$NAME" [ $disk_space_check -ne 0 ] && cleanupandexit 1 nospace extractAFile break fi installJVMc=`expr $installJVMc + 1` done if [ ! -f "$NAME" ] ; then dbg "$NAME is not found. Error extracting bundled JRE. Failed to launch the application." return else [ $VeryVerbose ] && dbg "extracting bundled JRE successful." fi whereAmI=`pwd` mkdir "$`date +%F`/_bundledJRE_" >/dev/null 2>&1 checkDiskSpace "$NAME" "$`date +%F`" [ $disk_space_check -ne 0 ] && cleanupandexit 1 nospace cd "$`date +%F`/_bundledJRE_" dbg "installing bundled JRE..." pbclr pbmesg="Installing Bundled JRE" pb "$NAME" -qq >/dev/null 2>&1 if [ $? -ne 0 ] ; then cd "$whereAmI" dbg "Error installing bundled JRE. Failed to launch the application." rm -f "$NAME" return else cd "$whereAmI" [ $VeryVerbose ] && dbg "installing bundled JRE successful." rm -f "$NAME" fi chmod -R 744 "$`date +%F`/_bundledJRE_" > /dev/null 2>&1 if [ -f "$`date +%F`/_bundledJRE_/jvm" ] ; then sed "s/ //;s/^[ ]*//;s/[ ]*$//" "$`date +%F`/_bundledJRE_/jvm" >> "$`date +%F`/_bundledJRE_/jvm.sed" 2>/dev/null mv "$`date +%F`/_bundledJRE_/jvm.sed" "$`date +%F`/_bundledJRE_/jvm" else dbg "Invalid bundled JRE. jvm file is missing. Installation of bundled JRE is not successful." return fi JVM_EXE=`awk 'BEGIN { FS=":" } /^JVM_EXE/ { print $2; exit }' "$`date +%F`/_bundledJRE_/jvm" 2>/dev/null` if [ -z "$JVM_EXE" ] ; then dbg "value of JVM_EXE is an empty string in JVM FILE=$`date +%F`/_bundledJRE_/jvm. Bundled JRE jvm file is incorrect. Installation of bundled JRE is not successful." return else [ $VeryVerbose ] && dbg "value of JVM_EXE=$JVM_EXE in JVM FILE=$`date +%F`/_bundledJRE_/jvm" fi JVM_EXE=`echo "$JVM_EXE" | sed 's/^[ ]*//;s/[ ]*$//;s/^[ ]*//;s/[ ]*$//;s/\"//g'` if [ -x "$`date +%F`/_bundledJRE_/$JVM_EXE" ] ; then [ $VeryVerbose ] && dbg "Verifying $`date +%F`/_bundledJRE_/$JVM_EXE using the JVM file $`date +%F`/_bundledJRE_/jvm" VerifyJVM "$`date +%F`/_bundledJRE_/jvm" "$`date +%F`/_bundledJRE_/$JVM_EXE" if [ $verify -eq 0 ] ; then J="$`date +%F`/_bundledJRE_" J=`echo "$J" | sed 's/^[ ]*//;s/[ ]*$//;s/^[ ]*//;s/[ ]*$//'` echo "JVM_HOME:$J" >> "$`date +%F`/_bundledJRE_/jvm" RESOLVED_JVM="$`date +%F`/_bundledJRE_/jvm" GNU_JVM_TEMP=1 install_jvm=0 dbg "Verification passed for $`date +%F`/_bundledJRE_ using the JVM file $`date +%F`/_bundledJRE_/jvm." return else dbg "Verification failed for $`date +%F`/_bundledJRE_ using the JVM file $`date +%F`/_bundledJRE_/jvm" fi else dbg "$`date +%F`/_bundledJRE_/$JVM_EXE does not exist. Bundled JRE is not a working JVM. Installation of bundled JRE is not successful." return fi } checkDiskSpace() { [ "$disk_space_check_off" -eq 1 ] && { disk_space_check=0 dbg "disk space checking turned off/skipped". return } disk_space_check=2 # disk space check result; successful check sets it to 0; initializing to non-zero value cdsBlocksRequired=reset #will be assigned to a numeric value; initializing to a non-numeric value cdsAvailable=reset #will be assigned to a numeric value; initializing to a non-numeric value mkdir "$`date +%F`/emptydir" # Linux reports the default block-size in 1024 bytes units. Forcing it to report in 512 bytes units. du --block-size=$DISK_BLOCK_SIZE "$HOME" 2>/dev/null 1>&2 if [ $? -eq 0 ] ; then cdsDefaultBlocksAllocated=`du --block-size=$DISK_BLOCK_SIZE "$`date +%F`/emptydir" | awk '{ if ( $1 ~ /^[0-9]/ ) print $1 ; else print 0; }' 2>/dev/null` else cdsDefaultBlocksAllocated=`du "$`date +%F`/emptydir" | awk '{ if ( $1 ~ /^[0-9]/ ) print $1 ; else print 0; }' 2>/dev/null` fi [ $VeryVerbose ] && dbg "default blocks allocated by the filesystem=$cdsDefaultBlocksAllocated" rm -fr "$`date +%F`/emptydir" if [ -f "$1" ] ; then dbg "checking disk space on the parition $2 for $1" [ ! -x "$1" ] && chmod 744 "$1" >/dev/null 2>&1 "$1" -t >/dev/null 2>&1 [ $? -ne 0 ] && { dbg "Bundled JRE is not binary compatible with host OS/Arch or it is corrupt. Testing bundled JRE failed." return } cdsUnZipFileSize=`"$1" -c | wc -c | awk '{ if ( $1 ~ /^[0-9]/ ) print $1 ; else print 0; }' 2>/dev/null` [ $VeryVerbose ] && dbg "Unziped file size = $cdsUnZipFileSize" [ "$cdsUnZipFileSize" -eq 0 ] && { dbg "Error calculating the uncompressed size of bundled JRE or it is corrupt. Installation of bundled JRE failed." return } cdsFilesCount=`"$1" -t | wc -l | awk '{ if ( $1 ~ /^[0-9]/ ) print $1 ; else print 0; }' 2>/dev/null` [ $VeryVerbose ] && dbg "Unziped file count = $cdsFilesCount" [ "$cdsFilesCount" -eq 0 ] && { dbg "Error calculating the file count of bundled JRE or it is corrupt. Installation of bundled JRE failed." return } cdsBlocksRequired=`echo \("$cdsUnZipFileSize" \/ \("$DISK_BLOCK_SIZE" - \("$DISK_BLOCK_SIZE" \* 1\/100\)\)\) + \("$cdsFilesCount" \* "$cdsDefaultBlocksAllocated" \) | bc` elif [ `isNumeric $1` -eq 0 ] ; then [ -n "$3" ] && dbg "checking disk space on the parition $2 for $3" cdsBlocksRequired=`echo "$1" \/ \($DISK_BLOCK_SIZE - \($DISK_BLOCK_SIZE \* 1/100\)\) + "$cdsDefaultBlocksAllocated" | bc` else dbg "Internal Disk space check error. Size of file to be copied or extracted to the host file system is reported incorrectly." return fi if [ `isNumeric $cdsBlocksRequired` -ne 0 ] ; then dbg "Error calculating required file blocks. " [ $VeryVerbose ] && dbg "required 512 blocks for $3 = $cdsBlocksRequired" return else dbg "$cdsBlocksRequired 512 bytes disk blocks required." fi [ -z "$FREE_BLOCKS_COLUMN" ] && FREE_BLOCKS_COLUMN=4 if [ -n "$FREE_DISK_BLOCKS" ] ; then cdsAvailable="$FREE_DISK_BLOCKS" else # gnu df by default reports the free blocks in 1K size, forcing it to report to 512 sizes df -P --block-size="$DISK_BLOCK_SIZE" "$2" 2>/dev/null 1>&2 if [ $? -eq 0 ] ; then # Linux df is POSIX complaint cdsAvailable=`df -P --block-size="$DISK_BLOCK_SIZE" "$2" | awk ' NR == 2 { print $A }' A="$FREE_BLOCKS_COLUMN" 2>/dev/null` else df -P "$2" 2>/dev/null 1>&2 # If POSIX complaint if [ $? -eq 0 ] ; then cdsAvailable=`df -P "$2" | awk ' NR == 2 { print $A }' A="$FREE_BLOCKS_COLUMN" 2>/dev/null` # Is Solaris xpg4 available elif [ -x /usr/xpg4/bin/df ] ; then cdsAvailable=`/usr/xpg4/bin/df -P "$2" | awk ' NR == 2 { print $A }' A="$FREE_BLOCKS_COLUMN" 2>/dev/null` else # if it comes this far, guess the column 4 of df as free-available blocks. This may be incorrect. cdsAvailable=`df "$2" | awk '{ print $A }' A="$FREE_BLOCKS_COLUMN" 2>/dev/null` fi fi fi if [ `isNumeric $cdsAvailable` -ne 0 ] ; then dbg "Disk space check error. free disk [ of 512 bytes ] blocks cannot be found or incorrectly reported by df command on disk parition containing the directory $2." dbg "Please specify free disk [ of 512 bytes ] blocks on the disk partition containing the directory $2 by setting the environment variable FREE_DISK_BLOCKS" dbg "and run the installer again." [ $VeryVerbose ] && dbg "available 512 blocks in the partition containing the directory $2 = $cdsAvailable" return else dbg "$cdsAvailable $DISK_BLOCK_SIZE bytes disk blocks available on the partition $2" fi if [ $cdsAvailable -gt $cdsBlocksRequired ] ; then dbg "Disk space check on the parition $2 succeeded." disk_space_check=0 else if [ `expandDiskPartition $2 $cdsBlocksRequired $cdsAvailable` -ne 0 ] ; then dbg "$2 partition expanded successfully." disk_space_check=0 else dbg "Insufficient disk space in the disk parition containing the directory $2. $cdsBlocksRequired 512 bytes file blocks required. $cdsAvailable 512 bytes file blocks only is available." dbg "Free up the parition or specify a different parition to write temporary files using the command line switch -tempdirif [ -f "$`date +%F`/javaargs" ] ; then awk 'L[$0]++ == 0' "$`date +%F`/javaargs" >> "$`date +%F`/javaargs.nodups" ; rm -f "$`date +%F`/javaargs" aggregateJavaArgs "$1" "$`date +%F`/javaargs.nodups" # [ "$DBG" -ne 1 ] && rm -f "$`date +%F`/javaargs.nodups" else dbg "Warning: internal error parsing Java arguments. Launcher command may be missing Java Arguments." fi GNU_JVM_FILE="$1" GNU_JVM_HOME="$JVM_HOME" GNU_LAUNCHER_FILE="$INSTALLER_PATH" GNU_TEMP_DIR="$`date +%F`_HOME" if [ -n "$APP_ORIG_HOME" ] ; then MEDIA_DIR="$APP_ORIG_HOME" else MEDIA_DIR=`dirname "$INSTALLER_PATH"` fi [ -z "$LOG" ] && LOG=/dev/null APP_STDERR=">$`date +%F`/APP_STDERR" # make sure APP_STDERR is always assigned. [ \( -z "$SILENT" -a -n "$CONSOLE_ON" \) ] && APP_STDERR="&1" # do re-direction if necessary. if [ "$uimode" -eq 0 ] ; then APP_STDOUT="&1" else APP_STDOUT=">$LOG" # make sure APP_STDOUT is always assigned. [ \( -z "$SILENT" -a -n "$CONSOLE_ON" \) ] && APP_STDOUT="&1" # do re-direction if necessary. fi resolve=0 else dbg "resolved jvm file cannot be found. Failed to launch the application." fi } installBundledJRE() { [ $VeryVerbose ] && dbg "installing bundled JRE..." installJVMc=0 while [ $installJVMc -lt $FILEINDEXCOUNT ] ; do FI_KEY=`awk 'END{ s=sprintf("$FILEINDEX%s", I); print s }' I=$installJVMc ." dbg "Temporary files will be cleanedup after the installation." fi fi } executeLauncher() { [ $VeryVerbose ] && dbg "running inner launcher". [ $VeryVerbose ] && dbg "original command line args $@" [ "$FILEINDEXCOUNT" -ne 1 ] && { dbg "Error extracting inner launcher. Failed to launch the application." return } TYPE=`awk 'END{ split(a,FIELDS, ":"); print FIELDS[1]; }' a=$FILEINDEX0 /dev/null` TYPE=`convert $TYPE` if [ "$TYPE" -eq $BIN_FILE_TYPE ] ; then SIZE=`awk 'END{ split(a,FIELDS, ":"); print FIELDS[3] }' a=$FILEINDEX0 /dev/null` OFFSET=`awk 'END{ split(a,FIELDS, ":"); print FIELDS[4] }' a=$FILEINDEX0 /dev/null` NAME=`awk 'END{ split(a,FIELDS, ":"); print FIELDS[5] }' a=$FILEINDEX0 /dev/null` SIZE=`convert $SIZE` OFFSET=`convert $OFFSET` NAME="$`date +%F`/$NAME.embedded" extractAFile fi INNER_LAUNCHER="$NAME" if [ -f "$INNER_LAUNCHER" ] ; then archiveSize=`wc -c "$INNER_LAUNCHER" | awk '{ if ( $1 ~ /^[0-9]/ ) print $1 ; else print 0; }'` if [ $archiveSize -ne $SIZE ] ; then archiveSize=`ls -l "$INNER_LAUNCHER" | awk '{ if ( $5 ~ /^[0-9]/ ) print $5 ; else print 0; }'` if [ $archiveSize -ne $SIZE ] ; then dbg "Error extracting inner launcher. Archive may be corrupt. Failed to launch the application." return fi fi else dbg "Inner launcher cannot be found. Failed to launch the application." return fi MEDIA_LOCATION=`dirname $INSTALLER_PATH` runInnerLauncher=`awk 'END{ s=sprintf("%s -orig %s %s", c, b, a); print s; }' a="$@" b="$MEDIA_LOCATION" c="$INNER_LAUNCHER" /dev/null` chmod 744 "$INNER_LAUNCHER" dbg "running inner launcher=$runInnerLauncher" eval "$runInnerLauncher" exit 0 } tempLocationErrMesg() { cat << END Temporary directory, $1 does not exist and cannot be created. The current user may not have the necessary permission to write to the directory. Please specify another temporary directory with the option -tempdir. Use the -help option for more information. END } help() { cat << STOP Usage : `basename $0` [OPTIONS] [APPLICATION_ARGUMENTS] Where OPTIONS include: -javahomeJRE home which points to directory containing bin/java. -tempdir /dev/null` if [ "$mode" -ge 1 ] ; then main "$@" fi } _XPG=1 # to maintain backward compatibility with bourne shell on IRIX. See IRIX man pages of sh for more details. BIN_SH=xpg4 # for True64 to use POSIX compliant shell. mode "$@"Temporary directory to be used by the launcher. -cp:a Append to the launcher's classpath. -cp:p Prepend to the launcher's classpath. -log Log debug messages to . -extract Extracts the contents of the archive. -nospacecheck Turns off the launcher disk space checking. -version Returns launcher version and exits. -help Prints this help message and exits STOP } VerifyResolvedJVM() { dbg "Verifying resolved JVM" makeJVMFit extractJVMFiles verifedJVMFile=`cat "$`date +%F`/jvmlist" | xargs awk '/^JVM_HOME:.+/{ print FILENAME; exit }' 2>/dev/null` #Verify the resolved JVM file if [ -f "$verifedJVMFile" ] ; then JVM_HOME=`awk 'BEGIN { FS=":" } $1 == tag { i=index($0,":"); s=substr($0,i+1); print s; exit; }' tag=JVM_HOME "$verifedJVMFile" 2>/dev/null` JVM_HOME=`echo "$JVM_HOME" | sed 's/^[ ]*//;s/[ ]*$//;s/^[ ]*//;s/[ ]*$//'` [ ! -d "$JVM_HOME" ] && { dbg "JVM_HOME is not found in the jvm file $verifedJVMFile." return } JVM_EXE=`awk 'BEGIN { FS=":" } $1 == tag { i=index($0,":"); s=substr($0,i+1); print s; exit; }' tag=JVM_EXE "$verifedJVMFile" 2>/dev/null` JVM_EXE=`echo "$JVM_EXE" | sed 's/^[ ]*//;s/[ ]*$//;s/^[ ]*//;s/[ ]*$//;s/\"//g'` [ -z "$JVM_EXE" ] && { dbg "Javaexe is not found or empty in the jvm file $verifedJVMFile." return } VerifyJVM "$verifedJVMFile" "$JVM_HOME/$JVM_EXE" if [ $verify -eq 0 ] ; then RESOLVED_JVM="$verifedJVMFile" resolvedJVMVerified=0 dbg "Verification passed for $JVM_HOME/$JVM_EXE using the JVM file $verifedJVMFile." else dbg "Verification failed for $JVM_HOME/$JVM_EXE using the JVM file $verifedJVMFile." fi else dbg "resolved jvm file cannot be found. Try to launch the application by searching a JVM..." fi } executeExternalInstructions() { if [ -f "$1" ] ; then SILENT=true initialize LOG=`awk '/^LOG/ { i=index($0,"="); s=substr($0,i+1); print s; exit }' "$1" 2>/dev/null` [ -n "$LOG" ] && { touch "$`date +%F`/$LOG" if [ -f "$`date +%F`/$LOG" ] ; then LOG="$`date +%F`/$LOG" DBG=1 else LOG= fi } action=`awk '/^ACTION/ { i=index($0,"="); s=substr($0,i+1); print s; exit }' "$1" 2>/dev/null` if [ -n "$action" ] ; then if [ "$action" = "SEARCHJVM" ] ; then dbg "searching JVM" awk '/^JVMFILE[0-9]+/ { i=index($0,"="); s=substr($0,i+1); print s >> f; }' f="$`date +%F`/jvmlist" "$1" 2>/dev/null if [ -f "$`date +%F`/jvmlist" ] ; then jvmFileslc=`wc -l "$`date +%F`/jvmlist" | awk '{ print $1 }' 2>/dev/null` if [ "$jvmFileslc" -gt 0 ] ; then VERIFY_JAR=`awk '/^VERIFY_JAR/ { i=index($0,"="); s=substr($0,i+1); print s ; }' "$1" 2>/dev/null` if [ -f "$VERIFY_JAR" ] ; then cp "$VERIFY_JAR" "$`date +%F`/." if [ -f "$`date +%F`/Verify.jar" ] ; then jvmFilescc=1 while [ "$jvmFilescc" -le "$jvmFileslc" ] ; do JVM_FILE=`sed -n -e "${jvmFilescc}p" "$`date +%F`/jvmlist" 2>/dev/null` if [ -f "$JVM_FILE" ] ; then sed "s/ //;s/^[ ]*//;s/[ ]*$//" "$JVM_FILE" >> "$JVM_FILE.sed" 2>/dev/null rm -f "$JVM_FILE" mv "$JVM_FILE.sed" "$JVM_FILE" fi jvmFilescc=`expr "$jvmFilescc" + 1` done checkEnvironment if [ $sv -eq 0 ] ; then dbg "jvm found using an environment variable and verfication passed for $JVM_FILE." JVM_HOME=`awk '/^JVM_HOME/ { i=index($0,":"); s=substr($0,i+1); print s ; }' "$RESOLVED_JVM" 2>/dev/null` echo 1 echo "$JVM_HOME" echo "$RESOLVED_JVM" else jvmFilescc=1 while [ "$jvmFilescc" -le "$jvmFileslc" ] ; do JVM_FILE=`sed -n -e "${jvmFilescc}p" "$`date +%F`/jvmlist" 2>/dev/null` if [ -f "$JVM_FILE" ] ; then searchAndVerify "$JVM_FILE" if [ "$sv" -eq 0 ] ; then dbg "jvm found and verfication passed for $JVM_FILE." JVM_HOME=`awk '/^JVM_HOME/ { i=index($0,":"); s=substr($0,i+1); print s ; }' "$RESOLVED_JVM" 2>/dev/null` echo 1 echo "$JVM_HOME" echo "$RESOLVED_JVM" break fi fi jvmFilescc=`expr "$jvmFilescc" + 1` done fi else dbg "Error copying Verify.jar . JVM Verification can't be performed." fi else dbg "Verify class is missing . JVM Verification can't be performed." fi else dbg "JVM files are not specified. JVM search can't be performed." fi else dbg "JVM file list is missing. JVM search can't be performed." fi elif [ "$action" = "INSTALL_JVM" ] ; then dbg "Installing JVM" BUNDLED_JRE=`awk '/^BUNDLED_JRE/ { i=index($0,"="); s=substr($0,i+1); print s; exit }' "$1" 2>/dev/null` if [ -f "$BUNDLED_JRE" ] ; then dbg "Bundled JRE file is = $BUNDLED_JRE" DESTINATION_DIR=`awk '/^DESTINATION_DIR/ { i=index($0,"="); s=substr($0,i+1); print s; exit }' "$1" 2>/dev/null` if [ -n "$DESTINATION_DIR" ] ; then dbg "Destination directory is = $DESTINATION_DIR" touch "$DESTINATION_DIR/iswritable" 2>/dev/null 1>&2 if [ \( $? -eq 0 \) -a \( -f "$DESTINATION_DIR/iswritable" \) ] ; then dbg "Beginning to install bundled JRE." rm -f "$DESTINATION_DIR/iswritable" whereAmI=`pwd` mkdir "$DESTINATION_DIR" >/dev/null 2>&1 checkDiskSpace "$BUNDLED_JRE" "$DESTINATION_DIR" if [ "$disk_space_check" -eq 0 ] ; then cd "$DESTINATION_DIR" dbg "installing bundled JRE..." "$BUNDLED_JRE" -qq >/dev/null 2>&1 if [ $? -ne 0 ] ; then cd "$whereAmI" dbg "Error installing bundled JRE. Failed to launch the application." else cd "$whereAmI" dbg "Installing bundled JRE successful." fi chmod -R 744 "$DESTINATION_DIR" > /dev/null 2>&1 J="$DESTINATION_DIR" J=`echo "$J" | sed 's/^[ ]*//;s/[ ]*$//;s/^[ ]*//;s/[ ]*$//'` echo "JVM_HOME:$J" >> "$DESTINATION_DIR/jvm" if [ -f "$DESTINATION_DIR/jvm" ] ; then echo "$DESTINATION_DIR/jvm" else dbg "Installation of bundled JRE failed." fi else dbg "diskspace check failed.Installation of bundled JRE failed." fi else dbg "Install Destination directory for bundled JRE is non-writable. Installation of bundled JRE failed." fi else dbg "Install Destination directory for bundled JRE is missing. Installation of bundled JRE failed. " fi else dbg "Bundled JRE file $BUNDLED_JRE is missing. Installation of bundled JRE failed." fi else dbg "unknown ACTION TAG" fi else dbg "ACTION TAG is missing in the input instructions file. JVM search can't be performed." fi cleanupandexit 0 else dbg "Input instructions file missing. JVM Service operation failed." fi } handleApplicationExitStatus() { [ "$applicationExitStatus" ] && [ \( -z "$SILENT" -a "$applicationExitStatus" -ne 0 \) ] && { pbl [ "$VeryVerbose" ] && applicationExitStatusMesg="The application is aborted with exit code $applicationExitStatus." cat << handleApplicationExitStatusSTOP $applicationExitStatusMesg handleApplicationExitStatusSTOP [ -f "$`date +%F`/APP_STDERR" ] && cat "$`date +%F`/APP_STDERR" } } main() { sh_args="$@" VERSION=1.0.0.20028 DBG=0 while [ $# -gt 0 ] ; do case "$1" in --) shift; break;; -javahome) JAVA_HOME="$2"; shift;; -log) DBG=1;LOG="$2"; shift;; -tempdir) `date +%F`_HOME="$2"; shift;; -silent) SILENT=true; app_args="-silent"; shift;; -orig) APP_ORIG_HOME="$2"; shift;; -nospacecheck) disk_space_check_off=1; shift;; -freediskblocks) FREE_DISK_BLOCKS="$2"; shift;; -javaconsole) CONSOLE_ON=true;; -cp:p) CP_P="$2"; shift;; -cp:a) CP_A="$2"; shift;; -extract) extractAll; exit;; -in) inputFile=`echo "$2" | sed -e 's/^\"//;s/\"$//'`; executeExternalInstructions "$inputFile"; exit;; -help) help; exit;; -version) echo $VERSION; exit;; *) app_args=`awk 'END{ s=sprintf("%s \"%s\"",A,B); print s;}' A="$app_args" B="$1"
Subscribe to:
Comments (Atom)