File: gtmprofile.gtc

package info (click to toggle)
fis-gtm 6.2-000-1
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 30,784 kB
  • ctags: 42,554
  • sloc: ansic: 358,483; asm: 4,847; csh: 4,574; sh: 2,261; awk: 200; makefile: 86; sed: 13
file content (299 lines) | stat: -rw-r--r-- 13,320 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
#################################################################
#                                                               #
#       Copyright 2010, 2014 Fidelity Information Services, Inc.#
#                                                               #
#       This source code contains the intellectual property     #
#       of its copyright holder(s), and is made available       #
#       under a license.  If you do not know the terms of       #
#       the license, please stop and do not read further.       #
#                                                               #
#################################################################
# Usage: source "GTMDIST"/gtmprofile
# Sets up environment for single-user use of GT.M with reasonable defaults.
# Explicitly specify gtm_chset=UTF-8 before running this for UTF-8 mode.
# Explicitly specify the gtmdir=directory before sourcing this for simple multi-user environments.
# System administrators should adapt as appropriate for more complex multi-user and production environments.

# Expects the following environment variables to be set:
#   $gtm_chset - set to "UTF-8" if GT.M is to run in Unicode mode
#   $gtm_passwd and $gtm_dbkeys if database encryption is used
# Attempts to set the following environment variables to reasonable values:
#   $gtm_dist $gtmgbldir $gtm_icu_version $gtm_log $gtm_principal_editing $gtm_prompt $gtm_retention $gtmroutines $gtm_tmp $gtmver
# The following shell variables are used and left unset:
#   $old_gtm_dist $old_gtmroutines $old_gtmver $tmp_gtm_shlib $tmp_gtm_tmp $tmp_passwd
# The following shell variables are used and left set:
#   $arch
# ; is used as a separator for sed as being the character most unlikely to be in file names

# Set gtm_arch - GT.M installation script sets the actual architecture & shared library extension for use in this script
arch="ARCH"

# Save gtmroutines if it exists because we need to temporarily override it
if [ -n "$gtmroutines" ] ; then
    old_gtmroutines="$gtmroutines"
else
    unset old_gtmroutines
fi

# Save gtm_passwd if defined because we don't want to mess with prompting for a password within this script
# Need to distinguish between $gtm_passwd not set at all vs. set to null string
if [ -z "${gtm_passwd+isset}" ] ; then
    unset tmp_passwd
else
    tmp_passwd=$gtm_passwd ; unset gtm_passwd
fi

# If an existing GT.M is defined in $gtm_dist, capture it to change version number & directory in environment variables
# Since %XCMD is new, cannot assume that old GT.M version has it
if [ -n "$gtm_dist" ] ; then
    old_gtm_dist=$gtm_dist
    if [ -f $gtm_dist/_XCMD.m ] ; then
	tmp_gtm_shlib=`basename $gtm_dist/libgtmshr.* | cut -d . -f 2` ; export tmp_gtm_shlib
	if [ -f "$gtm_dist/libgtmutil.$tmp_gtm_shlib" ] ; then gtmroutines="$gtm_dist/libgtmutil.$tmp_gtm_shlib"
	else gtmroutines=$gtm_dist ; fi
	export gtmroutines
        old_gtmver=`$gtm_dist/mumps -run %XCMD 'Write $Piece($ZVersion," ",2),"_",$Piece($ZVersion," ",4)'`
    else
        unset old_gtmver
    fi
else unset old_gtm_dist old_gtmver
fi

# Set gtm_dist - GT.M installation script sets the actual directory name
gtm_dist="GTMDIST" ; export gtm_dist

# Determine name of shared library file name extension on this platform
tmp_gtm_shlib=`basename $gtm_dist/libgtmshr.* | cut -d . -f 2` ; export tmp_gtm_shlib

