- # windows case has some odd gyrations to get the user list.
- if [ ! -d c:/tmp ]; then
- mkdir c:/tmp
- fi
- # windows7 magical mystery tour lets us create a file c:\\tmp_pids.txt, but then it's not
- # really there in the root of drive c: when we look for it later. hoping to fix that
- # problem by using a subdir, which also might be magical thinking from windows perspective.
- tmppid=c:\\tmp\\pids.txt
- # we have abandoned all hope of relying on ps on windows. instead we use wmic to get full
- # command lines for processes.
- wmic /locale:ms_409 PROCESS get processid,commandline </dev/null >"$tmppid"
- local flag='/c'
- if [ ! -z "$(uname -a | grep "^MING" )" ]; then
- flag='//c'
- fi
- # we 'type' the file to get rid of the unicode result from wmic.
- # needs to be a windows format filename for 'type' to work.
- cmd $flag type "$tmppid" >$PID_DUMP
- \rm "$tmppid"
- local pid_finder_pattern='s/^.*[[:space:]][[:space:]]*\([0-9][0-9]*\) *\$/\1/p'
- local i
- for i in "${patterns[@]}"; do
- PIDS_SOUGHT+=($(cat $PID_DUMP \
- | grep -i "$i" \
- | sed -n -e "$pid_finder_pattern"))
- done