-rw-r--r-- | components/exception_dev | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/components/exception_dev b/components/exception_dev index d62f462..49b7f45 100644 --- a/components/exception_dev +++ b/components/exception_dev | |||
@@ -1,59 +1,59 @@ | |||
1 | %%decl using namespace std; | 1 | %%decl using namespace std; |
2 | <%impl> | 2 | <%impl> |
3 | #include <iostream> | 3 | #include <iostream> |
4 | #include <fstream> | 4 | #include <fstream> |
5 | #include <sstream> | 5 | #include <sstream> |
6 | #include <cassert> | 6 | #include <cassert> |
7 | #include <cstdarg> | 7 | #include <cstdarg> |
8 | #include <stdexcept> | 8 | #include <stdexcept> |
9 | #include <cxxabi.h> | 9 | #include <cxxabi.h> |
10 | #include <sitecing/sitecing_util.h> | 10 | #include <sitecing/sitecing_util.h> |
11 | #include <sitecing/util.h> | 11 | #include <sitecing/util.h> |
12 | #include <sitecing/magic.h> | 12 | #include <sitecing/magic.h> |
13 | #include <konforka/util.h> | 13 | #include <konforka/util.h> |
14 | #include <konforka/exception.h> | 14 | #include <konforka/exception.h> |
15 | </%impl> | 15 | </%impl> |
16 | %%var string message; | 16 | %%var string message; |
17 | %%var string root_source; | 17 | %%var string root_source; |
18 | %%var string root_intermediate; | 18 | %%var string root_intermediate; |
19 | %%var string root_so; | 19 | %%var string root_so; |
20 | %%var string component; | 20 | %%var string component; |
21 | %%var int line_number = -1; | 21 | %%var int line_number = -1; |
22 | %%var const exception* exception_caught; | 22 | %%var const exception* exception_caught; |
23 | <%code> | 23 | <%code> |
24 | __SCIF->headers.clear(); | 24 | __SCIF->headers.clear(); |
25 | __SCIF->out->seekp(0); | 25 | __SCIF->out->seekp(0); |
26 | int magic = _magic; | 26 | int magic = _magic; |
27 | va_list va = _args; | 27 | va_list va; va_copy(va,_args); |
28 | switch(magic) { | 28 | switch(magic) { |
29 | case sitecing::__magic_compile_error: | 29 | case sitecing::__magic_compile_error: |
30 | message = va_arg(va,const char*); | 30 | message = va_arg(va,const char*); |
31 | root_source = va_arg(va,const char*); | 31 | root_source = va_arg(va,const char*); |
32 | root_intermediate = va_arg(va,const char*); | 32 | root_intermediate = va_arg(va,const char*); |
33 | root_so = va_arg(va,const char*); | 33 | root_so = va_arg(va,const char*); |
34 | component = va_arg(va,const char*); | 34 | component = va_arg(va,const char*); |
35 | break; | 35 | break; |
36 | case sitecing::__magic_preprocess_error: | 36 | case sitecing::__magic_preprocess_error: |
37 | message = va_arg(va,const char*); | 37 | message = va_arg(va,const char*); |
38 | root_source = va_arg(va,const char*); | 38 | root_source = va_arg(va,const char*); |
39 | root_intermediate = va_arg(va,const char*); | 39 | root_intermediate = va_arg(va,const char*); |
40 | root_so = va_arg(va,const char*); | 40 | root_so = va_arg(va,const char*); |
41 | component = va_arg(va,const char*); | 41 | component = va_arg(va,const char*); |
42 | line_number = va_arg(va,int); | 42 | line_number = va_arg(va,int); |
43 | break; | 43 | break; |
44 | case sitecing::__magic_generic_exception: | 44 | case sitecing::__magic_generic_exception: |
45 | message = va_arg(va,const char*); | 45 | message = va_arg(va,const char*); |
46 | root_source = va_arg(va,const char*); | 46 | root_source = va_arg(va,const char*); |
47 | root_intermediate = va_arg(va,const char *); | 47 | root_intermediate = va_arg(va,const char *); |
48 | root_so = va_arg(va,const char *); | 48 | root_so = va_arg(va,const char *); |
49 | component = va_arg(va,const char*); | 49 | component = va_arg(va,const char*); |
50 | exception_caught = va_arg(va,const exception*); | 50 | exception_caught = va_arg(va,const exception*); |
51 | break; | 51 | break; |
52 | default: | 52 | default: |
53 | break; | 53 | break; |
54 | } | 54 | } |
55 | </%code> | 55 | </%code> |
56 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> | 56 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> |
57 | <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> | 57 | <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> |
58 | <head> | 58 | <head> |
59 | <title><% message %></title> | 59 | <title><% message %></title> |
@@ -297,51 +297,52 @@ | |||
297 | }else{ | 297 | }else{ |
298 | <%output><ul></%output> | 298 | <%output><ul></%output> |
299 | for(int l=firstline;l<=lastline && !ifs.eof();l++) { | 299 | for(int l=firstline;l<=lastline && !ifs.eof();l++) { |
300 | string str; | 300 | string str; |
301 | getline(ifs,str); | 301 | getline(ifs,str); |
302 | for(string::size_type t=str.find('\t');t!=string::npos;t=str.find('\t')) { | 302 | for(string::size_type t=str.find('\t');t!=string::npos;t=str.find('\t')) { |
303 | str.replace(t,1,8-(t%8),' '); | 303 | str.replace(t,1,8-(t%8),' '); |
304 | } | 304 | } |
305 | char tln[16]; | 305 | char tln[16]; |
306 | snprintf(tln,sizeof(tln),"%5d",l); | 306 | snprintf(tln,sizeof(tln),"%5d",l); |
307 | <%output> | 307 | <%output> |
308 | <li class="<% l==line?"focused":"unfocused" %>"><span class="lineno"><% sitecing::html_escape(tln,sitecing::html_escape_nbsp) %></span> <span class="line"><% sitecing::html_escape(str,sitecing::html_escape_nbsp) %></span></li> | 308 | <li class="<% l==line?"focused":"unfocused" %>"><span class="lineno"><% sitecing::html_escape(tln,sitecing::html_escape_nbsp) %></span> <span class="line"><% sitecing::html_escape(str,sitecing::html_escape_nbsp) %></span></li> |
309 | </%output> | 309 | </%output> |
310 | } | 310 | } |
311 | <%output></ul></%output> | 311 | <%output></ul></%output> |
312 | } | 312 | } |
313 | } | 313 | } |
314 | } | 314 | } |
315 | </%code> | 315 | </%code> |
316 | <div class="what"> | 316 | <div class="what"> |
317 | <% sitecing::html_escape(message,sitecing::html_escape_br) %> | 317 | <% sitecing::html_escape(message,sitecing::html_escape_br) %> |
318 | </div> | 318 | </div> |
319 | </div> | 319 | </div> |
320 | </%method> | 320 | </%method> |
321 | <%codemethod string strip_roots(const string& filename) %> | 321 | <%codemethod string strip_roots(const string& filename) %> |
322 | string np = konforka::normalize_path(filename); | 322 | string np = konforka::normalize_path(filename); |
323 | try{ | 323 | try{ |
324 | return sitecing::strip_prefix(np,root_source); | 324 | return sitecing::strip_prefix(np,root_source); |
325 | }catch(sitecing::utility_no_prefix& e){ } | 325 | }catch(sitecing::utility_no_prefix& e){ } |
326 | try{ | 326 | try{ |
327 | return sitecing::strip_prefix(np,root_intermediate); | 327 | return sitecing::strip_prefix(np,root_intermediate); |
328 | }catch(sitecing::utility_no_prefix& e){ } | 328 | }catch(sitecing::utility_no_prefix& e){ } |
329 | return np; | ||
329 | </%codemethod> | 330 | </%codemethod> |
330 | <%codemethod string remove_roots(const string& str) %> | 331 | <%codemethod string remove_roots(const string& str) %> |
331 | string rv = str; | 332 | string rv = str; |
332 | string::size_type rp; | 333 | string::size_type rp; |
333 | string::size_type rl = root_source.length(); | 334 | string::size_type rl = root_source.length(); |
334 | while((rp=rv.find(root_source))!=string::npos) { | 335 | while((rp=rv.find(root_source))!=string::npos) { |
335 | rv.erase(rp,rl); | 336 | rv.erase(rp,rl); |
336 | } | 337 | } |
337 | rl = root_intermediate.length(); | 338 | rl = root_intermediate.length(); |
338 | while((rp=rv.find(root_intermediate))!=string::npos) { | 339 | while((rp=rv.find(root_intermediate))!=string::npos) { |
339 | rv.erase(rp,rl); | 340 | rv.erase(rp,rl); |
340 | } | 341 | } |
341 | rl = root_so.length(); | 342 | rl = root_so.length(); |
342 | while((rp=rv.find(root_so))!=string::npos) { | 343 | while((rp=rv.find(root_so))!=string::npos) { |
343 | rv.erase(rp,rl); | 344 | rv.erase(rp,rl); |
344 | } | 345 | } |
345 | return rv; | 346 | return rv; |
346 | </%codemethod> | 347 | </%codemethod> |
347 | % /* vim:set ft=sitecing: */ | 348 | % /* vim:set ft=sitecing: */ |