]> code.delx.au - gnu-emacs/blob - src/.gdbinit
Fix typo.
[gnu-emacs] / src / .gdbinit
1 # Copyright (C) 1992, 93, 94, 95, 96, 97, 1998, 2000, 01, 2004, 2005
2 # Free Software Foundation, Inc.
3 #
4 # This file is part of GNU Emacs.
5 #
6 # GNU Emacs is free software; you can redistribute it and/or modify
7 # it under the terms of the GNU General Public License as published by
8 # the Free Software Foundation; either version 2, or (at your option)
9 # any later version.
10 #
11 # GNU Emacs is distributed in the hope that it will be useful,
12 # but WITHOUT ANY WARRANTY; without even the implied warranty of
13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 # GNU General Public License for more details.
15 #
16 # You should have received a copy of the GNU General Public License
17 # along with GNU Emacs; see the file COPYING. If not, write to the
18 # Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
19 # Boston, MA 02110-1301, USA.
20
21 # Force loading of symbols, enough to give us gdb_valbits etc.
22 set main
23
24 # Find lwlib source files too.
25 dir ../lwlib
26 #dir /gd/gnu/lesstif-0.89.9/lib/Xm
27
28 # Don't enter GDB when user types C-g to quit.
29 # This has one unfortunate effect: you can't type C-c
30 # at the GDB to stop Emacs, when using X.
31 # However, C-z works just as well in that case.
32 handle 2 noprint pass
33
34 # Make it work like SIGINT normally does.
35 handle SIGTSTP nopass
36
37 # Don't pass SIGALRM to Emacs. This makes problems when
38 # debugging.
39 handle SIGALRM ignore
40
41 # $valmask and $tagmask are mask values set up by the xreload macro below.
42
43 # Use $bugfix so that the value isn't a constant.
44 # Using a constant runs into GDB bugs sometimes.
45 define xgetptr
46 set $bugfix = $arg0
47 set $ptr = (gdb_use_union ? $bugfix.u.val : $bugfix & $valmask) | gdb_data_seg_bits
48 end
49
50 define xgetint
51 set $bugfix = $arg0
52 set $int = gdb_use_union ? $bugfix.s.val : (gdb_use_lsb ? $bugfix : $bugfix << gdb_gctypebits) >> gdb_gctypebits
53 end
54
55 define xgettype
56 set $bugfix = $arg0
57 set $type = gdb_use_union ? $bugfix.s.type : (enum Lisp_Type) (gdb_use_lsb ? $bugfix & $tagmask : $bugfix >> gdb_valbits)
58 end
59
60 # Set up something to print out s-expressions.
61 define pr
62 set debug_print ($)
63 end
64 document pr
65 Print the emacs s-expression which is $.
66 Works only when an inferior emacs is executing.
67 end
68
69 # Print out s-expressions
70 define pp
71 set $tmp = $arg0
72 set safe_debug_print ($tmp)
73 end
74 document pp
75 Print the argument as an emacs s-expression
76 Works only when an inferior emacs is executing.
77 end
78
79 # Print out s-expressions from tool bar
80 define pp1
81 set $tmp = $arg0
82 echo $arg0
83 printf " = "
84 set safe_debug_print ($tmp)
85 end
86 document pp1
87 Print the argument as an emacs s-expression
88 Works only when an inferior emacs is executing.
89 For use on tool bar when debugging in Emacs
90 where the variable name would not otherwise
91 be recorded in the GUD buffer.
92 end
93
94 # Print value of lisp variable
95 define pv
96 set $tmp = "$arg0"
97 set safe_debug_print ( find_symbol_value (intern ($tmp)))
98 end
99 document pv
100 Print the value of the lisp variable given as argument.
101 Works only when an inferior emacs is executing.
102 end
103
104 # Print value of lisp variable
105 define pv1
106 set $tmp = "$arg0"
107 echo $arg0
108 printf " = "
109 set safe_debug_print (find_symbol_value (intern ($tmp)))
110 end
111 document pv1
112 Print the value of the lisp variable given as argument.
113 Works only when an inferior emacs is executing.
114 For use on tool bar when debugging in Emacs
115 where the variable name would not otherwise
116 be recorded in the GUD buffer.
117 end
118
119 # Print out current buffer point and boundaries
120 define ppt
121 set $b = current_buffer
122 set $t = $b->text
123 printf "BUF PT: %d", $b->pt
124 if ($b->pt != $b->pt_byte)
125 printf "[%d]", $b->pt_byte
126 end
127 printf " of 1..%d", $t->z
128 if ($t->z != $t->z_byte)
129 printf "[%d]", $t->z_byte
130 end
131 if ($b->begv != 1 || $b->zv != $t->z)
132 printf " NARROW=%d..%d", $b->begv, $b->zv
133 if ($b->begv != $b->begv_byte || $b->zv != $b->zv_byte)
134 printf " [%d..%d]", $b->begv_byte, $b->zv_byte
135 end
136 end
137 printf " GAP: %d", $t->gpt
138 if ($t->gpt != $t->gpt_byte)
139 printf "[%d]", $t->gpt_byte
140 end
141 printf " SZ=%d\n", $t->gap_size
142 end
143 document ppt
144 Print point, beg, end, narrow, and gap for current buffer.
145 end
146
147 # Print out iterator given as first arg
148 define pitx
149 set $it = $arg0
150 printf "cur=%d", $it->current.pos.charpos
151 if ($it->current.pos.charpos != $it->current.pos.bytepos)
152 printf "[%d]", $it->current.pos.bytepos
153 end
154 printf " start=%d", $it->start.pos.charpos
155 if ($it->start.pos.charpos != $it->start.pos.bytepos)
156 printf "[%d]", $it->start.pos.bytepos
157 end
158 printf " end=%d", $it->end_charpos
159 printf " stop=%d", $it->stop_charpos
160 printf " face=%d", $it->face_id
161 if ($it->multibyte_p)
162 printf " MB"
163 end
164 if ($it->header_line_p)
165 printf " HL"
166 end
167 if ($it->n_overlay_strings > 0)
168 printf " nov=%d", $it->n_overlay_strings
169 end
170 if ($it->sp != 0)
171 printf " sp=%d", $it->sp
172 end
173 if ($it->what == IT_CHARACTER)
174 if ($it->len == 1 && $it->c >= ' ' && it->c < 255)
175 printf " ch='%c'", $it->c
176 else
177 printf " ch=[%d,%d]", $it->c, $it->len
178 end
179 else
180 if ($it->what == IT_IMAGE)
181 printf " IMAGE=%d", $it->image_id
182 else
183 printf " "
184 output $it->what
185 end
186 end
187 if ($it->method != GET_FROM_BUFFER)
188 printf " next="
189 output $it->method
190 if ($it->method == GET_FROM_STRING)
191 printf "[%d]", $it->current.string_pos.charpos
192 end
193 end
194 printf "\n"
195 if ($it->region_beg_charpos >= 0)
196 printf "reg=%d-%d ", $it->region_beg_charpos, $it->region_end_charpos
197 end
198 printf "vpos=%d hpos=%d", $it->vpos, $it->hpos,
199 printf " y=%d lvy=%d", $it->current_y, $it->last_visible_y
200 printf " x=%d vx=%d-%d", $it->current_x, $it->first_visible_x, $it->last_visible_x
201 printf " a+d=%d+%d=%d", $it->ascent, $it->descent, $it->ascent+$it->descent
202 printf " max=%d+%d=%d", $it->max_ascent, $it->max_descent, $it->max_ascent+$it->max_descent
203 printf "\n"
204 end
205 document pitx
206 Pretty print a display iterator.
207 Take one arg, an iterator object or pointer.
208 end
209
210 define pit
211 pitx it
212 end
213 document pit
214 Pretty print the display iterator it.
215 end
216
217 define prowx
218 set $row = $arg0
219 printf "y=%d x=%d pwid=%d", $row->y, $row->x, $row->pixel_width
220 printf " a+d=%d+%d=%d", $row->ascent, $row->height-$row->ascent, $row->height
221 printf " phys=%d+%d=%d", $row->phys_ascent, $row->phys_height-$row->phys_ascent, $row->phys_height
222 printf " vis=%d", $row->visible_height
223 printf " L=%d T=%d R=%d", $row->used[0], $row->used[1], $row->used[2]
224 printf "\n"
225 printf "start=%d end=%d", $row->start.pos.charpos, $row->end.pos.charpos
226 if ($row->enabled_p)
227 printf " ENA"
228 end
229 if ($row->displays_text_p)
230 printf " DISP"
231 end
232 if ($row->mode_line_p)
233 printf " MODEL"
234 end
235 if ($row->continued_p)
236 printf " CONT"
237 end
238 if ($row-> truncated_on_left_p)
239 printf " TRUNC:L"
240 end
241 if ($row-> truncated_on_right_p)
242 printf " TRUNC:R"
243 end
244 if ($row->starts_in_middle_of_char_p)
245 printf " STARTMID"
246 end
247 if ($row->ends_in_middle_of_char_p)
248 printf " ENDMID"
249 end
250 if ($row->ends_in_newline_from_string_p)
251 printf " ENDNLFS"
252 end
253 if ($row->ends_at_zv_p)
254 printf " ENDZV"
255 end
256 if ($row->overlapped_p)
257 printf " OLAPD"
258 end
259 if ($row->overlapping_p)
260 printf " OLAPNG"
261 end
262 printf "\n"
263 end
264 document prowx
265 Pretty print information about glyph_row.
266 Takes one argument, a row object or pointer.
267 end
268
269 define prow
270 prowx row
271 end
272 document prow
273 Pretty print information about glyph_row in row.
274 end
275
276
277 define pcursorx
278 set $cp = $arg0
279 printf "y=%d x=%d vpos=%d hpos=%d", $cp->y, $cp->x, $cp->vpos, $cp->hpos
280 end
281 document pcursorx
282 Pretty print a window cursor
283 end
284
285 define pcursor
286 printf "output: "
287 pcursorx output_cursor
288 printf "\n"
289 end
290 document pcursor
291 Pretty print the output_cursor
292 end
293
294 define pwinx
295 set $w = $arg0
296 xgetint $w->sequence_number
297 if ($w->mini_p != Qnil)
298 printf "Mini "
299 end
300 printf "Window %d ", $int
301 xgetptr $w->buffer
302 set $tem = (struct buffer *) $ptr
303 xgetptr $tem->name
304 printf "%s", ((struct Lisp_String *) $ptr)->data
305 printf "\n"
306 xgetptr $w->start
307 set $tem = (struct Lisp_Marker *) $ptr
308 printf "start=%d end:", $tem->charpos
309 if ($w->window_end_valid != Qnil)
310 xgetint $w->window_end_pos
311 printf "pos=%d", $int
312 xgetint $w->window_end_vpos
313 printf " vpos=%d", $int
314 else
315 printf "invalid"
316 end
317 printf " vscroll=%d", $w->vscroll
318 if ($w->force_start != Qnil)
319 printf " FORCE_START"
320 end
321 if ($w->must_be_updated_p)
322 printf " MUST_UPD"
323 end
324 printf "\n"
325 printf "cursor: "
326 pcursorx $w->cursor
327 printf " phys: "
328 pcursorx $w->phys_cursor
329 if ($w->phys_cursor_on_p)
330 printf " ON"
331 else
332 printf " OFF"
333 end
334 printf " blk="
335 if ($w->last_cursor_off_p != $w->cursor_off_p)
336 if ($w->last_cursor_off_p)
337 printf "ON->"
338 else
339 printf "OFF->"
340 end
341 end
342 if ($w->cursor_off_p)
343 printf "ON"
344 else
345 printf "OFF"
346 end
347 printf "\n"
348 end
349 document pwinx
350 Pretty print a window structure.
351 Takes one argument, a pointer to a window structure
352 end
353
354 define pwin
355 pwinx w
356 end
357 document pwin
358 Pretty print window structure w.
359 end
360
361
362 define xtype
363 xgettype $
364 output $type
365 echo \n
366 if $type == Lisp_Misc
367 xmisctype
368 else
369 if $type == Lisp_Vectorlike
370 xvectype
371 end
372 end
373 end
374 document xtype
375 Print the type of $, assuming it is an Emacs Lisp value.
376 If the first type printed is Lisp_Vector or Lisp_Misc,
377 a second line gives the more precise type.
378 end
379
380 define xvectype
381 xgetptr $
382 set $size = ((struct Lisp_Vector *) $ptr)->size
383 output ($size & PVEC_FLAG) ? (enum pvec_type) ($size & PVEC_TYPE_MASK) : $size & ~gdb_array_mark_flag
384 echo \n
385 end
386 document xvectype
387 Print the size or vector subtype of $, assuming it is a vector or pseudovector.
388 end
389
390 define xmisctype
391 xgetptr $
392 output (enum Lisp_Misc_Type) (((struct Lisp_Free *) $ptr)->type)
393 echo \n
394 end
395 document xmisctype
396 Print the specific type of $, assuming it is some misc type.
397 end
398
399 define xint
400 xgetint $
401 print $int
402 end
403 document xint
404 Print $, assuming it is an Emacs Lisp integer. This gets the sign right.
405 end
406
407 define xptr
408 xgetptr $
409 print (void *) $ptr
410 end
411 document xptr
412 Print the pointer portion of $, assuming it is an Emacs Lisp value.
413 end
414
415 define xmarker
416 xgetptr $
417 print (struct Lisp_Marker *) $ptr
418 end
419 document xmarker
420 Print $ as a marker pointer, assuming it is an Emacs Lisp marker value.
421 end
422
423 define xoverlay
424 xgetptr $
425 print (struct Lisp_Overlay *) $ptr
426 end
427 document xoverlay
428 Print $ as a overlay pointer, assuming it is an Emacs Lisp overlay value.
429 end
430
431 define xmiscfree
432 xgetptr $
433 print (struct Lisp_Free *) $ptr
434 end
435 document xmiscfree
436 Print $ as a misc free-cell pointer, assuming it is an Emacs Lisp Misc value.
437 end
438
439 define xintfwd
440 xgetptr $
441 print (struct Lisp_Intfwd *) $ptr
442 end
443 document xintfwd
444 Print $ as an integer forwarding pointer, assuming it is an Emacs Lisp Misc value.
445 end
446
447 define xboolfwd
448 xgetptr $
449 print (struct Lisp_Boolfwd *) $ptr
450 end
451 document xboolfwd
452 Print $ as a boolean forwarding pointer, assuming it is an Emacs Lisp Misc value.
453 end
454
455 define xobjfwd
456 xgetptr $
457 print (struct Lisp_Objfwd *) $ptr
458 end
459 document xobjfwd
460 Print $ as an object forwarding pointer, assuming it is an Emacs Lisp Misc value.
461 end
462
463 define xbufobjfwd
464 xgetptr $
465 print (struct Lisp_Buffer_Objfwd *) $ptr
466 end
467 document xbufobjfwd
468 Print $ as a buffer-local object forwarding pointer, assuming it is an Emacs Lisp Misc value.
469 end
470
471 define xkbobjfwd
472 xgetptr $
473 print (struct Lisp_Kboard_Objfwd *) $ptr
474 end
475 document xkbobjfwd
476 Print $ as a kboard-local object forwarding pointer, assuming it is an Emacs Lisp Misc value.
477 end
478
479 define xbuflocal
480 xgetptr $
481 print (struct Lisp_Buffer_Local_Value *) $ptr
482 end
483 document xbuflocal
484 Print $ as a buffer-local-value pointer, assuming it is an Emacs Lisp Misc value.
485 end
486
487 define xsymbol
488 set $sym = $
489 xgetptr $sym
490 print (struct Lisp_Symbol *) $ptr
491 xprintsym $sym
492 echo \n
493 end
494 document xsymbol
495 Print the name and address of the symbol $.
496 This command assumes that $ is an Emacs Lisp symbol value.
497 end
498
499 define xstring
500 xgetptr $
501 print (struct Lisp_String *) $ptr
502 xprintstr $
503 echo \n
504 end
505 document xstring
506 Print the contents and address of the string $.
507 This command assumes that $ is an Emacs Lisp string value.
508 end
509
510 define xvector
511 xgetptr $
512 print (struct Lisp_Vector *) $ptr
513 output ($->size > 50) ? 0 : ($->contents[0])@($->size & ~gdb_array_mark_flag)
514 echo \n
515 end
516 document xvector
517 Print the contents and address of the vector $.
518 This command assumes that $ is an Emacs Lisp vector value.
519 end
520
521 define xprocess
522 xgetptr $
523 print (struct Lisp_Process *) $ptr
524 output *$
525 echo \n
526 end
527 document xprocess
528 Print the address of the struct Lisp_process which the Lisp_Object $ points to.
529 end
530
531 define xframe
532 xgetptr $
533 print (struct frame *) $ptr
534 end
535 document xframe
536 Print $ as a frame pointer, assuming it is an Emacs Lisp frame value.
537 end
538
539 define xcompiled
540 xgetptr $
541 print (struct Lisp_Vector *) $ptr
542 output ($->contents[0])@($->size & 0xff)
543 end
544 document xcompiled
545 Print $ as a compiled function pointer, assuming it is an Emacs Lisp compiled value.
546 end
547
548 define xwindow
549 xgetptr $
550 print (struct window *) $ptr
551 printf "%dx%d+%d+%d\n", $->width, $->height, $->left, $->top
552 end
553 document xwindow
554 Print $ as a window pointer, assuming it is an Emacs Lisp window value.
555 Print the window's position as "WIDTHxHEIGHT+LEFT+TOP".
556 end
557
558 define xwinconfig
559 xgetptr $
560 print (struct save_window_data *) $ptr
561 end
562 document xwinconfig
563 Print $ as a window configuration pointer, assuming it is an Emacs Lisp window configuration value.
564 end
565
566 define xsubr
567 xgetptr $
568 print (struct Lisp_Subr *) $ptr
569 output *$
570 echo \n
571 end
572 document xsubr
573 Print the address of the subr which the Lisp_Object $ points to.
574 end
575
576 define xchartable
577 xgetptr $
578 print (struct Lisp_Char_Table *) $ptr
579 printf "Purpose: "
580 xprintsym $->purpose
581 printf " %d extra slots", ($->size & 0x1ff) - 388
582 echo \n
583 end
584 document xchartable
585 Print the address of the char-table $, and its purpose.
586 This command assumes that $ is an Emacs Lisp char-table value.
587 end
588
589 define xboolvector
590 xgetptr $
591 print (struct Lisp_Bool_Vector *) $ptr
592 output ($->size > 256) ? 0 : ($->data[0])@((($->size & ~gdb_array_mark_flag) + 7)/ 8)
593 echo \n
594 end
595 document xboolvector
596 Print the contents and address of the bool-vector $.
597 This command assumes that $ is an Emacs Lisp bool-vector value.
598 end
599
600 define xbuffer
601 xgetptr $
602 print (struct buffer *) $ptr
603 xgetptr $->name
604 output ((struct Lisp_String *) $ptr)->data
605 echo \n
606 end
607 document xbuffer
608 Set $ as a buffer pointer, assuming it is an Emacs Lisp buffer value.
609 Print the name of the buffer.
610 end
611
612 define xhashtable
613 xgetptr $
614 print (struct Lisp_Hash_Table *) $ptr
615 end
616 document xhashtable
617 Set $ as a hash table pointer, assuming it is an Emacs Lisp hash table value.
618 end
619
620 define xcons
621 xgetptr $
622 print (struct Lisp_Cons *) $ptr
623 output/x *$
624 echo \n
625 end
626 document xcons
627 Print the contents of $, assuming it is an Emacs Lisp cons.
628 end
629
630 define nextcons
631 p $.u.cdr
632 xcons
633 end
634 document nextcons
635 Print the contents of the next cell in a list.
636 This assumes that the last thing you printed was a cons cell contents
637 (type struct Lisp_Cons) or a pointer to one.
638 end
639 define xcar
640 xgetptr $
641 xgettype $
642 print/x ($type == Lisp_Cons ? ((struct Lisp_Cons *) $ptr)->car : 0)
643 end
644 document xcar
645 Print the car of $, assuming it is an Emacs Lisp pair.
646 end
647
648 define xcdr
649 xgetptr $
650 xgettype $
651 print/x ($type == Lisp_Cons ? ((struct Lisp_Cons *) $ptr)->u.cdr : 0)
652 end
653 document xcdr
654 Print the cdr of $, assuming it is an Emacs Lisp pair.
655 end
656
657 define xfloat
658 xgetptr $
659 print ((struct Lisp_Float *) $ptr)->u.data
660 end
661 document xfloat
662 Print $ assuming it is a lisp floating-point number.
663 end
664
665 define xscrollbar
666 xgetptr $
667 print (struct scrollbar *) $ptr
668 output *$
669 echo \n
670 end
671 document xscrollbar
672 Print $ as a scrollbar pointer.
673 end
674
675 define xprintstr
676 set $data = $arg0->data
677 output ($arg0->size > 1000) ? 0 : ($data[0])@($arg0->size_byte < 0 ? $arg0->size & ~gdb_array_mark_flag : $arg0->size_byte)
678 end
679
680 define xprintsym
681 xgetptr $arg0
682 set $sym = (struct Lisp_Symbol *) $ptr
683 xgetptr $sym->xname
684 set $sym_name = (struct Lisp_String *) $ptr
685 xprintstr $sym_name
686 end
687 document xprintsym
688 Print argument as a symbol.
689 end
690
691 define xbacktrace
692 set $bt = backtrace_list
693 while $bt
694 xgettype (*$bt->function)
695 if $type == Lisp_Symbol
696 xprintsym (*$bt->function)
697 echo \n
698 else
699 printf "0x%x ", *$bt->function
700 if $type == Lisp_Vectorlike
701 xgetptr (*$bt->function)
702 set $size = ((struct Lisp_Vector *) $ptr)->size
703 output ($size & PVEC_FLAG) ? (enum pvec_type) ($size & PVEC_TYPE_MASK) : $size & ~gdb_array_mark_flag
704 else
705 printf "Lisp type %d", $type
706 end
707 echo \n
708 end
709 set $bt = $bt->next
710 end
711 end
712 document xbacktrace
713 Print a backtrace of Lisp function calls from backtrace_list.
714 Set a breakpoint at Fsignal and call this to see from where
715 an error was signaled.
716 end
717
718 # Show Lisp backtrace after normal backtrace.
719 define hookpost-backtrace
720 set $bt = backtrace_list
721 if $bt
722 echo \n
723 echo Lisp Backtrace:\n
724 xbacktrace
725 end
726 end
727
728 define xreload
729 set $tagmask = (((long)1 << gdb_gctypebits) - 1)
730 set $valmask = gdb_use_lsb ? ~($tagmask) : ((long)1 << gdb_valbits) - 1
731 end
732 document xreload
733 When starting Emacs a second time in the same gdb session under
734 FreeBSD 2.2.5, gdb 4.13, $valmask have lost
735 their values. (The same happens on current (2000) versions of GNU/Linux
736 with gdb 5.0.)
737 This function reloads them.
738 end
739 xreload
740
741 # Flush display (X only)
742 define ff
743 set x_flush (0)
744 end
745 document ff
746 Flush pending X window display updates to screen.
747 Works only when an inferior emacs is executing.
748 end
749
750
751 define hook-run
752 xreload
753 end
754
755 # Call xreload if a new Emacs executable is loaded.
756 define hookpost-run
757 xreload
758 end
759
760 set print pretty on
761 set print sevenbit-strings
762
763 show environment DISPLAY
764 show environment TERM
765 set args -geometry 80x40+0+0
766
767 # People get bothered when they see messages about non-existent functions...
768 xgetptr Vsystem_type
769 set $tem = (struct Lisp_Symbol *) $ptr
770 xgetptr $tem->xname
771 set $tem = (struct Lisp_String *) $ptr
772 set $tem = (char *) $tem->data
773
774 # Don't let abort actually run, as it will make stdio stop working and
775 # therefore the `pr' command above as well.
776 if $tem[0] == 'w' && $tem[1] == 'i' && $tem[2] == 'n' && $tem[3] == 'd'
777 # The windows-nt build replaces abort with its own function.
778 break w32_abort
779 else
780 break abort
781 end
782
783 # x_error_quitter is defined only on X. But window-system is set up
784 # only at run time, during Emacs startup, so we need to defer setting
785 # the breakpoint. init_sys_modes is the first function called on
786 # every platform after init_display, where window-system is set.
787 tbreak init_sys_modes
788 commands
789 silent
790 xgetptr Vwindow_system
791 set $tem = (struct Lisp_Symbol *) $ptr
792 xgetptr $tem->xname
793 set $tem = (struct Lisp_String *) $ptr
794 set $tem = (char *) $tem->data
795 # If we are running in synchronous mode, we want a chance to look
796 # around before Emacs exits. Perhaps we should put the break
797 # somewhere else instead...
798 if $tem[0] == 'x' && $tem[1] == '\0'
799 break x_error_quitter
800 end
801 continue
802 end
803 # arch-tag: 12f34321-7bfa-4240-b77a-3cd3a1696dfe