Skip to content

Commit

Permalink
Try fix build pt2
Browse files Browse the repository at this point in the history
  • Loading branch information
slobodan-ilic committed Jun 20, 2024
1 parent 12fa4b2 commit 3a93e6b
Show file tree
Hide file tree
Showing 4 changed files with 43 additions and 33 deletions.
2 changes: 2 additions & 0 deletions Makefile.am
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ libreadstat_la_SOURCES = \
src/spss/readstat_sav_compress.c \
src/spss/readstat_sav_parse.c \
src/spss/readstat_sav_parse_timestamp.c \
src/spss/readstat_sav_parse_mr_name.c \
src/spss/readstat_sav_read.c \
src/spss/readstat_sav_write.c \
src/spss/readstat_spss.c \
Expand Down Expand Up @@ -103,6 +104,7 @@ noinst_HEADERS = \
src/spss/readstat_sav_compress.h \
src/spss/readstat_sav_parse.h \
src/spss/readstat_sav_parse_timestamp.h \
src/spss/readstat_sav_parse_mr_name.h \
src/spss/readstat_spss.h \
src/spss/readstat_spss_parse.h \
src/spss/readstat_zsav_compress.h \
Expand Down
6 changes: 6 additions & 0 deletions VS17/ReadStat.vcxproj.filters
Original file line number Diff line number Diff line change
Expand Up @@ -123,6 +123,9 @@
<ClCompile Include="..\src\spss\readstat_sav_parse_timestamp.c">
<Filter>Source Files\spss</Filter>
</ClCompile>
<ClCompile Include="..\src\spss\readstat_sav_parse_mr_name.c">
<Filter>Source Files\spss</Filter>
</ClCompile>
<ClCompile Include="..\src\spss\readstat_sav_read.c">
<Filter>Source Files\spss</Filter>
</ClCompile>
Expand Down Expand Up @@ -218,6 +221,9 @@
<ClInclude Include="..\src\spss\readstat_sav_parse_timestamp.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\src\spss\readstat_sav_parse_mr_name.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\src\spss\readstat_spss.h">
<Filter>Header Files</Filter>
</ClInclude>
Expand Down
47 changes: 24 additions & 23 deletions src/spss/readstat_sav_parse_mr_name.c
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,15 @@
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include "readstat.h"
#include "../readstat.h"
#include "readstat_sav_parse_mr_name.h"


#line 72 "./src/spss/readstat_sav_parse_mr_name.rl"
#line 73 "./src/spss/readstat_sav_parse_mr_name.rl"



