This file is indexed.

/usr/share/xcrysden/Tcl/undoAdvGeom.tcl is in xcrysden-data 1.5.60-1build3.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  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
#############################################################################
# Author:                                                                   #
# ------                                                                    #
#  Anton Kokalj                                  Email: Tone.Kokalj@ijs.si  #
#  Department of Physical and Organic Chemistry  Phone: x 386 1 477 3523    #
#  Jozef Stefan Institute                          Fax: x 386 1 477 3811    #
#  Jamova 39, SI-1000 Ljubljana                                             #
#  SLOVENIA                                                                 #
#                                                                           #
# Source: $XCRYSDEN_TOPDIR/Tcl/undoAdvGeom.tcl
# ------                                                                    #
# Copyright (c) 1996-2003 by Anton Kokalj                                   #
#############################################################################

proc UndoMenuMotion {menu y} {
    global undoMenu

    set n [$menu index $y]

    # it may easily happen that $n is not an integer
    if [catch {expr abs($n)}] {
	return
    }

    for {set i 0} {$i < $n} {incr i} {	
	$menu entryconfigure $i \
		-foreground $undoMenu(active_fg) \
		-background $undoMenu(active_bg)
    }
    set m [$menu yposition end]
    for {set i $n} {$i < $m} {incr i} {
	$menu entryconfigure $i \
		-foreground $undoMenu(default_fg) \
		-background $undoMenu(default_bg)
    }
}


proc Undo {menu redo index} {
    global undoAdvGeom

    set n $index

    set ld [expr $n - $undoAdvGeom(start_index)]    

    set undoAdvGeom(redo_list) \
	    [GetUndoRedoList [lrange $undoAdvGeom(list) 0 $ld] \
	    $undoAdvGeom(redo_list)]
    $undoAdvGeom(menu) entryconfigure "Redo ..." -state normal

    set undoAdvGeom(list) [lrange $undoAdvGeom(list) [expr $ld + 1] end]
    if { $undoAdvGeom(list) == {} } {
	$undoAdvGeom(menu) entryconfigure "Undo ..." -state disabled
    }
    CreateUndoRedoMenu $undoAdvGeom(list) $menu $redo Undo \
	    undoAdvGeom(start_index) undoAdvGeom(current_index)
    CreateUndoRedoMenu $undoAdvGeom(redo_list) $redo $menu Redo \
	    undoAdvGeom(redo_start_index) undoAdvGeom(redo_current_index)

    # insert the real UNDO command here !!!
    xcAdvGeomState undo [expr $ld + 1]
    CalStru
    ###
}


proc GetUndoRedoList {listnew listold} {
    #
    # we must revert the order of newlist
    #

    set n [llength $listnew]
    set redo_list {}
    for {set i $n} {$i > 0} {incr i -1} {
	set ii [expr $i - 1]
	lappend redo_list [lindex $listnew $ii]
    }
    return [concat $redo_list $listold]
}


proc Redo {redo menu index} {
    global undoAdvGeom

    set n $index

    set ld [expr $n - $undoAdvGeom(redo_start_index)]

    set undoAdvGeom(list) \
	    [GetUndoRedoList [lrange $undoAdvGeom(redo_list) 0 $ld] \
	    $undoAdvGeom(list)]
    $undoAdvGeom(menu) entryconfigure "Undo ..." -state normal

    set undoAdvGeom(redo_list) \
	    [lrange $undoAdvGeom(redo_list) [expr $ld + 1] end]
    if { $undoAdvGeom(redo_list) == {} } {
	$undoAdvGeom(menu) entryconfigure "Redo ..." -state disabled
    }
    CreateUndoRedoMenu $undoAdvGeom(list) $menu $redo Undo \
	    undoAdvGeom(start_index) undoAdvGeom(current_index)
    CreateUndoRedoMenu $undoAdvGeom(redo_list) $redo $menu Redo \
	    undoAdvGeom(redo_start_index) undoAdvGeom(redo_current_index)

    # insert the real REDO command here !!!
    xcAdvGeomState new [expr $ld + 1]
    CalStru

}


proc GenCommUndoRedo item {
    global undoAdvGeom undoMenu

    $undoAdvGeom(menu) entryconfigure "Undo ..." -state normal

    ##########################
    #generate command HERE !!!
    #^^^^^^^^^^^^^^^^^^^^^^^^^
    set item [list $item]
    set undo $undoMenu(undo)
    set redo $undoMenu(redo)
    #-----------
    set undoAdvGeom(list) [concat "$item" $undoAdvGeom(list)]
    CreateUndoRedoMenu $undoAdvGeom(list) $undo $redo Undo \
	    undoAdvGeom(start_index) undoAdvGeom(current_index)
    
    # delete redo-list
    $undoAdvGeom(menu) entryconfigure "Redo ..." -state disabled
    set undoAdvGeom(redo_list) {}
    $redo delete 0 end
}


proc CreateUndoRedoMenu {list menu1 menu2 command start_index current_index} {
    global undoMenu
    upvar #0 $start_index start $current_index current
    # first delete the whole list, then rebuilt
    $menu1 delete 0 end

    set start $current
    foreach item $list {
	$menu1 add command -label $item \
		-command [list $command $menu1 $menu2 $current] \
		-foreground $undoMenu(default_fg) \
		-background $undoMenu(default_bg) \
		-activeforeground $undoMenu(active_fg) \
		-activebackground $undoMenu(active_bg)
	
	incr current
    }
}

proc ClearUndoRedoBuffer {} {
    global undoAdvGeom
    
    set undoAdvGeom(start_index)        0
    set undoAdvGeom(current_index)      0
    set undoAdvGeom(list)               {}
    set undoAdvGeom(redo_start_index)   0
    set undoAdvGeom(redo_current_index) 0
    set undoAdvGeom(redo_list)          {}
}

#set m [menubutton .advgeom -text AdvGeom -menu .advgeom.ur]
#
#set menu [menu .advgeom.ur -tearoff 0]
#
#$menu add cascade -label Undo -menu $menu.undo
#$menu add cascade -label Redo -menu $menu.redo
#$menu entryconfig Undo -state disabled
#$menu entryconfig Redo -state disabled
#set undoAdvGeom(menu) $menu
#
#
#set undo  [menu $menu.undo -tearoff 0]
#set redo  [menu $menu.redo -tearoff 0]
#button .b -text "Generate Command" -command [list GenComm $undo $redo]
#pack $m .b -side left
#
#
#bind $undo <Motion> [list UndoMenuMotion $undo @%y]
#bind $redo <Motion> [list UndoMenuMotion $redo @%y]
#
#flush stdout