home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / unix / volume3 / texchk / part2 / errors.c < prev    next >
Encoding:
C/C++ Source or Header  |  1986-11-30  |  3.9 KB  |  191 lines

  1. #include <stdio.h>
  2. #ifdef TMC
  3. #include <ctools.h>
  4. #else
  5. #include "ctools.h"
  6. #endif
  7. #include "texchk.h"
  8.  
  9.  
  10. print_error_line ()
  11. {
  12.   int j;        
  13.   fprintf(stderr,"Error on line number %d\n",Current_Line);        
  14.   fprintf(stderr,"\n%s\n",Line_Buffer);
  15.   for (j = 0; j < Current_Char-1; j++) fprintf(stderr," ");
  16.   fprintf(stderr,"^\n\n");
  17. }
  18.  
  19.  
  20. eof_error ()
  21. {  
  22.   fprintf(stderr,"\nActual end of file before logical end of input.\n");
  23.   fprintf(stderr,"Current environment:\n");
  24.   print_stack();
  25. }
  26.  
  27. stack_empty_error (etype,keyword) envtype etype; char *keyword;
  28.  
  29. {
  30.   char *s, *e;
  31.   switch (etype) {
  32.     case ESCAPE_END :
  33.       s = "\\begin";
  34.       e = "\\end";
  35.       break;
  36.     case RIGHT_SQUARE_BRACKET :
  37.       s = "[";
  38.       e = "]";
  39.       break;
  40.     case RIGHT_CURLY_BRACKET :
  41.       s = "{";
  42.       e = "}";
  43.       break;
  44.     default :
  45.       if (*keyword == ')') {
  46.          s = "\\(";
  47.          e = "\\)";
  48.          break;
  49.       }
  50.       else if (*keyword == ']') {
  51.          s = "\\[";
  52.          e = "\\]";
  53.          break;
  54.       }
  55.       fprintf(stderr,"Impossible etype argument to stack_empty_error\n");
  56.       exit(1);
  57.   }
  58.   fprintf(stderr,"\nNo matching %s to go with %s\n",s,e);
  59.   print_error_line();
  60. }
  61.  
  62.  
  63. no_brace_after_begin_end_error ()
  64. {
  65.   fprintf (
  66.      stderr,
  67.      "\n'\\begin' or '\\end' construct has no '{' immediately following\n"
  68.    );
  69.   print_error_line();
  70. }
  71.  
  72. warning_blanks_in_cb ()
  73. {  
  74.   fprintf(stderr,"\nWarning:  probable error.\n");        
  75.   fprintf(stderr,"LaTeX does not like initial or terminating blanks\n");
  76.   fprintf(stderr,"inside of \\begin{} or \\end{} constructs\n");
  77.   print_error_line();
  78. }
  79.  
  80. warning_close_brace () 
  81. {
  82.   fprintf(stderr,"\nWarning:  texchk cannot handle environment names that\n");
  83.   fprintf(stderr,"span more than one line...\n");
  84.   print_error_line();
  85. }  
  86.  
  87. bad_char_error (ch,abort) int ch; Bool abort;
  88. {
  89.   fprintf(stderr,"\nIllegal character: integer value = %d\n",ch);
  90.   print_error_line();
  91.   if (abort) exit(1);
  92. }  
  93.  
  94. line_too_long_error ()
  95. {
  96.   fprintf(stderr,"\nToo many characters: line = %d\n",Current_Line);
  97. }
  98.  
  99. blank_begin_end_error ()
  100. {
  101.   fprintf(stderr,"\nNo environment defined in '\\begin{}' or '\\end{}'\n");
  102.   print_error_line();
  103. }
  104.  
  105. keyword_error (keyword) char *keyword;
  106. {
  107.   fprintf(stderr,"\nWarning: unrecognized command name: \\%s\n",keyword);
  108.   print_error_line();
  109. }
  110.  
  111. math_keyword_error (keyword) char *keyword;
  112. {
  113.   fprintf (
  114.       stderr,
  115.       "\nError: 'Math mode only' command used outside math mode: \\%s\n",
  116.       keyword
  117.    );
  118.    print_error_line();
  119. }
  120.  
  121.  
  122. nest_error (s,e,oldlinenum,current_key) 
  123.   char *s, *e;
  124.   int oldlinenum;
  125.   char *current_key;
  126. {
  127.   fprintf(stderr,"\nNo matching %s for %s at current nesting level\n",s,e);
  128.   print_error_line();
  129.   fprintf (
  130.      stderr,"Current nesting is '%s' at line %d\n",current_key,oldlinenum
  131.    );
  132. }
  133.  
  134.  
  135. keyword_length_error ()
  136. {
  137.   fprintf(stderr,"\nLaTeX command too long\n");
  138.   print_error_line();
  139. }
  140.  
  141.  
  142. single_char_command_error (ch) char ch;
  143. {
  144.   fprintf(stderr,"\nThe command \\%c is not legal LaTeX\n",ch);
  145.   print_error_line();
  146. }
  147.  
  148.  
  149. print_stack ()
  150.  
  151. {
  152.   int j;        
  153.   fprintf(stderr,"\n\nTEXCHK ENVIRONMENT STACK:\n\n");
  154.   for (j = 0; j <= Lex_TOS; j++) {
  155.       switch (Lex_Stack[j].etype) {
  156.         case ESCAPE_BEGIN :
  157.           fprintf(stderr,"\\begin{%s}\n",Lex_Stack[j].keyword);
  158.           break;
  159.         case LEFT_SQUARE_BRACKET :
  160.           fprintf(stderr,"[\n");
  161.           break;
  162.         case LEFT_CURLY_BRACKET :
  163.           fprintf(stderr,"{\n");
  164.           break;
  165.         case MATH :
  166.           fprintf(stderr,"Math Mode: %s\n",Lex_Stack[j].keyword);
  167.           break;
  168.         case DOUBLE_MATH :
  169.           fprintf(stderr,"Display Math Mode\n");
  170.           break;
  171.         default :
  172.           fprintf(stderr,"Stack corrupted...\n");
  173.           texit();
  174.       }
  175.   }
  176.   fprintf(stderr,"\n");
  177. }
  178.  
  179.  
  180. eof_verbatim_error ()
  181. {
  182.   fprintf(stderr,"\nError: EOF in middle of verbatim/verb environment\n");
  183. }
  184.  
  185.  
  186. verb_error (ch) char ch;
  187. {
  188.   fprintf(stderr,"Error: Illegal character after \\verb command: %c\n",ch);
  189.   print_error_line();
  190. }
  191.