X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Finclude.c;h=abce511a0a74db2c3a8d57639f7dc9cad88d2107;hb=0e4ef2c7099e82d8e43cf87a53c36430d1ce879f;hp=78557bdd3777c07141369ee543a31a3c218af80f;hpb=4944c86a9318bc5b5578ab145a95c116ffd2c9fd;p=pspp diff --git a/src/include.c b/src/include.c index 78557bdd37..abce511a0a 100644 --- a/src/include.c +++ b/src/include.c @@ -14,8 +14,8 @@ You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. */ + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301, USA. */ #include #include @@ -23,53 +23,27 @@ #include "alloc.h" #include "command.h" #include "error.h" -#include "getline.h" +#include "getl.h" #include "lexer.h" #include "str.h" +#include "gettext.h" +#define _(msgid) gettext (msgid) + int -cmd_include_at (void) +cmd_include (void) { - char *incfn, *s, *bp, *ep; - - s = bp = lex_entire_line (); - while (isspace ((unsigned char) *bp)) - bp++; - bp++; /* skip `@' */ - while (isspace ((unsigned char) *bp)) - bp++; - if (*bp == '\'') - bp++; - - ep = bp + strlen (bp); - while (isspace ((unsigned char) *--ep)); - if (*ep != '\'') - ep++; + /* Skip optional FILE=. */ + if (lex_match_id ("FILE")) + lex_match ('='); - if (ep <= bp) + /* Filename can be identifier or string. */ + if (token != T_ID && token != T_STRING) { - msg (SE, _("Unrecognized filename format.")); + lex_error (_("expecting filename")); return CMD_FAILURE; } - - /* Now the filename is trapped between bp and ep. */ - incfn = xmalloc (ep - bp + 1); - strncpy (incfn, bp, ep - bp); - incfn[ep - bp] = 0; - getl_include (incfn); - free (incfn); - - return CMD_SUCCESS; -} - -int -cmd_include (void) -{ - lex_get (); - - if (!lex_force_string ()) - return CMD_SUCCESS; - getl_include (ds_value (&tokstr)); + getl_include (ds_c_str (&tokstr)); lex_get (); return lex_end_of_command ();