projects
/
pspp
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
minor improvements and cleanups
[pspp]
/
src
/
language
/
data-io
/
combine-files.c
diff --git
a/src/language/data-io/combine-files.c
b/src/language/data-io/combine-files.c
index d803ccdc869d40d2fe49cb295e0d50ad23c01533..8322f5c03307f7e82597bcc5975a90621c0c7186 100644
(file)
--- a/
src/language/data-io/combine-files.c
+++ b/
src/language/data-io/combine-files.c
@@
-1,5
+1,5
@@
/* PSPP - a program for statistical analysis.
/* PSPP - a program for statistical analysis.
- Copyright (C) 1997-9, 2000, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+ Copyright (C) 1997-9, 2000, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013
, 2014
Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@
-229,7
+229,8
@@
combine_files (enum comb_command_type command,
if (file->handle == NULL)
goto error;
if (file->handle == NULL)
goto error;
- file->reader = any_reader_open (file->handle, NULL, &file->dict);
+ file->reader = any_reader_open_and_decode (file->handle, NULL,
+ &file->dict, NULL);
if (file->reader == NULL)
goto error;
}
if (file->reader == NULL)
goto error;
}
@@
-237,7
+238,7
@@
combine_files (enum comb_command_type command,
while (lex_match (lexer, T_SLASH))
if (lex_match_id (lexer, "RENAME"))
{
while (lex_match (lexer, T_SLASH))
if (lex_match_id (lexer, "RENAME"))
{
- if (!parse_dict_rename (lexer, file->dict))
+ if (!parse_dict_rename (lexer, file->dict
, false
))
goto error;
}
else if (lex_match_id (lexer, "IN"))
goto error;
}
else if (lex_match_id (lexer, "IN"))
@@
-413,11
+414,11
@@
combine_files (enum comb_command_type command,
for (i = 0; i < proc.n_files; i++)
{
struct comb_file *file = &proc.files[i];
for (i = 0; i < proc.n_files; i++)
{
struct comb_file *file = &proc.files[i];
- size_t src_
var_cnt = dict_get_var_cnt
(file->dict);
+ size_t src_
n_vars = dict_get_n_vars
(file->dict);
size_t j;
size_t j;
- file->mv = xnmalloc (src_
var_cnt
, sizeof *file->mv);
- for (j = 0; j < src_
var_cnt
; j++)
+ file->mv = xnmalloc (src_
n_vars
, sizeof *file->mv);
+ for (j = 0; j < src_
n_vars
; j++)
{
struct variable *src_var = dict_get_var (file->dict, j);
struct variable *dst_var = dict_lookup_var (proc.dict,
{
struct variable *src_var = dict_get_var (file->dict, j);
struct variable *dst_var = dict_lookup_var (proc.dict,
@@
-445,7
+446,7
@@
combine_files (enum comb_command_type command,
if (active_file == NULL)
{
proc_discard_output (ds);
if (active_file == NULL)
{
proc_discard_output (ds);
- file->reader = active_file = proc_open
(ds
);
+ file->reader = active_file = proc_open
_filtering (ds, false
);
}
else
file->reader = casereader_clone (active_file);
}
else
file->reader = casereader_clone (active_file);
@@
-516,7
+517,7
@@
merge_dictionary (struct dictionary *const m, struct comb_file *f)
The correct thing to do would be to convert to an encoding
which can cope with all the input files (eg UTF-8).
*/
The correct thing to do would be to convert to an encoding
which can cope with all the input files (eg UTF-8).
*/
- if (
0 != strcmp (dict_get_encoding (f->dict), dict_get_encoding (m)))
+ if (0 != strcmp (dict_get_encoding (f->dict), dict_get_encoding (m)))
msg (MW, _("Combining files with incompatible encodings. String data may "
"not be represented correctly."));
msg (MW, _("Combining files with incompatible encodings. String data may "
"not be represented correctly."));
@@
-542,7
+543,7
@@
merge_dictionary (struct dictionary *const m, struct comb_file *f)
}
}
}
}
- for (i = 0; i < dict_get_
var_cnt
(d); i++)
+ for (i = 0; i < dict_get_
n_vars
(d); i++)
{
struct variable *dv = dict_get_var (d, i);
struct variable *mv = dict_lookup_var (m, var_get_name (dv));
{
struct variable *dv = dict_get_var (d, i);
struct variable *mv = dict_lookup_var (m, var_get_name (dv));
@@
-590,7
+591,7
@@
merge_dictionary (struct dictionary *const m, struct comb_file *f)
if (var_has_missing_values (dv) && !var_has_missing_values (mv))
var_set_missing_values (mv, var_get_missing_values (dv));
if (var_get_label (dv) && !var_get_label (mv))
if (var_has_missing_values (dv) && !var_has_missing_values (mv))
var_set_missing_values (mv, var_get_missing_values (dv));
if (var_get_label (dv) && !var_get_label (mv))
- var_set_label (mv, var_get_label (dv)
, false
);
+ var_set_label (mv, var_get_label (dv));
}
else
mv = dict_clone_var_assert (m, dv);
}
else
mv = dict_clone_var_assert (m, dv);
@@
-643,7
+644,7
@@
close_all_comb_files (struct comb_proc *proc)
subcase_destroy (&file->dst);
free (file->mv);
fh_unref (file->handle);
subcase_destroy (&file->dst);
free (file->mv);
fh_unref (file->handle);
- dict_
destroy
(file->dict);
+ dict_
unref
(file->dict);
casereader_destroy (file->reader);
case_unref (file->data);
free (file->in_name);
casereader_destroy (file->reader);
case_unref (file->data);
free (file->in_name);
@@
-658,7
+659,7
@@
static void
free_comb_proc (struct comb_proc *proc)
{
close_all_comb_files (proc);
free_comb_proc (struct comb_proc *proc)
{
close_all_comb_files (proc);
- dict_
destroy
(proc->dict);
+ dict_
unref
(proc->dict);
casewriter_destroy (proc->output);
case_matcher_destroy (proc->matcher);
if (proc->prev_BY)
casewriter_destroy (proc->output);
case_matcher_destroy (proc->matcher);
if (proc->prev_BY)
@@
-716,7
+717,7
@@
execute_match_files (struct comb_proc *proc)
size_t i;
output = create_output_case (proc);
size_t i;
output = create_output_case (proc);
- for (i = proc->n_files; i-- > 0;
)
+ for (i = proc->n_files; i-- > 0;)
{
struct comb_file *file = &proc->files[i];
if (file->type == COMB_FILE)
{
struct comb_file *file = &proc->files[i];
if (file->type == COMB_FILE)
@@
-820,7
+821,7
@@
scan_table (struct comb_file *file, union value by[])
static struct ccase *
create_output_case (const struct comb_proc *proc)
{
static struct ccase *
create_output_case (const struct comb_proc *proc)
{
- size_t n_vars = dict_get_
var_cnt
(proc->dict);
+ size_t n_vars = dict_get_
n_vars
(proc->dict);
struct ccase *output;
size_t i;
struct ccase *output;
size_t i;
@@
-834,7
+835,7
@@
create_output_case (const struct comb_proc *proc)
{
struct comb_file *file = &proc->files[i];
if (file->in_var != NULL)
{
struct comb_file *file = &proc->files[i];
if (file->in_var != NULL)
-
case_data_rw (output, file->in_var)->f
= false;
+
*case_num_rw (output, file->in_var)
= false;
}
return output;
}
}
return output;
}
@@
-843,7
+844,7
@@
static void
mark_file_used (const struct comb_file *file, struct ccase *output)
{
if (file->in_var != NULL)
mark_file_used (const struct comb_file *file, struct ccase *output)
{
if (file->in_var != NULL)
-
case_data_rw (output, file->in_var)->f
= true;
+
*case_num_rw (output, file->in_var)
= true;
}
/* Copies the data from FILE's case into output case OUTPUT.
}
/* Copies the data from FILE's case into output case OUTPUT.
@@
-872,7
+873,7
@@
apply_nonmissing_case (const struct comb_file *file, struct ccase *output)
= case_data_idx (file->data, src_field->case_index);
int width = src_field->width;
= case_data_idx (file->data, src_field->case_index);
int width = src_field->width;
- if (!mv_is_value_missing (file->mv[i], src_value
, MV_ANY
)
+ if (!mv_is_value_missing (file->mv[i], src_value)
&& !(width > 0 && value_is_spaces (src_value, width)))
value_copy (case_data_rw_idx (output, dst_field->case_index),
src_value, width);
&& !(width > 0 && value_is_spaces (src_value, width)))
value_copy (case_data_rw_idx (output, dst_field->case_index),
src_value, width);
@@
-912,7
+913,7
@@
output_case (struct comb_proc *proc, struct ccase *output, union value by[])
{
new_BY = !subcase_equal_xx (&proc->by_vars, proc->prev_BY, by);
if (proc->last != NULL)
{
new_BY = !subcase_equal_xx (&proc->by_vars, proc->prev_BY, by);
if (proc->last != NULL)
-
case_data_rw (proc->buffered_case, proc->last)->f
= new_BY;
+
*case_num_rw (proc->buffered_case, proc->last)
= new_BY;
casewriter_write (proc->output, proc->buffered_case);
}
else
casewriter_write (proc->output, proc->buffered_case);
}
else
@@
-920,7
+921,7
@@
output_case (struct comb_proc *proc, struct ccase *output, union value by[])
proc->buffered_case = output;
if (proc->first != NULL)
proc->buffered_case = output;
if (proc->first != NULL)
-
case_data_rw (proc->buffered_case, proc->first)->f
= new_BY;
+
*case_num_rw (proc->buffered_case, proc->first)
= new_BY;
if (new_BY)
{
if (new_BY)
{
@@
-945,7
+946,7
@@
output_buffered_case (struct comb_proc *proc)
if (proc->prev_BY != NULL)
{
if (proc->last != NULL)
if (proc->prev_BY != NULL)
{
if (proc->last != NULL)
-
case_data_rw (proc->buffered_case, proc->last)->f
= 1.0;
+
*case_num_rw (proc->buffered_case, proc->last)
= 1.0;
casewriter_write (proc->output, proc->buffered_case);
proc->buffered_case = NULL;
}
casewriter_write (proc->output, proc->buffered_case);
proc->buffered_case = NULL;
}