diff --git a/commands.h b/commands.h
index f7cf064..18d8c28 100644
--- a/commands.h
+++ b/commands.h
@@ -19,7 +19,7 @@
 
 struct commands
   {
-    gmk_floc fileinfo;          /* Where commands were defined.  */
+    floc fileinfo;              /* Where commands were defined.  */
     char *commands;             /* Commands text.  */
     char **command_lines;       /* Commands chopped up into lines.  */
     unsigned char *lines_flags; /* One set of flag bits for each line.  */
diff --git a/dep.h b/dep.h
index 9e9972b..7f5076e 100644
--- a/dep.h
+++ b/dep.h
@@ -63,7 +63,7 @@
   {
     DEP (struct goaldep);
     unsigned short error;
-    gmk_floc floc;
+    floc floc;
   };
 
 /* Options for parsing lists of filenames.  */
@@ -127,5 +127,5 @@
 struct dep *copy_dep_chain (const struct dep *d);
 
 struct goaldep *read_all_makefiles (const char **makefiles);
-void eval_buffer (char *buffer, const gmk_floc *floc);
+void eval_buffer (char *buffer, const floc *floc);
 enum update_status update_goal_chain (struct goaldep *goals);
diff --git a/expand.c b/expand.c
index de832b3..0b5fd01 100644
--- a/expand.c
+++ b/expand.c
@@ -26,7 +26,7 @@
 
 /* Initially, any errors reported when expanding strings will be reported
    against the file where the error appears.  */
-const gmk_floc **expanding_var = &reading_file;
+const floc **expanding_var = &reading_file;
 
 /* The next two describe the variable output buffer.
    This buffer is used to hold the variable-expansion of a line of the
@@ -96,8 +96,8 @@
 recursively_expand_for_file (struct variable *v, struct file *file)
 {
   char *value;
-  const gmk_floc *this_var;
-  const gmk_floc **saved_varp;
+  const floc *this_var;
+  const floc **saved_varp;
   struct variable_set_list *save = 0;
   int set_reading = 0;
 
@@ -458,7 +458,7 @@
 {
   char *result;
   struct variable_set_list *savev;
-  const gmk_floc *savef;
+  const floc *savef;
 
   if (file == 0)
     return variable_expand (line);
diff --git a/function.c b/function.c
index c9fcec2..b7f0e56 100644
--- a/function.c
+++ b/function.c
@@ -2634,7 +2634,7 @@
 }
 
 void
-define_new_function (const gmk_floc *flocp, const char *name,
+define_new_function (const floc *flocp, const char *name,
                      unsigned int min, unsigned int max, unsigned int flags,
                      gmk_func_ptr func)
 {
diff --git a/gnumake.h b/gnumake.h
index 5b441e5..b508562 100644
--- a/gnumake.h
+++ b/gnumake.h
@@ -24,7 +24,6 @@
   {
     const char *filenm;
     unsigned long lineno;
-    unsigned long offset;
   } gmk_floc;
 
 typedef char *(*gmk_func_ptr)(const char *nm, unsigned int argc, char **argv);
diff --git a/guile.c b/guile.c
index b7bb8fb..1b055c3 100644
--- a/guile.c
+++ b/guile.c
@@ -140,7 +140,7 @@
 /* We could send the flocp to define_new_function(), but since guile is
    "kind of" built-in, that didn't seem so useful.  */
 int
-guile_gmake_setup (const gmk_floc *flocp UNUSED)
+guile_gmake_setup (const floc *flocp UNUSED)
 {
   /* Create a make function "guile".  */
   gmk_add_function ("guile", func_guile, 0, 1, GMK_FUNC_DEFAULT);
@@ -151,7 +151,7 @@
 #else
 
 int
-guile_gmake_setup (const gmk_floc *flocp UNUSED)
+guile_gmake_setup (const floc *flocp UNUSED)
 {
   return 1;
 }
diff --git a/job.c b/job.c
index ddac6c4..f3a9fdb 100644
--- a/job.c
+++ b/job.c
@@ -474,7 +474,7 @@
   const char *post = "";
   const char *dump = "";
   const struct file *f = child->file;
-  const gmk_floc *flocp = &f->cmds->fileinfo;
+  const floc *flocp = &f->cmds->fileinfo;
   const char *nm;
   size_t l;
 
diff --git a/load.c b/load.c
index 2beab83..37e7b8e 100644
--- a/load.c
+++ b/load.c
@@ -45,8 +45,8 @@
 static struct load_list *loaded_syms = NULL;
 
 static load_func_t
-load_object (const gmk_floc *flocp, int noerror,
-             const char *ldname, const char *symname)
+load_object (const floc *flocp, int noerror, const char *ldname,
+             const char *symname)
 {
   static void *global_dl = NULL;
   load_func_t symp;
@@ -119,7 +119,7 @@
 }
 
 int
-load_file (const gmk_floc *flocp, const char **ldname, int noerror)
+load_file (const floc *flocp, const char **ldname, int noerror)
 {
   int nmlen = strlen (*ldname);
   char *new = alloca (nmlen + CSTRLEN (SYMBOL_EXTENSION) + 1);
@@ -249,7 +249,7 @@
 #else
 
 int
-load_file (const gmk_floc *flocp, const char **ldname UNUSED, int noerror)
+load_file (const floc *flocp, const char **ldname UNUSED, int noerror)
 {
   if (! noerror)
     O (fatal, flocp,
diff --git a/loadapi.c b/loadapi.c
index 4c1f6cf..14b75f8 100644
--- a/loadapi.c
+++ b/loadapi.c
@@ -37,17 +37,29 @@
 /* Evaluate a buffer as make syntax.
    Ideally eval_buffer() will take const char *, but not yet.  */
 void
-gmk_eval (const char *buffer, const gmk_floc *floc)
+gmk_eval (const char *buffer, const gmk_floc *gfloc)
 {
   /* Preserve existing variable buffer context.  */
   char *pbuf;
   unsigned int plen;
   char *s;
+  floc fl;
+  floc *flp;
+
+  if (gfloc)
+    {
+      fl.filenm = gfloc->filenm;
+      fl.lineno = gfloc->lineno;
+      fl.offset = 0;
+      flp = &fl;
+    }
+  else
+    flp = NULL;
 
   install_variable_buffer (&pbuf, &plen);
 
   s = xstrdup (buffer);
-  eval_buffer (s, floc);
+  eval_buffer (s, flp);
   free (s);
 
   restore_variable_buffer (pbuf, plen);
diff --git a/makeint.h b/makeint.h
index ad0a511..8f718eb 100644
--- a/makeint.h
+++ b/makeint.h
@@ -452,7 +452,7 @@
 
 #include <glob.h>
 
-#define NILF ((gmk_floc *)0)
+#define NILF ((floc *)0)
 
 #define CSTRLEN(_s)           (sizeof (_s)-1)
 #define STRING_SIZE_TUPLE(_s) (_s), CSTRLEN(_s)
@@ -468,13 +468,22 @@
 #endif
 
 
+
+/* Specify the location of elements read from makefiles.  */
+typedef struct
+  {
+    const char *filenm;
+    unsigned long lineno;
+    unsigned long offset;
+  } floc;
+
 const char *concat (unsigned int, ...);
 void message (int prefix, size_t length, const char *fmt, ...)
               __attribute__ ((__format__ (__printf__, 3, 4)));
-void error (const gmk_floc *flocp, size_t length, const char *fmt, ...)
+void error (const floc *flocp, size_t length, const char *fmt, ...)
             __attribute__ ((__format__ (__printf__, 3, 4)));
-void fatal (const gmk_floc *flocp, size_t length, const char *fmt, ...)
-                   __attribute__ ((noreturn, __format__ (__printf__, 3, 4)));
+void fatal (const floc *flocp, size_t length, const char *fmt, ...)
+            __attribute__ ((noreturn, __format__ (__printf__, 3, 4)));
 
 #define O(_t,_a,_f)           _t((_a), 0, (_f))
 #define OS(_t,_a,_f,_s)       _t((_a), strlen (_s), (_f), (_s))
@@ -569,11 +578,11 @@
 const char *strcache_add_len (const char *str, unsigned int len);
 
 /* Guile support  */
-int guile_gmake_setup (const gmk_floc *flocp);
+int guile_gmake_setup (const floc *flocp);
 
 /* Loadable object support.  Sets to the strcached name of the loaded file.  */
-typedef int (*load_func_t)(const gmk_floc *flocp);
-int load_file (const gmk_floc *flocp, const char **filename, int noerror);
+typedef int (*load_func_t)(const floc *flocp);
+int load_file (const floc *flocp, const char **filename, int noerror);
 void unload_file (const char *name);
 
 /* We omit these declarations on non-POSIX systems which define _POSIX_VERSION,
@@ -627,8 +636,8 @@
 /* Non-GNU systems may not declare this in unistd.h.  */
 extern char **environ;
 
-extern const gmk_floc *reading_file;
-extern const gmk_floc **expanding_var;
+extern const floc *reading_file;
+extern const floc **expanding_var;
 
 extern unsigned short stopchar_map[];
 
diff --git a/output.c b/output.c
index 0a0420c..65182c4 100644
--- a/output.c
+++ b/output.c
@@ -640,7 +640,7 @@
 /* Print an error message.  */
 
 void
-error (const gmk_floc *flocp, size_t len, const char *fmt, ...)
+error (const floc *flocp, size_t len, const char *fmt, ...)
 {
   va_list args;
   char *p;
@@ -671,7 +671,7 @@
 /* Print an error message and exit.  */
 
 void
-fatal (const gmk_floc *flocp, size_t len, const char *fmt, ...)
+fatal (const floc *flocp, size_t len, const char *fmt, ...)
 {
   va_list args;
   const char *stop = _(".  Stop.\n");
diff --git a/read.c b/read.c
index c6eb5c8..5de5a48 100644
--- a/read.c
+++ b/read.c
@@ -52,7 +52,7 @@
     char *bufstart;     /* Start of the entire buffer.  */
     unsigned int size;  /* Malloc'd size of buffer. */
     FILE *fp;           /* File, or NULL if this is an internal buffer.  */
-    gmk_floc floc;   /* Info on the file in fp (if any).  */
+    floc floc;          /* Info on the file in fp (if any).  */
   };
 
 /* Track the modifiers we can have on variable assignments */
@@ -126,7 +126,7 @@
 /* The filename and pointer to line number of the
    makefile currently being read in.  */
 
-const gmk_floc *reading_file = 0;
+const floc *reading_file = 0;
 
 /* The chain of files read by read_all_makefiles.  */
 
@@ -140,16 +140,16 @@
                          struct ebuffer *ebuf);
 static struct variable *do_define (char *name, enum variable_origin origin,
                                    struct ebuffer *ebuf);
-static int conditional_line (char *line, int len, const gmk_floc *flocp);
+static int conditional_line (char *line, int len, const floc *flocp);
 static void record_files (struct nameseq *filenames, const char *pattern,
                           const char *pattern_percent, char *depstr,
                           unsigned int cmds_started, char *commands,
                           unsigned int commands_idx, int two_colon,
-                          char prefix, const gmk_floc *flocp);
+                          char prefix, const floc *flocp);
 static void record_target_var (struct nameseq *filenames, char *defn,
                                enum variable_origin origin,
                                struct vmodifiers *vmod,
-                               const gmk_floc *flocp);
+                               const floc *flocp);
 static enum make_word_type get_next_mword (char *buffer, char *delim,
                                            char **startp, unsigned int *length);
 static void remove_comments (char *line);
@@ -316,7 +316,7 @@
 {
   struct goaldep *deps;
   struct ebuffer ebuf;
-  const gmk_floc *curfile;
+  const floc *curfile;
   char *expanded = 0;
   int makefile_errno;
 
@@ -448,12 +448,12 @@
 }
 
 void
-eval_buffer (char *buffer, const gmk_floc *floc)
+eval_buffer (char *buffer, const floc *flocp)
 {
   struct ebuffer ebuf;
   struct conditionals *saved;
   struct conditionals new;
-  const gmk_floc *curfile;
+  const floc *curfile;
 
   /* Evaluate the buffer */
 
@@ -461,8 +461,8 @@
   ebuf.buffer = ebuf.bufnext = ebuf.bufstart = buffer;
   ebuf.fp = NULL;
 
-  if (floc)
-    ebuf.floc = *floc;
+  if (flocp)
+    ebuf.floc = *flocp;
   else if (reading_file)
     ebuf.floc = *reading_file;
   else
@@ -583,8 +583,8 @@
   char prefix = cmd_prefix;
   const char *pattern = 0;
   const char *pattern_percent;
-  gmk_floc *fstart;
-  gmk_floc fi;
+  floc *fstart;
+  floc fi;
 
 #define record_waiting_files()                                                \
   do                                                                          \
@@ -1444,7 +1444,7 @@
 {
   struct variable *v;
   struct variable var;
-  gmk_floc defstart;
+  floc defstart;
   int nlevels = 1;
   unsigned int length = 100;
   char *definition = xmalloc (length);
@@ -1560,7 +1560,7 @@
    1 if following text should be ignored.  */
 
 static int
-conditional_line (char *line, int len, const gmk_floc *flocp)
+conditional_line (char *line, int len, const floc *flocp)
 {
   const char *cmdname;
   enum { c_ifdef, c_ifndef, c_ifeq, c_ifneq, c_else, c_endif } cmdtype;
@@ -1831,7 +1831,7 @@
 static void
 record_target_var (struct nameseq *filenames, char *defn,
                    enum variable_origin origin, struct vmodifiers *vmod,
-                   const gmk_floc *flocp)
+                   const floc *flocp)
 {
   struct nameseq *nextf;
   struct variable_set_list *global;
@@ -1935,7 +1935,7 @@
               const char *pattern_percent, char *depstr,
               unsigned int cmds_started, char *commands,
               unsigned int commands_idx, int two_colon,
-              char prefix, const gmk_floc *flocp)
+              char prefix, const floc *flocp)
 {
   struct commands *cmds;
   struct dep *deps;
diff --git a/variable.c b/variable.c
index 26baabd..36ab1f4 100644
--- a/variable.c
+++ b/variable.c
@@ -196,7 +196,7 @@
 define_variable_in_set (const char *name, unsigned int length,
                         const char *value, enum variable_origin origin,
                         int recursive, struct variable_set *set,
-                        const gmk_floc *flocp)
+                        const floc *flocp)
 {
   struct variable *v;
   struct variable **var_slot;
@@ -1157,7 +1157,7 @@
    See the try_variable_definition() function for details on the parameters. */
 
 struct variable *
-do_variable_definition (const gmk_floc *flocp, const char *varname,
+do_variable_definition (const floc *flocp, const char *varname,
                         const char *value, enum variable_origin origin,
                         enum variable_flavor flavor, int target_var)
 {
@@ -1592,7 +1592,7 @@
    returned.  */
 
 struct variable *
-try_variable_definition (const gmk_floc *flocp, const char *line,
+try_variable_definition (const floc *flocp, const char *line,
                          enum variable_origin origin, int target_var)
 {
   struct variable v;
diff --git a/variable.h b/variable.h
index 583a65f..fe1d609 100644
--- a/variable.h
+++ b/variable.h
@@ -51,7 +51,7 @@
   {
     char *name;                 /* Variable name.  */
     char *value;                /* Variable value.  */
-    gmk_floc fileinfo;          /* Where the variable was defined.  */
+    floc fileinfo;              /* Where the variable was defined.  */
     int length;                 /* strlen (name) */
     unsigned int recursive:1;   /* Gets recursively re-evaluated.  */
     unsigned int append:1;      /* Nonzero if an appending target-specific
@@ -152,7 +152,7 @@
 void print_target_variables (const struct file *file);
 void merge_variable_set_lists (struct variable_set_list **to_list,
                                struct variable_set_list *from_list);
-struct variable *do_variable_definition (const gmk_floc *flocp,
+struct variable *do_variable_definition (const floc *flocp,
                                          const char *name, const char *value,
                                          enum variable_origin origin,
                                          enum variable_flavor flavor,
@@ -160,12 +160,12 @@
 char *parse_variable_definition (const char *line,
                                  struct variable *v);
 struct variable *assign_variable_definition (struct variable *v, const char *line);
-struct variable *try_variable_definition (const gmk_floc *flocp, const char *line,
+struct variable *try_variable_definition (const floc *flocp, const char *line,
                                           enum variable_origin origin,
                                           int target_var);
 void init_hash_global_variable_set (void);
 void hash_init_function_table (void);
-void define_new_function(const gmk_floc *flocp, const char *name,
+void define_new_function(const floc *flocp, const char *name,
                          unsigned int min, unsigned int max, unsigned int flags,
                          gmk_func_ptr func);
 struct variable *lookup_variable (const char *name, unsigned int length);
@@ -177,7 +177,7 @@
                                          enum variable_origin origin,
                                          int recursive,
                                          struct variable_set *set,
-                                         const gmk_floc *flocp);
+                                         const floc *flocp);
 
 /* Define a variable in the current variable set.  */
 
