da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# CDDL HEADER START
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# The contents of this file are subject to the terms of the
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# Common Development and Distribution License (the "License").
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# You may not use this file except in compliance with the License.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# or http://www.opensolaris.org/os/licensing.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# See the License for the specific language governing permissions
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# and limitations under the License.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# When distributing Covered Code, include this CDDL HEADER in each
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# If applicable, add the following below this CDDL HEADER, with the
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# fields enclosed by brackets "[]" replaced with your own identifying
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# information: Portions Copyright [yyyy] [name of copyright owner]
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# CDDL HEADER END
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner# Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# ERRATA.txt
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin# Errata/problems/notes about problems in the current sources
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin######## Errata #001: ########
7c2fbfb345896881c631598ee3852ce9ce33fb07April ChinThe usage of |posix_spawn()| has been manually disabled because there seems to be a
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chinrace condition which cases sporadic failures like this:
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz-- snip --
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin$ builtin | fgrep sum | fgrep sum
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin/usr/ast/bin/sum
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin/usr/bin/sum
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin$ builtin | fgrep sum | fgrep sum
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chinfgrep: fgrep: cannot execute [Exec format error]
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin-- snip --.
7c2fbfb345896881c631598ee3852ce9ce33fb07April ChinThe following files have been changed:
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin-- snip --
7c2fbfb345896881c631598ee3852ce9ce33fb07April ChinIndex: src/lib/libast/sparcv9/include/ast/ast_lib.h
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin===================================================================
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz--- usr/src/lib/libast/sparcv9/include/ast/ast_lib.h (revision 888)
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+++ usr/src/lib/libast/sparcv9/include/ast/ast_lib.h (working copy)
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin@@ -160,7 +160,7 @@
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin #define _hdr_unistd 1 /* #include <unistd.h> ok */
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin #define _lib_vfork 1 /* vfork exists and it works */
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin #define _real_vfork 1 /* vfork child shares data with parent */
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin-#define _lib_posix_spawn 2 /* posix_spawn exists and it works and its worth using */
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin+#define _lib_posix_spawn 1 /* posix_spawn exists and it works and its worth using */
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin #define _stream_peek 1 /* ioctl(I_PEEK) works */
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin #define _socket_peek 1 /* recv(MSG_PEEK) works */
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin #define _hdr_string 1 /* #include <string.h> ok */
7c2fbfb345896881c631598ee3852ce9ce33fb07April ChinIndex: src/lib/libast/sparcv9/src/lib/libast/ast_lib.h
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin===================================================================
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz--- usr/src/lib/libast/sparcv9/src/lib/libast/ast_lib.h (revision 888)
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+++ usr/src/lib/libast/sparcv9/src/lib/libast/ast_lib.h (working copy)
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin@@ -139,7 +139,7 @@
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin #define _hdr_unistd 1 /* #include <unistd.h> ok */
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin #define _lib_vfork 1 /* vfork exists and it works */
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin #define _real_vfork 1 /* vfork child shares data with parent */
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin-#define _lib_posix_spawn 2 /* posix_spawn exists and it works and its worth using */
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin+#define _lib_posix_spawn 1 /* posix_spawn exists and it works and its worth using */
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin #define _stream_peek 1 /* ioctl(I_PEEK) works */
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin #define _socket_peek 1 /* recv(MSG_PEEK) works */
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin #define _hdr_string 1 /* #include <string.h> ok */
7c2fbfb345896881c631598ee3852ce9ce33fb07April ChinIndex: src/lib/libast/sparcv9/src/lib/libast/FEATURE/lib
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin===================================================================
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz--- usr/src/lib/libast/sparcv9/src/lib/libast/FEATURE/lib (revision 888)
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+++ usr/src/lib/libast/sparcv9/src/lib/libast/FEATURE/lib (working copy)
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin@@ -139,7 +139,7 @@
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin #define _hdr_unistd 1 /* #include <unistd.h> ok */
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin #define _lib_vfork 1 /* vfork exists and it works */
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin #define _real_vfork 1 /* vfork child shares data with parent */
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin-#define _lib_posix_spawn 2 /* posix_spawn exists and it works and its worth using */
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin+#define _lib_posix_spawn 1 /* posix_spawn exists and it works and its worth using */
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin #define _stream_peek 1 /* ioctl(I_PEEK) works */
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin #define _socket_peek 1 /* recv(MSG_PEEK) works */
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin #define _hdr_string 1 /* #include <string.h> ok */
7c2fbfb345896881c631598ee3852ce9ce33fb07April ChinIndex: src/lib/libast/sparc/include/ast/ast_lib.h
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin===================================================================
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz--- usr/src/lib/libast/sparc/include/ast/ast_lib.h (revision 888)
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+++ usr/src/lib/libast/sparc/include/ast/ast_lib.h (working copy)
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin@@ -171,7 +171,7 @@
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin #define _hdr_unistd 1 /* #include <unistd.h> ok */
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin #define _lib_vfork 1 /* vfork exists and it works */
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin #define _real_vfork 1 /* vfork child shares data with parent */
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin-#define _lib_posix_spawn 2 /* posix_spawn exists and it works and its worth using */
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin+#define _lib_posix_spawn 1 /* posix_spawn exists and it works and its worth using */
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin #define _stream_peek 1 /* ioctl(I_PEEK) works */
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin #define _socket_peek 1 /* recv(MSG_PEEK) works */
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin #define _hdr_string 1 /* #include <string.h> ok */
7c2fbfb345896881c631598ee3852ce9ce33fb07April ChinIndex: src/lib/libast/sparc/src/lib/libast/ast_lib.h
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin===================================================================
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz--- usr/src/lib/libast/sparc/src/lib/libast/ast_lib.h (revision 888)
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+++ usr/src/lib/libast/sparc/src/lib/libast/ast_lib.h (working copy)
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin@@ -150,7 +150,7 @@
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin #define _hdr_unistd 1 /* #include <unistd.h> ok */
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin #define _lib_vfork 1 /* vfork exists and it works */
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin #define _real_vfork 1 /* vfork child shares data with parent */
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin-#define _lib_posix_spawn 2 /* posix_spawn exists and it works and its worth using */
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin+#define _lib_posix_spawn 1 /* posix_spawn exists and it works and its worth using */
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin #define _stream_peek 1 /* ioctl(I_PEEK) works */
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin #define _socket_peek 1 /* recv(MSG_PEEK) works */
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin #define _hdr_string 1 /* #include <string.h> ok */
7c2fbfb345896881c631598ee3852ce9ce33fb07April ChinIndex: src/lib/libast/sparc/src/lib/libast/FEATURE/lib
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin===================================================================
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz--- usr/src/lib/libast/sparc/src/lib/libast/FEATURE/lib (revision 888)
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+++ usr/src/lib/libast/sparc/src/lib/libast/FEATURE/lib (working copy)
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin@@ -150,7 +150,7 @@
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin #define _hdr_unistd 1 /* #include <unistd.h> ok */
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin #define _lib_vfork 1 /* vfork exists and it works */
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin #define _real_vfork 1 /* vfork child shares data with parent */
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin-#define _lib_posix_spawn 2 /* posix_spawn exists and it works and its worth using */
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin+#define _lib_posix_spawn 1 /* posix_spawn exists and it works and its worth using */
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin #define _stream_peek 1 /* ioctl(I_PEEK) works */
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin #define _socket_peek 1 /* recv(MSG_PEEK) works */
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin #define _hdr_string 1 /* #include <string.h> ok */
7c2fbfb345896881c631598ee3852ce9ce33fb07April ChinIndex: src/lib/libast/i386/include/ast/ast_lib.h
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin===================================================================
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz--- usr/src/lib/libast/i386/include/ast/ast_lib.h (revision 888)
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+++ usr/src/lib/libast/i386/include/ast/ast_lib.h (working copy)
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin@@ -171,7 +171,7 @@
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin #define _hdr_unistd 1 /* #include <unistd.h> ok */
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin #define _lib_vfork 1 /* vfork exists and it works */
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin #define _real_vfork 1 /* vfork child shares data with parent */
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin-#define _lib_posix_spawn 2 /* posix_spawn exists and it works and its worth using */
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin+#define _lib_posix_spawn 1 /* posix_spawn exists and it works and its worth using */
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin #define _stream_peek 1 /* ioctl(I_PEEK) works */
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin #define _socket_peek 1 /* recv(MSG_PEEK) works */
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin #define _hdr_string 1 /* #include <string.h> ok */
7c2fbfb345896881c631598ee3852ce9ce33fb07April ChinIndex: src/lib/libast/i386/src/lib/libast/ast_lib.h
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin===================================================================
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz--- usr/src/lib/libast/i386/src/lib/libast/ast_lib.h (revision 888)
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+++ usr/src/lib/libast/i386/src/lib/libast/ast_lib.h (working copy)
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin@@ -150,7 +150,7 @@
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin #define _hdr_unistd 1 /* #include <unistd.h> ok */
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin #define _lib_vfork 1 /* vfork exists and it works */
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin #define _real_vfork 1 /* vfork child shares data with parent */
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin-#define _lib_posix_spawn 2 /* posix_spawn exists and it works and its worth using */
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin+#define _lib_posix_spawn 1 /* posix_spawn exists and it works and its worth using */
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin #define _stream_peek 1 /* ioctl(I_PEEK) works */
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin #define _socket_peek 1 /* recv(MSG_PEEK) works */
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin #define _hdr_string 1 /* #include <string.h> ok */
7c2fbfb345896881c631598ee3852ce9ce33fb07April ChinIndex: src/lib/libast/i386/src/lib/libast/FEATURE/lib
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin===================================================================
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz--- usr/src/lib/libast/i386/src/lib/libast/FEATURE/lib (revision 888)
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+++ usr/src/lib/libast/i386/src/lib/libast/FEATURE/lib (working copy)
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin@@ -150,7 +150,7 @@
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin #define _hdr_unistd 1 /* #include <unistd.h> ok */
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin #define _lib_vfork 1 /* vfork exists and it works */
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin #define _real_vfork 1 /* vfork child shares data with parent */
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin-#define _lib_posix_spawn 2 /* posix_spawn exists and it works and its worth using */
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin+#define _lib_posix_spawn 1 /* posix_spawn exists and it works and its worth using */
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin #define _stream_peek 1 /* ioctl(I_PEEK) works */
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin #define _socket_peek 1 /* recv(MSG_PEEK) works */
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin #define _hdr_string 1 /* #include <string.h> ok */
7c2fbfb345896881c631598ee3852ce9ce33fb07April ChinIndex: src/lib/libast/amd64/include/ast/ast_lib.h
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin===================================================================
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz--- usr/src/lib/libast/amd64/include/ast/ast_lib.h (revision 888)
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+++ usr/src/lib/libast/amd64/include/ast/ast_lib.h (working copy)
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin@@ -160,7 +160,7 @@
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin #define _hdr_unistd 1 /* #include <unistd.h> ok */
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin #define _lib_vfork 1 /* vfork exists and it works */
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin #define _real_vfork 1 /* vfork child shares data with parent */
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin-#define _lib_posix_spawn 2 /* posix_spawn exists and it works and its worth using */
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin+#define _lib_posix_spawn 1 /* posix_spawn exists and it works and its worth using */
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin #define _stream_peek 1 /* ioctl(I_PEEK) works */
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin #define _socket_peek 1 /* recv(MSG_PEEK) works */
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin #define _hdr_string 1 /* #include <string.h> ok */
7c2fbfb345896881c631598ee3852ce9ce33fb07April ChinIndex: src/lib/libast/amd64/src/lib/libast/ast_lib.h
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin===================================================================
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz--- usr/src/lib/libast/amd64/src/lib/libast/ast_lib.h (revision 888)
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+++ usr/src/lib/libast/amd64/src/lib/libast/ast_lib.h (working copy)
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin@@ -139,7 +139,7 @@
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin #define _hdr_unistd 1 /* #include <unistd.h> ok */
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin #define _lib_vfork 1 /* vfork exists and it works */
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin #define _real_vfork 1 /* vfork child shares data with parent */
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin-#define _lib_posix_spawn 2 /* posix_spawn exists and it works and its worth using */
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin+#define _lib_posix_spawn 1 /* posix_spawn exists and it works and its worth using */
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin #define _stream_peek 1 /* ioctl(I_PEEK) works */
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin #define _socket_peek 1 /* recv(MSG_PEEK) works */
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin #define _hdr_string 1 /* #include <string.h> ok */
7c2fbfb345896881c631598ee3852ce9ce33fb07April ChinIndex: src/lib/libast/amd64/src/lib/libast/FEATURE/lib
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin===================================================================
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz--- usr/src/lib/libast/amd64/src/lib/libast/FEATURE/lib (revision 888)
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+++ usr/src/lib/libast/amd64/src/lib/libast/FEATURE/lib (working copy)
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin@@ -139,7 +139,7 @@
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin #define _hdr_unistd 1 /* #include <unistd.h> ok */
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin #define _lib_vfork 1 /* vfork exists and it works */
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin #define _real_vfork 1 /* vfork child shares data with parent */
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin-#define _lib_posix_spawn 2 /* posix_spawn exists and it works and its worth using */
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin+#define _lib_posix_spawn 1 /* posix_spawn exists and it works and its worth using */
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin #define _stream_peek 1 /* ioctl(I_PEEK) works */
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin #define _socket_peek 1 /* recv(MSG_PEEK) works */
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin #define _hdr_string 1 /* #include <string.h> ok */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin-- snip --
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin######## Errata #002: ########
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland MainzThe usage of |mmap()| has been manually enabled to improve I/O performance.
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland MainzThe following files have been changed:
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz-- snip --
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland MainzIndex: usr/src/lib/libast/sparcv9/include/ast/ast_mmap.h
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz===================================================================
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz--- usr/src/lib/libast/sparcv9/include/ast/ast_mmap.h (revision 1701)
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+++ usr/src/lib/libast/sparcv9/include/ast/ast_mmap.h (working copy)
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz@@ -28,6 +28,7 @@
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz #define _lib_mmap64 1 /* mmap64 interface and implementation work */
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz #define _mmap_anon 1 /* use mmap MAP_ANON to get raw memory */
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz #define _mmap_devzero 1 /* use mmap on /dev/zero to get raw memory */
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+#define _mmap_worthy 2 /* mmap is good */
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz /* some systems get it wrong but escape concise detection */
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz #ifndef _NO_MMAP
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland MainzIndex: usr/src/lib/libast/sparcv9/src/lib/libast/ast_mmap.h
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz===================================================================
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz--- usr/src/lib/libast/sparcv9/src/lib/libast/ast_mmap.h (revision 1701)
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+++ usr/src/lib/libast/sparcv9/src/lib/libast/ast_mmap.h (working copy)
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz@@ -7,6 +7,7 @@
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz #define _lib_mmap64 1 /* mmap64 interface and implementation work */
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz #define _mmap_anon 1 /* use mmap MAP_ANON to get raw memory */
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz #define _mmap_devzero 1 /* use mmap on /dev/zero to get raw memory */
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+#define _mmap_worthy 2 /* mmap is good */
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz /* some systems get it wrong but escape concise detection */
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz #ifndef _NO_MMAP
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland MainzIndex: usr/src/lib/libast/sparcv9/src/lib/libast/FEATURE/mmap
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz===================================================================
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz--- usr/src/lib/libast/sparcv9/src/lib/libast/FEATURE/mmap (revision 1701)
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+++ usr/src/lib/libast/sparcv9/src/lib/libast/FEATURE/mmap (working copy)
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz@@ -7,6 +7,7 @@
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz #define _lib_mmap64 1 /* mmap64 interface and implementation work */
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz #define _mmap_anon 1 /* use mmap MAP_ANON to get raw memory */
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz #define _mmap_devzero 1 /* use mmap on /dev/zero to get raw memory */
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+#define _mmap_worthy 2 /* mmap is good */
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz /* some systems get it wrong but escape concise detection */
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz #ifndef _NO_MMAP
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland MainzIndex: usr/src/lib/libast/sparc/include/ast/ast_mmap.h
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz===================================================================
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz--- usr/src/lib/libast/sparc/include/ast/ast_mmap.h (revision 1701)
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+++ usr/src/lib/libast/sparc/include/ast/ast_mmap.h (working copy)
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz@@ -28,7 +28,7 @@
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz #define _lib_mmap64 1 /* mmap64 interface and implementation work */
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz #define _mmap_anon 1 /* use mmap MAP_ANON to get raw memory */
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz #define _mmap_devzero 1 /* use mmap on /dev/zero to get raw memory */
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz-#define _mmap_worthy 1 /* mmap is good */
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+#define _mmap_worthy 2 /* mmap is good */
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz /* some systems get it wrong but escape concise detection */
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz #ifndef _NO_MMAP
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland MainzIndex: usr/src/lib/libast/sparc/src/lib/libast/ast_mmap.h
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz===================================================================
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz--- usr/src/lib/libast/sparc/src/lib/libast/ast_mmap.h (revision 1701)
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+++ usr/src/lib/libast/sparc/src/lib/libast/ast_mmap.h (working copy)
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz@@ -7,7 +7,7 @@
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz #define _lib_mmap64 1 /* mmap64 interface and implementation work */
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz #define _mmap_anon 1 /* use mmap MAP_ANON to get raw memory */
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz #define _mmap_devzero 1 /* use mmap on /dev/zero to get raw memory */
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz-#define _mmap_worthy 1 /* mmap is good */
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+#define _mmap_worthy 2 /* mmap is good */
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz /* some systems get it wrong but escape concise detection */
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz #ifndef _NO_MMAP
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland MainzIndex: usr/src/lib/libast/sparc/src/lib/libast/FEATURE/mmap
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz===================================================================
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz--- usr/src/lib/libast/sparc/src/lib/libast/FEATURE/mmap (revision 1701)
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+++ usr/src/lib/libast/sparc/src/lib/libast/FEATURE/mmap (working copy)
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz@@ -7,7 +7,7 @@
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz #define _lib_mmap64 1 /* mmap64 interface and implementation work */
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz #define _mmap_anon 1 /* use mmap MAP_ANON to get raw memory */
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz #define _mmap_devzero 1 /* use mmap on /dev/zero to get raw memory */
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz-#define _mmap_worthy 1 /* mmap is good */
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+#define _mmap_worthy 2 /* mmap is good */
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz /* some systems get it wrong but escape concise detection */
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz #ifndef _NO_MMAP
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland MainzIndex: usr/src/lib/libast/i386/include/ast/ast_mmap.h
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz===================================================================
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz--- usr/src/lib/libast/i386/include/ast/ast_mmap.h (revision 1701)
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+++ usr/src/lib/libast/i386/include/ast/ast_mmap.h (working copy)
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz@@ -28,6 +28,7 @@
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz #define _lib_mmap64 1 /* mmap64 interface and implementation work */
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz #define _mmap_anon 1 /* use mmap MAP_ANON to get raw memory */
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz #define _mmap_devzero 1 /* use mmap on /dev/zero to get raw memory */
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+#define _mmap_worthy 2 /* mmap is good */
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz /* some systems get it wrong but escape concise detection */
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz #ifndef _NO_MMAP
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland MainzIndex: usr/src/lib/libast/i386/src/lib/libast/ast_mmap.h
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz===================================================================
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz--- usr/src/lib/libast/i386/src/lib/libast/ast_mmap.h (revision 1701)
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+++ usr/src/lib/libast/i386/src/lib/libast/ast_mmap.h (working copy)
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz@@ -7,6 +7,7 @@
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz #define _lib_mmap64 1 /* mmap64 interface and implementation work */
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz #define _mmap_anon 1 /* use mmap MAP_ANON to get raw memory */
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz #define _mmap_devzero 1 /* use mmap on /dev/zero to get raw memory */
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+#define _mmap_worthy 2 /* mmap is good */
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz /* some systems get it wrong but escape concise detection */
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz #ifndef _NO_MMAP
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland MainzIndex: usr/src/lib/libast/i386/src/lib/libast/FEATURE/mmap
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz===================================================================
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz--- usr/src/lib/libast/i386/src/lib/libast/FEATURE/mmap (revision 1701)
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+++ usr/src/lib/libast/i386/src/lib/libast/FEATURE/mmap (working copy)
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz@@ -7,6 +7,7 @@
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz #define _lib_mmap64 1 /* mmap64 interface and implementation work */
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz #define _mmap_anon 1 /* use mmap MAP_ANON to get raw memory */
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz #define _mmap_devzero 1 /* use mmap on /dev/zero to get raw memory */
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+#define _mmap_worthy 2 /* mmap is good */
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz /* some systems get it wrong but escape concise detection */
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz #ifndef _NO_MMAP
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland MainzIndex: usr/src/lib/libast/amd64/include/ast/ast_mmap.h
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz===================================================================
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz--- usr/src/lib/libast/amd64/include/ast/ast_mmap.h (revision 1701)
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+++ usr/src/lib/libast/amd64/include/ast/ast_mmap.h (working copy)
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz@@ -28,6 +28,7 @@
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz #define _lib_mmap64 1 /* mmap64 interface and implementation work */
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz #define _mmap_anon 1 /* use mmap MAP_ANON to get raw memory */
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz #define _mmap_devzero 1 /* use mmap on /dev/zero to get raw memory */
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+#define _mmap_worthy 2 /* mmap is good */
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz /* some systems get it wrong but escape concise detection */
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz #ifndef _NO_MMAP
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland MainzIndex: usr/src/lib/libast/amd64/src/lib/libast/ast_mmap.h
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz===================================================================
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz--- usr/src/lib/libast/amd64/src/lib/libast/ast_mmap.h (revision 1701)
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+++ usr/src/lib/libast/amd64/src/lib/libast/ast_mmap.h (working copy)
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz@@ -7,6 +7,7 @@
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz #define _lib_mmap64 1 /* mmap64 interface and implementation work */
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz #define _mmap_anon 1 /* use mmap MAP_ANON to get raw memory */
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz #define _mmap_devzero 1 /* use mmap on /dev/zero to get raw memory */
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+#define _mmap_worthy 2 /* mmap is good */
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz /* some systems get it wrong but escape concise detection */
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz #ifndef _NO_MMAP
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland MainzIndex: usr/src/lib/libast/amd64/src/lib/libast/FEATURE/mmap
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz===================================================================
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz--- usr/src/lib/libast/amd64/src/lib/libast/FEATURE/mmap (revision 1701)
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+++ usr/src/lib/libast/amd64/src/lib/libast/FEATURE/mmap (working copy)
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz@@ -7,6 +7,7 @@
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz #define _lib_mmap64 1 /* mmap64 interface and implementation work */
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz #define _mmap_anon 1 /* use mmap MAP_ANON to get raw memory */
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz #define _mmap_devzero 1 /* use mmap on /dev/zero to get raw memory */
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+#define _mmap_worthy 2 /* mmap is good */
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz /* some systems get it wrong but escape concise detection */
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz #ifndef _NO_MMAP
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz-- snip --
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz######## Errata #003: ########
7c2fbfb345896881c631598ee3852ce9ce33fb07April ChinA workaround was added for a problem with the "multiline" editor mode which
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chinoccurs when the edit line becomes longer than the terminal's width and the
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chinterminal cursor is not at position 0 when PS1 is send to the terminal.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
7c2fbfb345896881c631598ee3852ce9ce33fb07April ChinFor example: The user executes a $ printf "foo"<enter> # the prompt will start
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chinat position 3 instead of 0. If the user enters a command which is longer than
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chinthe terminal width and then removes enougth characters that the edit line fits
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chinagain into one line the "foo" at the beginning will be overwritten with the
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chinprompt.
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin
7c2fbfb345896881c631598ee3852ce9ce33fb07April ChinThe workaround is to add $(printf "%*s\r%s" COLUMNS "") at the beginning of
7c2fbfb345896881c631598ee3852ce9ce33fb07April ChinPS1 set by /etc/ksh.kshrc, this causes the shell to move to the beginning
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chinof the next line if the terminal cursor is not at position 0.
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz######## Errata #004: ########
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland MainzThe POSIX "cksum"/CRC and AT&T "sum" codepaths in libsum have been reworked
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainzand then backpoprted to address a performance regression on some
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainzmachine/architecture combinations.
81af778e872fc2ec5f0ac36e7b25bdb24ebd2d6aCasper H.S. DikThe following files have been changed:
81af778e872fc2ec5f0ac36e7b25bdb24ebd2d6aCasper H.S. Dik-- snip --
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland MainzIndex: usr/src/lib/libsum/common/sum-crc.c
81af778e872fc2ec5f0ac36e7b25bdb24ebd2d6aCasper H.S. Dik===================================================================
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz--- usr/src/lib/libsum/common/sum-crc.c (revision 1724)
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+++ usr/src/lib/libsum/common/sum-crc.c (working copy)
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz@@ -48,7 +48,8 @@
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz Crcnum_t init;
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz Crcnum_t done;
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz Crcnum_t xorsize;
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz- Crcnum_t tab[256];
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ const Crcnum_t *tab; /* use |const| to give the compiler a hint that the data won't change */
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ Crcnum_t tabdata[256];
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz unsigned int addsize;
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz unsigned int rotate;
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz } Crc_t;
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz@@ -56,6 +57,62 @@
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz #define CRC(p,s,c) (s = (s >> 8) ^ (p)->tab[(s ^ (c)) & 0xff])
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz #define CRCROTATE(p,s,c) (s = (s << 8) ^ (p)->tab[((s >> 24) ^ (c)) & 0xff])
81af778e872fc2ec5f0ac36e7b25bdb24ebd2d6aCasper H.S. Dik
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+static const
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+Crcnum_t posix_cksum_tab[256] = {
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ 0x00000000U,
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ 0x04c11db7U, 0x09823b6eU, 0x0d4326d9U, 0x130476dcU, 0x17c56b6bU,
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ 0x1a864db2U, 0x1e475005U, 0x2608edb8U, 0x22c9f00fU, 0x2f8ad6d6U,
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ 0x2b4bcb61U, 0x350c9b64U, 0x31cd86d3U, 0x3c8ea00aU, 0x384fbdbdU,
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ 0x4c11db70U, 0x48d0c6c7U, 0x4593e01eU, 0x4152fda9U, 0x5f15adacU,
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ 0x5bd4b01bU, 0x569796c2U, 0x52568b75U, 0x6a1936c8U, 0x6ed82b7fU,
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ 0x639b0da6U, 0x675a1011U, 0x791d4014U, 0x7ddc5da3U, 0x709f7b7aU,
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ 0x745e66cdU, 0x9823b6e0U, 0x9ce2ab57U, 0x91a18d8eU, 0x95609039U,
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ 0x8b27c03cU, 0x8fe6dd8bU, 0x82a5fb52U, 0x8664e6e5U, 0xbe2b5b58U,
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ 0xbaea46efU, 0xb7a96036U, 0xb3687d81U, 0xad2f2d84U, 0xa9ee3033U,
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ 0xa4ad16eaU, 0xa06c0b5dU, 0xd4326d90U, 0xd0f37027U, 0xddb056feU,
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ 0xd9714b49U, 0xc7361b4cU, 0xc3f706fbU, 0xceb42022U, 0xca753d95U,
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ 0xf23a8028U, 0xf6fb9d9fU, 0xfbb8bb46U, 0xff79a6f1U, 0xe13ef6f4U,
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ 0xe5ffeb43U, 0xe8bccd9aU, 0xec7dd02dU, 0x34867077U, 0x30476dc0U,
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ 0x3d044b19U, 0x39c556aeU, 0x278206abU, 0x23431b1cU, 0x2e003dc5U,
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ 0x2ac12072U, 0x128e9dcfU, 0x164f8078U, 0x1b0ca6a1U, 0x1fcdbb16U,
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ 0x018aeb13U, 0x054bf6a4U, 0x0808d07dU, 0x0cc9cdcaU, 0x7897ab07U,
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ 0x7c56b6b0U, 0x71159069U, 0x75d48ddeU, 0x6b93dddbU, 0x6f52c06cU,
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ 0x6211e6b5U, 0x66d0fb02U, 0x5e9f46bfU, 0x5a5e5b08U, 0x571d7dd1U,
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ 0x53dc6066U, 0x4d9b3063U, 0x495a2dd4U, 0x44190b0dU, 0x40d816baU,
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ 0xaca5c697U, 0xa864db20U, 0xa527fdf9U, 0xa1e6e04eU, 0xbfa1b04bU,
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ 0xbb60adfcU, 0xb6238b25U, 0xb2e29692U, 0x8aad2b2fU, 0x8e6c3698U,
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ 0x832f1041U, 0x87ee0df6U, 0x99a95df3U, 0x9d684044U, 0x902b669dU,
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ 0x94ea7b2aU, 0xe0b41de7U, 0xe4750050U, 0xe9362689U, 0xedf73b3eU,
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ 0xf3b06b3bU, 0xf771768cU, 0xfa325055U, 0xfef34de2U, 0xc6bcf05fU,
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ 0xc27dede8U, 0xcf3ecb31U, 0xcbffd686U, 0xd5b88683U, 0xd1799b34U,
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ 0xdc3abdedU, 0xd8fba05aU, 0x690ce0eeU, 0x6dcdfd59U, 0x608edb80U,
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ 0x644fc637U, 0x7a089632U, 0x7ec98b85U, 0x738aad5cU, 0x774bb0ebU,
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ 0x4f040d56U, 0x4bc510e1U, 0x46863638U, 0x42472b8fU, 0x5c007b8aU,
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ 0x58c1663dU, 0x558240e4U, 0x51435d53U, 0x251d3b9eU, 0x21dc2629U,
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ 0x2c9f00f0U, 0x285e1d47U, 0x36194d42U, 0x32d850f5U, 0x3f9b762cU,
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ 0x3b5a6b9bU, 0x0315d626U, 0x07d4cb91U, 0x0a97ed48U, 0x0e56f0ffU,
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ 0x1011a0faU, 0x14d0bd4dU, 0x19939b94U, 0x1d528623U, 0xf12f560eU,
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ 0xf5ee4bb9U, 0xf8ad6d60U, 0xfc6c70d7U, 0xe22b20d2U, 0xe6ea3d65U,
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ 0xeba91bbcU, 0xef68060bU, 0xd727bbb6U, 0xd3e6a601U, 0xdea580d8U,
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ 0xda649d6fU, 0xc423cd6aU, 0xc0e2d0ddU, 0xcda1f604U, 0xc960ebb3U,
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ 0xbd3e8d7eU, 0xb9ff90c9U, 0xb4bcb610U, 0xb07daba7U, 0xae3afba2U,
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ 0xaafbe615U, 0xa7b8c0ccU, 0xa379dd7bU, 0x9b3660c6U, 0x9ff77d71U,
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ 0x92b45ba8U, 0x9675461fU, 0x8832161aU, 0x8cf30badU, 0x81b02d74U,
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ 0x857130c3U, 0x5d8a9099U, 0x594b8d2eU, 0x5408abf7U, 0x50c9b640U,
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ 0x4e8ee645U, 0x4a4ffbf2U, 0x470cdd2bU, 0x43cdc09cU, 0x7b827d21U,
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ 0x7f436096U, 0x7200464fU, 0x76c15bf8U, 0x68860bfdU, 0x6c47164aU,
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ 0x61043093U, 0x65c52d24U, 0x119b4be9U, 0x155a565eU, 0x18197087U,
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ 0x1cd86d30U, 0x029f3d35U, 0x065e2082U, 0x0b1d065bU, 0x0fdc1becU,
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ 0x3793a651U, 0x3352bbe6U, 0x3e119d3fU, 0x3ad08088U, 0x2497d08dU,
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ 0x2056cd3aU, 0x2d15ebe3U, 0x29d4f654U, 0xc5a92679U, 0xc1683bceU,
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ 0xcc2b1d17U, 0xc8ea00a0U, 0xd6ad50a5U, 0xd26c4d12U, 0xdf2f6bcbU,
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ 0xdbee767cU, 0xe3a1cbc1U, 0xe760d676U, 0xea23f0afU, 0xeee2ed18U,
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ 0xf0a5bd1dU, 0xf464a0aaU, 0xf9278673U, 0xfde69bc4U, 0x89b8fd09U,
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ 0x8d79e0beU, 0x803ac667U, 0x84fbdbd0U, 0x9abc8bd5U, 0x9e7d9662U,
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ 0x933eb0bbU, 0x97ffad0cU, 0xafb010b1U, 0xab710d06U, 0xa6322bdfU,
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ 0xa2f33668U, 0xbcb4666dU, 0xb8757bdaU, 0xb5365d03U, 0xb1f740b4U
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+};
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz static Sum_t*
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz crc_open(const Method_t* method, const char* name)
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz {
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz@@ -73,62 +130,80 @@
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz sum->method = (Method_t*)method;
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz sum->name = name;
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz }
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz- polynomial = 0xedb88320;
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz- s = name;
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz- while (*(t = s))
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ if(!strcmp(name, "crc-0x04c11db7-rotate-done-size"))
81af778e872fc2ec5f0ac36e7b25bdb24ebd2d6aCasper H.S. Dik {
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz- for (t = s, v = 0; *s && *s != '-'; s++)
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz- if (*s == '=' && !v)
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz- v = s;
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz- i = (v ? v : s) - t;
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz- if (isdigit(*t) || v && i >= 4 && strneq(t, "poly", 4) && (t = v + 1))
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz- polynomial = strtoul(t, NiL, 0);
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz- else if (strneq(t, "done", i))
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz- sum->done = v ? strtoul(v + 1, NiL, 0) : ~sum->done;
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz- else if (strneq(t, "init", i))
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz- sum->init = v ? strtoul(v + 1, NiL, 0) : ~sum->init;
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz- else if (strneq(t, "rotate", i))
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz- sum->rotate = 1;
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz- else if (strneq(t, "size", i))
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz- {
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz- sum->addsize = 1;
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz- if (v)
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz- sum->xorsize = strtoul(v + 1, NiL, 0);
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz- }
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz- if (*s == '-')
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz- s++;
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ sum->init=0;
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ sum->done=0xffffffff;
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ sum->xorsize=0x0;
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ sum->addsize=0x1;
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ sum->rotate=1;
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ /* Optimized codepath for POSIX cksum to save startup time */
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ sum->tab=posix_cksum_tab;
81af778e872fc2ec5f0ac36e7b25bdb24ebd2d6aCasper H.S. Dik }
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz- if (sum->rotate)
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ else
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz {
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz- Crcnum_t t;
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz- Crcnum_t p[8];
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz-
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz- p[0] = polynomial;
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz- for (i = 1; i < 8; i++)
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz- p[i] = (p[i-1] << 1) ^ ((p[i-1] & 0x80000000) ? polynomial : 0);
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz- for (i = 0; i < elementsof(sum->tab); i++)
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ polynomial = 0xedb88320;
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ s = name;
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ while (*(t = s))
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz {
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz- t = 0;
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz- x = i;
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz- for (j = 0; j < 8; j++)
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ for (t = s, v = 0; *s && *s != '-'; s++)
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ if (*s == '=' && !v)
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ v = s;
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ i = (v ? v : s) - t;
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ if (isdigit(*t) || v && i >= 4 && strneq(t, "poly", 4) && (t = v + 1))
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ polynomial = strtoul(t, NiL, 0);
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ else if (strneq(t, "done", i))
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ sum->done = v ? strtoul(v + 1, NiL, 0) : ~sum->done;
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ else if (strneq(t, "init", i))
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ sum->init = v ? strtoul(v + 1, NiL, 0) : ~sum->init;
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ else if (strneq(t, "rotate", i))
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ sum->rotate = 1;
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ else if (strneq(t, "size", i))
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz {
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz- if (x & 1)
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz- t ^= p[j];
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz- x >>= 1;
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ sum->addsize = 1;
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ if (v)
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ sum->xorsize = strtoul(v + 1, NiL, 0);
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz }
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz- sum->tab[i] = t;
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ if (*s == '-')
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ s++;
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz }
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz- }
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz- else
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz- {
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz- for (i = 0; i < elementsof(sum->tab); i++)
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ if (sum->rotate)
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz {
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz- x = i;
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz- for (j = 0; j < 8; j++)
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz- x = (x>>1) ^ ((x & 1) ? polynomial : 0);
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz- sum->tab[i] = x;
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ Crcnum_t t;
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ Crcnum_t p[8];
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ p[0] = polynomial;
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ for (i = 1; i < 8; i++)
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ p[i] = (p[i-1] << 1) ^ ((p[i-1] & 0x80000000) ? polynomial : 0);
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ for (i = 0; i < elementsof(sum->tabdata); i++)
81af778e872fc2ec5f0ac36e7b25bdb24ebd2d6aCasper H.S. Dik+ {
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ t = 0;
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ x = i;
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ for (j = 0; j < 8; j++)
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ {
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ if (x & 1)
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ t ^= p[j];
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ x >>= 1;
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ }
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ sum->tabdata[i] = t;
81af778e872fc2ec5f0ac36e7b25bdb24ebd2d6aCasper H.S. Dik+ }
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz }
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ else
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ {
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ for (i = 0; i < elementsof(sum->tabdata); i++)
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ {
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ x = i;
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ for (j = 0; j < 8; j++)
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ x = (x>>1) ^ ((x & 1) ? polynomial : 0);
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ sum->tabdata[i] = x;
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ }
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ }
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ sum->tab=sum->tabdata;
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz }
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz return (Sum_t*)sum;
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz }
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz@@ -141,11 +216,77 @@
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz return 0;
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz }
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+#if defined(__SUNPRO_C) || defined(__GNUC__)
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+#if defined(__SUNPRO_C)
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+# include <sun_prefetch.h>
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+# define sum_prefetch(addr) sun_prefetch_read_many((void *)(addr))
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+#elif defined(__GNUC__)
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+# define sum_prefetch(addr) __builtin_prefetch((addr), 0, 3)
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+#else
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+# error Unknown compiler
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+#endif
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+#define CBLOCK_SIZE (64)
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+#pragma unroll(16)
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz static int
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz crc_block(Sum_t* p, const void* s, size_t n)
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz {
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz Crc_t* sum = (Crc_t*)p;
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz register Crcnum_t c = sum->sum;
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ register const unsigned char* b = (const unsigned char*)s;
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ register const unsigned char* e = b + n;
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ unsigned short i;
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ sum_prefetch(b);
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ if (sum->rotate)
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ {
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ while (n > CBLOCK_SIZE)
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ {
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ sum_prefetch(b+CBLOCK_SIZE);
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ for(i=0 ; i < CBLOCK_SIZE ; i++)
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ {
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ CRCROTATE(sum, c, *b++);
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ }
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ n-=CBLOCK_SIZE;
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ }
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ while (b < e)
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ {
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ CRCROTATE(sum, c, *b++);
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ }
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ }
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ else
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ {
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ while (n > CBLOCK_SIZE)
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ {
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ sum_prefetch(b+CBLOCK_SIZE);
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ for(i=0 ; i < CBLOCK_SIZE ; i++)
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ {
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ CRC(sum, c, *b++);
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ }
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ n-=CBLOCK_SIZE;
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ }
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ while (b < e)
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ {
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ CRC(sum, c, *b++);
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ }
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ }
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ sum->sum = c;
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ return 0;
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+}
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+#else
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+static int
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+crc_block(Sum_t* p, const void* s, size_t n)
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+{
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ Crc_t* sum = (Crc_t*)p;
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ register Crcnum_t c = sum->sum;
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz register unsigned char* b = (unsigned char*)s;
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz register unsigned char* e = b + n;
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz@@ -158,6 +299,7 @@
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz sum->sum = c;
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz return 0;
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz }
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+#endif /* defined(__SUNPRO_C) || defined(__GNUC__) */
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz static int
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz crc_done(Sum_t* p)
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland MainzIndex: usr/src/lib/libsum/common/sum-att.c
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz===================================================================
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz--- usr/src/lib/libsum/common/sum-att.c (revision 1724)
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+++ usr/src/lib/libsum/common/sum-att.c (working copy)
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz@@ -35,10 +35,73 @@
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz #define att_data long_data
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz #define att_scale 512
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+#if defined(__SUNPRO_C) || defined(__GNUC__)
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+#if defined(__SUNPRO_C)
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+# include <sun_prefetch.h>
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+# define sum_prefetch(addr) sun_prefetch_read_many((void *)(addr))
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+#elif defined(__GNUC__)
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+# define sum_prefetch(addr) __builtin_prefetch((addr), 0, 3)
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+#else
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+# error Unknown compiler
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+#endif
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+#define CBLOCK_SIZE (64)
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+#pragma unroll(16)
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+/* Inmos transputer would love this algorithm */
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz static int
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz att_block(register Sum_t* p, const void* s, size_t n)
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz {
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz register uint32_t c = ((Integral_t*)p)->sum;
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ register const unsigned char* b = (const unsigned char*)s;
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ register const unsigned char* e = b + n;
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ register uint32_t s0, s1, s2, s3, s4, s5, s6, s7;
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ register unsigned int i;
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ s0=s1=s2=s3=s4=s5=s6=s7=0U;
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ sum_prefetch((void *)b);
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ while (n > CBLOCK_SIZE)
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ {
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ sum_prefetch((b+CBLOCK_SIZE));
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ /* Compiler will unroll for() loops per #pragma unroll */
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ for (i=0 ; i < (CBLOCK_SIZE/8) ; i++)
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ {
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ /*
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ * use s0-s7 to decouple calculations (this improves pipelining)
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ * because each operation is completely independent from it's
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ * siblings
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ */
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ s0+=b[0];
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ s1+=b[1];
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ s2+=b[2];
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ s3+=b[3];
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ s4+=b[4];
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ s5+=b[5];
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ s6+=b[6];
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ s7+=b[7];
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ b+=8;
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ n-=8;
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ }
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ }
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ c+=s0+s1+s2+s3+s4+s5+s6+s7;
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ while (b < e)
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ c += *b++;
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ ((Integral_t*)p)->sum = c;
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ return 0;
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+}
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+#else
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+static int
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+att_block(register Sum_t* p, const void* s, size_t n)
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+{
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+ register uint32_t c = ((Integral_t*)p)->sum;
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz register unsigned char* b = (unsigned char*)s;
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz register unsigned char* e = b + n;
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz@@ -47,6 +110,7 @@
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz ((Integral_t*)p)->sum = c;
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz return 0;
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz }
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz+#endif /* defined(__SUNPRO_C) || defined(__GNUC__) */
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz static int
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz att_done(Sum_t* p)
9a6f360e750e0b14fc9b9bf8347e0ebad3959e3fCasper H.S. Dik-- snip --
9a6f360e750e0b14fc9b9bf8347e0ebad3959e3fCasper H.S. Dik
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner######## Errata #005: ########
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. FaulknerA fix for an off-by-one buffer overflow in the regex expression cache
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulknerhas been backported.
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. FaulknerThe following files have been changed:
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner-- snip --
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. FaulknerIndex: usr/src/lib/libast/common/regex/regcache.c
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner===================================================================
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner--- usr/src/lib/libast/common/regex/regcache.c (revision 1821)
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner+++ usr/src/lib/libast/common/regex/regcache.c (working copy)
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner@@ -166,7 +166,7 @@
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner cp->keep = 0;
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner regfree(&cp->re);
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner }
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner- if ((i = strlen(pattern)) >= cp->size)
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner+ if ((i = strlen(pattern) + 1) >= cp->size)
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner {
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner cp->size = roundof(i, ROUND);
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner if (!(cp->pattern = newof(cp->pattern, char, cp->size, 0)))
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner-- snip --
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner######## Errata #006: ########
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. FaulknerA fix for an issue with tail -f becoming stuck after a few 1000 lines
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulknerhas been backported:
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. FaulknerThe following files have been changed:
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner-- snip --
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. FaulknerIndex: usr/src/lib/libcmd/common/tail.c
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner===================================================================
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner--- usr/src/lib/libcmd/common/tail.c (revision 1822)
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner+++ usr/src/lib/libcmd/common/tail.c (working copy)
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner@@ -28,7 +28,7 @@
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner */
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner static const char usage[] =
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner-"+[-?\n@(#)$Id: tail (AT&T Research) 2010-03-07 $\n]"
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner+"+[-?\n@(#)$Id: tail (AT&T Research) 2010-03-23 $\n]"
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner USAGE_LICENSE
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner "[+NAME?tail - output trailing portion of one or more files ]"
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner "[+DESCRIPTION?\btail\b copies one or more input files to standard output "
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner@@ -647,16 +647,14 @@
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner error(ERROR_system(0), "%s: cannot stat", fp->name);
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner else if (fp->fifo || fp->end < st.st_size)
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner {
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner- fp->end = st.st_size;
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner n = 1;
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner if (timeout)
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner fp->expire = NOW + timeout;
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner- z = fp->fifo ? SF_UNBOUND : fp->end - fp->cur;
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner+ z = fp->fifo ? SF_UNBOUND : st.st_size - fp->cur;
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner i = 0;
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner if ((s = sfreserve(fp->sp, z, SF_LOCKR)) || (z = sfvalue(fp->sp)) && (s = sfreserve(fp->sp, z, SF_LOCKR)) && (i = 1))
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner {
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner- if (fp->fifo)
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner- z = sfvalue(fp->sp);
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner+ z = sfvalue(fp->sp);
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner for (r = s + z; r > s && *(r - 1) != '\n'; r--);
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner if ((w = r - s) || i && (w = z))
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner {
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner@@ -672,6 +670,7 @@
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner else
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner w = 0;
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner sfread(fp->sp, s, w);
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner+ fp->end += w;
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner }
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner goto next;
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner }
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner-- snip --
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner######## Errata #007: ########
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. FaulknerA warning for shcomp -n has been backported from ksh93 version 'u' to
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulknerhandle the possible loss of precision in (( var=$var2 )) vs.
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner(( var=var2 )):
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. FaulknerThe following files have been changed:
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner-- snip --
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. FaulknerIndex: usr/src/lib/libshell/common/sh/parse.c
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner===================================================================
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner--- usr/src/lib/libshell/common/sh/parse.c (revision 1822)
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner+++ usr/src/lib/libshell/common/sh/parse.c (working copy)
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner@@ -247,6 +247,34 @@
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner return(par);
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner }
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner+static int paramsub(const char *str)
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner+{
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner+ register int c,sub=0,lit=0;
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner+ while(c= *str++)
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner+ {
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner+ if(c=='$' && !lit)
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner+ {
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner+ if(*str=='(')
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner+ return(0);
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner+ if(sub)
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner+ continue;
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner+ if(*str=='{')
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner+ str++;
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner+ if(!isdigit(*str) && strchr("?#@*!$ ",*str)==0)
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner+ return(1);
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner+ }
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner+ else if(c=='`')
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner+ return(0);
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner+ else if(c=='[' && !lit)
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner+ sub++;
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner+ else if(c==']' && !lit)
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner+ sub--;
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner+ else if(c=='\'')
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner+ lit = !lit;
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner+ }
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner+ return(0);
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner+}
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner+
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner static Shnode_t *getanode(Lex_t *lp, struct argnod *ap)
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner {
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner register Shnode_t *t = getnode(arithnod);
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner@@ -256,7 +284,11 @@
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner if(ap->argflag&ARG_RAW)
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner t->ar.arcomp = sh_arithcomp(ap->argval);
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner else
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner+ {
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner+ if(sh_isoption(SH_NOEXEC) && (ap->argflag&ARG_MAC) && paramsub(ap->argval))
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner+ errormsg(SH_DICT,ERROR_warn(0),"%d: parameter substitution requires unnecessary string to number conversion",lp->sh->inlineno-(lp->token=='\n'));
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner t->ar.arcomp = 0;
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner+ }
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner return(t);
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner }
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner-- snip --
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner######## Errata #008: ########
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. FaulknerA fix for an issue with a Sun Studio warning has been backported:
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. FaulknerThe following files have been changed:
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner-- snip --
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. FaulknerIndex: usr/src/lib/libast/common/path/pathtemp.c
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner===================================================================
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner--- usr/src/lib/libast/common/path/pathtemp.c (revision 1822)
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner+++ usr/src/lib/libast/common/path/pathtemp.c (working copy)
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner@@ -297,7 +297,7 @@
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner */
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner tmp.pid = getpid();
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner- tmp.rng = (uint32_t)tmp.pid * ((uint32_t)time(NiL) ^ (((uint32_t)(&attempt)) >> 3) ^ (((uint32_t)tmp.dir) >> 3));
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner+ tmp.rng = (uintptr_t)tmp.pid * ((uintptr_t)time(NiL) ^ (((uintptr_t)(&attempt)) >> 3) ^ (((uintptr_t)tmp.dir) >> 3));
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner if (!tmp.key)
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner tmp.key = (tmp.rng >> 16) | ((tmp.rng & 0xffff) << 16);
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner tmp.rng ^= tmp.key;
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner-- snip --
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner######## Errata #009: ########
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. FaulknerA fix for an issue with a typeset -p having problems with compound
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulknervariables and typeset -a -C loosing the -C attribute has been
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulknerbackported from ksh93 version "u-":
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner-- snip --
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. FaulknerIndex: usr/src/lib/libshell/common/bltins/typeset.c
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner===================================================================
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner--- usr/src/lib/libshell/common/bltins/typeset.c (revision 1863)
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner+++ usr/src/lib/libshell/common/bltins/typeset.c (working copy)
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner@@ -540,7 +540,12 @@
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner else if(nv_isnull(np))
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner nv_onattr(np,NV_ARRAY|(comvar?NV_NOFREE:0));
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner else
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner+ {
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner+ Namarr_t *ap=nv_arrayptr(np);
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner+ if(ap && comvar)
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner+ ap->nelem |= ARRAY_TREE;
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner nv_putsub(np, (char*)0, 0);
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner+ }
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner }
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner else if(nvflags&NV_ARRAY)
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner {
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. FaulknerIndex: usr/src/lib/libshell/common/sh/nvtree.c
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner===================================================================
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner--- usr/src/lib/libshell/common/sh/nvtree.c (revision 1863)
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner+++ usr/src/lib/libshell/common/sh/nvtree.c (working copy)
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner@@ -69,6 +69,7 @@
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner static Namval_t *create_tree(Namval_t *np,const char *name,int flag,Namfun_t *dp)
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner {
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner register Namfun_t *fp=dp;
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner+ fp->dsize = 0;
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner while(fp=fp->next)
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner {
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner if(fp->disc && fp->disc->createf)
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner@@ -723,7 +724,10 @@
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner nv_attribute(np,wp->out,"typeset",'=');
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner nv_outname(wp->out,name,-1);
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner if((np->nvalue.cp && np->nvalue.cp!=Empty) || nv_isattr(np,~(NV_MINIMAL|NV_NOFREE)) || nv_isvtree(np))
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner- sfputc(wp->out,(isarray==2?'\n':'='));
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner+ {
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner+ if(wp->indent>=0 || isarray!=2)
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner+ sfputc(wp->out,(isarray==2?'\n':'='));
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner+ }
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner if(isarray==2)
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner return;
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner }
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner@@ -1015,7 +1019,7 @@
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner */
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner char *nv_getvtree(register Namval_t *np, Namfun_t *fp)
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner {
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner- int flags=0;
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner+ int flags=0, dsize=fp->dsize;
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner for(; fp && fp->next; fp=fp->next)
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner {
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner if(fp->next->disc && (fp->next->disc->getnum || fp->next->disc->getval))
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner@@ -1027,6 +1031,8 @@
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner return(nv_getv(np,fp));
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner if(flags = nv_isattr(np,NV_EXPORT))
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner nv_offattr(np,NV_EXPORT);
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner+ if(dsize && (flags&NV_EXPORT))
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner+ return("()");
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner return(walk_tree(np,(Namval_t*)0,flags));
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner }
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner@@ -1083,6 +1089,7 @@
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner return;
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner nfp = newof(NIL(void*),Namfun_t,1,0);
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner nfp->disc = &treedisc;
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner+ nfp->dsize = sizeof(Namfun_t);
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner nv_stack(np, nfp);
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner }
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. FaulknerIndex: usr/src/lib/libshell/common/sh/array.c
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner===================================================================
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner--- usr/src/lib/libshell/common/sh/array.c (revision 1863)
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner+++ usr/src/lib/libshell/common/sh/array.c (working copy)
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner@@ -923,9 +923,10 @@
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner if(array_isbit(aq->bits, dot,ARRAY_CHILD))
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner {
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner Namval_t *mp = aq->val[dot].np;
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner- if((aq->header.nelem&ARRAY_NOCHILD) && nv_isvtree(mp))
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner+ if((aq->header.nelem&ARRAY_NOCHILD) && nv_isvtree(mp) && !mp->nvfun->dsize)
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner continue;
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner- nv_putsub(mp,NIL(char*),ARRAY_UNDEF);
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner+ if(nv_isarray(mp))
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner+ nv_putsub(mp,NIL(char*),ARRAY_UNDEF);
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner }
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner return(1);
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner }
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. FaulknerIndex: usr/src/lib/libshell/common/sh/name.c
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner===================================================================
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner--- usr/src/lib/libshell/common/sh/name.c (revision 1863)
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner+++ usr/src/lib/libshell/common/sh/name.c (working copy)
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner@@ -538,7 +538,11 @@
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner }
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner if(!nv_isarray(np) && !typ && (tp->com.comarg || !tp->com.comset || tp->com.comset->argval[0]!='['))
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner+ {
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner nv_setvtree(np);
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner+ if(tp->com.comarg || tp->com.comset)
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner+ np->nvfun->dsize = 0;
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner+ }
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner #if SHOPT_TYPEDEF
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner goto check_type;
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner #else
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner-- snip --
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz# EOF.