message: Introduce underlining for error message regions.
[pspp] / src / language / data-io / data-reader.c
index ab3e0657893693f7bb0b549e22c2e9dff8babe25..89e84da0b37f13c28ac97941e1e3ab943b43ac6c 100644 (file)
@@ -708,15 +708,27 @@ dfm_get_column (const struct dfm_reader *r, const char *p)
 const char *
 dfm_get_file_name (const struct dfm_reader *r)
 {
-  return (fh_get_referent (r->fh) == FH_REF_FILE
-          ? fh_get_file_name (r->fh)
+  enum fh_referent referent = fh_get_referent (r->fh);
+  return (referent == FH_REF_FILE ? fh_get_file_name (r->fh)
+          : referent == FH_REF_INLINE ? lex_get_file_name (r->lexer)
           : NULL);
 }
 
 int
 dfm_get_line_number (const struct dfm_reader *r)
 {
-  return fh_get_referent (r->fh) == FH_REF_FILE ? r->line_number : -1;
+  switch (fh_get_referent (r->fh))
+    {
+    case FH_REF_FILE:
+      return r->line_number;
+
+    case FH_REF_INLINE:
+      return lex_ofs_start_point (r->lexer, lex_ofs (r->lexer)).line;
+
+    case FH_REF_DATASET:
+    default:
+      return -1;
+    }
 }
 \f
 /* BEGIN DATA...END DATA procedure. */