natPlainSocketImplPosix.cc (bind): Clear SockAddr before using - needed for OS X...
[gcc.git] / libjava / scripts / classes.pl
1 # classes.pl - A perl program to generate most of the contents of
2 # javaprims.h automatically.
3
4 # Copyright (C) 1998, 1999, 2000, 2002, 2005 Free Software Foundation
5 #
6 # This file is part of libgcj.
7 #
8 # This software is copyrighted work licensed under the terms of the
9 # Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
10 # details.
11
12 # Usage: cd <build>/classpath/lib ; perl classes.pl.
13
14 use DirHandle;
15
16 if (-d 'java')
17 {
18 # Ok here.
19 }
20 elsif (-d '../java')
21 {
22 chdir ('..');
23 }
24 else
25 {
26 die "couldn't find java directory\n";
27 }
28
29 &scan ('java', 2);
30
31 exit 0;
32
33 sub scan
34 {
35 local ($dir, $indent) = @_;
36 local (@subdirs) = ();
37 local (%classes) = ();
38
39 local ($d) = new DirHandle $dir;
40 local (*JFILE);
41 local ($name);
42 if (defined $d)
43 {
44 while (defined ($name = $d->read))
45 {
46 next if $name eq 'CVS';
47 next if $name eq '.';
48 next if $name eq '..';
49 if ($dir eq 'java'
50 && $name ne 'lang'
51 && $name ne 'util'
52 && $name ne 'io')
53 {
54 # We only generate decls for java.lang, java.io, and
55 # java.util.
56 next;
57 }
58 if (-d ($dir . '/' . $name))
59 {
60 push (@subdirs, $name);
61 next;
62 }
63 next unless $name =~ s/\.class$//;
64 $classes{$name} = 1;
65 }
66
67 undef $d;
68 }
69
70 local ($spaces) = ' ' x $indent;
71 local ($classname);
72 ($classname = $dir) =~ s/^.*\///;
73 print $spaces, "namespace ", $classname, "\n";
74 print $spaces, "{\n";
75
76 foreach (sort keys %classes)
77 {
78 print $spaces, " class ", $_, ";\n";
79 }
80 print "\n" if scalar @classes > 0 && scalar @subdirs > 0;
81
82 local ($first) = 1;
83 foreach (sort @subdirs)
84 {
85 print "\n" unless $first;
86 $first = 0;
87 &scan ("$dir/$_", $indent + 2);
88 }
89
90 print $spaces, "}\n";
91 }