* grub-core/fs/fat.c: Display the filename when file is not found.
        * grub-core/fs/fshelp.c: Likewise.
        * grub-core/fs/hfs.c: Likewise.
        * grub-core/fs/jfs.c: Likewise.
        * grub-core/fs/minix.c: Likewise.
        * grub-core/fs/ufs.c: Likewise.
        * grub-core/fs/btrfs.c: Likewise.
        * grub-core/commands/i386/pc/play.c: Likewise.
---
 ChangeLog.filename-file-not-found |   10 ++++++++++
 grub-core/commands/i386/pc/play.c |    4 ++--
 grub-core/fs/btrfs.c              |   32 ++++++++++++++++++++++++++++----
 grub-core/fs/fat.c                |   11 +++++++++--
 grub-core/fs/fshelp.c             |    2 +-
 grub-core/fs/hfs.c                |    2 +-
 grub-core/fs/jfs.c                |    2 +-
 grub-core/fs/minix.c              |    2 +-
 grub-core/fs/ufs.c                |    2 +-
 9 files changed, 54 insertions(+), 13 deletions(-)
 create mode 100644 ChangeLog.filename-file-not-found
diff --git a/ChangeLog.filename-file-not-found 
b/ChangeLog.filename-file-not-found
new file mode 100644
index 0000000..c886345
--- /dev/null
+++ b/ChangeLog.filename-file-not-found
@@ -0,0 +1,10 @@
+       Display the path of the file when file is not found
+
+       * grub-core/fs/fat.c: Display the filename when file is not found.
+       * grub-core/fs/fshelp.c: Likewise.
+       * grub-core/fs/hfs.c: Likewise.
+       * grub-core/fs/jfs.c: Likewise.
+       * grub-core/fs/minix.c: Likewise.
+       * grub-core/fs/ufs.c: Likewise.
+       * grub-core/fs/btrfs.c: Likewise.
+       * grub-core/commands/i386/pc/play.c: Likewise.
diff --git a/grub-core/commands/i386/pc/play.c 
b/grub-core/commands/i386/pc/play.c
index 57980eb..1adf296 100644
--- a/grub-core/commands/i386/pc/play.c
+++ b/grub-core/commands/i386/pc/play.c
@@ -192,7 +192,7 @@ grub_cmd_play (grub_command_t cmd __attribute__ ((unused)),
       file = grub_file_open (args[0]);
 
       if (! file)
-        return grub_error (GRUB_ERR_FILE_NOT_FOUND, "file not found");
+        return grub_error (GRUB_ERR_FILE_NOT_FOUND, "file `%s' not found", 
args[0]);
 
       if (grub_file_read (file, &tempo, sizeof (tempo)) != sizeof (tempo))
         {
@@ -227,7 +227,7 @@ grub_cmd_play (grub_command_t cmd __attribute__ ((unused)),
 
       if (*end)
         /* Was not a number either, assume it was supposed to be a file name.  
*/
-        return grub_error (GRUB_ERR_FILE_NOT_FOUND, "file not found");
+        return grub_error (GRUB_ERR_FILE_NOT_FOUND, "file `%s' not found", 
args[0]);
 
       grub_dprintf ("play","tempo = %d\n", tempo);
 
diff --git a/grub-core/fs/btrfs.c b/grub-core/fs/btrfs.c
index 533529e..6470c98 100644
--- a/grub-core/fs/btrfs.c
+++ b/grub-core/fs/btrfs.c
@@ -1054,6 +1054,7 @@ find_path (struct grub_btrfs_data *data,
   const char *ctoken;
   grub_size_t ctokenlen;
   char *path_alloc = NULL;
+  char *origpath = NULL;
   unsigned symlinks_max = 32;
 
   *type = GRUB_BTRFS_DIR_ITEM_TYPE_DIRECTORY;
@@ -1062,6 +1063,9 @@ find_path (struct grub_btrfs_data *data,
   key->type = GRUB_BTRFS_ITEM_TYPE_DIR_ITEM;
   key->offset = 0;
   skip_default = 1;
+  origpath = grub_strdup (path);
+  if (!origpath)
+    return grub_errno;
 
   while (1)
     {
@@ -1086,6 +1090,7 @@ find_path (struct grub_btrfs_data *data,
       if (*type != GRUB_BTRFS_DIR_ITEM_TYPE_DIRECTORY)
        {
          grub_free (path_alloc);
+         grub_free (origpath);
          return grub_error (GRUB_ERR_BAD_FILE_TYPE, "not a directory");
        }
 
@@ -1098,13 +1103,16 @@ find_path (struct grub_btrfs_data *data,
        {
          grub_free (direl);
          grub_free (path_alloc);
+         grub_free (origpath);
          return err;
        }
       if (key_cmp (key, &key_out) != 0)
        {
          grub_free (direl);
          grub_free (path_alloc);
-         return grub_error (GRUB_ERR_FILE_NOT_FOUND, "file not found");
+         err = grub_error (GRUB_ERR_FILE_NOT_FOUND, "file `%s' not found", 
origpath);
+         grub_free (origpath);
+         return err;
        }
 
       struct grub_btrfs_dir_item *cdirel;
@@ -1116,6 +1124,7 @@ find_path (struct grub_btrfs_data *data,
          if (!direl)
            {
              grub_free (path_alloc);
+             grub_free (origpath);
              return grub_errno;
            }
        }
@@ -1125,6 +1134,7 @@ find_path (struct grub_btrfs_data *data,
        {
          grub_free (direl);
          grub_free (path_alloc);
+         grub_free (origpath);
          return err;
        }
 
@@ -1144,7 +1154,9 @@ find_path (struct grub_btrfs_data *data,
        {
          grub_free (direl);
          grub_free (path_alloc);
-         return grub_error (GRUB_ERR_FILE_NOT_FOUND, "file not found");
+         err = grub_error (GRUB_ERR_FILE_NOT_FOUND, "file `%s' not found", 
origpath);
+         grub_free (origpath);
+         return err;
        }
 
       if (!skip_default)
@@ -1158,6 +1170,7 @@ find_path (struct grub_btrfs_data *data,
            {
              grub_free (direl);
              grub_free (path_alloc);
+             grub_free (origpath);
              return grub_error (GRUB_ERR_SYMLINK_LOOP,
                                 "too deep nesting of symlinks");
            }
@@ -1168,6 +1181,7 @@ find_path (struct grub_btrfs_data *data,
            {
              grub_free (direl);
              grub_free (path_alloc);
+             grub_free (origpath);
              return err;
            }
          tmp = grub_malloc (grub_le_to_cpu64 (inode.size)
@@ -1176,6 +1190,7 @@ find_path (struct grub_btrfs_data *data,
            {
              grub_free (direl);
              grub_free (path_alloc);
+             grub_free (origpath);
              return grub_errno;
            }
 
@@ -1186,12 +1201,14 @@ find_path (struct grub_btrfs_data *data,
            {
              grub_free (direl);
              grub_free (path_alloc);
+             grub_free (origpath);
              grub_free (tmp);
              return grub_errno;
            }
          grub_memcpy (tmp + grub_le_to_cpu64 (inode.size), path, 
                       grub_strlen (path) + 1);
          grub_free (path_alloc);
+         grub_free (origpath);
          path = path_alloc = tmp;
          if (path[0] == '/')
            {
@@ -1218,6 +1235,7 @@ find_path (struct grub_btrfs_data *data,
              {
                grub_free (direl);
                grub_free (path_alloc);
+               grub_free (origpath);
                return err;
              }
            if (cdirel->key.object_id != key_out.object_id
@@ -1225,7 +1243,9 @@ find_path (struct grub_btrfs_data *data,
              {
                grub_free (direl);
                grub_free (path_alloc);
-               return grub_error (GRUB_ERR_FILE_NOT_FOUND, "file not found");
+               err = grub_error (GRUB_ERR_FILE_NOT_FOUND, "file `%s' not 
found", origpath);
+               grub_free (origpath);
+               return err;
              }
            err = grub_btrfs_read_logical (data, elemaddr,
                                           &ri, sizeof (ri));
@@ -1233,6 +1253,7 @@ find_path (struct grub_btrfs_data *data,
              {
                grub_free (direl);
                grub_free (path_alloc);
+               grub_free (origpath);
                return err;
              }
            key->type = GRUB_BTRFS_ITEM_TYPE_DIR_ITEM;
@@ -1246,7 +1267,9 @@ find_path (struct grub_btrfs_data *data,
            {
              grub_free (direl);
              grub_free (path_alloc);
-             return grub_error (GRUB_ERR_FILE_NOT_FOUND, "file not found");
+             err = grub_error (GRUB_ERR_FILE_NOT_FOUND, "file `%s' not found", 
origpath);
+             grub_free (origpath);
+             return err;
            }
          *key = cdirel->key;
          if (*type == GRUB_BTRFS_DIR_ITEM_TYPE_DIRECTORY)
@@ -1254,6 +1277,7 @@ find_path (struct grub_btrfs_data *data,
          break;
        default:
          grub_free (path_alloc);
+         grub_free (origpath);
          grub_free (direl);
          return grub_error (GRUB_ERR_BAD_FS, "unrecognised object type 0x%x", 
                             cdirel->key.type);
diff --git a/grub-core/fs/fat.c b/grub-core/fs/fat.c
index f617bb0..c78d3fb 100644
--- a/grub-core/fs/fat.c
+++ b/grub-core/fs/fat.c
@@ -565,6 +565,7 @@ grub_fat_find_dir (grub_disk_t disk, struct grub_fat_data 
*data,
                                const struct grub_dirhook_info *info))
 {
   char *dirname, *dirp;
+  char *origpath = NULL;
   int call_hook;
   int found = 0;
 
@@ -605,6 +606,10 @@ grub_fat_find_dir (grub_disk_t disk, struct grub_fat_data 
*data,
       return 0;
     }
 
+  origpath = grub_strdup (path);
+  if (!origpath)
+    return 0;
+
   /* Extract a directory name.  */
   while (*path == '/')
     path++;
@@ -616,7 +621,7 @@ grub_fat_find_dir (grub_disk_t disk, struct grub_fat_data 
*data,
 
       dirname = grub_malloc (len + 1);
       if (! dirname)
-       return 0;
+       goto fail;
 
       grub_memcpy (dirname, path, len);
       dirname[len] = '\0';
@@ -629,9 +634,11 @@ grub_fat_find_dir (grub_disk_t disk, struct grub_fat_data 
*data,
 
   grub_fat_iterate_dir (disk, data, iter_hook);
   if (grub_errno == GRUB_ERR_NONE && ! found && !call_hook)
-    grub_error (GRUB_ERR_FILE_NOT_FOUND, "file not found");
+    grub_error (GRUB_ERR_FILE_NOT_FOUND, "file `%s' not found", origpath);
 
+ fail:
   grub_free (dirname);
+  grub_free (origpath);
 
   return found ? dirp : 0;
 }
diff --git a/grub-core/fs/fshelp.c b/grub-core/fs/fshelp.c
index f879885..2ff78c4 100644
--- a/grub-core/fs/fshelp.c
+++ b/grub-core/fs/fshelp.c
@@ -197,7 +197,7 @@ grub_fshelp_find_file (const char *path, grub_fshelp_node_t 
rootnode,
          name = next;
        }
 
-      return grub_error (GRUB_ERR_FILE_NOT_FOUND, "file not found");
+      return grub_error (GRUB_ERR_FILE_NOT_FOUND, "file `%s' not found", path);
     }
 
   if (!path || path[0] != '/')
diff --git a/grub-core/fs/hfs.c b/grub-core/fs/hfs.c
index cb7679e..6f27c69 100644
--- a/grub-core/fs/hfs.c
+++ b/grub-core/fs/hfs.c
@@ -921,7 +921,7 @@ grub_hfs_find_dir (struct grub_hfs_data *data, const char 
*path,
       if (! grub_hfs_find_node (data, (char *) &key, data->cat_root,
                                0, (char *) &fdrec.frec, sizeof (fdrec.frec)))
        {
-         grub_error (GRUB_ERR_FILE_NOT_FOUND, "file not found");
+         grub_error (GRUB_ERR_FILE_NOT_FOUND, "file `%s' not found", origpath);
          goto fail;
        }
 
diff --git a/grub-core/fs/jfs.c b/grub-core/fs/jfs.c
index c131169..36ec5fd 100644
--- a/grub-core/fs/jfs.c
+++ b/grub-core/fs/jfs.c
@@ -699,7 +699,7 @@ grub_jfs_find_file (struct grub_jfs_data *data, const char 
*path)
     }
 
   grub_jfs_closedir (diro);
-  grub_error (GRUB_ERR_FILE_NOT_FOUND, "file not found");
+  grub_error (GRUB_ERR_FILE_NOT_FOUND, "file `%s' not found", path);
   return grub_errno;
 }
 
diff --git a/grub-core/fs/minix.c b/grub-core/fs/minix.c
index 64a64cc..055f890 100644
--- a/grub-core/fs/minix.c
+++ b/grub-core/fs/minix.c
@@ -424,7 +424,7 @@ grub_minix_find_file (struct grub_minix_data *data, const 
char *path)
       pos += sizeof (ino) + data->filename_size;
     } while (pos < GRUB_MINIX_INODE_SIZE (data));
 
-  grub_error (GRUB_ERR_FILE_NOT_FOUND, "file not found");
+  grub_error (GRUB_ERR_FILE_NOT_FOUND, "file `%s' not found", path);
   return grub_errno;
 }
 
diff --git a/grub-core/fs/ufs.c b/grub-core/fs/ufs.c
index 86fe8af..0f4ea00 100644
--- a/grub-core/fs/ufs.c
+++ b/grub-core/fs/ufs.c
@@ -514,7 +514,7 @@ grub_ufs_find_file (struct grub_ufs_data *data, const char 
*path)
       pos += grub_le_to_cpu16 (dirent.direntlen);
     } while (pos < INODE_SIZE (data));
 
-  grub_error (GRUB_ERR_FILE_NOT_FOUND, "file not found");
+  grub_error (GRUB_ERR_FILE_NOT_FOUND, "file `%s' not found", path);
   return grub_errno;
 }
 
_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/grub-devel

Reply via email to