mirror of
https://github.com/ksherlock/mpw-tools.git
synced 2024-06-04 02:29:31 +00:00
add in a bunch more libc functions/headers.
This commit is contained in:
parent
37604def43
commit
e7eb1dd23c
|
@ -1,7 +1,7 @@
|
||||||
#ifndef __IIGS_RESOURCE__
|
#ifndef __IIGS_RESOURCE__
|
||||||
#define __IIGS_RESOURCE__
|
#define __IIGS_RESOURCE__
|
||||||
|
|
||||||
#include "stdint.h"
|
#include <stdint.h>
|
||||||
|
|
||||||
#define IIgsResChanged 0x0020
|
#define IIgsResChanged 0x0020
|
||||||
#define IIgsResPreLoad 0x0040
|
#define IIgsResPreLoad 0x0040
|
||||||
|
|
|
@ -31,7 +31,7 @@
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
|
|
||||||
#include "stdint.h"
|
#include <stdint.h>
|
||||||
#include "MacResource.h"
|
#include "MacResource.h"
|
||||||
|
|
||||||
// n.b. - all data is big endian.
|
// n.b. - all data is big endian.
|
||||||
|
|
|
@ -32,7 +32,7 @@
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <Endian.h>
|
#include <Endian.h>
|
||||||
|
|
||||||
#include "stdint.h"
|
#include <stdint.h>
|
||||||
#include "IIgsResource.h"
|
#include "IIgsResource.h"
|
||||||
|
|
||||||
// n.b. - all data is little endian.
|
// n.b. - all data is little endian.
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
#ifndef __MAC_RESOURCE__
|
#ifndef __MAC_RESOURCE__
|
||||||
#define __MAC_RESOURCE__
|
#define __MAC_RESOURCE__
|
||||||
|
|
||||||
#include "stdint.h"
|
#include <stdint.h>
|
||||||
|
|
||||||
#define macresPreLoad 0x04
|
#define macresPreLoad 0x04
|
||||||
#define macresProtected 0x08
|
#define macresProtected 0x08
|
||||||
|
|
19
libc/_getprogname.c
Normal file
19
libc/_getprogname.c
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
//#include <LowMem.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
typedef unsigned char *StringPtr;
|
||||||
|
#define LMGetCurApName() ((StringPtr) 0x0910)
|
||||||
|
|
||||||
|
const char *_getprogname() {
|
||||||
|
static char buffer[32];
|
||||||
|
StringPtr s = LMGetCurApName();
|
||||||
|
unsigned i;
|
||||||
|
|
||||||
|
if (!s) return "";
|
||||||
|
|
||||||
|
i = s[0];
|
||||||
|
if (i > 30) return "";
|
||||||
|
memcpy(buffer, s + 1, i);
|
||||||
|
s[i] = 0;
|
||||||
|
return buffer;
|
||||||
|
}
|
85
libc/basename.c
Normal file
85
libc/basename.c
Normal file
|
@ -0,0 +1,85 @@
|
||||||
|
/* $OpenBSD: basename.c,v 1.14 2005/08/08 08:05:33 espie Exp $ */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Copyright (c) 1997, 2004 Todd C. Miller <Todd.Miller@courtesan.com>
|
||||||
|
*
|
||||||
|
* Permission to use, copy, modify, and distribute this software for any
|
||||||
|
* purpose with or without fee is hereby granted, provided that the above
|
||||||
|
* copyright notice and this permission notice appear in all copies.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||||
|
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||||
|
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||||
|
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||||
|
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||||
|
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||||
|
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <errno.h>
|
||||||
|
#include <libgen.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
//#include <sys/param.h>
|
||||||
|
|
||||||
|
#define MAXPATHLEN 1024
|
||||||
|
#ifndef ENAMETOOLONG
|
||||||
|
#define ENAMETOOLONG EINVAL
|
||||||
|
#endif
|
||||||
|
|
||||||
|
static int is_sep(char c) {
|
||||||
|
return c == '/' || c == ':';
|
||||||
|
}
|
||||||
|
|
||||||
|
char *
|
||||||
|
basename_r(const char *path, char *bname)
|
||||||
|
{
|
||||||
|
const char *endp, *startp;
|
||||||
|
size_t len;
|
||||||
|
|
||||||
|
/* Empty or NULL string gets treated as "." */
|
||||||
|
if (path == NULL || *path == '\0') {
|
||||||
|
bname[0] = '.';
|
||||||
|
bname[1] = '\0';
|
||||||
|
return (bname);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Strip any trailing slashes */
|
||||||
|
endp = path + strlen(path) - 1;
|
||||||
|
while (endp > path && is_sep(*endp))
|
||||||
|
endp--;
|
||||||
|
|
||||||
|
/* All slashes becomes "/" */
|
||||||
|
if (endp == path && is_sep(*endp)) {
|
||||||
|
bname[0] = '/';
|
||||||
|
bname[1] = '\0';
|
||||||
|
return (bname);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Find the start of the base */
|
||||||
|
startp = endp;
|
||||||
|
while (startp > path && !is_sep(*(startp - 1)))
|
||||||
|
startp--;
|
||||||
|
|
||||||
|
len = endp - startp + 1;
|
||||||
|
if (len >= MAXPATHLEN) {
|
||||||
|
errno = ENAMETOOLONG;
|
||||||
|
return (NULL);
|
||||||
|
}
|
||||||
|
memcpy(bname, startp, len);
|
||||||
|
bname[len] = '\0';
|
||||||
|
return (bname);
|
||||||
|
}
|
||||||
|
|
||||||
|
char *
|
||||||
|
basename(const char *path)
|
||||||
|
{
|
||||||
|
static char *bname = NULL;
|
||||||
|
|
||||||
|
if (bname == NULL) {
|
||||||
|
bname = (char *)malloc(MAXPATHLEN);
|
||||||
|
if (bname == NULL)
|
||||||
|
return (NULL);
|
||||||
|
}
|
||||||
|
return (basename_r(path, bname));
|
||||||
|
}
|
182
libc/err.c
Normal file
182
libc/err.c
Normal file
|
@ -0,0 +1,182 @@
|
||||||
|
/*-
|
||||||
|
* Copyright (c) 1993
|
||||||
|
* 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.
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <errno.h>
|
||||||
|
#include <stdarg.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
#include <err.h>
|
||||||
|
#include <libc.h>
|
||||||
|
|
||||||
|
static FILE *err_file; /* file to use for error output */
|
||||||
|
static void (*err_exit)(int);
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This is declared to take a `void *' so that the caller is not required
|
||||||
|
* to include <stdio.h> first. However, it is really a `FILE *', and the
|
||||||
|
* manual page documents it as such.
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
err_set_file(void *fp)
|
||||||
|
{
|
||||||
|
if (fp)
|
||||||
|
err_file = fp;
|
||||||
|
else
|
||||||
|
err_file = stderr;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
err_set_exit(void (*ef)(int))
|
||||||
|
{
|
||||||
|
err_exit = ef;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
/*_*/err(int eval, const char *fmt, ...)
|
||||||
|
{
|
||||||
|
va_list ap;
|
||||||
|
va_start(ap, fmt);
|
||||||
|
verrc(eval, errno, fmt, ap);
|
||||||
|
va_end(ap);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
verr(int eval, const char *fmt, va_list ap)
|
||||||
|
{
|
||||||
|
verrc(eval, errno, fmt, ap);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
errc(int eval, int code, const char *fmt, ...)
|
||||||
|
{
|
||||||
|
va_list ap;
|
||||||
|
va_start(ap, fmt);
|
||||||
|
verrc(eval, code, fmt, ap);
|
||||||
|
va_end(ap);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
verrc(int eval, int code, const char *fmt, va_list ap)
|
||||||
|
{
|
||||||
|
if (err_file == NULL)
|
||||||
|
err_set_file((FILE *)0);
|
||||||
|
fprintf(err_file, "%s: ", _getprogname());
|
||||||
|
if (fmt != NULL) {
|
||||||
|
vfprintf(err_file, fmt, ap);
|
||||||
|
fprintf(err_file, ": ");
|
||||||
|
}
|
||||||
|
fprintf(err_file, "%s\n", strerror(code));
|
||||||
|
if (err_exit)
|
||||||
|
err_exit(eval);
|
||||||
|
exit(eval);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
errx(int eval, const char *fmt, ...)
|
||||||
|
{
|
||||||
|
va_list ap;
|
||||||
|
va_start(ap, fmt);
|
||||||
|
verrx(eval, fmt, ap);
|
||||||
|
va_end(ap);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
verrx(int eval, const char *fmt, va_list ap)
|
||||||
|
{
|
||||||
|
if (err_file == NULL)
|
||||||
|
err_set_file((FILE *)0);
|
||||||
|
fprintf(err_file, "%s: ", _getprogname());
|
||||||
|
if (fmt != NULL)
|
||||||
|
vfprintf(err_file, fmt, ap);
|
||||||
|
fprintf(err_file, "\n");
|
||||||
|
if (err_exit)
|
||||||
|
err_exit(eval);
|
||||||
|
exit(eval);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
/*_*/warn(const char *fmt, ...)
|
||||||
|
{
|
||||||
|
va_list ap;
|
||||||
|
va_start(ap, fmt);
|
||||||
|
vwarnc(errno, fmt, ap);
|
||||||
|
va_end(ap);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
vwarn(const char *fmt, va_list ap)
|
||||||
|
{
|
||||||
|
vwarnc(errno, fmt, ap);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
warnc(int code, const char *fmt, ...)
|
||||||
|
{
|
||||||
|
va_list ap;
|
||||||
|
va_start(ap, fmt);
|
||||||
|
vwarnc(code, fmt, ap);
|
||||||
|
va_end(ap);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
vwarnc(int code, const char *fmt, va_list ap)
|
||||||
|
{
|
||||||
|
if (err_file == NULL)
|
||||||
|
err_set_file((FILE *)0);
|
||||||
|
fprintf(err_file, "%s: ", _getprogname());
|
||||||
|
if (fmt != NULL) {
|
||||||
|
vfprintf(err_file, fmt, ap);
|
||||||
|
fprintf(err_file, ": ");
|
||||||
|
}
|
||||||
|
fprintf(err_file, "%s\n", strerror(code));
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
warnx(const char *fmt, ...)
|
||||||
|
{
|
||||||
|
va_list ap;
|
||||||
|
va_start(ap, fmt);
|
||||||
|
vwarnx(fmt, ap);
|
||||||
|
va_end(ap);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
vwarnx(const char *fmt, va_list ap)
|
||||||
|
{
|
||||||
|
if (err_file == NULL)
|
||||||
|
err_set_file((FILE *)0);
|
||||||
|
fprintf(err_file, "%s: ", _getprogname());
|
||||||
|
if (fmt != NULL)
|
||||||
|
vfprintf(err_file, fmt, ap);
|
||||||
|
fprintf(err_file, "\n");
|
||||||
|
}
|
53
libc/err.h
Normal file
53
libc/err.h
Normal file
|
@ -0,0 +1,53 @@
|
||||||
|
/*-
|
||||||
|
* Copyright (c) 1993
|
||||||
|
* 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. 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.
|
||||||
|
*
|
||||||
|
* @(#)err.h 8.1 (Berkeley) 6/2/93
|
||||||
|
* $FreeBSD$
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _ERR_H_
|
||||||
|
#define _ERR_H_
|
||||||
|
|
||||||
|
#include <stdarg.h>
|
||||||
|
|
||||||
|
void err(int, const char *, ...);
|
||||||
|
void verr(int, const char *, va_list);
|
||||||
|
void errc(int, int, const char *, ...);
|
||||||
|
void verrc(int, int, const char *, va_list);
|
||||||
|
void errx(int, const char *, ...);
|
||||||
|
void verrx(int, const char *, va_list);
|
||||||
|
void warn(const char *, ...);
|
||||||
|
void vwarn(const char *, va_list);
|
||||||
|
void warnc(int, const char *, ...);
|
||||||
|
void vwarnc(int, const char *, va_list);
|
||||||
|
void warnx(const char *, ...);
|
||||||
|
void vwarnx(const char *, va_list);
|
||||||
|
void err_set_file(void *);
|
||||||
|
void err_set_exit(void (*)(int));
|
||||||
|
|
||||||
|
#endif /* !_ERR_H_ */
|
129
libc/getopt.c
Normal file
129
libc/getopt.c
Normal file
|
@ -0,0 +1,129 @@
|
||||||
|
/* $NetBSD: getopt.c,v 1.29 2014/06/05 22:00:22 christos Exp $ */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Copyright (c) 1987, 1993, 1994
|
||||||
|
* 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. 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <libc.h>
|
||||||
|
|
||||||
|
int opterr = 1, /* if error message should be printed */
|
||||||
|
optind = 1, /* index into parent argv vector */
|
||||||
|
optopt, /* character checked for validity */
|
||||||
|
optreset; /* reset getopt */
|
||||||
|
char *optarg; /* argument associated with option */
|
||||||
|
|
||||||
|
#define BADCH (int)'?'
|
||||||
|
#define BADARG (int)':'
|
||||||
|
#define EMSG ""
|
||||||
|
|
||||||
|
/*
|
||||||
|
* getopt --
|
||||||
|
* Parse argc/argv argument vector.
|
||||||
|
*/
|
||||||
|
int
|
||||||
|
getopt(int nargc, char * const nargv[], const char *ostr)
|
||||||
|
{
|
||||||
|
static char *place = EMSG; /* option letter processing */
|
||||||
|
char *oli; /* option letter list index */
|
||||||
|
|
||||||
|
if (optreset || *place == 0) { /* update scanning pointer */
|
||||||
|
optreset = 0;
|
||||||
|
place = nargv[optind];
|
||||||
|
if (optind >= nargc || *place++ != '-') {
|
||||||
|
/* Argument is absent or is not an option */
|
||||||
|
place = EMSG;
|
||||||
|
return (-1);
|
||||||
|
}
|
||||||
|
optopt = *place++;
|
||||||
|
if (optopt == '-' && *place == 0) {
|
||||||
|
/* "--" => end of options */
|
||||||
|
++optind;
|
||||||
|
place = EMSG;
|
||||||
|
return (-1);
|
||||||
|
}
|
||||||
|
if (optopt == 0) {
|
||||||
|
/* Solitary '-', treat as a '-' option
|
||||||
|
if the program (eg su) is looking for it. */
|
||||||
|
place = EMSG;
|
||||||
|
if (strchr(ostr, '-') == NULL)
|
||||||
|
return (-1);
|
||||||
|
optopt = '-';
|
||||||
|
}
|
||||||
|
} else
|
||||||
|
optopt = *place++;
|
||||||
|
|
||||||
|
/* See if option letter is one the caller wanted... */
|
||||||
|
if (optopt == ':' || (oli = strchr(ostr, optopt)) == NULL) {
|
||||||
|
if (*place == 0)
|
||||||
|
++optind;
|
||||||
|
if (opterr && *ostr != ':')
|
||||||
|
(void)fprintf(stderr,
|
||||||
|
"%s: illegal option -- %c\n", _getprogname(),
|
||||||
|
optopt);
|
||||||
|
return (BADCH);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Does this option need an argument? */
|
||||||
|
if (oli[1] != ':') {
|
||||||
|
/* don't need argument */
|
||||||
|
optarg = NULL;
|
||||||
|
if (*place == 0)
|
||||||
|
++optind;
|
||||||
|
} else {
|
||||||
|
/* Option-argument is either the rest of this argument or the
|
||||||
|
entire next argument. */
|
||||||
|
if (*place)
|
||||||
|
optarg = place;
|
||||||
|
else if (oli[2] == ':')
|
||||||
|
/*
|
||||||
|
* GNU Extension, for optional arguments if the rest of
|
||||||
|
* the argument is empty, we return NULL
|
||||||
|
*/
|
||||||
|
optarg = NULL;
|
||||||
|
else if (nargc > ++optind)
|
||||||
|
optarg = nargv[optind];
|
||||||
|
else {
|
||||||
|
/* option-argument absent */
|
||||||
|
place = EMSG;
|
||||||
|
if (*ostr == ':')
|
||||||
|
return (BADARG);
|
||||||
|
if (opterr)
|
||||||
|
(void)fprintf(stderr,
|
||||||
|
"%s: option requires an argument -- %c\n",
|
||||||
|
_getprogname(), optopt);
|
||||||
|
return (BADCH);
|
||||||
|
}
|
||||||
|
place = EMSG;
|
||||||
|
++optind;
|
||||||
|
}
|
||||||
|
return (optopt); /* return option letter */
|
||||||
|
}
|
|
@ -1,7 +1,11 @@
|
||||||
#ifndef __libc_libc__
|
#ifndef __libc_libc__
|
||||||
#define __libc_libc__
|
#define __libc_libc__
|
||||||
|
|
||||||
|
/* functions not defined elsewhere */
|
||||||
|
|
||||||
int strcasecmp(const char *s1, const char *s2);
|
int strcasecmp(const char *s1, const char *s2);
|
||||||
int strncasecmp(const char *s1, const char *s2, size_t n);
|
int strncasecmp(const char *s1, const char *s2, size_t n);
|
||||||
|
|
||||||
|
const char *_getprogname();
|
||||||
|
|
||||||
#endif
|
#endif
|
38
libc/libgen.h
Normal file
38
libc/libgen.h
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
/* $OpenBSD: libgen.h,v 1.4 1999/05/28 22:00:22 espie Exp $ */
|
||||||
|
/* $FreeBSD$ */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Copyright (c) 1997 Todd C. Miller <Todd.Miller@courtesan.com>
|
||||||
|
* 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. The name of the author may not be used to endorse or promote products
|
||||||
|
* derived from this software without specific prior written permission.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED ``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 AUTHOR 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _LIBGEN_H_
|
||||||
|
#define _LIBGEN_H_
|
||||||
|
|
||||||
|
char *basename(const char *);
|
||||||
|
char *basename_r(const char *, char *);
|
||||||
|
char *dirname(const char *);
|
||||||
|
|
||||||
|
#endif /* !_LIBGEN_H_ */
|
15
libc/machine/endian.h
Normal file
15
libc/machine/endian.h
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
#ifndef _MACHINE_ENDIAN_H_
|
||||||
|
#define _MACHINE_ENDIAN_H_
|
||||||
|
|
||||||
|
#define _LITTLE_ENDIAN 1234 /* LSB first: i386, vax */
|
||||||
|
#define _BIG_ENDIAN 4321 /* MSB first: 68000, ibm, net */
|
||||||
|
#define _PDP_ENDIAN 3412 /* LSB first in word, MSW first in long */
|
||||||
|
|
||||||
|
#define _BYTE_ORDER _BIG_ENDIAN
|
||||||
|
|
||||||
|
#define LITTLE_ENDIAN _LITTLE_ENDIAN
|
||||||
|
#define BIG_ENDIAN _BIG_ENDIAN
|
||||||
|
#define PDP_ENDIAN _PDP_ENDIAN
|
||||||
|
#define BYTE_ORDER _BYTE_ORDER
|
||||||
|
|
||||||
|
#endif
|
13
libc/stdbool.h
Normal file
13
libc/stdbool.h
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
|
||||||
|
#ifndef __bool_true_false_are_defined
|
||||||
|
#define __bool_true_false_are_defined 1
|
||||||
|
#ifndef __cplusplus
|
||||||
|
|
||||||
|
#define false 0
|
||||||
|
#define true 1
|
||||||
|
#define bool _Bool
|
||||||
|
typedef int _Bool;
|
||||||
|
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
201
libc/sys/endian.h
Normal file
201
libc/sys/endian.h
Normal file
|
@ -0,0 +1,201 @@
|
||||||
|
/*-
|
||||||
|
* Copyright (c) 2002 Thomas Moestl <tmm@FreeBSD.org>
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions
|
||||||
|
* are met:
|
||||||
|
* 1. Redistributions of source code must retain the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer.
|
||||||
|
* 2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
|
* documentation and/or other materials provided with the distribution.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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.
|
||||||
|
*
|
||||||
|
* $FreeBSD$
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _SYS_ENDIAN_H_
|
||||||
|
#define _SYS_ENDIAN_H_
|
||||||
|
|
||||||
|
#include <machine/endian.h>
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
/*
|
||||||
|
* General byte order swapping functions.
|
||||||
|
*/
|
||||||
|
#define bswap16(value)\
|
||||||
|
(((((uint16_t)value)<<8) & 0xFF00) | \
|
||||||
|
((((uint16_t)value)>>8) & 0x00FF))
|
||||||
|
|
||||||
|
|
||||||
|
#define bswap32(value)\
|
||||||
|
(((((uint32_t)value)<<24) & 0xFF000000) | \
|
||||||
|
((((uint32_t)value)<< 8) & 0x00FF0000) | \
|
||||||
|
((((uint32_t)value)>> 8) & 0x0000FF00) | \
|
||||||
|
((((uint32_t)value)>>24) & 0x000000FF))
|
||||||
|
|
||||||
|
//#define bswap64(x) __bswap64(x)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Host to big endian, host to little endian, big endian to host, and little
|
||||||
|
* endian to host byte order functions as detailed in byteorder(9).
|
||||||
|
*/
|
||||||
|
#if _BYTE_ORDER == _LITTLE_ENDIAN
|
||||||
|
#define htobe16(x) bswap16((x))
|
||||||
|
#define htobe32(x) bswap32((x))
|
||||||
|
#define htobe64(x) bswap64((x))
|
||||||
|
#define htole16(x) ((uint16_t)(x))
|
||||||
|
#define htole32(x) ((uint32_t)(x))
|
||||||
|
//#define htole64(x) ((uint64_t)(x))
|
||||||
|
|
||||||
|
#define be16toh(x) bswap16((x))
|
||||||
|
#define be32toh(x) bswap32((x))
|
||||||
|
#define be64toh(x) bswap64((x))
|
||||||
|
#define le16toh(x) ((uint16_t)(x))
|
||||||
|
#define le32toh(x) ((uint32_t)(x))
|
||||||
|
//#define le64toh(x) ((uint64_t)(x))
|
||||||
|
#else /* _BYTE_ORDER != _LITTLE_ENDIAN */
|
||||||
|
#define htobe16(x) ((uint16_t)(x))
|
||||||
|
#define htobe32(x) ((uint32_t)(x))
|
||||||
|
#define htobe64(x) ((uint64_t)(x))
|
||||||
|
#define htole16(x) bswap16((x))
|
||||||
|
#define htole32(x) bswap32((x))
|
||||||
|
//#define htole64(x) bswap64((x))
|
||||||
|
|
||||||
|
#define be16toh(x) ((uint16_t)(x))
|
||||||
|
#define be32toh(x) ((uint32_t)(x))
|
||||||
|
#define be64toh(x) ((uint64_t)(x))
|
||||||
|
#define le16toh(x) bswap16((x))
|
||||||
|
#define le32toh(x) bswap32((x))
|
||||||
|
//#define le64toh(x) bswap64((x))
|
||||||
|
#endif /* _BYTE_ORDER == _LITTLE_ENDIAN */
|
||||||
|
|
||||||
|
/* Alignment-agnostic encode/decode bytestream to/from little/big endian. */
|
||||||
|
#define __inline
|
||||||
|
static __inline uint16_t
|
||||||
|
be16dec(const void *pp)
|
||||||
|
{
|
||||||
|
uint8_t const *p = (uint8_t const *)pp;
|
||||||
|
|
||||||
|
return ((p[0] << 8) | p[1]);
|
||||||
|
}
|
||||||
|
|
||||||
|
static __inline uint32_t
|
||||||
|
be32dec(const void *pp)
|
||||||
|
{
|
||||||
|
uint8_t const *p = (uint8_t const *)pp;
|
||||||
|
|
||||||
|
return (((unsigned)p[0] << 24) | (p[1] << 16) | (p[2] << 8) | p[3]);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
static __inline uint64_t
|
||||||
|
be64dec(const void *pp)
|
||||||
|
{
|
||||||
|
uint8_t const *p = (uint8_t const *)pp;
|
||||||
|
|
||||||
|
return (((uint64_t)be32dec(p) << 32) | be32dec(p + 4));
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
static __inline uint16_t
|
||||||
|
le16dec(const void *pp)
|
||||||
|
{
|
||||||
|
uint8_t const *p = (uint8_t const *)pp;
|
||||||
|
|
||||||
|
return ((p[1] << 8) | p[0]);
|
||||||
|
}
|
||||||
|
|
||||||
|
static __inline uint32_t
|
||||||
|
le32dec(const void *pp)
|
||||||
|
{
|
||||||
|
uint8_t const *p = (uint8_t const *)pp;
|
||||||
|
|
||||||
|
return (((unsigned)p[3] << 24) | (p[2] << 16) | (p[1] << 8) | p[0]);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
static __inline uint64_t
|
||||||
|
le64dec(const void *pp)
|
||||||
|
{
|
||||||
|
uint8_t const *p = (uint8_t const *)pp;
|
||||||
|
|
||||||
|
return (((uint64_t)le32dec(p + 4) << 32) | le32dec(p));
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
static __inline void
|
||||||
|
be16enc(void *pp, uint16_t u)
|
||||||
|
{
|
||||||
|
uint8_t *p = (uint8_t *)pp;
|
||||||
|
|
||||||
|
p[0] = (u >> 8) & 0xff;
|
||||||
|
p[1] = u & 0xff;
|
||||||
|
}
|
||||||
|
|
||||||
|
static __inline void
|
||||||
|
be32enc(void *pp, uint32_t u)
|
||||||
|
{
|
||||||
|
uint8_t *p = (uint8_t *)pp;
|
||||||
|
|
||||||
|
p[0] = (u >> 24) & 0xff;
|
||||||
|
p[1] = (u >> 16) & 0xff;
|
||||||
|
p[2] = (u >> 8) & 0xff;
|
||||||
|
p[3] = u & 0xff;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
static __inline void
|
||||||
|
be64enc(void *pp, uint64_t u)
|
||||||
|
{
|
||||||
|
uint8_t *p = (uint8_t *)pp;
|
||||||
|
|
||||||
|
be32enc(p, (uint32_t)(u >> 32));
|
||||||
|
be32enc(p + 4, (uint32_t)(u & 0xffffffffU));
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
static __inline void
|
||||||
|
le16enc(void *pp, uint16_t u)
|
||||||
|
{
|
||||||
|
uint8_t *p = (uint8_t *)pp;
|
||||||
|
|
||||||
|
p[0] = u & 0xff;
|
||||||
|
p[1] = (u >> 8) & 0xff;
|
||||||
|
}
|
||||||
|
|
||||||
|
static __inline void
|
||||||
|
le32enc(void *pp, uint32_t u)
|
||||||
|
{
|
||||||
|
uint8_t *p = (uint8_t *)pp;
|
||||||
|
|
||||||
|
p[0] = u & 0xff;
|
||||||
|
p[1] = (u >> 8) & 0xff;
|
||||||
|
p[2] = (u >> 16) & 0xff;
|
||||||
|
p[3] = (u >> 24) & 0xff;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
static __inline void
|
||||||
|
le64enc(void *pp, uint64_t u)
|
||||||
|
{
|
||||||
|
uint8_t *p = (uint8_t *)pp;
|
||||||
|
|
||||||
|
le32enc(p, (uint32_t)(u & 0xffffffffU));
|
||||||
|
le32enc(p + 4, (uint32_t)(u >> 32));
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
#endif /* _SYS_ENDIAN_H_ */
|
116
libc/sysexits.h
Normal file
116
libc/sysexits.h
Normal file
|
@ -0,0 +1,116 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 1987, 1993
|
||||||
|
* 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. 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.
|
||||||
|
*
|
||||||
|
* @(#)sysexits.h 8.1 (Berkeley) 6/2/93
|
||||||
|
*
|
||||||
|
* $FreeBSD$
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _SYSEXITS_H_
|
||||||
|
#define _SYSEXITS_H_
|
||||||
|
|
||||||
|
/*
|
||||||
|
* SYSEXITS.H -- Exit status codes for system programs.
|
||||||
|
*
|
||||||
|
* This include file attempts to categorize possible error
|
||||||
|
* exit statuses for system programs, notably delivermail
|
||||||
|
* and the Berkeley network.
|
||||||
|
*
|
||||||
|
* Error numbers begin at EX__BASE to reduce the possibility of
|
||||||
|
* clashing with other exit statuses that random programs may
|
||||||
|
* already return. The meaning of the codes is approximately
|
||||||
|
* as follows:
|
||||||
|
*
|
||||||
|
* EX_USAGE -- The command was used incorrectly, e.g., with
|
||||||
|
* the wrong number of arguments, a bad flag, a bad
|
||||||
|
* syntax in a parameter, or whatever.
|
||||||
|
* EX_DATAERR -- The input data was incorrect in some way.
|
||||||
|
* This should only be used for user's data & not
|
||||||
|
* system files.
|
||||||
|
* EX_NOINPUT -- An input file (not a system file) did not
|
||||||
|
* exist or was not readable. This could also include
|
||||||
|
* errors like "No message" to a mailer (if it cared
|
||||||
|
* to catch it).
|
||||||
|
* EX_NOUSER -- The user specified did not exist. This might
|
||||||
|
* be used for mail addresses or remote logins.
|
||||||
|
* EX_NOHOST -- The host specified did not exist. This is used
|
||||||
|
* in mail addresses or network requests.
|
||||||
|
* EX_UNAVAILABLE -- A service is unavailable. This can occur
|
||||||
|
* if a support program or file does not exist. This
|
||||||
|
* can also be used as a catchall message when something
|
||||||
|
* you wanted to do doesn't work, but you don't know
|
||||||
|
* why.
|
||||||
|
* EX_SOFTWARE -- An internal software error has been detected.
|
||||||
|
* This should be limited to non-operating system related
|
||||||
|
* errors as possible.
|
||||||
|
* EX_OSERR -- An operating system error has been detected.
|
||||||
|
* This is intended to be used for such things as "cannot
|
||||||
|
* fork", "cannot create pipe", or the like. It includes
|
||||||
|
* things like getuid returning a user that does not
|
||||||
|
* exist in the passwd file.
|
||||||
|
* EX_OSFILE -- Some system file (e.g., /etc/passwd, /etc/utmp,
|
||||||
|
* etc.) does not exist, cannot be opened, or has some
|
||||||
|
* sort of error (e.g., syntax error).
|
||||||
|
* EX_CANTCREAT -- A (user specified) output file cannot be
|
||||||
|
* created.
|
||||||
|
* EX_IOERR -- An error occurred while doing I/O on some file.
|
||||||
|
* EX_TEMPFAIL -- temporary failure, indicating something that
|
||||||
|
* is not really an error. In sendmail, this means
|
||||||
|
* that a mailer (e.g.) could not create a connection,
|
||||||
|
* and the request should be reattempted later.
|
||||||
|
* EX_PROTOCOL -- the remote system returned something that
|
||||||
|
* was "not possible" during a protocol exchange.
|
||||||
|
* EX_NOPERM -- You did not have sufficient permission to
|
||||||
|
* perform the operation. This is not intended for
|
||||||
|
* file system problems, which should use NOINPUT or
|
||||||
|
* CANTCREAT, but rather for higher level permissions.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define EX_OK 0 /* successful termination */
|
||||||
|
|
||||||
|
#define EX__BASE 64 /* base value for error messages */
|
||||||
|
|
||||||
|
#define EX_USAGE 64 /* command line usage error */
|
||||||
|
#define EX_DATAERR 65 /* data format error */
|
||||||
|
#define EX_NOINPUT 66 /* cannot open input */
|
||||||
|
#define EX_NOUSER 67 /* addressee unknown */
|
||||||
|
#define EX_NOHOST 68 /* host name unknown */
|
||||||
|
#define EX_UNAVAILABLE 69 /* service unavailable */
|
||||||
|
#define EX_SOFTWARE 70 /* internal software error */
|
||||||
|
#define EX_OSERR 71 /* system error (e.g., can't fork) */
|
||||||
|
#define EX_OSFILE 72 /* critical OS file missing */
|
||||||
|
#define EX_CANTCREAT 73 /* can't create (user) output file */
|
||||||
|
#define EX_IOERR 74 /* input/output error */
|
||||||
|
#define EX_TEMPFAIL 75 /* temp failure; user is invited to retry */
|
||||||
|
#define EX_PROTOCOL 76 /* remote error in protocol */
|
||||||
|
#define EX_NOPERM 77 /* permission denied */
|
||||||
|
#define EX_CONFIG 78 /* configuration error */
|
||||||
|
|
||||||
|
#define EX__MAX 78 /* maximum listed value */
|
||||||
|
|
||||||
|
#endif /* !_SYSEXITS_H_ */
|
9
libc/unistd.h
Normal file
9
libc/unistd.h
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
#ifndef _UNISTD_H_
|
||||||
|
#define _UNISTD_H_
|
||||||
|
|
||||||
|
int getopt(int, char * const [], const char *);
|
||||||
|
extern char *optarg;
|
||||||
|
extern int optind, opterr, optopt;
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
4
makefile
4
makefile
|
@ -14,7 +14,7 @@ LDFLAGS = -w -c 'MPS ' -t MPST \
|
||||||
-sn STDIO=Main -sn INTENV=Main -sn %A5Init=Main
|
-sn STDIO=Main -sn INTENV=Main -sn %A5Init=Main
|
||||||
|
|
||||||
LIBFLAGS = -P
|
LIBFLAGS = -P
|
||||||
SCFLAGS = -P
|
SCFLAGS = -P -I libc/ -I ./
|
||||||
|
|
||||||
# MPW 3.5
|
# MPW 3.5
|
||||||
|
|
||||||
|
@ -47,7 +47,7 @@ dist/Tools.tgz: $(TARGETS)
|
||||||
install: $(TARGETS)
|
install: $(TARGETS)
|
||||||
cp $^ ~/mpw/Tools/
|
cp $^ ~/mpw/Tools/
|
||||||
|
|
||||||
libc/libc: libc/strcasecmp.c.o
|
libc/libc: libc/strcasecmp.c.o libc/_getprogname.c.o libc/err.c.o libc/getopt.c.o libc/basename.c.o
|
||||||
$(MPW) Lib $(LIBFLAGS) -o $@ $^
|
$(MPW) Lib $(LIBFLAGS) -o $@ $^
|
||||||
|
|
||||||
GetEnv: GetEnv.c.o
|
GetEnv: GetEnv.c.o
|
||||||
|
|
Loading…
Reference in New Issue
Block a user