#line 14 "./src/spss/readstat_sav_parse_mr_name.c"
#line 15 "./src/spss/readstat_sav_parse_mr_name.c"
static const char _mr_name_and_label_actions[] = {
0, 1, 0, 1, 1, 1, 2, 1,
3, 1, 4
Expand Down Expand Up @@ -72,7 +73,7 @@ static const int mr_name_and_label_error = 0;
static const int mr_name_and_label_en_name_extractor = 1;


#line 75 "./src/spss/readstat_sav_parse_mr_name.rl"
#line 76 "./src/spss/readstat_sav_parse_mr_name.rl"

readstat_error_t extract_mr_data(const char *line, mr_set_t *result) {
readstat_error_t retval = READSTAT_OK;
Expand All @@ -93,14 +94,14 @@ readstat_error_t extract_mr_data(const char *line, mr_set_t *result) {

// Execute Ragel finite state machine (FSM)

#line 97 "./src/spss/readstat_sav_parse_mr_name.c"
#line 98 "./src/spss/readstat_sav_parse_mr_name.c"
{
cs = mr_name_and_label_start;
}

#line 95 "./src/spss/readstat_sav_parse_mr_name.rl"
#line 96 "./src/spss/readstat_sav_parse_mr_name.rl"

#line 104 "./src/spss/readstat_sav_parse_mr_name.c"
#line 105 "./src/spss/readstat_sav_parse_mr_name.c"
{
int _klen;
unsigned int _trans;
Expand Down Expand Up @@ -175,30 +176,30 @@ readstat_error_t extract_mr_data(const char *line, mr_set_t *result) {
switch ( *_acts++ )
{
case 0:
#line 9 "./src/spss/readstat_sav_parse_mr_name.rl"
#line 10 "./src/spss/readstat_sav_parse_mr_name.rl"
{
mr_name = (char *)malloc(p - start + 1);
mr_name = (char *)readstat_malloc(p - start + 1);
memcpy(mr_name, start, p - start);
mr_name[p - start] = '\0';
}
break;
case 1:
#line 15 "./src/spss/readstat_sav_parse_mr_name.rl"
#line 16 "./src/spss/readstat_sav_parse_mr_name.rl"
{
mr_type = *p;
start = p + 1;
}
break;
case 2:
#line 20 "./src/spss/readstat_sav_parse_mr_name.rl"
#line 21 "./src/spss/readstat_sav_parse_mr_name.rl"
{
int n_cv_digs = p - start;
char *n_dig_str = (char *)malloc(n_cv_digs + 1);
char *n_dig_str = (char *)readstat_malloc(n_cv_digs + 1);
memcpy(n_dig_str, start, n_cv_digs);
n_dig_str[n_cv_digs] = '\0';
int n_digs = strtol(n_dig_str, NULL, 10);
if (n_digs != 0) {
char *cv = (char *)malloc(n_digs + 1);
char *cv = (char *)readstat_malloc(n_digs + 1);
memcpy(cv, p + 1, n_digs);
cv[n_digs] = '\0';
mr_counted_value = strtol(cv, NULL, 10);
Expand All @@ -211,33 +212,33 @@ readstat_error_t extract_mr_data(const char *line, mr_set_t *result) {
}
break;
case 3:
#line 39 "./src/spss/readstat_sav_parse_mr_name.rl"
#line 40 "./src/spss/readstat_sav_parse_mr_name.rl"
{
char *lbl_len_str = (char *)malloc(p - start + 1);
char *lbl_len_str = (char *)readstat_malloc(p - start + 1);
memcpy(lbl_len_str, start, p - start);
lbl_len_str[p - start] = '\0';
int len = strtol(lbl_len_str, NULL, 10);
mr_label = (char *)malloc(len + 1);
mr_label = (char *)readstat_malloc(len + 1);
memcpy(mr_label, p + 1, len);
mr_label[len] = '\0';
p = p + 1 + len;
start = p + 1;
}
break;
case 4:
#line 51 "./src/spss/readstat_sav_parse_mr_name.rl"
#line 52 "./src/spss/readstat_sav_parse_mr_name.rl"
{
int len = p - start;
char *subvar = (char *)malloc(len + 1);
char *subvar = (char *)readstat_malloc(len + 1);
memcpy(subvar, start, len);
subvar[len] = '\0';
start = p + 1;

mr_subvariables = realloc(mr_subvariables, sizeof(char *) * (mr_subvar_count + 1));
mr_subvariables = readstat_realloc(mr_subvariables, sizeof(char *) * (mr_subvar_count + 1));
mr_subvariables[mr_subvar_count++] = subvar;
}
break;
#line 241 "./src/spss/readstat_sav_parse_mr_name.c"
#line 242 "./src/spss/readstat_sav_parse_mr_name.c"
}
}

Expand All @@ -250,7 +251,7 @@ readstat_error_t extract_mr_data(const char *line, mr_set_t *result) {
_out: {}
}

#line 96 "./src/spss/readstat_sav_parse_mr_name.rl"
#line 97 "./src/spss/readstat_sav_parse_mr_name.rl"

// Check if FSM finished successfully
if (cs < 9 || p != pe) {
Expand All @@ -259,8 +260,8 @@ readstat_error_t extract_mr_data(const char *line, mr_set_t *result) {
}

// Assign parsed values to output parameter
result->name = strdup(mr_name);
result->label = strdup(mr_label);
result->name = mr_name;
result->label = mr_label;
result->type = mr_type;
result->counted_value = mr_counted_value;
result->subvariables = mr_subvariables;
Expand Down
21 changes: 11 additions & 10 deletions src/spss/readstat_sav_parse_mr_name.rl
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include "readstat.h"
#include "../readstat.h"
#include "readstat_sav_parse_mr_name.h"

%%{
machine mr_name_and_label;

action extract_mr_name {
mr_name = (char *)malloc(p - start + 1);
mr_name = (char *)readstat_malloc(p - start + 1);
memcpy(mr_name, start, p - start);
mr_name[p - start] = '\0';
}
Expand All @@ -19,12 +20,12 @@

action extract_counted_value {
int n_cv_digs = p - start;
char *n_dig_str = (char *)malloc(n_cv_digs + 1);
char *n_dig_str = (char *)readstat_malloc(n_cv_digs + 1);
memcpy(n_dig_str, start, n_cv_digs);
n_dig_str[n_cv_digs] = '\0';
int n_digs = strtol(n_dig_str, NULL, 10);
if (n_digs != 0) {
char *cv = (char *)malloc(n_digs + 1);
char *cv = (char *)readstat_malloc(n_digs + 1);
memcpy(cv, p + 1, n_digs);
cv[n_digs] = '\0';
mr_counted_value = strtol(cv, NULL, 10);
Expand All @@ -37,11 +38,11 @@
}

action extract_label {
char *lbl_len_str = (char *)malloc(p - start + 1);
char *lbl_len_str = (char *)readstat_malloc(p - start + 1);
memcpy(lbl_len_str, start, p - start);
lbl_len_str[p - start] = '\0';
int len = strtol(lbl_len_str, NULL, 10);
mr_label = (char *)malloc(len + 1);
mr_label = (char *)readstat_malloc(len + 1);
memcpy(mr_label, p + 1, len);
mr_label[len] = '\0';
p = p + 1 + len;
Expand All @@ -50,12 +51,12 @@

action extract_subvar {
int len = p - start;
char *subvar = (char *)malloc(len + 1);
char *subvar = (char *)readstat_malloc(len + 1);
memcpy(subvar, start, len);
subvar[len] = '\0';
start = p + 1;

mr_subvariables = realloc(mr_subvariables, sizeof(char *) * (mr_subvar_count + 1));
mr_subvariables = readstat_realloc(mr_subvariables, sizeof(char *) * (mr_subvar_count + 1));
mr_subvariables[mr_subvar_count++] = subvar;
}

Expand Down Expand Up @@ -101,8 +102,8 @@ readstat_error_t extract_mr_data(const char *line, mr_set_t *result) {
}

// Assign parsed values to output parameter
result->name = strdup(mr_name);
result->label = strdup(mr_label);
result->name = mr_name;
result->label = mr_label;
result->type = mr_type;
result->counted_value = mr_counted_value;
result->subvariables = mr_subvariables;
Expand Down

0 comments on commit 3a93e6b

Please sign in to comment.