diff options
Diffstat (limited to 'sys/stand')
| -rw-r--r-- | sys/stand/cat.c | 45 | ||||
| -rw-r--r-- | sys/stand/copy.c | 84 | ||||
| -rw-r--r-- | sys/stand/dev.c | 159 | ||||
| -rw-r--r-- | sys/stand/ls.c | 104 | ||||
| -rw-r--r-- | sys/stand/printf.c | 177 | ||||
| -rw-r--r-- | sys/stand/saerrno.h | 55 | ||||
| -rw-r--r-- | sys/stand/saioctl.h | 51 | ||||
| -rw-r--r-- | sys/stand/stat.c | 75 |
8 files changed, 750 insertions, 0 deletions
diff --git a/sys/stand/cat.c b/sys/stand/cat.c new file mode 100644 index 000000000000..3c6c86c63e3a --- /dev/null +++ b/sys/stand/cat.c @@ -0,0 +1,45 @@ +/* + * Copyright (c) 1988 Regents of the University of California. + * 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. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by the University of + * California, Berkeley and its contributors. + * 4. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS 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 REGENTS 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. + * + * from: @(#)cat.c 7.5 (Berkeley) 6/28/90 + * $Id: cat.c,v 1.2 1993/10/16 19:31:27 rgrimes Exp $ + */ + +main() +{ + register int c, fd; + + fd = getfile("File", 0); + while ((c = getc(fd)) >= 0) + putchar(c); + exit(0); +} diff --git a/sys/stand/copy.c b/sys/stand/copy.c new file mode 100644 index 000000000000..f1282985763b --- /dev/null +++ b/sys/stand/copy.c @@ -0,0 +1,84 @@ +/*- + * Copyright (c) 1982, 1986, 1988 The Regents of the University of California. + * 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. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by the University of + * California, Berkeley and its contributors. + * 4. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS 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 REGENTS 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. + * + * from: @(#)copy.c 7.7 (Berkeley) 5/21/91 + * $Id: copy.c,v 1.2 1993/10/16 19:31:29 rgrimes Exp $ + */ + +#define BSIZE 10240 + +/* + * Copy from from to to. Intended for use in system installation. + */ +main() +{ + extern int errno; + register int from, to, record, rcc, wcc, bsize = BSIZE; + char buf[BSIZE]; + + from = getfile("From", 0); + to = getfile("To", 1); + for (record = 0;; ++record) { + if (!(rcc = read(from, buf, bsize))) + break; + if (rcc < 0) { + printf("Record %d: read error, errno=%d\n", + record, errno); + break; + } + if (rcc != bsize) { + if (record == 0) { + bsize = rcc; + printf("Block size set from input; %d bytes\n", + bsize); + } else + printf("Record %d: read short; expected %d, got %d\n", + record, bsize, rcc); + } +#ifdef vax + /* For bug in ht driver. */ + if (rcc > bsize) + rcc = bsize; +#endif + if ((wcc = write(to, buf, rcc)) < 0) { + printf("Record %d: write error: errno=%d\n", + record, errno); + break; + } + if (wcc < rcc) { + printf("Record %d: write short; expected %d, got %d\n", + record, rcc, wcc); + break; + } + } + printf("copy completed: %d records copied\n", record); +} diff --git a/sys/stand/dev.c b/sys/stand/dev.c new file mode 100644 index 000000000000..eb3840cf1eb7 --- /dev/null +++ b/sys/stand/dev.c @@ -0,0 +1,159 @@ +/* + * Copyright (c) 1982, 1986, 1988 Regents of the University of California. + * 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. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by the University of + * California, Berkeley and its contributors. + * 4. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS 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 REGENTS 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. + * + * from: @(#)dev.c 7.14 (Berkeley) 5/5/91 + * $Id: dev.c,v 1.2 1993/10/16 19:31:31 rgrimes Exp $ + */ + +#include <sys/param.h> +#include <setjmp.h> +#include "saio.h" + +/* + * NB: the value "io->i_dev", used to offset the devsw[] array in the + * routines below, is munged by the machine specific stand Makefiles + * to work for certain boots. + */ + +jmp_buf exception; + +devread(io) + register struct iob *io; +{ + int cc; + + io->i_flgs |= F_RDDATA; + io->i_error = 0; + cc = (*devsw[io->i_dev].dv_strategy)(io, F_READ); + io->i_flgs &= ~F_TYPEMASK; +#ifndef SMALL + if (scankbd()) + _longjmp(exception, 1); +#endif + return (cc); +} + +devwrite(io) + register struct iob *io; +{ + int cc; + + io->i_flgs |= F_WRDATA; + io->i_error = 0; + cc = (*devsw[io->i_dev].dv_strategy)(io, F_WRITE); + io->i_flgs &= ~F_TYPEMASK; +#ifndef SMALL + if (scankbd()) + _longjmp(exception, 1); +#endif + return (cc); +} + +devopen(io) + register struct iob *io; +{ + int ret; + + if (!(ret = (*devsw[io->i_dev].dv_open)(io))) + return (0); +#ifdef SMALL + printf("open error\n"); +#else + printf("%s(%d,%d,%d,%d): ", devsw[io->i_dev].dv_name, + io->i_adapt, io->i_ctlr, io->i_unit, io->i_part); + switch(ret) { + case EIO: + break; /* already reported */ + case EADAPT: + printf("bad adaptor number\n"); + break; + case ECTLR: + printf("bad controller number\n"); + break; + case EUNIT: + printf("bad drive number\n"); + break; + case EPART: + printf("bad partition\n"); + break; + case ERDLAB: + printf("can't read disk label\n"); + break; + case EUNLAB: + printf("unlabeled\n"); + break; + case ENXIO: + printf("bad device specification\n"); + break; + default: + printf("unknown open error\n"); + break; + } +#endif + return (ret); +} + +devclose(io) + register struct iob *io; +{ + (*devsw[io->i_dev].dv_close)(io); +} + +devioctl(io, cmd, arg) + register struct iob *io; + int cmd; + caddr_t arg; +{ + return ((*devsw[io->i_dev].dv_ioctl)(io, cmd, arg)); +} + +/* ARGSUSED */ +nullsys(io) + struct iob *io; +{} + +/* ARGSUSED */ +nodev(io) + struct iob *io; +{ + errno = EBADF; + return(-1); +} + +/* ARGSUSED */ +noioctl(io, cmd, arg) + struct iob *io; + int cmd; + caddr_t arg; +{ + return (ECMD); +} diff --git a/sys/stand/ls.c b/sys/stand/ls.c new file mode 100644 index 000000000000..bbb159bd597c --- /dev/null +++ b/sys/stand/ls.c @@ -0,0 +1,104 @@ +/* + * Copyright (c) 1982, 1986, 1988 Regents of the University of California. + * 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. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by the University of + * California, Berkeley and its contributors. + * 4. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS 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 REGENTS 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. + * + * from: @(#)ls.c 7.9 (Berkeley) 6/28/90 + * $Id: ls.c,v 1.2 1993/10/16 19:31:32 rgrimes Exp $ + */ + +#include "sys/param.h" +#include "ufs/dir.h" +#include "saio.h" +#include "sys/ttychars.h" + +main() +{ + struct dinode *ip; + int fd; + + for (;;) { + if ((fd = getfile("ls", 0)) == -1) + exit(); + ip = &iob[fd - 3].i_ino; + if ((ip->di_mode & IFMT) != IFDIR) { + printf("ls: not a directory\n"); + continue; + } + if (ip->di_size == 0) { + printf("ls: zero length directory\n"); + continue; + } + ls(fd); + } +} + +#define CTRL(x) (x&037) + +getfile(prompt, mode) + char *prompt; + int mode; +{ + int fd; + char buf[100]; + + do { + printf("%s: ", prompt); + gets(buf); + if (buf[0] == CTRL('d') && buf[1] == 0) + return (-1); + } while ((fd = open(buf, mode)) <= 0); + return(fd); +} + +typedef struct direct DP; +static +ls(fd) + register int fd; +{ + register int size; + register char *dp; + char dirbuf[DIRBLKSIZ]; + + printf("\ninode\tname\n"); + while ((size = read(fd, dirbuf, DIRBLKSIZ)) == DIRBLKSIZ) + for(dp = dirbuf; (dp < (dirbuf + size)) && + (dp + ((DP *)dp)->d_reclen) < (dirbuf + size); + dp += ((DP *)dp)->d_reclen) { + if (((DP *)dp)->d_ino == 0) + continue; + if (((DP *)dp)->d_namlen > MAXNAMLEN+1) { + printf("Corrupt file name length! Run fsck soon!\n"); + return; + } + printf("%d\t%s\n", ((DP *)dp)->d_ino, + ((DP *)dp)->d_name); + } +} diff --git a/sys/stand/printf.c b/sys/stand/printf.c new file mode 100644 index 000000000000..211d60d3236e --- /dev/null +++ b/sys/stand/printf.c @@ -0,0 +1,177 @@ +/*- + * Copyright (c) 1991 The Regents of the University of California. + * 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. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by the University of + * California, Berkeley and its contributors. + * 4. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS 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 REGENTS 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. + * + * from: @(#)printf.c 5.6 (Berkeley) 5/25/91 + * $Id: printf.c,v 1.2 1993/10/16 19:31:33 rgrimes Exp $ + */ + +/* + * Scaled down version of printf(3). + * + * One additional format: + * + * The format %b is supported to decode error registers. + * Its usage is: + * + * printf("reg=%b\n", regval, "<base><arg>*"); + * + * where <base> is the output base expressed as a control character, e.g. + * \10 gives octal; \20 gives hex. Each arg is a sequence of characters, + * the first of which gives the bit number to be inspected (origin 1), and + * the next characters (up to a control character, i.e. a character <= 32), + * give the name of the register. Thus: + * + * printf("reg=%b\n", 3, "\10\2BITTWO\1BITONE\n"); + * + * would produce output: + * + * reg=3<BITTWO,BITONE> + */ + +#include <sys/cdefs.h> +#include <sys/types.h> + +/* + * Note that stdarg.h and the ANSI style va_start macro is used for both + * ANSI and traditional C compilers. + */ +#define KERNEL +#include <machine/stdarg.h> +#undef KERNEL + +static void kprintn __P((u_long, int)); + +void +#if __STDC__ +printf(const char *fmt, ...) +#else +printf(fmt /* , va_alist */) + char *fmt; +#endif +{ + register char *p; + register int ch, n; + unsigned long ul; + int lflag, set; + va_list ap; + + va_start(ap, fmt); + for (;;) { + while ((ch = *fmt++) != '%') { + if (ch == '\0') + return; + putchar(ch); + } + lflag = 0; +reswitch: switch (ch = *fmt++) { + case 'l': + lflag = 1; + goto reswitch; + case 'b': + ul = va_arg(ap, int); + p = va_arg(ap, char *); + kprintn(ul, *p++); + + if (!ul) + break; + + for (set = 0; n = *p++;) { + if (ul & (1 << (n - 1))) { + putchar(set ? ',' : '<'); + for (; (n = *p) > ' '; ++p) + putchar(n); + set = 1; + } else + for (; *p > ' '; ++p); + } + if (set) + putchar('>'); + break; + case 'c': + ch = va_arg(ap, int); + putchar(ch & 0x7f); + break; + case 's': + p = va_arg(ap, char *); + while (ch = *p++) + putchar(ch); + break; + case 'd': + ul = lflag ? + va_arg(ap, long) : va_arg(ap, int); + if ((long)ul < 0) { + putchar('-'); + ul = -(long)ul; + } + kprintn(ul, 10); + break; + case 'o': + ul = lflag ? + va_arg(ap, u_long) : va_arg(ap, u_int); + kprintn(ul, 8); + break; + case 'u': + ul = lflag ? + va_arg(ap, u_long) : va_arg(ap, u_int); + kprintn(ul, 10); + break; + case 'x': + ul = lflag ? + va_arg(ap, u_long) : va_arg(ap, u_int); + kprintn(ul, 16); + break; + default: + putchar('%'); + if (lflag) + putchar('l'); + putchar(ch); + } + } + va_end(ap); +} + +static void +kprintn(ul, base) + unsigned long ul; + int base; +{ + /* hold a long in base 8 */ + char *p, buf[(sizeof(long) * NBBY / 3) + 1]; + + p = buf; + do { + *p++ = "0123456789abcdef"[ul % base]; + } while (ul /= base); + do { + putchar(*--p); + } while (p > buf); +} diff --git a/sys/stand/saerrno.h b/sys/stand/saerrno.h new file mode 100644 index 000000000000..2921bdbab7fa --- /dev/null +++ b/sys/stand/saerrno.h @@ -0,0 +1,55 @@ +/* + * Copyright (c) 1988 Regents of the University of California. + * 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. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by the University of + * California, Berkeley and its contributors. + * 4. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS 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 REGENTS 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. + * + * from: @(#)saerrno.h 7.3 (Berkeley) 6/28/90 + * $Id: saerrno.h,v 1.2 1993/10/16 19:31:35 rgrimes Exp $ + */ + +extern int errno; /* just like unix */ + +/* error codes */ +#define EADAPT 1 /* bad adaptor */ +#define ECTLR 2 /* bad controller */ +#define EUNIT 3 /* bad drive */ +#define EPART 4 /* bad partition */ +#define ERDLAB 5 /* can't read disk label */ +#define EUNLAB 6 /* unlabeled disk */ +#define ENXIO 7 /* bad device specification */ +#define EBADF 8 /* bad file descriptor */ +#define EOFFSET 9 /* relative seek not supported */ +#define ESRCH 10 /* directory search for file failed */ +#define EIO 11 /* generic error */ +#define ECMD 12 /* undefined driver command */ +#define EBSE 13 /* bad sector error */ +#define EWCK 14 /* write check error */ +#define EECC 15 /* uncorrectable ecc error */ +#define EHER 16 /* hard error */ diff --git a/sys/stand/saioctl.h b/sys/stand/saioctl.h new file mode 100644 index 000000000000..50b3d15fab15 --- /dev/null +++ b/sys/stand/saioctl.h @@ -0,0 +1,51 @@ +/* + * Copyright (c) 1988 Regents of the University of California. + * 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. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by the University of + * California, Berkeley and its contributors. + * 4. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS 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 REGENTS 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. + * + * from: @(#)saioctl.h 7.4 (Berkeley) 6/28/90 + * $Id: saioctl.h,v 1.2 1993/10/16 19:31:36 rgrimes Exp $ + */ + +/* ioctl's -- for disks just now */ +#define SAIOHDR (('d'<<8)|1) /* next i/o includes header */ +#define SAIOCHECK (('d'<<8)|2) /* next i/o checks data */ +#define SAIOHCHECK (('d'<<8)|3) /* next i/o checks header & data */ +#define SAIONOBAD (('d'<<8)|4) /* inhibit bad sector forwarding */ +#define SAIODOBAD (('d'<<8)|5) /* enable bad sector forwarding */ +#define SAIOECCLIM (('d'<<8)|6) /* set limit to ecc correction, bits */ +#define SAIOECCUNL (('d'<<8)|7) /* use standard ecc procedures */ +#define SAIORETRIES (('d'<<8)|8) /* set retry count for unit */ +#define SAIODEVDATA (('d'<<8)|9) /* get pointer to pack label */ +#define SAIOSSI (('d'<<8)|10) /* set skip sector inhibit */ +#define SAIONOSSI (('d'<<8)|11) /* inhibit skip sector handling */ +#define SAIOSSDEV (('d'<<8)|12) /* is device skip sector type? */ +#define SAIODEBUG (('d'<<8)|13) /* enable/disable debugging */ +#define SAIOGBADINFO (('d'<<8)|14) /* get bad-sector table */ diff --git a/sys/stand/stat.c b/sys/stand/stat.c new file mode 100644 index 000000000000..5c323190a9e7 --- /dev/null +++ b/sys/stand/stat.c @@ -0,0 +1,75 @@ +/*- + * Copyright (c) 1991 The Regents of the University of California. + * 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. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by the University of + * California, Berkeley and its contributors. + * 4. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS 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 REGENTS 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. + * + * from: @(#)stat.c 7.1 (Berkeley) 5/5/91 + * $Id: stat.c,v 1.2 1993/10/16 19:31:37 rgrimes Exp $ + */ + +#include <sys/param.h> +#include <sys/stat.h> +#include "saio.h" + +#ifndef SMALL +fstat(fd, sb) + int fd; + struct stat *sb; +{ + register struct iob *io; + + fd -= 3; + if (fd < 0 || fd >= SOPEN_MAX || + ((io = &iob[fd])->i_flgs & F_ALLOC) == 0) { + errno = EBADF; + return (-1); + } + /* only important stuff */ + sb->st_mode = io->i_ino.di_mode; + sb->st_uid = io->i_ino.di_uid; + sb->st_gid = io->i_ino.di_gid; + sb->st_size = io->i_ino.di_size; + return (0); +} + +stat(str, sb) + const char *str; + struct stat *sb; +{ + int fd, rv; + + fd = open(str, 0); + if (fd < 0) + return(-1); + rv = fstat(fd, sb); + close(fd); + return(rv); +} +#endif SMALL |
