forked from auxolotl/labs
feat: heirloom, heirloom-devtools
This commit is contained in:
parent
64985d6058
commit
0c03ce790f
|
@ -14,6 +14,7 @@ in {
|
||||||
./gnupatch
|
./gnupatch
|
||||||
./gnumake
|
./gnumake
|
||||||
./coreutils
|
./coreutils
|
||||||
|
./heirloom
|
||||||
./bash
|
./bash
|
||||||
|
|
||||||
./gnused
|
./gnused
|
||||||
|
@ -51,6 +52,7 @@ in {
|
||||||
stage1-gnupatch = stage1.gnupatch.package;
|
stage1-gnupatch = stage1.gnupatch.package;
|
||||||
stage1-gnumake-boot = stage1.gnumake.boot.package;
|
stage1-gnumake-boot = stage1.gnumake.boot.package;
|
||||||
stage1-coreutils-boot = stage1.coreutils.boot.package;
|
stage1-coreutils-boot = stage1.coreutils.boot.package;
|
||||||
|
stage1-heirloom-devtools = stage1.heirloom.devtools.package;
|
||||||
stage1-bash-boot = stage1.bash.boot.package;
|
stage1-bash-boot = stage1.bash.boot.package;
|
||||||
|
|
||||||
# These packages are built using Bash v2.
|
# These packages are built using Bash v2.
|
||||||
|
@ -71,6 +73,7 @@ in {
|
||||||
stage1-coreutils = stage1.coreutils.package;
|
stage1-coreutils = stage1.coreutils.package;
|
||||||
stage1-binutils = stage1.binutils.package;
|
stage1-binutils = stage1.binutils.package;
|
||||||
stage1-findutils = stage1.findutils.package;
|
stage1-findutils = stage1.findutils.package;
|
||||||
|
stage1-heirloom = stage1.heirloom.package;
|
||||||
stage1-bash = stage1.bash.package;
|
stage1-bash = stage1.bash.package;
|
||||||
|
|
||||||
# These packages are built using Bash v5
|
# These packages are built using Bash v5
|
||||||
|
|
168
foundation/src/stages/stage1/heirloom/default.nix
Normal file
168
foundation/src/stages/stage1/heirloom/default.nix
Normal file
|
@ -0,0 +1,168 @@
|
||||||
|
{
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
}: let
|
||||||
|
cfg = config.aux.foundation.stages.stage1.heirloom;
|
||||||
|
|
||||||
|
platform = config.aux.platform;
|
||||||
|
builders = config.aux.foundation.builders;
|
||||||
|
|
||||||
|
stage1 = config.aux.foundation.stages.stage1;
|
||||||
|
stage2 = config.aux.foundation.stages.stage2;
|
||||||
|
in {
|
||||||
|
includes = [
|
||||||
|
./devtools.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
options.aux.foundation.stages.stage1.heirloom = {
|
||||||
|
package = lib.options.create {
|
||||||
|
type = lib.types.package;
|
||||||
|
description = "The package to use for heirloom.";
|
||||||
|
};
|
||||||
|
|
||||||
|
version = lib.options.create {
|
||||||
|
type = lib.types.string;
|
||||||
|
description = "Version of the package.";
|
||||||
|
};
|
||||||
|
|
||||||
|
src = lib.options.create {
|
||||||
|
type = lib.types.package;
|
||||||
|
description = "Source for the package.";
|
||||||
|
};
|
||||||
|
|
||||||
|
meta = {
|
||||||
|
description = lib.options.create {
|
||||||
|
type = lib.types.string;
|
||||||
|
description = "Description for the package.";
|
||||||
|
default.value = "The Heirloom Toolchest is a collection of standard Unix utilities.";
|
||||||
|
};
|
||||||
|
|
||||||
|
homepage = lib.options.create {
|
||||||
|
type = lib.types.string;
|
||||||
|
description = "Homepage for the package.";
|
||||||
|
default.value = "https://heirloom.sourceforge.net/tools.html";
|
||||||
|
};
|
||||||
|
|
||||||
|
license = lib.options.create {
|
||||||
|
# TODO: Add a proper type for licenses.
|
||||||
|
type = lib.types.list.of lib.types.attrs.any;
|
||||||
|
description = "License for the package.";
|
||||||
|
default.value = [
|
||||||
|
lib.licenses.zlib
|
||||||
|
lib.licenses.caldera
|
||||||
|
lib.licenses.bsdOriginalUC
|
||||||
|
lib.licenses.cddl
|
||||||
|
lib.licenses.bsd3
|
||||||
|
lib.licenses.gpl2Plus
|
||||||
|
lib.licenses.lgpl21Plus
|
||||||
|
lib.licenses.lpl-102
|
||||||
|
lib.licenses.info-zip
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
platforms = lib.options.create {
|
||||||
|
type = lib.types.list.of lib.types.string;
|
||||||
|
description = "Platforms the package supports.";
|
||||||
|
default.value = ["i686-linux"];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = {
|
||||||
|
aux.foundation.stages.stage1.heirloom = {
|
||||||
|
version = "070715";
|
||||||
|
|
||||||
|
src = builtins.fetchurl {
|
||||||
|
url = "https://downloads.sourceforge.net/heirloom/heirloom/${cfg.version}/heirloom-${cfg.version}.tar.bz2";
|
||||||
|
sha256 = "6zP3C8wBmx0OCkHx11UtRcV6FicuThxIY07D5ESWow8=";
|
||||||
|
};
|
||||||
|
|
||||||
|
package = let
|
||||||
|
patches = [
|
||||||
|
# we pre-generate nawk's proctab.c as meslibc is not capable of running maketab
|
||||||
|
# during build time (insufficient sscanf support)
|
||||||
|
./patches/proctab.patch
|
||||||
|
|
||||||
|
# disable utilities that don't build successfully
|
||||||
|
./patches/disable-programs.patch
|
||||||
|
|
||||||
|
# "tcc -ar" doesn't support creating empty archives
|
||||||
|
./patches/tcc-empty-ar.patch
|
||||||
|
# meslibc doesn't have seperate libm
|
||||||
|
./patches/dont-link-lm.patch
|
||||||
|
# meslibc's vprintf doesn't support %ll
|
||||||
|
./patches/vprintf.patch
|
||||||
|
# meslibc doesn't support sysconf()
|
||||||
|
./patches/sysconf.patch
|
||||||
|
# meslibc doesn't support locale
|
||||||
|
./patches/strcoll.patch
|
||||||
|
# meslibc doesn't support termios.h
|
||||||
|
./patches/termios.patch
|
||||||
|
# meslibc doesn't support utime.h
|
||||||
|
./patches/utime.patch
|
||||||
|
# meslibc doesn't support langinfo.h
|
||||||
|
./patches/langinfo.patch
|
||||||
|
# support building with meslibc
|
||||||
|
./patches/meslibc-support.patch
|
||||||
|
# remove socket functionality as unsupported by meslibc
|
||||||
|
./patches/cp-no-socket.patch
|
||||||
|
];
|
||||||
|
|
||||||
|
makeFlags = [
|
||||||
|
# mk.config build options
|
||||||
|
"CC='tcc -B ${stage1.tinycc.mes.libs.package}/lib -include ${./stubs.h} -include ${./musl.h}'"
|
||||||
|
"AR='tcc -ar'"
|
||||||
|
"RANLIB=true"
|
||||||
|
"STRIP=true"
|
||||||
|
"SHELL=${stage1.bash.package}/bin/sh"
|
||||||
|
"POSIX_SHELL=${stage1.bash.package}/bin/sh"
|
||||||
|
"DEFBIN=/bin"
|
||||||
|
"SV3BIN=/5bin"
|
||||||
|
"S42BIN=/5bin/s42"
|
||||||
|
"SUSBIN=/bin"
|
||||||
|
"SU3BIN=/5bin/posix2001"
|
||||||
|
"UCBBIN=/ucb"
|
||||||
|
"CCSBIN=/ccs/bin"
|
||||||
|
"DEFLIB=/lib"
|
||||||
|
"DEFSBIN=/bin"
|
||||||
|
"MANDIR=/share/man"
|
||||||
|
"LCURS=" # disable ncurses
|
||||||
|
"USE_ZLIB=0" # disable zlib
|
||||||
|
"IWCHAR='-I../libwchar'"
|
||||||
|
"LWCHAR='-L../libwchar -lwchar'"
|
||||||
|
];
|
||||||
|
in
|
||||||
|
builders.bash.boot.build {
|
||||||
|
name = "heirloom-${cfg.version}";
|
||||||
|
meta = cfg.meta;
|
||||||
|
|
||||||
|
deps.build.host = [
|
||||||
|
stage1.tinycc.mes.compiler.package
|
||||||
|
stage1.gnumake.package
|
||||||
|
stage1.gnupatch.package
|
||||||
|
stage1.heirloom.devtools.package
|
||||||
|
];
|
||||||
|
|
||||||
|
script = ''
|
||||||
|
# Unpack
|
||||||
|
unbz2 --file ${cfg.src} --output heirloom.tar
|
||||||
|
untar --file heirloom.tar
|
||||||
|
rm heirloom.tar
|
||||||
|
cd heirloom-${cfg.version}
|
||||||
|
|
||||||
|
# Patch
|
||||||
|
${lib.strings.concatMapSep "\n" (file: "patch -Np0 -i ${file}") patches}
|
||||||
|
cp ${./proctab.c} nawk/proctab.c
|
||||||
|
|
||||||
|
# Build
|
||||||
|
# These tools are required during later build steps
|
||||||
|
export PATH="$PATH:$PWD/ed:$PWD/nawk:$PWD/sed"
|
||||||
|
make ${builtins.concatStringsSep " " makeFlags}
|
||||||
|
|
||||||
|
# Install
|
||||||
|
make install ROOT=$out ${builtins.concatStringsSep " " makeFlags}
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
150
foundation/src/stages/stage1/heirloom/devtools.nix
Normal file
150
foundation/src/stages/stage1/heirloom/devtools.nix
Normal file
|
@ -0,0 +1,150 @@
|
||||||
|
{
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
}: let
|
||||||
|
cfg = config.aux.foundation.stages.stage1.heirloom.devtools;
|
||||||
|
|
||||||
|
platform = config.aux.platform;
|
||||||
|
builders = config.aux.foundation.builders;
|
||||||
|
|
||||||
|
stage0 = config.aux.foundation.stages.stage0;
|
||||||
|
stage1 = config.aux.foundation.stages.stage1;
|
||||||
|
stage2 = config.aux.foundation.stages.stage2;
|
||||||
|
in {
|
||||||
|
options.aux.foundation.stages.stage1.heirloom.devtools = {
|
||||||
|
package = lib.options.create {
|
||||||
|
type = lib.types.package;
|
||||||
|
description = "The package to use for heirloom-devtools.";
|
||||||
|
};
|
||||||
|
|
||||||
|
version = lib.options.create {
|
||||||
|
type = lib.types.string;
|
||||||
|
description = "Version of the package.";
|
||||||
|
};
|
||||||
|
|
||||||
|
src = lib.options.create {
|
||||||
|
type = lib.types.package;
|
||||||
|
description = "Source for the package.";
|
||||||
|
};
|
||||||
|
|
||||||
|
meta = {
|
||||||
|
description = lib.options.create {
|
||||||
|
type = lib.types.string;
|
||||||
|
description = "Description for the package.";
|
||||||
|
default.value = "Portable yacc and lex derived from OpenSolaris";
|
||||||
|
};
|
||||||
|
|
||||||
|
homepage = lib.options.create {
|
||||||
|
type = lib.types.string;
|
||||||
|
description = "Homepage for the package.";
|
||||||
|
default.value = "https://heirloom.sourceforge.net/devtools.html";
|
||||||
|
};
|
||||||
|
|
||||||
|
license = lib.options.create {
|
||||||
|
# TODO: Add a proper type for licenses.
|
||||||
|
type = lib.types.list.of lib.types.attrs.any;
|
||||||
|
description = "License for the package.";
|
||||||
|
default.value = [
|
||||||
|
lib.licenses.cddl
|
||||||
|
lib.licenses.bsdOriginalUC
|
||||||
|
lib.licenses.caldera
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
platforms = lib.options.create {
|
||||||
|
type = lib.types.list.of lib.types.string;
|
||||||
|
description = "Platforms the package supports.";
|
||||||
|
default.value = ["i686-linux"];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = {
|
||||||
|
aux.foundation.stages.stage1.heirloom.devtools = {
|
||||||
|
version = "070527";
|
||||||
|
|
||||||
|
src = builtins.fetchurl {
|
||||||
|
url = "https://downloads.sourceforge.net/heirloom/heirloom-devtools/heirloom-devtools-${cfg.version}.tar.bz2";
|
||||||
|
sha256 = "9f233d8b78e4351fe9dd2d50d83958a0e5af36f54e9818521458a08e058691ba";
|
||||||
|
};
|
||||||
|
|
||||||
|
package = let
|
||||||
|
# Thanks to the live-bootstrap project!
|
||||||
|
# See https://github.com/fosslinux/live-bootstrap/blob/d918b984ad6fe4fc7680f3be060fd82f8c9fddd9/sysa/heirloom-devtools-070527/heirloom-devtools-070527.kaem
|
||||||
|
liveBootstrap = "https://github.com/fosslinux/live-bootstrap/raw/d918b984ad6fe4fc7680f3be060fd82f8c9fddd9/sysa/heirloom-devtools-070527";
|
||||||
|
|
||||||
|
patches = [
|
||||||
|
# Remove all kinds of wchar support. Mes Libc does not support wchar in any form
|
||||||
|
(builtins.fetchurl {
|
||||||
|
url = "${liveBootstrap}/patches/yacc_remove_wchar.patch";
|
||||||
|
sha256 = "0wgiz02bb7xzjy2gnbjp8y31qy6rc4b29v01zi32zh9lw54j68hc";
|
||||||
|
})
|
||||||
|
# Similarly to yacc, remove wchar. See yacc patch for further information
|
||||||
|
(builtins.fetchurl {
|
||||||
|
url = "${liveBootstrap}/patches/lex_remove_wchar.patch";
|
||||||
|
sha256 = "168dfngi51ljjqgd55wbvmffaq61gk48gak50ymnl1br92qkp4zh";
|
||||||
|
})
|
||||||
|
];
|
||||||
|
in
|
||||||
|
builders.kaem.build {
|
||||||
|
name = "heirloom-${cfg.version}";
|
||||||
|
meta = cfg.meta;
|
||||||
|
|
||||||
|
deps.build.host = [
|
||||||
|
stage1.tinycc.mes.compiler.package
|
||||||
|
stage1.gnumake.package
|
||||||
|
stage1.gnupatch.package
|
||||||
|
stage1.coreutils.package
|
||||||
|
stage0.mescc-tools-extra.package
|
||||||
|
];
|
||||||
|
|
||||||
|
script = ''
|
||||||
|
# Unpack
|
||||||
|
unbz2 --file ${cfg.src} --output heirloom-devtools.tar
|
||||||
|
untar --file heirloom-devtools.tar
|
||||||
|
rm heirloom-devtools.tar
|
||||||
|
build=''${NIX_BUILD_TOP}/heirloom-devtools-${cfg.version}
|
||||||
|
cd ''${build}
|
||||||
|
|
||||||
|
# Patch
|
||||||
|
${lib.strings.concatMapSep "\n" (f: "patch -Np0 -i ${f}") patches}
|
||||||
|
|
||||||
|
# Build yacc
|
||||||
|
cd yacc
|
||||||
|
make -f Makefile.mk \
|
||||||
|
CC="tcc -B ${stage1.tinycc.mes.libs.package}/lib" \
|
||||||
|
AR="tcc -ar" \
|
||||||
|
CFLAGS="-DMAXPATHLEN=4096 -DEILSEQ=84 -DMB_LEN_MAX=100" \
|
||||||
|
LDFLAGS="-lgetopt" \
|
||||||
|
RANLIB=true \
|
||||||
|
LIBDIR=''${out}/lib
|
||||||
|
|
||||||
|
# Install yacc
|
||||||
|
install -D yacc ''${out}/bin/yacc
|
||||||
|
install -Dm 444 liby.a ''${out}/lib/liby.a
|
||||||
|
install -Dm 444 yaccpar ''${out}/lib/yaccpar
|
||||||
|
|
||||||
|
# Make yacc available to lex
|
||||||
|
PATH="''${out}/bin:''${PATH}"
|
||||||
|
|
||||||
|
# Build lex
|
||||||
|
cd ../lex
|
||||||
|
make -f Makefile.mk \
|
||||||
|
CC="tcc -B ${stage1.tinycc.mes.libs.package}/lib" \
|
||||||
|
AR="tcc -ar" \
|
||||||
|
CFLAGS="-DEILSEQ=84 -DMB_LEN_MAX=100" \
|
||||||
|
LDFLAGS="-lgetopt" \
|
||||||
|
RANLIB=true \
|
||||||
|
LIBDIR=''${out}/lib
|
||||||
|
|
||||||
|
# Install lex
|
||||||
|
install -D lex ''${out}/bin/lex
|
||||||
|
install -Dm 444 ncform ''${out}/lib/lex/ncform
|
||||||
|
install -Dm 444 nceucform ''${out}/lib/lex/nceucform
|
||||||
|
install -Dm 444 nrform ''${out}/lib/lex/nrform
|
||||||
|
install -Dm 444 libl.a ''${out}/lib/libl.a
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
53
foundation/src/stages/stage1/heirloom/musl.h
Normal file
53
foundation/src/stages/stage1/heirloom/musl.h
Normal file
|
@ -0,0 +1,53 @@
|
||||||
|
/*
|
||||||
|
Copyright © 2005-2019 Rich Felker, et al.
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining
|
||||||
|
a copy of this software and associated documentation files (the
|
||||||
|
"Software"), to deal in the Software without restriction, including
|
||||||
|
without limitation the rights to use, copy, modify, merge, publish,
|
||||||
|
distribute, sublicense, and/or sell copies of the Software, and to
|
||||||
|
permit persons to whom the Software is furnished to do so, subject to
|
||||||
|
the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be
|
||||||
|
included in all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||||
|
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||||
|
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||||
|
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||||
|
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||||
|
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||||
|
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
// Additional utilities from musl 1.1.24
|
||||||
|
|
||||||
|
// include/stdlib.h
|
||||||
|
#define WEXITSTATUS(s) (((s) & 0xff00) >> 8)
|
||||||
|
#define WTERMSIG(s) ((s) & 0x7f)
|
||||||
|
#define WIFEXITED(s) (!WTERMSIG(s))
|
||||||
|
#define WIFSIGNALED(s) (((s)&0xffff)-1U < 0xffu)
|
||||||
|
|
||||||
|
// include/sys/sysmacros.h
|
||||||
|
#define major(x) \
|
||||||
|
((unsigned)( (((x)>>31>>1) & 0xfffff000) | (((x)>>8) & 0x00000fff) ))
|
||||||
|
#define minor(x) \
|
||||||
|
((unsigned)( (((x)>>12) & 0xffffff00) | ((x) & 0x000000ff) ))
|
||||||
|
#define makedev(x,y) ( \
|
||||||
|
(((x)&0xfffff000ULL) << 32) | \
|
||||||
|
(((x)&0x00000fffULL) << 8) | \
|
||||||
|
(((y)&0xffffff00ULL) << 12) | \
|
||||||
|
(((y)&0x000000ffULL)) )
|
||||||
|
|
||||||
|
// src/misc/basename.c
|
||||||
|
#include <string.h>
|
||||||
|
char *basename(char *s)
|
||||||
|
{
|
||||||
|
size_t i;
|
||||||
|
if (!s || !*s) return ".";
|
||||||
|
i = strlen(s)-1;
|
||||||
|
for (; i&&s[i]=='/'; i--) s[i] = 0;
|
||||||
|
for (; i&&s[i-1]!='/'; i--);
|
||||||
|
return s+i;
|
||||||
|
}
|
|
@ -0,0 +1,84 @@
|
||||||
|
--- cp/cp.c
|
||||||
|
+++ cp/cp.c
|
||||||
|
@@ -42,8 +42,6 @@ static const char sccsid[] USED = "@(#)cp.sl 1.84 (gritter) 3/4/06";
|
||||||
|
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <sys/stat.h>
|
||||||
|
-#include <sys/socket.h>
|
||||||
|
-#include <sys/un.h>
|
||||||
|
#include <sys/time.h>
|
||||||
|
#include <sys/resource.h>
|
||||||
|
#include <fcntl.h>
|
||||||
|
@@ -427,6 +425,7 @@ fdcopy(const char *src, const struct stat *ssp, const int sfd,
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef __linux__
|
||||||
|
+#ifdef O_DIRECT
|
||||||
|
if (!bflag && !Dflag && ssp->st_size > 0) {
|
||||||
|
long long sent;
|
||||||
|
|
||||||
|
@@ -436,6 +435,7 @@ fdcopy(const char *src, const struct stat *ssp, const int sfd,
|
||||||
|
if (sent < 0)
|
||||||
|
goto err;
|
||||||
|
}
|
||||||
|
+#endif
|
||||||
|
#endif /* __linux__ */
|
||||||
|
if (pagesize == 0)
|
||||||
|
if ((pagesize = 4096) < 0)
|
||||||
|
@@ -702,37 +702,6 @@ symlinkcopy(const char *src, const struct stat *ssp,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
-static void
|
||||||
|
-socketcopy(const char *src, const struct stat *ssp,
|
||||||
|
- const char *tgt, const struct stat *dsp)
|
||||||
|
-{
|
||||||
|
- int fd, addrsz;
|
||||||
|
- struct sockaddr_un addr;
|
||||||
|
- size_t len;
|
||||||
|
-
|
||||||
|
- if (do_unlink(tgt, dsp) != OKAY)
|
||||||
|
- return;
|
||||||
|
- len = strlen(tgt);
|
||||||
|
- memset(&addr, 0, sizeof addr);
|
||||||
|
- addr.sun_family = AF_UNIX;
|
||||||
|
- addrsz = sizeof addr - sizeof addr.sun_path + len;
|
||||||
|
- if ((len >= sizeof addr.sun_path ? errno = ENAMETOOLONG, fd = -1, 1 :
|
||||||
|
- (strncpy(addr.sun_path,tgt,sizeof addr.sun_path), 0)) ||
|
||||||
|
- (fd = socket(AF_UNIX, SOCK_STREAM, 0)) < 0 ||
|
||||||
|
- bind(fd, (struct sockaddr *)&addr, addrsz) < 0) {
|
||||||
|
- fprintf(stderr, "%s: cannot create socket %s\n%s: %s\n",
|
||||||
|
- progname, tgt,
|
||||||
|
- progname, strerror(errno));
|
||||||
|
- if (fd >= 0)
|
||||||
|
- close(fd);
|
||||||
|
- errcnt |= 01;
|
||||||
|
- return;
|
||||||
|
- }
|
||||||
|
- close(fd);
|
||||||
|
- if (pflag)
|
||||||
|
- permissions(tgt, ssp);
|
||||||
|
-}
|
||||||
|
-
|
||||||
|
static void
|
||||||
|
specialcopy(const char *src, const struct stat *ssp,
|
||||||
|
const char *tgt, const struct stat *dsp)
|
||||||
|
@@ -748,9 +717,6 @@ specialcopy(const char *src, const struct stat *ssp,
|
||||||
|
case S_IFLNK:
|
||||||
|
symlinkcopy(src, ssp, tgt, dsp);
|
||||||
|
break;
|
||||||
|
- case S_IFSOCK:
|
||||||
|
- socketcopy(src, ssp, tgt, dsp);
|
||||||
|
- break;
|
||||||
|
case S_IFDOOR:
|
||||||
|
ignoring("door", src);
|
||||||
|
break;
|
||||||
|
@@ -1043,7 +1009,7 @@ ln(const char *src, const char *tgt, struct stat *dsp, int level,
|
||||||
|
errcnt |= 01;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
-#if (defined (SUS) || defined (S42)) && (defined (__linux__) || defined (__sun))
|
||||||
|
+#if (defined (SUS) || defined (S42)) && (defined (__linux__) || defined (__sun)) && !defined (__TINYC__)
|
||||||
|
if (sflag == 0) {
|
||||||
|
char *rpbuf = alloca(PATH_MAX+1);
|
||||||
|
if (realpath(src, rpbuf) == NULL) {
|
|
@ -0,0 +1,43 @@
|
||||||
|
--- makefile
|
||||||
|
+++ makefile
|
||||||
|
@@ -1,21 +1,24 @@
|
||||||
|
-SHELL = /bin/sh
|
||||||
|
+SHELL = sh
|
||||||
|
|
||||||
|
-SUBDIRS = build libwchar libcommon libuxre _install \
|
||||||
|
- banner basename bc bdiff bfs \
|
||||||
|
- cal calendar cat chmod chown \
|
||||||
|
- cksum cmp col comm copy cp cpio csplit cut \
|
||||||
|
- date dc dd deroff diff diff3 dircmp dirname df du \
|
||||||
|
+SUBDIRS = libwchar libcommon libuxre _install \
|
||||||
|
+ banner basename bdiff bfs \
|
||||||
|
+ cat chmod chown \
|
||||||
|
+ cksum cmp col comm copy cp csplit cut \
|
||||||
|
+ dc dirname \
|
||||||
|
echo ed env expand expr \
|
||||||
|
- factor file find fmt fmtmsg fold \
|
||||||
|
- getconf getopt grep groups hd head hostname id join \
|
||||||
|
- kill line listusers ln logins logname ls \
|
||||||
|
- mail man mesg mkdir mkfifo mknod more mvdir \
|
||||||
|
- nawk news nice nl nohup oawk od \
|
||||||
|
- paste pathchk pg pgrep pr printenv printf priocntl ps psrinfo pwd \
|
||||||
|
- random renice rm rmdir \
|
||||||
|
- sdiff sed setpgrp shl sleep sort spell split stty su sum sync \
|
||||||
|
- tabs tail tapecntl tar tcopy tee test time touch tr true tsort tty \
|
||||||
|
- ul uname uniq units users wc what who whoami whodo xargs yes
|
||||||
|
+ file fmt fold \
|
||||||
|
+ getopt grep hd head join \
|
||||||
|
+ kill line ln logname ls \
|
||||||
|
+ mesg mkdir mknod \
|
||||||
|
+ nl nohup od \
|
||||||
|
+ paste pathchk pgrep pr printenv printf pwd \
|
||||||
|
+ random rm rmdir \
|
||||||
|
+ sed sleep sort split sum \
|
||||||
|
+ tee test touch tr true tsort tty \
|
||||||
|
+ uniq units wc what whoami xargs yes
|
||||||
|
+
|
||||||
|
+# These depend on some coreutils that we need to build first
|
||||||
|
+SUBDIRS += bc nawk build
|
||||||
|
|
||||||
|
dummy: makefiles all
|
||||||
|
|
|
@ -0,0 +1,44 @@
|
||||||
|
--- csplit/Makefile.mk
|
||||||
|
+++ csplit/Makefile.mk
|
||||||
|
@@ -1,19 +1,19 @@
|
||||||
|
all: csplit csplit_sus csplit_su3
|
||||||
|
|
||||||
|
csplit: csplit.o
|
||||||
|
- $(LD) $(LDFLAGS) csplit.o $(LCOMMON) $(LWCHAR) $(LIBS) -lm -o csplit
|
||||||
|
+ $(LD) $(LDFLAGS) csplit.o $(LCOMMON) $(LWCHAR) $(LIBS) -o csplit
|
||||||
|
|
||||||
|
csplit.o: csplit.c
|
||||||
|
$(CC) $(CFLAGS) $(CPPFLAGS) $(XO6FL) $(LARGEF) $(IWCHAR) $(ICOMMON) -c csplit.c
|
||||||
|
|
||||||
|
csplit_sus: csplit_sus.o
|
||||||
|
- $(LD) $(LDFLAGS) csplit_sus.o $(LUXRE) $(LCOMMON) $(LWCHAR) $(LIBS) -lm -o csplit_sus
|
||||||
|
+ $(LD) $(LDFLAGS) csplit_sus.o $(LUXRE) $(LCOMMON) $(LWCHAR) $(LIBS) -o csplit_sus
|
||||||
|
|
||||||
|
csplit_sus.o: csplit.c
|
||||||
|
$(CC) $(CFLAGS) $(CPPFLAGS) $(XO6FL) $(LARGEF) $(IUXRE) $(IWCHAR) $(ICOMMON) -DSUS -c csplit.c -o csplit_sus.o
|
||||||
|
|
||||||
|
csplit_su3: csplit_su3.o
|
||||||
|
- $(LD) $(LDFLAGS) csplit_su3.o $(LUXRE) $(LCOMMON) $(LWCHAR) $(LIBS) -lm -o csplit_su3
|
||||||
|
+ $(LD) $(LDFLAGS) csplit_su3.o $(LUXRE) $(LCOMMON) $(LWCHAR) $(LIBS) -o csplit_su3
|
||||||
|
|
||||||
|
csplit_su3.o: csplit.c
|
||||||
|
$(CC) $(CFLAGS) $(CPPFLAGS) $(XO6FL) $(LARGEF) $(IUXRE) $(IWCHAR) $(ICOMMON) -DSU3 -c csplit.c -o csplit_su3.o
|
||||||
|
--- nawk/Makefile.mk
|
||||||
|
+++ nawk/Makefile.mk
|
||||||
|
@@ -3,13 +3,13 @@ all: awk awk_sus awk_su3
|
||||||
|
OBJ = awk.lx.o b.o lib.o main.o parse.o proctab.o run.o tran.o
|
||||||
|
|
||||||
|
awk: awk.g.o $(OBJ) version.o
|
||||||
|
- $(LD) $(LDFLAGS) awk.g.o $(OBJ) version.o $(LUXRE) -lm $(LCOMMON) $(LWCHAR) $(LIBS) -o awk
|
||||||
|
+ $(LD) $(LDFLAGS) awk.g.o $(OBJ) version.o $(LUXRE) $(LCOMMON) $(LWCHAR) $(LIBS) -o awk
|
||||||
|
|
||||||
|
awk_sus: awk.g.o $(OBJ) version_sus.o
|
||||||
|
- $(LD) $(LDFLAGS) awk.g.o $(OBJ) version_sus.o $(LUXRE) -lm $(LCOMMON) $(LWCHAR) $(LIBS) -o awk_sus
|
||||||
|
+ $(LD) $(LDFLAGS) awk.g.o $(OBJ) version_sus.o $(LUXRE) $(LCOMMON) $(LWCHAR) $(LIBS) -o awk_sus
|
||||||
|
|
||||||
|
awk_su3: awk.g.2001.o $(OBJ) version_su3.o
|
||||||
|
- $(LD) $(LDFLAGS) awk.g.2001.o $(OBJ) version_su3.o $(LUXRE) -lm $(LCOMMON) $(LWCHAR) $(LIBS) -o awk_su3
|
||||||
|
+ $(LD) $(LDFLAGS) awk.g.2001.o $(OBJ) version_su3.o $(LUXRE) $(LCOMMON) $(LWCHAR) $(LIBS) -o awk_su3
|
||||||
|
|
||||||
|
awk.g.c: awk.g.y
|
||||||
|
$(YACC) -d awk.g.y
|
99
foundation/src/stages/stage1/heirloom/patches/langinfo.patch
Normal file
99
foundation/src/stages/stage1/heirloom/patches/langinfo.patch
Normal file
|
@ -0,0 +1,99 @@
|
||||||
|
--- nawk/main.c
|
||||||
|
+++ nawk/main.c
|
||||||
|
@@ -35,7 +35,6 @@
|
||||||
|
#include <errno.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <locale.h>
|
||||||
|
-#include <langinfo.h>
|
||||||
|
#include <libgen.h>
|
||||||
|
|
||||||
|
#define CMDCLASS ""/*"UX:"*/ /* Command classification */
|
||||||
|
--- sort/sort.c
|
||||||
|
+++ sort/sort.c
|
||||||
|
@@ -63,7 +63,6 @@ static const char sccsid[] USED = "@(#)sort.sl 1.37 (gritter) 5/29/05";
|
||||||
|
#include <locale.h>
|
||||||
|
#include <wchar.h>
|
||||||
|
#include <wctype.h>
|
||||||
|
-#include <langinfo.h>
|
||||||
|
#include <inttypes.h>
|
||||||
|
#include <errno.h>
|
||||||
|
|
||||||
|
@@ -287,18 +286,6 @@ main(int argc, char **argv)
|
||||||
|
else
|
||||||
|
chkblank();
|
||||||
|
compare = cmpf = ccoll ? mb_cur_max > 1 ? cmpm : cmpa : cmpl;
|
||||||
|
- setlocale(LC_NUMERIC, "");
|
||||||
|
- arg = nl_langinfo(RADIXCHAR);
|
||||||
|
- if (mb_cur_max > 1)
|
||||||
|
- next(radixchar, arg, i);
|
||||||
|
- else
|
||||||
|
- radixchar = *arg & 0377;
|
||||||
|
- arg = nl_langinfo(THOUSEP);
|
||||||
|
- if (mb_cur_max > 1)
|
||||||
|
- next(thousep, arg, i);
|
||||||
|
- else
|
||||||
|
- thousep = *arg & 0377;
|
||||||
|
- setlocale(LC_TIME, "");
|
||||||
|
fields = smalloc(NF * sizeof *fields);
|
||||||
|
copyproto();
|
||||||
|
eargv = argv;
|
||||||
|
@@ -1088,8 +1075,7 @@ cmp(const char *i, const char *j)
|
||||||
|
} else {
|
||||||
|
sa = elicpy(collba, pa, la, '\n', ignore, code);
|
||||||
|
sb = elicpy(collbb, pb, lb, '\n', ignore, code);
|
||||||
|
- n = fp->Mflg ? monthcmp(collba, collbb) :
|
||||||
|
- strcoll(collba, collbb);
|
||||||
|
+ n = strcmp(collba, collbb);
|
||||||
|
if (n)
|
||||||
|
return n > 0 ? -fp->rflg : fp->rflg;
|
||||||
|
pa = &pa[sa];
|
||||||
|
@@ -1570,49 +1556,6 @@ upcdup(const char *s)
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
|
||||||
|
-static const char *months[12];
|
||||||
|
-
|
||||||
|
-#define COPY_ABMON(m) months[m-1] = upcdup(nl_langinfo(ABMON_##m))
|
||||||
|
-
|
||||||
|
-static void
|
||||||
|
-fillmonths(void)
|
||||||
|
-{
|
||||||
|
- COPY_ABMON(1);
|
||||||
|
- COPY_ABMON(2);
|
||||||
|
- COPY_ABMON(3);
|
||||||
|
- COPY_ABMON(4);
|
||||||
|
- COPY_ABMON(5);
|
||||||
|
- COPY_ABMON(6);
|
||||||
|
- COPY_ABMON(7);
|
||||||
|
- COPY_ABMON(8);
|
||||||
|
- COPY_ABMON(9);
|
||||||
|
- COPY_ABMON(10);
|
||||||
|
- COPY_ABMON(11);
|
||||||
|
- COPY_ABMON(12);
|
||||||
|
-}
|
||||||
|
-
|
||||||
|
-static int
|
||||||
|
-monthcoll(const char *s)
|
||||||
|
-{
|
||||||
|
- int i;
|
||||||
|
- char u[MB_LEN_MAX*3+1];
|
||||||
|
-
|
||||||
|
- cpcu3(u, s);
|
||||||
|
- for (i = 0; i < 12; i++)
|
||||||
|
- if (strcmp(u, months[i]) == 0)
|
||||||
|
- return i;
|
||||||
|
- return 0;
|
||||||
|
-}
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-static int
|
||||||
|
-monthcmp(const char *pa, const char *pb)
|
||||||
|
-{
|
||||||
|
- if (months[0] == NULL)
|
||||||
|
- fillmonths();
|
||||||
|
- return monthcoll(pa) - monthcoll(pb);
|
||||||
|
-}
|
||||||
|
-
|
||||||
|
/*
|
||||||
|
* isblank() consumes half of execution time (in skip()) with
|
||||||
|
* glibc 2.3.1. Check if it contains only space and tab, and
|
|
@ -0,0 +1,322 @@
|
||||||
|
--- _install/install_ucb.c
|
||||||
|
+++ _install/install_ucb.c
|
||||||
|
@@ -267,7 +267,7 @@ cp(const char *src, const char *tgt, struct stat *dsp)
|
||||||
|
if (check(src, tgt, dsp, &sst) != OKAY)
|
||||||
|
return;
|
||||||
|
unlink(tgt);
|
||||||
|
- if ((dfd = creat(tgt, 0700)) < 0 || fchmod(dfd, 0700) < 0 ||
|
||||||
|
+ if ((dfd = creat(tgt, 0700)) < 0 || chmod(tgt, 0700) < 0 ||
|
||||||
|
fstat(dfd, &nst) < 0) {
|
||||||
|
fprintf(stderr, "%s: %s: %s\n", progname, src,
|
||||||
|
strerror(errno));
|
||||||
|
--- libcommon/Makefile.mk
|
||||||
|
+++ libcommon/Makefile.mk
|
||||||
|
@@ -15,7 +15,7 @@ CHECK: CHECK.c
|
||||||
|
headers: CHECK
|
||||||
|
one() { \
|
||||||
|
rm -f "$$1.h"; \
|
||||||
|
- if grep "$$1_h[ ]*=[ ]*[^0][ ]*;" CHECK >/dev/null; \
|
||||||
|
+ if true; \
|
||||||
|
then \
|
||||||
|
ln -s "_$$1.h" "$$1.h"; \
|
||||||
|
fi; \
|
||||||
|
--- libcommon/atoll.h
|
||||||
|
+++ libcommon/atoll.h
|
||||||
|
@@ -1,8 +1,10 @@
|
||||||
|
/* Sccsid @(#)atoll.h 1.4 (gritter) 7/18/04 */
|
||||||
|
|
||||||
|
#if defined (__hpux) || defined (_AIX) || \
|
||||||
|
- defined (__FreeBSD__) && (__FreeBSD__) < 5
|
||||||
|
+ (defined (__FreeBSD__) && (__FreeBSD__) < 5) || defined (__TINYC__)
|
||||||
|
+#ifndef __TINYC__
|
||||||
|
extern long long strtoll(const char *nptr, char **endptr, int base);
|
||||||
|
extern unsigned long long strtoull(const char *nptr, char **endptr, int base);
|
||||||
|
+#endif
|
||||||
|
extern long long atoll(const char *nptr);
|
||||||
|
#endif /* __hpux || _AIX || __FreeBSD__ < 5 */
|
||||||
|
--- libcommon/blank.h
|
||||||
|
+++ libcommon/blank.h
|
||||||
|
@@ -5,7 +5,7 @@
|
||||||
|
*/
|
||||||
|
/* Sccsid @(#)blank.h 1.3 (gritter) 5/1/04 */
|
||||||
|
|
||||||
|
-#ifndef __dietlibc__
|
||||||
|
+#if !defined(__dietlibc__) && !defined(__TINYC__)
|
||||||
|
#ifndef LIBCOMMON_BLANK_H
|
||||||
|
#define LIBCOMMON_BLANK_H 1
|
||||||
|
|
||||||
|
--- libcommon/getdir.c
|
||||||
|
+++ libcommon/getdir.c
|
||||||
|
@@ -52,7 +52,7 @@ extern int getdents(int, struct dirent *, size_t);
|
||||||
|
#undef d_ino
|
||||||
|
#endif /* __FreeBSD__ || __NetBSD__ || __OpenBSD__ || __DragonFly__
|
||||||
|
|| __APPLE__ */
|
||||||
|
-#elif defined (__dietlibc__)
|
||||||
|
+#elif defined (__dietlibc__) || defined(__TINYC__)
|
||||||
|
#include <dirent.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#else /* !__GLIBC__, !__dietlibc__ */
|
||||||
|
--- libcommon/memalign.c
|
||||||
|
+++ libcommon/memalign.c
|
||||||
|
@@ -23,7 +23,7 @@
|
||||||
|
|
||||||
|
#if defined (__FreeBSD__) || defined (__dietlibc__) || defined (_AIX) || \
|
||||||
|
defined (__NetBSD__) || defined (__OpenBSD__) || \
|
||||||
|
- defined (__DragonFly__) || defined (__APPLE__)
|
||||||
|
+ defined (__DragonFly__) || defined (__APPLE__) || defined(__TINYC__)
|
||||||
|
/*
|
||||||
|
* FreeBSD malloc(3) promises to page-align the return of malloc() calls
|
||||||
|
* if size is at least a page. This serves for a poor man's memalign()
|
||||||
|
--- libcommon/memalign.h
|
||||||
|
+++ libcommon/memalign.h
|
||||||
|
@@ -26,7 +26,7 @@
|
||||||
|
|
||||||
|
#if defined (__FreeBSD__) || defined (__dietlibc__) || defined (_AIX) || \
|
||||||
|
defined (__NetBSD__) || defined (__OpenBSD__) || \
|
||||||
|
- defined (__DragonFly__) || defined (__APPLE__)
|
||||||
|
+ defined (__DragonFly__) || defined (__APPLE__) || defined(__TINYC__)
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
extern void *memalign(size_t, size_t);
|
||||||
|
--- libcommon/pathconf.c
|
||||||
|
+++ libcommon/pathconf.c
|
||||||
|
@@ -21,7 +21,7 @@
|
||||||
|
*/
|
||||||
|
/* Sccsid @(#)pathconf.c 1.2 (gritter) 5/1/04 */
|
||||||
|
|
||||||
|
-#ifdef __dietlibc__
|
||||||
|
+#if defined(__dietlibc__) || defined(__TINYC__)
|
||||||
|
#include <unistd.h>
|
||||||
|
#include "pathconf.h"
|
||||||
|
|
||||||
|
--- libcommon/pathconf.h
|
||||||
|
+++ libcommon/pathconf.h
|
||||||
|
@@ -21,7 +21,7 @@
|
||||||
|
*/
|
||||||
|
/* Sccsid @(#)pathconf.h 1.2 (gritter) 5/1/04 */
|
||||||
|
|
||||||
|
-#ifdef __dietlibc__
|
||||||
|
+#if defined(__dietlibc__) || defined(__TINYC__)
|
||||||
|
#include <unistd.h>
|
||||||
|
|
||||||
|
extern long fpathconf(int, int);
|
||||||
|
--- libcommon/regexp.h
|
||||||
|
+++ libcommon/regexp.h
|
||||||
|
@@ -47,7 +47,7 @@
|
||||||
|
static const char regexp_h_sccsid[] REGEXP_H_USED =
|
||||||
|
"@(#)regexp.sl 1.56 (gritter) 5/29/05";
|
||||||
|
|
||||||
|
-#if !defined (REGEXP_H_USED_FROM_VI) && !defined (__dietlibc__)
|
||||||
|
+#if !defined (REGEXP_H_USED_FROM_VI) && !defined (__dietlibc__) && !defined (__TINYC__)
|
||||||
|
#define REGEXP_H_WCHARS
|
||||||
|
#endif
|
||||||
|
|
||||||
|
--- libcommon/sfile.c
|
||||||
|
+++ libcommon/sfile.c
|
||||||
|
@@ -21,7 +21,7 @@
|
||||||
|
*/
|
||||||
|
/* Sccsid @(#)sfile.c 1.9 (gritter) 6/7/04 */
|
||||||
|
|
||||||
|
-#ifdef __linux__
|
||||||
|
+#if defined(__linux__) && !defined(__TINYC__)
|
||||||
|
#undef _FILE_OFFSET_BITS
|
||||||
|
|
||||||
|
#include <sys/types.h>
|
||||||
|
--- libcommon/sighold.c
|
||||||
|
+++ libcommon/sighold.c
|
||||||
|
@@ -22,7 +22,7 @@
|
||||||
|
/* Sccsid @(#)sighold.c 1.7 (gritter) 1/22/06 */
|
||||||
|
|
||||||
|
#if defined (__FreeBSD__) || defined (__dietlibc__) || defined (__NetBSD__) || \
|
||||||
|
- defined (__OpenBSD__) || defined (__DragonFly__) || defined (__APPLE__)
|
||||||
|
+ defined (__OpenBSD__) || defined (__DragonFly__) || defined (__APPLE__) || defined (__TINYC__)
|
||||||
|
#include <signal.h>
|
||||||
|
#include "sigset.h"
|
||||||
|
|
||||||
|
--- libcommon/sigignore.c
|
||||||
|
+++ libcommon/sigignore.c
|
||||||
|
@@ -22,7 +22,7 @@
|
||||||
|
/* Sccsid @(#)sigignore.c 1.6 (gritter) 1/22/06 */
|
||||||
|
|
||||||
|
#if defined (__FreeBSD__) || defined (__dietlibc__) || defined (__NetBSD__) || \
|
||||||
|
- defined (__OpenBSD__) || defined (__DragonFly__) || defined (__APPLE__)
|
||||||
|
+ defined (__OpenBSD__) || defined (__DragonFly__) || defined (__APPLE__) || defined (__TINYC__)
|
||||||
|
#include <signal.h>
|
||||||
|
#include "sigset.h"
|
||||||
|
|
||||||
|
--- libcommon/sigpause.c
|
||||||
|
+++ libcommon/sigpause.c
|
||||||
|
@@ -22,7 +22,7 @@
|
||||||
|
/* Sccsid @(#)sigpause.c 1.6 (gritter) 1/22/06 */
|
||||||
|
|
||||||
|
#if defined (__FreeBSD__) || defined (__dietlibc__) || defined (__NetBSD__) || \
|
||||||
|
- defined (__OpenBSD__) || defined (__DragonFly__) || defined (__APPLE__)
|
||||||
|
+ defined (__OpenBSD__) || defined (__DragonFly__) || defined (__APPLE__) || defined (__TINYC__)
|
||||||
|
#include <signal.h>
|
||||||
|
#include "sigset.h"
|
||||||
|
|
||||||
|
--- libcommon/sigrelse.c
|
||||||
|
+++ libcommon/sigrelse.c
|
||||||
|
@@ -22,7 +22,7 @@
|
||||||
|
/* Sccsid @(#)sigrelse.c 1.8 (gritter) 1/22/06 */
|
||||||
|
|
||||||
|
#if defined (__FreeBSD__) || defined (__dietlibc__) || defined (__NetBSD__) || \
|
||||||
|
- defined (__OpenBSD__) || defined (__DragonFly__) || defined (__APPLE__)
|
||||||
|
+ defined (__OpenBSD__) || defined (__DragonFly__) || defined (__APPLE__) || defined (__TINYC__)
|
||||||
|
#include <signal.h>
|
||||||
|
#include "sigset.h"
|
||||||
|
|
||||||
|
--- libcommon/sigset.c
|
||||||
|
+++ libcommon/sigset.c
|
||||||
|
@@ -22,7 +22,7 @@
|
||||||
|
/* Sccsid @(#)sigset.c 1.7 (gritter) 1/22/06 */
|
||||||
|
|
||||||
|
#if defined (__FreeBSD__) || defined (__dietlibc__) || defined (__NetBSD__) || \
|
||||||
|
- defined (__OpenBSD__) || defined (__DragonFly__) || defined (__APPLE__)
|
||||||
|
+ defined (__OpenBSD__) || defined (__DragonFly__) || defined (__APPLE__) || defined (__TINYC__)
|
||||||
|
#include <signal.h>
|
||||||
|
#include "sigset.h"
|
||||||
|
|
||||||
|
@@ -46,10 +46,7 @@ void (*sigset(int sig, void (*func)(int)))(int)
|
||||||
|
if (sigaction(sig, func==SIG_HOLD?(struct sigaction *)0:&nact, &oact)
|
||||||
|
== -1)
|
||||||
|
return SIG_ERR;
|
||||||
|
- if (sigismember(&oset, sig))
|
||||||
|
- return SIG_HOLD;
|
||||||
|
- else
|
||||||
|
- return (oact.sa_handler);
|
||||||
|
+ return (oact.sa_handler);
|
||||||
|
}
|
||||||
|
#endif /* __FreeBSD__ || __dietlibc__ || __NetBSD__ || __OpenBSD__ ||
|
||||||
|
__DragonFly__ || __APPLE__ */
|
||||||
|
--- libcommon/sigset.h
|
||||||
|
+++ libcommon/sigset.h
|
||||||
|
@@ -22,7 +22,7 @@
|
||||||
|
/* Sccsid @(#)sigset.h 1.9 (gritter) 1/22/06 */
|
||||||
|
|
||||||
|
#if defined (__FreeBSD__) || defined (__dietlibc__) || defined (__NetBSD__) || \
|
||||||
|
- defined (__OpenBSD__) || defined (__DragonFly__) || defined (__APPLE__)
|
||||||
|
+ defined (__OpenBSD__) || defined (__DragonFly__) || defined (__APPLE__) || defined (__TINYC__)
|
||||||
|
|
||||||
|
#ifndef SIG_HOLD
|
||||||
|
#define SIG_HOLD ((void (*)(int))2)
|
||||||
|
--- libcommon/strtol.c
|
||||||
|
+++ libcommon/strtol.c
|
||||||
|
@@ -1,7 +1,7 @@
|
||||||
|
/* Sccsid @(#)strtol.c 1.6 (gritter) 7/18/04 */
|
||||||
|
|
||||||
|
#if defined (__hpux) || defined (_AIX) || \
|
||||||
|
- defined (__FreeBSD__) && (__FreeBSD__) < 5
|
||||||
|
+ (defined (__FreeBSD__) && (__FreeBSD__) < 5) || defined (__TINYC__)
|
||||||
|
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <ctype.h>
|
||||||
|
@@ -97,6 +97,7 @@ out: if (pp <= bptr) {
|
||||||
|
return v * sign;
|
||||||
|
}
|
||||||
|
|
||||||
|
+#ifndef __TINYC__
|
||||||
|
long long
|
||||||
|
strtoll(const char *nptr, char **endptr, int base)
|
||||||
|
{
|
||||||
|
@@ -108,6 +109,7 @@ strtoull(const char *nptr, char **endptr, int base)
|
||||||
|
{
|
||||||
|
return (unsigned long long)internal(nptr, endptr, base, 3);
|
||||||
|
}
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
long long
|
||||||
|
atoll(const char *nptr)
|
||||||
|
--- nawk/awk.h
|
||||||
|
+++ nawk/awk.h
|
||||||
|
@@ -156,7 +156,6 @@ extern Cell *rlengthloc; /* RLENGTH */
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef IN_MAKETAB
|
||||||
|
-#include <wchar.h>
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Get next character from string s and store it in wc; n is set to
|
||||||
|
--- nawk/awk.lx.l
|
||||||
|
+++ nawk/awk.lx.l
|
||||||
|
@@ -71,7 +71,6 @@
|
||||||
|
|
||||||
|
#include "awk.h"
|
||||||
|
#include "y.tab.h"
|
||||||
|
-#include <pfmt.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
|
||||||
|
static void awk_unputstr(const char *s);
|
||||||
|
--- nawk/run.c
|
||||||
|
+++ nawk/run.c
|
||||||
|
@@ -1467,14 +1467,6 @@ Cell *bltin(Node **a, int n)
|
||||||
|
case FRAND:
|
||||||
|
u = (Awkfloat) (rand() % 32767) / 32767.0;
|
||||||
|
break;
|
||||||
|
- case FSRAND:
|
||||||
|
- u = saved_srand; /* return previous seed */
|
||||||
|
- if (x->tval & REC) /* no argument provided */
|
||||||
|
- saved_srand = time(NULL);
|
||||||
|
- else
|
||||||
|
- saved_srand = getfval(x);
|
||||||
|
- srand((int) saved_srand);
|
||||||
|
- break;
|
||||||
|
case FTOUPPER:
|
||||||
|
case FTOLOWER:
|
||||||
|
p = getsval(x);
|
||||||
|
--- pgrep/pgrep.c
|
||||||
|
+++ pgrep/pgrep.c
|
||||||
|
@@ -214,7 +214,7 @@ chdir_to_proc(void)
|
||||||
|
fprintf(stderr, "%s: cannot open %s\n", progname, PROCDIR);
|
||||||
|
exit(3);
|
||||||
|
}
|
||||||
|
- if (fchdir(fd) < 0) {
|
||||||
|
+ if (chdir(PROCDIR) < 0) {
|
||||||
|
fprintf(stderr, "%s: cannot chdir to %s\n", progname, PROCDIR);
|
||||||
|
exit(3);
|
||||||
|
}
|
||||||
|
--- rm/rm.c
|
||||||
|
+++ rm/rm.c
|
||||||
|
@@ -242,7 +242,7 @@ rm(size_t pend, const char *base, const int olddir, int ssub, int level)
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
- if (fchdir(df) < 0) {
|
||||||
|
+ if (chdir(base) < 0) {
|
||||||
|
if (rmfile(base, &st) < 0) {
|
||||||
|
fprintf(stderr,
|
||||||
|
"%s: cannot chdir to %s\n",
|
||||||
|
@@ -270,7 +270,7 @@ rm(size_t pend, const char *base, const int olddir, int ssub, int level)
|
||||||
|
progname, path);
|
||||||
|
errcnt |= 4;
|
||||||
|
}
|
||||||
|
- if (olddir >= 0 && fchdir(olddir) < 0) {
|
||||||
|
+ if (olddir >= 0) {
|
||||||
|
fprintf(stderr, "%s: cannot change backwards\n",
|
||||||
|
progname);
|
||||||
|
exit(1);
|
||||||
|
@@ -316,24 +316,6 @@ subproc(size_t pend, const char *base, int level)
|
||||||
|
int status;
|
||||||
|
|
||||||
|
while (waitpid(pid, &status, 0) != pid);
|
||||||
|
- if (status && WIFSIGNALED(status)) {
|
||||||
|
- /*
|
||||||
|
- * If the signal was sent due to a tty keypress,
|
||||||
|
- * we should be terminated automatically and
|
||||||
|
- * never reach this point. Otherwise, we terminate
|
||||||
|
- * with the same signal, but make sure that we do
|
||||||
|
- * not overwrite a possibly generated core file.
|
||||||
|
- * This results in nearly the usual behavior except
|
||||||
|
- * that the shell never prints a 'core dumped'
|
||||||
|
- * message.
|
||||||
|
- */
|
||||||
|
- struct rlimit rl;
|
||||||
|
-
|
||||||
|
- rl.rlim_cur = rl.rlim_max = 0;
|
||||||
|
- setrlimit(RLIMIT_CORE, &rl);
|
||||||
|
- raise(WTERMSIG(status));
|
||||||
|
- pause();
|
||||||
|
- }
|
||||||
|
return status ? WEXITSTATUS(status) : 0;
|
||||||
|
}
|
||||||
|
case -1:
|
11
foundation/src/stages/stage1/heirloom/patches/proctab.patch
Normal file
11
foundation/src/stages/stage1/heirloom/patches/proctab.patch
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
--- nawk/Makefile.mk
|
||||||
|
+++ nawk/Makefile.mk
|
||||||
|
@@ -28,8 +28,6 @@ maketab: maketab.o
|
||||||
|
$(HOSTCC) maketab.o -o maketab
|
||||||
|
./maketab > proctab.c
|
||||||
|
|
||||||
|
-proctab.c: maketab
|
||||||
|
-
|
||||||
|
awk.g.o: awk.g.c
|
||||||
|
$(CC) $(CFLAGSS) $(CPPFLAGS) $(XO5FL) $(LARGEF) $(IWCHAR) $(ICOMMON) $(IUXRE) -c awk.g.c
|
||||||
|
|
73
foundation/src/stages/stage1/heirloom/patches/strcoll.patch
Normal file
73
foundation/src/stages/stage1/heirloom/patches/strcoll.patch
Normal file
|
@ -0,0 +1,73 @@
|
||||||
|
--- comm/comm.c
|
||||||
|
+++ comm/comm.c
|
||||||
|
@@ -242,7 +242,7 @@ compare(const char *a, const char *b)
|
||||||
|
return(2);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
- n = strcoll(a, b);
|
||||||
|
+ n = strcmp(a, b);
|
||||||
|
return n ? n > 0 ? 2 : 1 : 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
--- expr/expr.y
|
||||||
|
+++ expr/expr.y
|
||||||
|
@@ -234,7 +234,7 @@ _rel(int op, register char *r1, register char *r2)
|
||||||
|
if (numeric(r1) && numeric(r2))
|
||||||
|
i = atoll(r1) - atoll(r2);
|
||||||
|
else
|
||||||
|
- i = strcoll(r1, r2);
|
||||||
|
+ i = strcmp(r1, r2);
|
||||||
|
switch(op) {
|
||||||
|
case EQ: i = i==0; break;
|
||||||
|
case GT: i = i>0; break;
|
||||||
|
--- join/join.c
|
||||||
|
+++ join/join.c
|
||||||
|
@@ -65,7 +65,7 @@ enum {
|
||||||
|
JF = -1
|
||||||
|
};
|
||||||
|
#define ppi(f, j) ((j) >= 0 && (j) < ppisize[f] ? ppibuf[f][j] : null)
|
||||||
|
-#define comp() strcoll(ppi(F1, j1),ppi(F2, j2))
|
||||||
|
+#define comp() strcmp(ppi(F1, j1),ppi(F2, j2))
|
||||||
|
|
||||||
|
#define next(wc, s, n) (*(s) & 0200 ? ((n) = mbtowi(&(wc), (s), mb_cur_max), \
|
||||||
|
(n) = ((n) > 0 ? (n) : (n) < 0 ? (wc=WEOF, 1) : 1)) : \
|
||||||
|
--- ls/ls.c
|
||||||
|
+++ ls/ls.c
|
||||||
|
@@ -575,13 +575,13 @@ _mergesort(struct file **al)
|
||||||
|
static int
|
||||||
|
namecmp(struct file *f1, struct file *f2)
|
||||||
|
{
|
||||||
|
- return strcoll(f1->name, f2->name);
|
||||||
|
+ return strcmp(f1->name, f2->name);
|
||||||
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
extcmp(struct file *f1, struct file *f2)
|
||||||
|
{
|
||||||
|
- return strcoll(extension(f1->name), extension(f2->name));
|
||||||
|
+ return strcmp(extension(f1->name), extension(f2->name));
|
||||||
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
--- nawk/run.c
|
||||||
|
+++ nawk/run.c
|
||||||
|
@@ -608,7 +608,7 @@ Cell *relop(Node **a, int n)
|
||||||
|
j = x->fval - y->fval;
|
||||||
|
i = j<0? -1: (j>0? 1: 0);
|
||||||
|
} else {
|
||||||
|
- i = strcoll((char*)getsval(x), (char*)getsval(y));
|
||||||
|
+ i = strcmp((char*)getsval(x), (char*)getsval(y));
|
||||||
|
}
|
||||||
|
tempfree(x, "");
|
||||||
|
tempfree(y, "");
|
||||||
|
--- sort/sort.c
|
||||||
|
+++ sort/sort.c
|
||||||
|
@@ -1148,7 +1148,7 @@ cmpl(const char *pa, const char *pb)
|
||||||
|
|
||||||
|
ecpy(collba, pa, '\n');
|
||||||
|
ecpy(collbb, pb, '\n');
|
||||||
|
- n = strcoll(collba, collbb);
|
||||||
|
+ n = strcmp(collba, collbb);
|
||||||
|
return n ? n > 0 ? -fields[0].rflg : fields[0].rflg : 0;
|
||||||
|
}
|
||||||
|
|
77
foundation/src/stages/stage1/heirloom/patches/sysconf.patch
Normal file
77
foundation/src/stages/stage1/heirloom/patches/sysconf.patch
Normal file
|
@ -0,0 +1,77 @@
|
||||||
|
--- cmp/cmp.c
|
||||||
|
+++ cmp/cmp.c
|
||||||
|
@@ -264,7 +264,7 @@ openfile(const char *fn)
|
||||||
|
struct file *f;
|
||||||
|
|
||||||
|
if (pagesize == 0)
|
||||||
|
- if ((pagesize = sysconf(_SC_PAGESIZE)) < 0)
|
||||||
|
+ if ((pagesize = 4096) < 0)
|
||||||
|
pagesize = 4096;
|
||||||
|
if ((f = memalign(pagesize, sizeof *f)) == NULL) {
|
||||||
|
write(2, "no memory\n", 10);
|
||||||
|
--- copy/copy.c
|
||||||
|
+++ copy/copy.c
|
||||||
|
@@ -362,7 +362,7 @@ fdcopy(const char *src, const struct stat *sp, int sfd,
|
||||||
|
goto err;
|
||||||
|
}
|
||||||
|
#endif /* __linux__ */
|
||||||
|
- if (pagesize == 0 && (pagesize = sysconf(_SC_PAGESIZE)) <= 0)
|
||||||
|
+ if (pagesize == 0 && (pagesize = 4096) <= 0)
|
||||||
|
pagesize = 4096;
|
||||||
|
if ((blksize = sp->st_blksize) <= 0)
|
||||||
|
blksize = 512;
|
||||||
|
--- cp/cp.c
|
||||||
|
+++ cp/cp.c
|
||||||
|
@@ -438,7 +438,7 @@ fdcopy(const char *src, const struct stat *ssp, const int sfd,
|
||||||
|
}
|
||||||
|
#endif /* __linux__ */
|
||||||
|
if (pagesize == 0)
|
||||||
|
- if ((pagesize = sysconf(_SC_PAGESIZE)) < 0)
|
||||||
|
+ if ((pagesize = 4096) < 0)
|
||||||
|
pagesize = 4096;
|
||||||
|
if (bflag)
|
||||||
|
blksize = bflag;
|
||||||
|
--- libcommon/ib_alloc.c
|
||||||
|
+++ libcommon/ib_alloc.c
|
||||||
|
@@ -41,7 +41,7 @@ ib_alloc(int fd, unsigned blksize)
|
||||||
|
struct stat st;
|
||||||
|
|
||||||
|
if (pagesize == 0)
|
||||||
|
- if ((pagesize = sysconf(_SC_PAGESIZE)) < 0)
|
||||||
|
+ if ((pagesize = 4096) < 0)
|
||||||
|
pagesize = 4096;
|
||||||
|
if (blksize == 0) {
|
||||||
|
if (fstat(fd, &st) < 0)
|
||||||
|
--- libcommon/memalign.c
|
||||||
|
+++ libcommon/memalign.c
|
||||||
|
@@ -40,7 +40,7 @@ memalign(size_t alignment, size_t size)
|
||||||
|
static long pagesize;
|
||||||
|
|
||||||
|
if (pagesize == 0)
|
||||||
|
- pagesize = sysconf(_SC_PAGESIZE);
|
||||||
|
+ pagesize = 4096;
|
||||||
|
if (alignment != pagesize)
|
||||||
|
return NULL;
|
||||||
|
if (size < pagesize)
|
||||||
|
--- libcommon/oblok.c
|
||||||
|
+++ libcommon/oblok.c
|
||||||
|
@@ -100,7 +100,7 @@ ob_alloc(int fd, enum ob_mode bf)
|
||||||
|
struct oblok *op;
|
||||||
|
|
||||||
|
if (pagesize == 0)
|
||||||
|
- if ((pagesize = sysconf(_SC_PAGESIZE)) < 0)
|
||||||
|
+ if ((pagesize = 4096) < 0)
|
||||||
|
pagesize = 4096;
|
||||||
|
if ((op = memalign(pagesize, sizeof *op)) == NULL)
|
||||||
|
return NULL;
|
||||||
|
--- xargs/xargs.c
|
||||||
|
+++ xargs/xargs.c
|
||||||
|
@@ -404,7 +404,7 @@ static void
|
||||||
|
endcmd(void)
|
||||||
|
{
|
||||||
|
a_agg = a_cnt;
|
||||||
|
- a_maxsize = sysconf(_SC_ARG_MAX) - envsz() - 2048 - a_asz;
|
||||||
|
+ a_maxsize = 65536 - envsz() - 2048 - a_asz;
|
||||||
|
if (nflag || sflag) {
|
||||||
|
long newsize = sflag ? atol(sflag) :
|
||||||
|
#ifdef WEIRD_LIMITS
|
|
@ -0,0 +1,11 @@
|
||||||
|
--- libwchar/Makefile.mk
|
||||||
|
+++ libwchar/Makefile.mk
|
||||||
|
@@ -10,7 +10,7 @@ fake:
|
||||||
|
if test "x$(LWCHAR)" = x; \
|
||||||
|
then \
|
||||||
|
touch $(OBJ); \
|
||||||
|
- ar r libwchar.a $(OBJ); \
|
||||||
|
+ touch libwchar.a $(OBJ); \
|
||||||
|
fi
|
||||||
|
|
||||||
|
install:
|
141
foundation/src/stages/stage1/heirloom/patches/termios.patch
Normal file
141
foundation/src/stages/stage1/heirloom/patches/termios.patch
Normal file
|
@ -0,0 +1,141 @@
|
||||||
|
--- ed/ed.c
|
||||||
|
+++ ed/ed.c
|
||||||
|
@@ -68,7 +68,6 @@ static const char sccsid[] USED = "@(#)ed.sl 1.99 (gritter) 7/27/06";
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <signal.h>
|
||||||
|
#include "sigset.h"
|
||||||
|
-#include <termios.h>
|
||||||
|
#include <setjmp.h>
|
||||||
|
#include <libgen.h>
|
||||||
|
#include <inttypes.h>
|
||||||
|
@@ -77,7 +76,6 @@ static const char sccsid[] USED = "@(#)ed.sl 1.99 (gritter) 7/27/06";
|
||||||
|
#include <ctype.h>
|
||||||
|
#include <wctype.h>
|
||||||
|
#include <limits.h>
|
||||||
|
-#include <termios.h>
|
||||||
|
static int FNSIZE;
|
||||||
|
static int LBSIZE;
|
||||||
|
static int RHSIZE;
|
||||||
|
@@ -2273,22 +2271,10 @@ sclose(int fd)
|
||||||
|
static void
|
||||||
|
fspec(const char *lp)
|
||||||
|
{
|
||||||
|
- struct termios ts;
|
||||||
|
const char *cp;
|
||||||
|
|
||||||
|
freetabs();
|
||||||
|
maxlength = 0;
|
||||||
|
- if (tcgetattr(1, &ts) < 0
|
||||||
|
-#ifdef TAB3
|
||||||
|
- || (ts.c_oflag&TAB3) == 0
|
||||||
|
-#endif
|
||||||
|
- )
|
||||||
|
- return;
|
||||||
|
- while (lp[0]) {
|
||||||
|
- if (lp[0] == '<' && lp[1] == ':')
|
||||||
|
- break;
|
||||||
|
- lp++;
|
||||||
|
- }
|
||||||
|
if (lp[0]) {
|
||||||
|
lp += 2;
|
||||||
|
while ((cp = ftok(&lp)) != NULL) {
|
||||||
|
--- ls/ls.c
|
||||||
|
+++ ls/ls.c
|
||||||
|
@@ -102,7 +102,6 @@ static char ifmt_c[] = "-pc-d-b--nl-SD--";
|
||||||
|
#include <grp.h>
|
||||||
|
#include <errno.h>
|
||||||
|
#include <fcntl.h>
|
||||||
|
-#include <termios.h>
|
||||||
|
#include <locale.h>
|
||||||
|
#include <limits.h>
|
||||||
|
#include <ctype.h>
|
||||||
|
@@ -110,14 +109,6 @@ static char ifmt_c[] = "-pc-d-b--nl-SD--";
|
||||||
|
#include <wchar.h>
|
||||||
|
#include <wctype.h>
|
||||||
|
#include "config.h"
|
||||||
|
-#ifndef USE_TERMCAP
|
||||||
|
-#ifndef sun
|
||||||
|
-#include <curses.h>
|
||||||
|
-#include <term.h>
|
||||||
|
-#endif
|
||||||
|
-#else /* USE_TERMCAP */
|
||||||
|
-#include <termcap.h>
|
||||||
|
-#endif /* USE_TERMCAP */
|
||||||
|
|
||||||
|
#ifdef _AIX
|
||||||
|
#include <sys/sysmacros.h>
|
||||||
|
@@ -989,13 +980,6 @@ printname(const char *name, struct file *f, int doit)
|
||||||
|
bold++;
|
||||||
|
}
|
||||||
|
if (color) {
|
||||||
|
-#ifndef USE_TERMCAP
|
||||||
|
- if (bold)
|
||||||
|
- vidattr(A_BOLD);
|
||||||
|
-#else /* USE_TERMCAP */
|
||||||
|
- if (Bold)
|
||||||
|
- tputs(Bold, 1, putchar);
|
||||||
|
-#endif /* USE_TERMCAP */
|
||||||
|
printf(color);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@@ -1056,13 +1040,6 @@ printname(const char *name, struct file *f, int doit)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (doit && color) {
|
||||||
|
-#if !defined (USE_TERMCAP)
|
||||||
|
- if (bold)
|
||||||
|
- vidattr(A_NORMAL);
|
||||||
|
-#else /* USE_TERMCAP */
|
||||||
|
- if (Normal)
|
||||||
|
- tputs(Normal, 1, putchar);
|
||||||
|
-#endif /* USE_TERMCAP */
|
||||||
|
printf(fc_get(FC_NORMAL));
|
||||||
|
}
|
||||||
|
if (f)
|
||||||
|
@@ -1598,16 +1575,12 @@ main(int argc, char **argv)
|
||||||
|
{
|
||||||
|
struct file *flist = nil, **aflist = &flist;
|
||||||
|
enum depth depth;
|
||||||
|
- struct winsize ws;
|
||||||
|
int i;
|
||||||
|
char *cp;
|
||||||
|
|
||||||
|
#ifdef __GLIBC__
|
||||||
|
putenv("POSIXLY_CORRECT=1");
|
||||||
|
#endif
|
||||||
|
- setlocale(LC_COLLATE, "");
|
||||||
|
- setlocale(LC_CTYPE, "");
|
||||||
|
- setlocale(LC_TIME, "");
|
||||||
|
#ifndef UCB
|
||||||
|
if (getenv("SYSV3") != NULL)
|
||||||
|
sysv3 = 1;
|
||||||
|
@@ -1624,16 +1597,6 @@ main(int argc, char **argv)
|
||||||
|
}
|
||||||
|
if (istty || isatty(1)) {
|
||||||
|
istty = 1;
|
||||||
|
-#if !defined (USE_TERMCAP)
|
||||||
|
- setupterm(NULL, 1, &tinfostat);
|
||||||
|
-#else /* USE_TERMCAP */
|
||||||
|
- {
|
||||||
|
- char buf[2048];
|
||||||
|
- if ((cp = getenv("TERM")) != NULL)
|
||||||
|
- if (tgetent(buf, cp) > 0)
|
||||||
|
- tinfostat = 1;
|
||||||
|
- }
|
||||||
|
-#endif /* USE_TERMCAP */
|
||||||
|
field |= FL_STATUS;
|
||||||
|
}
|
||||||
|
while ((i = getopt(argc, argv, personalities[personality].per_opt))
|
||||||
|
@@ -1753,12 +1716,6 @@ main(int argc, char **argv)
|
||||||
|
if ((cp = getenv("COLUMNS")) != NULL) {
|
||||||
|
ncols = atoi(cp);
|
||||||
|
} else if ((present('C') || present('x') || present('m')) && istty) {
|
||||||
|
- if (ioctl(1, TIOCGWINSZ, &ws) == 0 && ws.ws_col > 0)
|
||||||
|
- ncols = ws.ws_col - 1;
|
||||||
|
-#if !defined (USE_TERMCAP)
|
||||||
|
- else if (tinfostat == 1 && columns > 0)
|
||||||
|
- ncols = columns;
|
||||||
|
-#endif /* !USE_TERMCAP */
|
||||||
|
}
|
||||||
|
depth = SURFACE;
|
||||||
|
if (optind == argc) {
|
90
foundation/src/stages/stage1/heirloom/patches/utime.patch
Normal file
90
foundation/src/stages/stage1/heirloom/patches/utime.patch
Normal file
|
@ -0,0 +1,90 @@
|
||||||
|
--- copy/copy.c
|
||||||
|
+++ copy/copy.c
|
||||||
|
@@ -46,7 +46,6 @@ static const char sccsid[] USED = "@(#)copy.sl 1.15 (gritter) 5/29/05";
|
||||||
|
#include <libgen.h>
|
||||||
|
#include <limits.h>
|
||||||
|
#include <dirent.h>
|
||||||
|
-#include <utime.h>
|
||||||
|
#include <stdarg.h>
|
||||||
|
#include "sfile.h"
|
||||||
|
#include "memalign.h"
|
||||||
|
@@ -441,12 +440,6 @@ attribs(const char *dst, const struct stat *sp)
|
||||||
|
if (oflag && ((sp->st_mode&S_IFMT) == S_IFLNK ?
|
||||||
|
lchown:chown)(dst, sp->st_uid, sp->st_gid) < 0)
|
||||||
|
complain("Unable to chown %s", dst);
|
||||||
|
- if (mflag && (sp->st_mode&S_IFMT) != S_IFLNK) {
|
||||||
|
- struct utimbuf ut;
|
||||||
|
- ut.actime = sp->st_atime;
|
||||||
|
- ut.modtime = sp->st_mtime;
|
||||||
|
- utime(dst, &ut);
|
||||||
|
- }
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
--- cp/cp.c
|
||||||
|
+++ cp/cp.c
|
||||||
|
@@ -56,7 +56,6 @@ static const char sccsid[] USED = "@(#)cp.sl 1.84 (gritter) 3/4/06";
|
||||||
|
#include <libgen.h>
|
||||||
|
#include <limits.h>
|
||||||
|
#include <dirent.h>
|
||||||
|
-#include <utime.h>
|
||||||
|
#include "sfile.h"
|
||||||
|
#include "memalign.h"
|
||||||
|
#include "alloca.h"
|
||||||
|
@@ -354,18 +353,6 @@ permissions(const char *path, const struct stat *ssp)
|
||||||
|
|
||||||
|
mode = ssp->st_mode & 07777;
|
||||||
|
if (pflag) {
|
||||||
|
- struct utimbuf ut;
|
||||||
|
- ut.actime = ssp->st_atime;
|
||||||
|
- ut.modtime = ssp->st_mtime;
|
||||||
|
- if (utime(path, &ut) < 0) {
|
||||||
|
-#if defined (SUS) || defined (S42)
|
||||||
|
- fprintf(stderr, "%s: cannot set times for %s\n%s: %s\n",
|
||||||
|
- progname, path,
|
||||||
|
- progname, strerror(errno));
|
||||||
|
-#endif /* SUS || S42 */
|
||||||
|
- if (pers != PERS_MV)
|
||||||
|
- errcnt |= 010;
|
||||||
|
- }
|
||||||
|
if (myuid == 0) {
|
||||||
|
if (chown(path, ssp->st_uid, ssp->st_gid) < 0) {
|
||||||
|
#if defined (SUS) || defined (S42)
|
||||||
|
--- touch/touch.c
|
||||||
|
+++ touch/touch.c
|
||||||
|
@@ -47,7 +47,6 @@ static const char sccsid[] USED = "@(#)touch.sl 1.21 (gritter) 5/29/05";
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <errno.h>
|
||||||
|
#include <libgen.h>
|
||||||
|
-#include <utime.h>
|
||||||
|
#include <ctype.h>
|
||||||
|
#include <time.h>
|
||||||
|
|
||||||
|
@@ -80,7 +79,6 @@ static void
|
||||||
|
touch(const char *fn)
|
||||||
|
{
|
||||||
|
struct stat st;
|
||||||
|
- struct utimbuf ut;
|
||||||
|
|
||||||
|
if (stat(fn, &st) < 0) {
|
||||||
|
if (errno == ENOENT) {
|
||||||
|
@@ -113,19 +111,6 @@ touch(const char *fn)
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
- if (aflag)
|
||||||
|
- ut.actime = nacc;
|
||||||
|
- else
|
||||||
|
- ut.actime = st.st_atime;
|
||||||
|
- if (mflag)
|
||||||
|
- ut.modtime = nmod;
|
||||||
|
- else
|
||||||
|
- ut.modtime = st.st_mtime;
|
||||||
|
- if (utime(fn, nulltime ? NULL : &ut) < 0) {
|
||||||
|
- fprintf(stderr, "%s: cannot change times on %s\n",
|
||||||
|
- progname, fn);
|
||||||
|
- errcnt++;
|
||||||
|
- }
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
128
foundation/src/stages/stage1/heirloom/patches/vprintf.patch
Normal file
128
foundation/src/stages/stage1/heirloom/patches/vprintf.patch
Normal file
|
@ -0,0 +1,128 @@
|
||||||
|
--- cksum/cksum.c
|
||||||
|
+++ cksum/cksum.c
|
||||||
|
@@ -147,7 +147,7 @@ cksum(const char *name)
|
||||||
|
s = (s << 8) ^ crctab[(s >> 24) ^ c];
|
||||||
|
}
|
||||||
|
s = ~s;
|
||||||
|
- printf("%u %llu", (unsigned)s, nbytes);
|
||||||
|
+ printf("%u %lu", (unsigned)s, nbytes);
|
||||||
|
if(name)
|
||||||
|
printf(" %s", name);
|
||||||
|
printf("\n");
|
||||||
|
--- cmp/cmp.c
|
||||||
|
+++ cmp/cmp.c
|
||||||
|
@@ -246,8 +246,8 @@ different:
|
||||||
|
errcnt = 1;
|
||||||
|
} else {
|
||||||
|
if (sflag == 0)
|
||||||
|
- printf("%s %s differ: char %lld,"
|
||||||
|
- " line %lld\n",
|
||||||
|
+ printf("%s %s differ: char %ld,"
|
||||||
|
+ " line %ld\n",
|
||||||
|
f1->f_nam, f2->f_nam,
|
||||||
|
(long long)offset(f1),
|
||||||
|
line);
|
||||||
|
--- csplit/csplit.c
|
||||||
|
+++ csplit/csplit.c
|
||||||
|
@@ -284,7 +284,7 @@ csplit(const char *fn)
|
||||||
|
op = nextfile();
|
||||||
|
if (op) {
|
||||||
|
if (!sflag)
|
||||||
|
- printf("%lld\n", bytes);
|
||||||
|
+ printf("%ld\n", bytes);
|
||||||
|
bytes = 0;
|
||||||
|
fclose(op);
|
||||||
|
}
|
||||||
|
--- expr/expr.y
|
||||||
|
+++ expr/expr.y
|
||||||
|
@@ -140,7 +140,7 @@ expression: expr NOARG {
|
||||||
|
if (sus && numeric($1)) {
|
||||||
|
int64_t n;
|
||||||
|
n = atoll($1);
|
||||||
|
- printf("%lld\n", n);
|
||||||
|
+ printf("%ld\n", n);
|
||||||
|
exit(n == 0);
|
||||||
|
} else
|
||||||
|
puts($1);
|
||||||
|
@@ -447,10 +447,10 @@ numpr(int64_t val)
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
rv = smalloc(NUMSZ);
|
||||||
|
- ret = snprintf(rv, NUMSZ, "%lld", (long long)val);
|
||||||
|
+ ret = snprintf(rv, NUMSZ, "%ld", (long long)val);
|
||||||
|
if (ret < 0 || ret >= NUMSZ) {
|
||||||
|
rv = srealloc(rv, ret + 1);
|
||||||
|
- ret = snprintf(rv, ret, "%lld", (long long)val);
|
||||||
|
+ ret = snprintf(rv, ret, "%ld", (long long)val);
|
||||||
|
if (ret < 0)
|
||||||
|
yyerror("illegal number");
|
||||||
|
}
|
||||||
|
--- grep/Makefile.mk
|
||||||
|
+++ grep/Makefile.mk
|
||||||
|
@@ -92,7 +92,7 @@ config.h:
|
||||||
|
-echo 'long long foo;' >___build$$$$.c ; \
|
||||||
|
$(CC) $(CFLAGS2) $(CPPFLAGS) $(IWCHAR) $(ICOMMON) $(IUXRE) $(LARGEF) -c ___build$$$$.c >/dev/null 2>&1 ; \
|
||||||
|
if test $$? = 0 && test -f ___build$$$$.o ; \
|
||||||
|
- then echo '#define LONGLONG' >>config.h ; \
|
||||||
|
+ then echo '' >>config.h ; \
|
||||||
|
fi ; \
|
||||||
|
rm -f ___build$$$$.o ___build$$$$.c
|
||||||
|
|
||||||
|
--- ls/Makefile.mk
|
||||||
|
+++ ls/Makefile.mk
|
||||||
|
@@ -76,7 +76,7 @@ config.h:
|
||||||
|
-echo 'long long foo;' >___build$$$$.c ; \
|
||||||
|
$(CC) $(CFLAGS) $(CPPFLAGS) $(LARGEF) $(IWCHAR) -c ___build$$$$.c >/dev/null 2>&1 ; \
|
||||||
|
if test $$? = 0 && test -f ___build$$$$.o ; \
|
||||||
|
- then echo '#define LONGLONG' >>config.h ; \
|
||||||
|
+ then echo '' >>config.h ; \
|
||||||
|
fi ; \
|
||||||
|
rm -f ___build$$$$.o ___build$$$$.c
|
||||||
|
-echo '#include <sys/types.h>' >___build$$$$.c ; \
|
||||||
|
--- pr/pr.c
|
||||||
|
+++ pr/pr.c
|
||||||
|
@@ -548,7 +548,7 @@ print(const char *fp, const char **argp)
|
||||||
|
putcs(" ");
|
||||||
|
putcs(header);
|
||||||
|
snprintf(linebuf, sizeof linebuf,
|
||||||
|
- " Page %lld\n\n\n", page);
|
||||||
|
+ " Page %ld\n\n\n", page);
|
||||||
|
putcs(linebuf);
|
||||||
|
}
|
||||||
|
c = putpage();
|
||||||
|
--- sed/sed1.c
|
||||||
|
+++ sed/sed1.c
|
||||||
|
@@ -489,7 +489,7 @@ command(struct reptr *ipc)
|
||||||
|
break;
|
||||||
|
|
||||||
|
case EQCOM:
|
||||||
|
- fprintf(stdout, "%lld\n", lnum);
|
||||||
|
+ fprintf(stdout, "%ld\n", lnum);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case GCOM:
|
||||||
|
--- sum/sum.c
|
||||||
|
+++ sum/sum.c
|
||||||
|
@@ -116,7 +116,7 @@ sum(const char *name)
|
||||||
|
else {
|
||||||
|
s = (s & 0xFFFF) + (s >> 16);
|
||||||
|
s = (s & 0xFFFF) + (s >> 16);
|
||||||
|
- printf("%u %llu", (unsigned)s,
|
||||||
|
+ printf("%u %lu", (unsigned)s,
|
||||||
|
(unsigned long long)(nbytes+UNIT-1)/UNIT);
|
||||||
|
}
|
||||||
|
if(name)
|
||||||
|
--- wc/wc.c
|
||||||
|
+++ wc/wc.c
|
||||||
|
@@ -89,9 +89,9 @@ report(unsigned long long count)
|
||||||
|
#if defined (S42)
|
||||||
|
if (putspace++)
|
||||||
|
printf(" ");
|
||||||
|
- printf("%llu", count);
|
||||||
|
+ printf("%lu", count);
|
||||||
|
#else /* !S42 */
|
||||||
|
- printf("%7llu ", count);
|
||||||
|
+ printf("%7lu ", count);
|
||||||
|
#endif /* !S42 */
|
||||||
|
}
|
||||||
|
|
206
foundation/src/stages/stage1/heirloom/proctab.c
Normal file
206
foundation/src/stages/stage1/heirloom/proctab.c
Normal file
|
@ -0,0 +1,206 @@
|
||||||
|
#include <stdio.h>
|
||||||
|
#include "awk.h"
|
||||||
|
#include "y.tab.h"
|
||||||
|
|
||||||
|
static unsigned char *printname[92] = {
|
||||||
|
(unsigned char *) "FIRSTTOKEN", /* 258 */
|
||||||
|
(unsigned char *) "PROGRAM", /* 259 */
|
||||||
|
(unsigned char *) "PASTAT", /* 260 */
|
||||||
|
(unsigned char *) "PASTAT2", /* 261 */
|
||||||
|
(unsigned char *) "XBEGIN", /* 262 */
|
||||||
|
(unsigned char *) "XEND", /* 263 */
|
||||||
|
(unsigned char *) "NL", /* 264 */
|
||||||
|
(unsigned char *) "ARRAY", /* 265 */
|
||||||
|
(unsigned char *) "MATCH", /* 266 */
|
||||||
|
(unsigned char *) "NOTMATCH", /* 267 */
|
||||||
|
(unsigned char *) "MATCHOP", /* 268 */
|
||||||
|
(unsigned char *) "FINAL", /* 269 */
|
||||||
|
(unsigned char *) "DOT", /* 270 */
|
||||||
|
(unsigned char *) "ALL", /* 271 */
|
||||||
|
(unsigned char *) "CCL", /* 272 */
|
||||||
|
(unsigned char *) "NCCL", /* 273 */
|
||||||
|
(unsigned char *) "CHAR", /* 274 */
|
||||||
|
(unsigned char *) "MCHAR", /* 275 */
|
||||||
|
(unsigned char *) "OR", /* 276 */
|
||||||
|
(unsigned char *) "STAR", /* 277 */
|
||||||
|
(unsigned char *) "QUEST", /* 278 */
|
||||||
|
(unsigned char *) "PLUS", /* 279 */
|
||||||
|
(unsigned char *) "AND", /* 280 */
|
||||||
|
(unsigned char *) "BOR", /* 281 */
|
||||||
|
(unsigned char *) "APPEND", /* 282 */
|
||||||
|
(unsigned char *) "EQ", /* 283 */
|
||||||
|
(unsigned char *) "GE", /* 284 */
|
||||||
|
(unsigned char *) "GT", /* 285 */
|
||||||
|
(unsigned char *) "LE", /* 286 */
|
||||||
|
(unsigned char *) "LT", /* 287 */
|
||||||
|
(unsigned char *) "NE", /* 288 */
|
||||||
|
(unsigned char *) "IN", /* 289 */
|
||||||
|
(unsigned char *) "ARG", /* 290 */
|
||||||
|
(unsigned char *) "BLTIN", /* 291 */
|
||||||
|
(unsigned char *) "BREAK", /* 292 */
|
||||||
|
(unsigned char *) "CONTINUE", /* 293 */
|
||||||
|
(unsigned char *) "DELETE", /* 294 */
|
||||||
|
(unsigned char *) "DO", /* 295 */
|
||||||
|
(unsigned char *) "EXIT", /* 296 */
|
||||||
|
(unsigned char *) "FOR", /* 297 */
|
||||||
|
(unsigned char *) "FUNC", /* 298 */
|
||||||
|
(unsigned char *) "SUB", /* 299 */
|
||||||
|
(unsigned char *) "GSUB", /* 300 */
|
||||||
|
(unsigned char *) "IF", /* 301 */
|
||||||
|
(unsigned char *) "INDEX", /* 302 */
|
||||||
|
(unsigned char *) "LSUBSTR", /* 303 */
|
||||||
|
(unsigned char *) "MATCHFCN", /* 304 */
|
||||||
|
(unsigned char *) "NEXT", /* 305 */
|
||||||
|
(unsigned char *) "ADD", /* 306 */
|
||||||
|
(unsigned char *) "MINUS", /* 307 */
|
||||||
|
(unsigned char *) "MULT", /* 308 */
|
||||||
|
(unsigned char *) "DIVIDE", /* 309 */
|
||||||
|
(unsigned char *) "MOD", /* 310 */
|
||||||
|
(unsigned char *) "ASSIGN", /* 311 */
|
||||||
|
(unsigned char *) "ASGNOP", /* 312 */
|
||||||
|
(unsigned char *) "ADDEQ", /* 313 */
|
||||||
|
(unsigned char *) "SUBEQ", /* 314 */
|
||||||
|
(unsigned char *) "MULTEQ", /* 315 */
|
||||||
|
(unsigned char *) "DIVEQ", /* 316 */
|
||||||
|
(unsigned char *) "MODEQ", /* 317 */
|
||||||
|
(unsigned char *) "POWEQ", /* 318 */
|
||||||
|
(unsigned char *) "PRINT", /* 319 */
|
||||||
|
(unsigned char *) "PRINTF", /* 320 */
|
||||||
|
(unsigned char *) "SPRINTF", /* 321 */
|
||||||
|
(unsigned char *) "ELSE", /* 322 */
|
||||||
|
(unsigned char *) "INTEST", /* 323 */
|
||||||
|
(unsigned char *) "CONDEXPR", /* 324 */
|
||||||
|
(unsigned char *) "POSTINCR", /* 325 */
|
||||||
|
(unsigned char *) "PREINCR", /* 326 */
|
||||||
|
(unsigned char *) "POSTDECR", /* 327 */
|
||||||
|
(unsigned char *) "PREDECR", /* 328 */
|
||||||
|
(unsigned char *) "VAR", /* 329 */
|
||||||
|
(unsigned char *) "IVAR", /* 330 */
|
||||||
|
(unsigned char *) "VARNF", /* 331 */
|
||||||
|
(unsigned char *) "CALL", /* 332 */
|
||||||
|
(unsigned char *) "NUMBER", /* 333 */
|
||||||
|
(unsigned char *) "STRING", /* 334 */
|
||||||
|
(unsigned char *) "FIELD", /* 335 */
|
||||||
|
(unsigned char *) "REGEXPR", /* 336 */
|
||||||
|
(unsigned char *) "GETLINE", /* 337 */
|
||||||
|
(unsigned char *) "RETURN", /* 338 */
|
||||||
|
(unsigned char *) "SPLIT", /* 339 */
|
||||||
|
(unsigned char *) "SUBSTR", /* 340 */
|
||||||
|
(unsigned char *) "WHILE", /* 341 */
|
||||||
|
(unsigned char *) "CAT", /* 342 */
|
||||||
|
(unsigned char *) "NOT", /* 343 */
|
||||||
|
(unsigned char *) "UMINUS", /* 344 */
|
||||||
|
(unsigned char *) "POWER", /* 345 */
|
||||||
|
(unsigned char *) "DECR", /* 346 */
|
||||||
|
(unsigned char *) "INCR", /* 347 */
|
||||||
|
(unsigned char *) "INDIRECT", /* 348 */
|
||||||
|
(unsigned char *) "LASTTOKEN", /* 349 */
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
Cell *(*proctab[92])(Node **, int) = {
|
||||||
|
nullproc, /* FIRSTTOKEN */
|
||||||
|
program, /* PROGRAM */
|
||||||
|
pastat, /* PASTAT */
|
||||||
|
dopa2, /* PASTAT2 */
|
||||||
|
nullproc, /* XBEGIN */
|
||||||
|
nullproc, /* XEND */
|
||||||
|
nullproc, /* NL */
|
||||||
|
array, /* ARRAY */
|
||||||
|
matchop, /* MATCH */
|
||||||
|
matchop, /* NOTMATCH */
|
||||||
|
nullproc, /* MATCHOP */
|
||||||
|
nullproc, /* FINAL */
|
||||||
|
nullproc, /* DOT */
|
||||||
|
nullproc, /* ALL */
|
||||||
|
nullproc, /* CCL */
|
||||||
|
nullproc, /* NCCL */
|
||||||
|
nullproc, /* CHAR */
|
||||||
|
nullproc, /* MCHAR */
|
||||||
|
nullproc, /* OR */
|
||||||
|
nullproc, /* STAR */
|
||||||
|
nullproc, /* QUEST */
|
||||||
|
nullproc, /* PLUS */
|
||||||
|
boolop, /* AND */
|
||||||
|
boolop, /* BOR */
|
||||||
|
nullproc, /* APPEND */
|
||||||
|
relop, /* EQ */
|
||||||
|
relop, /* GE */
|
||||||
|
relop, /* GT */
|
||||||
|
relop, /* LE */
|
||||||
|
relop, /* LT */
|
||||||
|
relop, /* NE */
|
||||||
|
instat, /* IN */
|
||||||
|
arg, /* ARG */
|
||||||
|
bltin, /* BLTIN */
|
||||||
|
jump, /* BREAK */
|
||||||
|
jump, /* CONTINUE */
|
||||||
|
delete, /* DELETE */
|
||||||
|
dostat, /* DO */
|
||||||
|
jump, /* EXIT */
|
||||||
|
forstat, /* FOR */
|
||||||
|
nullproc, /* FUNC */
|
||||||
|
sub, /* SUB */
|
||||||
|
gsub, /* GSUB */
|
||||||
|
ifstat, /* IF */
|
||||||
|
sindex, /* INDEX */
|
||||||
|
nullproc, /* LSUBSTR */
|
||||||
|
matchop, /* MATCHFCN */
|
||||||
|
jump, /* NEXT */
|
||||||
|
arith, /* ADD */
|
||||||
|
arith, /* MINUS */
|
||||||
|
arith, /* MULT */
|
||||||
|
arith, /* DIVIDE */
|
||||||
|
arith, /* MOD */
|
||||||
|
assign, /* ASSIGN */
|
||||||
|
nullproc, /* ASGNOP */
|
||||||
|
assign, /* ADDEQ */
|
||||||
|
assign, /* SUBEQ */
|
||||||
|
assign, /* MULTEQ */
|
||||||
|
assign, /* DIVEQ */
|
||||||
|
assign, /* MODEQ */
|
||||||
|
assign, /* POWEQ */
|
||||||
|
print, /* PRINT */
|
||||||
|
aprintf, /* PRINTF */
|
||||||
|
awsprintf, /* SPRINTF */
|
||||||
|
nullproc, /* ELSE */
|
||||||
|
intest, /* INTEST */
|
||||||
|
condexpr, /* CONDEXPR */
|
||||||
|
incrdecr, /* POSTINCR */
|
||||||
|
incrdecr, /* PREINCR */
|
||||||
|
incrdecr, /* POSTDECR */
|
||||||
|
incrdecr, /* PREDECR */
|
||||||
|
nullproc, /* VAR */
|
||||||
|
nullproc, /* IVAR */
|
||||||
|
getnf, /* VARNF */
|
||||||
|
call, /* CALL */
|
||||||
|
nullproc, /* NUMBER */
|
||||||
|
nullproc, /* STRING */
|
||||||
|
nullproc, /* FIELD */
|
||||||
|
nullproc, /* REGEXPR */
|
||||||
|
getline, /* GETLINE */
|
||||||
|
jump, /* RETURN */
|
||||||
|
split, /* SPLIT */
|
||||||
|
substr, /* SUBSTR */
|
||||||
|
whilestat, /* WHILE */
|
||||||
|
cat, /* CAT */
|
||||||
|
boolop, /* NOT */
|
||||||
|
arith, /* UMINUS */
|
||||||
|
arith, /* POWER */
|
||||||
|
nullproc, /* DECR */
|
||||||
|
nullproc, /* INCR */
|
||||||
|
indirect, /* INDIRECT */
|
||||||
|
nullproc, /* LASTTOKEN */
|
||||||
|
};
|
||||||
|
|
||||||
|
unsigned char *tokname(int n)
|
||||||
|
{
|
||||||
|
static unsigned char buf[100];
|
||||||
|
|
||||||
|
if (n < FIRSTTOKEN || n > LASTTOKEN) {
|
||||||
|
snprintf((char *)buf, sizeof buf, "token %d", n);
|
||||||
|
return buf;
|
||||||
|
}
|
||||||
|
return printname[n-257];
|
||||||
|
}
|
||||||
|
|
64
foundation/src/stages/stage1/heirloom/stubs.h
Normal file
64
foundation/src/stages/stage1/heirloom/stubs.h
Normal file
|
@ -0,0 +1,64 @@
|
||||||
|
#include <getopt.h>
|
||||||
|
extern int optopt;
|
||||||
|
|
||||||
|
int ftruncate(int fd, int offset) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
int getsid (int pid) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int isblank(int c)
|
||||||
|
{
|
||||||
|
return c == ' ' || c == '\t';
|
||||||
|
}
|
||||||
|
|
||||||
|
#define lchown chown
|
||||||
|
|
||||||
|
// meslibc implements lstat but is missing declaration
|
||||||
|
#include <sys/stat.h>
|
||||||
|
int lstat (char const *file_name, struct stat *statbuf);
|
||||||
|
|
||||||
|
#include <fcntl.h>
|
||||||
|
int mkstemp(char *t)
|
||||||
|
{
|
||||||
|
mktemp(t);
|
||||||
|
int fd = open(t, O_CREAT|O_RDWR|O_TRUNC, 0600);
|
||||||
|
return fd;
|
||||||
|
}
|
||||||
|
|
||||||
|
int putenv(char *string)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
char* realpath (char* path, char* resolved) {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
#define strncasecmp(a,b,n) strncmp(strupr(a),strupr(b),n)
|
||||||
|
|
||||||
|
|
||||||
|
#define nlink_t unsigned long
|
||||||
|
|
||||||
|
#include <limits.h>
|
||||||
|
#define USHRT_MAX UINT16_MAX
|
||||||
|
#define SSIZE_MAX LONG_MAX
|
||||||
|
#define MB_LEN_MAX 1
|
||||||
|
|
||||||
|
#define EPERM 1
|
||||||
|
#define ESRCH 3
|
||||||
|
#define EDOM 33
|
||||||
|
#define S_IFSOCK 0140000
|
||||||
|
#define S_ISVTX 01000
|
||||||
|
#define S_IREAD S_IRUSR
|
||||||
|
#define S_IWRITE S_IWUSR
|
||||||
|
#define S_IEXEC S_IXUSR
|
||||||
|
|
||||||
|
#define _PC_PATH_MAX PATH_MAX
|
||||||
|
#define _PC_VDISABLE 8
|
||||||
|
#define _POSIX_PATH_MAX PATH_MAX
|
||||||
|
#define LINE_MAX 4096
|
||||||
|
|
||||||
|
#define LC_TIME 0
|
Loading…
Reference in a new issue