Linux ip-172-26-5-244 6.1.0-28-cloud-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.119-1 (2024-11-22) x86_64
Apache
: 172.26.5.244 | : 216.73.216.21
Cant Read [ /etc/named.conf ]
8.3.14
daemon
Terminal
AUTO ROOT
Adminer
Backdoor Destroyer
Linux Exploit
Lock Shell
Lock File
Create User
CREATE RDP
PHP Mailer
BACKCONNECT
UNLOCK SHELL
HASH IDENTIFIER
README
+ Create Folder
+ Create File
/
usr /
sbin /
[ HOME SHELL ]
Name
Size
Permission
Action
aa-remove-unknown
3.13
KB
-rwxr-xr-x
aa-status
38.3
KB
-rwxr-xr-x
aa-teardown
137
B
-rwxr-xr-x
accessdb
14.46
KB
-rwxr-xr-x
add-shell
1.03
KB
-rwxr-xr-x
addgroup
47.25
KB
-rwxr-xr-x
adduser
47.25
KB
-rwxr-xr-x
agetty
67.49
KB
-rwxr-xr-x
apparmor_parser
1.39
MB
-rwxr-xr-x
apparmor_status
38.3
KB
-rwxr-xr-x
arp
66.13
KB
-rwxr-xr-x
arpd
104.48
KB
-rwxr-xr-x
arptables
223.16
KB
-rwxr-xr-x
arptables-nft
223.16
KB
-rwxr-xr-x
arptables-nft-restore
223.16
KB
-rwxr-xr-x
arptables-nft-save
223.16
KB
-rwxr-xr-x
arptables-restore
223.16
KB
-rwxr-xr-x
arptables-save
223.16
KB
-rwxr-xr-x
atd
30.09
KB
-rwxr-xr-x
badblocks
34.25
KB
-rwxr-xr-x
blkdeactivate
15.96
KB
-rwxr-xr-x
blkdiscard
34.31
KB
-rwxr-xr-x
blkid
122.34
KB
-rwxr-xr-x
blkzone
78.31
KB
-rwxr-xr-x
blockdev
78.31
KB
-rwxr-xr-x
bridge
152.54
KB
-rwxr-xr-x
capsh
53.29
KB
-rwxr-xr-x
cfdisk
106.66
KB
-rwxr-xr-x
cgdisk
210.41
KB
-rwxr-xr-x
chcpu
46.3
KB
-rwxr-xr-x
chgpasswd
66.29
KB
-rwxr-xr-x
chmem
66.31
KB
-rwxr-xr-x
chpasswd
62.36
KB
-rwxr-xr-x
chroot
46.98
KB
-rwxr-xr-x
cpgr
60.43
KB
-rwxr-xr-x
cppw
60.43
KB
-rwxr-xr-x
cron
50.56
KB
-rwxr-xr-x
ctrlaltdel
38.3
KB
-rwxr-xr-x
dcb
144.6
KB
-rwxr-xr-x
debugfs
233.83
KB
-rwxr-xr-x
delgroup
16.33
KB
-rwxr-xr-x
deluser
16.33
KB
-rwxr-xr-x
depmod
174.27
KB
-rwxr-xr-x
devlink
220.98
KB
-rwxr-xr-x
dhclient
2.63
MB
-rwxr-xr-x
dhclient-script
14.21
KB
-rwxr-xr-x
dmsetup
166.98
KB
-rwxr-xr-x
dmstats
166.98
KB
-rwxr-xr-x
dpkg-fsys-usrunmess
16.99
KB
-rwxr-xr-x
dpkg-preconfigure
3.83
KB
-rwxr-xr-x
dpkg-reconfigure
4.38
KB
-rwxr-xr-x
dumpe2fs
30.31
KB
-rwxr-xr-x
e2freefrag
14.3
KB
-rwxr-xr-x
e2fsck
348.27
KB
-rwxr-xr-x
e2image
54.45
KB
-rwxr-xr-x
e2label
114.52
KB
-rwxr-xr-x
e2mmpstatus
30.31
KB
-rwxr-xr-x
e2scrub
7.12
KB
-rwxr-xr-x
e2scrub_all
5.27
KB
-rwxr-xr-x
e2undo
22.3
KB
-rwxr-xr-x
e4crypt
26.3
KB
-rwxr-xr-x
e4defrag
30.23
KB
-rwxr-xr-x
ebsnvme-id
6.89
KB
-rwxr-xr-x
ebtables
223.16
KB
-rwxr-xr-x
ebtables-nft
223.16
KB
-rwxr-xr-x
ebtables-nft-restore
223.16
KB
-rwxr-xr-x
ebtables-nft-save
223.16
KB
-rwxr-xr-x
ebtables-restore
223.16
KB
-rwxr-xr-x
ebtables-save
223.16
KB
-rwxr-xr-x
ebtables-translate
223.16
KB
-rwxr-xr-x
ethtool
592.45
KB
-rwxr-xr-x
faillock
14.24
KB
-rwxr-xr-x
fdisk
158.35
KB
-rwxr-xr-x
filefrag
18.26
KB
-rwxr-xr-x
findfs
14.3
KB
-rwxr-xr-x
fixparts
74.4
KB
-rwxr-xr-x
fsck
54.36
KB
-rwxr-xr-x
fsck.cramfs
42.37
KB
-rwxr-xr-x
fsck.ext2
348.27
KB
-rwxr-xr-x
fsck.ext3
348.27
KB
-rwxr-xr-x
fsck.ext4
348.27
KB
-rwxr-xr-x
fsck.minix
122.34
KB
-rwxr-xr-x
fsfreeze
14.3
KB
-rwxr-xr-x
fstab-decode
14.23
KB
-rwxr-xr-x
fstrim
74.31
KB
-rwxr-xr-x
gdisk
218.41
KB
-rwxr-xr-x
genl
116.51
KB
-rwxr-xr-x
getcap
14.23
KB
-rwxr-xr-x
getpcaps
14.23
KB
-rwxr-xr-x
getty
67.49
KB
-rwxr-xr-x
groupadd
99.04
KB
-rwxr-xr-x
groupdel
86.85
KB
-rwxr-xr-x
groupmems
66.33
KB
-rwxr-xr-x
groupmod
99.01
KB
-rwxr-xr-x
grpck
66.3
KB
-rwxr-xr-x
grpconv
58.14
KB
-rwxr-xr-x
grpunconv
58.14
KB
-rwxr-xr-x
grub-install
1.14
MB
-rwxr-xr-x
grub-macbless
922.26
KB
-rwxr-xr-x
grub-mkconfig
8.46
KB
-rwxr-xr-x
grub-mkdevicemap
216.7
KB
-rwxr-xr-x
grub-probe
934.57
KB
-rwxr-xr-x
grub-reboot
4.73
KB
-rwxr-xr-x
grub-set-default
3.47
KB
-rwxr-xr-x
halt
1.29
MB
-rwxr-xr-x
haveged
30.8
KB
-rwxr-xr-x
hwclock
86.44
KB
-rwxr-xr-x
iconvconfig
30.84
KB
-rwxr-xr-x
ifconfig
82.01
KB
-rwxr-xr-x
init
90.38
KB
-rwxr-xr-x
insmod
174.27
KB
-rwxr-xr-x
install-sgmlcatalog
4.44
KB
-rwxr-xr-x
installkernel
2.6
KB
-rwxr-xr-x
invoke-rc.d
16.13
KB
-rwxr-xr-x
ip
674.82
KB
-rwxr-xr-x
ip6tables
223.16
KB
-rwxr-xr-x
ip6tables-apply
6.87
KB
-rwxr-xr-x
ip6tables-legacy
88.98
KB
-rwxr-xr-x
ip6tables-legacy-restore
88.98
KB
-rwxr-xr-x
ip6tables-legacy-save
88.98
KB
-rwxr-xr-x
ip6tables-nft
223.16
KB
-rwxr-xr-x
ip6tables-nft-restore
223.16
KB
-rwxr-xr-x
ip6tables-nft-save
223.16
KB
-rwxr-xr-x
ip6tables-restore
223.16
KB
-rwxr-xr-x
ip6tables-restore-translate
223.16
KB
-rwxr-xr-x
ip6tables-save
223.16
KB
-rwxr-xr-x
ip6tables-translate
223.16
KB
-rwxr-xr-x
ipmaddr
18.56
KB
-rwxr-xr-x
iptables
223.16
KB
-rwxr-xr-x
iptables-apply
6.87
KB
-rwxr-xr-x
iptables-legacy
88.98
KB
-rwxr-xr-x
iptables-legacy-restore
88.98
KB
-rwxr-xr-x
iptables-legacy-save
88.98
KB
-rwxr-xr-x
iptables-nft
223.16
KB
-rwxr-xr-x
iptables-nft-restore
223.16
KB
-rwxr-xr-x
iptables-nft-save
223.16
KB
-rwxr-xr-x
iptables-restore
223.16
KB
-rwxr-xr-x
iptables-restore-translate
223.16
KB
-rwxr-xr-x
iptables-save
223.16
KB
-rwxr-xr-x
iptables-translate
223.16
KB
-rwxr-xr-x
iptunnel
26.55
KB
-rwxr-xr-x
isosize
30.31
KB
-rwxr-xr-x
killall5
26.31
KB
-rwxr-xr-x
ldattach
34.31
KB
-rwxr-xr-x
ldconfig
959.84
KB
-rwxr-xr-x
locale-gen
1.38
KB
-rwxr-xr-x
logrotate
98.16
KB
-rwxr-xr-x
logsave
14.09
KB
-rwxr-xr-x
losetup
114.42
KB
-rwxr-xr-x
lsmod
174.27
KB
-rwxr-xr-x
mii-tool
27.08
KB
-rwxr-xr-x
mke2fs
138.58
KB
-rwxr-xr-x
mkfs
14.3
KB
-rwxr-xr-x
mkfs.bfs
34.31
KB
-rwxr-xr-x
mkfs.cramfs
42.24
KB
-rwxr-xr-x
mkfs.ext2
138.58
KB
-rwxr-xr-x
mkfs.ext3
138.58
KB
-rwxr-xr-x
mkfs.ext4
138.58
KB
-rwxr-xr-x
mkfs.minix
110.32
KB
-rwxr-xr-x
mkhomedir_helper
22.27
KB
-rwxr-xr-x
mkinitramfs
12.4
KB
-rwxr-xr-x
mklost+found
14.23
KB
-rwxr-xr-x
mkswap
114.31
KB
-rwxr-xr-x
modinfo
174.27
KB
-rwxr-xr-x
modprobe
174.27
KB
-rwxr-xr-x
nameif
14.65
KB
-rwxr-xr-x
netplan
798
B
-rwxr-xr-x
newusers
102.92
KB
-rwxr-xr-x
nfnl_osf
18.23
KB
-rwxr-xr-x
nologin
14.23
KB
-rwxr-xr-x
pam-auth-update
20.79
KB
-rwxr-xr-x
pam_getenv
2.82
KB
-rwxr-xr-x
pam_namespace_helper
467
B
-rwxr-xr-x
pam_timestamp_check
14.24
KB
-rwxr-xr-x
pivot_root
14.3
KB
-rwxr-xr-x
plipconfig
14.48
KB
-rwxr-xr-x
poweroff
1.29
MB
-rwxr-xr-x
pwck
58.26
KB
-rwxr-xr-x
pwconv
54.13
KB
-rwxr-xr-x
pwhistory_helper
18.24
KB
-rwxr-xr-x
pwunconv
54.17
KB
-rwxr-xr-x
rarp
37.13
KB
-rwxr-xr-x
readprofile
34.34
KB
-rwxr-xr-x
reboot
1.29
MB
-rwxr-xr-x
remove-shell
1.08
KB
-rwxr-xr-x
resize2fs
62.3
KB
-rwxr-xr-x
resolvconf
146.53
KB
-rwxr-xr-x
rmmod
174.27
KB
-rwxr-xr-x
rmt
59.02
KB
-rwxr-xr-x
rmt-tar
59.02
KB
-rwxr-xr-x
route
69.17
KB
-rwxr-xr-x
rtacct
44.37
KB
-rwxr-xr-x
rtcwake
46.31
KB
-rwxr-xr-x
rtmon
112.45
KB
-rwxr-xr-x
runlevel
1.29
MB
-rwxr-xr-x
runuser
70.31
KB
-rwxr-xr-x
service
8.89
KB
-rwxr-xr-x
setcap
14.23
KB
-rwxr-xr-x
sfdisk
142.3
KB
-rwxr-xr-x
sgdisk
202.41
KB
-rwxr-xr-x
shadowconfig
2.22
KB
-rwxr-xr-x
shutdown
1.29
MB
-rwxr-xr-x
slattach
41.2
KB
-rwxr-xr-x
sshd
1.21
MB
-rwxr-xr-x
start-stop-daemon
43.42
KB
-rwxr-xr-x
sudo_logsrvd
244.57
KB
-rwxr-xr-x
sudo_sendlog
151.41
KB
-rwxr-xr-x
sulogin
54.31
KB
-rwxr-xr-x
swaplabel
18.3
KB
-rwxr-xr-x
swapoff
22.3
KB
-rwxr-xr-x
swapon
50.3
KB
-rwxr-xr-x
switch_root
18.3
KB
-rwxr-xr-x
sync-available
1.42
KB
-rwxr-xr-x
sysctl
30.31
KB
-rwxr-xr-x
tarcat
936
B
-rwxr-xr-x
tc
574
KB
-rwxr-xr-x
tcptraceroute
1.56
KB
-rwxr-xr-x
tcptraceroute.db
1.56
KB
-rwxr-xr-x
telinit
1.29
MB
-rwxr-xr-x
tipc
152.6
KB
-rwxr-xr-x
traceroute
71.23
KB
-rwxr-xr-x
tune2fs
114.52
KB
-rwxr-xr-x
unix_chkpwd
38.24
KB
-rwxr-sr-x
unix_update
38.24
KB
-rwxr-xr-x
update-ca-certificates
5.29
KB
-rwxr-xr-x
update-catalog
9.17
KB
-rwxr-xr-x
update-grub
64
B
-rwxr-xr-x
update-grub2
64
B
-rwxr-xr-x
update-initramfs
6.75
KB
-rwxr-xr-x
update-locale
2.99
KB
-rwxr-xr-x
update-passwd
38.49
KB
-rwxr-xr-x
update-pciids
1.71
KB
-rwxr-xr-x
update-rc.d
17.33
KB
-rwxr-xr-x
update-secureboot-policy
5.13
KB
-rwxr-xr-x
update-shells
3.89
KB
-rwxr-xr-x
update-xmlcatalog
16.88
KB
-rwxr-xr-x
useradd
155.8
KB
-rwxr-xr-x
userdel
110.95
KB
-rwxr-xr-x
usermod
143.61
KB
-rwxr-xr-x
uuidd
38.81
KB
-rwxr-xr-x
validlocale
1.73
KB
-rwxr-xr-x
vdpa
116.66
KB
-rwxr-xr-x
vigr
72.64
KB
-rwxr-xr-x
vipw
72.64
KB
-rwxr-xr-x
visudo
256.63
KB
-rwxr-xr-x
wipefs
46.31
KB
-rwxr-xr-x
xtables-legacy-multi
88.98
KB
-rwxr-xr-x
xtables-monitor
223.16
KB
-rwxr-xr-x
xtables-nft-multi
223.16
KB
-rwxr-xr-x
zic
58.73
KB
-rwxr-xr-x
zramctl
114.42
KB
-rwxr-xr-x
Delete
Unzip
Zip
${this.title}
Close
Code Editor : update-xmlcatalog
#!/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__ ## ----------------------------------------------------------------------
Close