libsa: cstyle cleanup for open/close/read/write sources
This commit is contained in:
parent
7c724d790e
commit
08a8304a34
@ -32,30 +32,30 @@
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* @(#)close.c 8.1 (Berkeley) 6/11/93
|
||||
*
|
||||
*
|
||||
*
|
||||
* Copyright (c) 1989, 1990, 1991 Carnegie Mellon University
|
||||
* All Rights Reserved.
|
||||
*
|
||||
* Author: Alessandro Forin
|
||||
*
|
||||
*
|
||||
* Permission to use, copy, modify and distribute this software and its
|
||||
* documentation is hereby granted, provided that both the copyright
|
||||
* notice and this permission notice appear in all copies of the
|
||||
* software, derivative works or modified versions, and any portions
|
||||
* thereof, and that both notices appear in supporting documentation.
|
||||
*
|
||||
*
|
||||
* CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
|
||||
* CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
|
||||
* ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
|
||||
*
|
||||
*
|
||||
* Carnegie Mellon requests users of this software to return to
|
||||
*
|
||||
*
|
||||
* Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
|
||||
* School of Computer Science
|
||||
* Carnegie Mellon University
|
||||
* Pittsburgh PA 15213-3890
|
||||
*
|
||||
*
|
||||
* any improvements or extensions that they make and grant Carnegie the
|
||||
* rights to redistribute these changes.
|
||||
*/
|
||||
@ -68,31 +68,31 @@ __FBSDID("$FreeBSD$");
|
||||
int
|
||||
close(int fd)
|
||||
{
|
||||
struct open_file *f = &files[fd];
|
||||
int err1 = 0, err2 = 0;
|
||||
struct open_file *f = &files[fd];
|
||||
int err1 = 0, err2 = 0;
|
||||
|
||||
if ((unsigned)fd >= SOPEN_MAX || f->f_flags == 0) {
|
||||
errno = EBADF;
|
||||
return (-1);
|
||||
}
|
||||
if (f->f_rabuf != NULL) {
|
||||
free(f->f_rabuf);
|
||||
f->f_rabuf = NULL;
|
||||
}
|
||||
if (!(f->f_flags & F_RAW) && f->f_ops)
|
||||
err1 = (f->f_ops->fo_close)(f);
|
||||
if (!(f->f_flags & F_NODEV) && f->f_dev)
|
||||
err2 = (f->f_dev->dv_close)(f);
|
||||
if (f->f_devdata != NULL)
|
||||
devclose(f);
|
||||
f->f_flags = 0;
|
||||
if (err1) {
|
||||
errno = err1;
|
||||
return (-1);
|
||||
}
|
||||
if (err2) {
|
||||
errno = err2;
|
||||
return (-1);
|
||||
}
|
||||
return (0);
|
||||
if ((unsigned)fd >= SOPEN_MAX || f->f_flags == 0) {
|
||||
errno = EBADF;
|
||||
return (-1);
|
||||
}
|
||||
if (f->f_rabuf != NULL) {
|
||||
free(f->f_rabuf);
|
||||
f->f_rabuf = NULL;
|
||||
}
|
||||
if (!(f->f_flags & F_RAW) && f->f_ops)
|
||||
err1 = (f->f_ops->fo_close)(f);
|
||||
if (!(f->f_flags & F_NODEV) && f->f_dev)
|
||||
err2 = (f->f_dev->dv_close)(f);
|
||||
if (f->f_devdata != NULL)
|
||||
devclose(f);
|
||||
f->f_flags = 0;
|
||||
if (err1) {
|
||||
errno = err1;
|
||||
return (-1);
|
||||
}
|
||||
if (err2) {
|
||||
errno = err2;
|
||||
return (-1);
|
||||
}
|
||||
return (0);
|
||||
}
|
||||
|
@ -32,30 +32,30 @@
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* @(#)open.c 8.1 (Berkeley) 6/11/93
|
||||
*
|
||||
*
|
||||
*
|
||||
* Copyright (c) 1989, 1990, 1991 Carnegie Mellon University
|
||||
* All Rights Reserved.
|
||||
*
|
||||
* Author: Alessandro Forin
|
||||
*
|
||||
*
|
||||
* Permission to use, copy, modify and distribute this software and its
|
||||
* documentation is hereby granted, provided that both the copyright
|
||||
* notice and this permission notice appear in all copies of the
|
||||
* software, derivative works or modified versions, and any portions
|
||||
* thereof, and that both notices appear in supporting documentation.
|
||||
*
|
||||
*
|
||||
* CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
|
||||
* CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
|
||||
* ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
|
||||
*
|
||||
*
|
||||
* Carnegie Mellon requests users of this software to return to
|
||||
*
|
||||
*
|
||||
* Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
|
||||
* School of Computer Science
|
||||
* Carnegie Mellon University
|
||||
* Pittsburgh PA 15213-3890
|
||||
*
|
||||
*
|
||||
* any improvements or extensions that they make and grant Carnegie the
|
||||
* rights to redistribute these changes.
|
||||
*/
|
||||
@ -70,89 +70,89 @@ struct fs_ops *exclusive_file_system;
|
||||
struct open_file files[SOPEN_MAX];
|
||||
|
||||
static int
|
||||
o_gethandle(void)
|
||||
o_gethandle(void)
|
||||
{
|
||||
int fd;
|
||||
|
||||
for (fd = 0; fd < SOPEN_MAX; fd++)
|
||||
if (files[fd].f_flags == 0)
|
||||
return(fd);
|
||||
return(-1);
|
||||
int fd;
|
||||
|
||||
for (fd = 0; fd < SOPEN_MAX; fd++)
|
||||
if (files[fd].f_flags == 0)
|
||||
return (fd);
|
||||
return (-1);
|
||||
}
|
||||
|
||||
static void
|
||||
o_rainit(struct open_file *f)
|
||||
{
|
||||
f->f_rabuf = malloc(SOPEN_RASIZE);
|
||||
f->f_ralen = 0;
|
||||
f->f_raoffset = 0;
|
||||
f->f_rabuf = malloc(SOPEN_RASIZE);
|
||||
f->f_ralen = 0;
|
||||
f->f_raoffset = 0;
|
||||
}
|
||||
|
||||
int
|
||||
open(const char *fname, int mode)
|
||||
{
|
||||
struct fs_ops *fs;
|
||||
struct open_file *f;
|
||||
int fd, i, error, besterror;
|
||||
const char *file;
|
||||
struct fs_ops *fs;
|
||||
struct open_file *f;
|
||||
int fd, i, error, besterror;
|
||||
const char *file;
|
||||
|
||||
if ((fd = o_gethandle()) == -1) {
|
||||
errno = EMFILE;
|
||||
return(-1);
|
||||
}
|
||||
if ((fd = o_gethandle()) == -1) {
|
||||
errno = EMFILE;
|
||||
return (-1);
|
||||
}
|
||||
|
||||
f = &files[fd];
|
||||
f->f_flags = mode + 1;
|
||||
f->f_dev = (struct devsw *)0;
|
||||
f->f_ops = (struct fs_ops *)0;
|
||||
f->f_offset = 0;
|
||||
f->f_devdata = NULL;
|
||||
file = (char *)0;
|
||||
f = &files[fd];
|
||||
f->f_flags = mode + 1;
|
||||
f->f_dev = (struct devsw *)0;
|
||||
f->f_ops = (struct fs_ops *)0;
|
||||
f->f_offset = 0;
|
||||
f->f_devdata = NULL;
|
||||
file = (char *)0;
|
||||
|
||||
if (exclusive_file_system != NULL) {
|
||||
fs = exclusive_file_system;
|
||||
error = (fs->fo_open)(fname, f);
|
||||
if (error == 0)
|
||||
goto ok;
|
||||
goto err;
|
||||
}
|
||||
if (exclusive_file_system != NULL) {
|
||||
fs = exclusive_file_system;
|
||||
error = (fs->fo_open)(fname, f);
|
||||
if (error == 0)
|
||||
goto ok;
|
||||
goto err;
|
||||
}
|
||||
|
||||
error = devopen(f, fname, &file);
|
||||
if (error ||
|
||||
(((f->f_flags & F_NODEV) == 0) && f->f_dev == (struct devsw *)0))
|
||||
goto err;
|
||||
error = devopen(f, fname, &file);
|
||||
if (error ||
|
||||
(((f->f_flags & F_NODEV) == 0) && f->f_dev == (struct devsw *)0))
|
||||
goto err;
|
||||
|
||||
/* see if we opened a raw device; otherwise, 'file' is the file name. */
|
||||
if (file == (char *)0 || *file == '\0') {
|
||||
f->f_flags |= F_RAW;
|
||||
f->f_rabuf = NULL;
|
||||
/* see if we opened a raw device; otherwise, 'file' is the file name. */
|
||||
if (file == (char *)0 || *file == '\0') {
|
||||
f->f_flags |= F_RAW;
|
||||
f->f_rabuf = NULL;
|
||||
return (fd);
|
||||
}
|
||||
|
||||
/* pass file name to the different filesystem open routines */
|
||||
besterror = ENOENT;
|
||||
for (i = 0; file_system[i] != NULL; i++) {
|
||||
fs = file_system[i];
|
||||
error = (fs->fo_open)(file, f);
|
||||
if (error == 0)
|
||||
goto ok;
|
||||
if (error != EINVAL)
|
||||
besterror = error;
|
||||
}
|
||||
error = besterror;
|
||||
|
||||
if ((f->f_flags & F_NODEV) == 0 && f->f_dev != NULL)
|
||||
f->f_dev->dv_close(f);
|
||||
if (error)
|
||||
devclose(f);
|
||||
|
||||
err:
|
||||
f->f_flags = 0;
|
||||
errno = error;
|
||||
return (-1);
|
||||
|
||||
ok:
|
||||
f->f_ops = fs;
|
||||
o_rainit(f);
|
||||
return (fd);
|
||||
}
|
||||
|
||||
/* pass file name to the different filesystem open routines */
|
||||
besterror = ENOENT;
|
||||
for (i = 0; file_system[i] != NULL; i++) {
|
||||
fs = file_system[i];
|
||||
error = (fs->fo_open)(file, f);
|
||||
if (error == 0)
|
||||
goto ok;
|
||||
if (error != EINVAL)
|
||||
besterror = error;
|
||||
}
|
||||
error = besterror;
|
||||
|
||||
if ((f->f_flags & F_NODEV) == 0 && f->f_dev != NULL)
|
||||
f->f_dev->dv_close(f);
|
||||
if (error)
|
||||
devclose(f);
|
||||
|
||||
err:
|
||||
f->f_flags = 0;
|
||||
errno = error;
|
||||
return (-1);
|
||||
|
||||
ok:
|
||||
f->f_ops = fs;
|
||||
o_rainit(f);
|
||||
return (fd);
|
||||
}
|
||||
|
@ -32,30 +32,30 @@
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* @(#)read.c 8.1 (Berkeley) 6/11/93
|
||||
*
|
||||
*
|
||||
*
|
||||
* Copyright (c) 1989, 1990, 1991 Carnegie Mellon University
|
||||
* All Rights Reserved.
|
||||
*
|
||||
* Author: Alessandro Forin
|
||||
*
|
||||
*
|
||||
* Permission to use, copy, modify and distribute this software and its
|
||||
* documentation is hereby granted, provided that both the copyright
|
||||
* notice and this permission notice appear in all copies of the
|
||||
* software, derivative works or modified versions, and any portions
|
||||
* thereof, and that both notices appear in supporting documentation.
|
||||
*
|
||||
*
|
||||
* CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
|
||||
* CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
|
||||
* ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
|
||||
*
|
||||
*
|
||||
* Carnegie Mellon requests users of this software to return to
|
||||
*
|
||||
*
|
||||
* Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
|
||||
* School of Computer Science
|
||||
* Carnegie Mellon University
|
||||
* Pittsburgh PA 15213-3890
|
||||
*
|
||||
*
|
||||
* any improvements or extensions that they make and grant Carnegie the
|
||||
* rights to redistribute these changes.
|
||||
*/
|
||||
@ -69,59 +69,65 @@ __FBSDID("$FreeBSD$");
|
||||
ssize_t
|
||||
read(int fd, void *dest, size_t bcount)
|
||||
{
|
||||
struct open_file *f = &files[fd];
|
||||
size_t resid;
|
||||
struct open_file *f = &files[fd];
|
||||
size_t resid;
|
||||
|
||||
if ((unsigned)fd >= SOPEN_MAX || !(f->f_flags & F_READ)) {
|
||||
errno = EBADF;
|
||||
return (-1);
|
||||
}
|
||||
if (f->f_flags & F_RAW) {
|
||||
twiddle(4);
|
||||
errno = (f->f_dev->dv_strategy)(f->f_devdata, F_READ,
|
||||
btodb(f->f_offset), bcount, dest, &resid);
|
||||
if (errno)
|
||||
return (-1);
|
||||
f->f_offset += resid;
|
||||
return (resid);
|
||||
}
|
||||
|
||||
/*
|
||||
* Optimise reads from regular files using a readahead buffer.
|
||||
* If the request can't be satisfied from the current buffer contents,
|
||||
* check to see if it should be bypassed, or refill the buffer and complete
|
||||
* the request.
|
||||
*/
|
||||
resid = bcount;
|
||||
for (;;) {
|
||||
size_t ccount, cresid;
|
||||
/* how much can we supply? */
|
||||
ccount = imin(f->f_ralen, resid);
|
||||
if (ccount > 0) {
|
||||
bcopy(f->f_rabuf + f->f_raoffset, dest, ccount);
|
||||
f->f_raoffset += ccount;
|
||||
f->f_ralen -= ccount;
|
||||
resid -= ccount;
|
||||
if (resid == 0)
|
||||
return(bcount);
|
||||
dest = (char *)dest + ccount;
|
||||
if ((unsigned)fd >= SOPEN_MAX || !(f->f_flags & F_READ)) {
|
||||
errno = EBADF;
|
||||
return (-1);
|
||||
}
|
||||
if (f->f_flags & F_RAW) {
|
||||
twiddle(4);
|
||||
errno = (f->f_dev->dv_strategy)(f->f_devdata, F_READ,
|
||||
btodb(f->f_offset), bcount, dest, &resid);
|
||||
if (errno)
|
||||
return (-1);
|
||||
f->f_offset += resid;
|
||||
return (resid);
|
||||
}
|
||||
|
||||
/* will filling the readahead buffer again not help? */
|
||||
if (resid >= SOPEN_RASIZE) {
|
||||
/* bypass the rest of the request and leave the buffer empty */
|
||||
if ((errno = (f->f_ops->fo_read)(f, dest, resid, &cresid)))
|
||||
return (-1);
|
||||
return(bcount - cresid);
|
||||
}
|
||||
/*
|
||||
* Optimise reads from regular files using a readahead buffer.
|
||||
* If the request can't be satisfied from the current buffer contents,
|
||||
* check to see if it should be bypassed, or refill the buffer and
|
||||
* complete the request.
|
||||
*/
|
||||
resid = bcount;
|
||||
for (;;) {
|
||||
size_t ccount, cresid;
|
||||
/* how much can we supply? */
|
||||
ccount = imin(f->f_ralen, resid);
|
||||
if (ccount > 0) {
|
||||
bcopy(f->f_rabuf + f->f_raoffset, dest, ccount);
|
||||
f->f_raoffset += ccount;
|
||||
f->f_ralen -= ccount;
|
||||
resid -= ccount;
|
||||
if (resid == 0)
|
||||
return (bcount);
|
||||
dest = (char *)dest + ccount;
|
||||
}
|
||||
|
||||
/* fetch more data */
|
||||
if ((errno = (f->f_ops->fo_read)(f, f->f_rabuf, SOPEN_RASIZE, &cresid)))
|
||||
return (-1);
|
||||
f->f_raoffset = 0;
|
||||
f->f_ralen = SOPEN_RASIZE - cresid;
|
||||
/* no more data, return what we had */
|
||||
if (f->f_ralen == 0)
|
||||
return(bcount - resid);
|
||||
}
|
||||
/* will filling the readahead buffer again not help? */
|
||||
if (resid >= SOPEN_RASIZE) {
|
||||
/*
|
||||
* bypass the rest of the request and leave the
|
||||
* buffer empty
|
||||
*/
|
||||
errno = (f->f_ops->fo_read)(f, dest, resid, &cresid);
|
||||
if (errno != 0)
|
||||
return (-1);
|
||||
return (bcount - cresid);
|
||||
}
|
||||
|
||||
/* fetch more data */
|
||||
errno = (f->f_ops->fo_read)(f, f->f_rabuf, SOPEN_RASIZE,
|
||||
&cresid);
|
||||
if (errno != 0)
|
||||
return (-1);
|
||||
f->f_raoffset = 0;
|
||||
f->f_ralen = SOPEN_RASIZE - cresid;
|
||||
/* no more data, return what we had */
|
||||
if (f->f_ralen == 0)
|
||||
return (bcount - resid);
|
||||
}
|
||||
}
|
||||
|
@ -32,30 +32,30 @@
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* @(#)write.c 8.1 (Berkeley) 6/11/93
|
||||
*
|
||||
*
|
||||
*
|
||||
* Copyright (c) 1989, 1990, 1991 Carnegie Mellon University
|
||||
* All Rights Reserved.
|
||||
*
|
||||
* Author: Alessandro Forin
|
||||
*
|
||||
*
|
||||
* Permission to use, copy, modify and distribute this software and its
|
||||
* documentation is hereby granted, provided that both the copyright
|
||||
* notice and this permission notice appear in all copies of the
|
||||
* software, derivative works or modified versions, and any portions
|
||||
* thereof, and that both notices appear in supporting documentation.
|
||||
*
|
||||
*
|
||||
* CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
|
||||
* CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
|
||||
* ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
|
||||
*
|
||||
*
|
||||
* Carnegie Mellon requests users of this software to return to
|
||||
*
|
||||
*
|
||||
* Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
|
||||
* School of Computer Science
|
||||
* Carnegie Mellon University
|
||||
* Pittsburgh PA 15213-3890
|
||||
*
|
||||
*
|
||||
* any improvements or extensions that they make and grant Carnegie the
|
||||
* rights to redistribute these changes.
|
||||
*/
|
||||
@ -67,10 +67,7 @@ __FBSDID("$FreeBSD$");
|
||||
#include "stand.h"
|
||||
|
||||
ssize_t
|
||||
write(fd, dest, bcount)
|
||||
int fd;
|
||||
const void *dest;
|
||||
size_t bcount;
|
||||
write(int fd, const void *dest, size_t bcount)
|
||||
{
|
||||
struct open_file *f = &files[fd];
|
||||
size_t resid;
|
||||
@ -82,8 +79,8 @@ write(fd, dest, bcount)
|
||||
if (f->f_flags & F_RAW) {
|
||||
twiddle(4);
|
||||
errno = (f->f_dev->dv_strategy)(f->f_devdata, F_WRITE,
|
||||
btodb(f->f_offset), bcount, __DECONST(void *, dest),
|
||||
&resid);
|
||||
btodb(f->f_offset), bcount, __DECONST(void *, dest),
|
||||
&resid);
|
||||
if (errno)
|
||||
return (-1);
|
||||
f->f_offset += resid;
|
||||
|
Loading…
Reference in New Issue
Block a user