-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathauto-multiple-choice.in
executable file
·99 lines (84 loc) · 2.33 KB
/
auto-multiple-choice.in
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
#! @/PERLPATH/@
#
# Copyright (C) 2008-2022 Alexis Bienvenüe <paamc@passoire.fr>
#
# This file is part of Auto-Multiple-Choice
#
# Auto-Multiple-Choice is free software: you can 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.
#
# Auto-Multiple-Choice 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 Auto-Multiple-Choice. If not, see
# <http://www.gnu.org/licenses/>.
# Local Variables:
# mode:perl
# End:
use 5.012;
use File::Spec::Functions qw/catfile catpath splitpath updir/;
use Cwd;
my $mods_dir="@/MODSDIR/@";
$ENV{'LC_NUMERIC'}="C";
sub mod_path {
my ($action)=@_;
my $f;
$f=catfile($mods_dir,"perl","AMC-$action.pl");
return($f) if(-f $f);
$f=catfile($mods_dir,"exec","AMC-$action");
return($f) if(-f $f);
return('');
}
# For portable distribution
if(! -d $mods_dir) {
my ($volume,$directory,$file) = splitpath(__FILE__);
my $wd=getcwd();
my $base_dir=catfile(catpath( $volume, $directory ),updir);
chdir($base_dir);
$base_dir=getcwd();
chdir($wd);
$mods_dir=catfile($base_dir,'lib');
if(! -d $ENV{'AMCBASEDIR'}) {
$ENV{'PERL5LIB'}=catfile($base_dir,'perl').":".$ENV{'PERL5LIB'};
$ENV{'TEXINPUTS'}=catfile($base_dir,'latex').":".$ENV{'TEXINPUTS'};
$ENV{'AMCBASEDIR'}=$base_dir;
$ENV{'PATH'}=$ENV{'PATH'}.":".catfile($base_dir,'bin');
}
}
# default unicode setting
if(! $ENV{PERL_UNICODE}) {
$ENV{PERL_UNICODE} = 'ASL';
}
my $action;
if($#ARGV==0) {
if(mod_path($ARGV[0])) {
$action=shift;
} else {
$action='gui';
}
} elsif($#ARGV>0) {
$action=shift;
} else {
$action='gui';
}
if ( $action eq "gui" ) {
# Force WM_CLASS value, to be matched with desktop file
unshift @ARGV, "--class", "auto-multiple-choice", "--name",
"auto-multiple-choice";
}
my $f=mod_path($action);
if($f) {
if($f =~ /\.pl$/) {
exec($^X,$f,@ARGV);
} else {
exec($f,@ARGV);
}
} else {
die "Unknown action $action";
}
die "Exec $f failed: $!";