Blame view

common/cmd_part.c 1.83 KB
5cf41dccf   Stephen Warren   cmd_part: add par...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
  /*
   * Copyright (c) 2012, NVIDIA CORPORATION.  All rights reserved.
   *
   * made from cmd_ext2, which was:
   *
   * (C) Copyright 2004
   * esd gmbh <www.esd-electronics.com>
   * Reinhard Arlt <reinhard.arlt@esd-electronics.com>
   *
   * made from cmd_reiserfs by
   *
   * (C) Copyright 2003 - 2004
   * Sysgo Real-Time Solutions, AG <www.elinos.com>
   * Pavel Bartusek <pba@sysgo.com>
   *
1a4596601   Wolfgang Denk   Add GPL-2.0+ SPDX...
16
   * SPDX-License-Identifier:	GPL-2.0+
5cf41dccf   Stephen Warren   cmd_part: add par...
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
   */
  
  #include <common.h>
  #include <config.h>
  #include <command.h>
  #include <part.h>
  #include <vsprintf.h>
  
  #ifndef CONFIG_PARTITION_UUIDS
  #error CONFIG_PARTITION_UUIDS must be enabled for CONFIG_CMD_PART to be enabled
  #endif
  
  int do_part_uuid(int argc, char * const argv[])
  {
  	int part;
  	block_dev_desc_t *dev_desc;
  	disk_partition_t info;
  
  	if (argc < 2)
  		return CMD_RET_USAGE;
  	if (argc > 3)
  		return CMD_RET_USAGE;
  
  	part = get_device_and_partition(argv[0], argv[1], &dev_desc, &info, 0);
  	if (part < 0)
  		return 1;
  
  	if (argc > 2)
  		setenv(argv[2], info.uuid);
  	else
  		printf("%s
  ", info.uuid);
  
  	return 0;
  }
  
  int do_part_list(int argc, char * const argv[])
  {
  	int ret;
  	block_dev_desc_t *desc;
  
  	if (argc != 2)
  		return CMD_RET_USAGE;
  
  	ret = get_device(argv[0], argv[1], &desc);
  	if (ret < 0)
  		return 1;
  
  	print_part(desc);
  
  	return 0;
  }
  
  int do_part(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
  {
  	if (argc < 2)
  		return CMD_RET_USAGE;
  
  	if (!strcmp(argv[1], "uuid"))
  		return do_part_uuid(argc - 2, argv + 2);
  	else if (!strcmp(argv[1], "list"))
  		return do_part_list(argc - 2, argv + 2);
  
  	return CMD_RET_USAGE;
  }
  
  U_BOOT_CMD(
  	part,	5,	1,	do_part,
  	"disk partition related commands",
92668d68c   Stephen Warren   cmd_part: don't p...
86
87
  	"uuid <interface> <dev>:<part>
  "
5cf41dccf   Stephen Warren   cmd_part: add par...
88
89
90
91
92
93
94
95
96
97
  	"    - print partition UUID
  "
  	"part uuid <interface> <dev>:<part> <varname>
  "
  	"    - set environment variable to partition UUID
  "
  	"part list <interface> <dev>
  "
  	"    - print a device's partition table"
  );