003 File Manager
Current Path:
/usr/src/lib/libc/stdio
usr
/
src
/
lib
/
libc
/
stdio
/
📁
..
📄
Makefile.inc
(3.9 KB)
📄
Symbol.map
(2.58 KB)
📄
_flock_stub.c
(3.65 KB)
📄
asprintf.c
(2.34 KB)
📄
clrerr.c
(2.13 KB)
📄
dprintf.c
(1.68 KB)
📄
fclose.3
(4.04 KB)
📄
fclose.c
(3.66 KB)
📄
fcloseall.c
(1.55 KB)
📄
fdopen.c
(3.41 KB)
📄
feof.c
(2.14 KB)
📄
ferror.3
(3.67 KB)
📄
ferror.c
(2.16 KB)
📄
fflush.3
(3.67 KB)
📄
fflush.c
(4.15 KB)
📄
fgetc.c
(2.18 KB)
📄
fgetln.3
(4.45 KB)
📄
fgetln.c
(4.62 KB)
📄
fgetpos.c
(2.07 KB)
📄
fgets.3
(3.76 KB)
📄
fgets.c
(3.37 KB)
📄
fgetwc.c
(3.02 KB)
📄
fgetwln.3
(3.49 KB)
📄
fgetwln.c
(2.74 KB)
📄
fgetws.3
(3.47 KB)
📄
fgetws.c
(3.46 KB)
📄
fileno.c
(2.16 KB)
📄
findfp.c
(6.1 KB)
📄
flags.c
(3.1 KB)
📄
floatio.h
(2.43 KB)
📄
flockfile.3
(3.05 KB)
📄
fmemopen.c
(5.74 KB)
📄
fopen.3
(7.66 KB)
📄
fopen.c
(3.33 KB)
📄
fopencookie.3
(3.9 KB)
📄
fopencookie.c
(4.04 KB)
📄
fprintf.c
(2.52 KB)
📄
fpurge.c
(2.41 KB)
📄
fputc.c
(2.29 KB)
📄
fputs.3
(3.2 KB)
📄
fputs.c
(2.63 KB)
📄
fputwc.c
(2.52 KB)
📄
fputws.3
(2.71 KB)
📄
fputws.c
(2.64 KB)
📄
fread.3
(3.77 KB)
📄
fread.c
(3.53 KB)
📄
freopen.c
(7.35 KB)
📄
fscanf.c
(2.71 KB)
📄
fseek.3
(6.03 KB)
📄
fseek.c
(7.46 KB)
📄
fsetpos.c
(2.03 KB)
📄
ftell.c
(3.78 KB)
📄
funopen.3
(4.71 KB)
📄
funopen.c
(2.59 KB)
📄
fvwrite.c
(5.7 KB)
📄
fvwrite.h
(1.96 KB)
📄
fwalk.c
(2.48 KB)
📄
fwide.3
(2.58 KB)
📄
fwide.c
(1.83 KB)
📄
fwprintf.c
(2.06 KB)
📄
fwrite.c
(3.45 KB)
📄
fwscanf.c
(2.04 KB)
📄
getc.3
(4.41 KB)
📄
getc.c
(2.27 KB)
📄
getchar.c
(2.34 KB)
📄
getdelim.c
(4.17 KB)
📄
getline.3
(3.56 KB)
📄
getline.c
(1.6 KB)
📄
gets.c
(2.56 KB)
📄
gets_s.c
(3.03 KB)
📄
getw.c
(1.97 KB)
📄
getwc.3
(3.31 KB)
📄
getwc.c
(2.01 KB)
📄
getwchar.c
(1.93 KB)
📄
glue.h
(1.95 KB)
📄
local.h
(5.46 KB)
📄
makebuf.c
(3.61 KB)
📄
mktemp.3
(7.46 KB)
📄
mktemp.c
(5.04 KB)
📄
open_memstream.3
(4.61 KB)
📄
open_memstream.c
(4.79 KB)
📄
open_wmemstream.c
(6.34 KB)
📄
perror.c
(2.55 KB)
📄
printf-pos.c
(17.48 KB)
📄
printf.3
(22.15 KB)
📄
printf.c
(2.43 KB)
📄
printf_l.3
(3.15 KB)
📄
printfcommon.h
(7.42 KB)
📄
printflocal.h
(3.3 KB)
📄
putc.3
(4.1 KB)
📄
putc.c
(2.29 KB)
📄
putchar.c
(2.36 KB)
📄
puts.c
(2.49 KB)
📄
putw.c
(2.28 KB)
📄
putwc.3
(2.79 KB)
📄
putwc.c
(2.09 KB)
📄
putwchar.c
(2 KB)
📄
refill.c
(4.04 KB)
📄
remove.3
(2.52 KB)
📄
remove.c
(2.11 KB)
📄
rewind.c
(2.26 KB)
📄
rget.c
(2.12 KB)
📄
scanf.3
(11.79 KB)
📄
scanf.c
(2.68 KB)
📄
scanf_l.3
(2.7 KB)
📄
setbuf.3
(5.54 KB)
📄
setbuf.c
(2.02 KB)
📄
setbuffer.c
(2.11 KB)
📄
setvbuf.c
(4.71 KB)
📄
snprintf.c
(3.12 KB)
📄
sprintf.c
(2.54 KB)
📄
sscanf.c
(2.52 KB)
📄
stdio.3
(10.54 KB)
📄
stdio.c
(4.27 KB)
📄
swprintf.c
(2.09 KB)
📄
swscanf.c
(2.07 KB)
📄
tempnam.c
(2.86 KB)
📄
tmpfile.c
(2.83 KB)
📄
tmpnam.3
(6.08 KB)
📄
tmpnam.c
(2.27 KB)
📄
ungetc.3
(3.19 KB)
📄
ungetc.c
(4.5 KB)
📄
ungetwc.3
(3.13 KB)
📄
ungetwc.c
(2.57 KB)
📄
vasprintf.c
(2.52 KB)
📄
vdprintf.c
(2.23 KB)
📄
vfprintf.c
(26.28 KB)
📄
vfscanf.c
(24.59 KB)
📄
vfwprintf.c
(27.54 KB)
📄
vfwscanf.c
(21.37 KB)
📄
vprintf.c
(2.3 KB)
📄
vscanf.c
(2.54 KB)
📄
vsnprintf.c
(2.91 KB)
📄
vsprintf.c
(2.58 KB)
📄
vsscanf.c
(2.72 KB)
📄
vswprintf.c
(3.32 KB)
📄
vswscanf.c
(3.36 KB)
📄
vwprintf.c
(1.9 KB)
📄
vwscanf.c
(1.9 KB)
📄
wbuf.c
(3.25 KB)
📄
wprintf.3
(15.62 KB)
📄
wprintf.c
(2.02 KB)
📄
wscanf.3
(11.31 KB)
📄
wscanf.c
(2 KB)
📄
wsetup.c
(3.05 KB)
📄
xprintf.c
(16.71 KB)
📄
xprintf_errno.c
(2.18 KB)
📄
xprintf_float.c
(11.33 KB)
📄
xprintf_hexdump.c
(2.65 KB)
📄
xprintf_int.c
(10.47 KB)
📄
xprintf_quote.c
(2.83 KB)
📄
xprintf_str.c
(5.04 KB)
📄
xprintf_time.c
(3.46 KB)
📄
xprintf_vis.c
(2.41 KB)
Editing: fopencookie.c
/* * Copyright (c) 2016, EMC / Isilon Storage Division * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS * IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include <sys/cdefs.h> __FBSDID("$FreeBSD$"); #include <sys/fcntl.h> #include <errno.h> #include <stdio.h> #include <stdlib.h> #include "local.h" struct fopencookie_thunk { void *foc_cookie; cookie_io_functions_t foc_io; }; static int _fopencookie_read(void *, char *, int); static int _fopencookie_write(void *, const char *, int); static fpos_t _fopencookie_seek(void *, fpos_t, int); static int _fopencookie_close(void *); FILE * fopencookie(void *cookie, const char *mode, cookie_io_functions_t io_funcs) { int (*readfn)(void *, char *, int); int (*writefn)(void *, const char *, int); struct fopencookie_thunk *thunk; FILE *fp; int flags, oflags; if ((flags = __sflags(mode, &oflags)) == 0) return (NULL); thunk = malloc(sizeof(*thunk)); if (thunk == NULL) return (NULL); thunk->foc_cookie = cookie; thunk->foc_io = io_funcs; readfn = _fopencookie_read; writefn = _fopencookie_write; if (flags == __SWR) readfn = NULL; else if (flags == __SRD) writefn = NULL; fp = funopen(thunk, readfn, writefn, _fopencookie_seek, _fopencookie_close); if (fp == NULL) { free(thunk); return (NULL); } if ((oflags & O_APPEND) != 0) fp->_flags |= __SAPP; return (fp); } static int _fopencookie_read(void *cookie, char *buf, int size) { struct fopencookie_thunk *thunk; thunk = cookie; /* Reads from a stream with NULL read return EOF. */ if (thunk->foc_io.read == NULL) return (0); return ((int)thunk->foc_io.read(thunk->foc_cookie, buf, (size_t)size)); } static int _fopencookie_write(void *cookie, const char *buf, int size) { struct fopencookie_thunk *thunk; thunk = cookie; /* Writes to a stream with NULL write discard data. */ if (thunk->foc_io.write == NULL) return (size); return ((int)thunk->foc_io.write(thunk->foc_cookie, buf, (size_t)size)); } static fpos_t _fopencookie_seek(void *cookie, fpos_t offset, int whence) { struct fopencookie_thunk *thunk; off64_t off64; int res; switch (whence) { case SEEK_SET: case SEEK_CUR: case SEEK_END: break; default: /* fopencookie(3) only allows these three seek modes. */ errno = EINVAL; return (-1); } thunk = cookie; /* * If seek is NULL, it is not possible to perform seek operations on * the stream. */ if (thunk->foc_io.seek == NULL) { errno = ENOTSUP; return (-1); } off64 = (off64_t)offset; res = thunk->foc_io.seek(thunk->foc_cookie, &off64, whence); if (res < 0) return (res); return ((fpos_t)off64); } static int _fopencookie_close(void *cookie) { struct fopencookie_thunk *thunk; int ret, serrno; ret = 0; thunk = cookie; if (thunk->foc_io.close != NULL) ret = thunk->foc_io.close(thunk->foc_cookie); serrno = errno; free(thunk); errno = serrno; return (ret); }
Upload File
Create Folder