From fd94e219d41735015750a9f949851abf76bdaf18 Mon Sep 17 00:00:00 2001 From: David Given Date: Sat, 23 Jun 2018 23:16:22 +0200 Subject: [PATCH] Remove the attic. --- lang/cem/libcc.ansi/_dead/closedir.c | 35 --- lang/cem/libcc.ansi/_dead/getdents.c | 292 -------------------------- lang/cem/libcc.ansi/_dead/getgrent.c | 134 ------------ lang/cem/libcc.ansi/_dead/opendir.c | 66 ------ lang/cem/libcc.ansi/_dead/readdir.c | 44 ---- lang/cem/libcc.ansi/_dead/rewinddir.c | 36 ---- lang/cem/libcc.ansi/_dead/seekdir.c | 107 ---------- lang/cem/libcc.ansi/_dead/telldir.c | 33 --- 8 files changed, 747 deletions(-) delete mode 100644 lang/cem/libcc.ansi/_dead/closedir.c delete mode 100644 lang/cem/libcc.ansi/_dead/getdents.c delete mode 100644 lang/cem/libcc.ansi/_dead/getgrent.c delete mode 100644 lang/cem/libcc.ansi/_dead/opendir.c delete mode 100644 lang/cem/libcc.ansi/_dead/readdir.c delete mode 100644 lang/cem/libcc.ansi/_dead/rewinddir.c delete mode 100644 lang/cem/libcc.ansi/_dead/seekdir.c delete mode 100644 lang/cem/libcc.ansi/_dead/telldir.c diff --git a/lang/cem/libcc.ansi/_dead/closedir.c b/lang/cem/libcc.ansi/_dead/closedir.c deleted file mode 100644 index 12f7c825a..000000000 --- a/lang/cem/libcc.ansi/_dead/closedir.c +++ /dev/null @@ -1,35 +0,0 @@ -/* - closedir -- close a directory stream - - last edit: 11-Nov-1988 D A Gwyn -*/ - -#include -#include -#include -#include -#include - -typedef void* pointer; /* (void *) if you have it */ - -#ifndef NULL -#define NULL 0 -#endif - -int _close(int d); - -int closedir(register DIR* dirp) /* stream from opendir */ -{ - register int fd; - - if (dirp == NULL || dirp->dd_buf == NULL) - { - errno = EFAULT; - return -1; /* invalid pointer */ - } - - fd = dirp->dd_fd; /* bug fix thanks to R. Salz */ - free((pointer)dirp->dd_buf); - free((pointer)dirp); - return _close(fd); -} diff --git a/lang/cem/libcc.ansi/_dead/getdents.c b/lang/cem/libcc.ansi/_dead/getdents.c deleted file mode 100644 index c6d40723c..000000000 --- a/lang/cem/libcc.ansi/_dead/getdents.c +++ /dev/null @@ -1,292 +0,0 @@ -/* - getdents -- get directory entries in a file system independent format - (SVR3 system call emulation) - - last edit: 06-Jul-1987 D A Gwyn - - This single source file supports several different methods of - getting directory entries from the operating system. Define - whichever one of the following describes your system: - - UFS original UNIX filesystem (14-character name limit) - BFS 4.2BSD (also 4.3BSD) native filesystem (long names) - NFS getdirentries() system call - - Also define any of the following that are pertinent: - - ATT_SPEC check user buffer address for longword alignment - BSD_SYSV BRL UNIX System V emulation environment on 4.nBSD - UNK have _getdents() system call, but kernel may not - support it - - If your C library has a getdents() system call interface, but you - can't count on all kernels on which your application binaries may - run to support it, change the system call interface name to - _getdents() and define "UNK" to enable the system-call validity - test in this "wrapper" around _getdents(). - - If your system has a getdents() system call that is guaranteed - to always work, you shouldn't be using this source file at all. -*/ - -#include -#include -#include -#include -#include -#ifdef BSD_SYSV -#include /* BSD flavor, not System V */ -#else -#if defined(UFS) -#define DIRSIZ 14 /* 14 char filename in Version 7 */ -#endif -#define MAXNAMLEN 255 -struct direct -{ - off_t d_off; /* offset of next disk directory entry */ - u_long d_fileno; /* file number of entry */ - u_short d_reclen; /* length of this record */ - u_short d_namlen; /* length of string in d_name */ - char d_name[MAXNAMLEN + 1]; /* name (up to MAXNAMLEN + 1) */ -}; -#undef MAXNAMLEN /* avoid conflict with SVR3 */ - -#define d_ino d_fileno /* compatability */ - -#ifdef d_ino /* 4.3BSD/NFS using d_fileno */ -#undef d_ino /* (not absolutely necessary) */ -#else -#define d_fileno d_ino /* (struct direct) member */ -#endif -#endif -#include -#include -#ifdef UNK -#ifndef UFS -#error UNK applies only to UFS -/* One could do something similar for getdirentries(), but I didn't bother. */ -#endif -#include -#endif - -#if defined(UFS) + defined(BFS) + defined(NFS) != 1 /* sanity check */ -#error exactly one of UFS, BFS, or NFS must be defined -#endif - -#ifdef UFS -#define RecLen(dp) (sizeof(struct direct)) /* fixed-length entries */ -#else /* BFS || NFS */ -#define RecLen(dp) ((dp)->d_reclen) /* variable-length entries */ -#endif - -#ifdef NFS -#ifdef BSD_SYSV -#define getdirentries _getdirentries /* package hides this system call */ -#endif -extern int getdirentries(int fd, char* buf, int nbytes, long* basep); -static long dummy; /* getdirentries() needs basep */ -#define GetBlock(fd, buf, n) getdirentries(fd, buf, (unsigned)n, &dummy) -#else /* UFS || BFS */ -#ifdef BSD_SYSV -#define read _read /* avoid emulation overhead */ -#endif -extern int read(); -#define GetBlock(fd, buf, n) read(fd, buf, (unsigned)n) -#endif - -#ifdef UNK -extern int _getdents(); /* actual system call */ -#endif - -extern int _fstat(int fd, struct stat* buf); -extern off_t _lseek(int d, int offset, int whence); - -#ifndef DIRBLKSIZ -#define DIRBLKSIZ 4096 /* directory file read buffer size */ -#endif - -#ifndef NULL -#define NULL 0 -#endif - -#ifndef SEEK_CUR -#define SEEK_CUR 1 -#endif - -#ifndef S_ISDIR /* macro to test for directory file */ -#define S_ISDIR(mode) (((mode)&S_IFMT) == S_IFDIR) -#endif - -#ifdef UFS - -/* - The following routine is necessary to handle DIRSIZ-long entry names. - Thanks to Richard Todd for pointing this out. -*/ - -static int -NameLen(char name[]) /* return # chars in embedded name */ -/* -> name embedded in struct direct */ -{ - register char* s; /* -> name[.] */ - register char* stop = &name[DIRSIZ]; /* -> past end of name field */ - - for (s = &name[1]; /* (empty names are impossible) */ - *s != '\0' /* not NUL terminator */ - && ++s < stop; /* < DIRSIZ characters scanned */ - ) - ; - - return s - name; /* # valid characters in name */ -} - -#else /* BFS || NFS */ - -#define NameLen(name) strlen(name) /* names are always NUL-terminated */ - -#endif - -#ifdef UNK -static enum { maybe, - no, - yes } state - = maybe; -/* does _getdents() work? */ - -/*ARGSUSED*/ -static void -sig_catch(int sig) /* sig must be SIGSYS */ -{ - state = no; /* attempted _getdents() faulted */ -} -#endif - -int getdents(int fildes, char* buf, unsigned nbyte) /* returns # bytes read; - 0 on EOF, -1 on error */ -/* fildes == directory file descriptor */ -/* *buf == where to put the (struct dirent)s */ -/* nbyte == size of buf[] */ -{ - int serrno; /* entry errno */ - off_t offset; /* initial directory file offset */ - struct stat statb; /* fstat() info */ - union { - char dblk[DIRBLKSIZ]; - /* directory file block buffer */ - struct direct dummy; /* just for alignment */ - } u; /* (avoids having to malloc()) */ - register struct direct* dp; /* -> u.dblk[.] */ - register struct dirent* bp; /* -> buf[.] */ - -#ifdef UNK - switch (state) - { - void (*shdlr)(); /* entry SIGSYS handler */ - register int retval; /* return from _getdents() if any */ - - case yes: /* _getdents() is known to work */ - return _getdents(fildes, buf, nbyte); - - case maybe: /* first time only */ - shdlr = signal(SIGSYS, sig_catch); - retval = _getdents(fildes, buf, nbyte); /* try it */ - (void)signal(SIGSYS, shdlr); - - if (state == maybe) /* SIGSYS did not occur */ - { - state = yes; /* so _getdents() must have worked */ - return retval; - } - /* else fall through into emulation */ - - /* case no:*/ /* fall through into emulation */ - } -#endif - - if (buf == NULL -#ifdef ATT_SPEC - || (unsigned long)buf % sizeof(long) != 0 /* ugh */ -#endif - ) - { - errno = EFAULT; /* invalid pointer */ - return -1; - } - - if (_fstat(fildes, &statb) != 0) - return -1; /* errno set by fstat() */ - - if (!S_ISDIR(statb.st_mode)) - { - errno = ENOTDIR; /* not a directory */ - return -1; - } - - if ((offset = _lseek(fildes, (off_t)0, SEEK_CUR)) < 0) - return -1; /* errno set by lseek() */ - -#ifdef BFS /* no telling what remote hosts do */ - if ((unsigned long)offset % DIRBLKSIZ != 0) - { - errno = ENOENT; /* file pointer probably misaligned */ - return -1; - } -#endif - - serrno = errno; /* save entry errno */ - - for (bp = (struct dirent*)buf; bp == (struct dirent*)buf;) - { /* convert next directory block */ - int size; - - do - size = GetBlock(fildes, u.dblk, DIRBLKSIZ); - while (size == -1 && errno == EINTR); - - if (size <= 0) - return size; /* EOF or error (EBADF) */ - - for (dp = (struct direct*)u.dblk; - (char*)dp < &u.dblk[size]; - dp = (struct direct*)((char*)dp + RecLen(dp))) - { -#ifndef UFS - if (dp->d_reclen <= 0) - { - errno = EIO; /* corrupted directory */ - return -1; - } -#endif - - if (dp->d_fileno != 0) - { /* non-empty; copy to user buffer */ - register int reclen = DIRENTSIZ(NameLen(dp->d_name)); - - if ((char*)bp + reclen > &buf[nbyte]) - { - errno = EINVAL; - return -1; /* buf too small */ - } - - bp->d_ino = dp->d_fileno; - bp->d_off = offset + ((char*)dp - u.dblk); - bp->d_reclen = reclen; - (void)strncpy(bp->d_name, dp->d_name, - reclen - DIRENTBASESIZ); /* adds NUL padding */ - - bp = (struct dirent*)((char*)bp + reclen); - } - } - -#ifndef BFS /* 4.2BSD screwed up; fixed in 4.3BSD */ - if ((char*)dp > &u.dblk[size]) - { - errno = EIO; /* corrupted directory */ - return -1; - } -#endif - } - - errno = serrno; /* restore entry errno */ - return (char*)bp - buf; /* return # bytes read */ -} diff --git a/lang/cem/libcc.ansi/_dead/getgrent.c b/lang/cem/libcc.ansi/_dead/getgrent.c deleted file mode 100644 index 33517f961..000000000 --- a/lang/cem/libcc.ansi/_dead/getgrent.c +++ /dev/null @@ -1,134 +0,0 @@ -/* - * getgrent - get entry form group file - * - * Author: Patrick van Kleef - */ -/* $Id$ */ - -#include -#include -#include - -#define O_RDONLY 0 - -int open(const char* path, int flags); - -#if defined(__BSD4_2) -typedef int off_t; /* see lseek(2) */ -#else -typedef long off_t; -#endif - -off_t _lseek(int d, off_t offset, int whence); -int _read(int d, char* buf, int nbytes); -int _close(int d); - -#define RBUFSIZE 1024 -static char _gr_file[] = "/etc/group"; -static char _grbuf[256]; -static char _buffer[RBUFSIZE]; -static char* _pnt; -static char* _buf; -static int _gfd = -1; -static int _bufcnt; -static struct group grp; - -int setgrent(void) -{ - if (_gfd >= 0) - _lseek(_gfd, 0L, 0); - else - _gfd = open(_gr_file, O_RDONLY); - - _bufcnt = 0; - return _gfd; -} - -void endgrent(void) -{ - if (_gfd >= 0) - _close(_gfd); - - _gfd = -1; - _bufcnt = 0; -} - -static int -getline(void) -{ - if (_gfd < 0 && setgrent() < 0) - return 0; - - _buf = _grbuf; - do - { - if (--_bufcnt <= 0) - { - if ((_bufcnt = _read(_gfd, _buffer, RBUFSIZE)) <= 0) - return 0; - else - _pnt = _buffer; - } - *_buf++ = *_pnt++; - } while (*_pnt != '\n'); - _pnt++; - _bufcnt--; - *_buf = 0; - _buf = _grbuf; - return 1; -} - -static void -skip_period(void) -{ - while (*_buf && *_buf != ':') - _buf++; - *_buf++ = '\0'; -} - -struct group* -getgrent(void) -{ - if (getline() == 0) - return 0; - - grp.gr_name = _buf; - skip_period(); - grp.gr_passwd = _buf; - skip_period(); - grp.gr_gid = atoi(_buf); - skip_period(); - return &grp; -} - -struct group* -getgrnam(const char* name) -{ - struct group* g; - - setgrent(); - while ((g = getgrent()) != 0) - if (!strcmp(g->gr_name, name)) - break; - endgrent(); - if (g != 0) - return g; - else - return 0; -} - -struct group* -getgrgid(int gid) -{ - struct group* g; - - setgrent(); - while ((g = getgrent()) != 0) - if (g->gr_gid == gid) - break; - endgrent(); - if (g != 0) - return g; - else - return 0; -} diff --git a/lang/cem/libcc.ansi/_dead/opendir.c b/lang/cem/libcc.ansi/_dead/opendir.c deleted file mode 100644 index b7b3472d0..000000000 --- a/lang/cem/libcc.ansi/_dead/opendir.c +++ /dev/null @@ -1,66 +0,0 @@ -/* - opendir -- open a directory stream - - last edit: 16-Jun-1987 D A Gwyn -*/ - -#include -#include -#include -#include -#include -#include - -typedef void* pointer; /* (void *) if you have it */ - -extern int _open(const char* path, int flags, int mode); -extern int _close(int d); -extern int _fstat(int fd, struct stat* buf); - -#ifndef NULL -#define NULL 0 -#endif - -#ifndef O_RDONLY -#define O_RDONLY 0 -#endif - -#ifndef S_ISDIR /* macro to test for directory file */ -#define S_ISDIR(mode) (((mode)&S_IFMT) == S_IFDIR) -#endif - -DIR* opendir(const char* dirname) /* name of directory */ -{ - register DIR* dirp; /* -> malloc'ed storage */ - register int fd; /* file descriptor for read */ - struct stat sbuf; /* result of fstat() */ - - if ((fd = _open(dirname, O_RDONLY, 0)) < 0) - return NULL; /* errno set by open() */ - - if (_fstat(fd, &sbuf) != 0 || !S_ISDIR(sbuf.st_mode)) - { - (void)_close(fd); - errno = ENOTDIR; - return NULL; /* not a directory */ - } - - if ((dirp = (DIR*)malloc(sizeof(DIR))) == NULL - || (dirp->dd_buf = (char*)malloc((unsigned)DIRBUF)) == NULL) - { - register int serrno = errno; - /* errno set to ENOMEM by sbrk() */ - - if (dirp != NULL) - free((pointer)dirp); - - (void)_close(fd); - errno = serrno; - return NULL; /* not enough memory */ - } - - dirp->dd_fd = fd; - dirp->dd_loc = dirp->dd_size = 0; /* refill needed */ - - return dirp; -} diff --git a/lang/cem/libcc.ansi/_dead/readdir.c b/lang/cem/libcc.ansi/_dead/readdir.c deleted file mode 100644 index ac1d800b1..000000000 --- a/lang/cem/libcc.ansi/_dead/readdir.c +++ /dev/null @@ -1,44 +0,0 @@ -/* - readdir -- read next entry from a directory stream - - last edit: 25-Apr-1987 D A Gwyn -*/ - -#include -#include -#include -#include - -/* SVR3 system call, or emulation for getdents() */ -extern int getdents(int fildes, char* buf, unsigned nbyte); - -#ifndef NULL -#define NULL 0 -#endif - -struct dirent* -readdir(register DIR* dirp) -{ - register struct dirent* dp; /* -> directory data */ - - if (dirp == NULL || dirp->dd_buf == NULL) - { - errno = EFAULT; - return NULL; /* invalid pointer */ - } - - do - { - if (dirp->dd_loc >= dirp->dd_size) /* empty or obsolete */ - dirp->dd_loc = dirp->dd_size = 0; - - if (dirp->dd_size == 0 /* need to refill buffer */ - && (dirp->dd_size = getdents(dirp->dd_fd, dirp->dd_buf, (unsigned)DIRBUF)) <= 0) - return NULL; /* EOF or error */ - - dp = (struct dirent*)&dirp->dd_buf[dirp->dd_loc]; - dirp->dd_loc += dp->d_reclen; - } while (dp->d_ino == 0L); /* don't rely on getdents() */ - - return dp; -} diff --git a/lang/cem/libcc.ansi/_dead/rewinddir.c b/lang/cem/libcc.ansi/_dead/rewinddir.c deleted file mode 100644 index e8c9e4749..000000000 --- a/lang/cem/libcc.ansi/_dead/rewinddir.c +++ /dev/null @@ -1,36 +0,0 @@ -/* - rewinddir -- rewind a directory stream - - last edit: 25-Apr-1987 D A Gwyn - - This is not simply a call to seekdir(), because seekdir() - will use the current buffer whenever possible and we need - rewinddir() to forget about buffered data. -*/ - -#include -#include -#include -#include - -extern off_t _lseek(int d, int offset, int whence); - -#ifndef NULL -#define NULL 0 -#endif - -#ifndef SEEK_SET -#define SEEK_SET 0 -#endif - -void rewinddir(register DIR* dirp) -{ - if (dirp == NULL || dirp->dd_buf == NULL) - { - errno = EFAULT; - return; /* invalid pointer */ - } - - dirp->dd_loc = dirp->dd_size = 0; /* invalidate buffer */ - (void)_lseek(dirp->dd_fd, (off_t)0, SEEK_SET); /* may set errno */ -} diff --git a/lang/cem/libcc.ansi/_dead/seekdir.c b/lang/cem/libcc.ansi/_dead/seekdir.c deleted file mode 100644 index c53629292..000000000 --- a/lang/cem/libcc.ansi/_dead/seekdir.c +++ /dev/null @@ -1,107 +0,0 @@ -/* - seekdir -- reposition a directory stream - - last edit: 24-May-1987 D A Gwyn - - An unsuccessful seekdir() will in general alter the current - directory position; beware. - - NOTE: 4.nBSD directory compaction makes seekdir() & telldir() - practically impossible to do right. Avoid using them! -*/ - -#include -#include -#include -#include - -extern off_t _lseek(int d, int offset, int whence); - -#ifndef NULL -#define NULL 0 -#endif - -#ifndef SEEK_SET -#define SEEK_SET 0 -#endif - -typedef int bool; /* Boolean data type */ -#define false 0 -#define true 1 - -void seekdir(register DIR* dirp, register off_t loc) -/* loc == position from telldir() */ -{ - register bool rewind; /* "start over when stymied" flag */ - - if (dirp == NULL || dirp->dd_buf == NULL) - { - errno = EFAULT; - return; /* invalid pointer */ - } - - /* A (struct dirent)'s d_off is an invented quantity on 4.nBSD - NFS-supporting systems, so it is not safe to lseek() to it. */ - - /* Monotonicity of d_off is heavily exploited in the following. */ - - /* This algorithm is tuned for modest directory sizes. For - huge directories, it might be more efficient to read blocks - until the first d_off is too large, then back up one block, - or even to use binary search on the directory blocks. I - doubt that the extra code for that would be worthwhile. */ - - if (dirp->dd_loc >= dirp->dd_size /* invalid index */ - || ((struct dirent*)&dirp->dd_buf[dirp->dd_loc])->d_off > loc - /* too far along in buffer */ - ) - dirp->dd_loc = 0; /* reset to beginning of buffer */ - /* else save time by starting at current dirp->dd_loc */ - - for (rewind = true;;) - { - register struct dirent* dp; - - /* See whether the matching entry is in the current buffer. */ - - if ((dirp->dd_loc < dirp->dd_size /* valid index */ - || readdir(dirp) != NULL /* next buffer read */ - && (dirp->dd_loc = 0, true) /* beginning of buffer set */ - ) - && (dp = (struct dirent*)&dirp->dd_buf[dirp->dd_loc])->d_off - <= loc /* match possible in this buffer */ - ) - { - for (/* dp initialized above */; - (char*)dp < &dirp->dd_buf[dirp->dd_size]; - dp = (struct dirent*)((char*)dp + dp->d_reclen)) - if (dp->d_off == loc) - { /* found it! */ - dirp->dd_loc = (char*)dp - dirp->dd_buf; - return; - } - - rewind = false; /* no point in backing up later */ - dirp->dd_loc = dirp->dd_size; /* set end of buffer */ - } - else /* whole buffer past matching entry */ - if (!rewind) - { /* no point in searching further */ - errno = EINVAL; - return; /* no entry at specified loc */ - } - else - { /* rewind directory and start over */ - rewind = false; /* but only once! */ - - dirp->dd_loc = dirp->dd_size = 0; - - if (_lseek(dirp->dd_fd, (off_t)0, SEEK_SET) - != 0) - return; /* errno already set (EBADF) */ - - if (loc == 0) - return; /* save time */ - } - } -} diff --git a/lang/cem/libcc.ansi/_dead/telldir.c b/lang/cem/libcc.ansi/_dead/telldir.c deleted file mode 100644 index 9db00740a..000000000 --- a/lang/cem/libcc.ansi/_dead/telldir.c +++ /dev/null @@ -1,33 +0,0 @@ -/* - telldir -- report directory stream position - - last edit: 25-Apr-1987 D A Gwyn - - NOTE: 4.nBSD directory compaction makes seekdir() & telldir() - practically impossible to do right. Avoid using them! -*/ - -#include -#include -#include -#include - -extern off_t _lseek(int d, int offset, int whence); - -#ifndef SEEK_CUR -#define SEEK_CUR 1 -#endif - -off_t telldir(register DIR* dirp) /* return offset of next entry */ -{ - if (dirp == NULL || dirp->dd_buf == NULL) - { - errno = EFAULT; - return -1; /* invalid pointer */ - } - - if (dirp->dd_loc < dirp->dd_size) /* valid index */ - return ((struct dirent*)&dirp->dd_buf[dirp->dd_loc])->d_off; - else /* beginning of next directory block */ - return _lseek(dirp->dd_fd, (off_t)0, SEEK_CUR); -}