mirror of https://github.com/fspc/gbootroot.git
freesource
24 years ago
1 changed files with 184 additions and 0 deletions
@ -0,0 +1,184 @@ |
|||
############################################################################ |
|||
## |
|||
## Error.pm |
|||
## Copyright (C) 2000 Modifications by the gBootRoot Project |
|||
## Copyright (C) 2000 by Jonathan Rosenbaum |
|||
## |
|||
## This program is free software; you may redistribute it and/or modify |
|||
## it under the terms of the GNU General Public License as published by |
|||
## the Free Software Foundation; either version 2 of the License, or |
|||
## (at your option) any later version. |
|||
## |
|||
## This program is distributed in the hope that it will be useful, |
|||
## but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
## GNU General Public License for more details. |
|||
## |
|||
## You should have received a copy of the GNU General Public License |
|||
## along with this program; if not, write to the Free Software |
|||
## Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. |
|||
## |
|||
############################################################################## |
|||
|
|||
package BootRoot::Error; |
|||
use vars qw(@ISA @EXPORT %EXPORT_TAGS); |
|||
use Exporter; |
|||
@ISA = qw(Exporter); |
|||
@EXPORT = qw(error_window errmk errcp errum errm errrm err err_custom |
|||
err_custom_perl destroy_window); |
|||
|
|||
use strict; |
|||
use BootRoot::Yard; |
|||
|
|||
my $true = 1; |
|||
my $false = 0; |
|||
my $error_window; |
|||
my $verbosity_window; |
|||
|
|||
|
|||
############### |
|||
# Error Section |
|||
############### |
|||
# The biggest problem here is that err? are hardwired, perhaps one |
|||
# could be used and message could just be $!, err_custom is nice. |
|||
# All err? report errors if $? > 0. |
|||
|
|||
sub error_window { |
|||
my (@error) = @_; |
|||
my $output = join("",@error); |
|||
|
|||
if (not defined $error_window) { |
|||
$error_window = new Gtk::Dialog; |
|||
$error_window->signal_connect("destroy", \&destroy_window, |
|||
\$error_window); |
|||
$error_window->signal_connect("delete_event", \&destroy_window, |
|||
\$error_window); |
|||
$error_window->set_title("gBootRoot ERROR"); |
|||
$error_window->border_width(15); |
|||
my $label = new Gtk::Label($output); |
|||
#$label->set_justify("left") if $_[1]; |
|||
$error_window->vbox->pack_start( $label, $true, $true, 15 ); |
|||
$label->show(); |
|||
my $button = new Gtk::Button("OK"); |
|||
$button->signal_connect("clicked", sub {destroy $error_window}); |
|||
$button->can_default(1); |
|||
$error_window->action_area->pack_start($button, $false, $false,0); |
|||
$button->grab_default; |
|||
$button->show; |
|||
} |
|||
if (!visible $error_window) { |
|||
show $error_window; |
|||
} |
|||
else { |
|||
destroy $error_window; |
|||
} |
|||
|
|||
} # end sub error_window |
|||
|
|||
sub errmk { |
|||
error_window("gBootRoot: ERROR: Could not make important directories") if $? != 0; |
|||
if (defined $error_window) { |
|||
if ($error_window->visible) { |
|||
return 2; |
|||
} |
|||
} |
|||
} |
|||
|
|||
sub errcp { |
|||
error_window("gBootRoot: ERROR: Could not copy over important stuff") if $? != 0; |
|||
if (defined $error_window) { |
|||
if ($error_window->visible) { |
|||
return 2; |
|||
} |
|||
} |
|||
} |
|||
|
|||
|
|||
sub errum { |
|||
error_window("gBootRoot: ERROR: Could not umount the device") if $? != 0; |
|||
if (defined $error_window) { |
|||
if ($error_window->visible) { |
|||
return 2; |
|||
} |
|||
} |
|||
} |
|||
|
|||
sub errm { |
|||
error_window("gBootRoot: ERROR: Could not mount device") if $? != 0; |
|||
if (defined $error_window) { |
|||
if ($error_window->visible) { |
|||
return 2; |
|||
} |
|||
} |
|||
} |
|||
|
|||
sub errrm { |
|||
error_window("gBootRoot: ERROR: Could not remove a directory or file") |
|||
if $? != 0; |
|||
if (defined $error_window) { |
|||
if ($error_window->visible) { |
|||
return 2; |
|||
} |
|||
} |
|||
} |
|||
|
|||
sub err { |
|||
error_window("gBootRoot: ERROR: Not enough space after all") if ($? > 0); |
|||
if (defined $error_window) { |
|||
if ($error_window->visible) { |
|||
return 2; |
|||
} |
|||
} |
|||
} |
|||
|
|||
sub err_custom { |
|||
|
|||
if (defined $_[2]) { |
|||
system("$_[0] > /dev/null 2>&1"); |
|||
} |
|||
else { |
|||
# Yard::sys .. this seems to be necessary for my flakey floppy drive |
|||
# which doesn't even support 1722. |
|||
Yard::sys("$_[0]"); |
|||
} |
|||
error_window($_[1]) if ($? != 0); |
|||
if (defined $error_window) { |
|||
if ($error_window->visible) { |
|||
return 2; |
|||
} |
|||
} |
|||
} |
|||
|
|||
sub err_custom_perl { |
|||
|
|||
if ((split(/ /, $_[0]))[0] eq "mkdir") { |
|||
my $two = (split(/ /, $_[0]))[1]; |
|||
mkdir($two,0755); # Anyone allowed in |
|||
} |
|||
error_window($_[1]) if ($? != 0); |
|||
if (defined $error_window) { |
|||
if ($error_window->visible) { |
|||
return 2; |
|||
} |
|||
} |
|||
} |
|||
|
|||
################### |
|||
# End Error Section |
|||
################### |
|||
|
|||
################ |
|||
# MISC FUNCTIONS |
|||
################ |
|||
# Can be relocated |
|||
|
|||
# pulled from test.pl |
|||
sub destroy_window { |
|||
my($widget, $windowref, $w2) = @_; |
|||
$$windowref = undef; |
|||
$w2 = undef if defined $w2; |
|||
0; |
|||
} |
|||
|
|||
|
|||
1; |
Loading…
Reference in new issue