1218799Snwhitehorn/*-
2218799Snwhitehorn * Copyright (c) 2011 Nathan Whitehorn
3218799Snwhitehorn * All rights reserved.
4218799Snwhitehorn *
5218799Snwhitehorn * Redistribution and use in source and binary forms, with or without
6218799Snwhitehorn * modification, are permitted provided that the following conditions
7218799Snwhitehorn * are met:
8218799Snwhitehorn * 1. Redistributions of source code must retain the above copyright
9218799Snwhitehorn *    notice, this list of conditions and the following disclaimer.
10218799Snwhitehorn * 2. Redistributions in binary form must reproduce the above copyright
11218799Snwhitehorn *    notice, this list of conditions and the following disclaimer in the
12218799Snwhitehorn *    documentation and/or other materials provided with the distribution.
13218799Snwhitehorn *
14218799Snwhitehorn * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
15218799Snwhitehorn * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16218799Snwhitehorn * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
17218799Snwhitehorn * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
18218799Snwhitehorn * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19218799Snwhitehorn * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20218799Snwhitehorn * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
21218799Snwhitehorn * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
22218799Snwhitehorn * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
23218799Snwhitehorn * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
24218799Snwhitehorn * SUCH DAMAGE.
25218799Snwhitehorn *
26218799Snwhitehorn * $FreeBSD$
27218799Snwhitehorn */
28218799Snwhitehorn
29218799Snwhitehorn#include <string.h>
30218799Snwhitehorn
31218799Snwhitehorn#include "partedit.h"
32218799Snwhitehorn
33218799Snwhitehornconst char *
34218799Snwhitehorndefault_scheme(void) {
35218799Snwhitehorn	return ("GPT");
36218799Snwhitehorn}
37218799Snwhitehorn
38218799Snwhitehornint
39218799Snwhitehornis_scheme_bootable(const char *part_type) {
40218799Snwhitehorn	if (strcmp(part_type, "BSD") == 0)
41218799Snwhitehorn		return (1);
42218799Snwhitehorn	if (strcmp(part_type, "GPT") == 0)
43218799Snwhitehorn		return (1);
44218799Snwhitehorn	if (strcmp(part_type, "MBR") == 0)
45218799Snwhitehorn		return (1);
46218799Snwhitehorn
47218799Snwhitehorn	return (0);
48218799Snwhitehorn}
49218799Snwhitehorn
50218799Snwhitehornsize_t
51218799Snwhitehornbootpart_size(const char *part_type) {
52218799Snwhitehorn	if (strcmp(part_type, "GPT") == 0)
53218799Snwhitehorn		return (64*1024);
54218799Snwhitehorn
55218799Snwhitehorn	/* No partcode except for GPT */
56218799Snwhitehorn	return (0);
57218799Snwhitehorn}
58218799Snwhitehorn
59218799Snwhitehornconst char *
60218799Snwhitehornbootcode_path(const char *part_type) {
61218799Snwhitehorn	if (strcmp(part_type, "GPT") == 0)
62218799Snwhitehorn		return ("/boot/pmbr");
63218799Snwhitehorn	if (strcmp(part_type, "MBR") == 0)
64218799Snwhitehorn		return ("/boot/mbr");
65218799Snwhitehorn	if (strcmp(part_type, "BSD") == 0)
66218799Snwhitehorn		return ("/boot/boot");
67218799Snwhitehorn
68218799Snwhitehorn	return (NULL);
69218799Snwhitehorn}
70218799Snwhitehorn
71218799Snwhitehornconst char *
72218799Snwhitehornpartcode_path(const char *part_type) {
73218799Snwhitehorn	if (strcmp(part_type, "GPT") == 0)
74218799Snwhitehorn		return ("/boot/gptboot");
75218799Snwhitehorn
76218799Snwhitehorn	/* No partcode except for GPT */
77218799Snwhitehorn	return (NULL);
78218799Snwhitehorn}
79218799Snwhitehorn
80