Coverage Report

Created: 2026-03-11 06:21

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/u-boot/cmd/cat.c
Line
Count
Source
1
// SPDX-License-Identifier: GPL-2.0+
2
/*
3
 * Copyright 2022
4
 * Roger Knecht <rknecht@pm.de>
5
 */
6
7
#include <command.h>
8
#include <fs.h>
9
#include <malloc.h>
10
#include <mapmem.h>
11
#include <linux/errno.h>
12
13
static int do_cat(struct cmd_tbl *cmdtp, int flag, int argc,
14
      char *const argv[])
15
0
{
16
0
  char *ifname;
17
0
  char *dev;
18
0
  char *file;
19
0
  char *buffer;
20
0
  ulong file_size;
21
0
  int ret;
22
23
0
  if (argc < 4)
24
0
    return CMD_RET_USAGE;
25
26
0
  ifname = argv[1];
27
0
  dev = argv[2];
28
0
  file = argv[3];
29
30
0
  ret = fs_load_alloc(ifname, dev, file, 0, 0, (void **)&buffer,
31
0
          &file_size);
32
33
  // check file exists
34
0
  switch (ret) {
35
0
  case 0:
36
0
    break;
37
0
  case -ENOMEDIUM:
38
0
    return CMD_RET_FAILURE;
39
0
  case -ENOENT:
40
0
    log_err("File does not exist: ifname=%s dev=%s file=%s\n", ifname, dev, file);
41
0
    return CMD_RET_FAILURE;
42
0
  case -E2BIG:
43
0
    log_err("File is too large: ifname=%s dev=%s file=%s\n", ifname, dev, file);
44
0
    return CMD_RET_FAILURE;
45
0
  case -ENOMEM:
46
0
    log_err("Not enough memory: ifname=%s dev=%s file=%s\n", ifname, dev, file);
47
0
    return CMD_RET_FAILURE;
48
0
  default:
49
0
  case -EIO:
50
0
    log_err("File-read failed: ifname=%s dev=%s file=%s\n", ifname, dev, file);
51
0
    return CMD_RET_FAILURE;
52
0
  }
53
54
  // print file content
55
0
  buffer[file_size] = '\0';
56
0
  puts(buffer);
57
58
0
  free(buffer);
59
60
0
  return 0;
61
0
}
62
63
U_BOOT_LONGHELP(cat,
64
  "<interface> <dev[:part]> <file>\n"
65
  "  - Print file from 'dev' on 'interface' to standard output\n");
66
67
U_BOOT_CMD(cat, 4, 1, do_cat,
68
     "Print file to standard output",
69
     cat_help_text
70
);