mirror of
https://github.com/ksherlock/mpw.git
synced 2024-11-29 15:49:31 +00:00
946 lines
48 KiB
C++
946 lines
48 KiB
C++
|
||
#include <cstddef> // null
|
||
#include <cstdint>
|
||
#include <cerrno>
|
||
#include <string>
|
||
|
||
#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<macos_error>(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;
|
||
|
||
case ENOTEMPTY: return fBsyErr;
|
||
|
||
|
||
default:
|
||
return ioErr;
|
||
}
|
||
|
||
}
|
||
|
||
}
|