From 6f50f9de031ad106c472f633908eaf1896b79326 Mon Sep 17 00:00:00 2001 From: Kelvin Sherlock Date: Fri, 12 Sep 2014 13:08:43 -0400 Subject: [PATCH] add c++11 error categories for macos error codes --- macos/CMakeLists.txt | 2 +- macos/errors.cpp | 943 +++++++++++++++++++++++++++++++++++++++++++ macos/errors.h | 200 +++++---- 3 files changed, 1066 insertions(+), 79 deletions(-) create mode 100644 macos/errors.cpp diff --git a/macos/CMakeLists.txt b/macos/CMakeLists.txt index 2e0b971..71784c6 100644 --- a/macos/CMakeLists.txt +++ b/macos/CMakeLists.txt @@ -4,7 +4,7 @@ set(CMAKE_CXX_FLAGS "-std=c++11 -stdlib=libc++ -Wall -g") add_definitions(-I ${CMAKE_SOURCE_DIR}/) -set(MACOS_SRC traps.c sysequ.c) +set(MACOS_SRC traps.c sysequ.c errors.cpp) add_library(MACOS_LIB ${MACOS_SRC}) \ No newline at end of file diff --git a/macos/errors.cpp b/macos/errors.cpp new file mode 100644 index 0000000..2f0e617 --- /dev/null +++ b/macos/errors.cpp @@ -0,0 +1,943 @@ + +#include // null +#include +#include +#include + +#include "errors.h" + +const char *ErrorName(int16_t error) +{ + switch(error) + { + case -32768: return "Temporarily disable card but run primary init."; + case -32767: return "Bad component instance"; + case -32766: return "Bad component selector"; + case -32640: return "Reserve range -32640 to -32768 for Apple temp disables."; + case -32615: return "Bitmap font passed to routine that does outlines only"; + case -32100: return "Can't mount system startup volume"; + case -32086: return "Circular reference in hierarchical menu"; + case -32085: return "Unable to load menu bar defproc"; + case -32041: return "The file named \"Finder\" can't be found on the disk"; + case -32030: return "\"Please insert the disk\""; + case -32029: return "File server error"; + case -32028: return "Stack overflow: the stack has expanded into the heap"; + case -32027: return "File map destroyed"; + case -32026: return "Segment Loader error: a GetResource call to read a 'CODE' resource failed"; + case -32025: return "Can't allocate requested memory block in heap"; + case -32024: return "Can't load package"; + case -32023: return "Can't load package"; + case -32022: return "Can't load package"; + case -32021: return "Can't load package"; + case -32020: return "Can't load package"; + case -32019: return "Can't load package"; + case -32018: return "Can't load package"; + case -32017: return "Can't load package"; + case -32016: return "Floating point error"; + case -32015: return "Segment Loader error: a GetResource call failed"; + case -32014: return "I/O system error"; + case -32013: return "Spurious interrupt"; + case -32012: return "Unimplemented core routine: Unimplemented trap number encountered"; + case -32011: return "Miscellaneous exception"; + case -32010: return "Line 1111 exception: Unimplemented instruction"; + case -32009: return "Line 1010 exception: the 1010 trap dispatcher has failed"; + case -32008: return "Trace exception"; + case -32007: return "Privilege violation"; + case -32006: return "Trap V exception"; + case -32005: return "Check exception: value out of range"; + case -32004: return "Zero divide"; + case -32003: return "Illegal instruction"; + case -32002: return "Address error: word or long-word reference to an odd address"; + case -32001: return "Bus error: invalid memory reference"; + case -31009: return "Inconsistent dump format"; + case -31008: return "Invalid file type"; + case -31007: return "Illegal use of I/O control block"; + case -31006: return "Attempt to use I/O control block which is currently in use"; + case -31005: return "Too many includes"; + case -31004: return "I/O system error (illegal use of buffer)"; + case -31003: return "Not enough heap space to allocate I/O control block"; + case -31002: return "Not enough heap space to allocate I/O buffer"; + case -31001: return "Not a text file"; + case -20002: return "The recordIndex parameter is not valid"; + case -20001: return "The record data is bigger than buffer size (1024 bytes)"; + case -20000: return "There is no such insert mode"; + case -13005: return "Power Manager did not finish handshake during receive"; + case -13004: return "Power Manager did not start handshake during receive"; + case -13003: return "Power Manager did not finish handshake during send"; + case -13002: return "Power Manager did not start handshake during send"; + case -13001: return "Timed out waiting for reply"; + case -13000: return "Power Manager never ready to start handshake"; + case -11005: return "The picture data was invalid "; + case -11004: return "The number of colors requested was illegal "; + case -11003: return "Custom pick method not in resource chain"; + case -11002: return "Invalid verb combination specified"; + case -11001: return "Invalid PictInfo ID"; + case -11000: return "Version number not zero"; + case -10016: return "Apple Event Local Only"; + case -10015: return "Apple Event Can't Undo"; + case -10014: return "Apple Event Not A Single Object"; + case -10013: return "Apple Event No User Selection"; + case -10012: return "Apple Event No Such Transaction"; + case -10011: return "Apple Event In Transaction"; + case -10010: return "Apple Event Can't Handle Class"; + case -10009: return "Apple Event Can't Supply Type"; + case -10008: return "Apple Event Not An Element"; + case -10007: return "Apple Event Index Too Large"; + case -10006: return "Apple Event Write Denied"; + case -10005: return "Apple Event Read Denied"; + case -10004: return "Apple Event Privilege Error"; + case -10003: return "Apple Event Not Modifiable"; + case -10002: return "Apple Event Bad Key Form"; + case -10001: return "Apple Event Type Error"; + case -10000: return "Apple Event Failed"; + case -9999: return "Can't move attached controller"; + case -9998: return "Controller has fixed height"; + case -9997: return "Can't set width of attached controller"; + case -9996: return "Controller bounds not exact"; + case -9995: return "Editing not allowed "; + case -9994: return "Bad controller height"; + case -9408: return "Device can't meet request"; + case -9407: return "Sequence grab info not available"; + case -9406: return "Bad SG channel"; + case -9405: return "Couldn't get required component"; + case -9404: return "Not enough disk space to grab"; + case -9403: return "Not enough memory to grab"; + case -9402: return "Can't do that in current mode"; + case -9401: return "Grab time complete"; + case -9400: return "No device for channel"; + case -8976: return "Codec Nothing to Blit error"; + case -8975: return "Codec Can't Queue error"; + case -8974: return "Codec Can't When error"; + case -8973: return "Codec open error"; + case -8972: return "Codec Condition error"; + case -8971: return "Codec extension not found error"; + case -8970: return "Codec data version error"; + case -8969: return "Codec bad data error"; + case -8968: return "Codec off screen error"; + case -8967: return "Codec abort error"; + case -8966: return "Codec spool error"; + case -8965: return "Codec image buffer error"; + case -8964: return "Codec screen buffer error"; + case -8963: return "Codec size error"; + case -8962: return "Codec unimplemented error"; + case -8961: return "No codec error"; + case -8960: return "Codec error"; + case -8159: return "Printer not initialized"; + case -8151: return "Incompatible printer initialization"; + case -8150: return "No printer chosen"; + case -8133: return "Postscript error"; + case -6230: return "Attempt to add an already installed display"; + case -6229: return "Could not find item"; + case -6228: return "Video Driver does not support display manager"; + case -6227: return "Required software not initialized (eg window manager or display mgr)"; + case -6226: return "Missing critical pieces of System Software"; + case -6225: return "Mirroring is off; should be turned on"; + case -6224: return "Can't Block because mirroring is on (first call DMUnMirror() )"; + case -6223: return "DMBlockMirroring() has been called"; + case -6222: return "More than two displays attempted"; + case -6221: return "Mirroring is on; should be turned off"; + case -6220: return "Display Manager unexpected error"; + case -5553: return "Gestalt function pointer wasn't in sysheap"; + case -5552: return "Tried to add an entry that already existed"; + case -5551: return "Undefined selector was passed to Gestalt"; + case -5550: return "Value returned if Gestalt doesn't know the answer"; + case -5502: return "The version requested is greater than the current SysEnvirons trap can provide"; + case -5501: return "Non-positive selector was passed to SysEnvirons trap"; + case -5500: return "SysEnvirons call not present as a trap"; + case -5044: return "the folder being shared is inside or being moved to the trash folder"; + case -5043: return "the folder being shared is inside or being moved to a shared folder"; + case -5042: return "the password being used is too old: this requires the user to change the password before log-in can continue"; + case -5041: return "the password being set is too short: there is a minimum length that must be met or exceeded"; + case -5040: return "someone tried to change their password to the same password on a mandatory password change"; + case -5039: return "afpBadIDErr"; + case -5038: return "afpSameObjectErr"; + case -5037: return "afpCatalogChanged"; + case -5036: return "afpDiffVolErr"; + case -5035: return "afpIDExists"; + case -5034: return "afpIDNotFound"; + case -5033: return "the folder being shared contains a shared folder"; + case -5032: return "Object is MODIFY/READ/DELETE/WRITE inhibited"; + case -5031: return "Volume is Read-Only"; + case -5030: return "Icon size specified different from existing icon size"; + case -5029: return "Unknown directory specified"; + case -5028: return "AFPRename cannot rename volume"; + case -5027: return "Server is shutting down"; + case -5026: return "Maximum open file count reached"; + case -5025: return "File/Directory specified where Directory/File expected"; + case -5024: return "Unsupported AFP call was made"; + case -5023: return "No AFPLogin call has successfully been made for this session"; + case -5022: return "Session closed"; + case -5021: return "Some or all of range already locked by same user"; + case -5020: return "Tried to unlock range that was not locked by user"; + case -5019: return "A specified parameter was out of allowable range"; + case -5018: return "Specified file or directory does not exist"; + case -5017: return "Specified destination file or directory already exists"; + case -5016: return "Server not responding"; + case -5015: return "Maximum lock limit reached"; + case -5014: return "Unexpected error encountered during execution"; + case -5013: return "Some or all of requested range is locked by another user"; + case -5012: return "Unknown UserName/UserID or missing comment/APPL entry"; + case -5011: return "Cannot create directory on specified volume"; + case -5010: return "Cannot delete an open file"; + case -5009: return "Read beyond logical end-of-file"; + case -5008: return "Insufficient free space on volume for operation"; + case -5007: return "Cannot delete non-empty directory"; + case -5006: return "Specified open/deny modes conflict with current open modes"; + case -5005: return "Move destination is offspring of source, or root was specified"; + case -5004: return "Bitmap contained bits undefined for call"; + case -5003: return "Unknown AFP version number specified"; + case -5002: return "Unknown user authentication method specified"; + case -5001: return "Further information required to complete AFPLogin call"; + case -5000: return "Insufficient access privileges for operation"; + case -4101: return "Printer not found or closed"; + case -4100: return "Connection to printer closed"; + case -4099: return "Printing failure: write request too big"; + case -4098: return "Printing failure: request already active"; + case -4097: return "Printing failure: bad connection reference number"; + case -4096: return "Printing failure: no free connect control blocks available"; + case -3109: return "Asynchronous call aborted because socket was closed before call was completed"; + case -3108: return "ABRecord not found"; + case -3107: return "Bad response from ATPRequest"; + case -3106: return "ATP response message too large"; + case -3105: return "Socket or protocol type invalid or not found in table"; + case -3104: return "NBP can't find tuple in buffer"; + case -3103: return "DDP bad checksum"; + case -3102: return "MPP driver not installed"; + case -3101: return "ALAP frame too large for buffer / DDP datagram too large for buffer"; + case -3032: return "noPrefAppErr"; + case -3031: return "Bad translation spec"; + case -3030: return "No translation path"; + case -3026: return "Could not parse source file"; + case -3025: return "Invalid translation path"; + case -3003: return "Component doesn't register"; + case -3002: return "Component not captured"; + case -3001: return "Valid instances exist"; + case -3000: return "Invalid component ID"; + case -2824: return "Invalid fragment usage"; + case -2823: return "Fragment targeted for an unacceptable architecture"; + case -2822: return "No application found in cfrg (for Process Manager)"; + case -2821: return "Fragment user initialization routine did not return noErr"; + case -2820: return "Fragment container corrupted (known format) "; + case -2819: return "Fragment internal inconsistency "; + case -2818: return "Error in initialization of CFM"; + case -2817: return "Error connecting to library (error occurred in sub prepare) "; + case -2816: return "Boot library has initialization routine"; + case -2815: return "Fragment circularity detected in mandatory initialization order"; + case -2814: return "Import library was too new and therefore incompatible"; + case -2813: return "Import library was too old and therefore incompatible"; + case -2812: return "Fragment order error during user initialization function invocation"; + case -2811: return "Fragment no more context id's"; + case -2810: return "Fragment out of memory in user's address space for loadable section"; + case -2809: return "Fragment out of memory for internal bookkeeping"; + case -2807: return "Loaded fragment had \"hard\" unresolved imports"; + case -2806: return "Fragment container format unknown"; + case -2805: return "Fragment registered name already in use"; + case -2804: return "Fragment library name not found in registry"; + case -2803: return "Fragment section not found"; + case -2802: return "Fragment symbol not found in connection"; + case -2801: return "Fragment connectionID not valid"; + case -2800: return "Fragment contextID not valid"; + case -2780: return "AppleScript inconsistent names"; + case -2763: return "AppleScript no result returned"; + case -2762: return "AppleScript parameter not for event"; + case -2761: return "AppleScript illegal formal parameter"; + case -2760: return "AppleScript terminology nesting too deep"; + case -2721: return "AppleScript can't compare more than 32k"; + case -2720: return "AppleScript can't consider and ignore"; + case -2526: return "Mixed mode internal error"; + case -2519: return "TSM unknown error"; + case -2518: return "TSM Unsupported interface type"; + case -2517: return "TSM script has no input method or is using old IM"; + case -2516: return "TSM returned by GetDefaultInputMethod"; + case -2515: return "TSM text service already opened for the document"; + case -2514: return "TSM text service is not open"; + case -2513: return "TSM the text service has no menu"; + case -2512: return "Not TSM aware because we are using input window"; + case -2511: return "TSM there are open documents"; + case -2510: return "TSM no text service found"; + case -2509: return "TSM can't open the component"; + case -2508: return "TSM no open text service"; + case -2507: return "TSM document is not active"; + case -2506: return "TSM document is still active"; + case -2505: return "Invalid TSM documentation ID "; + case -2504: return "TSM application not registered"; + case -2503: return "TSM application already registered"; + case -2502: return "TSM not an application"; + case -2501: return "TSM input method not found"; + case -2500: return "Unsupported script language error"; + case -2062: return "Movie text not found"; + case -2059: return "Samples already in media"; + case -2058: return "Auxiliary export data unavailable"; + case -2057: return "Unsupported auxiliary import data"; + case -2053: return "Feature unsupported"; + case -2052: return "Couldn't use an existing sample"; + case -2051: return "No defaultdata reference"; + case -2050: return "Bad data reference index"; + case -2049: return "Invalid data reference container"; + case -2048: return "No movie found"; + case -2047: return "No data reference"; + case -2046: return "End of data reached"; + case -2045: return "data already closed"; + case -2044: return "Data already open for write"; + case -2043: return "Data not open for write"; + case -2042: return "Data not open for read"; + case -2041: return "Invalid sample description"; + case -2040: return "Invalid chunk cache"; + case -2039: return "Invalid sample description index"; + case -2038: return "Invalid chunk number"; + case -2037: return "Invalid sample number"; + case -2036: return "Invalid rectangle"; + case -2035: return "Can't enable track"; + case -2034: return "Internal QuickTime error"; + case -2033: return "Bad edit index"; + case -2032: return "Time not in media"; + case -2031: return "Time not in track"; + case -2030: return "Track not in movie"; + case -2029: return "Track ID not found"; + case -2028: return "Bad track index"; + case -2027: return "Max size to grow too small"; + case -2026: return "User data item not found"; + case -2025: return "Stale edit state"; + case -2024: return "Non-matching edit state"; + case -2023: return "Invalid edit state"; + case -2022: return "Can't create single fork file"; + case -2021: return "WF file not found"; + case -2020: return "Movie toolbox uninitialized"; + case -2019: return "Progress proc aborted"; + case -2018: return "Media types don't match"; + case -2017: return "Bad edit list"; + case -2016: return "Can't put public movie atom"; + case -2015: return "Invalid Time"; + case -2014: return "Invalid duration"; + case -2013: return "Invalid handler"; + case -2012: return "Invalid data reference"; + case -2011: return "Invalid sample table"; + case -2010: return "Invalid movie"; + case -2009: return "Invalid track"; + case -2008: return "Invalid media"; + case -2007: return "No data handler"; + case -2006: return "No media handler"; + case -2005: return "Bad component type"; + case -2004: return "Can't open handler"; + case -2003: return "Can't find handler"; + case -2002: return "Bad public movie atom"; + case -2001: return "Bad image description"; + case -2000: return "Could not resolve data reference"; + case -1857: return "Drag was not accepted by receiver"; + case -1856: return "Handler not found (Drag Manager)"; + case -1855: return "Handler already exists (Drag Manager) "; + case -1854: return "Error while trying to get flavor data (Drag Manager)"; + case -1853: return "Flavor type already exists (Drag Manager)"; + case -1852: return "Unknown flavor type (Drag Manager)"; + case -1851: return "Unknown drag item reference"; + case -1850: return "Unknown drag reference"; + case -1813: return "Apple Event end of body"; + case -1812: return "Apple Event end of document"; + case -1811: return "Apple Event top of body"; + case -1810: return "Apple Event top of document"; + case -1801: return "Apple Event offset outside of view"; + case -1800: return "Apple Event offset invalid"; + case -1730: return "Empty list container"; + case -1729: return "Negative count"; + case -1728: return "No such object"; + case -1727: return "Not an object specifier"; + case -1726: return "Bad test key"; + case -1725: return "No such logical operator"; + case -1723: return "Accessor not found"; + case -1721: return "Wrong number of arguments"; + case -1720: return "Impossible range"; + case -1719: return "Index is out of range in a put operation"; + case -1718: return "The contents of the reply you are accessing have not arrived yet"; + case -1717: return "No handler in the dispatch tables fits the parameters"; + case -1716: return "The target address type is not known"; + case -1715: return "A required parameter was not accessed"; + case -1714: return "There is no special function with this keyword"; + case -1713: return "No user interaction allowed"; + case -1712: return "AppleEvent timed out"; + case -1711: return "In AESend, User canceled out of wait loop for reply or receipt"; + case -1710: return "Mode wasn't NoReply, WaitReply, or QueueReply; or Interaction level is unknown"; + case -1709: return "AEResetTimer was passed an invalid reply parameter"; + case -1708: return "The AppleEvent was not handled by any handler"; + case -1707: return "The event is not in AppleEvent format"; + case -1706: return "Need newer version of AppleEvent Manager"; + case -1705: return "Specified list item does not exist"; + case -1704: return "Not a valid AppleEvent descriptor"; + case -1703: return "Data with a keyword was expected but not found"; + case -1702: return "Data in an AppleEvent could not be read"; + case -1701: return "Descriptor was not found"; + case -1700: return "Data could not be coerced to the requested data type"; + case -1308: return "When _Mount allows only remounts and doesn't get a remount."; + case -1307: return "File id is dangling or doesn't match with the file number"; + case -1306: return "Can't exchange a file with itself"; + case -1305: return "Desktop database files are corrupted"; + case -1304: return "The catalog has been modified"; + case -1303: return "Files on different volumes"; + case -1302: return "Directory specified"; + case -1301: return "File id already exists"; + case -1300: return "No file thread exists."; + case -1280: return "Bad connection refNum"; + case -1279: return "Control call was aborted"; + case -1278: return "Bad connection state for this operation"; + case -1277: return "Open connection request failed"; + case -1276: return "Attention message too long"; + case -1275: return "Read terminated by forward reset"; + case -1274: return "DSP Read/Write Queue Too small"; + case -1273: return "Open connection request was denied"; + case -1105: return "Request aborted"; + case -1104: return "Too many outstanding ATP calls"; + case -1103: return "ATPAddRsp issued before ATPSndRsp"; + case -1102: return "ATP control block not found"; + case -1101: return "ATP no release received"; + case -1100: return "ATP bad sequence number"; + case -1099: return "ATP bad responding socket"; + case -1098: return "ATP too many responding sockets"; + case -1097: return "ATP too many concurrent requests"; + case -1096: return "ATPSndRequest failed: retry count exceeded"; + case -1075: return "No acknowledge on server attention request"; + case -1074: return "Too many server clients"; + case -1073: return "Command block too big"; + case -1072: return "Session closed"; + case -1071: return "Server cannot open another session"; + case -1070: return "ASP parameter error"; + case -1069: return "No servers at that address"; + case -1068: return "No more sessions on server"; + case -1067: return "Buffer too small"; + case -1066: return "Server cannot support this ASP version"; + case -1029: return "NBP names information socket error"; + case -1028: return "NBP name not found"; + case -1027: return "NBP duplicate name already exists"; + case -1026: return "NBP name confirmed for different socket"; + case -1025: return "NBP name not confirmed"; + case -1024: return "NBP buffer overflow"; + case -1011: return "Mixed mode failure"; + case -1010: return "Bad shared library"; + case -1000: return "No mask found"; + case -932: return "Destination port requires authentication"; + case -931: return "Location name is invalid "; + case -930: return "Illegal service type, or not supported "; + case -928: return "Invalid user reference number "; + case -927: return "User's password is wrong"; + case -926: return "PPCStart failed because destination did not have inform pending "; + case -925: return "Error has occurred in the network"; + case -924: return "Unable to create a new userRefNum"; + case -923: return "The default userRefNum does not yet exist "; + case -922: return "User hasn't specified an owner's name in Sharing Setup Control Panel "; + case -919: return "PPCPortRec malformed"; + case -917: return "The session was closed "; + case -916: return "The port was closed"; + case -915: return "Unable to contact application "; + case -914: return "A system resource is missing"; + case -913: return "User hasn't named his Macintosh in the Sharing Setup Control Panel"; + case -912: return "Destination rejected the session request"; + case -911: return "User name unknown on destination machine "; + case -910: return "A port is already open with this name"; + case -909: return "Bad parameter or invalid state for operation"; + case -908: return "Invalid session reference number "; + case -907: return "Out of session tables"; + case -906: return "Port does not exist at destination"; + case -905: return "Network activity is currently disabled "; + case -904: return "The system is unable to allocate memory, critical error"; + case -903: return "Unable to open port or bad portRefNum"; + case -902: return "Invalid or inappropriate locationKindSelector in location name"; + case -900: return "PPCToolBox not initialized "; + case -863: return "User using Close View won't let you remove balloons"; + case -862: return "No balloon showing"; + case -861: return "Invalid method passed in the method parameter"; + case -860: return "Help Manager - could not load package"; + case -859: return "Help message record contained a bad type"; + case -858: return "Help manager resource was the wrong version"; + case -857: return "No balloon content to fill in"; + case -856: return "Help Manager - bad selector"; + case -855: return "Help menu not set up"; + case -854: return "Menu & item is same as previous menu, item"; + case -853: return "Because of constant cursor movement, the help balloon was not displayed"; + case -852: return "Help Manager - out of memory"; + case -851: return "Help Manager - resource not found"; + case -850: return "Show Balloons mode was off, call to routine ignored"; + case -813: return "Attempt to call other routine before InitDBPack"; + case -812: return "Wrong version "; + case -811: return "No application handler for specified data type"; + case -810: return "Invalid parameter block specified"; + case -809: return "The database extension does not support async calls"; + case -808: return "Couldn't open or find the specified database extension."; + case -807: return "Invalid session number"; + case -806: return "Session ID is invalid"; + case -805: return "Query currently executing"; + case -804: return "Function timed out"; + case -803: return "Next data item not of requested data type"; + case -802: return "Error executing function"; + case -801: return "Data available or successfully retrieved"; + case -800: return "The data item was NULL"; + case -625: return "Unable to defer additional functions"; + case -624: return "Called with interrupts masked"; + case -623: return "Specified range of memory is not locked"; + case -622: return "Cannot make specified range contiguous"; + case -621: return "Specified range of memory is not held"; + case -620: return "Insufficient physical memory"; + case -619: return "Bad thread protocol"; + case -618: return "Thread not found"; + case -617: return "Thread Manager--Too many reqs"; + case -610: return "Cannot interact directly with user"; + case -609: return "Connection is invalid"; + case -608: return "No outstanding high-level event"; + case -607: return "Buffer is too small"; + case -606: return "Application is background only"; + case -605: return "Application SIZE not big enough for launch "; + case -604: return "Hardware configuration is not correct for call "; + case -603: return "Application made module calls in improper order "; + case -602: return "Memory mode is 32-bit, but application is not 32-bit clean "; + case -601: return "Not enough room to launch application with special requirements"; + case -600: return "No eligible process with specified process serial number "; + case -502: return "Bad selector for _HWPriv"; + case -501: return "Scrap item too big for text edit record"; + case -500: return "Region is too big"; + case -492: return "User debugger break - execute commands on stack"; + case -491: return "User debugger break - display string on stack"; + case -490: return "User debugger break"; + case -489: return "Unimplemented routine was called (SCSI)"; + case -479: return "Linked command never executed (SCSI)"; + case -478: return "Device did not go through a status phase (SCSI)"; + case -477: return "Non-zero (not \"Good\") status returned (SCSI)"; + case -476: return "The bus was reset, so your request was aborted (SCSI)"; + case -475: return "scsiReqTO exceeded (SCSI)"; + case -474: return "scsiSelTO exceeded (selection failed) (SCSI)"; + case -473: return "(SCSI)us error during transfer (SCSI)"; + case -472: return "Write flag conflicts with data transfer phase (SCSI)"; + case -471: return "Attempted to transfer too many bytes (SCSI)"; + case -470: return "Invalid field(s) in the parameter block (SCSI)"; + case -463: return "Not the first registered publisher for that container"; + case -462: return "Container already opened by this section"; + case -461: return "Alias was not resolved"; + case -460: return "A Publisher is already registered for that container"; + case -454: return "Bad edition container spec or invalid edition container"; + case -453: return "Edition file is corrupt"; + case -452: return "Not a registered section type"; + case -451: return "Not a valid section type"; + case -450: return "Edition manager not initialized or could not load package."; + case -417: return "There is no such a key attribute"; + case -416: return "Maximum key length is too long or equal to zero"; + case -415: return "Record cannot be found"; + case -414: return "Record already exists"; + case -413: return "Can't allocate disk space"; + case -410: return "The file is not a dictionary"; + case -400: return "GCR format on high density media error"; + case -360: return "Invalid slot number"; + case -351: return "Record not found in the SRT"; + case -350: return "SRT overflow"; + case -349: return "No opens were successful in the loop"; + case -348: return "Offset was too big"; + case -347: return "NumByteLanes was determined to be zero"; + case -346: return "Bad sPointer was passed to a SDM call"; + case -345: return "Error occurred during _sGetDriver"; + case -344: return "No more sResources"; + case -343: return "Error occurred during _sDisDrvrName"; + case -342: return "Error occurred during _sGetDrvrName"; + case -341: return "Status of slot is bad"; + case -340: return "Error occurred during _BlockMove"; + case -339: return "Error occurred during _NewPtr"; + case -338: return "Selector out of bounds"; + case -337: return "Slot out of bounds or does not exist"; + case -336: return "The physical block size of an sBlock was zero"; + case -335: return "The sPointer is nil; no list is specified"; + case -334: return "The CPU field of the code to be executed by sExec was wrong"; + case -333: return "The revision code to be executed by sExec was wrong"; + case -332: return "A reserved field was not zero"; + case -331: return "The id's in the given sList are not in ascending order"; + case -330: return "Reference id not found in the given list"; + case -320: return "Bus error timeout"; + case -319: return "Board ID was wrong: Init the PRAM record"; + case -318: return "SDM jump table could not be created"; + case -317: return "Error occurred while trying to initialize the slot resource table"; + case -316: return "The InitStatus_V field was negative after primary init"; + case -315: return "No board id"; + case -314: return "Error occurred during _sGetPRAMRec"; + case -313: return "No board sResource"; + case -312: return "Error occurred during _DisposePointer"; + case -311: return "The F-Header block could not be disposed"; + case -310: return "The F-Header block could not be read"; + case -309: return "A valid ByteLane field was not found"; + case -308: return "An unexpected bus error occurred"; + case -307: return "A reserved field of the declaration ROM was used"; + case -306: return "The SDM was unable to allocate memory for the sInfo array"; + case -305: return "The longword test failed"; + case -304: return "There is no directory"; + case -303: return "The revision of the declaration ROM is wrong"; + case -302: return "The format of the declaration ROM is wrong"; + case -301: return "CRC check failed"; + case -300: return "No card in slot"; + case -299: return "Wrong queue type"; + case -293: return "Cards could not be initialized"; + case -292: return "Slot Resource Table could not be initialized"; + case -291: return "Slot Resource Table could not be initialized"; + case -290: return "SDM could not be initialized"; + case -261: return "Command not supported for port type"; + case -260: return "Duplicate client ID"; + case -259: return "Name supplied is longer than 31 characters"; + case -258: return "MIDIWritePacket couldn't write to all connected ports"; + case -257: return "No connection exists between specified ports"; + case -256: return "Pending virtual connection removed"; + case -255: return "Pending virtual connection resolved"; + case -254: return "Pending virtual connection created"; + case -253: return "Too many connections made"; + case -252: return "Too many ports already installed in the system"; + case -251: return "No port with that ID found"; + case -250: return "No client with that ID found "; + case -247: return "Bad input text"; + case -246: return "Bad dictionary format"; + case -245: return "Incompatible voice"; + case -244: return "Voice not found"; + case -243: return "Buffer too small"; + case -242: return "Synthesizer not ready"; + case -241: return "Synthesizer open failed"; + case -240: return "No synthesizer found"; + case -232: return "Unknown quality"; + case -231: return "Unknown type of information"; + case -230: return "Input device hardware failure"; + case -229: return "Invalid input device reference number"; + case -228: return "Input device could not be opened"; + case -227: return "Input device already in use"; + case -226: return "Invalid sample size"; + case -225: return "Invalid sample rate"; + case -224: return "Hard disk drive too slow to record to disk"; + case -223: return "Invalid compression type"; + case -222: return "No buffer specified"; + case -221: return "Invalid Sound Input device"; + case -220: return "No Sound Input hardware"; + case -213: return "A parameter is incorrect"; + case -212: return "Not enough CPU cycles left to add another task"; + case -211: return "Channel not currently used"; + case -210: return "Can not operate in the memory allowed "; + case -209: return "The Channel is being used already "; + case -208: return "Corrupt/bad format or not of type AIFF"; + case -207: return "Could not allocate enough memory"; + case -206: return "Bad sound resource format"; + case -205: return "Bad sound channel specified"; + case -204: return "Sound resource error"; + case -203: return "Sound channel full"; + case -201: return "All available channels are already open for the synthesizer"; + case -200: return "No sound hardware"; + case -199: return "Resource map read error"; + case -198: return "Resource attribute error"; + case -197: return "RmveReference failed"; + case -196: return "RmveResource failed"; + case -195: return "AddReference failed"; + case -194: return "AddResource failed"; + case -193: return "Resource file not found"; + case -192: return "Resource not found"; + case -190: return "Offset or count out of bounds"; + case -189: return "Writing past end of file"; + case -188: return "Resource already in memory"; + case -186: return "Resource bent - Can't decompress a compressed resource"; + case -185: return "Extended resource has a bad format."; + case -158: return "Invalid parameter"; + case -157: return "Invalid pixel depth"; + case -156: return "Invalid resolution for MakeITable"; + case -155: return "Invalid type of graphics device"; + case -154: return "ColorTable entry protection violation"; + case -153: return "Range error in colorTable request"; + case -152: return "Failed to allocate memory for structure"; + case -151: return "Failed to allocate memory for temporary structures"; + case -150: return "Color2Index failed to find an index"; + case -149: return "QuickDraw could not complete the operation (insufficient stack)"; + case -148: return "Pixel map record is deeper than 1 bit per pixel"; + case -147: return "Region accumulation failed. Resulting region may be corrupt"; + case -145: return "Not enough memory for picture"; + case -132: return "File id already exists"; + case -131: return "Directory specified"; + case -130: return "No file thread exists"; + case -128: return "User canceled the query"; + case -127: return "Could not find HMenu's parent in MenuKey"; + case -126: return "System error code for MBDF not found"; + case -125: return "Insufficient memory to update a pixmap"; + case -124: return "Server volume has been disconnected"; + case -123: return "Attempt to do a hierarchical operation on a non hierarchical volume"; + case -122: return "Attempt to move into offspring (file system)"; + case -121: return "Too many working directories open"; + case -120: return "Directory not found"; + case -117: return "Block is locked"; + case -116: return "Size check failed"; + case -115: return "Block check failed"; + case -114: return "Pointer check failed"; + case -113: return "Address in zone check failed"; + case -112: return "Attempt to purge a locked or non-purgeable block"; + case -111: return "Attempt to operate on a free block"; + case -110: return "Address was odd, or out of range"; + case -109: return "NIL master pointer"; + case -108: return "Not enough room in heap zone"; + case -102: return "No object of that type in scrap"; + case -100: return "Desk scrap isn't initialized"; + case -99: return "Error in ROZ"; + case -98: return "Driver open error; port not configured for this connection"; + case -97: return "Driver open error; port already in use"; + case -95: return "Excessive collisions on AppleTalk write"; + case -94: return "AppleTalk error in attaching/detaching protocol"; + case -93: return "No AppleTalk bridge found"; + case -92: return "AppleTalk data length too big"; + case -91: return "AppleTalk socket error: socket already active; not a known socket; socket table full; all dynamic socket numbers in use / Multicast address error ddpSktErr"; + case -90: return "SCC break received"; + case -89: return "SCC receiver error"; + case -88: return "Parameter RAM uninitialized"; + case -87: return "Parameter RAM written did not verify"; + case -86: return "Time written did not verify"; + case -85: return "Unable to read clock"; + case -84: return "Track failed to verify / I/O error"; + case -83: return "Cannot synchronize"; + case -82: return "Can't find sector 0 after track format"; + case -81: return "Can't find sector"; + case -80: return "Drive error (track number wrong in address mark)"; + case -79: return "Can't correctly adjust disk speed"; + case -78: return "Tried to read side 2 of a disk in a single-sided drive"; + case -77: return "Can't initialize disk controller chip"; + case -76: return "Can't find track 0"; + case -75: return "Drive error"; + case -74: return "Write underrun occurred"; + case -73: return "Bad data mark bit slip nibbles"; + case -72: return "Bad data mark checksum"; + case -71: return "Can't find a data mark"; + case -70: return "Bad address mark (bit slip nibbles)"; + case -69: return "Bad address mark (checksum didn't check)"; + case -68: return "Read verify failed"; + case -67: return "Can't find an address mark"; + case -66: return "Disk is probably blank / Font substitution occurred"; + case -65: return "No disk in drive / Font not declared"; + case -64: return "Drive isn't connected / Font declaration error / I/O error"; + case -61: return "Read/write permission doesn't allow writing"; + case -60: return "Bad master directory block; must reinitialize volume"; + case -59: return "Problem during rename"; + case -58: return "External file system; file-system identifier is non zero, or path reference number is greater than 1024"; + case -57: return "Not a Macintosh disk; volume lacks Macintosh-format directory"; + case -56: return "No such drive; specified drive number doesn't match any number in the drive queue"; + case -55: return "Specified volume is already mounted and on-line"; + case -54: return "Attempt to open locked file for writing"; + case -53: return "Volume not on-line"; + case -52: return "Error getting file position"; + case -51: return "Path reference number specifies nonexistent access path"; + case -50: return "Error in parameter list / Not an existing volume, and no default volume / Bad positioning information / Bad drive number"; + case -49: return "The read/write permission of only one access path to a file can allow writing"; + case -48: return "File with specified name and version number already exists"; + case -47: return "File is busy; one or more files are open"; + case -46: return "Volume is locked by a software flag"; + case -45: return "File is locked"; + case -44: return "Volume is locked by a hardware setting"; + case -43: return "File not found"; + case -42: return "Too many files open"; + case -41: return "Memory full (open) or file won't fit (load)"; + case -40: return "Attempt to position before start of file"; + case -39: return "Logical end-of-file reached during read operation"; + case -38: return "File not open"; + case -37: return "Bad file name or volume name (perhaps zero-length)"; + case -36: return "I/O error"; + case -35: return "Specified volume doesn't exist"; + case -34: return "All allocation blocks on the volume are full"; + case -33: return "File directory full"; + case -30: return "DCE extension error"; + case -29: return "Unit table has no more entries"; + case -28: return "Driver isn't open"; + case -27: return "I/O request aborted by KillIO / I/O abort error"; + case -26: return "Couldn't find driver in resource file"; + case -25: return "Attempt to remove an open driver"; + case -24: return "Close error"; + case -23: return "Requested read/write permission doesn't match driver's open permission / Attempt to open RAM Serial Driver failed"; + case -22: return "Driver reference number specifies NIL handle in unit table"; + case -21: return "Driver reference number doesn't match unit table"; + case -20: return "Driver can't respond to Write call"; + case -19: return "Driver can't respond to Read call"; + case -18: return "Driver can't respond to Status call"; + case -17: return "Driver can't respond to Control call / Unimplemented control instruction"; + case -13: return "Extensions disabled"; + case -12: return "Process ID not in valid range or unavailable"; + case -11: return "Disassembler installed"; + case -10: return "MacsBug installed"; + case -9: return "Miscellaneous system error"; + case -8: return "No debugger installed to handle debugger command"; + case -5: return "Invalid Power Manager queue element"; + case -4: return "Unimplemented core routine"; + case -3: return "Core routine number out of range"; + case -2: return "Invalid queue element"; + case -1: return "Saving spool file / Entry not in queue"; + case 0: return "No error"; + case 1: return "Event type not designated in system event mask / bus error / uninitialized slot interrupt dispatch table"; + case 2: return "No such file"; + case 3: return "No such resource / Arbitration failed during SCSIGet; bus busy / uninitialized slot priority table"; + case 4: return "Interrupted system call"; + case 5: return "I/O error"; + case 6: return "No such device"; + case 7: return "Insufficient space for return argument / SCSI Manager busy with another operation"; + case 8: return "Attempted operation was out of sequence (e.g., SCSISelect before SCSIGet)"; + case 9: return "File not open or bad file number"; + case 10: return "SCSIComplete failed; bus not in status phase"; + case 11: return "Miscellaneous hardware exception error"; + case 12: return "Not enough memory / Slot resource table uninitialized / Unimplemented Core routine"; + case 13: return "Permission denied / Slot PRAM uninitialized / Uninstalled interrupt error"; + case 14: return "Bad address / I/O Core Error"; + case 15: return "Block device required / Segment loader error"; + case 16: return "Mount device busy / Floating Point error / Serial driver error"; + case 17: return "File exists"; + case 18: return "Cross-device link"; + case 19: return "No such device"; + case 20: return "Not a directory"; + case 21: return "Is a directory"; + case 22: return "Invalid or unsupported parameter"; + case 23: return "File table overflow"; + case 24: return "Too many open files"; + case 25: return "Not an interactive device / Out of memory"; + case 26: return "Text file busy / Can't launch file"; + case 27: return "File too large / File system map has been trashed"; + case 28: return "No space left on device / Stack has moved into application heap"; + case 29: return "Illegal seek"; + case 30: return "Read-only file system"; + case 31: return "Too many links"; + case 32: return "Serial hardware overrun"; + case 33: return "Math argument out or range for domain of function"; + case 34: return "Math result not representable"; + case 35: return "Record doesn't fit in node "; + case 36: return "Time out waiting for sync after holdoff"; + case 37: return "Time out waiting for HSHK high"; + case 38: return "Checksum error on response packet"; + case 40: return "Welcome to Macintosh greeting"; + case 41: return "Can't load the Finder error"; + case 42: return "Shutdown error / Unable to mount boot volume (sad Mac only)"; + case 43: return "Can't find System file to open (sad Mac only)"; + case 48: return "First byte in response packet was wrong"; + case 49: return "Sequence number in response packet was wrong"; + case 50: return "Drive number in response packet was wrong"; + case 51: return "Unserviceable slot interrupt"; + case 52: return "Detected bad catalog structure"; + case 53: return "Thread belongs to a directory not a file"; + case 54: return "File thread doesn't exist"; + case 64: return "Serial driver error"; + case 81: return "Bad opcode given to SANE Pack4"; + case 83: return "SetTrapAddress saw the \"come-from\" header"; + case 84: return "A menu was purged"; + case 85: return "MBDF resource not found"; + case 86: return "Hierarchical menus cannot be recursive"; + case 87: return "Could not load WDEF"; + case 88: return "Could not load CDEF"; + case 89: return "Could not load MDEF"; + case 90: return "An FPU instruction was executed and the machine doesn't have one"; + case 98: return "Can't patch for particular Model Mac"; + case 99: return "Can't load patch resource"; + case 101: return "Memory parity error"; + case 102: return "System is too old for this ROM"; + case 103: return "Booting in 32-bit on a 24-bit system"; + case 104: return "Need to write new boot blocks"; + case 105: return "Must have at least 1.5MB of RAM to boot 7.0"; + case 106: return "BufPtr moved too far during boot"; + case 128: return "Application or user requested abort"; + case 255: return "All command words less than this are errors"; + case 20000: return "User choice between ShutDown and Restart"; + case 20001: return "User choice between switching off and Restart"; + case 20002: return "Allow the user to ExitToShell, return if Cancel"; + case 32767: return "General system error (catch-all used in DSAT)"; + + default: return NULL; + } +} + +namespace MacOS { + + namespace { + class __system_category : public std::error_category + { + public: + virtual const char* name() const noexcept; + virtual std::string message(int ev) const; + virtual std::error_condition default_error_condition(int ev) const noexcept; + + private: + static int remap(macos_error e); + + }; + + + const char *__system_category::name() const noexcept + { + return "macos error"; + } + + std::string __system_category::message(int ev) const + { + + const char *cp = ErrorName(ev); + if (cp) return std::string(cp); + + std::string tmp("Unknown error: "); + tmp += std::to_string(ev); + return tmp; + } + + std::error_condition __system_category::default_error_condition(int ev) const noexcept + { + + int x = remap(static_cast(ev)); + if (x >= 0) return std::error_condition(x, std::generic_category()); + + return std::error_condition(ev, macos_system_category()); + } + + int __system_category::remap(macos_error e) + { + // todo + switch(e) + { + case rfNumErr: return EBADF; + case ioErr: return EIO; + case permErr: return EACCES; + case fnfErr: return ENOENT; + case dirNFErr: return ENOTDIR; + case notAFileErr: return EISDIR; + case extFSErr: return ENOTSUP; + case wPrErr: return EROFS; + case dupFNErr: return EEXIST; + case fBsyErr: return EBUSY; + case dskFulErr: return ENOSPC; + + default: return -1; + } + + } + + } + + const std::error_category& macos_system_category() + { + static __system_category s; + return s; + } + + + + macos_error macos_error_from_errno() + { + return macos_error_from_errno(errno); + } + + macos_error macos_error_from_errno(int error) + { + switch(error) + { + case 0: return noErr; + case EBADF: return rfNumErr; + case EIO: return ioErr; + case EACCES: return permErr; + case ENOENT: return fnfErr; + case ENOTDIR: return dirNFErr; + case EISDIR: return notAFileErr; + case ENOTSUP: return extFSErr; + case EROFS: return wPrErr; + + case EEXIST: return dupFNErr; + + case EBUSY: return fBsyErr; + + case EDQUOT: return dskFulErr; + case ENOSPC: return dskFulErr; + + + default: + return ioErr; + } + + } + +} diff --git a/macos/errors.h b/macos/errors.h index a973031..f24845f 100644 --- a/macos/errors.h +++ b/macos/errors.h @@ -14,12 +14,20 @@ Created: Thursday, March 14, 1991 at 3:53 PM #ifndef __macos_errors__ #define __macos_errors__ +#ifdef __cplusplus +extern "C" { +#endif +const char *ErrorName(int16_t trap); +#ifdef __cplusplus +} +#endif + #ifdef __cplusplus namespace MacOS { #endif -enum { - +enum macos_error { + noErr = 0, paramErr = -50, /*error in user parameter list*/ noHardwareErr = -200, /*Sound Manager Error Returns*/ notEnoughHardwareErr = -201, /*Sound Manager Error Returns*/ @@ -39,9 +47,9 @@ enum { openErr = -23, /*I/O System Errors*/ closErr = -24, /*I/O System Errors*/ dRemovErr = -25, /*tried to remove an open driver*/ - dInstErr = -26 /*DrvrInstall couldn't find driver in resources */ -}; -enum { + dInstErr = -26, /*DrvrInstall couldn't find driver in resources */ + + abortErr = -27, /*IO call aborted by KillIO*/ iIOAbortErr = -27, /*IO abort error (Printing Manager)*/ notOpenErr = -28, /*Couldn't rd/wr/ctl/sts cause driver not opened*/ @@ -61,9 +69,9 @@ enum { tmfoErr = -42, /*too many files open*/ fnfErr = -43, /*File not found*/ wPrErr = -44, /*diskette is write protected.*/ - fLckdErr = -45 /*file is locked*/ -}; -enum { + fLckdErr = -45, /*file is locked*/ + + vLckdErr = -46, /*volume is locked*/ fBsyErr = -47, /*File is busy (delete)*/ dupFNErr = -48, /*duplicate filename (rename)*/ @@ -83,9 +91,9 @@ enum { tmwdoErr = -121, /*No free WDCB available*/ badMovErr = -122, /*Move into offspring error*/ wrgVolTypErr = -123, /*Wrong volume type error [operation not supported for MFS]*/ - volGoneErr = -124 /*Server volume has been disconnected.*/ -}; -enum { + volGoneErr = -124, /*Server volume has been disconnected.*/ + + fidNotFound = -1300, /*no file thread exists.*/ fidExists = -1301, /*file id already exists*/ notAFileErr = -1302, /*directory specified*/ @@ -105,9 +113,9 @@ enum { lastDskErr = -64, /*I/O System Errors*/ noDriveErr = -64, /*drive not installed*/ offLinErr = -65, /*r/w requested for an off-line drive*/ - noNybErr = -66 /*couldn't find 5 nybbles in 200 tries*/ -}; -enum { + noNybErr = -66, /*couldn't find 5 nybbles in 200 tries*/ + + noAdrMkErr = -67, /*couldn't find valid addr mark*/ dataVerErr = -68, /*read verify compare failed*/ badCksmErr = -69, /*addr mark checksum didn't check*/ @@ -127,9 +135,9 @@ enum { fmt2Err = -83, /*can't get enough sync*/ verErr = -84, /*track failed to verify*/ clkRdErr = -85, /*unable to read same clock value twice*/ - clkWrErr = -86 /*time written did not verify*/ -}; -enum { + clkWrErr = -86, /*time written did not verify*/ + + prWrErr = -87, /*parameter ram written didn't read-verify*/ prInitErr = -88, /*InitUtil found the parameter ram uninitialized*/ rcvrErr = -89, /*SCC receiver error (framing; parity; OR)*/ @@ -153,9 +161,9 @@ enum { nilHandleErr = -109, /*Master Pointer was NIL in HandleZone or other*/ memWZErr = -111, /*WhichZone failed (applied to free block)*/ memPurErr = -112, /*trying to purge a locked or non-purgeable block*/ - memAdrErr = -110 /*address was odd; or out of range*/ -}; -enum { + memAdrErr = -110, /*address was odd; or out of range*/ + + memAZErr = -113, /*Address in zone check failed*/ memPCErr = -114, /*Pointer Check failed*/ memBCErr = -115, /*Block Check failed*/ @@ -175,9 +183,9 @@ enum { noMemForPictPlaybackErr = -145, rgnTooBigError = -147, pixMapTooDeepErr = -148, - nsStackErr = -149 -}; -enum { + nsStackErr = -149, + + cMatchErr = -150, /*Color2Index failed to find an index*/ cTempMemErr = -151, /*failed to allocate memory for temporary structures*/ cNoMemErr = -152, /*failed to allocate memory for structure*/ @@ -199,9 +207,9 @@ enum { notEnoughHardware = notEnoughHardwareErr, /* *** obsolete spelling */ queueFull = -203, /*Sound Manager Error Returns*/ resProblem = -204, /*Sound Manager Error Returns*/ - badChannel = -205 /*Sound Manager Error Returns*/ -}; -enum { + badChannel = -205, /*Sound Manager Error Returns*/ + + badFormat = -206, /*Sound Manager Error Returns*/ notEnoughBufferSpace = -207, /* could not allocate enough memory */ badFileFormat = -208, /* was not type AIFF or was of bad format,corrupt */ @@ -221,9 +229,8 @@ enum { siBadRefNum = -229, /*invalid input device reference number*/ siInputDeviceErr = -230, /*input device hardware failure*/ siUnknownInfoType = -231, /*invalid info type selector (returned by driver)*/ - siUnknownQuality = -232 /*invalid quality selector (returned by driver)*/ -}; -enum { + siUnknownQuality = -232, /*invalid quality selector (returned by driver)*/ + /*Notification Manager errors*/ nmTypErr = -299, /*wrong queue type*/ @@ -245,9 +252,9 @@ enum { smRevisionErr = -303, /*Wrong revison level*/ smNoDir = -304, /*Directory offset is Nil */ smDisabledSlot = -305, /*This slot is disabled (-305 use to be smLWTstBad)*/ - smNosInfoArray = -306 /*No sInfoArray. Memory Mgr error.*/ -}; -enum { + smNosInfoArray = -306, /*No sInfoArray. Memory Mgr error.*/ + + smResrvErr = -307, /*Fatal reserved error. Resreved field <> 0.*/ smUnExBusErr = -308, /*Unexpected BusError*/ smBLFieldBad = -309, /*ByteLanes field was bad.*/ @@ -273,9 +280,9 @@ but a special error is needed to patch secondary inits.*/ smBadRefId = -330, /*Reference Id not found in List*/ smBadsList = -331, /*Bad sList: Id1 < Id2 < Id3 ...format is not followed.*/ smReservedErr = -332, /*Reserved field not zero*/ - smCodeRevErr = -333 /*Code revision is wrong*/ -}; -enum { + smCodeRevErr = -333, /*Code revision is wrong*/ + + smCPUErr = -334, /*Code revision is wrong*/ smsPointerNil = -335, /*LPointer is nil From sOffsetData. If this error occurs; check sInfo rec for more information.*/ smNilsBlockErr = -336, /*Nil sBlock error (Dont allocate and try to use a nil sBlock)*/ @@ -295,9 +302,9 @@ enum { smSRTOvrFlErr = -350, /*SRT over flow.*/ smRecNotFnd = -351, /*Record not found in the SRT.*/ editionMgrInitErr = -450, /*edition manager not inited by this app*/ - badSectionErr = -451 /*not a valid SectionRecord*/ -}; -enum { + badSectionErr = -451, /*not a valid SectionRecord*/ + + notRegisteredSectionErr = -452, /*not a registered SectionRecord*/ badEditionFileErr = -453, /*edition file is corrupt*/ badSubPartErr = -454, /*can not use sub parts in this release*/ @@ -321,10 +328,10 @@ enum { notEnoughMemoryErr = -620, /*insufficient physical memory*/ notHeldErr = -621, /*specified range of memory is not held*/ cannotMakeContiguousErr = -622, /*cannot make specified range contiguous*/ - notLockedErr = -623 /*specified range of memory is not locked*/ -}; -enum { - interruptsMaskedErr = -624, /*donÕt call with interrupts masked*/ + notLockedErr = -623, /*specified range of memory is not locked*/ + + + interruptsMaskedErr = -624, /*don't call with interrupts masked*/ cannotDeferErr = -625, /*unable to defer additional functions*/ ddpSktErr = -91, /*error in soket number*/ ddpLenErr = -92, /*data length too big*/ @@ -343,9 +350,9 @@ enum { aspBufTooSmall = -1067, /*Buffer too small*/ aspNoMoreSess = -1068, /*No more sessions on server*/ aspNoServers = -1069, /*No servers at that address*/ - aspParamErr = -1070 /*Parameter error*/ -}; -enum { + aspParamErr = -1070, /*Parameter error*/ + + aspServerBusy = -1071, /*Server cannot open another session*/ aspSessClosed = -1072, /*Session closed*/ aspSizeErr = -1073, /*Command block too big*/ @@ -365,9 +372,9 @@ enum { noMPPErr = -3102, ckSumErr = -3103, extractErr = -3104, - readQErr = -3105 -}; -enum { + readQErr = -3105, + + atpLenErr = -3106, atpBadRsp = -3107, recNotFnd = -3108, @@ -387,9 +394,9 @@ enum { afpItemNotFound = -5012, afpLockErr = -5013, afpMiscErr = -5014, - afpNoMoreLocks = -5015 -}; -enum { + afpNoMoreLocks = -5015, + + afpNoServer = -5016, afpObjectExists = -5017, afpObjectNotFound = -5018, @@ -409,9 +416,9 @@ enum { afpObjectLocked = -5032, /*Object is M/R/D/W inhibited*/ afpContainsSharedErr = -5033, /*$FFFFEC57 the folder being shared contains a shared folder */ afpIDNotFound = -5034, /*$FFFFEC56*/ - afpIDExists = -5035 /*$FFFFEC55*/ -}; -enum { + afpIDExists = -5035, /*$FFFFEC55*/ + + afpDiffVolErr = -5036, /*$FFFFEC54*/ afpCatalogChanged = -5037, /*$FFFFEC53*/ afpSameObjectErr = -5038, /*$FFFFEC52*/ @@ -433,9 +440,9 @@ enum { noSessionErr = -908, /* Invalid session reference number */ badReqErr = -909, /* bad parameter or invalid state for operation */ portNameExistsErr = -910, /* port is already open (perhaps in another app) */ - noUserNameErr = -911 /* user name unknown on destination machine */ -}; -enum { + noUserNameErr = -911, /* user name unknown on destination machine */ + + userRejectErr = -912, /* Destination rejected the session request */ noMachineNameErr = -913, /* user hasn't named his Macintosh in the Network Setup Control Panel */ noToolboxNameErr = -914, /* A system resource is missing, not too likely */ @@ -455,9 +462,9 @@ enum { guestNotAllowedErr = -932, /* destination port requires authentication */ swOverrunErr = 1, /*serial driver error masks*/ parityErr = 16, /*serial driver error masks*/ - hwOverrunErr = 32 /*serial driver error masks*/ -}; -enum { + hwOverrunErr = 32, /*serial driver error masks*/ + + framingErr = 64, /*serial driver error masks*/ dsBusError = 1, /*bus error */ dsAddressErr = 2, /*address error*/ @@ -477,9 +484,9 @@ enum { dsFPErr = 16, /*Floating point error*/ dsNoPackErr = 17, /*package 0 not present*/ dsNoPk1 = 18, /*package 1 not present*/ - dsNoPk2 = 19 /*package 2 not present*/ -}; -enum { + dsNoPk2 = 19, /*package 2 not present*/ + + dsNoPk3 = 20, /*package 3 not present*/ dsNoPk4 = 21, /*package 4 not present*/ dsNoPk5 = 22, /*package 5 not present*/ @@ -493,16 +500,16 @@ enum { dsFinderErr = 41, /*can't load the Finder error*/ dsBadSlotInt = 51, /*unserviceable slot interrupt*/ dsBadSANEOpcode = 81, /*bad opcode given to SANE Pack4*/ - dsBadPatchHeader = 83, /*SetTrapAddress saw the Òcome-fromÓ header*/ + dsBadPatchHeader = 83, /*SetTrapAddress saw the "come-from" header*/ menuPrgErr = 84, /*happens when a menu is purged*/ dsMBarNFnd = 85, /*Menu Manager Errors*/ dsHMenuFindErr = 86, /*Menu Manager Errors*/ dsWDEFNotFound = 87, /*could not load WDEF*/ dsCDEFNotFound = 88, /*could not load CDEF*/ - dsMDEFNotFound = 89 /*could not load MDEF*/ -}; -enum { - dsNoFPU = 90, /*an FPU instruction was executed and the machine doesnÕt have one*/ + dsMDEFNotFound = 89, /*could not load MDEF*/ + + + dsNoFPU = 90, /*an FPU instruction was executed and the machine doesn't have one*/ dsNoPatch = 98, /*Can't patch for particular Model Mac*/ dsBadPatch = 99, /*Can't load patch resource*/ dsParityErr = 101, /*memory parity error*/ @@ -518,34 +525,71 @@ enum { dsForcedQuit = 20002, /*allow the user to ExitToShell, return if Cancel*/ /*System Errors that are used after MacsBug is loaded to put up dialogs since these should not cause MacsBug to stop, they must be in the range (30, 42, 16384-32767) negative numbers add to an existing dialog without putting up a whole new dialog*/ - dsMacsBugInstalled = -10, /*say ÒMacsBug InstalledÓ*/ - dsDisassemblerInstalled = -11, /*say ÒDisassembler InstalledÓ*/ - dsExtensionsDisabled = -13, /*say ÒExtensions DisabledÓ*/ + dsMacsBugInstalled = -10, /*say "MacsBug Installed"*/ + dsDisassemblerInstalled = -11, /*say "Disassembler Installed"*/ + dsExtensionsDisabled = -13, /*say "Extensions Disabled"*/ dsGreeting = 40, /*welcome to Macintosh greeting*/ dsSysErr = 32767, /*general system error*/ -/*old names here for compatibilityÕs sake*/ - WDEFNFnd = dsWDEFNotFound -}; -enum { +/*old names here for compatibility's sake*/ + WDEFNFnd = dsWDEFNotFound, + + CDEFNFnd = dsCDEFNotFound, dsNotThe1 = 31, /*not the disk I wanted*/ dsBadStartupDisk = 42, /*unable to mount boot volume (sad Mac only)*/ - dsSystemFileErr = 43, /*canÕt find System file to open (sad Mac only)*/ - dsHD20Installed = -12, /*say ÒHD20 StartupÓ*/ + dsSystemFileErr = 43, /*can't find System file to open (sad Mac only)*/ + dsHD20Installed = -12, /*say "HD20 Startup"*/ mBarNFnd = -126, /*system error code for MBDF not found*/ hMenuFindErr = -127, /*could not find HMenu's parent in MenuKey*/ userBreak = -490, /*user debugger break*/ strUserBreak = -491, /*user debugger break; display string on stack*/ exUserBreak = -492, /*user debugger break; execute debugger commands on stack*/ -/*obsolete errors that are no longer used, but I donÕt have the guts to remove from this file*/ +/*obsolete errors that are no longer used, but I don't have the guts to remove from this file*/ selectorErr = paramErr /* bad selector, for selector-based traps */ }; + #ifdef __cplusplus } #endif +#ifdef __cplusplus + +#include + +namespace MacOS { + + macos_error macos_error_from_errno(); + macos_error macos_error_from_errno(int error); + + // c++11 error stuff + const std::error_category& macos_system_category(); + + inline std::error_code make_error_code(macos_error e) noexcept + { + return std::error_code(static_cast(e), macos_system_category()); + } + + inline std::error_condition make_error_condition(macos_error e) noexcept + { + return std::error_condition(static_cast(e), macos_system_category()); + } +} + +namespace std { + + template<> + struct is_error_code_enum : public true_type {}; + + template<> + struct is_error_condition_enum : public true_type {}; +} + + +#endif + + #endif