OLD | NEW |
| (Empty) |
1 #include <stdlib.h> | |
2 #define CANVAS_PATH "CANVAS_PATH" | |
3 | |
4 class SkFile { | |
5 FILE* file; | |
6 bool busted; | |
7 char* sz; | |
8 mutable int i; | |
9 | |
10 public: | |
11 SkFile(unsigned long id) { | |
12 file = NULL; | |
13 busted = false; | |
14 sz = new char[100000]; | |
15 set(id); | |
16 i = 100; | |
17 } | |
18 | |
19 ~SkFile() { | |
20 delete sz; | |
21 if (file) { | |
22 fclose(file); | |
23 } | |
24 } | |
25 | |
26 void set(unsigned long id) { | |
27 if (busted) { | |
28 return; | |
29 } | |
30 | |
31 if (file == NULL) { | |
32 char sz[10000]; | |
33 sprintf(sz, "%s\\%ul.callstacks.txt", getenv(CANVAS_PATH), id); | |
34 file = fopen(sz, "a"); | |
35 if (file == NULL) { | |
36 busted = true; | |
37 } | |
38 fprintf(file, "\n\n\nNEW SESSION, just coliding ids ... should generate a
new file ideally ... \n\n\n"); | |
39 } | |
40 } | |
41 | |
42 void appendLine(const char* sz) const { | |
43 if (busted) { | |
44 return; | |
45 } | |
46 | |
47 fprintf(file, "%s\n", sz); | |
48 } | |
49 | |
50 void dump(bool flush = false) const { | |
51 if (busted) { | |
52 return; | |
53 } | |
54 | |
55 LightSymbol::GetCallStack(sz, 100000, " >- "); | |
56 appendLine(sz); | |
57 | |
58 i--; | |
59 | |
60 if (i < 0 || flush) { | |
61 i = 100; | |
62 fflush(file); | |
63 } | |
64 } | |
65 }; | |
OLD | NEW |