HEX

Warning: set_time_limit() [function.set-time-limit]: Cannot set time limit - prohibited by configuration in /home/u547966/brikov.ru/www/wp-content/plugins/admin-menu-editor/menu-editor.php on line 745
Server: Apache
System: Linux 4.19.0-0.bpo.9-amd64 x86_64 at red40
User: u547966 (5490)
PHP: 5.3.29-mh2
Disabled: syslog, dl, popen, proc_open, proc_nice, proc_get_status, proc_close, proc_terminate, posix_mkfifo, chown, chgrp, accelerator_reset, opcache_reset, accelerator_get_status, opcache_get_status, pcntl_alarm, pcntl_fork, pcntl_waitpid, pcntl_wait, pcntl_wifexited, pcntl_wifstopped, pcntl_wifsignaled, pcntl_wifcontinued, pcntl_wexitstatus, pcntl_wtermsig, pcntl_wstopsig, pcntl_signal, pcntl_signal_dispatch, pcntl_get_last_error, pcntl_strerror, pcntl_sigprocmask, pcntl_sigwaitinfo, pcntl_sigtimedwait, pcntl_exec, pcntl_getpriority, pcntl_setpriority
Upload Files
File: //proc/self/root/usr/sbin/install-sgmlcatalog
#!/usr/bin/perl
## ----------------------------------------------------------------------
## install-sgmlcatalog : Debian SGML catalog management tool
## ----------------------------------------------------------------------
## Copyright (c) 1997 Christian Schwarz
## Copyright (c) 2001-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.
## ----------------------------------------------------------------------

## ----------------------------------------------------------------------
use strict;
use warnings;

## ----------------------------------------------------------------------
use Getopt::Long qw( &GetOptions );

## ----------------------------------------------------------------------
$0 =~ m|[^/]+$|;

## ----------------------------------------------------------------------
my $name = $&;

## ----------------------------------------------------------------------
use vars qw( $package );
use vars qw( $quiet );

## ----------------------------------------------------------------------
Getopt::Long::Configure( 'no_ignore_case' );
if ( ! GetOptions(
		  'quiet' => \$quiet,
		  'remove=s' => \$package,
		  )
     )
{
    &usage();
    exit 1;
}

## ----------------------------------------------------------------------
if ( ! defined( $package ) )
{
    &usage();
    exit -1;
}

## ----------------------------------------------------------------------
&remove( $package );

## ----------------------------------------------------------------------
exit 0;

## ----------------------------------------------------------------------
sub remove
{

    ## ------------------------------------------------------------------
    my $package = $_[0];

    ## ----------------------------------------------------------------------
    my $catalog = '/etc/sgml/transitional.cat';
    my $backup  = '/etc/sgml/transitional.cat.old';

    ## ------------------------------------------------------------------
    return if ( ! -f $catalog );

    ## ----------------------------------------------------------------------
    my $top_marker    = '-- START SGML CATALOG ENTRY FOR PACKAGE';
    my $bottom_marker = '-- END SGML CATALOG ENTRY FOR PACKAGE';
    my $eol_marker    = '--';

    ## ------------------------------------------------------------------
    my @data;

   ## -------------------------------------------------------------------
    open( CATALOG, '<', $catalog )
	or &error( "cannot open SGML catalog $catalog for reading: $!" );

   ## -------------------------------------------------------------------
    while ( <CATALOG> )
    {
	chop;
	if ( /$top_marker $package $eol_marker/o )
	{
	    if ( $data[ $#data ] =~ /^\s*/o )
	    {
		pop( @data );
	    }
	    while ( !/$bottom_marker $package $eol_marker/o )
	    {
		if ( not ($_ = <CATALOG>) )
		{
		    &error( "cannot find bottom marker for package $package:\n    $bottom_marker $package $eol_marker\nplease remove the entry for $package manually" );
		}
	    }
	}
	else
	{
	    push( @data, $_ );
	}
    }

    ## ------------------------------------------------------------------
    close( CATALOG )
	or &error( "cannot close SGML catalog $catalog: $!" );

    ## ------------------------------------------------------------------
    if ( -f $catalog )
    {
	if ( -f $backup )
	{
	    unlink( $backup )
		or &error( "cannot remove backup of catalog $backup: $!" );
	}
	rename( $catalog, $backup )
	    or &error( "cannot rename $catalog to $backup: $!" );
    }

    ## ------------------------------------------------------------------
    open( CATALOG, '>', $catalog )
	or &error( "cannot open SGML catalog $catalog for writing: $!" );

    ## ------------------------------------------------------------------
    for ( @data )
    {
	print CATALOG "$_\n";
    }

    ## ------------------------------------------------------------------
    close( CATALOG )
	or &error( "cannot close SGML catalog $catalog: $!" );

} ## remove

## ----------------------------------------------------------------------
sub usage
{

    ## ------------------------------------------------------------------
    print STDERR <<END;
Usage:
    $name --remove package
END

} ## usage

## ----------------------------------------------------------------------
sub error
{

    ## ------------------------------------------------------------------
    die "$name: error: $_[0]\n";

} ## error

## ----------------------------------------------------------------------