This file is indexed.

/usr/share/xcrysden/Tcl/xyz.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
#############################################################################
# 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/xyz.tcl
# ------                                                                    #
# Copyright (c) 1996-2003 by Anton Kokalj                                   #
#############################################################################

proc xyzOpen {{file {}} {viewmol_exists {}}} {
    global system

    if { $file == {} } {
	# get-file
	set file [tk_getOpenFile -defaultextension .xyz \
		      -filetypes { 
			  {{XYZ Files}                  {.xyz} }
			  {{All Files}                  {.*}   }
		      } -initialdir $system(PWD) \
		      -title "Open XYZ File"]
	if { $file == "" } {
	    return
	}
    } else {
	if { ![file exists $file] } {	    
	    ErrorDialog "File \"$file\" does not exists !!!"
	    return
	}
    }

    # uncompress the file is necessary
    
    set file    [gunzipFile $file]
    set head    [file rootname [file tail $file]]
    set xsfFile $system(SCRDIR)/$head.xsf

    # open the XYZ(read) and XSF(write) file

    set xyzID [open $file r]
    set xsfID [open $xsfFile w]

    
    # --------------------------------------------------
    # first-pass read (estimate number of animsteps)
    # --------------------------------------------------

    gets $xyzID line
    set natoms [lindex $line 0]
    if { ![string is integer $natoms] } {
	ErrorDialog "error parsing XYZ file: \"$file\" !!!"
	return
    }
    set nline 0
    seek $xyzID 0 start 
    while {[gets $xyzID line] > -1} {	
	incr nline
    }

    # calculate number of animsteps

    set animsteps [expr {int($nline / ($natoms + 2))}]
    if { $animsteps > 1 } {
	puts $xsfID "ANIMSTEPS  $animsteps"
    }


    # --------------------------------------------------
    # second-pass read: write XSF file
    # --------------------------------------------------

    seek $xyzID 0 start 
    set  iframe 0
    while {[gets $xyzID line] > -1} {	
	incr iframe
	if { [llength $line] == 0 } {
	    # skip empty line
	    continue
	}
	set natoms [lindex $line 0]
	if { ![string is integer $natoms] } {
	    ErrorDialog "error parsing XYZ file: \"$file\" !!!"
	    return
	}

	# read comment line

	gets $xyzID lin

	# read atoms

	if { $animsteps > 1} {
	    puts $xsfID "ATOMS  $iframe"
	} else {
	    puts $xsfID "ATOMS"
	}
	for {set ia 0} {$ia < $natoms} {incr ia} {
	    if {[gets $xyzID line] < 0} {
		ErrorDialog "error parsing XYZ file: \"$file\" !!!"
		return
	    }	
	    puts $xsfID $line
	}
    }
    
    # close files
    close $xyzID
    close $xsfID

    # load the structure ...

    xsfOpen $xsfFile
}