OSDN Git Service

FIRST REPOSITORY
[eos/hostdependOTHERS.git] / ALPHALINUX5 / util / ALPHALINUX5 / man / man3 / Tcl_AddObjErrorInfo.3
1 '\"
2 '\" Copyright (c) 1989-1993 The Regents of the University of California.
3 '\" Copyright (c) 1994-1997 Sun Microsystems, Inc.
4 '\"
5 '\" See the file "license.terms" for information on usage and redistribution
6 '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
7 '\" 
8 '\" RCS: @(#) $Id: AddErrInfo.3,v 1.4 2000/04/26 17:00:43 ericm Exp $
9 '\" 
10 '\" The definitions below are for supplemental macros used in Tcl/Tk
11 '\" manual entries.
12 '\"
13 '\" .AP type name in/out ?indent?
14 '\"     Start paragraph describing an argument to a library procedure.
15 '\"     type is type of argument (int, etc.), in/out is either "in", "out",
16 '\"     or "in/out" to describe whether procedure reads or modifies arg,
17 '\"     and indent is equivalent to second arg of .IP (shouldn't ever be
18 '\"     needed;  use .AS below instead)
19 '\"
20 '\" .AS ?type? ?name?
21 '\"     Give maximum sizes of arguments for setting tab stops.  Type and
22 '\"     name are examples of largest possible arguments that will be passed
23 '\"     to .AP later.  If args are omitted, default tab stops are used.
24 '\"
25 '\" .BS
26 '\"     Start box enclosure.  From here until next .BE, everything will be
27 '\"     enclosed in one large box.
28 '\"
29 '\" .BE
30 '\"     End of box enclosure.
31 '\"
32 '\" .CS
33 '\"     Begin code excerpt.
34 '\"
35 '\" .CE
36 '\"     End code excerpt.
37 '\"
38 '\" .VS ?version? ?br?
39 '\"     Begin vertical sidebar, for use in marking newly-changed parts
40 '\"     of man pages.  The first argument is ignored and used for recording
41 '\"     the version when the .VS was added, so that the sidebars can be
42 '\"     found and removed when they reach a certain age.  If another argument
43 '\"     is present, then a line break is forced before starting the sidebar.
44 '\"
45 '\" .VE
46 '\"     End of vertical sidebar.
47 '\"
48 '\" .DS
49 '\"     Begin an indented unfilled display.
50 '\"
51 '\" .DE
52 '\"     End of indented unfilled display.
53 '\"
54 '\" .SO
55 '\"     Start of list of standard options for a Tk widget.  The
56 '\"     options follow on successive lines, in four columns separated
57 '\"     by tabs.
58 '\"
59 '\" .SE
60 '\"     End of list of standard options for a Tk widget.
61 '\"
62 '\" .OP cmdName dbName dbClass
63 '\"     Start of description of a specific option.  cmdName gives the
64 '\"     option's name as specified in the class command, dbName gives
65 '\"     the option's name in the option database, and dbClass gives
66 '\"     the option's class in the option database.
67 '\"
68 '\" .UL arg1 arg2
69 '\"     Print arg1 underlined, then print arg2 normally.
70 '\"
71 '\" RCS: @(#) $Id: man.macros,v 1.3 1999/04/16 00:46:35 stanton Exp $
72 '\"
73 '\"     # Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
74 .if t .wh -1.3i ^B
75 .nr ^l \n(.l
76 .ad b
77 '\"     # Start an argument description
78 .de AP
79 .ie !"\\$4"" .TP \\$4
80 .el \{\
81 .   ie !"\\$2"" .TP \\n()Cu
82 .   el          .TP 15
83 .\}
84 .ta \\n()Au \\n()Bu
85 .ie !"\\$3"" \{\
86 \&\\$1  \\fI\\$2\\fP    (\\$3)
87 .\".b
88 .\}
89 .el \{\
90 .br
91 .ie !"\\$2"" \{\
92 \&\\$1  \\fI\\$2\\fP
93 .\}
94 .el \{\
95 \&\\fI\\$1\\fP
96 .\}
97 .\}
98 ..
99 '\"     # define tabbing values for .AP
100 .de AS
101 .nr )A 10n
102 .if !"\\$1"" .nr )A \\w'\\$1'u+3n
103 .nr )B \\n()Au+15n
104 .\"
105 .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
106 .nr )C \\n()Bu+\\w'(in/out)'u+2n
107 ..
108 .AS Tcl_Interp Tcl_CreateInterp in/out
109 '\"     # BS - start boxed text
110 '\"     # ^y = starting y location
111 '\"     # ^b = 1
112 .de BS
113 .br
114 .mk ^y
115 .nr ^b 1u
116 .if n .nf
117 .if n .ti 0
118 .if n \l'\\n(.lu\(ul'
119 .if n .fi
120 ..
121 '\"     # BE - end boxed text (draw box now)
122 .de BE
123 .nf
124 .ti 0
125 .mk ^t
126 .ie n \l'\\n(^lu\(ul'
127 .el \{\
128 .\"     Draw four-sided box normally, but don't draw top of
129 .\"     box if the box started on an earlier page.
130 .ie !\\n(^b-1 \{\
131 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
132 .\}
133 .el \}\
134 \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
135 .\}
136 .\}
137 .fi
138 .br
139 .nr ^b 0
140 ..
141 '\"     # VS - start vertical sidebar
142 '\"     # ^Y = starting y location
143 '\"     # ^v = 1 (for troff;  for nroff this doesn't matter)
144 .de VS
145 .if !"\\$2"" .br
146 .mk ^Y
147 .ie n 'mc \s12\(br\s0
148 .el .nr ^v 1u
149 ..
150 '\"     # VE - end of vertical sidebar
151 .de VE
152 .ie n 'mc
153 .el \{\
154 .ev 2
155 .nf
156 .ti 0
157 .mk ^t
158 \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
159 .sp -1
160 .fi
161 .ev
162 .\}
163 .nr ^v 0
164 ..
165 '\"     # Special macro to handle page bottom:  finish off current
166 '\"     # box/sidebar if in box/sidebar mode, then invoked standard
167 '\"     # page bottom macro.
168 .de ^B
169 .ev 2
170 'ti 0
171 'nf
172 .mk ^t
173 .if \\n(^b \{\
174 .\"     Draw three-sided box if this is the box's first page,
175 .\"     draw two sides but no top otherwise.
176 .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
177 .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
178 .\}
179 .if \\n(^v \{\
180 .nr ^x \\n(^tu+1v-\\n(^Yu
181 \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
182 .\}
183 .bp
184 'fi
185 .ev
186 .if \\n(^b \{\
187 .mk ^y
188 .nr ^b 2
189 .\}
190 .if \\n(^v \{\
191 .mk ^Y
192 .\}
193 ..
194 '\"     # DS - begin display
195 .de DS
196 .RS
197 .nf
198 .sp
199 ..
200 '\"     # DE - end display
201 .de DE
202 .fi
203 .RE
204 .sp
205 ..
206 '\"     # SO - start of list of standard options
207 .de SO
208 .SH "STANDARD OPTIONS"
209 .LP
210 .nf
211 .ta 4c 8c 12c
212 .ft B
213 ..
214 '\"     # SE - end of list of standard options
215 .de SE
216 .fi
217 .ft R
218 .LP
219 See the \\fBoptions\\fR manual entry for details on the standard options.
220 ..
221 '\"     # OP - start of full description for a single option
222 .de OP
223 .LP
224 .nf
225 .ta 4c
226 Command-Line Name:      \\fB\\$1\\fR
227 Database Name:  \\fB\\$2\\fR
228 Database Class: \\fB\\$3\\fR
229 .fi
230 .IP
231 ..
232 '\"     # CS - begin code excerpt
233 .de CS
234 .RS
235 .nf
236 .ta .25i .5i .75i 1i
237 ..
238 '\"     # CE - end code excerpt
239 .de CE
240 .fi
241 .RE
242 ..
243 .de UL
244 \\$1\l'|0\(ul'\\$2
245 ..
246 .TH Tcl_AddErrorInfo 3 8.0 Tcl "Tcl Library Procedures"
247 .BS
248 .SH NAME
249 Tcl_AddObjErrorInfo, Tcl_AddErrorInfo, Tcl_SetErrorCode, Tcl_SetErrorCodeVA, Tcl_PosixError, Tcl_LogCommandInfo \- record information about errors
250 .SH SYNOPSIS
251 .nf
252 \fB#include <tcl.h>\fR
253 .sp
254 \fBTcl_AddObjErrorInfo\fR(\fIinterp, message, length\fR)
255 .sp
256 \fBTcl_AddErrorInfo\fR(\fIinterp, message\fR)
257 .sp
258 \fBTcl_SetObjErrorCode\fR(\fIinterp, errorObjPtr\fR)
259 .sp
260 \fBTcl_SetErrorCode\fR(\fIinterp, element, element, ... \fB(char *) NULL\fR)
261 .sp
262 \fBTcl_SetErrorCodeVA\fR(\fIinterp, argList\fR)
263 .sp
264 char *
265 \fBTcl_PosixError\fR(\fIinterp\fR)
266 .sp
267 void
268 \fBTcl_LogCommandInfo\fR(\fIinterp, script, command, commandLength\fR)
269 .SH ARGUMENTS
270 .AS Tcl_Interp *message
271 .AP Tcl_Interp *interp in
272 Interpreter in which to record information.
273 .AP char *message in
274 For \fBTcl_AddObjErrorInfo\fR,
275 this points to the first byte of an array of bytes
276 containing a string to record in the \fBerrorInfo\fR variable.
277 This byte array may contain embedded null bytes
278 unless \fIlength\fR is negative.
279 For \fBTcl_AddErrorInfo\fR,
280 this is a conventional C string to record in the \fBerrorInfo\fR variable.
281 .AP int length in
282 The number of bytes to copy from \fImessage\fR when
283 setting the \fBerrorInfo\fR variable.
284 If negative, all bytes up to the first null byte are used.
285 .AP Tcl_Obj *errorObjPtr in
286 This variable \fBerrorCode\fR will be set to this value.
287 .AP char *element in
288 String to record as one element of \fBerrorCode\fR variable.
289 Last \fIelement\fR argument must be NULL.
290 .AP va_list argList in
291 An argument list which must have been initialised using
292 \fBTCL_VARARGS_START\fR, and cleared using \fBva_end\fR.
293 .AP char *script in
294 Pointer to first character in script containing command (must be <= command)
295 .AP char *command in
296 Pointer to first character in command that generated the error
297 .AP int commandLength in
298 Number of bytes in command; -1 means use all bytes up to first NULL byte
299 .BE
300
301 .SH DESCRIPTION
302 .PP
303 These procedures are used to manipulate two Tcl global variables
304 that hold information about errors.
305 The variable \fBerrorInfo\fR holds a stack trace of the
306 operations that were in progress when an error occurred,
307 and is intended to be human-readable.
308 The variable \fBerrorCode\fR holds a list of items that
309 are intended to be machine-readable.
310 The first item in \fBerrorCode\fR identifies the class of
311 error that occurred
312 (e.g. POSIX means an error occurred in a POSIX system call)
313 and additional elements in \fBerrorCode\fR hold additional pieces
314 of information that depend on the class.
315 See the Tcl overview manual entry for details on the various
316 formats for \fBerrorCode\fR.
317 .PP
318 The \fBerrorInfo\fR variable is gradually built up as an
319 error unwinds through the nested operations.
320 Each time an error code is returned to \fBTcl_EvalObj\fR
321 (or \fBTcl_Eval\fR, which calls \fBTcl_EvalObj\fR)
322 it calls the procedure \fBTcl_AddObjErrorInfo\fR to add
323 additional text to \fBerrorInfo\fR describing the
324 command that was being executed when the error occurred.
325 By the time the error has been passed all the way back
326 to the application, it will contain a complete trace
327 of the activity in progress when the error occurred.
328 .PP
329 It is sometimes useful to add additional information to
330 \fBerrorInfo\fR beyond what can be supplied automatically
331 by \fBTcl_EvalObj\fR.
332 \fBTcl_AddObjErrorInfo\fR may be used for this purpose:
333 its \fImessage\fR and \fIlength\fR arguments describe an additional
334 string to be appended to \fBerrorInfo\fR.
335 For example, the \fBsource\fR command calls \fBTcl_AddObjErrorInfo\fR
336 to record the name of the file being processed and the
337 line number on which the error occurred;
338 for Tcl procedures, the procedure name and line number
339 within the procedure are recorded, and so on.
340 The best time to call \fBTcl_AddObjErrorInfo\fR is just after
341 \fBTcl_EvalObj\fR has returned \fBTCL_ERROR\fR.
342 In calling \fBTcl_AddObjErrorInfo\fR, you may find it useful to
343 use the \fBerrorLine\fR field of the interpreter (see the
344 \fBTcl_Interp\fR manual entry for details).
345 .PP
346 \fBTcl_AddErrorInfo\fR resembles \fBTcl_AddObjErrorInfo\fR
347 but differs in initializing \fBerrorInfo\fR from the string
348 value of the interpreter's result
349 if the error is just starting to be logged.
350 It does not use the result as a Tcl object
351 so any embedded null characters in the result
352 will cause information to be lost.
353 It also takes a conventional C string in \fImessage\fR
354 instead of \fBTcl_AddObjErrorInfo\fR's counted string.
355 .PP
356 The procedure \fBTcl_SetObjErrorCode\fR is used to set the
357 \fBerrorCode\fR variable. \fIerrorObjPtr\fR contains a list object
358 built up by the caller. \fBerrorCode\fR is set to this
359 value. \fBTcl_SetObjErrorCode\fR is typically invoked just 
360 before returning an error in an object command. If an error is
361 returned without calling \fBTcl_SetObjErrorCode\fR or
362 \fBTcl_SetErrorCode\fR the Tcl interpreter automatically sets
363 \fBerrorCode\fR to \fBNONE\fR.
364 .PP
365 The procedure \fBTcl_SetErrorCode\fR is also used to set the
366 \fBerrorCode\fR variable. However, it takes one or more strings to
367 record instead of an object. Otherwise, it is similar to
368 \fBTcl_SetObjErrorCode\fR in behavior.
369 .PP
370 \fBTcl_SetErrorCodeVA\fR is the same as \fBTcl_SetErrorCode\fR except that
371 instead of taking a variable number of arguments it takes an argument list.
372 .PP
373 \fBTcl_PosixError\fR
374 sets the \fBerrorCode\fR variable after an error in a POSIX kernel call.
375 It reads the value of the \fBerrno\fR C variable and calls
376 \fBTcl_SetErrorCode\fR to set \fBerrorCode\fR in the \fBPOSIX\fR format.
377 The caller must previously have called \fBTcl_SetErrno\fR to set
378 \fBerrno\fR; this is necessary on some platforms (e.g. Windows) where Tcl
379 is linked into an application as a shared library, or when the error
380 occurs in a dynamically loaded extension. See the manual entry for
381 \fBTcl_SetErrno\fR for more information.
382 .PP
383 \fBTcl_PosixError\fR returns a human-readable diagnostic message
384 for the error
385 (this is the same value that will appear as the third element
386 in \fBerrorCode\fR).
387 It may be convenient to include this string as part of the
388 error message returned to the application in
389 the interpreter's result.
390 .PP
391 \fBTcl_LogCommandInfo\fR is invoked after an error occurs in an
392 interpreter.  It adds information about the command that was being
393 executed when the error occured to the \fBerrorInfo\fR variable, and
394 the line number stored internally in the interpreter is set.  On the
395 first call to \fBTcl_LogCommandInfo\fR or \fBTcl_AddObjErrorInfo\fR
396 since an error occurred, the old information in \fBerrorInfo\fR is
397 deleted.
398 .PP
399 It is important to call the procedures described here rather than
400 setting \fBerrorInfo\fR or \fBerrorCode\fR directly with
401 \fBTcl_ObjSetVar2\fR.
402 The reason for this is that the Tcl interpreter keeps information
403 about whether these procedures have been called.
404 For example, the first time \fBTcl_AddObjErrorInfo\fR is called
405 for an error, it clears the existing value of \fBerrorInfo\fR
406 and adds the error message in the interpreter's result to the variable
407 before appending \fImessage\fR;
408 in subsequent calls, it just appends the new \fImessage\fR.
409 When \fBTcl_SetErrorCode\fR is called, it sets a flag indicating
410 that \fBerrorCode\fR has been set;
411 this allows the Tcl interpreter to set \fBerrorCode\fR to \fBNONE\fR
412 if it receives an error return
413 when \fBTcl_SetErrorCode\fR hasn't been called.
414 .PP
415 If the procedure \fBTcl_ResetResult\fR is called,
416 it clears all of the state associated with
417 \fBerrorInfo\fR and \fBerrorCode\fR
418 (but it doesn't actually modify the variables).
419 If an error had occurred, this will clear the error state to
420 make it appear as if no error had occurred after all.
421
422 .SH "SEE ALSO"
423 Tcl_DecrRefCount, Tcl_IncrRefCount, Tcl_Interp, Tcl_ResetResult, Tcl_SetErrno
424
425 .SH KEYWORDS
426 error, object, object result, stack, trace, variable