Carrot

 view release on metacpan or  search on metacpan

lib/Carrot/Personality/Valued/File/Name/Type/Regular/Content/Raw.pm  view on Meta::CPAN

package Carrot::Personality::Valued::File::Name::Type::Regular::Content::Raw
# /type class
# /capability ""
{
	use strict;
	use warnings 'FATAL' => 'all';

	BEGIN {
		require('Carrot/Personality/Valued/File/Name/Type/Regular/Content/Raw./manual_modularity.pl');
	} #BEGIN

	Carrot::Meta::Greenhouse::Package_Loader::provide_instance(
		my $fatal_syscalls = '::Meta::Greenhouse::Fatal_Syscalls',
		my $translated_errors = '::Meta::Greenhouse::Translated_Errors');

# =--------------------------------------------------------------------------= #

sub read_into
# /type method
# /effect ""
# //parameters
#	buffer
# //returns
{
	my ($this) = @ARGUMENTS;

	print STDERR "READ_INTO $$this\n" if (TRACE_FLAG);
	eval {
		$fatal_syscalls->open(my $file, PKY_OPEN_MODE_READ, $$this);

		binmode($file) if (OS_NEEDS_BINMODE);

		$_[SPX_BUFFER] //= '';
		$fatal_syscalls->read(
			$file,
			$_[SPX_BUFFER],
			(stat($file))[RDX_STAT_SIZE]);

		$fatal_syscalls->close($file);
		return(IS_TRUE);

	} or $translated_errors->escalate(
		'named_file_operation',
		[$$this],
		$EVAL_ERROR);

	return;
}

sub overwrite_from
# /type method
# /effect ""
# //parameters
#	buffer
# //returns
{
	my ($this) = @ARGUMENTS;

	print STDERR "OVERWRITE_FROM $$this\n" if (TRACE_FLAG);
	eval {
		$fatal_syscalls->open(my $file, PKY_OPEN_MODE_WRITE, $$this);

		binmode($file) if (OS_NEEDS_BINMODE);

		$fatal_syscalls->truncate($file, 0);
		$fatal_syscalls->print($file, $_[SPX_BUFFER]);
		$fatal_syscalls->close($file);
		return(IS_TRUE);

	} or $translated_errors->escalate(
		'named_file_operation',
		[$$this],
		$EVAL_ERROR);

	return;
}

sub append_from
# /type method
# /effect ""
# //parameters
#	buffer
# //returns
{
	my ($this) = @ARGUMENTS;

	print STDERR "APPEND_FROM $$this\n" if (TRACE_FLAG);
	eval {
		$fatal_syscalls->open(my $file, PKY_OPEN_MODE_APPEND, $$this);

		binmode($file) if (OS_NEEDS_BINMODE);

		$fatal_syscalls->print($file, $_[SPX_BUFFER]);
		$fatal_syscalls->close($file);
		return(IS_TRUE);

	} or $translated_errors->escalate(



( run in 1.279 second using v1.01-cache-2.11-cpan-22024b96cdf )