1#!/usr/local/bin/perl 2# Show a form for creating a new slice 3 4use strict; 5use warnings; 6require './bsdfdisk-lib.pl'; 7our (%in, %text, $module_name); 8&ReadParse(); 9 10# Get the disk 11my @disks = &list_disks_partitions(); 12my ($disk) = grep { $_->{'device'} eq $in{'device'} } @disks; 13$disk || &error($text{'disk_egone'}); 14 15&ui_print_header($disk->{'desc'}, $text{'nslice_title'}, ""); 16 17print &ui_form_start("create_slice.cgi", "post"); 18print &ui_hidden("device", $in{'device'}); 19print &ui_table_start($text{'nslice_header'}, undef, 2); 20 21# Slice number (first free) 22my %used = map { $_->{'number'}, $_ } @{$disk->{'slices'}}; 23my $n = 1; 24while($used{$n}) { 25 $n++; 26 } 27print &ui_table_row($text{'nslice_number'}, 28 &ui_textbox("number", $n, 6)); 29 30# Disk size in blocks 31print &ui_table_row($text{'nslice_diskblocks'}, 32 $disk->{'blocks'}); 33 34# Start and end blocks (defaults to last slice+1) 35my ($start, $end) = (63, $disk->{'blocks'}); 36foreach my $s (sort { $a->{'startblock'} cmp $b->{'startblock'} } 37 @{$disk->{'slices'}}) { 38 $start = $s->{'startblock'} + $s->{'blocks'} + 1; 39 } 40print &ui_table_row($text{'nslice_start'}, 41 &ui_textbox("start", $start, 10)); 42print &ui_table_row($text{'nslice_end'}, 43 &ui_textbox("end", $end, 10)); 44 45# Slice type 46print &ui_table_row($text{'nslice_type'}, 47 &ui_select("type", 'a5', 48 [ sort { $a->[1] cmp $b->[1] } 49 map { [ $_, &fdisk::tag_name($_) ] } 50 &fdisk::list_tags() ])); 51 52# Also create partition? 53print &ui_table_row($text{'nslice_makepart'}, 54 &ui_yesno_radio("makepart", 1)); 55 56print &ui_table_end(); 57print &ui_form_end([ [ undef, $text{'create'} ] ]); 58 59&ui_print_footer("edit_disk.cgi?device=$in{'device'}", 60 $text{'disk_return'}); 61