#!/usr/bin/perl --
use strict; use warnings; use Data::Dump;
use Fcntl();
my %mode2symbol = (
#~ Fcntl::F_DUPFD() => '&',
Fcntl::O_RDONLY() => '<',
Fcntl::O_RDWR() => '+<',
Fcntl::O_TRUNC() => '>',
Fcntl::O_WRONLY() => '>',
Fcntl::O_APPEND() => '>>',
Fcntl::O_CREAT() => '>',
);
my %name2mode = (
#~ F_DUPFD => Fcntl::F_DUPFD(),
O_RDONLY => Fcntl::O_RDONLY(),
O_RDWR => Fcntl::O_RDWR(),
O_TRUNC => Fcntl::O_TRUNC(),
O_WRONLY => Fcntl::O_WRONLY(),
O_APPEND => Fcntl::O_APPEND(),
O_CREAT => Fcntl::O_CREAT(),
);
$mode2symbol{ $name2mode{O_RDWR} | $name2mode{O_APPEND} } = '+>>';
$mode2symbol{ $name2mode{O_RDONLY} | $name2mode{O_APPEND} } = '+>>';
$mode2symbol{ $name2mode{O_WRONLY} | $name2mode{O_APPEND} } = '+>>';
dd \%mode2symbol;
dd \%name2mode;
__END__
{
"0" => "<",
"1" => ">",
"2" => "+<",
"8" => "+>>",
"9" => "+>>",
"10" => "+>>",
"256" => ">",
"512" => ">",
}
{
O_APPEND => 8,
O_CREAT => 256,
O_RDONLY => 0,
O_RDWR => 2,
O_TRUNC => 512,
O_WRONLY => 1,
}
|