Linux localhost 6.1.10-x86_64-linode159 #1 SMP PREEMPT_DYNAMIC Wed Feb 8 14:14:45 EST 2023 x86_64
Apache/2.4.25 (Debian)
Server IP : 45.33.61.127 & Your IP : 216.73.216.156
Domains :
Cant Read [ /etc/named.conf ]
User : www-data
Terminal
Auto Root
Create File
Create Folder
Localroot Suggester
Backdoor Destroyer
Readme
/
usr /
sbin /
Delete
Unzip
Name
Size
Permission
Date
Action
a2disconf
15.89
KB
-rwxr-xr-x
2019-06-16 09:49
a2dismod
15.89
KB
-rwxr-xr-x
2019-06-16 09:49
a2dissite
15.89
KB
-rwxr-xr-x
2019-06-16 09:49
a2enconf
15.89
KB
-rwxr-xr-x
2019-06-16 09:49
a2enmod
15.89
KB
-rwxr-xr-x
2019-06-16 09:49
a2ensite
15.89
KB
-rwxr-xr-x
2019-06-16 09:49
a2query
9.64
KB
-rwxr-xr-x
2019-10-13 15:43
accessdb
10.23
KB
-rwxr-xr-x
2016-12-13 13:10
add-shell
860
B
-rwxr-xr-x
2017-04-02 17:10
addgnupghome
3.01
KB
-rwxr-xr-x
2019-02-07 20:57
addgroup
33.7
KB
-rwxr-xr-x
2016-06-26 22:55
adduser
33.7
KB
-rwxr-xr-x
2016-06-26 22:55
apache2
651.13
KB
-rwxr-xr-x
2019-10-13 15:43
apache2ctl
7.05
KB
-rwxr-xr-x
2019-10-13 15:39
apachectl
7.05
KB
-rwxr-xr-x
2019-10-13 15:39
applygnupgdefaults
2.17
KB
-rwxr-xr-x
2019-02-07 20:57
arpd
46.84
KB
-rwxr-xr-x
2017-11-24 09:22
aspell-autobuildhash
13.22
KB
-rwxr-xr-x
2016-10-10 09:58
biosdecode
18.82
KB
-rwxr-xr-x
2016-09-01 02:59
check_forensic
952
B
-rwxr-xr-x
2011-04-26 15:10
chgpasswd
57.8
KB
-rwxr-xr-x
2017-05-17 11:59
chpasswd
49.9
KB
-rwxr-xr-x
2017-05-17 11:59
chroot
38.88
KB
-rwxr-xr-x
2017-02-22 12:23
cpgr
52
KB
-rwxr-xr-x
2017-05-17 11:59
cppw
52
KB
-rwxr-xr-x
2017-05-17 11:59
cron
47.48
KB
-rwxr-xr-x
2017-10-07 13:38
delgroup
15.43
KB
-rwxr-xr-x
2016-06-26 22:55
deluser
15.43
KB
-rwxr-xr-x
2016-06-26 22:55
dmidecode
102.49
KB
-rwxr-xr-x
2016-09-01 02:59
dpkg-preconfigure
3.52
KB
-rwxr-xr-x
2017-05-21 17:08
dpkg-reconfigure
4.23
KB
-rwxr-xr-x
2017-05-21 17:08
e2freefrag
10.07
KB
-rwxr-xr-x
2020-07-25 09:03
e4crypt
22.07
KB
-rwxr-xr-x
2020-07-25 09:03
e4defrag
25.99
KB
-rwxr-xr-x
2020-07-25 09:03
fdformat
30.66
KB
-rwxr-xr-x
2018-03-07 18:29
ferm
83.84
KB
-rwxr-xr-x
2016-03-30 12:16
filefrag
14.02
KB
-rwxr-xr-x
2020-07-25 09:03
genl
50.79
KB
-rwxr-xr-x
2017-11-24 09:22
groupadd
57.86
KB
-rwxr-xr-x
2017-05-17 11:59
groupdel
53.65
KB
-rwxr-xr-x
2017-05-17 11:59
groupmems
53.84
KB
-rwxr-xr-x
2017-05-17 11:59
groupmod
68.22
KB
-rwxr-xr-x
2017-05-17 11:59
grpck
53.77
KB
-rwxr-xr-x
2017-05-17 11:59
grpconv
49.65
KB
-rwxr-xr-x
2017-05-17 11:59
grpunconv
49.65
KB
-rwxr-xr-x
2017-05-17 11:59
grub-bios-setup
790.19
KB
-rwxr-xr-x
2019-06-12 11:20
grub-install
996.58
KB
-rwxr-xr-x
2019-06-12 11:20
grub-macbless
777.88
KB
-rwxr-xr-x
2019-06-12 11:20
grub-mkconfig
7.82
KB
-rwxr-xr-x
2019-06-12 11:20
grub-mkdevicemap
204.47
KB
-rwxr-xr-x
2019-06-12 11:20
grub-probe
790.19
KB
-rwxr-xr-x
2019-06-12 11:20
grub-reboot
4.01
KB
-rwxr-xr-x
2019-06-12 11:20
grub-set-default
3.48
KB
-rwxr-xr-x
2019-06-12 11:20
httxt2dbm
9.99
KB
-rwxr-xr-x
2019-10-13 15:43
iconvconfig
22.66
KB
-rwxr-xr-x
2019-02-06 21:17
import-ferm
16.81
KB
-rwxr-xr-x
2016-03-30 12:16
install-sgmlcatalog
4.44
KB
-rwxr-xr-x
2016-11-07 07:06
invoke-rc.d
17.69
KB
-rwxr-xr-x
2017-05-02 10:20
iotop
496
B
-rwxr-xr-x
2016-07-29 10:25
ip6tables-apply
6.85
KB
-rwxr-xr-x
2017-04-12 09:41
iptables-apply
6.85
KB
-rwxr-xr-x
2017-04-12 09:41
irqbalance
55.38
KB
-rwxr-xr-x
2017-03-10 18:56
ispell-autobuildhash
15.39
KB
-rwxr-xr-x
2016-10-10 09:58
laptop-detect
2.53
KB
-rwxr-xr-x
2016-12-27 03:11
ldattach
30.71
KB
-rwxr-xr-x
2018-03-07 18:29
locale-gen
1.5
KB
-rwxr-xr-x
2017-07-31 14:32
logrotate
75.27
KB
-rwxr-xr-x
2017-01-07 18:54
make-ssl-cert
3.78
KB
-rwxr-xr-x
2017-04-28 19:58
mkinitramfs
10.01
KB
-rwxr-xr-x
2017-04-26 01:00
mklost+found
9.99
KB
-rwxr-xr-x
2020-07-25 09:03
mysqld
17.05
MB
-rwxr-xr-x
2021-01-31 16:38
newusers
78.43
KB
-rwxr-xr-x
2017-05-17 11:59
nfnl_osf
13.99
KB
-rwxr-xr-x
2017-04-12 09:41
nologin
5.99
KB
-rwxr-xr-x
2017-05-17 11:59
ownership
10.13
KB
-rwxr-xr-x
2016-09-01 02:59
pam-auth-update
19.03
KB
-rwxr-xr-x
2017-05-27 15:44
pam_getenv
2.82
KB
-rwxr-xr-x
2017-05-27 15:44
pam_timestamp_check
10.37
KB
-rwxr-xr-x
2017-05-27 15:44
paperconfig
4.07
KB
-rwxr-xr-x
2016-11-11 11:28
phpdismod
7.11
KB
-rwxr-xr-x
2019-08-14 06:09
phpenmod
7.11
KB
-rwxr-xr-x
2019-08-14 06:09
phpquery
6.24
KB
-rwxr-xr-x
2019-08-14 06:09
pwck
49.84
KB
-rwxr-xr-x
2017-05-17 11:59
pwconv
45.74
KB
-rwxr-xr-x
2017-05-17 11:59
pwunconv
41.72
KB
-rwxr-xr-x
2017-05-17 11:59
readprofile
18.59
KB
-rwxr-xr-x
2018-03-07 18:29
remove-default-ispell
2.86
KB
-rwxr-xr-x
2016-10-10 09:58
remove-default-wordlist
2.86
KB
-rwxr-xr-x
2016-10-10 09:58
remove-shell
904
B
-rwxr-xr-x
2017-04-02 17:10
rmt
55.03
KB
-rwxr-xr-x
2016-10-30 06:35
rmt-tar
55.03
KB
-rwxr-xr-x
2016-10-30 06:35
rsyslogd
636.3
KB
-rwxr-xr-x
2017-01-18 22:14
rtcwake
42.81
KB
-rwxr-xr-x
2018-03-07 18:29
safe_finger
10.08
KB
-rwxr-xr-x
2016-12-25 23:08
select-default-ispell
3.23
KB
-rwxr-xr-x
2016-10-10 09:58
select-default-wordlist
3.21
KB
-rwxr-xr-x
2016-10-10 09:58
service
9.83
KB
-rwxr-xr-x
2017-05-02 10:20
setvesablank
10.36
KB
-rwxr-xr-x
2016-01-05 16:55
split-logfile
2.36
KB
-rwxr-xr-x
2019-10-13 15:43
sshd
772.48
KB
-rwxr-xr-x
2019-07-15 13:32
tarcat
936
B
-rwxr-xr-x
2016-10-30 06:35
tcpd
10
KB
-rwxr-xr-x
2016-12-25 23:08
tcpdchk
22.13
KB
-rwxr-xr-x
2016-12-25 23:08
tcpdmatch
18.04
KB
-rwxr-xr-x
2016-12-25 23:08
tcptraceroute
1.56
KB
-rwxr-xr-x
2016-08-29 15:45
tcptraceroute.db
1.56
KB
-rwxr-xr-x
2016-08-29 15:45
traceroute
67.16
KB
-rwxr-xr-x
2016-08-29 15:45
try-from
10
KB
-rwxr-xr-x
2016-12-25 23:08
tunelp
26.61
KB
-rwxr-xr-x
2018-03-07 18:29
tzconfig
106
B
-rwxr-xr-x
2019-10-11 07:23
update-ca-certificates
4.85
KB
-rwxr-xr-x
2020-06-05 16:52
update-catalog
9.15
KB
-rwxr-xr-x
2016-11-07 07:06
update-default-aspell
1
KB
-rwxr-xr-x
2016-10-10 09:58
update-default-ispell
9.68
KB
-rwxr-xr-x
2016-10-10 09:58
update-default-wordlist
7.5
KB
-rwxr-xr-x
2016-10-10 09:58
update-dictcommon-aspell
1
KB
-rwxr-xr-x
2016-10-10 09:58
update-dictcommon-hunspell
782
B
-rwxr-xr-x
2016-10-10 09:58
update-grub
64
B
-rwxr-xr-x
2019-06-12 11:20
update-grub2
64
B
-rwxr-xr-x
2019-06-12 11:20
update-gsfontmap
450
B
-rwxr-xr-x
2020-08-20 14:04
update-initramfs
8.02
KB
-rwxr-xr-x
2017-03-06 22:42
update-locale
2.99
KB
-rwxr-xr-x
2016-03-20 23:45
update-mime
8.84
KB
-rwxr-xr-x
2016-05-01 11:20
update-passwd
30.41
KB
-rwxr-xr-x
2017-01-16 15:52
update-pciids
2.84
KB
-rwxr-xr-x
2016-11-30 06:53
update-rc.d
15.69
KB
-rwxr-xr-x
2017-05-02 10:20
update-xmlcatalog
16.88
KB
-rwxr-xr-x
2016-11-07 14:53
upgrade-from-grub-legacy
1.49
KB
-rwxr-xr-x
2019-06-12 11:20
useradd
119.29
KB
-rwxr-xr-x
2017-05-17 11:59
userdel
82.49
KB
-rwxr-xr-x
2017-05-17 11:59
usermod
119.1
KB
-rwxr-xr-x
2017-05-17 11:59
validlocale
1.73
KB
-rwxr-xr-x
2016-03-20 23:45
vcstime
6.24
KB
-rwxr-xr-x
2016-01-05 16:55
vigr
60.22
KB
-rwxr-xr-x
2017-05-17 11:59
vipw
60.22
KB
-rwxr-xr-x
2017-05-17 11:59
visudo
200.34
KB
-rwxr-xr-x
2021-01-23 09:10
vpddecode
14.27
KB
-rwxr-xr-x
2016-09-01 02:59
zic
42.54
KB
-rwxr-xr-x
2019-02-06 21:17
Save
Rename
#!/usr/bin/perl ## ---------------------------------------------------------------------- ## Debian update-xmlcatalog ## ---------------------------------------------------------------------- ## Copyright (c) 2003-2004 Ardo van Rangelrooij ## ## This is free software; see the GNU General Public Licence version 2 ## or later for copying conditions. There is NO warranty. ## ---------------------------------------------------------------------- =head1 NAME update-xmlcatalog - maintain XML catalog files =head1 SYNOPSIS B<update-xmlcatalog> B<--add> B<--root> S<B<--package> I<package>> S<B<--type> I<type>> S<B<--id> I<id>> B<update-xmlcatalog> B<--del> B<--root> S<B<--package> I<package>> S<B<--type> I<type>> S<B<--id> I<id>> B<update-xmlcatalog> B<--add> S<B<--package> I<package>> S<B<--local> I<local>> S<B<--type> I<type>> S<B<--id> I<id>> B<update-xmlcatalog> B<--del> S<B<--package> I<package>> S<B<--local> I<local>> S<B<--type> I<type>> S<B<--id> I<id>> B<update-xmlcatalog> B<--add> S<B<--local> I<local>> S<B<--file> I<file>> S<B<--type> I<type>> S<B<--id> I<id>> B<update-xmlcatalog> B<--del> S<B<--local> I<local>> S<B<--file> I<file>> S<B<--type> I<type>> S<B<--id> I<id>> B<update-xmlcatalog> B<--help> =head1 DESCRIPTION B<update-xmlcatalog> add entries to and removes entries from the root XML catalog file, a package XML catalog file or a local XML catalog file. =head1 OPTIONS =over 4 =item B<--add> Adds the entry to the root XML catalog file, a package XML catalog file or a local XML catalog file. If the XML catalog file does not exist yet, it is automatically created. =item B<--del> Deletes the entry from the root XML catalog file, the package XML catalog file or the local XML catalog file. A resulting empty XML catalog is not automatically deleted from the filesystem. =item B<--file> I<file> Indicates a local filename. =item B<--id> I<id> Indicates the XML catalog file entry identifier. =item B<--local> I<local> Indicates a local XML catalog file. =item B<--package> I<package> Indicates a package XML catalog file. =item B<--root> Indicates the root XML catalog file. =item B<--type> I<type> Indicates the XML catalog file entry type (public, system, uri). =item B<--help> Displays the usage information. =item B<--verbose> Optional switch to make a verbose output. =item B<--sort> Optional switch to sort the manipulated catalog content. Tip: To sort a catalog without adding or removing an item, just add an already existing item to the catalog. =back =head1 NOTES B<update-xmlcatalog> is the de-facto standard tool to be used to maintain XML catalog files on a Debian system, similar to that L<update-catalog(8)> is the standard tool to be used to main SGML catalog files on a Debian system. A Debian XML Policy document to this effect is currently under development. B<update-xmlcatalog> and L<xmlcatalog(1)> are incompatible. The former has an internal database of all the entries in all the XML catalog files it maintains and regenerates the indicated XML catalog file completely from scratch upon an update. The latter updates the indicated XML catalog file directly. This means that any change made to an XML catalog file using L<xmlcatalog(1)> is overwritten the next time that XML catalog file is updated using B<update-xmlcatalog>. =head1 SEE ALSO F</usr/share/doc/xml-core/README.Debian> =head1 AUTHOR B<Ardo van Rangelrooij> E<lt>ardo@debian.orgE<gt> =cut ## ---------------------------------------------------------------------- use strict; ## ---------------------------------------------------------------------- use File::Spec; use Getopt::Long; ## ---------------------------------------------------------------------- $0 =~ m|[^/]+$|; ## ---------------------------------------------------------------------- my $name = $&; ## ---------------------------------------------------------------------- use vars qw( $catalog_data $catalog_data_dir ); use vars qw( $catalog $catalog_dir ); use vars qw( %catalog $key $entry ); ## ---------------------------------------------------------------------- $catalog_data_dir = '/var/lib/xml-core'; $catalog_dir = '/etc/xml'; ## ---------------------------------------------------------------------- use vars qw( $add ); use vars qw( $del ); use vars qw( $file ); use vars qw( $help ); use vars qw( $local ); use vars qw( $package ); use vars qw( $root ); use vars qw( $type $id ); use vars qw( $verbose ); use vars qw( $sort ); ## ---------------------------------------------------------------------- if ( ! GetOptions( 'add' => \$add, 'del' => \$del, 'file=s' => \$file, 'help' => \$help, 'id=s' => \$id, 'local=s' => \$local, 'package=s' => \$package, 'root' => \$root, 'type=s' => \$type, 'verbose' => \$verbose, 'sort' => \$sort, ) ) { &help; exit 1; } ## ---------------------------------------------------------------------- if ( defined( $help ) ) { &help; exit -1; } ## ---------------------------------------------------------------------- if ( ! ( defined( $add ) || defined( $del ) ) ) { print STDERR "$name: error: either 'add' or 'del' must be given\n"; exit 1; } elsif ( ( defined( $add ) && defined( $del ) ) ) { print STDERR "$name: error: only one of 'add' and 'del' can be given\n"; exit 1; } ## ---------------------------------------------------------------------- if ( defined( $add ) ) { if ( defined( $root ) ) { if ( defined( $package ) ) { my $catalog = File::Spec->catfile( $catalog_dir, "$package.xml" ); if ( ! -f $catalog ) { print STDERR "$name: error: package catalog $catalog not found\n"; exit 1; } } else { print STDERR "$name: error: package catalog not given\n"; exit 1; } if ( defined( $local) || defined( $file ) ) { print STDERR "$name: error: local catalog and file not for adding to root catalog file\n"; exit 1; } } elsif ( defined( $package ) ) { if ( defined( $local ) ) { if ( ! -f $local ) { print STDERR "$name: error: local catalog $local not found\n"; exit 1; } } else { print STDERR "$name: error: local catalog not given\n"; exit 1; } if ( defined( $file ) ) { print STDERR "$name: error: file not for adding to package catalog file\n"; exit 1; } } elsif ( defined( $local ) ) { if ( defined( $file ) ) { if ( ! -f $file ) { print STDERR "$name: error: file $file not found\n"; exit 1; } } else { print STDERR "$name: error: file not given\n"; exit 1; } } else { print STDERR "$name: error: catalog not given\n"; exit 1; } } elsif ( defined( $del ) ) { if ( defined( $root ) ) { my $catalog = File::Spec->catfile( $catalog_dir, 'catalog' ); if ( ! -f $catalog ) { print STDERR "$name: error: root catalog $catalog not found\n"; exit 1; } if ( defined( $package) || defined( $local ) || defined( $file ) ) { print STDERR "$name: error: package catalog, local catalog or file not for deleting from root catalog file\n"; exit 1; } } elsif ( defined( $package ) ) { my $catalog = File::Spec->catfile( $catalog_dir, "$package.xml" ); if ( ! -f $catalog ) { print STDERR "$name: error: package catalog $catalog not found\n"; exit 1; } if ( defined( $local ) || defined( $file ) ) { print STDERR "$name: error: local catalog or file not for deleting from package catalog file\n"; exit 1; } } elsif ( defined( $local ) ) { if ( ! -f $local ) { print STDERR "$name: error: local catalog $local not found\n"; exit 1; } if ( defined( $file ) ) { print STDERR "$name: error: file not for deleting from local catalog file\n"; exit 1; } } else { print STDERR "$name: error: catalog not given\n"; exit 1; } } ## ---------------------------------------------------------------------- if ( defined( $type ) ) { if ( $type !~ /^(public|system|uri)$/ ) { print STDERR "$name: error: wrong type\n"; exit 1; } } else { print STDERR "$name: error: type not given\n"; exit 1; } ## ---------------------------------------------------------------------- if ( ! defined( $id ) ) { print STDERR "$name: error: id not given\n"; exit 1; } ## ---------------------------------------------------------------------- if ( defined( $root ) ) { $catalog = 'catalog'; $catalog_data = File::Spec->catfile( $catalog_data_dir, $catalog ); $catalog = File::Spec->catfile( $catalog_dir, $catalog ); my $start = $type; $start .= 'Id' unless $type eq 'uri'; $start .= 'StartString'; $id = "$start=\"$id\""; $type = ( $type eq 'uri' ) ? "\U$type" : "\u$type"; $type = "delegate$type"; $package = "catalog=\"file:///etc/xml/$package.xml\""; $key = "$type $id"; $entry = "$package"; } elsif ( defined( $package ) ) { $catalog_data = File::Spec->catfile( $catalog_data_dir, $package ); $catalog = File::Spec->catfile( $catalog_dir, "$package.xml" ); my $start = $type; $start .= 'Id' unless $type eq 'uri'; $start .= 'StartString'; $id = "$start=\"$id\""; $type = ( $type eq 'uri' ) ? "\U$type" : "\u$type"; $type = "delegate$type"; $local = "catalog=\"file://$local\""; $key = "$type $id"; $entry = "$local"; } elsif ( defined( $local ) ) { $catalog = $local; $catalog_data = $local; $catalog_data =~ tr|/|_|; $catalog_data = File::Spec->catfile( $catalog_data_dir, $catalog_data ); my $start = ( $type eq 'uri' ) ? 'name' : $type; $start .= 'Id' unless $type eq 'uri'; $id = "$start=\"$id\""; $file = "uri=\"$file\""; $key = "$type $id"; $entry = "$file"; } ## ---------------------------------------------------------------------- if ( defined( $add ) ) { &read_catalog_data if -f $catalog_data; if ( &add_entry ) { &create_backup if -f $catalog; &write_catalog_data; &write_catalog; } else { exit 1; } } elsif ( defined( $del ) ) { &read_catalog_data; if ( &del_entry ) { &create_backup; &write_catalog_data; &write_catalog; } else { exit 1; } } ## ---------------------------------------------------------------------- exit 0; ## ---------------------------------------------------------------------- sub add_entry { ## ------------------------------------------------------------------ if ( exists( $catalog{ $key } ) ) { if ( $catalog{ $key } ne $entry ) { print STDERR "$name: error: entity already registered with a different value\n"; print STDERR " Entity : [$key]\n"; print STDERR " Old value: [$catalog{$key}]\n"; print STDERR " New value: [$entry]\n"; return; } else { print STDERR "$name: notice: entity already registered\n" if $verbose; return 1; } } else { print "$name: adding entity to catalog data $catalog_data with the same value\n" if $verbose; $catalog{ $key } = $entry; return 1; } } ## add_entry ## ---------------------------------------------------------------------- sub del_entry { ## ------------------------------------------------------------------ if ( exists( $catalog{ $key } ) ) { print "$name: removing entity from catalog data $catalog_data\n" if $verbose; delete( $catalog{ $key } ); return 1; } else { print STDERR "$name: error: entity not registered\n"; return; } } ## del_entry ## ---------------------------------------------------------------------- sub read_catalog_data { ## ------------------------------------------------------------------ print "$name: reading catalog data $catalog_data\n" if $verbose; open( CATALOG_DATA, '<', $catalog_data ) or die "$name: cannot open catalog data $catalog_data for reading: $!"; while ( <CATALOG_DATA> ) { chop; my ( $key, $entry ) = split( />/ ); $key =~ s/^<//; $entry =~ s/^<//; $catalog{ $key } = $entry; } close( CATALOG_DATA ) or die "$name: cannot close catalog data $catalog_data: $!"; } ## read_catalog_data ## ---------------------------------------------------------------------- sub write_catalog_data { ## ------------------------------------------------------------------ print "$name: writing catalog data $catalog_data\n" if $verbose; open( CATALOG_DATA, '>', $catalog_data ) or die "$name: cannot open catalog data $catalog_data for writing: $!"; my $counter = 0; # Adding the optional sort of the catalog. See #626036. my @catalog_keys = ( $sort ? sort keys %catalog : keys %catalog ); for my $key ( @catalog_keys ) { print( CATALOG_DATA "<$key><$catalog{ $key }>\n" ); $counter++; } close( CATALOG_DATA ) or die "$name: cannot close catalog data $catalog_data: $!"; ## ------------------------------------------------------------------ if ( $counter == 0 ) { print "$name: removing catalog data $catalog_data\n" if $verbose; unlink( $catalog_data ); } } ## write_catalog_data ## ---------------------------------------------------------------------- sub create_backup { ## ------------------------------------------------------------------ my $backup = $catalog . '.old'; ## ------------------------------------------------------------------ if ( -f $backup ) { print "$name: removing backup $backup\n" if $verbose; unlink( $backup ) or die "$name: cannot remove backup $backup: $!"; } ## ------------------------------------------------------------------ print "$name: moving catalog $catalog to backup $backup\n" if $verbose; rename( $catalog, $backup ) or die "$name: cannot move catalog $catalog to backup $backup: $!"; } ## create_backup ## ---------------------------------------------------------------------- sub write_catalog { ## ------------------------------------------------------------------ my @catalog = (); ## ------------------------------------------------------------------ my $header = '/usr/share/xml-core/catalog.header'; open( HEADER, '<', $header ) or die "$name: cannot open catalog header $header for reading: $!"; while ( <HEADER> ) { chop; push( @catalog, $_ ); } close( HEADER ) or die "$name: cannot close catalog header $header: $!"; ## ------------------------------------------------------------------ my $counter = 0; # Adding the optional sort of the catalog. See #626036. my @catalog_keys = ( $sort ? sort keys %catalog : keys %catalog ); for my $key ( @catalog_keys ) { push( @catalog, "<$key $catalog{ $key }/>" ); $counter++; } ## ------------------------------------------------------------------ my $footer = '/usr/share/xml-core/catalog.footer'; open( FOOTER, '<', $footer ) or die "$name: cannot open catalog footer $footer for reading: $!"; while ( <FOOTER> ) { chop; push( @catalog, $_ ); } close( FOOTER ) or die "$name: cannot close catalog footer $footer: $!"; ## ------------------------------------------------------------------ print "$name: writing catalog $catalog\n" if $verbose; open( CATALOG, '>', $catalog ) or die "$name: cannot open catalog $catalog for writing: $!"; for ( @catalog ) { print( CATALOG $_, "\n" ); } close( CATALOG ) or die "$name: cannot close catalog $catalog: $!"; ## ------------------------------------------------------------------ if ( $counter == 0 ) { print "$name: removing catalog $catalog\n" if $verbose; unlink( $catalog ); } } ## write_catalog ## ---------------------------------------------------------------------- sub help { ## ------------------------------------------------------------------ print <<END; Usage: $name <options> --add --root --type <type> \\ --id <id> --package <package> $name <options> --del --root --type <type> \\ --id <id> $name <options> --add --package <package> --type <type> \\ --id <id> --local <local> $name <options> --del --package <package> --type <type> \\ --id <id> $name <options> --add --local <local> --type <type> \\ --id <id> --file <file> $name <options> --del --local <local> --type <type> \\ --id <id> $name --help With: --file <file> = a local filename --id <id> = catalog entry idenitifier --local <local> = a local XML catalog --package <package> = a package XML catalog --root = the root XML catalog (= /etc/xml/catalog) --type <type> = catalog entry type (= public, system, uri) Options: --verbose = be verbose --sort = sorts the manipulated catalog content END } ## help ## ---------------------------------------------------------------------- __END__ ## ----------------------------------------------------------------------