📄 permissn.tcl
字号:
# PERMISSN.TCL - Setup procedures for implementing permission wizard page
#
# Copyright 1999-2003 Wind River Systems, Inc
#
# modification history
# --------------------
# 03c,29apr03,bjl text rewording.
# 03b,23aug02,bjl catch permission change error (spr 81083).
# 03a,12jun01,j_w Modified for Tornado 2.2
# 02h,21sep00,j_w made the $WIND_BASE/.wind permission based on the
# permission set by the user
# 02g,31jan00,bwd Deleted redundant codes and replaced setupVals(cmdMode)
# with isGUImode
# 02f,17dec99,clc change switch statement patterns
# 02e,23nov99,clc add text mode executable permissions
# 02d,09nov99,clc add text mode
# 02c,27oct99,bjl set permissions for the WIND_BASE directory.
# 02b,05oct99,j_w Fixed Title
# 02a,30Sep99,j_w Modified for T3
# 01d,23jul99,j_w added text messages
# 01c,01feb99,tcy moved procs from INSTALL.TCL.
# 01b,30jan99,bjl added execute permissions (spr 23883, 24552).
# 01a,26jan99,tcy extracted from INSTW32.TCL.
#
#############################################################################
#
# pageCreate(permission) - display permissions of files after installation
#
# This procedure will display permissions of files after installation
#
# SYNOPSIS
# .tS
# pageCreate(permission)
# .tE
#
# PARAMETERS: N/A
#
# RETURNS: N/A
#
# ERRORS: N/A
#
proc pageCreate(permission) {} {
global ctrlVals
global setupVals
global perVals
if {[catch {setupId effective group} gprName]} {
set gprName "group"
}
if {[catch {setupId effective user} usrName]} {
set usrName "user"
}
if ![info exists setupVals(umask)] { umaskGet }
if { [isGUImode] } {
set msg0 [strTableGet PERMISSION_MSG_1]
set ctrlVals(ur) "$usrName read"
set ctrlVals(gr) "$gprName read"
set ctrlVals(or) "other read"
set ctrlVals(uw) "$usrName write"
set ctrlVals(gw) "$gprName write"
set ctrlVals(ow) "other write"
set ctrlVals(ux) "$usrName execute"
set ctrlVals(gx) "$gprName execute"
set ctrlVals(ox) "other execute"
set msg0Ctrl [list label -name msg0 -title $msg0 \
-x 100 -y 10 -w 205 -h 64]
set urCtrl [list boolean -name ur \
-title $ctrlVals(ur) \
-newgroup -auto \
-x 100 -y 80 -w 70 -h 10]
set grCtrl [list boolean -name gr \
-title $ctrlVals(gr) \
-auto \
-x 100 -y 93 -w 70 -h 10]
set orCtrl [list boolean -name or \
-title $ctrlVals(or) \
-auto \
-x 100 -y 106 -w 70 -h 10]
set uwCtrl [list boolean -name uw \
-title $ctrlVals(uw) \
-auto \
-x 170 -y 80 -w 70 -h 10]
set gwCtrl [list boolean -name gw \
-title $ctrlVals(gw) \
-auto \
-x 170 -y 93 -w 70 -h 10]
set owCtrl [list boolean -name ow \
-title $ctrlVals(ow) \
-auto \
-x 170 -y 106 -w 70 -h 10]
set uxCtrl [list boolean -name ux \
-title $ctrlVals(ux) \
-newgroup -auto \
-x 240 -y 80 -w 70 -h 10]
set gxCtrl [list boolean -name gx \
-title $ctrlVals(gx) \
-auto \
-x 240 -y 93 -w 70 -h 10]
set oxCtrl [list boolean -name ox \
-title $ctrlVals(ox) \
-auto \
-x 240 -y 106 -w 70 -h 10]
set ctrlVals(volatileFrm) [list $msg0Ctrl $urCtrl \
$grCtrl $orCtrl \
$uwCtrl $gwCtrl $owCtrl \
$uxCtrl $gxCtrl $oxCtrl ]
set ctrlVals(permissionsw) [dlgFrmCreate [strTableGet PERMISSION_TITLE]]
controlCheckSet $ctrlVals(permissionsw).ur 1
controlCheckSet $ctrlVals(permissionsw).uw 1
controlCheckSet $ctrlVals(permissionsw).ux 1
controlCheckSet $ctrlVals(permissionsw).gr 1
controlCheckSet $ctrlVals(permissionsw).gx 1
controlCheckSet $ctrlVals(permissionsw).or 1
controlCheckSet $ctrlVals(permissionsw).ox 1
controlEnable $ctrlVals(permissionsw).ur 0
controlEnable $ctrlVals(permissionsw).uw 0
controlEnable $ctrlVals(permissionsw).ux 0
# test automation
if { $ctrlVals(useInputScript) } {
autoSetupLog "Permissions page:"
autoSetupLog "\tUsing default settings:"
autoSetupLog "\tuser read: \
[controlChecked $ctrlVals(permissionsw).ur]"
autoSetupLog "\tuser write: \
[controlChecked $ctrlVals(permissionsw).uw]"
autoSetupLog "\tuser execute: \
[controlChecked $ctrlVals(permissionsw).ux]"
autoSetupLog "\tgroup read: \
[controlChecked $ctrlVals(permissionsw).gr]"
autoSetupLog "\tgroup write: \
[controlChecked $ctrlVals(permissionsw).gw]"
autoSetupLog "\tgroup execute: \
[controlChecked $ctrlVals(permissionsw).gx]"
autoSetupLog "\tother read: \
[controlChecked $ctrlVals(permissionsw).or]"
autoSetupLog "\tother write: \
[controlChecked $ctrlVals(permissionsw).ow]"
autoSetupLog "\tother execute: \
[controlChecked $ctrlVals(permissionsw).ox]"
nextCallback
} else {
controlFocusSet $ctrlVals(permissionsw).gr
controlEnable $ctrlVals(permissionsw).backButt 1
}
} else { # TEXT mode
# find the maximum string length among other, usrName and gprName
if { [string length "other"] > [string length $gprName] && \
[string length "other"] > [string length $usrName] } {
set perVals(colWidth) [string length "other"]
} elseif {
[string length $usrName] > \
[string length $gprName] } {
set perVals(colWidth) [string length $usrName]
} else {
set perVals(colWidth) [string length $gprName]
}
# initialize the permission array
set perVals(infoList) "ur uw gr gw or ow"
foreach item $perVals(infoList) {
if { $setupVals($item) == 1 } {
set perVals($item) "x"
} else {
set perVals($item) ""
}
}
set width [expr $perVals(colWidth)]
set str [createString - $width]
while (1) {
printPageTitle [strTableGet 1460_TITLE_PERMISSION]
puts "[strTableGet 3160_PERMISSION]\n"
puts "[strTableGet 3162_PERMISSION]\n"
puts [format "%4s %10s %-*s %-13s" "item" " on " $width \
user " permission" ]
puts [format "%4s %10s %-*s %-13s" "----" " ---- " $width \
$str " ----------" ]
puts [format "%4s %10s %-*s %-13s" "" " $perVals(ur) " \
$width $usrName " read" ]
puts [format "%4s %10s %-*s %-13s" "" " $perVals(uw) " \
$width $usrName " write" ]
puts [format "%4s %10s %-*s %-13s" 1 " $perVals(gr) " \
$width $gprName " read" ]
puts [format "%4s %10s %-*s %-13s" 2 " $perVals(gw) " \
$width $gprName " write" ]
puts [format "%4s %10s %-*s %-13s" 3 " $perVals(or) " \
$width other " read" ]
puts [format "%4s %10s %-*s %-13s" 4 " $perVals(ow) " \
$width other " write" ]
puts ""
set ret [prompt [strTableGet 3165_PERMISSION_QUESTION]]
switch -regexp -- $ret {
"^-$" { backCallback; return 0 }
"^[0-9]+([ ][0-9]+)*$" { changePermission $ret }
"^$" { nextCallback; return 0 }
"[eE][xX][iI][tT]" { return 0 }
default { }
}
}
nextCallback
return 0
}
}
#############################################################################
#
# pageProcess(permission) - process inputs from permission page
#
# This procedure will process permission set by users from the permission page
#
# SYNOPSIS
# .tS
# pageProcess(permission)
# .tE
#
# PARAMETERS: N/A
#
# RETURNS: 1 when successful
#
# ERRORS: N/A
#
proc pageProcess(permission) {} {
global ctrlVals
global setupVals
global infVals
if { [isGUImode] } {
beginWaitCursor
set setupVals(ur) [controlChecked $ctrlVals(permissionsw).ur]
set setupVals(gr) [controlChecked $ctrlVals(permissionsw).gr]
set setupVals(or) [controlChecked $ctrlVals(permissionsw).or]
set setupVals(uw) [controlChecked $ctrlVals(permissionsw).uw]
set setupVals(gw) [controlChecked $ctrlVals(permissionsw).gw]
set setupVals(ow) [controlChecked $ctrlVals(permissionsw).ow]
set setupVals(ux) [controlChecked $ctrlVals(permissionsw).ux]
set setupVals(gx) [controlChecked $ctrlVals(permissionsw).gx]
set setupVals(ox) [controlChecked $ctrlVals(permissionsw).ox]
} else { # TEXT MODE
# set permissions for the WIND_BASE (destDir) directory.
set setupVals(ux) 1
set setupVals(gx) 1
set setupVals(ox) 1
}
umaskSet
# set permissions for the WIND_BASE (destDir) directory.
set windBase [destDirGet]
if {$setupVals(gr)} {
catch {exec /bin/chmod g+r $windBase}
catch {exec /bin/chmod g+r $windBase/.wind}
} else {
catch {exec /bin/chmod g-r $windBase}
catch {exec /bin/chmod g-r $windBase/.wind}
}
if {$setupVals(gw)} {
catch {exec /bin/chmod g+w $windBase}
catch {exec /bin/chmod g+w $windBase/.wind}
} else {
catch {exec /bin/chmod g-w $windBase}
catch {exec /bin/chmod g-w $windBase/.wind}
}
if {$setupVals(or)} {
catch {exec /bin/chmod o+r $windBase}
catch {exec /bin/chmod o+r $windBase/.wind}
} else {
catch {exec /bin/chmod o-r $windBase}
catch {exec /bin/chmod o-r $windBase/.wind}
}
if {$setupVals(ow)} {
catch {exec /bin/chmod o+w $windBase}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -