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

« back to all changes in this revision

Viewing changes to commands/crc.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
 
/* crc.c - command to calculate the crc32 checksum of a file  */
2
 
/*
3
 
 *  GRUB  --  GRand Unified Bootloader
4
 
 *  Copyright (C) 2008,2010  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/disk.h>
22
 
#include <grub/file.h>
23
 
#include <grub/misc.h>
24
 
#include <grub/lib/crc.h>
25
 
#include <grub/command.h>
26
 
#include <grub/i18n.h>
27
 
 
28
 
static grub_err_t
29
 
grub_cmd_crc (grub_command_t cmd __attribute__ ((unused)),
30
 
              int argc, char **args)
31
 
 
32
 
{
33
 
  grub_file_t file;
34
 
  char buf[GRUB_DISK_SECTOR_SIZE];
35
 
  grub_ssize_t size;
36
 
  grub_uint32_t crc;
37
 
 
38
 
  if (argc != 1)
39
 
    return grub_error (GRUB_ERR_BAD_ARGUMENT, "file name required");
40
 
 
41
 
  file = grub_file_open (args[0]);
42
 
  if (! file)
43
 
    return 0;
44
 
 
45
 
  crc = 0;
46
 
  while ((size = grub_file_read (file, buf, sizeof (buf))) > 0)
47
 
    crc = grub_getcrc32 (crc, buf, size);
48
 
 
49
 
  if (grub_errno)
50
 
    goto fail;
51
 
 
52
 
  grub_printf ("%08x\n", crc);
53
 
 
54
 
 fail:
55
 
  grub_file_close (file);
56
 
  return 0;
57
 
}
58
 
 
59
 
static grub_command_t cmd;
60
 
 
61
 
GRUB_MOD_INIT(crc)
62
 
{
63
 
  cmd = grub_register_command ("crc", grub_cmd_crc,
64
 
                               N_("FILE"),
65
 
                               N_("Calculate the crc32 checksum of a file."));
66
 
}
67
 
 
68
 
GRUB_MOD_FINI(crc)
69
 
{
70
 
  grub_unregister_command (cmd);
71
 
}