This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perldelta for 3134649473, 64ca16b728, fc5f3468dc, 89341f87f9, 8a2562bec7
[perl5.git] / pod / perlapio.pod
CommitLineData
760ac839
LW
1=head1 NAME
2
28757baa 3perlapio - perl's IO abstraction interface.
760ac839
LW
4
5=head1 SYNOPSIS
6
f185f654
KW
7 #define PERLIO_NOT_STDIO 0 /* For co-existence with stdio only */
8 #include <perlio.h> /* Usually via #include <perl.h> */
9
10 PerlIO *PerlIO_stdin(void);
11 PerlIO *PerlIO_stdout(void);
12 PerlIO *PerlIO_stderr(void);
13
14 PerlIO *PerlIO_open(const char *path,const char *mode);
15 PerlIO *PerlIO_fdopen(int fd, const char *mode);
16 PerlIO *PerlIO_reopen(const char *path, /* deprecated */
17 const char *mode, PerlIO *old);
18 int PerlIO_close(PerlIO *f);
19
20 int PerlIO_stdoutf(const char *fmt,...)
21 int PerlIO_puts(PerlIO *f,const char *string);
22 int PerlIO_putc(PerlIO *f,int ch);
23 SSize_t PerlIO_write(PerlIO *f,const void *buf,size_t numbytes);
24 int PerlIO_printf(PerlIO *f, const char *fmt,...);
25 int PerlIO_vprintf(PerlIO *f, const char *fmt, va_list args);
26 int PerlIO_flush(PerlIO *f);
27
28 int PerlIO_eof(PerlIO *f);
29 int PerlIO_error(PerlIO *f);
30 void PerlIO_clearerr(PerlIO *f);
31
32 int PerlIO_getc(PerlIO *d);
33 int PerlIO_ungetc(PerlIO *f,int ch);
34 SSize_t PerlIO_read(PerlIO *f, void *buf, size_t numbytes);
35
36 int PerlIO_fileno(PerlIO *f);
37
38 void PerlIO_setlinebuf(PerlIO *f);
39
40 Off_t PerlIO_tell(PerlIO *f);
41 int PerlIO_seek(PerlIO *f, Off_t offset, int whence);
42 void PerlIO_rewind(PerlIO *f);
43
44 int PerlIO_getpos(PerlIO *f, SV *save); /* prototype changed */
45 int PerlIO_setpos(PerlIO *f, SV *saved); /* prototype changed */
46
47 int PerlIO_fast_gets(PerlIO *f);
48 int PerlIO_has_cntptr(PerlIO *f);
49 SSize_t PerlIO_get_cnt(PerlIO *f);
50 char *PerlIO_get_ptr(PerlIO *f);
51 void PerlIO_set_ptrcnt(PerlIO *f, char *ptr, SSize_t count);
52
53 int PerlIO_canset_cnt(PerlIO *f); /* deprecated */
54 void PerlIO_set_cnt(PerlIO *f, int count); /* deprecated */
55
56 int PerlIO_has_base(PerlIO *f);
57 char *PerlIO_get_base(PerlIO *f);
58 SSize_t PerlIO_get_bufsiz(PerlIO *f);
59
60 PerlIO *PerlIO_importFILE(FILE *stdio, const char *mode);
463029d7 61 FILE *PerlIO_exportFILE(PerlIO *f, const char *mode);
f185f654
KW
62 FILE *PerlIO_findFILE(PerlIO *f);
63 void PerlIO_releaseFILE(PerlIO *f,FILE *stdio);
64
65 int PerlIO_apply_layers(PerlIO *f, const char *mode,
66 const char *layers);
67 int PerlIO_binmode(PerlIO *f, int ptype, int imode,
68 const char *layers);
678f21a2
KW
69 void PerlIO_debug(const char *fmt,...);
70
71=for apidoc Amh|int |PerlIO_apply_layers|PerlIO *f|const char *mode|const char *layers
72=for apidoc Amh|int |PerlIO_binmode|PerlIO *f|int ptype|int imode|const char *layers
73=for apidoc ATmh|int |PerlIO_canset_cnt|PerlIO *f
74=for apidoc Amh|void |PerlIO_debug|const char *fmt|...
75=for apidoc ATmh|FILE *|PerlIO_exportFILE|PerlIO *f|const char *mode
76=for apidoc ATmh|int |PerlIO_fast_gets|PerlIO *f
77=for apidoc ATmh|PerlIO*|PerlIO_fdopen|int fd|const char *mode
78=for apidoc ATmh|FILE *|PerlIO_findFILE|PerlIO *f
79=for apidoc ATmh|int |PerlIO_getc|PerlIO *d
80=for apidoc ATmh|int |PerlIO_getpos|PerlIO *f|SV *save
81=for apidoc ATmh|int |PerlIO_has_base|PerlIO *f
82=for apidoc ATmh|int |PerlIO_has_cntptr|PerlIO *f
83=for apidoc ATmh|PerlIO*|PerlIO_importFILE|FILE *stdio|const char *mode
84=for apidoc ATmh|PerlIO*|PerlIO_open|const char *path|const char *mode
85=for apidoc Amh|int |PerlIO_printf|PerlIO *f|const char *fmt|...
86=for apidoc ATmh|int |PerlIO_putc|PerlIO *f|int ch
87=for apidoc ATmh|int |PerlIO_puts|PerlIO *f|const char *string
88=for apidoc ATmh|void |PerlIO_releaseFILE|PerlIO *f|FILE *stdio
89=for apidoc Amh|PerlIO *|PerlIO_reopen|const char *path|const char *mode|PerlIO *old
90=for apidoc ATmh|void |PerlIO_rewind|PerlIO *f
91=for apidoc ATmh|int |PerlIO_setpos|PerlIO *f|SV *saved
92=for apidoc Amh|int |PerlIO_stdoutf|const char *fmt|...
93=for apidoc ATmh|int |PerlIO_ungetc|PerlIO *f|int ch
94=for apidoc ATmh|int |PerlIO_vprintf|PerlIO *f|const char *fmt|va_list args
95
96=for apidoc PerlIO_stdin
97=for apidoc PerlIO_stdout
98=for apidoc PerlIO_stderr
99=for apidoc PerlIO_close
100=for apidoc PerlIO_write
101=for apidoc PerlIO_flush
102=for apidoc PerlIO_eof
103=for apidoc PerlIO_error
104=for apidoc PerlIO_clearerr
105=for apidoc PerlIO_read
106=for apidoc PerlIO_fileno
107=for apidoc PerlIO_setlinebuf
108=for apidoc PerlIO_tell
109=for apidoc PerlIO_seek
110=for apidoc PerlIO_get_cnt
111=for apidoc PerlIO_get_ptr
112=for apidoc PerlIO_set_ptrcnt
113=for apidoc PerlIO_set_cnt
114=for apidoc PerlIO_get_base
115=for apidoc PerlIO_get_bufsiz
760ac839
LW
116
117=head1 DESCRIPTION
118
06936a3c
PN
119Perl's source code, and extensions that want maximum portability,
120should use the above functions instead of those defined in ANSI C's
121I<stdio.h>. The perl headers (in particular "perlio.h") will
122C<#define> them to the I/O mechanism selected at Configure time.
760ac839
LW
123
124The functions are modeled on those in I<stdio.h>, but parameter order
125has been "tidied up a little".
126
06936a3c
PN
127C<PerlIO *> takes the place of FILE *. Like FILE * it should be
128treated as opaque (it is probably safe to assume it is a pointer to
129something).
50b80e25 130
1549f383 131There are currently two implementations:
50b80e25 132
760ac839
LW
133=over 4
134
50b80e25 135=item 1. USE_STDIO
760ac839 136
06936a3c
PN
137All above are #define'd to stdio functions or are trivial wrapper
138functions which call stdio. In this case I<only> PerlIO * is a FILE *.
139This has been the default implementation since the abstraction was
140introduced in perl5.003_02.
50b80e25 141
97cb92d6 142=item 2. USE_PERLIO
50b80e25 143
06936a3c
PN
144Introduced just after perl5.7.0, this is a re-implementation of the
145above abstraction which allows perl more control over how IO is done
146as it decouples IO from the way the operating system and C library
147choose to do things. For USE_PERLIO PerlIO * has an extra layer of
148indirection - it is a pointer-to-a-pointer. This allows the PerlIO *
210b36aa 149to remain with a known value while swapping the implementation around
06936a3c
PN
150underneath I<at run time>. In this case all the above are true (but
151very simple) functions which call the underlying implementation.
50b80e25 152
06936a3c
PN
153This is the only implementation for which C<PerlIO_apply_layers()>
154does anything "interesting".
50b80e25
NIS
155
156The USE_PERLIO implementation is described in L<perliol>.
157
158=back
159
06936a3c 160Because "perlio.h" is a thin layer (for efficiency) the semantics of
39ac7f1b
LS
161these functions are somewhat dependent on the underlying implementation.
162Where these variations are understood they are noted below.
50b80e25 163
39ac7f1b
LS
164Unless otherwise noted, functions return 0 on success, or a negative
165value (usually C<EOF> which is usually -1) and set C<errno> on error.
50b80e25
NIS
166
167=over 4
760ac839
LW
168
169=item B<PerlIO_stdin()>, B<PerlIO_stdout()>, B<PerlIO_stderr()>
170
171Use these rather than C<stdin>, C<stdout>, C<stderr>. They are written
172to look like "function calls" rather than variables because this makes
54310121 173it easier to I<make them> function calls if platform cannot export data
174to loaded modules, or if (say) different "threads" might have different
760ac839
LW
175values.
176
177=item B<PerlIO_open(path, mode)>, B<PerlIO_fdopen(fd,mode)>
178
3039a93d 179These correspond to fopen()/fdopen() and the arguments are the same.
06936a3c
PN
180Return C<NULL> and set C<errno> if there is an error. There may be an
181implementation limit on the number of open handles, which may be lower
182than the limit on the number of open files - C<errno> may not be set
210b36aa 183when C<NULL> is returned if this limit is exceeded.
50b80e25 184
11e1c8f2 185=item B<PerlIO_reopen(path,mode,f)>
50b80e25 186
8cc92bd4 187While this currently exists in both implementations, perl itself
50b80e25
NIS
188does not use it. I<As perl does not use it, it is not well tested.>
189
06936a3c
PN
190Perl prefers to C<dup> the new low-level descriptor to the descriptor
191used by the existing PerlIO. This may become the behaviour of this
192function in the future.
760ac839
LW
193
194=item B<PerlIO_printf(f,fmt,...)>, B<PerlIO_vprintf(f,fmt,a)>
195
7b8d334a 196These are fprintf()/vfprintf() equivalents.
760ac839
LW
197
198=item B<PerlIO_stdoutf(fmt,...)>
199
200This is printf() equivalent. printf is #defined to this function,
84dc3c4d 201so it is (currently) legal to use C<printf(fmt,...)> in perl sources.
760ac839
LW
202
203=item B<PerlIO_read(f,buf,count)>, B<PerlIO_write(f,buf,count)>
204
2c2cb412
GA
205These correspond functionally to fread() and fwrite() but the
206arguments and return values are different. The PerlIO_read() and
207PerlIO_write() signatures have been modeled on the more sane low level
208read() and write() functions instead: The "file" argument is passed
209first, there is only one "count", and the return value can distinguish
210between error and C<EOF>.
211
212Returns a byte count if successful (which may be zero or
c0a503cc
JH
213positive), returns negative value and sets C<errno> on error.
214Depending on implementation C<errno> may be C<EINTR> if operation was
215interrupted by a signal.
760ac839
LW
216
217=item B<PerlIO_close(f)>
218
06936a3c
PN
219Depending on implementation C<errno> may be C<EINTR> if operation was
220interrupted by a signal.
50b80e25 221
21917246 222=item B<PerlIO_puts(f,s)>, B<PerlIO_putc(f,c)>
760ac839 223
54310121 224These correspond to fputs() and fputc().
760ac839
LW
225Note that arguments have been revised to have "file" first.
226
21917246 227=item B<PerlIO_ungetc(f,c)>
760ac839 228
06936a3c
PN
229This corresponds to ungetc(). Note that arguments have been revised
230to have "file" first. Arranges that next read operation will return
231the byte B<c>. Despite the implied "character" in the name only
232values in the range 0..0xFF are defined. Returns the byte B<c> on
233success or -1 (C<EOF>) on error. The number of bytes that can be
234"pushed back" may vary, only 1 character is certain, and then only if
235it is the last character that was read from the handle.
760ac839
LW
236
237=item B<PerlIO_getc(f)>
238
239This corresponds to getc().
50b80e25 240Despite the c in the name only byte range 0..0xFF is supported.
3039a93d 241Returns the character read or -1 (C<EOF>) on error.
760ac839
LW
242
243=item B<PerlIO_eof(f)>
244
06936a3c
PN
245This corresponds to feof(). Returns a true/false indication of
246whether the handle is at end of file. For terminal devices this may
247or may not be "sticky" depending on the implementation. The flag is
248cleared by PerlIO_seek(), or PerlIO_rewind().
760ac839
LW
249
250=item B<PerlIO_error(f)>
251
06936a3c
PN
252This corresponds to ferror(). Returns a true/false indication of
253whether there has been an IO error on the handle.
760ac839
LW
254
255=item B<PerlIO_fileno(f)>
256
06936a3c
PN
257This corresponds to fileno(), note that on some platforms, the meaning
258of "fileno" may not match Unix. Returns -1 if the handle has no open
259descriptor associated with it.
760ac839
LW
260
261=item B<PerlIO_clearerr(f)>
262
06936a3c
PN
263This corresponds to clearerr(), i.e., clears 'error' and (usually)
264'eof' flags for the "stream". Does not return a value.
760ac839
LW
265
266=item B<PerlIO_flush(f)>
267
06936a3c
PN
268This corresponds to fflush(). Sends any buffered write data to the
269underlying file. If called with C<NULL> this may flush all open
fa11829f 270streams (or core dump with some USE_STDIO implementations). Calling
c0a503cc
JH
271on a handle open for read only, or on which last operation was a read
272of some kind may lead to undefined behaviour on some USE_STDIO
273implementations. The USE_PERLIO (layers) implementation tries to
274behave better: it flushes all open streams when passed C<NULL>, and
275attempts to retain data on read streams either in the buffer or by
276seeking the handle to the current logical position.
760ac839 277
50b80e25 278=item B<PerlIO_seek(f,offset,whence)>
760ac839 279
06936a3c
PN
280This corresponds to fseek(). Sends buffered write data to the
281underlying file, or discards any buffered read data, then positions
d7f8936a 282the file descriptor as specified by B<offset> and B<whence> (sic).
06936a3c
PN
283This is the correct thing to do when switching between read and write
284on the same handle (see issues with PerlIO_flush() above). Offset is
285of type C<Off_t> which is a perl Configure value which may not be same
50b80e25 286as stdio's C<off_t>.
760ac839 287
50b80e25 288=item B<PerlIO_tell(f)>
760ac839 289
06936a3c
PN
290This corresponds to ftell(). Returns the current file position, or
291(Off_t) -1 on error. May just return value system "knows" without
292making a system call or checking the underlying file descriptor (so
293use on shared file descriptors is not safe without a
294PerlIO_seek()). Return value is of type C<Off_t> which is a perl
295Configure value which may not be same as stdio's C<off_t>.
760ac839
LW
296
297=item B<PerlIO_getpos(f,p)>, B<PerlIO_setpos(f,p)>
298
06936a3c
PN
299These correspond (loosely) to fgetpos() and fsetpos(). Rather than
300stdio's Fpos_t they expect a "Perl Scalar Value" to be passed. What is
301stored there should be considered opaque. The layout of the data may
302vary from handle to handle. When not using stdio or if platform does
303not have the stdio calls then they are implemented in terms of
304PerlIO_tell() and PerlIO_seek().
760ac839
LW
305
306=item B<PerlIO_rewind(f)>
307
50b80e25
NIS
308This corresponds to rewind(). It is usually defined as being
309
310 PerlIO_seek(f,(Off_t)0L, SEEK_SET);
311 PerlIO_clearerr(f);
312
760ac839
LW
313=item B<PerlIO_tmpfile()>
314
06936a3c
PN
315This corresponds to tmpfile(), i.e., returns an anonymous PerlIO or
316NULL on error. The system will attempt to automatically delete the
317file when closed. On Unix the file is usually C<unlink>-ed just after
318it is created so it does not matter how it gets closed. On other
319systems the file may only be deleted if closed via PerlIO_close()
320and/or the program exits via C<exit>. Depending on the implementation
321there may be "race conditions" which allow other processes access to
322the file, though in general it will be safer in this regard than
323ad. hoc. schemes.
50b80e25
NIS
324
325=item B<PerlIO_setlinebuf(f)>
326
06936a3c
PN
327This corresponds to setlinebuf(). Does not return a value. What
328constitutes a "line" is implementation dependent but usually means
329that writing "\n" flushes the buffer. What happens with things like
330"this\nthat" is uncertain. (Perl core uses it I<only> when "dumping";
331it has nothing to do with $| auto-flush.)
760ac839 332
54310121 333=back
760ac839 334
510d21e9 335=head2 Co-existence with stdio
760ac839 336
510d21e9 337There is outline support for co-existence of PerlIO with stdio.
06936a3c
PN
338Obviously if PerlIO is implemented in terms of stdio there is no
339problem. However in other cases then mechanisms must exist to create a
340FILE * which can be passed to library code which is going to use stdio
341calls.
50b80e25 342
210b36aa 343The first step is to add this line:
50b80e25
NIS
344
345 #define PERLIO_NOT_STDIO 0
346
06936a3c
PN
347I<before> including any perl header files. (This will probably become
348the default at some point). That prevents "perlio.h" from attempting
349to #define stdio functions onto PerlIO functions.
50b80e25 350
06936a3c
PN
351XS code is probably better using "typemap" if it expects FILE *
352arguments. The standard typemap will be adjusted to comprehend any
353changes in this area.
760ac839
LW
354
355=over 4
356
4b069b44 357=item B<PerlIO_importFILE(f,mode)>
760ac839 358
22569500 359Used to get a PerlIO * from a FILE *.
760ac839 360
c0a503cc
JH
361The mode argument should be a string as would be passed to
362fopen/PerlIO_open. If it is NULL then - for legacy support - the code
363will (depending upon the platform and the implementation) either
364attempt to empirically determine the mode in which I<f> is open, or
365use "r+" to indicate a read/write stream.
22569500
NIS
366
367Once called the FILE * should I<ONLY> be closed by calling
368C<PerlIO_close()> on the returned PerlIO *.
369
f504ae08
LC
370The PerlIO is set to textmode. Use PerlIO_binmode if this is
371not the desired mode.
372
b9d6bf13
JH
373This is B<not> the reverse of PerlIO_exportFILE().
374
4b069b44 375=item B<PerlIO_exportFILE(f,mode)>
760ac839 376
8dcb5783 377Given a PerlIO * create a 'native' FILE * suitable for passing to code
c0a503cc
JH
378expecting to be compiled and linked with ANSI C I<stdio.h>. The mode
379argument should be a string as would be passed to fopen/PerlIO_open.
380If it is NULL then - for legacy support - the FILE * is opened in same
381mode as the PerlIO *.
382
383The fact that such a FILE * has been 'exported' is recorded, (normally
384by pushing a new :stdio "layer" onto the PerlIO *), which may affect
385future PerlIO operations on the original PerlIO *. You should not
386call C<fclose()> on the file unless you call C<PerlIO_releaseFILE()>
387to disassociate it from the PerlIO *. (Do not use PerlIO_importFILE()
388for doing the disassociation.)
760ac839 389
22569500
NIS
390Calling this function repeatedly will create a FILE * on each call
391(and will push an :stdio layer each time as well).
760ac839
LW
392
393=item B<PerlIO_releaseFILE(p,f)>
394
06936a3c 395Calling PerlIO_releaseFILE informs PerlIO that all use of FILE * is
65dabbe3
LC
396complete. It is removed from the list of 'exported' FILE *s, and the
397associated PerlIO * should revert to its original behaviour.
760ac839 398
b9d6bf13
JH
399Use this to disassociate a file from a PerlIO * that was associated
400using PerlIO_exportFILE().
401
22569500
NIS
402=item B<PerlIO_findFILE(f)>
403
404Returns a native FILE * used by a stdio layer. If there is none, it
405will create one with PerlIO_exportFILE. In either case the FILE *
65dabbe3 406should be considered as belonging to PerlIO subsystem and should
22569500
NIS
407only be closed by calling C<PerlIO_close()>.
408
8dcb5783 409
760ac839
LW
410=back
411
50b80e25
NIS
412=head2 "Fast gets" Functions
413
06936a3c
PN
414In addition to standard-like API defined so far above there is an
415"implementation" interface which allows perl to get at internals of
416PerlIO. The following calls correspond to the various FILE_xxx macros
417determined by Configure - or their equivalent in other
418implementations. This section is really of interest to only those
419concerned with detailed perl-core behaviour, implementing a PerlIO
420mapping or writing code which can make use of the "read ahead" that
421has been done by the IO system in the same way perl does. Note that
422any code that uses these interfaces must be prepared to do things the
423traditional way if a handle does not support them.
760ac839
LW
424
425=over 4
426
50b80e25 427=item B<PerlIO_fast_gets(f)>
760ac839 428
50b80e25 429Returns true if implementation has all the interfaces required to
c0a503cc
JH
430allow perl's C<sv_gets> to "bypass" normal IO mechanism. This can
431vary from handle to handle.
760ac839 432
50b80e25
NIS
433 PerlIO_fast_gets(f) = PerlIO_has_cntptr(f) && \
434 PerlIO_canset_cnt(f) && \
ccf3535a 435 'Can set pointer into buffer'
760ac839 436
50b80e25 437=item B<PerlIO_has_cntptr(f)>
760ac839 438
06936a3c
PN
439Implementation can return pointer to current position in the "buffer"
440and a count of bytes available in the buffer. Do not use this - use
441PerlIO_fast_gets.
760ac839 442
50b80e25 443=item B<PerlIO_get_cnt(f)>
760ac839 444
06936a3c
PN
445Return count of readable bytes in the buffer. Zero or negative return
446means no more bytes available.
760ac839 447
50b80e25 448=item B<PerlIO_get_ptr(f)>
760ac839 449
06936a3c
PN
450Return pointer to next readable byte in buffer, accessing via the
451pointer (dereferencing) is only safe if PerlIO_get_cnt() has returned
452a positive value. Only positive offsets up to value returned by
453PerlIO_get_cnt() are allowed.
760ac839
LW
454
455=item B<PerlIO_set_ptrcnt(f,p,c)>
456
54310121 457Set pointer into buffer, and a count of bytes still in the
06936a3c
PN
458buffer. Should be used only to set pointer to within range implied by
459previous calls to C<PerlIO_get_ptr> and C<PerlIO_get_cnt>. The two
460values I<must> be consistent with each other (implementation may only
461use one or the other or may require both).
50b80e25
NIS
462
463=item B<PerlIO_canset_cnt(f)>
464
465Implementation can adjust its idea of number of bytes in the buffer.
466Do not use this - use PerlIO_fast_gets.
760ac839
LW
467
468=item B<PerlIO_set_cnt(f,c)>
469
06936a3c
PN
470Obscure - set count of bytes in the buffer. Deprecated. Only usable
471if PerlIO_canset_cnt() returns true. Currently used in only doio.c to
472force count less than -1 to -1. Perhaps should be PerlIO_set_empty or
473similar. This call may actually do nothing if "count" is deduced from
474pointer and a "limit". Do not use this - use PerlIO_set_ptrcnt().
760ac839
LW
475
476=item B<PerlIO_has_base(f)>
477
50b80e25 478Returns true if implementation has a buffer, and can return pointer
760ac839
LW
479to whole buffer and its size. Used by perl for B<-T> / B<-B> tests.
480Other uses would be very obscure...
481
482=item B<PerlIO_get_base(f)>
483
50b80e25
NIS
484Return I<start> of buffer. Access only positive offsets in the buffer
485up to the value returned by PerlIO_get_bufsiz().
760ac839
LW
486
487=item B<PerlIO_get_bufsiz(f)>
488
06936a3c
PN
489Return the I<total number of bytes> in the buffer, this is neither the
490number that can be read, nor the amount of memory allocated to the
491buffer. Rather it is what the operating system and/or implementation
492happened to C<read()> (or whatever) last time IO was requested.
50b80e25
NIS
493
494=back
495
496=head2 Other Functions
497
498=over 4
499
500=item PerlIO_apply_layers(f,mode,layers)
501
502The new interface to the USE_PERLIO implementation. The layers ":crlf"
503and ":raw" are only ones allowed for other implementations and those
c0a503cc
JH
504are silently ignored. (As of perl5.8 ":raw" is deprecated.) Use
505PerlIO_binmode() below for the portable case.
50b80e25
NIS
506
507=item PerlIO_binmode(f,ptype,imode,layers)
508
509The hook used by perl's C<binmode> operator.
210b36aa 510B<ptype> is perl's character for the kind of IO:
50b80e25
NIS
511
512=over 8
513
11e1c8f2 514=item 'E<lt>' read
50b80e25 515
11e1c8f2 516=item 'E<gt>' write
50b80e25
NIS
517
518=item '+' read/write
519
520=back
521
522B<imode> is C<O_BINARY> or C<O_TEXT>.
523
c0a503cc
JH
524B<layers> is a string of layers to apply, only ":crlf" makes sense in
525the non USE_PERLIO case. (As of perl5.8 ":raw" is deprecated in favour
526of passing NULL.)
50b80e25
NIS
527
528Portable cases are:
529
9849c14c 530 PerlIO_binmode(f,ptype,O_BINARY,NULL);
50b80e25
NIS
531and
532 PerlIO_binmode(f,ptype,O_TEXT,":crlf");
533
06936a3c
PN
534On Unix these calls probably have no effect whatsoever. Elsewhere
535they alter "\n" to CR,LF translation and possibly cause a special text
536"end of file" indicator to be written or honoured on read. The effect
537of making the call after doing any IO to the handle depends on the
538implementation. (It may be ignored, affect any data which is already
539buffered as well, or only apply to subsequent data.)
50b80e25
NIS
540
541=item PerlIO_debug(fmt,...)
542
06936a3c
PN
543PerlIO_debug is a printf()-like function which can be used for
544debugging. No return value. Its main use is inside PerlIO where using
545real printf, warn() etc. would recursively call PerlIO and be a
546problem.
50b80e25 547
2104c695
CB
548PerlIO_debug writes to the file named by $ENV{'PERLIO_DEBUG'} or defaults
549to stderr if the environment variable is not defined. Typical
06936a3c 550use might be
50b80e25 551
ada498b9 552 Bourne shells (sh, ksh, bash, zsh, ash, ...):
2104c695 553 PERLIO_DEBUG=/tmp/perliodebug.log ./perl -Di somescript some args
50b80e25 554
ada498b9 555 Csh/Tcsh:
2104c695
CB
556 setenv PERLIO_DEBUG /tmp/perliodebug.log
557 ./perl -Di somescript some args
50b80e25 558
ada498b9 559 If you have the "env" utility:
2104c695 560 env PERLIO_DEBUG=/tmp/perliodebug.log ./perl -Di somescript args
ada498b9 561
50b80e25 562 Win32:
2104c695
CB
563 set PERLIO_DEBUG=perliodebug.log
564 perl -Di somescript some args
50b80e25 565
2104c695
CB
566On a Perl built without C<-DDEBUGGING>, or when the C<-Di> command-line switch
567is not specified, or under taint, PerlIO_debug() is a no-op.
760ac839 568
54310121 569=back