mirror of
https://github.com/softwarejanitor/ProDOS.git
synced 2025-05-17 20:38:12 +00:00
Added proformat and proundelete
This commit is contained in:
parent
0d614832b3
commit
ef3ac40e6e
56
ProDOS.pm
56
ProDOS.pm
@ -1988,7 +1988,18 @@ sub write_file {
|
|||||||
|
|
||||||
print "pofile=$pofile filename=$filename mode=$mode conv=$conv apple_filename=$apple_filename\n" if $debug;
|
print "pofile=$pofile filename=$filename mode=$mode conv=$conv apple_filename=$apple_filename\n" if $debug;
|
||||||
|
|
||||||
return 0 if ! -e $filename;
|
# Need to make sure the file doesn't already exist.
|
||||||
|
my ($storage_type, $t_file_type, $t_key_pointer, $blocks_used, $eof, $t_header_pointer, $t_i) = find_file($pofile, $filename, $debug);
|
||||||
|
if ($storage_type != 0) {
|
||||||
|
print "File exists\n";
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
# Check for existance of source file.
|
||||||
|
if (! -e $filename) {
|
||||||
|
print "File $filename does not exist.\n";
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
# Get size of input file
|
# Get size of input file
|
||||||
my $fsize = -s $filename;
|
my $fsize = -s $filename;
|
||||||
@ -1997,20 +2008,13 @@ sub write_file {
|
|||||||
my $numblocks = int($fsize / 512) + (($fsize % 512) ? 1 : 0);
|
my $numblocks = int($fsize / 512) + (($fsize % 512) ? 1 : 0);
|
||||||
print "numblocks=$numblocks\n";
|
print "numblocks=$numblocks\n";
|
||||||
|
|
||||||
my $blocks_used = $numblocks;
|
$blocks_used = $numblocks;
|
||||||
|
|
||||||
# Get list of free blocks.
|
# Get list of free blocks.
|
||||||
my @free_blocks = get_free_blocks($pofile, $debug);
|
my @free_blocks = get_free_blocks($pofile, $debug);
|
||||||
|
|
||||||
my $free_count = scalar @free_blocks;
|
my $free_count = scalar @free_blocks;
|
||||||
|
|
||||||
# Need to make sure the file doesn't already exist.
|
|
||||||
my ($storage_type, $file_type, $key_pointer, $blocks_used, $eof, $header_pointer, $i) = find_file($pofile, $filename, $debug);
|
|
||||||
if ($storage_type != 0) {
|
|
||||||
print "File exists\n";
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($free_count < $numblocks) {
|
if ($free_count < $numblocks) {
|
||||||
print "Not enough space on volume, $free_count free blocks, need $numblocks\n";
|
print "Not enough space on volume, $free_count free blocks, need $numblocks\n";
|
||||||
return 0;
|
return 0;
|
||||||
@ -2943,5 +2947,39 @@ sub create_subdir {
|
|||||||
return $rv;
|
return $rv;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#
|
||||||
|
# Undelete a file
|
||||||
|
#
|
||||||
|
sub undelete_file {
|
||||||
|
my ($pofile, $filename, $dbg) = @_;
|
||||||
|
|
||||||
|
$debug = 1 if defined $dbg && $dbg;
|
||||||
|
|
||||||
|
print "pofile=$pofile filename=$filename\n" if $debug;
|
||||||
|
|
||||||
|
my $rv = 1;
|
||||||
|
|
||||||
|
##FIXME
|
||||||
|
|
||||||
|
return $rv;
|
||||||
|
}
|
||||||
|
|
||||||
|
#
|
||||||
|
# Format a volume
|
||||||
|
#
|
||||||
|
sub format_volume {
|
||||||
|
my ($pofile, $blocks, $volume_name, $dbg) = @_;
|
||||||
|
|
||||||
|
$debug = 1 if defined $dbg && $dbg;
|
||||||
|
|
||||||
|
print "pofile=$pofile blocks=$blocks volume_name=$volume_name\n" if $debug;
|
||||||
|
|
||||||
|
my $rv = 1;
|
||||||
|
|
||||||
|
##FIXME
|
||||||
|
|
||||||
|
return $rv;
|
||||||
|
}
|
||||||
|
|
||||||
1;
|
1;
|
||||||
|
|
||||||
|
2
README
2
README
@ -11,4 +11,6 @@ prolock.pl -- partially working
|
|||||||
prounlock.pl -- partially working
|
prounlock.pl -- partially working
|
||||||
procopy.pl -- started
|
procopy.pl -- started
|
||||||
procreate.pl -- partially working
|
procreate.pl -- partially working
|
||||||
|
proundelete.pl -- started
|
||||||
|
proformat.pl -- started
|
||||||
|
|
||||||
|
44
proformat.pl
Normal file
44
proformat.pl
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
#!/usr/bin/perl -w
|
||||||
|
|
||||||
|
#
|
||||||
|
# proformat.pl:
|
||||||
|
#
|
||||||
|
# Utility to create a subdirectory on an Apple II ProDOS .po disk image.
|
||||||
|
#
|
||||||
|
# 20190308 LSH
|
||||||
|
#
|
||||||
|
|
||||||
|
use strict;
|
||||||
|
|
||||||
|
use ProDOS;
|
||||||
|
|
||||||
|
my $debug = 0;
|
||||||
|
my $blocks = 280; # Default size of 5.25" floppy.
|
||||||
|
my $volume_name = 'NEWDISK';
|
||||||
|
|
||||||
|
while (defined $ARGV[0] && $ARGV[0] =~ /^-/) {
|
||||||
|
# Debug
|
||||||
|
if ($ARGV[0] eq '-d') {
|
||||||
|
$debug = 1;
|
||||||
|
shift;
|
||||||
|
# Number of blocks for volume
|
||||||
|
} elsif ($ARGV[0] eq '-b' && defined $ARGV[1] && $ARGV[1] =~ /^\d+$/) {
|
||||||
|
$blocks = $ARGV[1];
|
||||||
|
shift;
|
||||||
|
shift;
|
||||||
|
# Volume Name
|
||||||
|
} elsif ($ARGV[0] eq '-v' && defined $ARGV[1] && $ARGV[1] =~ /^\S+$/) {
|
||||||
|
$volume_name = substr($ARGV[1], 0, 15);
|
||||||
|
shift;
|
||||||
|
shift;
|
||||||
|
} else {
|
||||||
|
die "Unknown command line argument $ARGV[0]\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
my $pofile = shift or die "Must supply .po filename\n";
|
||||||
|
|
||||||
|
format_volume($pofile, $blocks, $volume_name, $debug);
|
||||||
|
|
||||||
|
1;
|
||||||
|
|
33
proundelete.pl
Normal file
33
proundelete.pl
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
#!/usr/bin/perl -w
|
||||||
|
|
||||||
|
#
|
||||||
|
# proundelete.pl:
|
||||||
|
#
|
||||||
|
# Utility to undelete a file on an Apple II ProDOS .po disk image.
|
||||||
|
#
|
||||||
|
# 20190308 LSH
|
||||||
|
#
|
||||||
|
|
||||||
|
use strict;
|
||||||
|
|
||||||
|
use ProDOS;
|
||||||
|
|
||||||
|
my $debug = 0;
|
||||||
|
|
||||||
|
while (defined $ARGV[0] && $ARGV[0] =~ /^-/) {
|
||||||
|
# Debug
|
||||||
|
if ($ARGV[0] eq '-d') {
|
||||||
|
$debug = 1;
|
||||||
|
shift;
|
||||||
|
} else {
|
||||||
|
die "Unknown command line argument $ARGV[0]\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
my $pofile = shift or die "Must supply .po filename\n";
|
||||||
|
my $filename = shift or die "Must supply filename (on disk image)\n";
|
||||||
|
|
||||||
|
undelete_file($pofile, $filename, $debug);
|
||||||
|
|
||||||
|
1;
|
||||||
|
|
Loading…
x
Reference in New Issue
Block a user