Diff

Differences From Artifact [ced6c30241]:

To Artifact [15b349e52e]:


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
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







-
-
+
+







-
-
-
-
-
-
+
+
+
+
+
+








		set ::appfs::init_called 1

		# Add a default CA to list of trusted CAs
		lappend ::appfs::trusted_cas [::pki::x509::parse_cert {
-----BEGIN CERTIFICATE-----
MIIC7DCCAdSgAwIBAgIBATANBgkqhkiG9w0BAQUFADAvMRIwEAYDVQQKEwlSb3kg
S2VlbmUxGTAXBgNVBAMTEEFwcEZTIEtleSBNYXN0ZXIwHhcNMTQxMTE3MjAxNzI4
WhcNMTkxMTE3MjAxNzI4WjAvMRIwEAYDVQQKEwlSb3kgS2VlbmUxGTAXBgNVBAMT
S2VlbmUxGTAXBgNVBAMTEEFwcEZTIEtleSBNYXN0ZXIwHhcNMTkxMjEyMjM1OTIz
WhcNMzQxMjEyMjM1OTIzWjAvMRIwEAYDVQQKEwlSb3kgS2VlbmUxGTAXBgNVBAMT
EEFwcEZTIEtleSBNYXN0ZXIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB
AQCq6uSK46yG5b6RJWwRlvw5glAnjsc1GiX3duXA0vG4qnKUnDtl/jcMmq2GMOB9
Iy1tjabEHA0MhW2j7Vwe/O9MLFJkJ30M1PVD7YZRRNaAsz3UWIKEjPI7BBc32KOm
BL3CTXCCdzllL1HhVbnM5iCAmgHcg1DUk/EvWXvnEDxXRy2lV9mQsmDedrffY7Wl
Or57nlczaMuPLpyRSkv75PAnjQJxT3sWlBpy+/H9ImudQdpJNf/FtxcqN7iDwH5B
vIceYEtDVxFsvo5HOVkSl9jeo5E4Gpe3wyfRhoqB2UkaW1Kq0iH5R+00S760xQMx
LL9L1duhu1dL7HsmEw7IeYURAgMBAAGjEzARMA8GA1UdEwEB/wQFMAMBAf8wDQYJ
KoZIhvcNAQEFBQADggEBAKhO4ZSzYP37BqixNHKK9+gSeC6Fga85iLWhwpPW0kSl
z03hal80KZ+kPMzb8C52N283tQNAqJ9Q8akDPZxSzzMUVOGpGw2pJ7ZswKDz0ZTa
0edq/gdT/HrdegvNtDPc2jona5FVOYqwdcz5kbl1UWBaBp3VXUgcYjXSRaBK43Wd
cveiDUeZw7gHqRSN/AyYUCtJzWmvGsJuIFhMBonuz8jylhyMJCYJFT4iMUC8MNIw
niX1xx+Nu6fPV5ZZHj9rbhiBaLjm+tkDwtPgA3j2pxvHKYptuWxeYO+9DDNa9sCb
E5AnJIlOnd/tGe0Chf0sFQg+l9nNiNrWGgzdd9ZPJK4=
KoZIhvcNAQEFBQADggEBAIQW2OHDS9rIZUqaFdRqthqhYxESi9Yz9SO1LHWJ6WyS
edqkMIWnXaC2Gq8JTCLcIwK4VRvDqwuHz2TQj9cqbQ+FrnxtSM3kVXrsfehD4cqz
pMNKfoi+XaPefB9YbSBbcI4IvOPbPHtZz9++pW5vUwKjp3BiA1xNL9x9SnoehMEd
BQM75CMQckwmnlII1yhStRDCcgIaMpv7L6vutmvdvN0QMJKnX/5papLrdiHu1Nt7
bSf8agpRgIQKKSyuwFjp3zT8oeAzEzL4HdOBCveQ5EamCqvV6EDIuIR7b+4ZnYoL
3qh0YRO/9jrtb786iqWGexZ1JBjiSMhYA1CcvJtR/vQ=
-----END CERTIFICATE-----
}]

		# Load configuration file
		set config_file [file join $::appfs::cachedir config]
		if {[file exists $config_file]} {
			source $config_file
734
735
736
737
738
739
740

741

742
743


744
745
746
747
748
749
750
734
735
736
737
738
739
740
741

742
743
744
745
746
747
748
749
750
751
752
753







+
-
+


+
+







		return -code error "Invalid or unacceptable path: $dir"
	}

	proc getattr {path} {
		array set pathinfo [_parsepath $path]
		array set retval [list]

		set fetchIndexError "no fetch error"
		catch {
		if {[catch {
			::appfs::getindex $pathinfo(hostname)
			::appfs::getpkgmanifest $pathinfo(hostname) $pathinfo(package_sha1)
		} fetchIndexErrorRaw]} {
			set fetchIndexError $fetchIndexErrorRaw
		}

		set retval(path_type) $pathinfo(_type)

		switch -- $pathinfo(_type) {
			"toplevel" {
				set retval(type) directory
894
895
896
897
898
899
900
901

902
903
904
905
906
907
908
897
898
899
900
901
902
903

904
905
906
907
908
909
910
911







-
+







					}
				}

			}
		}

		if {![info exists retval(type)]} {
			return -code error "No such file or directory"
			return -code error "No such file or directory ($fetchIndexError)"
		}

		return [array get retval]
	}

	proc openpath {path mode} {
		array set pathinfo [_parsepath $path]