# Idempotence says change the environment only if a new GT.M directory is being pointed to
# otherwise just restore $gtmroutines and exit
if [ $gtm_dist != "$old_gtm_dist" ] ; then

    # Force $gtmroutines to guarantee access to %XCMD for now; repaired later
    if [ -f "$gtm_dist/libgtmutil.$tmp_gtm_shlib" ] ; then gtmroutines="$gtm_dist/libgtmutil.$tmp_gtm_shlib $gtm_dist"
    else gtmroutines=$gtm_dist ; fi
    export gtmroutines
    # Set $gtm_icu_version if icu-config is available - should be set before checking for UTF-8 mode
    # use whence on z/OS and which elsewhere
    if [ "zos" = $arch ] ; then
	which="whence"
    else
	which="which"
    fi
    if [ -z "$gtm_icu_version" -a -n "`$which icu-config`" ] ; then
	gtm_icu_version=`icu-config --version | gtm_chset=M $gtm_dist/mumps -run %XCMD 'Read x Write $Select(+x>48:$Piece(x,".",1)/10,1:$Piece(x,".",1,2))'`
        export gtm_icu_version
    fi

    # If UTF-8 is selected, and UTF-8 mode works, set $gtm_dist to utf8 subdirectory
    # Note that if UTF-8 mode cannot be properly set, GT.M remains configured for M mode
    if [ "zos" = $arch ] ; then
	# for z/OS make sure the en_US.UTF-8 locale is available and set $gtm_chset_locale if it is
	utflocale=`locale -a | grep -i en_us | grep -i utf | sed 's/.lp64$//' | grep '8$' | head -n 1`
	if [ "`echo $gtm_chset|tr utf UTF`" = "UTF-8" -a -d $gtm_dist/utf8 -a $utflocale = en_US.UTF-8 ] ; then
		gtm_chset_locale=$utflocale; export gtm_chset_locale
		if [ "`echo Halt | gtm_prompt='GTM>' $gtm_dist/utf8/mumps -dir | tail -n 1`" = 'GTM>' ] ; then
		    gtm_dont_tag_UTF8_ASCII=0; export gtm_dont_tag_UTF8_ASCII
		    gtm_dist=$gtm_dist/utf8
		    if [ -f "$gtm_dist/libgtmutil.$tmp_gtm_shlib" ] ; then
			gtmroutines="$gtm_dist/libgtmutil.$tmp_gtm_shlib $gtm_dist"
		    else gtmroutines=$gtm_dist ; fi
		else
		    unset gtm_chset_locale  # undo the set
		fi
	fi
    else
	# default $LC_CTYPE if not set
	if [ "`echo $gtm_chset|tr utf UTF`" = "UTF-8" -a -d $gtm_dist/utf8 ] ; then
		if [ -z "$LC_CTYPE" ] ; then
			LC_CTYPE=`locale -a | grep -i .utf | head -n 1` ; export LC_CTYPE
		fi
		echo $LC_CTYPE | grep -i .utf > /dev/null
		if [ $? = 0 -a "`echo Halt | gtm_prompt='GTM>' $gtm_dist/utf8/mumps -dir | tail -n 1`" = 'GTM>' ] ; then
			gtm_dist=$gtm_dist/utf8
			if [ -f "$gtm_dist/libgtmutil.$tmp_gtm_shlib" ] ; then
				gtmroutines="$gtm_dist/libgtmutil.$tmp_gtm_shlib $gtm_dist"
			else gtmroutines=$gtm_dist ; fi
		fi
	fi
    fi

    # Set $gtmver - must be set before $gtmroutines and $gtm_prompt are set
    gtmver=`$gtm_dist/mumps -run %XCMD 'Write $Piece($ZVersion," ",2),"_",$Piece($ZVersion," ",4)'` ; export gtmver

    # Set $gtm_prompt - must be set after checking for UTF-8 mode since prompt may be based on gtm_dist
    if [ -z "$gtm_prompt" ] ; then
        gtm_prompt="GTM>"
    else
        if [ -n "$old_gtm_dist" ] ; then
            gtm_prompt=`echo $gtm_prompt | sed "s;$old_gtm_dist;$gtm_dist;"`
        fi
        if [ -n "$old_gtmver" ] ; then
            gtm_prompt=`echo $gtm_prompt | sed "s;$old_gtmver;$gtmver;"`
        fi
    fi
    export gtm_prompt

    # Set $gtmdir and create default directories if they don't exist
    if [ -n "$gtmdir" ] ; then
        if [ -n "$old_gtm_dist" ] ; then
            gtmdir=`echo $gtmdir | sed "s;$old_gtm_dist;$gtm_dist;"`
        fi
        if [ -n "$old_gtmver" ] ; then
            gtmdir=`echo $gtmdir | sed "s;$old_gtmver;$gtmver;"`
        fi
    else
        gtmdir=$HOME/.fis-gtm
    fi
    export gtmdir
    mkdir -p $gtmdir/r $gtmdir/$gtmver/g $gtmdir/$gtmver/o $gtmdir/$gtmver/r $gtmdir/$gtmver/o/utf8

    # Set $gtmroutines - edit for new GT.M if previously set, otherwise use default
    if [ -n "$old_gtmroutines" ] ; then
        gtmroutines="$old_gtmroutines"
        if [ -n "$old_gtm_dist" ] ; then
            gtmroutines=`echo $gtmroutines | sed "s;$old_gtm_dist;$gtm_dist;"`
        fi
        if [ -n "$old_gtmver" ] ; then
            gtmroutines=`echo $gtmroutines | sed "s;$old_gtmver;$gtmver;"`
        fi
    else
	if [ -f "$gtm_dist/libgtmutil.$tmp_gtm_shlib" ] ; then gtmroutines="$gtm_dist/libgtmutil.$tmp_gtm_shlib $gtm_dist"
	else gtmroutines=$gtm_dist ; fi
        if [ "utf8" = `basename $gtm_dist` ] ; then
	    if [ -d $gtm_dist/plugin/o/utf8 ] ; then
		gtmroutines=`$gtm_dist/mumps -run %XCMD 'set x=$ztrnlnm("gtm_dist")_"/plugin/o/utf8/*."_$ztrnlnm("tmp_gtm_shlib") for  set y=$zsearch(x) quit:""=y  write y," "'`"$gtm_dist/plugin/o/utf8($gtm_dist/plugin/r) $gtmroutines"
	    fi
            gtmroutines=`$gtm_dist/mumps -run %XCMD 'set x=$ztrnlnm("gtmdir")_"/"_$ztrnlnm("gtmver")_"/o/utf8/*."_$ztrnlnm("tmp_gtm_shlib") for  set y=$zsearch(x)  quit:""=y  write y," "'`"$gtmdir/$gtmver/o/utf8($gtmdir/$gtmver/r $gtmdir/r) $gtmroutines"
	else
	    if [ -d $gtm_dist/plugin/o ] ; then
		gtmroutines=`$gtm_dist/mumps -run %XCMD 'set x=$ztrnlnm("gtm_dist")_"/plugin/o/*."_$ztrnlnm("tmp_gtm_shlib") for  set y=$zsearch(x) quit:""=y  write y," "'`"$gtm_dist/plugin/o($gtm_dist/plugin/r) $gtmroutines"
	    fi
            gtmroutines=`$gtm_dist/mumps -run %XCMD 'set x=$ztrnlnm("gtmdir")_"/"_$ztrnlnm("gtmver")_"/o/*."_$ztrnlnm("tmp_gtm_shlib") for  set y=$zsearch(x)  quit:""=y  write y," "'`"$gtmdir/$gtmver/o($gtmdir/$gtmver/r $gtmdir/r) $gtmroutines"
	fi
    fi
    export gtmroutines

    # Set $gtmgbldir - edit for new GT.M if previously set, otherwise use default and create if needed
    if [ -n "$gtmgbldir" ] ; then
        if [ -n "$old_gtm_dist" ] ; then
            gtmgbldir=`echo $gtmgbldir | sed "s;$old_gtm_dist;$gtm_dist;"`
        fi
        if [ -n "$old_gtmver" ] ; then
            gtmgbldir=`echo $gtmgbldir | sed "s;$old_gtmver;$gtmver;"`
        fi
    else
        gtmgbldir=$gtmdir/$gtmver/g/gtm.gld
    fi
    export gtmgbldir

    # Set $gtm_tmp
    tmp_gtm_tmp=`uname -s`
    if [ "HP-UX" = $tmp_gtm_tmp -o "SunOS" = $tmp_gtm_tmp ] ; then
        tmp_gtm_tmp=/var/tmp/fis-gtm/$gtmver
    else
        tmp_gtm_tmp=/tmp/fis-gtm/$gtmver
    fi
    if [ -d "$tmp_gtm_tmp" ] ; then
        gtm_tmp=$tmp_gtm_tmp
    else
        if [ -n "$old_gtm_dist" ] ; then
            gtm_tmp=`echo $gtm_tmp | sed "s;$old_gtm_dist;$gtm_dist;"`
        fi
        if [ -n "$old_gtmver" ] ; then
            gtm_tmp=`echo $gtm_tmp | sed "s;$old_gtmver;$gtmver;"`
        fi
        if [ ! -d "$gtm_tmp" ] ; then
            mkdir -p $tmp_gtm_tmp ; chmod a+rw,+t $tmp_gtm_tmp ; gtm_tmp=$tmp_gtm_tmp
        fi
    fi
    export gtm_tmp

    # Set $gtm_log - use recommended directory if it exists, otherwise modify old value if it exists
    # Don't need to worry about non-existent directory because gtmsecshr will create it
    # $gtm_tmp will be used if $gtm_log not defined
    if [ -d /var/log/fis-gtm/$gtmver ] ; then
        gtm_log=/var/log/fis-gtm/$gtmver
    elif [ -n "$gtm_log" ] ; then
        if [ -n "$old_gtm_dist" ] ; then
            gtm_log=`echo $gtm_log | sed "s;$old_gtm_dist;$gtm_dist;"`
        fi
        if [ -n "$old_gtmver" ] ; then
            gtm_log=`echo $gtm_log | sed "s;$old_gtmver;$gtmver;"`
        fi
    else
        gtm_log=$gtm_tmp
    fi
    export gtm_log

    # Set $PATH
    if [ -n "$old_gtm_dist" ] ; then
        PATH=`echo $PATH | sed "s;$old_gtm_dist;$gtm_dist;"`
    fi
    if [ -n "$old_gtmver" ] ; then
        PATH=`echo $PATH | sed "s;$old_gtmver;$gtmver;"`
    fi
    if [ -z "`echo $PATH | grep -E  \(:\|\^\)$gtm_dist\(:\|$\)`" ] ; then
        PATH=$PATH:$gtm_dist
    fi

    # Other useful environment variables
    # System administrators - add, delete or modify GT.M environment variables here as appropriate for your installation
    if [ -z "$gtm_etrap" ] ; then
        gtm_etrap='Write:(0=$STACK) "Error occurred: ",$ZStatus,!' ; export gtm_etrap
    fi
    if [ -z "$gtm_principal_editing" ] ; then
        gtm_principal_editing="EDITING" ; export gtm_principal_editing
    fi
    if [ -z "$gtm_repl_instance" ] ; then
        gtm_repl_instance=$gtmdir/$gtmver/g/gtm.repl ; export gtm_repl_instance
    elif [ -n "$old_gtmver" ] ; then
	gtm_repl_instance=`echo $gtm_repl_instance | sed "s;$old_gtmver;$gtmver;"`
    fi
    if [ -z "$gtm_retention" ] ; then
        gtm_retention=42 ; export gtm_retention
    fi

    # Set environment variables for plugins in $gtm_dist/plugin
    tmp_gtm_tmp=`uname -s`
    if [ "HP-UX" = $tmp_gtm_tmp -o "SunOS" = $tmp_gtm_tmp ] ; then
        tmp_gtm_tmp=/var/tmp/
    else
        tmp_gtm_tmp=/tmp/
    fi
    tmp_gtm_tmp=$tmp_gtm_tmp`$gtm_dist/mumps -run %XCMD 'write $$%RANDSTR^%RANDSTR(12)'`.tmp
    $gtm_dist/mumps -run %XCMD 'set x=$ztrnlnm("gtm_dist")_"/plugin/*.xc" for  set y=$zsearch(x,213) quit:""=y  set z=$zparse(y,"NAME") write "GTMXC_",z,"=",y," ; export GTMXC_",z,!' >$tmp_gtm_tmp
    if [ -s $tmp_gtm_tmp ] ; then . $tmp_gtm_tmp ; fi
    rm $tmp_gtm_tmp

    # Define aliases
    alias dse="$gtm_dist/dse"
    alias gde="$gtm_dist/mumps -run GDE"
    alias gtm="$gtm_dist/gtm"
    alias lke="$gtm_dist/lke"
    alias mupip="$gtm_dist/mupip"

    # Create default global directory and database if they don't exist
    # Must handle case where database file path is relative to global directory
    if [ ! -f $gtmgbldir ] ; then
        if [ -f $gtm_dist/gdedefaults ] ; then
            $gtm_dist/mumps -run %XCMD 'Write "@","'$gtm_dist'/gdedefaults",!,"exit",!' | $gtm_dist/mumps -run GDE; stty sane
        else
            echo exit | $gtm_dist/mumps -run GDE
        fi
    fi
    if [ ! -f "`dirname $gtmgbldir`/`basename $gtmgbldir gld`dat" ] ; then
        ( cd `dirname $gtmgbldir` ; mupip create ; mupip set -journal="on,before" -region "*" )
    fi

# If $old_gtm_dist and $gtm_dist are the same, need to restore $gtmroutines
else
    gtmroutines="$old_gtmroutines" ; export gtmroutines
fi

# Restore gtm_passwd if it was set
if [ ! -z "${tmp_passwd+isset}" ] ; then
    gtm_passwd=$tmp_passwd ; export gtm_passwd
fi

unset old_gtm_dist old_gtmver old_gtmroutines tmp_gtm_shlib tmp_gtm_tmp tmp_passwd