Skip to content

Commit 5206c8f

Browse files
committed
Initial import.
1 parent 8dab385 commit 5206c8f

File tree

1 file changed

+93
-0
lines changed

1 file changed

+93
-0
lines changed

JavaInfo

Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
#!/usr/bin/perl
2+
3+
use strict;
4+
use warnings;
5+
use File::Spec::Functions;
6+
7+
sub main(@) {
8+
foreach my $node (@_) {
9+
if (!process_node($node)) {
10+
return 1;
11+
}
12+
}
13+
return 0;
14+
}
15+
16+
sub process_node($) {
17+
my $node = shift();
18+
if (-f $node) {
19+
return process_file($node);
20+
} elsif (-d $node) {
21+
return process_dir($node);
22+
}
23+
return 0;
24+
}
25+
26+
sub process_dir($) {
27+
my $dir = shift();
28+
if (opendir(DIR, $dir)) {
29+
if (my @nodes = readdir(DIR)) {
30+
foreach my $node (no_upwards(@nodes)) {
31+
if (!process_node(catfile($dir, $node))) {
32+
return 1;
33+
}
34+
}
35+
} else {
36+
print STDERR "$dir: could not read directory ($!)\n";
37+
return 1;
38+
}
39+
closedir(DIR);
40+
} else {
41+
print STDERR "$dir: could not open directory ($!)\n";
42+
return 1;
43+
}
44+
return 0;
45+
}
46+
47+
sub process_file($) {
48+
my $file = shift();
49+
if (open(FILE, $file)) {
50+
binmode(FILE);
51+
my $buffer;
52+
if (read(FILE, $buffer, 8)) {
53+
my @fields = unpack('NN', $buffer);
54+
if ($fields[0] == 0xCAFEBABE) {
55+
my $minor = ($fields[1] & 0xFF00) >> 16;
56+
my $major = $fields[1] & 0x00FF;
57+
my $version = '';
58+
if ($major == 45) {
59+
if ($minor <= 3) {
60+
$version = '1.0.2';
61+
} else {
62+
$version = '1.1.8';
63+
}
64+
} elsif ($major == 46) {
65+
$version = '1.2.2';
66+
} elsif ($major == 47) {
67+
$version = '1.3.1';
68+
} elsif ($major == 48) {
69+
$version = '1.4.2';
70+
} elsif ($major == 49) {
71+
$version = '5.0';
72+
} elsif ($major == 50) {
73+
$version = '6.0';
74+
} elsif ($major == 51) {
75+
$version = '7.0';
76+
}
77+
print "$file: Java " . $version . " [" . $minor . "/" . $major . "]\n";
78+
} else {
79+
print "$file: not a java class file\n";
80+
}
81+
} else {
82+
print STDERR "$file: could not read file ($!)\n";
83+
return 1;
84+
}
85+
close(FILE);
86+
} else {
87+
print STDERR "$file: could not open file ($!)\n";
88+
return 1;
89+
}
90+
return 0;
91+
}
92+
93+
exit main(@ARGV);

0 commit comments

Comments
 (0)