summaryrefslogtreecommitdiffstats
path: root/maccaml/errors.c
blob: eb4f7b78d4fba1b4fb4c4c2190ef5e8c1000c855 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
/***********************************************************************/
/*                                                                     */
/*                           Objective Caml                            */
/*                                                                     */
/*             Damien Doligez, projet Para, INRIA Rocquencourt         */
/*                                                                     */
/*  Copyright 1997 Institut National de Recherche en Informatique et   */
/*  en Automatique.  Distributed only by permission.                   */
/*                                                                     */
/***********************************************************************/

/* $Id$ */

#include "main.h"

static int exiting = 0;

void assert_failure (char *condition, char *file, int line)
{
  Str255 buf;

  if (exiting) ExitToShell ();
  exiting = 1;
  NumToString ((long) line, buf);
  ParamText (c2pstr (condition), c2pstr (file), buf, NULL);
  InitCursor ();
  modalkeys = kKeysOK;
  StopAlert (kAlertBug, myModalFilterUPP);
  ExitApplication ();
}

void XXX (void)
{
  InitCursor ();
  modalkeys = kKeysOK;
  StopAlert (kAlertNotYet, myModalFilterUPP);
}

void ErrorAlert (short msg1, Str255 bufmsg2, short msg3, OSErr err)
{
  Str255 bufmsg1, bufmsg3, bufmsg4;
  short msg;

  switch (err){
  case noErr:
  case userCanceledErr: return;

  case mFulErr:
  case memFullErr:
  case cTempMemErr:
  case cNoMemErr:
  case updPixMemErr: msg = kMemFull; break;
  case dskFulErr:
  case afpDiskFull: msg = kDiskFull; break;
  case dirFulErr: msg = kDirFull; break;
  case tmfoErr:
  case afpTooManyFilesOpen: msg = kTooManyFiles; break;
  case fnfErr: msg = kFileNotFound; break;
  case wPrErr: msg = kWriteProtect; break;
  case fLckdErr:
  case afpObjectLocked: msg = kFileLocked; break;
  case vLckdErr:
  case afpVolLocked: msg = kVolLocked; break;
  case fBsyErr:
  case afpFileBusy: msg = kFileBusy; break;
  case opWrErr: msg = kFileOpen; break;
  case volOffLinErr: msg = kVolOffLine; break;
  case permErr:
  case afpAccessDenied: msg = kPermDenied; break;
  case wrPermErr: msg = kWritePermDenied; break;
  case dirNFErr: msg = kDirNotFound; break;
  case volGoneErr:
  case afpSessClosed: msg = kDisconnected; break;
  case ioErr: msg = kIOError; break;

  default: msg = 0; break;
  }

  GetIndString (bufmsg1, kMiscStrings, msg1);
  GetIndString (bufmsg3, kMiscStrings, msg3);

  if (msg != 0){
    GetIndString (bufmsg4, kErrorStrings, msg);
    ParamText (bufmsg1, bufmsg2, bufmsg3, bufmsg4);
  }else{
    NumToString (err, bufmsg4);
    ParamText (bufmsg1, bufmsg2, bufmsg3, bufmsg4);
  }
  InitCursor ();
  modalkeys = kKeysOK;
  StopAlert (msg ? kAlertErrorMsg : kAlertErrorNum, myModalFilterUPP);
}

void ErrorAlertCantOpen (Str255 filename, OSErr err)
{
  ErrorAlert (kCannotOpenIdx, filename, kCloseQuoteIdx, err);
}

void ErrorAlertGeneric (OSErr err)
{
  ErrorAlert (kEmptyIdx, "\p", kEmptyIdx, err);
}

OSErr InitialiseErrors (void)
{
/* XXX CouldAlert n'existe plus ??
  CouldAlert (kAlertErrorMsg);
  CouldAlert (kAlertErrorNum);
  CouldAlert (kAlertBug);
*/
  return noErr;
}