1## -*- mode: Tcl; coding: utf-8; -*-
2namespace eval error {}
3
4proc error::throwOSErr {err {msg ""}} {
5	global error::OSErr
6
7	if {[info exists error::OSErr($err)]} {
8		set err [set error::OSErr($err)]
9
10		if {$msg == ""} {
11			set msg [lindex $err 2]
12		} else {
13			set msg [join [list $msg [lindex $err 2]] ": "]
14		}
15
16		error $msg "" $err
17	} elseif {$msg != ""} {
18	    error "$msg: $err"
19	} elseif {$err != 0} {
20	    error "OS Error: $err"
21	}
22}
23
24# Error messages from
25# <http://devworld.apple.com/dev/techsupport/insidemac/
26# AppleScriptLang/AppleScriptLang-271.html#HEADING271-0>
27
28# Many, obviously, aren't relevant
29
30set error::OSErr(-34)		{System -34 {Disk is full.}}
31set error::OSErr(-35)		{System -35 {Disk wasn't found.}}
32set error::OSErr(-37)		{System -37 {Bad name for file.}}
33set error::OSErr(-38)		{System -38 {File wasn't open.}}
34set error::OSErr(-39)		{System -39 {End of file error.}}
35set error::OSErr(-42)		{System -42 {Too many files open.}}
36set error::OSErr(-43)		{System -43 {File wasn't found.}}
37set error::OSErr(-44)		{System -44 {Disk is write protected.}}
38set error::OSErr(-45)		{System -45 {File is locked.}}
39set error::OSErr(-46)		{System -46 {Disk is locked.}}
40set error::OSErr(-47)		{System -47 {File is busy.}}
41set error::OSErr(-48)		{System -48 {Duplicate file name.}}
42set error::OSErr(-49)		{System -49 {File is already open.}}
43set error::OSErr(-50)		{System -50 {Parameter error.}}
44set error::OSErr(-51)		{System -51 {File reference number error.}}
45set error::OSErr(-61)		{System -61 {File not open with write permission.}}
46set error::OSErr(-108)		{System -108 {Out of memory.}}
47set error::OSErr(-120)		{System -120 {Folder wasn't found.}}
48set error::OSErr(-124)		{System -124 {Disk is disconnected.}}
49set error::OSErr(-128)		{System -128 {User canceled.}}
50set error::OSErr(-192)		{System -192 {A resource wasn't found.}}
51set error::OSErr(-600)		{System -600 {Application isn't running.}}
52set error::OSErr(-601)		{System -601 {Not enough room to launch application with special requirements.}}
53set error::OSErr(-602)		{System -602 {Application is not 32-bit clean.}}
54set error::OSErr(-605)		{System -605 {More memory is needed than is specified in the size resource.}}
55set error::OSErr(-606)		{System -606 {Application is background-only.}}
56set error::OSErr(-607)		{System -607 {Buffer is too small.}}
57set error::OSErr(-608)		{System -608 {No outstanding high-level event.}}
58set error::OSErr(-609)		{System -609 {Connection is invalid.}}
59set error::OSErr(-904)		{System -904 {Not enough system memory to connect to remote application.}}
60set error::OSErr(-905)		{System -905 {Remote access is not allowed.}}
61set error::OSErr(-906)		{System -906 {Program isn't running or program linking isn't enabled.}}
62set error::OSErr(-915)		{System -915 {Can't find remote machine.}}
63set error::OSErr(-30720)	{System -30720 {Invalid date and time.}}
64
65# AppleEvent Errors
66
67set error::OSErr(-1700)	{AppleEvent -1700 {Can't make some data into the expected type.}}
68set error::OSErr(-1701)	{AppleEvent -1701 {Descriptor was not found.}}
69set error::OSErr(-1702)	{AppleEvent -1702 {Some data could not be read.}}
70set error::OSErr(-1703)	{AppleEvent -1703 {Some data was the wrong type.}}
71set error::OSErr(-1704)	{AppleEvent -1704 {Some parameter was invalid.}}
72set error::OSErr(-1705)	{AppleEvent -1705 {Operation involving a list item failed.}}
73set error::OSErr(-1706)	{AppleEvent -1706 {Need a newer version of the AppleEvent manager.}}
74set error::OSErr(-1707)	{AppleEvent -1707 {Event isn't an AppleEvent.}}
75set error::OSErr(-1708)	{AppleEvent -1708 {<reference> doesn't understand the <commandName> message.}}
76set error::OSErr(-1709)	{AppleEvent -1709 {AEResetTimer was passed an invalid reply.}}
77set error::OSErr(-1710)	{AppleEvent -1710 {Invalid sending mode was passed.}}
78set error::OSErr(-1711)	{AppleEvent -1711 {User canceled out of wait loop for reply or receipt.}}
79set error::OSErr(-1712)	{AppleEvent -1712 {AppleEvent timed out.}}
80set error::OSErr(-1713)	{AppleEvent -1713 {No user interaction allowed.}}
81set error::OSErr(-1714)	{AppleEvent -1714 {Wrong keyword for a special function.}}
82set error::OSErr(-1715)	{AppleEvent -1715 {Some parameter wasn't understood.}}
83set error::OSErr(-1716)	{AppleEvent -1716 {Unknown AppleEvent address type.}}
84set error::OSErr(-1717)	{AppleEvent -1717 {The handler is not defined.}}
85set error::OSErr(-1718)	{AppleEvent -1718 {Reply has not yet arrived.}}
86set error::OSErr(-1719)	{AppleEvent -1719 {Can't get <reference>. Invalid index.}}
87set error::OSErr(-1720)	{AppleEvent -1720 {Invalid range.}}
88set error::OSErr(-1721)	{AppleEvent -1721 {<expression> doesn't match the parameters <parameterNames> for <commandName>.}}
89set error::OSErr(-1723)	{AppleEvent -1723 {Can't get <expression>. Access not allowed.}}
90set error::OSErr(-1725)	{AppleEvent -1725 {Illegal logical operator called.}}
91set error::OSErr(-1726)	{AppleEvent -1726 {Illegal comparison or logical.}}
92set error::OSErr(-1727)	{AppleEvent -1727 {Expected a reference.}}
93set error::OSErr(-1728)	{AppleEvent -1728 {Can't get <reference>.}}
94set error::OSErr(-1729)	{AppleEvent -1729 {Object counting procedure returned a negative count.}}
95set error::OSErr(-1730)	{AppleEvent -1730 {Container specified was an empty list.}}
96set error::OSErr(-1731)	{AppleEvent -1731 {Unknown object type.}}
97set error::OSErr(-1750)	{AppleEvent -1750 {Scripting component error.}}
98set error::OSErr(-1751)	{AppleEvent -1751 {Invalid script id.}}
99set error::OSErr(-1752)	{AppleEvent -1752 {Script doesn't seem to belong to AppleScript.}}
100set error::OSErr(-1753)	{AppleEvent -1753 {Script error.}}
101set error::OSErr(-1754)	{AppleEvent -1754 {Invalid selector given.}}
102set error::OSErr(-1755)	{AppleEvent -1755 {Invalid access.}}
103set error::OSErr(-1756)	{AppleEvent -1756 {Source not available.}}
104set error::OSErr(-1757)	{AppleEvent -1757 {No such dialect.}}
105set error::OSErr(-1758)	{AppleEvent -1758 {Data couldn't be read because its format is obsolete.}}
106set error::OSErr(-1759)	{AppleEvent -1759 {Data couldn't be read because its format is too new.}}
107set error::OSErr(-1760)	{AppleEvent -1760 {Recording is already on.}}
108
109# AppleEvent Registry Errors
110
111set error::OSErr(-10000)	{AERegistry -10000 {AppleEvent handler failed.}}
112set error::OSErr(-10001)	{AERegistry -10001 {A descriptor type mismatch occurred.}}
113set error::OSErr(-10002)	{AERegistry -10002 {Invalid key form.}}
114set error::OSErr(-10003)	{AERegistry -10003 {Can't set <object or data> to <object or data>. Access not allowed.}}
115set error::OSErr(-10004)	{AERegistry -10004 {A privilege violation occurred.}}
116set error::OSErr(-10005)	{AERegistry -10005 {The read operation wasn't allowed.}}
117set error::OSErr(-10006)	{AERegistry -10006 {Can't set <object or data> to <object or data>.}}
118set error::OSErr(-10007)	{AERegistry -10007 {The index of the event is too large to be valid.}}
119set error::OSErr(-10008)	{AERegistry -10008 {The specified object is a property, not an element.}}
120set error::OSErr(-10009)	{AERegistry -10009 {Can't supply the requested descriptor type for the data.}}
121set error::OSErr(-10010)	{AERegistry -10010 {The AppleEvent handler can't handle objects of this class.}}
122set error::OSErr(-10011)	{AERegistry -10011 {Couldn't handle this command because it wasn't part of the current transaction.}}
123set error::OSErr(-10012)	{AERegistry -10012 {The transaction to which this command belonged isn't a valid transaction.}}
124set error::OSErr(-10013)	{AERegistry -10013 {There is no user selection.}}
125set error::OSErr(-10014)	{AERegistry -10014 {Handler only handles single objects.}}
126set error::OSErr(-10015)	{AERegistry -10015 {Can't undo the previous AppleEvent or user action.}}
127