0
|
1 #include "FrameTableInc.h"
|
701
|
2 #include <memory.h>
|
|
3 //identical function to work in differnt threads
|
|
4
|
|
5 //----- (004BE3BF) --------------------------------------------------------
|
703
|
6 FrameTableTxtLine* txt_file_frametable_parser(const char *str_to_parse, FrameTableTxtLine *tokens_table)
|
701
|
7 {
|
|
8 bool new_token_flag; // edx@3
|
|
9 bool in_quotes; // [sp+Ch] [bp-4h]@3
|
|
10 char* parse_pos;
|
|
11 unsigned char test_char;
|
|
12 int i;
|
|
13
|
|
14 static char tokens_buff1[1000];
|
|
15 static struct FrameTableTxtLine temp_tokens_table1; // weak
|
|
16
|
|
17 temp_tokens_table1.uPropCount = 0;
|
0
|
18
|
701
|
19 if ( str_to_parse && *str_to_parse )
|
|
20 {
|
|
21 parse_pos=(char*)str_to_parse;
|
|
22 new_token_flag = true;
|
|
23 in_quotes = false;
|
|
24 for(i = 0; (i<1000)&&(temp_tokens_table1.uPropCount < 30) ; ++i)
|
|
25 {
|
|
26 test_char=*parse_pos;
|
|
27 tokens_buff1[i]=test_char;
|
|
28 if ( !test_char )
|
|
29 break;
|
|
30 if ( (test_char != ' ') && (test_char != ',') && (test_char != '\t') || in_quotes )
|
|
31 {
|
|
32 if ( test_char == '"' )
|
|
33 {
|
|
34 tokens_buff1[i]= '\0';
|
|
35 new_token_flag = true;
|
|
36 if ( in_quotes )
|
|
37 in_quotes = false;
|
|
38 else
|
|
39 {
|
|
40 in_quotes = true;
|
|
41 if ( *(parse_pos+1) == '"' )
|
|
42 {
|
|
43 temp_tokens_table1.pProperties[temp_tokens_table1.uPropCount] = &tokens_buff1[i];
|
|
44 ++temp_tokens_table1.uPropCount;
|
|
45 }
|
|
46 }
|
|
47 }
|
|
48 else
|
|
49 {
|
|
50 if ( new_token_flag )
|
|
51 {
|
|
52 temp_tokens_table1.pProperties[temp_tokens_table1.uPropCount] = &tokens_buff1[i];
|
|
53 ++temp_tokens_table1.uPropCount;
|
|
54 }
|
|
55 new_token_flag = false;
|
|
56 }
|
|
57 }
|
|
58 else
|
|
59 {
|
|
60 tokens_buff1[i]= '\0';
|
|
61 new_token_flag = true;
|
|
62 }
|
|
63 ++parse_pos;
|
|
64 }
|
|
65 tokens_buff1[i]= '\0';
|
|
66 }
|
|
67 memcpy(tokens_table, &temp_tokens_table1, sizeof(FrameTableTxtLine));
|
|
68 return tokens_table;
|
|
69 }
|
|
70 // F8BA58: using guessed type FrameTableTxtLine static_stru_F8BA58;
|
|
71
|
|
72 //----- (004BE485) --------------------------------------------------------
|
|
73 FrameTableTxtLine * frame_table_txt_parser(const char *str_to_parse, FrameTableTxtLine *tokens_table)
|
|
74 {
|
|
75 bool new_token_flag; // edx@3
|
|
76 bool in_quotes; // [sp+Ch] [bp-4h]@3
|
|
77 char* parse_pos;
|
|
78 unsigned char test_char;
|
|
79 int i;
|
|
80
|
|
81 static char tokens_buff2[1000];
|
|
82 static struct FrameTableTxtLine temp_tokens_table2; // weak
|
|
83 temp_tokens_table2.uPropCount = 0;
|
|
84
|
|
85 if ( str_to_parse && *str_to_parse )
|
|
86 {
|
|
87 parse_pos=(char*)str_to_parse;
|
|
88 new_token_flag = true;
|
|
89 in_quotes = false;
|
|
90 for(i = 0; (i<1000)&&(temp_tokens_table2.uPropCount < 30); ++i)
|
|
91 {
|
|
92 test_char=*parse_pos;
|
|
93 tokens_buff2[i]=test_char;
|
|
94 if ( !test_char )
|
|
95 break;
|
|
96 if ( (test_char != ' ') && (test_char != ',') && (test_char != '\t') || in_quotes )
|
|
97 {
|
|
98 if ( test_char == '"' )
|
|
99 {
|
|
100 tokens_buff2[i]= '\0';
|
|
101 new_token_flag = true;
|
|
102 if ( in_quotes )
|
|
103 in_quotes = false;
|
|
104 else
|
|
105 {
|
|
106 in_quotes = true;
|
|
107 if ( *(parse_pos+1) == '"' )
|
|
108 {
|
|
109 temp_tokens_table2.pProperties[temp_tokens_table2.uPropCount] = &tokens_buff2[i];
|
|
110 ++temp_tokens_table2.uPropCount;
|
|
111 }
|
|
112 }
|
|
113 }
|
|
114 else
|
|
115 {
|
|
116 if ( new_token_flag )
|
|
117 {
|
|
118 temp_tokens_table2.pProperties[temp_tokens_table2.uPropCount] = &tokens_buff2[i];
|
|
119 ++temp_tokens_table2.uPropCount;
|
|
120 }
|
|
121 new_token_flag = false;
|
|
122 }
|
|
123 }
|
|
124 else
|
|
125 {
|
|
126 tokens_buff2[i]= '\0';
|
|
127 new_token_flag = true;
|
|
128 }
|
|
129 ++parse_pos;
|
|
130 }
|
|
131
|
|
132 tokens_buff2[i]= '\0';
|
|
133 }
|
|
134 memcpy(tokens_table, &temp_tokens_table2, sizeof(FrameTableTxtLine));
|
|
135 return tokens_table;
|
|
136 }
|
|
137
|