diff options
author | Andreas Mair <amair.sob@googlemail.com> | 2005-04-12 12:32:06 +0200 |
---|---|---|
committer | Andreas Mair <amair.sob@googlemail.com> | 2005-04-12 12:32:06 +0200 |
commit | 022c4f162d7b83cb287b7d16749899d9e7c4242a (patch) | |
tree | ecc7dcf65b3e43713d9ecd36a7982dade2197f8a /lib/Temp/File-Temp-0.12/blib/man3/File::Temp.3pm | |
parent | 0d6ba991052f971564296c537887e030d13ee730 (diff) | |
download | vdradmin-am-022c4f162d7b83cb287b7d16749899d9e7c4242a.tar.gz vdradmin-am-022c4f162d7b83cb287b7d16749899d9e7c4242a.tar.bz2 |
2005-04-12: 0.97-am3.1v0.97-am3.1
- Updated Spanish i18n (Thanks to Ruediger Jung).
- Added VDR Admin man-page (Thanks to Thomas Schmidt).
- Improved detection of another running vdradmind.pl at startup (if vdradmind.pid is found but pid is not a vdradmind.pl vdradmin will start anyway).
- Added IMDb lookup button in prog_detail (Suggested by Marcus).
- Use configured Streamdev port for live streaming.
- Added warning when using EPG_DIRECT.
- Updated INSTALL file.
- Renamed i18n Español to Spanish (Requested by Ruediger Jung).
- Fixed ":" & "|" handling in timer's title and summary (Thanks to Der_Pit for pointing me to that).
- Added "Select all" to timer/autotimer/recordings list.
- Exchanged priority and lifetime textfields in config.html to match order used at other places (Requested by Ruediger Jung).
- Added vdradmin-0.95-0.9pre5-email.diff (Author: blafasel) patch: send email on timers added by AutoTimer (needs sendEmail available here: http://caspian.dotconf.net/menu/Software/SendEmail/).
- Fixed timer add/edit where date got set wrong in case it has been entered as "yyyy-mm-dd".
- Fixed problems when using MOD_GZIP (Thanks Ville Skyttä).
- Fixed Makefile once again (Thanks Zzam for pointing me to this).
- Added patches submitted by stefan.h (Thanks!):
-> New config option EPG_PRUNE. You can set a channel number up to which VDRAdmin will read EPG. Might reduce memory usage and read-in time. Set to "0" to read all channels.
-> Optimizations and bug fixes.
- Added install files for Debian (Thanks to Steffen Oberle for requesting and troubleshooting).
Diffstat (limited to 'lib/Temp/File-Temp-0.12/blib/man3/File::Temp.3pm')
-rw-r--r-- | lib/Temp/File-Temp-0.12/blib/man3/File::Temp.3pm | 681 |
1 files changed, 0 insertions, 681 deletions
diff --git a/lib/Temp/File-Temp-0.12/blib/man3/File::Temp.3pm b/lib/Temp/File-Temp-0.12/blib/man3/File::Temp.3pm deleted file mode 100644 index 1b7e1f4..0000000 --- a/lib/Temp/File-Temp-0.12/blib/man3/File::Temp.3pm +++ /dev/null @@ -1,681 +0,0 @@ -.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.14 -.\" -.\" Standard preamble: -.\" ======================================================================== -.de Sh \" Subsection heading -.br -.if t .Sp -.ne 5 -.PP -\fB\\$1\fR -.PP -.. -.de Sp \" Vertical space (when we can't use .PP) -.if t .sp .5v -.if n .sp -.. -.de Vb \" Begin verbatim text -.ft CW -.nf -.ne \\$1 -.. -.de Ve \" End verbatim text -.ft R -.fi -.. -.\" Set up some character translations and predefined strings. \*(-- will -.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left -.\" double quote, and \*(R" will give a right double quote. | will give a -.\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to -.\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C' -.\" expand to `' in nroff, nothing in troff, for use with C<>. -.tr \(*W-|\(bv\*(Tr -.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' -.ie n \{\ -. ds -- \(*W- -. ds PI pi -. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch -. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch -. ds L" "" -. ds R" "" -. ds C` "" -. ds C' "" -'br\} -.el\{\ -. ds -- \|\(em\| -. ds PI \(*p -. ds L" `` -. ds R" '' -'br\} -.\" -.\" If the F register is turned on, we'll generate index entries on stderr for -.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index -.\" entries marked with X<> in POD. Of course, you'll have to process the -.\" output yourself in some meaningful fashion. -.if \nF \{\ -. de IX -. tm Index:\\$1\t\\n%\t"\\$2" -.. -. nr % 0 -. rr F -.\} -.\" -.\" For nroff, turn off justification. Always turn off hyphenation; it makes -.\" way too many mistakes in technical documents. -.hy 0 -.if n .na -.\" -.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). -.\" Fear. Run. Save yourself. No user-serviceable parts. -. \" fudge factors for nroff and troff -.if n \{\ -. ds #H 0 -. ds #V .8m -. ds #F .3m -. ds #[ \f1 -. ds #] \fP -.\} -.if t \{\ -. ds #H ((1u-(\\\\n(.fu%2u))*.13m) -. ds #V .6m -. ds #F 0 -. ds #[ \& -. ds #] \& -.\} -. \" simple accents for nroff and troff -.if n \{\ -. ds ' \& -. ds ` \& -. ds ^ \& -. ds , \& -. ds ~ ~ -. ds / -.\} -.if t \{\ -. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" -. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' -. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' -. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' -. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' -. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' -.\} -. \" troff and (daisy-wheel) nroff accents -.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' -.ds 8 \h'\*(#H'\(*b\h'-\*(#H' -.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] -.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' -.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' -.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] -.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] -.ds ae a\h'-(\w'a'u*4/10)'e -.ds Ae A\h'-(\w'A'u*4/10)'E -. \" corrections for vroff -.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' -.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' -. \" for low resolution devices (crt and lpr) -.if \n(.H>23 .if \n(.V>19 \ -\{\ -. ds : e -. ds 8 ss -. ds o a -. ds d- d\h'-1'\(ga -. ds D- D\h'-1'\(hy -. ds th \o'bp' -. ds Th \o'LP' -. ds ae ae -. ds Ae AE -.\} -.rm #[ #] #H #V #F C -.\" ======================================================================== -.\" -.IX Title "Temp 3" -.TH Temp 3 "2001-02-23" "perl v5.8.5" "User Contributed Perl Documentation" -.SH "NAME" -File::Temp \- return name and handle of a temporary file safely -.SH "SYNOPSIS" -.IX Header "SYNOPSIS" -.Vb 1 -\& use File::Temp qw/ tempfile tempdir /; -.Ve -.PP -.Vb 2 -\& $dir = tempdir( CLEANUP => 1 ); -\& ($fh, $filename) = tempfile( DIR => $dir ); -.Ve -.PP -.Vb 2 -\& ($fh, $filename) = tempfile( $template, DIR => $dir); -\& ($fh, $filename) = tempfile( $template, SUFFIX => '.dat'); -.Ve -.PP -.Vb 1 -\& $fh = tempfile(); -.Ve -.PP -MkTemp family: -.PP -.Vb 1 -\& use File::Temp qw/ :mktemp /; -.Ve -.PP -.Vb 2 -\& ($fh, $file) = mkstemp( "tmpfileXXXXX" ); -\& ($fh, $file) = mkstemps( "tmpfileXXXXXX", $suffix); -.Ve -.PP -.Vb 1 -\& $tmpdir = mkdtemp( $template ); -.Ve -.PP -.Vb 1 -\& $unopened_file = mktemp( $template ); -.Ve -.PP -\&\s-1POSIX\s0 functions: -.PP -.Vb 1 -\& use File::Temp qw/ :POSIX /; -.Ve -.PP -.Vb 2 -\& $file = tmpnam(); -\& $fh = tmpfile(); -.Ve -.PP -.Vb 2 -\& ($fh, $file) = tmpnam(); -\& ($fh, $file) = tmpfile(); -.Ve -.PP -Compatibility functions: -.PP -.Vb 1 -\& $unopened_file = File::Temp::tempnam( $dir, $pfx ); -.Ve -.SH "DESCRIPTION" -.IX Header "DESCRIPTION" -\&\f(CW\*(C`File::Temp\*(C'\fR can be used to create and open temporary files in a safe way. -The \fItempfile()\fR function can be used to return the name and the open -filehandle of a temporary file. The \fItempdir()\fR function can -be used to create a temporary directory. -.PP -The security aspect of temporary file creation is emphasized such that -a filehandle and filename are returned together. This helps guarantee -that a race condition can not occur where the temporary file is -created by another process between checking for the existence of the -file and its opening. Additional security levels are provided to -check, for example, that the sticky bit is set on world writable -directories. See \*(L"safe_level\*(R" for more information. -.PP -For compatibility with popular C library functions, Perl implementations of -the \fImkstemp()\fR family of functions are provided. These are, \fImkstemp()\fR, -\&\fImkstemps()\fR, \fImkdtemp()\fR and \fImktemp()\fR. -.PP -Additionally, implementations of the standard \s-1POSIX\s0 -\&\fItmpnam()\fR and \fItmpfile()\fR functions are provided if required. -.PP -Implementations of \fImktemp()\fR, \fItmpnam()\fR, and \fItempnam()\fR are provided, -but should be used with caution since they return only a filename -that was valid when function was called, so cannot guarantee -that the file will not exist by the time the caller opens the filename. -.SH "FUNCTIONS" -.IX Header "FUNCTIONS" -This section describes the recommended interface for generating -temporary files and directories. -.IP "\fBtempfile\fR" 4 -.IX Item "tempfile" -This is the basic function to generate temporary files. -The behaviour of the file can be changed using various options: -.Sp -.Vb 1 -\& ($fh, $filename) = tempfile(); -.Ve -.Sp -Create a temporary file in the directory specified for temporary -files, as specified by the \fItmpdir()\fR function in File::Spec. -.Sp -.Vb 1 -\& ($fh, $filename) = tempfile($template); -.Ve -.Sp -Create a temporary file in the current directory using the supplied -template. Trailing `X' characters are replaced with random letters to -generate the filename. At least four `X' characters must be present -in the template. -.Sp -.Vb 1 -\& ($fh, $filename) = tempfile($template, SUFFIX => $suffix) -.Ve -.Sp -Same as previously, except that a suffix is added to the template -after the `X' translation. Useful for ensuring that a temporary -filename has a particular extension when needed by other applications. -But see the \s-1WARNING\s0 at the end. -.Sp -.Vb 1 -\& ($fh, $filename) = tempfile($template, DIR => $dir); -.Ve -.Sp -Translates the template as before except that a directory name -is specified. -.Sp -.Vb 1 -\& ($fh, $filename) = tempfile($template, UNLINK => 1); -.Ve -.Sp -Return the filename and filehandle as before except that the file is -automatically removed when the program exits. Default is for the file -to be removed if a file handle is requested and to be kept if the -filename is requested. In a scalar context (where no filename is -returned) the file is always deleted either on exit or when it is closed. -.Sp -If the template is not specified, a template is always -automatically generated. This temporary file is placed in \fItmpdir()\fR -(File::Spec) unless a directory is specified explicitly with the -\&\s-1DIR\s0 option. -.Sp -.Vb 1 -\& $fh = tempfile( $template, DIR => $dir ); -.Ve -.Sp -If called in scalar context, only the filehandle is returned -and the file will automatically be deleted when closed (see -the description of \fItmpfile()\fR elsewhere in this document). -This is the preferred mode of operation, as if you only -have a filehandle, you can never create a race condition -by fumbling with the filename. On systems that can not unlink -an open file or can not mark a file as temporary when it is opened -(for example, Windows \s-1NT\s0 uses the \f(CW\*(C`O_TEMPORARY\*(C'\fR flag)) -the file is marked for deletion when the program ends (equivalent -to setting \s-1UNLINK\s0 to 1). The \f(CW\*(C`UNLINK\*(C'\fR flag is ignored if present. -.Sp -.Vb 1 -\& (undef, $filename) = tempfile($template, OPEN => 0); -.Ve -.Sp -This will return the filename based on the template but -will not open this file. Cannot be used in conjunction with -\&\s-1UNLINK\s0 set to true. Default is to always open the file -to protect from possible race conditions. A warning is issued -if warnings are turned on. Consider using the \fItmpnam()\fR -and \fImktemp()\fR functions described elsewhere in this document -if opening the file is not required. -.Sp -Options can be combined as required. -.IP "\fBtempdir\fR" 4 -.IX Item "tempdir" -This is the recommended interface for creation of temporary directories. -The behaviour of the function depends on the arguments: -.Sp -.Vb 1 -\& $tempdir = tempdir(); -.Ve -.Sp -Create a directory in \fItmpdir()\fR (see File::Spec). -.Sp -.Vb 1 -\& $tempdir = tempdir( $template ); -.Ve -.Sp -Create a directory from the supplied template. This template is -similar to that described for \fItempfile()\fR. `X' characters at the end -of the template are replaced with random letters to construct the -directory name. At least four `X' characters must be in the template. -.Sp -.Vb 1 -\& $tempdir = tempdir ( DIR => $dir ); -.Ve -.Sp -Specifies the directory to use for the temporary directory. -The temporary directory name is derived from an internal template. -.Sp -.Vb 1 -\& $tempdir = tempdir ( $template, DIR => $dir ); -.Ve -.Sp -Prepend the supplied directory name to the template. The template -should not include parent directory specifications itself. Any parent -directory specifications are removed from the template before -prepending the supplied directory. -.Sp -.Vb 1 -\& $tempdir = tempdir ( $template, TMPDIR => 1 ); -.Ve -.Sp -Using the supplied template, creat the temporary directory in -a standard location for temporary files. Equivalent to doing -.Sp -.Vb 1 -\& $tempdir = tempdir ( $template, DIR => File::Spec->tmpdir); -.Ve -.Sp -but shorter. Parent directory specifications are stripped from the -template itself. The \f(CW\*(C`TMPDIR\*(C'\fR option is ignored if \f(CW\*(C`DIR\*(C'\fR is set -explicitly. Additionally, \f(CW\*(C`TMPDIR\*(C'\fR is implied if neither a template -nor a directory are supplied. -.Sp -.Vb 1 -\& $tempdir = tempdir( $template, CLEANUP => 1); -.Ve -.Sp -Create a temporary directory using the supplied template, but -attempt to remove it (and all files inside it) when the program -exits. Note that an attempt will be made to remove all files from -the directory even if they were not created by this module (otherwise -why ask to clean it up?). The directory removal is made with -the \fIrmtree()\fR function from the File::Path module. -Of course, if the template is not specified, the temporary directory -will be created in \fItmpdir()\fR and will also be removed at program exit. -.SH "MKTEMP FUNCTIONS" -.IX Header "MKTEMP FUNCTIONS" -The following functions are Perl implementations of the -\&\fImktemp()\fR family of temp file generation system calls. -.IP "\fBmkstemp\fR" 4 -.IX Item "mkstemp" -Given a template, returns a filehandle to the temporary file and the name -of the file. -.Sp -.Vb 1 -\& ($fh, $name) = mkstemp( $template ); -.Ve -.Sp -In scalar context, just the filehandle is returned. -.Sp -The template may be any filename with some number of X's appended -to it, for example \fI/tmp/temp.XXXX\fR. The trailing X's are replaced -with unique alphanumeric combinations. -.IP "\fBmkstemps\fR" 4 -.IX Item "mkstemps" -Similar to \fImkstemp()\fR, except that an extra argument can be supplied -with a suffix to be appended to the template. -.Sp -.Vb 1 -\& ($fh, $name) = mkstemps( $template, $suffix ); -.Ve -.Sp -For example a template of \f(CW\*(C`testXXXXXX\*(C'\fR and suffix of \f(CW\*(C`.dat\*(C'\fR -would generate a file similar to \fItesthGji_w.dat\fR. -.Sp -Returns just the filehandle alone when called in scalar context. -.IP "\fBmkdtemp\fR" 4 -.IX Item "mkdtemp" -Create a directory from a template. The template must end in -X's that are replaced by the routine. -.Sp -.Vb 1 -\& $tmpdir_name = mkdtemp($template); -.Ve -.Sp -Returns the name of the temporary directory created. -Returns undef on failure. -.Sp -Directory must be removed by the caller. -.IP "\fBmktemp\fR" 4 -.IX Item "mktemp" -Returns a valid temporary filename but does not guarantee -that the file will not be opened by someone else. -.Sp -.Vb 1 -\& $unopened_file = mktemp($template); -.Ve -.Sp -Template is the same as that required by \fImkstemp()\fR. -.SH "POSIX FUNCTIONS" -.IX Header "POSIX FUNCTIONS" -This section describes the re-implementation of the \fItmpnam()\fR -and \fItmpfile()\fR functions described in \s-1POSIX\s0 -using the \fImkstemp()\fR from this module. -.PP -Unlike the \s-1POSIX\s0 implementations, the directory used -for the temporary file is not specified in a system include -file (\f(CW\*(C`P_tmpdir\*(C'\fR) but simply depends on the choice of \fItmpdir()\fR -returned by File::Spec. On some implementations this -location can be set using the \f(CW\*(C`TMPDIR\*(C'\fR environment variable, which -may not be secure. -If this is a problem, simply use \fImkstemp()\fR and specify a template. -.IP "\fBtmpnam\fR" 4 -.IX Item "tmpnam" -When called in scalar context, returns the full name (including path) -of a temporary file (uses \fImktemp()\fR). The only check is that the file does -not already exist, but there is no guarantee that that condition will -continue to apply. -.Sp -.Vb 1 -\& $file = tmpnam(); -.Ve -.Sp -When called in list context, a filehandle to the open file and -a filename are returned. This is achieved by calling \fImkstemp()\fR -after constructing a suitable template. -.Sp -.Vb 1 -\& ($fh, $file) = tmpnam(); -.Ve -.Sp -If possible, this form should be used to prevent possible -race conditions. -.Sp -See \*(L"tmpdir\*(R" in File::Spec for information on the choice of temporary -directory for a particular operating system. -.IP "\fBtmpfile\fR" 4 -.IX Item "tmpfile" -In scalar context, returns the filehandle of a temporary file. -.Sp -.Vb 1 -\& $fh = tmpfile(); -.Ve -.Sp -The file is removed when the filehandle is closed or when the program -exits. No access to the filename is provided. -.Sp -If the temporary file can not be created undef is returned. -Currently this command will probably not work when the temporary -directory is on an \s-1NFS\s0 file system. -.SH "ADDITIONAL FUNCTIONS" -.IX Header "ADDITIONAL FUNCTIONS" -These functions are provided for backwards compatibility -with common tempfile generation C library functions. -.PP -They are not exported and must be addressed using the full package -name. -.IP "\fBtempnam\fR" 4 -.IX Item "tempnam" -Return the name of a temporary file in the specified directory -using a prefix. The file is guaranteed not to exist at the time -the function was called, but such guarantees are good for one -clock tick only. Always use the proper form of \f(CW\*(C`sysopen\*(C'\fR -with \f(CW\*(C`O_CREAT | O_EXCL\*(C'\fR if you must open such a filename. -.Sp -.Vb 1 -\& $filename = File::Temp::tempnam( $dir, $prefix ); -.Ve -.Sp -Equivalent to running \fImktemp()\fR with \f(CW$dir\fR/$prefixXXXXXXXX -(using unix file convention as an example) -.Sp -Because this function uses \fImktemp()\fR, it can suffer from race conditions. -.SH "UTILITY FUNCTIONS" -.IX Header "UTILITY FUNCTIONS" -Useful functions for dealing with the filehandle and filename. -.IP "\fBunlink0\fR" 4 -.IX Item "unlink0" -Given an open filehandle and the associated filename, make a safe -unlink. This is achieved by first checking that the filename and -filehandle initially point to the same file and that the number of -links to the file is 1 (all fields returned by \fIstat()\fR are compared). -Then the filename is unlinked and the filehandle checked once again to -verify that the number of links on that file is now 0. This is the -closest you can come to making sure that the filename unlinked was the -same as the file whose descriptor you hold. -.Sp -.Vb 1 -\& unlink0($fh, $path) or die "Error unlinking file $path safely"; -.Ve -.Sp -Returns false on error. The filehandle is not closed since on some -occasions this is not required. -.Sp -On some platforms, for example Windows \s-1NT\s0, it is not possible to -unlink an open file (the file must be closed first). On those -platforms, the actual unlinking is deferred until the program ends and -good status is returned. A check is still performed to make sure that -the filehandle and filename are pointing to the same thing (but not at -the time the end block is executed since the deferred removal may not -have access to the filehandle). -.Sp -Additionally, on Windows \s-1NT\s0 not all the fields returned by \fIstat()\fR can -be compared. For example, the \f(CW\*(C`dev\*(C'\fR and \f(CW\*(C`rdev\*(C'\fR fields seem to be -different. Also, it seems that the size of the file returned by \fIstat()\fR -does not always agree, with \f(CW\*(C`stat(FH)\*(C'\fR being more accurate than -\&\f(CW\*(C`stat(filename)\*(C'\fR, presumably because of caching issues even when -using autoflush (this is usually overcome by waiting a while after -writing to the tempfile before attempting to \f(CW\*(C`unlink0\*(C'\fR it). -.Sp -Finally, on \s-1NFS\s0 file systems the link count of the file handle does -not always go to zero immediately after unlinking. Currently, this -command is expected to fail on \s-1NFS\s0 disks. -.SH "PACKAGE VARIABLES" -.IX Header "PACKAGE VARIABLES" -These functions control the global state of the package. -.IP "\fBsafe_level\fR" 4 -.IX Item "safe_level" -Controls the lengths to which the module will go to check the safety of the -temporary file or directory before proceeding. -Options are: -.RS 4 -.IP "\s-1STANDARD\s0" 8 -.IX Item "STANDARD" -Do the basic security measures to ensure the directory exists and -is writable, that the \fIumask()\fR is fixed before opening of the file, -that temporary files are opened only if they do not already exist, and -that possible race conditions are avoided. Finally the unlink0 -function is used to remove files safely. -.IP "\s-1MEDIUM\s0" 8 -.IX Item "MEDIUM" -In addition to the \s-1STANDARD\s0 security, the output directory is checked -to make sure that it is owned either by root or the user running the -program. If the directory is writable by group or by other, it is then -checked to make sure that the sticky bit is set. -.Sp -Will not work on platforms that do not support the \f(CW\*(C`\-k\*(C'\fR test -for sticky bit. -.IP "\s-1HIGH\s0" 8 -.IX Item "HIGH" -In addition to the \s-1MEDIUM\s0 security checks, also check for the -possibility of ``\fIchown()\fR giveaway'' using the \s-1POSIX\s0 -\&\fIsysconf()\fR function. If this is a possibility, each directory in the -path is checked in turn for safeness, recursively walking back to the -root directory. -.Sp -For platforms that do not support the \s-1POSIX\s0 -\&\f(CW\*(C`_PC_CHOWN_RESTRICTED\*(C'\fR symbol (for example, Windows \s-1NT\s0) it is -assumed that ``\fIchown()\fR giveaway'' is possible and the recursive test -is performed. -.RE -.RS 4 -.Sp -The level can be changed as follows: -.Sp -.Vb 1 -\& File::Temp->safe_level( File::Temp::HIGH ); -.Ve -.Sp -The level constants are not exported by the module. -.Sp -Currently, you must be running at least perl v5.6.0 in order to -run with \s-1MEDIUM\s0 or \s-1HIGH\s0 security. This is simply because the -safety tests use functions from Fcntl that are not -available in older versions of perl. The problem is that the version -number for Fcntl is the same in perl 5.6.0 and in 5.005_03 even though -they are different versions. -.Sp -On systems that do not support the \s-1HIGH\s0 or \s-1MEDIUM\s0 safety levels -(for example Win \s-1NT\s0 or \s-1OS/2\s0) any attempt to change the level will -be ignored. The decision to ignore rather than raise an exception -allows portable programs to be written with high security in mind -for the systems that can support this without those programs failing -on systems where the extra tests are irrelevant. -.Sp -If you really need to see whether the change has been accepted -simply examine the return value of \f(CW\*(C`safe_level\*(C'\fR. -.Sp -.Vb 3 -\& $newlevel = File::Temp->safe_level( File::Temp::HIGH ); -\& die "Could not change to high security" -\& if $newlevel != File::Temp::HIGH; -.Ve -.RE -.IP "TopSystemUID" 4 -.IX Item "TopSystemUID" -This is the highest \s-1UID\s0 on the current system that refers to a root -\&\s-1UID\s0. This is used to make sure that the temporary directory is -owned by a system \s-1UID\s0 (\f(CW\*(C`root\*(C'\fR, \f(CW\*(C`bin\*(C'\fR, \f(CW\*(C`sys\*(C'\fR etc) rather than -simply by root. -.Sp -This is required since on many unix systems \f(CW\*(C`/tmp\*(C'\fR is not owned -by root. -.Sp -Default is to assume that any \s-1UID\s0 less than or equal to 10 is a root -\&\s-1UID\s0. -.Sp -.Vb 2 -\& File::Temp->top_system_uid(10); -\& my $topid = File::Temp->top_system_uid; -.Ve -.Sp -This value can be adjusted to reduce security checking if required. -The value is only relevant when \f(CW\*(C`safe_level\*(C'\fR is set to \s-1MEDIUM\s0 or higher. -.SH "WARNING" -.IX Header "WARNING" -For maximum security, endeavour always to avoid ever looking at, -touching, or even imputing the existence of the filename. You do not -know that that filename is connected to the same file as the handle -you have, and attempts to check this can only trigger more race -conditions. It's far more secure to use the filehandle alone and -dispense with the filename altogether. -.PP -If you need to pass the handle to something that expects a filename -then, on a unix system, use \f(CW\*(C`"/dev/fd/" . fileno($fh)\*(C'\fR for arbitrary -programs, or more generally \f(CW\*(C`"+<=&" . fileno($fh)\*(C'\fR for Perl -programs. You will have to clear the close-on-exec bit on that file -descriptor before passing it to another process. -.PP -.Vb 3 -\& use Fcntl qw/F_SETFD F_GETFD/; -\& fcntl($tmpfh, F_SETFD, 0) -\& or die "Can't clear close-on-exec flag on temp fh: $!\en"; -.Ve -.Sh "Temporary files and \s-1NFS\s0" -.IX Subsection "Temporary files and NFS" -Some problems are associated with using temporary files that reside -on \s-1NFS\s0 file systems and it is recommended that a local filesystem -is used whenever possible. Some of the security tests will most probably -fail when the temp file is not local. Additionally, be aware that -the performance of I/O operations over \s-1NFS\s0 will not be as good as for -a local disk. -.SH "HISTORY" -.IX Header "HISTORY" -Originally began life in May 1999 as an \s-1XS\s0 interface to the system -\&\fImkstemp()\fR function. In March 2000, the OpenBSD \fImkstemp()\fR code was -translated to Perl for total control of the code's -security checking, to ensure the presence of the function regardless of -operating system and to help with portability. -.SH "SEE ALSO" -.IX Header "SEE ALSO" -\&\*(L"tmpnam\*(R" in \s-1POSIX\s0, \*(L"tmpfile\*(R" in \s-1POSIX\s0, File::Spec, File::Path -.PP -See IO::File and File::MkTemp for different implementations of -temporary file handling. -.SH "AUTHOR" -.IX Header "AUTHOR" -Tim Jenness <t.jenness@jach.hawaii.edu> -.PP -Copyright (C) 1999\-2001 Tim Jenness and the \s-1UK\s0 Particle Physics and -Astronomy Research Council. All Rights Reserved. This program is free -software; you can redistribute it and/or modify it under the same -terms as Perl itself. -.PP -Original Perl implementation loosely based on the OpenBSD C code for -\&\fImkstemp()\fR. Thanks to Tom Christiansen for suggesting that this module -should be written and providing ideas for code improvements and -security enhancements. |