X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;ds=sidebyside;f=src%2Flanguage%2Fdata-io%2Ffile-handle.q;h=313adc952b8bdcf14190c6186924bc0a43394897;hb=54a2df235d08f661a3122f5b40361258d35014c8;hp=0519803e7fc08080217ae4593382a4d045813780;hpb=4183dccd4130c9a6122cb2fa149e5dbf811db554;p=pspp diff --git a/src/language/data-io/file-handle.q b/src/language/data-io/file-handle.q index 0519803e7f..313adc952b 100644 --- a/src/language/data-io/file-handle.q +++ b/src/language/data-io/file-handle.q @@ -1,5 +1,5 @@ /* PSPP - a program for statistical analysis. - Copyright (C) 1997-9, 2000, 2006, 2010, 2011 Free Software Foundation, Inc. + Copyright (C) 1997-9, 2000, 2006, 2010, 2011, 2012, 2013 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 @@ -16,20 +16,22 @@ #include +#include "data/file-handle-def.h" + #include #include #include #include "data/file-name.h" #include "data/session.h" +#include "data/variable.h" #include "language/command.h" #include "language/data-io/file-handle.h" #include "language/lexer/lexer.h" #include "libpspp/assertion.h" +#include "libpspp/cast.h" #include "libpspp/message.h" #include "libpspp/str.h" -#include "data/variable.h" -#include "data/file-handle-def.h" #include "gl/xalloc.h" @@ -45,7 +47,9 @@ lrecl=integer; tabwidth=integer; mode=mode:!character/binary/image/360; - recform=recform:fixed/f/variable/v/spanned/vs. + ends=ends:lf/crlf; + recform=recform:fixed/f/variable/v/spanned/vs; + encoding=string. */ /* (declarations) */ /* (functions) */ @@ -101,6 +105,10 @@ cmd_file_handle (struct lexer *lexer, struct dataset *ds) else msg (SE, _("%s must not be negative."), "TABWIDTH"); } + if (cmd.ends == FH_LF) + properties.line_ends = FH_END_LF; + else if (cmd.ends == FH_CRLF) + properties.line_ends = FH_END_CRLF; break; case FH_IMAGE: properties.mode = FH_MODE_FIXED; @@ -109,7 +117,7 @@ cmd_file_handle (struct lexer *lexer, struct dataset *ds) properties.mode = FH_MODE_VARIABLE; break; case FH_360: - properties.encoding = "EBCDIC-US"; + properties.encoding = CONST_CAST (char *, "EBCDIC-US"); if (cmd.recform == FH_FIXED || cmd.recform == FH_F) properties.mode = FH_MODE_FIXED; else if (cmd.recform == FH_VARIABLE || cmd.recform == FH_V) @@ -146,6 +154,9 @@ cmd_file_handle (struct lexer *lexer, struct dataset *ds) properties.record_width = cmd.n_lrecl[0]; } + if (cmd.s_encoding != NULL) + properties.encoding = cmd.s_encoding; + fh_create_file (handle_name, cmd.s_name, &properties); result = CMD_SUCCESS;