(cmd_match_files) Fix memory leak on `by' and on `vfm_source'.
[pspp] / src / file-handle.q
index 9596c0d2cb602780419db43140014691f798fe13..6b155027f68b196778a46c89b84dcee58b92caf1 100644 (file)
@@ -73,7 +73,7 @@ get_handle_with_name (const char *handle_name)
   struct file_handle *iter;
 
   for (iter = file_handles; iter != NULL; iter = iter->next)
-    if (!strcmp (handle_name, iter->name))
+    if (!strcasecmp (handle_name, iter->name))
       return iter;
   return NULL;
 }
@@ -109,22 +109,21 @@ get_handle_for_filename (const char *filename)
 int
 cmd_file_handle (void)
 {
-  char handle_name[9];
+  char handle_name[LONG_NAME_LEN + 1];
 
   struct cmd_file_handle cmd;
   struct file_handle *handle;
 
   if (!lex_force_id ())
     return CMD_FAILURE;
-  strcpy (handle_name, tokid);
+  str_copy_trunc (handle_name, sizeof handle_name, tokid);
 
   handle = get_handle_with_name (handle_name);
   if (handle != NULL)
     {
-      msg (SE, _("File handle %s already refers to "
-                "file %s.  File handle cannot be redefined within a "
-                 "session."),
-          tokid, handle->filename);
+      msg (SE, _("File handle %s already refers to file %s.  "
+                 "File handles cannot be redefined within a session."),
+          handle_name, handle->filename);
       return CMD_FAILURE;
     }
 
@@ -236,7 +235,7 @@ mode_name (const char *mode)
 }
 
 
-/* Tries to open FILE with the given TYPE and MODE.
+/* Tries to open handle H with the given TYPE and MODE.
 
    TYPE is the sort of file, e.g. "system file".  Only one given
    type of access is allowed on a given file handle at once.
@@ -392,8 +391,7 @@ handle_get_mode (const struct file_handle *handle)
   return handle->mode;
 }
 
-/* Returns the width of a logical record on HANDLE.  Applicable
-   only to MODE_BINARY files.  */
+/* Returns the width of a logical record on HANDLE. */
 size_t
 handle_get_record_width (const struct file_handle *handle)
 {