/[public]/psiconv/trunk/lib/psiconv/parse_aux.c
ViewVC logotype

Diff of /psiconv/trunk/lib/psiconv/parse_aux.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

Revision 2 Revision 61
24 24
25#include "parse.h" 25#include "parse.h"
26#include "parse_routines.h" 26#include "parse_routines.h"
27#include "data.h" 27#include "data.h"
28 28
29static void psiconv_default_error_handler(int kind, psiconv_u32 off,
30 const char *message)
31{
32 fprintf(stderr,"%s\n",message);
33}
34
35int psiconv_verbosity = PSICONV_VERB_WARN;
36
37psiconv_error_handler_t psiconv_error_handler = psiconv_default_error_handler;
38
39
40#define MAX_MESSAGE 160
41
29void psiconv_fatal(int level, psiconv_u32 off, const char *format,...) 42void psiconv_fatal(int level, psiconv_u32 off, const char *format,...)
30{ 43{
44 char buffer[MAX_MESSAGE];
31 va_list ap; 45 va_list ap;
46 size_t curlen;
47
32 va_start(ap,format); 48 va_start(ap,format);
33 fprintf(stderr,"Fatal error (offset %08x): ",off); 49 snprintf(buffer,MAX_MESSAGE,"Fatal error (offset %08x): ",off);
34 vfprintf(stderr,format,ap); 50 curlen = strlen(buffer);
35 fputs("\n",stderr); 51
52 vsnprintf(buffer+curlen,MAX_MESSAGE-curlen,format,ap);
53 psiconv_error_handler(PSICONV_VERB_FATAL,off,buffer);
36 va_end(ap); 54 va_end(ap);
55
37 exit(1); 56 exit(1);
57}
58
59void psiconv_warn(int level, psiconv_u32 off, const char *format,...)
60{
61 char buffer[MAX_MESSAGE];
62 va_list ap;
63 size_t curlen;
64
65 va_start(ap,format);
66
67 if (psiconv_verbosity >= PSICONV_VERB_WARN) {
68 snprintf(buffer,MAX_MESSAGE,"WARNING (offset %08x): ",off);
69 curlen = strlen(buffer);
70
71 vsnprintf(buffer+curlen,MAX_MESSAGE-curlen,format,ap);
72 psiconv_error_handler(PSICONV_VERB_WARN,off,buffer);
73 }
74 va_end(ap);
38} 75}
39 76
40void psiconv_progress(int level, psiconv_u32 off, const char *format,...) 77void psiconv_progress(int level, psiconv_u32 off, const char *format,...)
41{ 78{
79 char buffer[MAX_MESSAGE];
80 va_list ap;
81 size_t curlen;
42 int i; 82 int i;
43 va_list ap; 83
44 va_start(ap,format); 84 va_start(ap,format);
45 if (psiconv_verbosity >= PSICONV_VERB_PROGRESS) { 85 if (psiconv_verbosity >= PSICONV_VERB_PROGRESS) {
46 fprintf(stderr,"%08x ",off); 86 snprintf(buffer,MAX_MESSAGE,"%08x ",off);
47 for (i = 0; i < level; i++) 87 curlen = strlen(buffer);
48 fputs("=",stderr); 88
49 fprintf(stderr,"> "); 89 for (i = 0; (i < level) && (i+curlen+3 < MAX_MESSAGE); i++)
50 vfprintf(stderr,format,ap); 90 buffer[i+curlen] = '=';
51 fputs("\n",stderr); 91 curlen += i;
92
93 buffer[curlen] = '>';
94 buffer[curlen+1] = ' ';
95 buffer[curlen+2] = '\0';
96 curlen += 2;
97
98 vsnprintf(buffer+curlen,MAX_MESSAGE-curlen,format,ap);
99
100 psiconv_error_handler(PSICONV_VERB_PROGRESS,off,buffer);
52 } 101 }
53 va_end(ap); 102 va_end(ap);
54} 103}
55 104
56void psiconv_warn(int level, psiconv_u32 off, const char *format,...)
57{
58 va_list ap;
59 va_start(ap,format);
60 if (psiconv_verbosity >= PSICONV_VERB_WARN) {
61 fprintf(stderr,"WARNING (offset %08x): ",off);
62 vfprintf(stderr,format,ap);
63 fputs("\n",stderr);
64 }
65 va_end(ap);
66}
67 105
68void psiconv_debug(int level, psiconv_u32 off, const char *format,...) 106void psiconv_debug(int level, psiconv_u32 off, const char *format,...)
69{ 107{
108 char buffer[MAX_MESSAGE];
109 va_list ap;
110 size_t curlen;
70 int i; 111 int i;
71 va_list ap; 112
72 va_start(ap,format); 113 va_start(ap,format);
73 if (psiconv_verbosity >= PSICONV_VERB_DEBUG) { 114 if (psiconv_verbosity >= PSICONV_VERB_DEBUG) {
74 fprintf(stderr,"%08x ",off); 115 snprintf(buffer,MAX_MESSAGE,"%08x ",off);
75 for (i = 0; i < level; i++) 116 curlen = strlen(buffer);
76 fputs("-",stderr); 117
77 fprintf(stderr,"> "); 118 for (i = 0; (i < level) && (i+curlen+3 < MAX_MESSAGE); i++)
78 vfprintf(stderr,format,ap); 119 buffer[i+curlen] = '-';
79 fputs("\n",stderr); 120 curlen += i;
121
122 buffer[curlen] = '>';
123 buffer[curlen+1] = ' ';
124 buffer[curlen+2] = '\0';
125 curlen += 2;
126
127 vsnprintf(buffer+curlen,MAX_MESSAGE-curlen,format,ap);
128
129 psiconv_error_handler(PSICONV_VERB_DEBUG,off,buffer);
80 } 130 }
81 va_end(ap); 131 va_end(ap);
82} 132}
83 133
84char *psiconv_make_printable(const char *s) 134char *psiconv_make_printable(const char *s)

Legend:
Removed from v.2  
changed lines
  Added in v.61

frodo@frodo.looijaard.name
ViewVC Help
Powered by ViewVC 1.1.26