bits to allow GUI to run recover under MacOS X
Will require additional work for 3.5 (shouldn't blindly remove perm_lock without asking the user; update comments; add standard headers) but I don't want to lose this code.
This commit is contained in:
18
win/macosx/NetHackRecover.applescript
Normal file
18
win/macosx/NetHackRecover.applescript
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
set canceled to false
|
||||||
|
try
|
||||||
|
display dialog "Welcome to the NetHack recover program. Please make sure NetHack is not running before continuing. Ready?" with title "NetHackRecover"
|
||||||
|
on error number -128
|
||||||
|
set canceled to true
|
||||||
|
end try
|
||||||
|
if not canceled then
|
||||||
|
set hpath to the path to me
|
||||||
|
set mpath to the POSIX path of hpath
|
||||||
|
considering case
|
||||||
|
set lastpos to offset of "/nethackdir" in mpath
|
||||||
|
set lastpos to lastpos + (length of "/nethackdir")
|
||||||
|
set rawpath to (get text 1 through lastpos of mpath) & "/recover.pl"
|
||||||
|
set safepath to the quoted form of rawpath
|
||||||
|
end considering
|
||||||
|
do shell script safepath
|
||||||
|
display dialog result with title "NetHackRecover Output"
|
||||||
|
end if
|
||||||
45
win/macosx/recover.pl
Executable file
45
win/macosx/recover.pl
Executable file
@@ -0,0 +1,45 @@
|
|||||||
|
#!/usr/bin/perl
|
||||||
|
|
||||||
|
# $Id$
|
||||||
|
# Wrapper for 3.4.3 recover to be called from Applescript to reset the Qt
|
||||||
|
# package after it locks up due to a bug in suspend handling.
|
||||||
|
|
||||||
|
# find the right place
|
||||||
|
($playground = $0) =~ s!/recover.pl$!!;
|
||||||
|
if(! -d $playground){
|
||||||
|
print "Cannot find playground $playground.";
|
||||||
|
exit 0
|
||||||
|
}
|
||||||
|
if(! -f "$playground/castle.lev"){
|
||||||
|
print "Failed to find playground $playground.";
|
||||||
|
exit 0
|
||||||
|
}
|
||||||
|
print "Playground is $playground.\n";
|
||||||
|
chdir $playground or do {
|
||||||
|
print "Can't get to playground.\n";
|
||||||
|
exit 0
|
||||||
|
};
|
||||||
|
if(-e 'perm_lock'){
|
||||||
|
print "Attempting to remove perm_lock.\n";
|
||||||
|
$try_perm = 1;
|
||||||
|
unlink 'perm_lock';
|
||||||
|
} else {
|
||||||
|
print "Did not find perm_lock (this is OK).\n";
|
||||||
|
}
|
||||||
|
if(-e 'perm_lock'){
|
||||||
|
print "Failed to remove perm_lock: $!\n";
|
||||||
|
exit 0
|
||||||
|
}
|
||||||
|
if($try_perm){
|
||||||
|
print "Removed perm_lock.\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
# run recover, but only if there is something that looks promising
|
||||||
|
$uid = $<;
|
||||||
|
foreach ( <$uid*.0> ){
|
||||||
|
system ("./recover -d . $_);
|
||||||
|
}
|
||||||
|
|
||||||
|
print "Done.\n";
|
||||||
|
|
||||||
|
exit 0
|
||||||
Reference in New Issue
Block a user