![]() System : Linux absol.cf 5.4.0-198-generic #218-Ubuntu SMP Fri Sep 27 20:18:53 UTC 2024 x86_64 User : www-data ( 33) PHP Version : 7.4.33 Disable Function : 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_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, Directory : /usr/bin/X11/ |
Upload File : |
#!/usr/bin/perl use Archive::Cpio; use Getopt::Long; =head1 NAME cpio-filter - transform a cpio archive =head1 SYNOPSIS cpio-filter [--exclude <PATTERN>] [--in-place] [<cpio file>] =head1 DESCRIPTION Transform a cpio archive on the fly. Reads on stdin and output on stderr =head1 AUTHOR Pascal Rigaux <pixel@mandriva.com> =cut my %options = ( 'exclude=s' => \ (my $exclude), 'in-place|i' => \ (my $in_place), ); sub usage { die "usage: cpio-filter [--exclude <PATTERN>] [--in-place] [<cpio file>]\n"; } GetOptions(%options) or usage(); @ARGV <= 1 or usage(); if ($in_place) { @ARGV or die "you can't use --in-place without giving a cpio file\n"; } my ($file) = @ARGV; sub exclude { my ($e) = @_; $exclude && $e->name =~ m!(^|/)${exclude}($|/)!; } my $cpio = Archive::Cpio->new; if ($in_place) { $cpio->read($file); $cpio->remove(map { exclude($_) ? $_->name : () } $cpio->get_files); $cpio->write($file); } else { my $IN; if ($file) { open($IN, '<', $file) or die "can't open $file: $!\n"; } else { $IN = \*STDIN; } $cpio->read_with_handler($IN, sub { my ($e) = @_; $cpio->write_one(\*STDOUT, $e) if !exclude($e); }); $cpio->write_trailer(\*STDOUT); }