BIO_s_fd.3ossl 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230
  1. .\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.42)
  2. .\"
  3. .\" Standard preamble:
  4. .\" ========================================================================
  5. .de Sp \" Vertical space (when we can't use .PP)
  6. .if t .sp .5v
  7. .if n .sp
  8. ..
  9. .de Vb \" Begin verbatim text
  10. .ft CW
  11. .nf
  12. .ne \\$1
  13. ..
  14. .de Ve \" End verbatim text
  15. .ft R
  16. .fi
  17. ..
  18. .\" Set up some character translations and predefined strings. \*(-- will
  19. .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
  20. .\" double quote, and \*(R" will give a right double quote. \*(C+ will
  21. .\" give a nicer C++. Capital omega is used to do unbreakable dashes and
  22. .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff,
  23. .\" nothing in troff, for use with C<>.
  24. .tr \(*W-
  25. .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
  26. .ie n \{\
  27. . ds -- \(*W-
  28. . ds PI pi
  29. . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
  30. . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
  31. . ds L" ""
  32. . ds R" ""
  33. . ds C` ""
  34. . ds C' ""
  35. 'br\}
  36. .el\{\
  37. . ds -- \|\(em\|
  38. . ds PI \(*p
  39. . ds L" ``
  40. . ds R" ''
  41. . ds C`
  42. . ds C'
  43. 'br\}
  44. .\"
  45. .\" Escape single quotes in literal strings from groff's Unicode transform.
  46. .ie \n(.g .ds Aq \(aq
  47. .el .ds Aq '
  48. .\"
  49. .\" If the F register is >0, we'll generate index entries on stderr for
  50. .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
  51. .\" entries marked with X<> in POD. Of course, you'll have to process the
  52. .\" output yourself in some meaningful fashion.
  53. .\"
  54. .\" Avoid warning from groff about undefined register 'F'.
  55. .de IX
  56. ..
  57. .nr rF 0
  58. .if \n(.g .if rF .nr rF 1
  59. .if (\n(rF:(\n(.g==0)) \{\
  60. . if \nF \{\
  61. . de IX
  62. . tm Index:\\$1\t\\n%\t"\\$2"
  63. ..
  64. . if !\nF==2 \{\
  65. . nr % 0
  66. . nr F 2
  67. . \}
  68. . \}
  69. .\}
  70. .rr rF
  71. .\"
  72. .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
  73. .\" Fear. Run. Save yourself. No user-serviceable parts.
  74. . \" fudge factors for nroff and troff
  75. .if n \{\
  76. . ds #H 0
  77. . ds #V .8m
  78. . ds #F .3m
  79. . ds #[ \f1
  80. . ds #] \fP
  81. .\}
  82. .if t \{\
  83. . ds #H ((1u-(\\\\n(.fu%2u))*.13m)
  84. . ds #V .6m
  85. . ds #F 0
  86. . ds #[ \&
  87. . ds #] \&
  88. .\}
  89. . \" simple accents for nroff and troff
  90. .if n \{\
  91. . ds ' \&
  92. . ds ` \&
  93. . ds ^ \&
  94. . ds , \&
  95. . ds ~ ~
  96. . ds /
  97. .\}
  98. .if t \{\
  99. . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
  100. . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
  101. . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
  102. . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
  103. . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
  104. . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
  105. .\}
  106. . \" troff and (daisy-wheel) nroff accents
  107. .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
  108. .ds 8 \h'\*(#H'\(*b\h'-\*(#H'
  109. .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
  110. .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
  111. .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
  112. .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
  113. .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
  114. .ds ae a\h'-(\w'a'u*4/10)'e
  115. .ds Ae A\h'-(\w'A'u*4/10)'E
  116. . \" corrections for vroff
  117. .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
  118. .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
  119. . \" for low resolution devices (crt and lpr)
  120. .if \n(.H>23 .if \n(.V>19 \
  121. \{\
  122. . ds : e
  123. . ds 8 ss
  124. . ds o a
  125. . ds d- d\h'-1'\(ga
  126. . ds D- D\h'-1'\(hy
  127. . ds th \o'bp'
  128. . ds Th \o'LP'
  129. . ds ae ae
  130. . ds Ae AE
  131. .\}
  132. .rm #[ #] #H #V #F C
  133. .\" ========================================================================
  134. .\"
  135. .IX Title "BIO_S_FD 3ossl"
  136. .TH BIO_S_FD 3ossl "2024-09-03" "3.3.2" "OpenSSL"
  137. .\" For nroff, turn off justification. Always turn off hyphenation; it makes
  138. .\" way too many mistakes in technical documents.
  139. .if n .ad l
  140. .nh
  141. .SH "NAME"
  142. BIO_s_fd, BIO_set_fd, BIO_get_fd, BIO_new_fd \- file descriptor BIO
  143. .SH "SYNOPSIS"
  144. .IX Header "SYNOPSIS"
  145. .Vb 1
  146. \& #include <openssl/bio.h>
  147. \&
  148. \& const BIO_METHOD *BIO_s_fd(void);
  149. \&
  150. \& int BIO_set_fd(BIO *b, int fd, int c);
  151. \& int BIO_get_fd(BIO *b, int *c);
  152. \&
  153. \& BIO *BIO_new_fd(int fd, int close_flag);
  154. .Ve
  155. .SH "DESCRIPTION"
  156. .IX Header "DESCRIPTION"
  157. \&\fBBIO_s_fd()\fR returns the file descriptor \s-1BIO\s0 method. This is a wrapper
  158. round the platforms file descriptor routines such as \fBread()\fR and \fBwrite()\fR.
  159. .PP
  160. \&\fBBIO_read_ex()\fR and \fBBIO_write_ex()\fR read or write the underlying descriptor.
  161. \&\fBBIO_puts()\fR is supported but \fBBIO_gets()\fR is not.
  162. .PP
  163. If the close flag is set then \fBclose()\fR is called on the underlying
  164. file descriptor when the \s-1BIO\s0 is freed.
  165. .PP
  166. \&\fBBIO_reset()\fR attempts to change the file pointer to the start of file
  167. such as by using \fBlseek(fd, 0, 0)\fR.
  168. .PP
  169. \&\fBBIO_seek()\fR sets the file pointer to position \fBofs\fR from start of file
  170. such as by using \fBlseek(fd, ofs, 0)\fR.
  171. .PP
  172. \&\fBBIO_tell()\fR returns the current file position such as by calling
  173. \&\fBlseek(fd, 0, 1)\fR.
  174. .PP
  175. \&\fBBIO_set_fd()\fR sets the file descriptor of \s-1BIO\s0 \fBb\fR to \fBfd\fR and the close
  176. flag to \fBc\fR.
  177. .PP
  178. \&\fBBIO_get_fd()\fR places the file descriptor of \s-1BIO\s0 \fBb\fR in \fBc\fR if it is not \s-1NULL.\s0
  179. It also returns the file descriptor.
  180. .PP
  181. \&\fBBIO_new_fd()\fR returns a file descriptor \s-1BIO\s0 using \fBfd\fR and \fBclose_flag\fR.
  182. .SH "NOTES"
  183. .IX Header "NOTES"
  184. The behaviour of \fBBIO_read_ex()\fR and \fBBIO_write_ex()\fR depends on the behavior of the
  185. platforms \fBread()\fR and \fBwrite()\fR calls on the descriptor. If the underlying
  186. file descriptor is in a non blocking mode then the \s-1BIO\s0 will behave in the
  187. manner described in the \fBBIO_read_ex\fR\|(3) and \fBBIO_should_retry\fR\|(3)
  188. manual pages.
  189. .PP
  190. File descriptor BIOs should not be used for socket I/O. Use socket BIOs
  191. instead.
  192. .PP
  193. \&\fBBIO_set_fd()\fR and \fBBIO_get_fd()\fR are implemented as macros.
  194. .SH "RETURN VALUES"
  195. .IX Header "RETURN VALUES"
  196. \&\fBBIO_s_fd()\fR returns the file descriptor \s-1BIO\s0 method.
  197. .PP
  198. \&\fBBIO_set_fd()\fR returns 1 on success or <=0 for failure.
  199. .PP
  200. \&\fBBIO_get_fd()\fR returns the file descriptor or \-1 if the \s-1BIO\s0 has not
  201. been initialized. It also returns zero and negative values if other error occurs.
  202. .PP
  203. \&\fBBIO_new_fd()\fR returns the newly allocated \s-1BIO\s0 or \s-1NULL\s0 is an error
  204. occurred.
  205. .SH "EXAMPLES"
  206. .IX Header "EXAMPLES"
  207. This is a file descriptor \s-1BIO\s0 version of \*(L"Hello World\*(R":
  208. .PP
  209. .Vb 1
  210. \& BIO *out;
  211. \&
  212. \& out = BIO_new_fd(fileno(stdout), BIO_NOCLOSE);
  213. \& BIO_printf(out, "Hello World\en");
  214. \& BIO_free(out);
  215. .Ve
  216. .SH "SEE ALSO"
  217. .IX Header "SEE ALSO"
  218. \&\fBBIO_seek\fR\|(3), \fBBIO_tell\fR\|(3),
  219. \&\fBBIO_reset\fR\|(3), \fBBIO_read_ex\fR\|(3),
  220. \&\fBBIO_write_ex\fR\|(3), \fBBIO_puts\fR\|(3),
  221. \&\fBBIO_gets\fR\|(3), \fBBIO_printf\fR\|(3),
  222. \&\fBBIO_set_close\fR\|(3), \fBBIO_get_close\fR\|(3)
  223. .SH "COPYRIGHT"
  224. .IX Header "COPYRIGHT"
  225. Copyright 2000\-2021 The OpenSSL Project Authors. All Rights Reserved.
  226. .PP
  227. Licensed under the Apache License 2.0 (the \*(L"License\*(R"). You may not use
  228. this file except in compliance with the License. You can obtain a copy
  229. in the file \s-1LICENSE\s0 in the source distribution or at
  230. <https://www.openssl.org/source/license.html>.