Move everything from /var/adm to /var/log
[unleashed/lotheac.git] / usr / src / cmd / svc / profile / listsvcs.pl
blob6deb7a5a278baa24fbfafe81eb3869376a92b3e2
1 #!/usr/bin/perl
3 # CDDL HEADER START
5 # The contents of this file are subject to the terms of the
6 # Common Development and Distribution License (the "License").
7 # You may not use this file except in compliance with the License.
9 # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10 # or http://www.opensolaris.org/os/licensing.
11 # See the License for the specific language governing permissions
12 # and limitations under the License.
14 # When distributing Covered Code, include this CDDL HEADER in each
15 # file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16 # If applicable, add the following below this CDDL HEADER, with the
17 # fields enclosed by brackets "[]" replaced with your own identifying
18 # information: Portions Copyright [yyyy] [name of copyright owner]
20 # CDDL HEADER END
23 # ident "%Z%%M% %I% %E% SMI"
25 # Copyright 2007 Sun Microsystems, Inc. All rights reserved.
26 # Use is subject to license terms.
30 # listsvcs [-e] profile ...
32 # List all service instances in an SMF profile.
33 # Options:
34 # -e List enabled instances only
37 use XML::Parser;
38 use Getopt::Std;
39 use strict;
41 my %opts;
42 my $servicename; # name attribute of the enclosing service element
43 my @svcs = (); # services list under construction
45 if (!getopts("e", \%opts)) {
46 die "Usage: $0 [-e] profile ...\n";
48 my $list_all = !$opts{e};
50 my $parser = new XML::Parser;
51 $parser->setHandlers(Start => \&start_handler, End => \&end_handler);
53 for my $file (@ARGV) {
54 $parser->parsefile($file);
56 print join("\n", sort(@svcs)), "\n";
58 sub start_handler
60 my ($p, $el, %attrs) = @_;
61 my $name;
63 return unless ($attrs{"name"});
64 $name = $attrs{"name"};
66 if ($el eq "service") {
67 $servicename = $name;
68 } elsif ($el eq "instance" && defined $servicename) {
69 push(@svcs, "$servicename:$name")
70 if ($list_all || $attrs{"enabled"} eq "true");
74 sub end_handler
76 my ($p, $el) = @_;
78 if ($el eq "service") {
79 $servicename = undef;