File: configure.menu

package info (click to toggle)
xcin 2.3.03-3
  • links: PTS
  • area: main
  • in suites: slink
  • size: 2,192 kB
  • ctags: 608
  • sloc: ansic: 6,475; sh: 653; makefile: 221
file content (455 lines) | stat: -rwxr-xr-x 9,658 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
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
#!/bin/sh

#
#  Here we get the $XCINVERSION, $ENV and $PREPATH from environment variable.
#
conf=config.status
showmenu=$1
predefined_ostype=`ls script/os_def`

pwd=`pwd`
if [ "`basename $pwd`" = script ]; then
    cd ..
fi

get_ostype()
{
    the_ostype=`uname`
    if [ "$the_ostype" = 'SunOS' ]; then
	the_release=`uname -a | awk '{print $3}' | sed 's/\(.\).*/\1/'`
	the_ostype="$the_ostype$the_release"
	unset the_release
    fi
}

get_word()
{
    file=$1
    word=$2

    grep "$word=" $file | sed "s/$word=\(.*\)/\1/"
    unset file word
}

load_configure()
{
    cf=$1
    OS=`get_word $cf OS`
    CFLAGS=`get_word $cf CFLAGS`
    CC=`get_word $cf CC`
    XINC=`get_word $cf XINC`
    XLIB=`get_word $cf XLIB`

    INSTALL_XCIN=`get_word $cf INSTALL_XCIN`
    INSTALL_INPTABS=`get_word $cf INSTALL_INPTABS`
    INSTALL_DOCS=`get_word $cf INSTALL_DOCS`
    INSTALL_UTILS=`get_word $cf INSTALL_UTILS`
    
    PATH_XCIN_PREFIX=`get_word $cf PATH_XCIN_PREFIX`
    PATH_XCIN_BIN=`get_word $cf PATH_XCIN_BIN`
    PATH_XCIN_DIR=`get_word $cf PATH_XCIN_DIR`
    PATH_XCIN_MAN=`get_word $cf PATH_XCIN_MAN`

    OPT_XCIN_CFONT=`get_word $cf OPT_XCIN_CFONT`
    OPT_XCIN_EFONT=`get_word $cf OPT_XCIN_EFONT`
    OPT_UTIL_CIN2TAB=`get_word $cf OPT_UTIL_CIN2TAB`
    OPT_UTIL_TSINTOOLS=`get_word $cf OPT_UTIL_TSINTOOLS`
    OPT_INPTAB_SRC=`get_word $cf OPT_INPTAB_SRC`
    OPT_INPTAB_PHONE=`get_word $cf OPT_INPTAB_PHONE`
    OPT_INPTAB_PINYIN=`get_word $cf OPT_INPTAB_PINYIN`
    OPT_INPTAB_CJ=`get_word $cf OPT_INPTAB_CJ`
    OPT_INPTAB_ZBOSH=`get_word $cf OPT_INPTAB_ZBOSH`
    OPT_INPTAB_CANTON=`get_word $cf OPT_INPTAB_CANTON`
    OPT_INPTAB_AR30=`get_word $cf OPT_INPTAB_AR30`
    unset cf
}

load_os_def()
{
    osdef="script/os_def/$1"
    if [ -f "$osdef" ]; then
        OS=`get_word $osdef OS`
        CFLAGS=`get_word $osdef CFLAGS`
        CC=`get_word $osdef CC`
        XINC=`get_word $osdef XINC`
        XLIB=`get_word $osdef XLIB`
    fi
    OS=$1
    unset osdef
}


##########################################################################
##########################################################################

myecho() {
    echo "$1\c"
}
if [ -z "`echo -n test | grep n`" ]; then 
    ECHO='echo -n'
else
    ECHO='myecho'
fi

print_menu()
{
    clear
    cat << EOF
<<< Welcome to Configuration Program of $XCINVERSION >>>

[E]Environment: $OS
    [C]C Compiler: $CC
    [F]CFLAGS: $CFLAGS
    [I]X Include: $XINC    
    [L]X Library: $XLIB
Packages:
    [X]Xcin -------------------  <$INSTALL_XCIN>
       Options: C_Font=$OPT_XCIN_CFONT 
                E_Font=$OPT_XCIN_EFONT
    [T]Input Tables -----------  <${INSTALL_INPTABS}>
       Options: Src=<$OPT_INPTAB_SRC> Tab: $opt_inptabs
    [U]Utilities --------------  <${INSTALL_UTILS}>
       Options: $opt_utils
    [D]Documentations ---------  <${INSTALL_DOCS}>
Paths:
    [0]Prefix:		 $PATH_XCIN_PREFIX
    [1]Binaries:         $PATH_XCIN_BIN
    [2]Xcin main path:   $PATH_XCIN_DIR
    [3]Xcin manual path: $PATH_XCIN_MAN
[H]Help;   [S]Save and Continue;   [O]Save the OS Def;   [Q]Quit and Stop;

EOF
    $ECHO 'Your choice [ECFILXTDU0123HSOQ]: '
}


