home *** CD-ROM | disk | FTP | other *** search
- From: netnews@netcom.UUCP (USENET Administration)
- Newsgroups: alt.sources
- Subject: Public Domain Korn Shell - Part.07 of 7
- Message-ID: <18612@netcom.UUCP>
- Date: 12 Dec 90 11:39:36 GMT
-
- #!/bin/sh
- # This is part 07 of ksh-pd
- # ============= stdc/stdio.h ==============
- if test ! -d 'stdc'; then
- echo 'x - creating directory stdc'
- mkdir 'stdc'
- fi
- if test -f 'stdc/stdio.h' -a X"$1" != X"-c"; then
- echo 'x - skipping stdc/stdio.h (File already exists)'
- else
- echo 'x - extracting stdc/stdio.h (Text)'
- sed 's/^X//' << 'SHAR_EOF' > 'stdc/stdio.h' &&
- X/*
- X * ANSI stream IO
- X *
- X * Heavily dependent on /usr/include/stdio.h being AT&T derived.
- X * todo: needs L_* constants.
- X */
- X
- X/* $Header: stdio.h,v 1.2 88/06/23 18:32:35 egisin Locked $ */
- X
- X#if ! _STDIO_H
- X#define _STDIO_H 1
- X
- X#include <stddef.h>
- X
- X/* system stdio.h goes here ... %%% */
- X/*
- X * Copyright (c) 1980 Regents of the University of California.
- X * All rights reserved. The Berkeley software License Agreement
- X * specifies the terms and conditions for redistribution.
- X *
- X * @(#)stdio.h 5.3 (Berkeley) 3/15/86
- X */
- X
- X# ifndef FILE
- X#define BUFSIZ 1024
- Xextern struct _iobuf {
- X int _cnt;
- X char *_ptr; /* should be unsigned char */
- X char *_base; /* ditto */
- X int _bufsiz;
- X short _flag;
- X char _file; /* should be short */
- X} _iob[];
- X
- X#define _IOREAD 01
- X#define _IOWRT 02
- X#define _IONBF 04
- X#define _IOMYBUF 010
- X#define _IOEOF 020
- X#define _IOERR 040
- X#define _IOSTRG 0100
- X#define _IOLBF 0200
- X#define _IORW 0400
- X#define FILE struct _iobuf
- X#define EOF (-1)
- X
- X#define stdin (&_iob[0])
- X#define stdout (&_iob[1])
- X#define stderr (&_iob[2])
- X#ifndef lint
- X#define getc(p) (--(p)->_cnt>=0? (int)(*(unsigned char *)(p)->_ptr++):_filbuf(p))
- X#endif /*not lint*/
- X#define getchar() getc(stdin)
- X#ifndef lint
- X#define putc(x, p) (--(p)->_cnt >= 0 ?\
- X (int)(*(unsigned char *)(p)->_ptr++ = (x)) :\
- X (((p)->_flag & _IOLBF) && -(p)->_cnt < (p)->_bufsiz ?\
- X ((*(p)->_ptr = (x)) != '\n' ?\
- X (int)(*(unsigned char *)(p)->_ptr++) :\
- X _flsbuf(*(unsigned char *)(p)->_ptr, p)) :\
- X _flsbuf((unsigned char)(x), p)))
- X#endif /*not lint*/
- X#define putchar(x) putc(x,stdout)
- X#define feof(p) (((p)->_flag&_IOEOF)!=0)
- X#define ferror(p) (((p)->_flag&_IOERR)!=0)
- X#define fileno(p) ((p)->_file)
- X#define clearerr(p) ((p)->_flag &= ~(_IOERR|_IOEOF))
- X
- X
- X#ifdef lint
- Xextern int printf(/*FORMAT1*/);
- Xextern int fprintf(/*FORMAT2*/);
- X#endif /*lint*/
- X
- XFILE *fopen();
- XFILE *fdopen();
- XFILE *freopen();
- XFILE *popen();
- Xlong ftell();
- Xchar *fgets();
- Xchar *gets();
- X#ifdef vax
- X#endif
- X# endif
- X/* ... end system stdio.h */
- X#line 15 "stdio.h"
- X
- X#ifndef _IOFBF
- X#define _IOFBF 00000
- X#endif
- X#ifndef _IOLBF
- X#define _IOLBF 00000 /* same as _IOFBF */
- X#endif
- X
- X#define SEEK_SET 0
- X#define SEEK_CUR 1
- X#define SEEK_END 2
- X
- X#if _SYSV
- X#define _EXTERN extern
- X#else
- X#define _EXTERN
- X#endif
- X
- X_EXTERN int remove ARGS((const char *name));
- X_EXTERN int rename ARGS((const char *oname, const char *nname));
- X_EXTERN FILE *tmpfile ARGS((void));
- X_EXTERN char *tmpnam ARGS((char *s));
- X
- X_EXTERN FILE *fopen ARGS((const char *name, const char *mode));
- X_EXTERN FILE *freopen ARGS((const char *name, const char *mode, FILE *f));
- X_EXTERN FILE *fdopen ARGS((int fd, const char *mode));
- X_EXTERN int fflush ARGS((FILE *f));
- X_EXTERN int fclose ARGS((FILE *f));
- X_EXTERN void setbuf ARGS((FILE *f, char *buf));
- X_EXTERN int setvbuf ARGS((FILE *f, char *buf, int flags, size_t len));
- X
- X_EXTERN int fseek ARGS((FILE *f, long off, int how));
- X_EXTERN long ftell ARGS((FILE *f));
- X_EXTERN void rewind ARGS((FILE *f));
- X
- X_EXTERN int printf ARGS((const char *fmt, ...));
- X_EXTERN int fprintf ARGS((FILE *f, const char *fmt, ...));
- X_EXTERN int sprintf ARGS((char *s, const char *fmt, ...));
- X/* we do not include <stdarg.h> to prevent <varargs.h> conflicts */
- X_EXTERN int vprintf ARGS((const char *fmt, Void *va));
- X_EXTERN int vfprintf ARGS((FILE *f, const char *fmt, Void *va));
- X_EXTERN int vsprintf ARGS((char *s, const char *fmt, Void *va));
- X_EXTERN int scanf ARGS((const char *fmt, ...));
- X_EXTERN int fscanf ARGS((FILE *f, const char *fmt, ...));
- X_EXTERN int sscanf ARGS((const char *s, const char *fmt, ...));
- X
- X_EXTERN size_t fread ARGS((void *ptr, size_t size, size_t n, FILE *f));
- X_EXTERN size_t frwrite ARGS((const void *ptr, size_t size, size_t n, FILE *f));
- X_EXTERN int fgetc ARGS((FILE *f));
- X_EXTERN int fputc ARGS((int c, FILE *f));
- X_EXTERN char *fgets ARGS((char *s, int len, FILE *f));
- X_EXTERN int fputs ARGS((const char *s, FILE *f));
- X_EXTERN char *gets ARGS((char *s));
- X_EXTERN int puts ARGS((const char *s));
- X
- X#endif
- X
- SHAR_EOF
- true || echo 'restore of stdc/stdio.h failed'
- fi
- # ============= stdc/stdio.h_std ==============
- if test -f 'stdc/stdio.h_std' -a X"$1" != X"-c"; then
- echo 'x - skipping stdc/stdio.h_std (File already exists)'
- else
- echo 'x - extracting stdc/stdio.h_std (Text)'
- sed 's/^X//' << 'SHAR_EOF' > 'stdc/stdio.h_std' &&
- X/*
- X * ANSI stream IO
- X *
- X * Heavily dependent on /usr/include/stdio.h being AT&T derived.
- X * todo: needs L_* constants.
- X */
- X
- X/* $Header: stdio.h,v 1.2 88/06/23 18:32:35 egisin Locked $ */
- X
- X#if ! _STDIO_H
- X#define _STDIO_H 1
- X
- X#include <stddef.h>
- X
- X/* system stdio.h goes here ... %%% */
- X/* ... end system stdio.h */
- X#line 15 "stdio.h"
- X
- X#ifndef _IOFBF
- X#define _IOFBF 00000
- X#endif
- X#ifndef _IOLBF
- X#define _IOLBF 00000 /* same as _IOFBF */
- X#endif
- X
- X#define SEEK_SET 0
- X#define SEEK_CUR 1
- X#define SEEK_END 2
- X
- X#if _SYSV
- X#define _EXTERN extern
- X#else
- X#define _EXTERN
- X#endif
- X
- X_EXTERN int remove ARGS((const char *name));
- X_EXTERN int rename ARGS((const char *oname, const char *nname));
- X_EXTERN FILE *tmpfile ARGS((void));
- X_EXTERN char *tmpnam ARGS((char *s));
- X
- X_EXTERN FILE *fopen ARGS((const char *name, const char *mode));
- X_EXTERN FILE *freopen ARGS((const char *name, const char *mode, FILE *f));
- X_EXTERN FILE *fdopen ARGS((int fd, const char *mode));
- X_EXTERN int fflush ARGS((FILE *f));
- X_EXTERN int fclose ARGS((FILE *f));
- X_EXTERN void setbuf ARGS((FILE *f, char *buf));
- X_EXTERN int setvbuf ARGS((FILE *f, char *buf, int flags, size_t len));
- X
- X_EXTERN int fseek ARGS((FILE *f, long off, int how));
- X_EXTERN long ftell ARGS((FILE *f));
- X_EXTERN void rewind ARGS((FILE *f));
- X
- X_EXTERN int printf ARGS((const char *fmt, ...));
- X_EXTERN int fprintf ARGS((FILE *f, const char *fmt, ...));
- X_EXTERN int sprintf ARGS((char *s, const char *fmt, ...));
- X/* we do not include <stdarg.h> to prevent <varargs.h> conflicts */
- X_EXTERN int vprintf ARGS((const char *fmt, Void *va));
- X_EXTERN int vfprintf ARGS((FILE *f, const char *fmt, Void *va));
- X_EXTERN int vsprintf ARGS((char *s, const char *fmt, Void *va));
- X_EXTERN int scanf ARGS((const char *fmt, ...));
- X_EXTERN int fscanf ARGS((FILE *f, const char *fmt, ...));
- X_EXTERN int sscanf ARGS((const char *s, const char *fmt, ...));
- X
- X_EXTERN size_t fread ARGS((void *ptr, size_t size, size_t n, FILE *f));
- X_EXTERN size_t frwrite ARGS((const void *ptr, size_t size, size_t n, FILE *f));
- X_EXTERN int fgetc ARGS((FILE *f));
- X_EXTERN int fputc ARGS((int c, FILE *f));
- X_EXTERN char *fgets ARGS((char *s, int len, FILE *f));
- X_EXTERN int fputs ARGS((const char *s, FILE *f));
- X_EXTERN char *gets ARGS((char *s));
- X_EXTERN int puts ARGS((const char *s));
- X
- X#endif
- X
- SHAR_EOF
- true || echo 'restore of stdc/stdio.h_std failed'
- fi
- # ============= stdc/stdlib.h ==============
- if test -f 'stdc/stdlib.h' -a X"$1" != X"-c"; then
- echo 'x - skipping stdc/stdlib.h (File already exists)'
- else
- echo 'x - extracting stdc/stdlib.h (Text)'
- sed 's/^X//' << 'SHAR_EOF' > 'stdc/stdlib.h' &&
- X/* ANSI utility functions */
- X
- X/* $Header: stdlib.h,v 1.1 88/03/09 21:52:59 egisin Locked $ */
- X
- X#if ! _STDLIB_H
- X#define _STDLIB_H 1
- X
- X#include <stddef.h>
- X
- Xdouble atof ARGS((const char *s));
- Xint atoi ARGS((const char *s));
- Xlong atol ARGS((const char *s));
- Xdouble strtod ARGS((const char *s, char **));
- Xlong strtol ARGS((const char *s, char **, int base));
- Xunsigned long strtoul ARGS((const char *s, char **, int base));
- Xint rand ARGS((void));
- Xvoid srand ARGS((unsigned int seed));
- XVoid *malloc ARGS((size_t size));
- XVoid *realloc ARGS((void *ptr, size_t size));
- XVoid *calloc ARGS((size_t n, size_t size));
- Xvoid free ARGS((void *ptr));
- Xvoid abort ARGS((void));
- Xint atexit ARGS((void (*func)(void)));
- Xvoid exit ARGS((int status));
- Xchar *getenv ARGS((const char *name));
- Xint system ARGS((const char *cmd));
- Xvoid *bsearch ARGS ((const void *key, const void *base, size_t n, size_t size,
- X int (*compar)(const void *, const void *)));
- Xvoid *qsort ARGS ((const void *base, size_t n, size_t size,
- X int (*compar)(const void *, const void *)));
- X#define abs(a) ((a) < 0 : -(a) : (a))
- X
- X#endif
- X
- SHAR_EOF
- true || echo 'restore of stdc/stdlib.h failed'
- fi
- # ============= stdc/string.h ==============
- if test -f 'stdc/string.h' -a X"$1" != X"-c"; then
- echo 'x - skipping stdc/string.h (File already exists)'
- else
- echo 'x - extracting stdc/string.h (Text)'
- sed 's/^X//' << 'SHAR_EOF' > 'stdc/string.h' &&
- X/* ANSI string handling (missing wide char stuff) */
- X
- X#if ! _STRING_H
- X#define _STRING_H 1
- X
- X#include <stddef.h> /* define NULL and size_t */
- X
- X#if __STDC__
- X#define ARGS(args) args
- X#define Void void
- X#else
- X#define ARGS(args) ()
- X#define Void char
- X#endif
- X
- XVoid *memcpy ARGS((Void *s1, const Void *s2, size_t));
- XVoid *memmove ARGS((Void *s1, const Void *s2, size_t));
- Xint memcmp ARGS((const Void *s1, const Void *s2, size_t));
- XVoid *memchr ARGS((const Void *s, int c, size_t));
- XVoid *memset ARGS((Void *s, int c, size_t));
- Xsize_t strlen ARGS((const char *s));
- Xchar *strcpy ARGS((char *s1, const char *s2));
- Xchar *strncpy ARGS((char *s1, const char *s2, size_t));
- Xchar *strcat ARGS((char *s1, const char *s2));
- Xchar *strncat ARGS((char *s1, const char *s2, size_t));
- Xint strcmp ARGS((const char *s1, const char *s2));
- Xint strncmp ARGS((const char *s1, const char *s2, size_t));
- Xchar *strchr ARGS((const char *s1, int c));
- Xchar *strrchr ARGS((const char *s1, int c));
- Xsize_t strspn ARGS((const char *s1, const char *s2));
- Xsize_t strcspn ARGS((const char *s1, const char *s2));
- Xchar *strpbrk ARGS((const char *s1, const char *s2));
- Xchar *strstr ARGS((const char *s1, const char *s2));
- Xchar *strtok ARGS((char *s1, const char *s2));
- Xchar *strerror ARGS((int errno));
- X
- X#endif /* _STRING_H */
- X
- SHAR_EOF
- true || echo 'restore of stdc/string.h failed'
- fi
- # ============= stdc/strcat.c ==============
- if test -f 'stdc/strcat.c' -a X"$1" != X"-c"; then
- echo 'x - skipping stdc/strcat.c (File already exists)'
- else
- echo 'x - extracting stdc/strcat.c (Text)'
- sed 's/^X//' << 'SHAR_EOF' > 'stdc/strcat.c' &&
- X#include <string.h>
- X
- X/*
- X * strcat - append string src to dst
- X */
- Xchar * /* dst */
- Xstrcat(dst, src)
- Xchar *dst;
- XConst char *src;
- X{
- X register char *dscan;
- X register Const char *sscan;
- X
- X for (dscan = dst; *dscan != '\0'; dscan++)
- X continue;
- X sscan = src;
- X while ((*dscan++ = *sscan++) != '\0')
- X continue;
- X return(dst);
- X}
- SHAR_EOF
- true || echo 'restore of stdc/strcat.c failed'
- fi
- # ============= stdc/sprintf.c ==============
- if test -f 'stdc/sprintf.c' -a X"$1" != X"-c"; then
- echo 'x - skipping stdc/sprintf.c (File already exists)'
- else
- echo 'x - extracting stdc/sprintf.c (Text)'
- sed 's/^X//' << 'SHAR_EOF' > 'stdc/sprintf.c' &&
- X/*
- X * sprintf and vsprintf
- X */
- X
- X/* $Header */
- X
- X#if __STDC__
- X#include <stdarg.h>
- X#else
- X#include <varargs.h>
- X#endif
- X#include <stdio.h>
- X
- X#if _V7 || _BSD
- X
- Xint
- X#if __STDC__
- Xsprintf(char *s, Const char *fmt, ...) {
- X#else
- Xsprintf(va_alist) va_dcl
- X{
- X char *s;
- X char *fmt;
- X#endif
- X register va_list va;
- X int n;
- X
- X#if __STDC__
- X va_start(va, fmt);
- X#else
- X va_start(va);
- X s = va_arg(va, char *);
- X fmt = va_arg(va, char *);
- X#endif
- X n = vsprintf(s, fmt, va);
- X va_end(va);
- X return n;
- X}
- X
- Xint
- X#if __STDC__
- Xvsprintf(char *s, const char *fmt, va_list va) {
- X#else
- Xvsprintf(s, fmt, va)
- X char *s;
- X char *fmt;
- X va_list va;
- X{
- X#endif
- X int n;
- X static FILE siob;
- X
- X siob._flag = _IOWRT;
- X siob._base = siob._ptr = s;
- X siob._cnt = BUFSIZ;
- X siob._file = -1;
- X
- X n = vfprintf(&siob, fmt, va);
- X *siob._ptr = 0;
- X return n;
- X}
- X
- X#endif
- X
- SHAR_EOF
- true || echo 'restore of stdc/sprintf.c failed'
- fi
- # ============= stdc/time.h ==============
- if test -f 'stdc/time.h' -a X"$1" != X"-c"; then
- echo 'x - skipping stdc/time.h (File already exists)'
- else
- echo 'x - extracting stdc/time.h (Text)'
- sed 's/^X//' << 'SHAR_EOF' > 'stdc/time.h' &&
- X/* time, time/date conversion */
- X
- X#if ! _TIME_H
- X#define _TIME_H 1
- X
- X#include <stddef.h> /* need size_t */
- X
- Xtypedef long time_t;
- Xtypedef long clock_t; /* seconds/CLK_TCK */
- X
- X#if _V7 || _SYSV
- X#define CLK_TCK 60 /* todo: get from <sys/param.h> */
- X#endif
- X
- X#if _BSD
- X#define CLK_TCK 100
- X#endif
- X
- X#if _ST
- X#define CLK_TCK 200 /* ST system clock */
- X#endif
- X
- Xstruct tm {
- X int tm_sec, tm_min, tm_hour;
- X int tm_mday, tm_mon, tm_year, tm_wday, tm_yday;
- X int tm_isdst;
- X long tm_gmtoff; /* BSD */
- X char *tm_zone; /* BSD */
- X};
- X
- Xclock_t clock ARGS((void));
- Xtime_t time ARGS((time_t *tp));
- X#define difftime(t1, t2) (double)((t2)-(t1))
- Xtime_t mktime ARGS((struct tm *tmp));
- Xchar *asctime ARGS((const struct tm *tmp));
- Xchar *ctime ARGS((const time_t *tp));
- Xstruct tm *gmtime ARGS((const time_t *tp));
- Xstruct tm *localtime ARGS((const time_t *tp));
- Xsize_t strftime ARGS((char *buf, size_t len, const char *fmt, const struct tm *tmp));
- X
- X#endif
- X
- SHAR_EOF
- true || echo 'restore of stdc/time.h failed'
- fi
- # ============= stdc/memcpy.c ==============
- if test -f 'stdc/memcpy.c' -a X"$1" != X"-c"; then
- echo 'x - skipping stdc/memcpy.c (File already exists)'
- else
- echo 'x - extracting stdc/memcpy.c (Text)'
- sed 's/^X//' << 'SHAR_EOF' > 'stdc/memcpy.c' &&
- X/* $Header$ */
- X
- X#include <string.h>
- X
- XVoid *
- Xmemcpy(dap, sap, n)
- X Void *dap;
- X Const Void *sap;
- X register size_t n;
- X{
- X register char *dp = dap, *sp = (Void*) sap;
- X
- X if (n++ > 0)
- X while (--n > 0)
- X *dp++ = *sp++;
- X return dap;
- X}
- X
- SHAR_EOF
- true || echo 'restore of stdc/memcpy.c failed'
- fi
- # ============= stdc/setvbuf.c ==============
- if test -f 'stdc/setvbuf.c' -a X"$1" != X"-c"; then
- echo 'x - skipping stdc/setvbuf.c (File already exists)'
- else
- echo 'x - extracting stdc/setvbuf.c (Text)'
- sed 's/^X//' << 'SHAR_EOF' > 'stdc/setvbuf.c' &&
- X/*
- X * PD ksh needs an ANSI-compatible setvbuf.
- X * if (buf == NULL) it must also allocate a buffer
- X * and arrange for fclose to deallocate it.
- X * the reason for doing setvbuf(f, (char *)NULL, _IOFBF, BUFSIZ)
- X * in the shell is to avoid 4/8K buffers on BSD like systems.
- X */
- X
- X/* $Header */
- X
- X#include <stdlib.h>
- X#include <stdio.h>
- X
- X#if _BSD || _SYSV
- Xint
- Xsetvbuf(f, buf, type, size)
- X register FILE *f;
- X char *buf;
- X int type;
- X size_t size;
- X{
- X if ((f->_flag&_IOMYBUF) && f->_base != NULL)
- X free(f->_base);
- X f->_flag &= ~(_IOMYBUF|_IONBF|_IOFBF|_IOLBF);
- X switch (type) {
- X case _IONBF:
- X size = 0;
- X buf = NULL;
- X break;
- X case _IOLBF:
- X case _IOFBF:
- X if (size == 0)
- X size = BUFSIZ;
- X#if _V7
- X else if (size != BUFSIZ)
- X return -1;
- X#endif
- X if (buf == NULL) {
- X buf = malloc(size);
- X if (buf == NULL)
- X return -1;
- X f->_flag |= _IOMYBUF;
- X }
- X break;
- X default:
- X return -1;
- X }
- X f->_flag |= type;
- X f->_base = f->_ptr = buf;
- X f->_cnt = 0;
- X#if _BSD
- X f->_bufsiz = size;
- X#endif
- X#if _SYSV
- X _bufend(f) = buf + size;
- X#endif
- X return 0;
- X}
- X#endif
- X
- SHAR_EOF
- true || echo 'restore of stdc/setvbuf.c failed'
- fi
- # ============= stdc/clock.c ==============
- if test -f 'stdc/clock.c' -a X"$1" != X"-c"; then
- echo 'x - skipping stdc/clock.c (File already exists)'
- else
- echo 'x - extracting stdc/clock.c (Text)'
- sed 's/^X//' << 'SHAR_EOF' > 'stdc/clock.c' &&
- X/* clock() */
- X
- X#include <time.h>
- X
- X#if _BSD
- X
- X#include <sys/time.h>
- X#include <sys/resource.h>
- X
- Xclock_t
- Xclock()
- X{
- X struct timeval tv;
- X struct rusage ru;
- X
- X getrusage(RUSAGE_SELF, &ru);
- X tv.tv_sec = ru.ru_utime.tv_sec + ru.ru_stime.tv_sec;
- X tv.tv_usec = ru.ru_utime.tv_usec + ru.ru_stime.tv_usec;
- X return tv.tv_sec*CLK_TCK + (long)tv.tv_usec*CLK_TCK/1000000;
- X}
- X
- X#endif
- X
- X#if _V7 || _SYSV
- X
- X#include <sys/times.h>
- X
- Xclock_t
- Xclock()
- X{
- X struct tms tms;
- X
- X (void) times(&tms);
- X return tms.tms_utime + tms.tms_stime;
- X}
- X
- X#endif
- X
- X#if _ST
- X
- X#include <osbind.h>
- X
- Xclock_t
- Xclock()
- X{
- X long save;
- X clock_t c;
- X
- X /* access the ST's 200 HZ system clock in protected memory */
- X save = Super(0L);
- X c = *((long *)0x04BA);
- X (void)Super(save);
- X return c;
- X}
- X
- X#endif
- X
- SHAR_EOF
- true || echo 'restore of stdc/clock.c failed'
- fi
- # ============= stdc/types.h ==============
- if test -f 'stdc/types.h' -a X"$1" != X"-c"; then
- echo 'x - skipping stdc/types.h (File already exists)'
- else
- echo 'x - extracting stdc/types.h (Text)'
- sed 's/^X//' << 'SHAR_EOF' > 'stdc/types.h' &&
- X/* work around multiple typedefs in stddef.h and sys/types.h */
- X
- X#include <stddef.h> /* defines size_t and ptrdiff_t */
- X#include <time.h> /* defines time_t and clock_t */
- X
- X/* "inhibit" the typedefs in sys/types.h */
- X#define size_t _size_t
- X#define time_t _time_t
- X#define clock_t _clock_t
- X#include "/usr/include/sys/types.h"
- X#undef size_t
- X#undef time_t
- X#undef clock_t
- X
- SHAR_EOF
- true || echo 'restore of stdc/types.h failed'
- fi
- # ============= stdc/limits.h ==============
- if test -f 'stdc/limits.h' -a X"$1" != X"-c"; then
- echo 'x - skipping stdc/limits.h (File already exists)'
- else
- echo 'x - extracting stdc/limits.h (Text)'
- sed 's/^X//' << 'SHAR_EOF' > 'stdc/limits.h' &&
- X/* Implementation-defined limits */
- X
- X#if __STDC__
- X#define Signed signed
- X#else
- X#define Signed
- X#endif
- X
- X#define CHAR_BIT 8
- X
- X#define _S_MIN(type) (-(Signed type)((unsigned type) ~0 >> 1) - 1)
- X#define _S_MAX(type) ((Signed type)((unsigned type) ~0 >> 1))
- X
- X#define UCHAR_MIN ((unsigned char) 0)
- X#define UCHAR_MAX ((unsigned char) ~0)
- X#define SCHAR_MIN _S_MIN(char)
- X#define SCHAR_MAX _S_MAX(char)
- X
- X#define _U_CHAR ((char) ~0 == (unsigned char) ~0)
- X#define CHAR_MIN (_U_CHAR ? UCHAR_MIN : SCHAR_MIN)
- X#define CHAR_MAX (_U_CHAR ? UCHAR_MAX : SCHAR_MAX)
- X
- X#define USHRT_MAX ((unsigned short) ~0)
- X#define SHRT_MIN _S_MIN(short)
- X#define SHRT_MAX _S_MAX(short)
- X
- X#define UINT_MAX ((unsigned int) ~0)
- X#define INT_MIN _S_MIN(int)
- X#define INT_MAX _S_MAX(int)
- X
- X#define ULONG_MAX ((unsigned long) ~0)
- X#define LONG_MIN _S_MIN(long)
- X#define LONG_MAX _S_MAX(long)
- X
- SHAR_EOF
- true || echo 'restore of stdc/limits.h failed'
- fi
- # ============= stdc/stdarg.h ==============
- if test -f 'stdc/stdarg.h' -a X"$1" != X"-c"; then
- echo 'x - skipping stdc/stdarg.h (File already exists)'
- else
- echo 'x - extracting stdc/stdarg.h (Text)'
- sed 's/^X//' << 'SHAR_EOF' > 'stdc/stdarg.h' &&
- X#ifndef _STDARG_H
- X#define _STDARG_H
- X
- Xtypedef char *va_list;
- X
- X/* Amount of space required in an argument list for an arg of type TYPE.
- X TYPE may alternatively be an expression whose type is used. */
- X
- X#define __va_rounded_size(TYPE) \
- X (((sizeof (TYPE) + sizeof (int) - 1) / sizeof (int)) * sizeof (int))
- X
- X#define va_start(AP, LASTARG) \
- X (AP = ((char *) &(LASTARG) + __va_rounded_size (LASTARG)))
- X
- Xvoid va_end (va_list); /* Defined in gnulib */
- X#define va_end(AP)
- X
- X#define va_arg(AP, TYPE) \
- X (AP += __va_rounded_size (TYPE), \
- X *((TYPE *) (AP - __va_rounded_size (TYPE))))
- X
- X#endif /* _STDARG_H */
- SHAR_EOF
- true || echo 'restore of stdc/stdarg.h failed'
- fi
- # ============= stdc/strcmp.s ==============
- if test -f 'stdc/strcmp.s' -a X"$1" != X"-c"; then
- echo 'x - skipping stdc/strcmp.s (File already exists)'
- else
- echo 'x - extracting stdc/strcmp.s (Text)'
- sed 's/^X//' << 'SHAR_EOF' > 'stdc/strcmp.s' &&
- X#NO_APP
- X.text
- X .even
- X.globl _strcmp
- X_strcmp:
- X link a6,#0
- X movel a6@(8),a1
- X movel a6@(12),a0
- XL2:
- X moveb a1@+,d0
- X moveb a0@+,d1
- X cmpb d0,d1
- X jne L3
- X tstb d0
- X jne L2
- XL3:
- X tstb d0
- X jne L4
- X tstb d1
- X jne L4
- X clrl d0
- X jra L1
- XL4:
- X tstb d0
- X jne L6
- X moveq #-1,d0
- X jra L1
- XL6:
- X tstb d1
- X jne L8
- X moveq #1,d0
- X jra L1
- XL8:
- X extbl d0
- X extbl d1
- X subl d1,d0
- XL1:
- X unlk a6
- X rts
- SHAR_EOF
- true || echo 'restore of stdc/strcmp.s failed'
- fi
- # ============= stdc/strcpy.s ==============
- if test -f 'stdc/strcpy.s' -a X"$1" != X"-c"; then
- echo 'x - skipping stdc/strcpy.s (File already exists)'
- else
- echo 'x - extracting stdc/strcpy.s (Text)'
- sed 's/^X//' << 'SHAR_EOF' > 'stdc/strcpy.s' &&
- X#NO_APP
- X.text
- X .align 1
- X.globl _strcpy
- X_strcpy:
- X .word 0x0
- X movl 4(ap),r3
- X movl r3,r2
- X movl 8(ap),r1
- XL3:
- X movb (r1)+,r0
- X movb r0,(r2)+
- X jneq L3
- X movl r3,r0
- X ret
- SHAR_EOF
- true || echo 'restore of stdc/strcpy.s failed'
- fi
- # ============= stdc/memchr.c ==============
- if test -f 'stdc/memchr.c' -a X"$1" != X"-c"; then
- echo 'x - skipping stdc/memchr.c (File already exists)'
- else
- echo 'x - extracting stdc/memchr.c (Text)'
- sed 's/^X//' << 'SHAR_EOF' > 'stdc/memchr.c' &&
- X/* $Header$ */
- X
- X#include <string.h>
- X
- XVoid *
- Xmemchr(ap, c, n)
- X Const Void *ap;
- X register int c;
- X register size_t n;
- X{
- X register char *p = ap;
- X
- X if (n++ > 0)
- X while (--n > 0)
- X if (*p++ == c)
- X return --p;
- X return NULL;
- X}
- X
- SHAR_EOF
- true || echo 'restore of stdc/memchr.c failed'
- fi
- # ============= stdc/memcmp.c ==============
- if test -f 'stdc/memcmp.c' -a X"$1" != X"-c"; then
- echo 'x - skipping stdc/memcmp.c (File already exists)'
- else
- echo 'x - extracting stdc/memcmp.c (Text)'
- sed 's/^X//' << 'SHAR_EOF' > 'stdc/memcmp.c' &&
- X/* $Header$ */
- X
- X#include <string.h>
- X
- Xint
- Xmemcmp(dap, sap, n)
- X Const Void *dap;
- X Const Void *sap;
- X register size_t n;
- X{
- X register Const unsigned char *dp = (unsigned char Const *) dap;
- X register Const unsigned char *sp = (unsigned char Const *) sap;
- X
- X if (n++ > 0)
- X while (--n > 0)
- X if (*dp++ != *sp++)
- X return *--dp - *--sp; /* (int)? */
- X return 0;
- X}
- X
- SHAR_EOF
- true || echo 'restore of stdc/memcmp.c failed'
- fi
- # ============= stdc/memmove.c ==============
- if test -f 'stdc/memmove.c' -a X"$1" != X"-c"; then
- echo 'x - skipping stdc/memmove.c (File already exists)'
- else
- echo 'x - extracting stdc/memmove.c (Text)'
- sed 's/^X//' << 'SHAR_EOF' > 'stdc/memmove.c' &&
- X/* $Header$ */
- X
- X#include <string.h>
- X
- XVoid *
- Xmemmove(dap, sap, n)
- X Void *dap;
- X Const Void *sap;
- X register size_t n;
- X{
- X register char *dp = dap, *sp = (Void*) sap;
- X
- X if (n <= 0)
- X ;
- X else if (dp < sp)
- X do *dp++ = *sp++; while (--n > 0);
- X else if (dp > sp) {
- X dp += n;
- X sp += n;
- X do *--dp = *--sp; while (--n > 0);
- X }
- X return dap;
- X}
- X
- X
- SHAR_EOF
- true || echo 'restore of stdc/memmove.c failed'
- fi
- # ============= stdc/memset.c ==============
- if test -f 'stdc/memset.c' -a X"$1" != X"-c"; then
- echo 'x - skipping stdc/memset.c (File already exists)'
- else
- echo 'x - extracting stdc/memset.c (Text)'
- sed 's/^X//' << 'SHAR_EOF' > 'stdc/memset.c' &&
- X/* $Header$ */
- X
- X#include <string.h>
- X
- XVoid *
- Xmemset(ap, c, n)
- X Void *ap;
- X register int c;
- X register size_t n;
- X{
- X register char *p = ap;
- X
- X if (n++ > 0)
- X while (--n > 0)
- X *p++ = c;
- X return ap;
- X}
- X
- SHAR_EOF
- true || echo 'restore of stdc/memset.c failed'
- fi
- # ============= stdc/fprintf.c ==============
- if test -f 'stdc/fprintf.c' -a X"$1" != X"-c"; then
- echo 'x - skipping stdc/fprintf.c (File already exists)'
- else
- echo 'x - extracting stdc/fprintf.c (Text)'
- sed 's/^X//' << 'SHAR_EOF' > 'stdc/fprintf.c' &&
- X/*
- X * printf and fprintf
- X */
- X
- X/* $Header */
- X
- X#if __STDC__
- X#include <stdarg.h>
- X#else
- X#include <varargs.h>
- X#endif
- X#include <stdio.h>
- X
- X#if _V7 || _BSD
- X
- X/* printf to stdout */
- Xint
- X#if __STDC__
- Xprintf(Const char *fmt, ...) {
- X#else
- Xprintf(va_alist) va_dcl
- X{
- X char *fmt;
- X#endif
- X va_list va;
- X
- X#if __STDC__
- X va_start(va, fmt);
- X#else
- X va_start(va);
- X fmt = va_arg(va, char *);
- X#endif
- X vfprintf(stdout, fmt, va);
- X va_end(va);
- X return 0;
- X}
- X
- Xint
- X#if __STDC__
- Xfprintf(FILE *f, Const char *fmt, ...) {
- X#else
- Xfprintf(va_alist) va_dcl
- X{
- X FILE *f;
- X char *fmt;
- X#endif
- X va_list va;
- X
- X#if __STDC__
- X va_start(va, fmt);
- X#else
- X va_start(va);
- X f = va_arg(va, FILE *);
- X fmt = va_arg(va, char *);
- X#endif
- X vfprintf(f, fmt, va);
- X va_end(va);
- X return 0;
- X}
- X
- X#endif
- SHAR_EOF
- true || echo 'restore of stdc/fprintf.c failed'
- fi
- # ============= stdc/strtok.c ==============
- if test -f 'stdc/strtok.c' -a X"$1" != X"-c"; then
- echo 'x - skipping stdc/strtok.c (File already exists)'
- else
- echo 'x - extracting stdc/strtok.c (Text)'
- sed 's/^X//' << 'SHAR_EOF' > 'stdc/strtok.c' &&
- X#include <string.h>
- X
- X/*
- X * Get next token from string s (NULL on 2nd, 3rd, etc. calls),
- X * where tokens are nonempty strings separated by runs of
- X * chars from delim. Writes NULs into s to end tokens. delim need not
- X * remain constant from call to call.
- X */
- X
- Xstatic char *scanpoint = NULL;
- X
- Xchar * /* NULL if no token left */
- Xstrtok(s, delim)
- Xchar *s;
- Xregister Const char *delim;
- X{
- X register char *scan;
- X char *tok;
- X register Const char *dscan;
- X
- X if (s == NULL && scanpoint == NULL)
- X return(NULL);
- X if (s != NULL)
- X scan = s;
- X else
- X scan = scanpoint;
- X
- X /*
- X * Scan leading delimiters.
- X */
- X for (; *scan != '\0'; scan++) {
- X for (dscan = delim; *dscan != '\0'; dscan++)
- X if (*scan == *dscan)
- X break;
- X if (*dscan == '\0')
- X break;
- X }
- X if (*scan == '\0') {
- X scanpoint = NULL;
- X return(NULL);
- X }
- X
- X tok = scan;
- X
- X /*
- X * Scan token.
- X */
- X for (; *scan != '\0'; scan++) {
- X for (dscan = delim; *dscan != '\0';) /* ++ moved down. */
- X if (*scan == *dscan++) {
- X scanpoint = scan+1;
- X *scan = '\0';
- X return(tok);
- X }
- X }
- X
- X /*
- X * Reached end of string.
- X */
- X scanpoint = NULL;
- X return(tok);
- X}
- SHAR_EOF
- true || echo 'restore of stdc/strtok.c failed'
- fi
- # ============= stdc/strchr.c ==============
- if test -f 'stdc/strchr.c' -a X"$1" != X"-c"; then
- echo 'x - skipping stdc/strchr.c (File already exists)'
- else
- echo 'x - extracting stdc/strchr.c (Text)'
- sed 's/^X//' << 'SHAR_EOF' > 'stdc/strchr.c' &&
- X#include <string.h>
- X
- X/*
- X * strchr - find first occurrence of a character in a string
- X */
- X
- Xchar * /* found char, or NULL if none */
- Xstrchr(s, charwanted)
- XConst char *s;
- Xregister char charwanted;
- X{
- X register Const char *scan;
- X
- X /*
- X * The odd placement of the two tests is so NUL is findable.
- X */
- X for (scan = s; *scan != charwanted;) /* ++ moved down for opt. */
- X if (*scan++ == '\0')
- X return(NULL);
- X return(scan);
- X}
- SHAR_EOF
- true || echo 'restore of stdc/strchr.c failed'
- fi
- # ============= stdc/strcmp.c ==============
- if test -f 'stdc/strcmp.c' -a X"$1" != X"-c"; then
- echo 'x - skipping stdc/strcmp.c (File already exists)'
- else
- echo 'x - extracting stdc/strcmp.c (Text)'
- sed 's/^X//' << 'SHAR_EOF' > 'stdc/strcmp.c' &&
- X#include <string.h>
- X
- X/* Modified by Eric Gisin */
- X
- X/*
- X * strcmp - compare string s1 to s2
- X */
- X
- Xint /* <0 for <, 0 for ==, >0 for > */
- Xstrcmp(s1, s2)
- XConst char *s1;
- XConst char *s2;
- X{
- X register Const char *scan1;
- X register Const char *scan2;
- X#if 0 /* some machines prefer int to char */
- X register int c1, c2;
- X#else
- X register char c1, c2;
- X#endif
- X
- X scan1 = s1;
- X scan2 = s2;
- X while ((c1 = *scan1++) == (c2 = *scan2++) && c1 != 0)
- X ;
- X
- X /*
- X * The following case analysis is necessary so that characters
- X * which look negative collate low against normal characters but
- X * high against the end-of-string NUL.
- X */
- X if (c1 == '\0' && c2 == '\0')
- X return(0);
- X else if (c1 == '\0')
- X return(-1);
- X else if (c2 == '\0')
- X return(1);
- X else
- X return(c1 - c2);
- X}
- SHAR_EOF
- true || echo 'restore of stdc/strcmp.c failed'
- fi
- # ============= stdc/strcpy.c ==============
- if test -f 'stdc/strcpy.c' -a X"$1" != X"-c"; then
- echo 'x - skipping stdc/strcpy.c (File already exists)'
- else
- echo 'x - extracting stdc/strcpy.c (Text)'
- sed 's/^X//' << 'SHAR_EOF' > 'stdc/strcpy.c' &&
- X#include <string.h>
- X
- X/*
- X * strcpy - copy string src to dst
- X */
- Xchar * /* dst */
- Xstrcpy(dst, src)
- Xchar *dst;
- XConst char *src;
- X{
- X register char *dscan;
- X register Const char *sscan;
- X
- X dscan = dst;
- X sscan = src;
- X while ((*dscan++ = *sscan++) != '\0')
- X continue;
- X return(dst);
- X}
- SHAR_EOF
- true || echo 'restore of stdc/strcpy.c failed'
- fi
- # ============= stdc/strcspn.c ==============
- if test -f 'stdc/strcspn.c' -a X"$1" != X"-c"; then
- echo 'x - skipping stdc/strcspn.c (File already exists)'
- else
- echo 'x - extracting stdc/strcspn.c (Text)'
- sed 's/^X//' << 'SHAR_EOF' > 'stdc/strcspn.c' &&
- X#include <string.h>
- X
- X/*
- X * strcspn - find length of initial segment of s consisting entirely
- X * of characters not from reject
- X */
- X
- Xsize_t
- Xstrcspn(s, reject)
- XConst char *s;
- XConst char *reject;
- X{
- X register Const char *scan;
- X register Const char *rscan;
- X register size_t count;
- X
- X count = 0;
- X for (scan = s; *scan != '\0'; scan++) {
- X for (rscan = reject; *rscan != '\0';) /* ++ moved down. */
- X if (*scan == *rscan++)
- X return(count);
- X count++;
- X }
- X return(count);
- X}
- SHAR_EOF
- true || echo 'restore of stdc/strcspn.c failed'
- fi
- # ============= stdc/strerror.c ==============
- if test -f 'stdc/strerror.c' -a X"$1" != X"-c"; then
- echo 'x - skipping stdc/strerror.c (File already exists)'
- else
- echo 'x - extracting stdc/strerror.c (Text)'
- sed 's/^X//' << 'SHAR_EOF' > 'stdc/strerror.c' &&
- X#include <string.h>
- X
- X/*
- X * strerror - map error number to descriptive string
- X *
- X * This version is obviously somewhat Unix-specific.
- X */
- Xchar *
- Xstrerror(errno)
- Xint errno;
- X{
- X extern int sys_nerr;
- X extern char *sys_errlist[];
- X
- X if (errno > 0 && errno < sys_nerr)
- X return(sys_errlist[errno]);
- X else
- X return("unknown error");
- X}
- SHAR_EOF
- true || echo 'restore of stdc/strerror.c failed'
- fi
- # ============= stdc/strlen.c ==============
- if test -f 'stdc/strlen.c' -a X"$1" != X"-c"; then
- echo 'x - skipping stdc/strlen.c (File already exists)'
- else
- echo 'x - extracting stdc/strlen.c (Text)'
- sed 's/^X//' << 'SHAR_EOF' > 'stdc/strlen.c' &&
- X#include <string.h>
- X
- X/*
- X * strlen - length of string (not including NUL)
- X */
- Xsize_t
- Xstrlen(s)
- XConst char *s;
- X{
- X register Const char *scan;
- X register size_t count;
- X
- X count = 0;
- X scan = s;
- X while (*scan++ != '\0')
- X count++;
- X return(count);
- X}
- SHAR_EOF
- true || echo 'restore of stdc/strlen.c failed'
- fi
- # ============= stdc/strncat.c ==============
- if test -f 'stdc/strncat.c' -a X"$1" != X"-c"; then
- echo 'x - skipping stdc/strncat.c (File already exists)'
- else
- echo 'x - extracting stdc/strncat.c (Text)'
- sed 's/^X//' << 'SHAR_EOF' > 'stdc/strncat.c' &&
- X#include <string.h>
- X
- X/*
- X * strncat - append at most n characters of string src to dst
- X */
- Xchar * /* dst */
- Xstrncat(dst, src, n)
- Xchar *dst;
- XConst char *src;
- Xsize_t n;
- X{
- X register char *dscan;
- X register Const char *sscan;
- X register size_t count;
- X
- X for (dscan = dst; *dscan != '\0'; dscan++)
- X continue;
- X sscan = src;
- X count = n;
- X while (*sscan != '\0' && --count >= 0)
- X *dscan++ = *sscan++;
- X *dscan++ = '\0';
- X return(dst);
- X}
- SHAR_EOF
- true || echo 'restore of stdc/strncat.c failed'
- fi
- # ============= stdc/strncmp.c ==============
- if test -f 'stdc/strncmp.c' -a X"$1" != X"-c"; then
- echo 'x - skipping stdc/strncmp.c (File already exists)'
- else
- echo 'x - extracting stdc/strncmp.c (Text)'
- sed 's/^X//' << 'SHAR_EOF' > 'stdc/strncmp.c' &&
- X#include <string.h>
- X
- X/*
- X * strncmp - compare at most n characters of string s1 to s2
- X */
- X
- Xint /* <0 for <, 0 for ==, >0 for > */
- Xstrncmp(s1, s2, n)
- XConst char *s1;
- XConst char *s2;
- Xsize_t n;
- X{
- X register Const char *scan1;
- X register Const char *scan2;
- X register size_t count;
- X
- X scan1 = s1;
- X scan2 = s2;
- X count = n;
- X while (--count >= 0 && *scan1 != '\0' && *scan1 == *scan2) {
- X scan1++;
- X scan2++;
- X }
- X if (count < 0)
- X return(0);
- X
- X /*
- X * The following case analysis is necessary so that characters
- X * which look negative collate low against normal characters but
- X * high against the end-of-string NUL.
- X */
- X if (*scan1 == '\0' && *scan2 == '\0')
- X return(0);
- X else if (*scan1 == '\0')
- X return(-1);
- X else if (*scan2 == '\0')
- X return(1);
- X else
- X return(*scan1 - *scan2);
- X}
- SHAR_EOF
- true || echo 'restore of stdc/strncmp.c failed'
- fi
- # ============= stdc/strncpy.c ==============
- if test -f 'stdc/strncpy.c' -a X"$1" != X"-c"; then
- echo 'x - skipping stdc/strncpy.c (File already exists)'
- else
- echo 'x - extracting stdc/strncpy.c (Text)'
- sed 's/^X//' << 'SHAR_EOF' > 'stdc/strncpy.c' &&
- X#include <string.h>
- X
- X/*
- X * strncpy - copy at most n characters of string src to dst
- X */
- Xchar * /* dst */
- Xstrncpy(dst, src, n)
- Xchar *dst;
- XConst char *src;
- Xsize_t n;
- X{
- X register char *dscan;
- X register Const char *sscan;
- X register size_t count;
- X
- X dscan = dst;
- X sscan = src;
- X count = n;
- X while (--count >= 0 && (*dscan++ = *sscan++) != '\0')
- X continue;
- X while (--count >= 0)
- X *dscan++ = '\0';
- X return(dst);
- X}
- SHAR_EOF
- true || echo 'restore of stdc/strncpy.c failed'
- fi
- # ============= stdc/strpbrk.c ==============
- if test -f 'stdc/strpbrk.c' -a X"$1" != X"-c"; then
- echo 'x - skipping stdc/strpbrk.c (File already exists)'
- else
- echo 'x - extracting stdc/strpbrk.c (Text)'
- sed 's/^X//' << 'SHAR_EOF' > 'stdc/strpbrk.c' &&
- X#include <string.h>
- X
- X/*
- X * strpbrk - find first occurrence of any char from breakat in s
- X */
- X
- Xchar * /* found char, or NULL if none */
- Xstrpbrk(s, breakat)
- XConst char *s;
- XConst char *breakat;
- X{
- X register Const char *sscan;
- X register Const char *bscan;
- X
- X for (sscan = s; *sscan != '\0'; sscan++) {
- X for (bscan = breakat; *bscan != '\0';) /* ++ moved down. */
- X if (*sscan == *bscan++)
- X return(sscan);
- X }
- X return(NULL);
- X}
- SHAR_EOF
- true || echo 'restore of stdc/strpbrk.c failed'
- fi
- # ============= stdc/strrchr.c ==============
- if test -f 'stdc/strrchr.c' -a X"$1" != X"-c"; then
- echo 'x - skipping stdc/strrchr.c (File already exists)'
- else
- echo 'x - extracting stdc/strrchr.c (Text)'
- sed 's/^X//' << 'SHAR_EOF' > 'stdc/strrchr.c' &&
- X#include <string.h>
- X
- X/*
- X * strrchr - find last occurrence of a character in a string
- X */
- X
- Xchar * /* found char, or NULL if none */
- Xstrrchr(s, charwanted)
- XConst char *s;
- Xregister char charwanted;
- X{
- X register Const char *scan;
- X register Const char *place;
- X
- X place = NULL;
- X for (scan = s; *scan != '\0'; scan++)
- X if (*scan == charwanted)
- X place = scan;
- X if (charwanted == '\0')
- X return(scan);
- X return(place);
- X}
- SHAR_EOF
- true || echo 'restore of stdc/strrchr.c failed'
- fi
- # ============= stdc/strspn.c ==============
- if test -f 'stdc/strspn.c' -a X"$1" != X"-c"; then
- echo 'x - skipping stdc/strspn.c (File already exists)'
- else
- echo 'x - extracting stdc/strspn.c (Text)'
- sed 's/^X//' << 'SHAR_EOF' > 'stdc/strspn.c' &&
- X#include <string.h>
- X
- X/*
- X * strspn - find length of initial segment of s consisting entirely
- X * of characters from accept
- X */
- X
- Xsize_t
- Xstrspn(s, accept)
- XConst char *s;
- XConst char *accept;
- X{
- X register Const char *sscan;
- X register Const char *ascan;
- X register size_t count;
- X
- X count = 0;
- X for (sscan = s; *sscan != '\0'; sscan++) {
- X for (ascan = accept; *ascan != '\0'; ascan++)
- X if (*sscan == *ascan)
- X break;
- X if (*ascan == '\0')
- X return(count);
- X count++;
- X }
- X return(count);
- X}
- SHAR_EOF
- true || echo 'restore of stdc/strspn.c failed'
- fi
- # ============= stdc/strstr.c ==============
- if test -f 'stdc/strstr.c' -a X"$1" != X"-c"; then
- echo 'x - skipping stdc/strstr.c (File already exists)'
- else
- echo 'x - extracting stdc/strstr.c (Text)'
- sed 's/^X//' << 'SHAR_EOF' > 'stdc/strstr.c' &&
- X#include <string.h>
- X
- X/*
- X * strstr - find first occurrence of wanted in s
- X */
- X
- Xchar * /* found string, or NULL if none */
- Xstrstr(s, wanted)
- XConst char *s;
- XConst char *wanted;
- X{
- X register Const char *scan;
- X register size_t len;
- X register char firstc;
- X
- X /*
- X * The odd placement of the two tests is so "" is findable.
- X * Also, we inline the first char for speed.
- X * The ++ on scan has been moved down for optimization.
- X */
- X firstc = *wanted;
- X len = strlen(wanted);
- X for (scan = s; *scan != firstc || strncmp(scan, wanted, len) != 0; )
- X if (*scan++ == '\0')
- X return(NULL);
- X return(scan);
- X}
- SHAR_EOF
- true || echo 'restore of stdc/strstr.c failed'
- fi
- exit 0
-