~ubuntu-branches/ubuntu/trusty/grub2/trusty-updates

« back to all changes in this revision

Viewing changes to commands/cat.c

Tags: upstream-1.99~20101122
ImportĀ upstreamĀ versionĀ 1.99~20101122

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/* cat.c - command to show the contents of a file  */
2
 
/*
3
 
 *  GRUB  --  GRand Unified Bootloader
4
 
 *  Copyright (C) 2003,2005,2007,2008  Free Software Foundation, Inc.
5
 
 *
6
 
 *  GRUB is free software: you can redistribute it and/or modify
7
 
 *  it under the terms of the GNU General Public License as published by
8
 
 *  the Free Software Foundation, either version 3 of the License, or
9
 
 *  (at your option) any later version.
10
 
 *
11
 
 *  GRUB is distributed in the hope that it will be useful,
12
 
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 
 *  GNU General Public License for more details.
15
 
 *
16
 
 *  You should have received a copy of the GNU General Public License
17
 
 *  along with GRUB.  If not, see <http://www.gnu.org/licenses/>.
18
 
 */
19
 
 
20
 
#include <grub/dl.h>
21
 
#include <grub/file.h>
22
 
#include <grub/disk.h>
23
 
#include <grub/term.h>
24
 
#include <grub/misc.h>
25
 
#include <grub/gzio.h>
26
 
#include <grub/command.h>
27
 
#include <grub/i18n.h>
28
 
 
29
 
static grub_err_t
30
 
grub_cmd_cat (grub_command_t cmd __attribute__ ((unused)),
31
 
              int argc, char **args)
32
 
 
33
 
{
34
 
  grub_file_t file;
35
 
  char buf[GRUB_DISK_SECTOR_SIZE];
36
 
  grub_ssize_t size;
37
 
  int key = 0;
38
 
 
39
 
  if (argc != 1)
40
 
    return grub_error (GRUB_ERR_BAD_ARGUMENT, "file name required");
41
 
 
42
 
  file = grub_gzfile_open (args[0], 1);
43
 
  if (! file)
44
 
    return 0;
45
 
 
46
 
  while ((size = grub_file_read (file, buf, sizeof (buf))) > 0
47
 
         && key != GRUB_TERM_ESC)
48
 
    {
49
 
      int i;
50
 
 
51
 
      for (i = 0; i < size; i++)
52
 
        {
53
 
          unsigned char c = buf[i];
54
 
 
55
 
          if ((grub_isprint (c) || grub_isspace (c)) && c != '\r')
56
 
            grub_putchar (c);
57
 
          else
58
 
            {
59
 
              grub_setcolorstate (GRUB_TERM_COLOR_HIGHLIGHT);
60
 
              grub_printf ("<%x>", (int) c);
61
 
              grub_setcolorstate (GRUB_TERM_COLOR_STANDARD);
62
 
            }
63
 
        }
64
 
 
65
 
      while (grub_checkkey () >= 0 &&
66
 
             (key = GRUB_TERM_ASCII_CHAR (grub_getkey ())) != GRUB_TERM_ESC)
67
 
        ;
68
 
    }
69
 
 
70
 
  grub_putchar ('\n');
71
 
  grub_refresh ();
72
 
  grub_file_close (file);
73
 
 
74
 
  return 0;
75
 
}
76
 
 
77
 
static grub_command_t cmd;
78
 
 
79
 
GRUB_MOD_INIT(cat)
80
 
{
81
 
  cmd = grub_register_command_p1 ("cat", grub_cmd_cat,
82
 
                                  N_("FILE"), N_("Show the contents of a file."));
83
 
}
84
 
 
85
 
GRUB_MOD_FINI(cat)
86
 
{
87
 
  grub_unregister_command (cmd);
88
 
}