##########################################################################
##########################################################################

set_opt_inptabs()
{
    opt_inptabs=""
    if [ "$OPT_INPTAB_PHONE" = yes ]; then
	opt_inptabs="${opt_inptabs}phone "
    fi
    if [ "$OPT_INPTAB_PINYIN" = yes ]; then
	opt_inptabs="${opt_inptabs}pinyin "
    fi
    if [ "$OPT_INPTAB_CJ" = yes ]; then
	opt_inptabs="${opt_inptabs}cj "
    fi
    if [ "$OPT_INPTAB_ZBOSH" = yes ]; then
	opt_inptabs="${opt_inptabs}zbosh "
    fi
    if [ "$OPT_INPTAB_CANTON" = yes ]; then
	opt_inptabs="${opt_inptabs}canton "
    fi
    if [ "$OPT_INPTAB_AR30" = yes ]; then
	opt_inptabs="${opt_inptabs}ar30 "
    fi
}

set_opt_utils()
{
    opt_utils=""
    if [ "$OPT_UTIL_CIN2TAB" = yes ]; then
	opt_utils="${opt_utils}cin2tab "
    fi
    if [ "$OPT_UTIL_TSINTOOLS" = yes ]; then
	opt_utils="${opt_utils}tsintools "
    fi
}


##########################################################################
##########################################################################

set_yes_no()
{
    read opt
    case "$opt" in
    y|Y)    echo yes
	    ;;
    n|N)    echo no
	    ;;
    esac
}

change_yes_no()
{
    if [ "$1" = yes ]; then
	echo no
    else
	echo yes
    fi
}

set_xcin_menu()
{
    while [ 1 ]; do
	cat << EOF
Options: [0]C_Font=$OPT_XCIN_CFONT
         [1]E_Font=$OPT_XCIN_EFONT
         [M]Main menu
EOF
	$ECHO "Please select one [01M]: "
	read opt
	case "$opt" in
	0)  $ECHO "Please input the Chinese font name: "
	    read opt
	    OPT_XCIN_CFONT=$opt
	    ;;
	1)  $ECHO "Please input the English font name: "
	    read opt
	    OPT_XCIN_EFONT=$opt
	    ;;
	m|M)break
	    ;;
	esac
    done
    unset opt
}

set_inptab_menu()
{
    while [ 1 ]; do
	cat << EOF
Options: [0]Install the source of the inptab (.cin): <$OPT_INPTAB_SRC>
         [1]Phone:     <$OPT_INPTAB_PHONE>
         [2]Pin-Yin:   <$OPT_INPTAB_PINYIN>
         [3]ChangJei:  <$OPT_INPTAB_CJ>
         [4]zmd-Bosh:  <$OPT_INPTAB_ZBOSH>
         [5]Cantonese: <$OPT_INPTAB_CANTON>
         [6]Array30: <$OPT_INPTAB_AR30>
         [M]Main menu
EOF
	$ECHO "Please select one [01M]: "
	read opt
	case "$opt" in
	0)  OPT_INPTAB_SRC=`change_yes_no $OPT_INPTAB_SRC`
	    ;;
	1)  OPT_INPTAB_PHONE=`change_yes_no $OPT_INPTAB_PHONE`
	    ;;
	2)  OPT_INPTAB_PINYIN=`change_yes_no $OPT_INPTAB_PINYIN`
	    ;;
	3)  OPT_INPTAB_CJ=`change_yes_no $OPT_INPTAB_CJ`
	    ;;
	4)  OPT_INPTAB_ZBOSH=`change_yes_no $OPT_INPTAB_ZBOSH`
	    ;;
	5)  OPT_INPTAB_CANTON=`change_yes_no $OPT_INPTAB_CANTON`
	    ;;
	6)  OPT_INPTAB_CANTON=`change_yes_no $OPT_INPTAB_AR30`
	    ;;
	m|M)break
	    ;;
	esac
    done	
    unset opt
}

set_util_menu()
{
    while [ 1 ]; do
	cat << EOF
Options: [0]cin2tab: input table convertor --------- <$OPT_UTIL_CIN2TAB>
         [1]tsintools: tsin manage tools ----------- <$OPT_UTIL_TSINTOOLS>
         [M]Main menu
EOF
	$ECHO "Please select one [01M]: "
	read opt
	case "$opt" in
	0)  OPT_UTIL_CIN2TAB=`change_yes_no $OPT_UTIL_CIN2TAB`
	    ;;
	1)  OPT_UTIL_TSINTOOLS=`change_yes_no $OPT_UTIL_TSINTOOLS`
	    ;;
	m|M)break
	    ;;
	esac
    done
    unset opt
}

set_prefix()
{
    PATH_XCIN_PREFIX=$1
    PATH_XCIN_BIN=$PATH_XCIN_PREFIX/X11R6/bin
    PATH_XCIN_DIR=$PATH_XCIN_PREFIX/lib/xcin
    PATH_XCIN_MAN=$PATH_XCIN_PREFIX/X11R6/man
}

