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