##########################################################################
##########################################################################

save_config_status()
{
    cat > config.status << EOF
OS=$OS
CC=$CC
CFLAGS=$CFLAGS
XINC=$XINC
XLIB=$XLIB

INSTALL_XCIN=$INSTALL_XCIN
INSTALL_INPTABS=$INSTALL_INPTABS
INSTALL_DOCS=$INSTALL_DOCS
INSTALL_UTILS=$INSTALL_UTILS

PATH_XCIN_PREFIX=$PATH_XCIN_PREFIX
PATH_XCIN_BIN=$PATH_XCIN_BIN
PATH_XCIN_DIR=$PATH_XCIN_DIR
PATH_XCIN_MAN=$PATH_XCIN_MAN

OPT_XCIN_CFONT=$OPT_XCIN_CFONT
OPT_XCIN_EFONT=$OPT_XCIN_EFONT
OPT_UTIL_CIN2TAB=$OPT_UTIL_CIN2TAB
OPT_UTIL_TSINTOOLS=$OPT_UTIL_TSINTOOLS
OPT_INPTAB_SRC=$OPT_INPTAB_SRC
OPT_INPTAB_PHONE=$OPT_INPTAB_PHONE
OPT_INPTAB_PINYIN=$OPT_INPTAB_PINYIN
OPT_INPTAB_CJ=$OPT_INPTAB_CJ
OPT_INPTAB_ZBOSH=$OPT_INPTAB_ZBOSH
OPT_INPTAB_CANTON=$OPT_INPTAB_CANTON
OPT_INPTAB_AR30=$OPT_INPTAB_AR30
EOF
}

save_os_def()
{
    cat > script/os_def/$OS << EOF
OS=$OS
CC=$CC
CFLAGS=$CFLAGS
XINC=$XINC
XLIB=$XLIB
EOF
}

##########################################################################
##########################################################################

#
#  Main program
#
if [ -f $conf ]; then
    load_configure $conf
else
    load_configure script/$conf
fi

if [ ! -z "$ENV" ]; then
    load_os_def $ENV
else
    get_ostype
    if [ -f script/os_def/$the_ostype ]; then
	load_os_def $the_ostype
    fi
fi
if [ ! -z "$PREPATH" ]; then
    set_prefix $PREPATH
fi

if [ "$showmenu" = 0 ]; then
    save_config_status
    exit 0
fi
    

set_opt_inptabs
set_opt_utils
while [ 1 ]; do
    print_menu
    read cmd

    case "$cmd" in
    e | E)
	echo "The pre-defined OS type are: "
	echo "    "$predefined_ostype
	echo " "
	$ECHO "Please input the OS type: "
	read cmd
	load_os_def $cmd
	;;
    c | C)
	$ECHO "Please input the name of the C Compiler: "
	read cmd
	CC=$cmd
	;;
    f | F)
	$ECHO "Please input the C Flags: "
	read cmd
	CFLAGS=$cmd
	;;
    i | I)
	$ECHO "Please input the X Include Path: "
	read cmd
	XINC=$cmd
	;;
    l | L)
	$ECHO "Please input the X Library Path: "
	read cmd
	XLIB=$cmd
	;;
    x | X)
	$ECHO "Do you want to install xcin [y/n]? "
	INSTALL_XCIN=`set_yes_no`
        if [ "$INSTALL_XCIN" = yes ]; then
	    set_xcin_menu
        fi
	;;
    t | T)
	$ECHO "Do you want to install input tables [y/n]? "
	INSTALL_INPTABS=`set_yes_no`
	if [ "$INSTALL_INPTABS" = yes ]; then
	    set_inptab_menu
	    set_opt_inptabs
	fi
	;;
    d | D)
	$ECHO "Do you want to install the documentataions [y/n]? "
	INSTALL_DOCS=`set_yes_no`
	;;
    u | U)
	$ECHO "Do you want to install the utilities [y/n]? "
	INSTALL_UTILS=`set_yes_no`
	if [ "$INSTALL_UTILS" = yes ]; then
	    set_util_menu
	    set_opt_utils
	fi
	;;
    0)
	$ECHO "Please input the prefix path: "
	read opt
	set_prefix $opt
	;;
    1)
	$ECHO "Please input the binaries path: "
	read opt
	PATH_XCIN_BIN=$opt
	;;
    2)
	$ECHO "Please input the xcin main path: "
	read opt
	PATH_XCIN_DIR=$opt
	;;
    3)
	$ECHO "Please input the xcin manual path: "
	read opt
	PATH_XCIN_MAN=$opt
	;;
    h | H)
	more script/config.help
	;;
    s | S)
	save_config_status
	break
	;;
    o | O)
	save_os_def
	;;
    q | Q)
	exit 1
	;;
    esac
done

exit 0