]> Cypherpunks repositories - gostls13.git/commitdiff
mkall.sh, mkerrors.sh: work more broadly
authorRuss Cox <rsc@golang.org>
Fri, 24 Sep 2010 17:37:02 +0000 (13:37 -0400)
committerRuss Cox <rsc@golang.org>
Fri, 24 Sep 2010 17:37:02 +0000 (13:37 -0400)
work on FreeBSD even without /usr/src/sys.
work on systems where gcc -static is broken.

TBR so I can test my semi-automated z builder.

TBR=adg
CC=golang-dev
https://golang.org/cl/2215046

src/pkg/syscall/mkall.sh
src/pkg/syscall/mkerrors.sh

index 7013120b980df864382b8064c099fa727a05503e..fbc066fd477619694f4df785611b8dcc02de697c 100755 (executable)
@@ -102,12 +102,12 @@ _* | *_ | _)
 freebsd_386)
        mkerrors="$mkerrors -f -m32"
        mksyscall="./mksyscall.sh -l32"
-       mksysnum="./mksysnum_freebsd.sh /usr/src/sys/kern/syscalls.master"
+       mksysnum="curl -s 'http://svn.freebsd.org/viewvc/base/head/sys/kern/syscalls.master?view=markup' | ./mksysnum_freebsd.sh"
        mktypes="godefs -gsyscall -f-m32"
        ;;
 freebsd_amd64)
        mkerrors="$mkerrors -f -m64"
-       mksysnum="./mksysnum_freebsd.sh /usr/src/sys/kern/syscalls.master"
+       mksysnum="curl -s 'http://svn.freebsd.org/viewvc/base/head/sys/kern/syscalls.master?view=markup' | ./mksysnum_freebsd.sh"
        mktypes="godefs -gsyscall -f-m64"
        ;;
 darwin_386)
index 05c8e8da34a40696d3af3876702518ac7b566596..b3ed0f627e741edfd91ec4ba0eb4f1fc4f7f20c7 100755 (executable)
@@ -134,6 +134,12 @@ int errors[] = {
        /bin/echo '
 };
 
+static int
+intcmp(const void *a, const void *b)
+{
+       return *(int*)a - *(int*)b;
+}
+
 int
 main(void)
 {
@@ -142,17 +148,16 @@ main(void)
 
        printf("\n\n// Error table\n");
        printf("var errors = [...]string {\n");
+       qsort(errors, nelem(errors), sizeof errors[0], intcmp);
        for(i=0; i<nelem(errors); i++) {
                e = errors[i];
-               for(j=0; j<i; j++)
-                       if(errors[j] == e)      // duplicate value
-                               goto next;
+               if(i > 0 && errors[i-1] == e)
+                       continue;
                strcpy(buf, strerror(e));
                // lowercase first letter: Bad -> bad, but STREAM -> STREAM.
                if(A <= buf[0] && buf[0] <= Z && a <= buf[1] && buf[1] <= z)
                        buf[0] += a - A;
                printf("\t%d: \"%s\",\n", e, buf);
-       next:;
        }
        printf("}\n\n");
        return 0;
@@ -161,4 +166,4 @@ main(void)
 '
 ) >_errors.c
 
-$GCC $ccflags -static -o _errors _errors.c && $GORUN ./_errors && rm -f _errors.c _errors _const.c
+$GCC $ccflags -o _errors _errors.c && $GORUN ./_errors && rm -f _errors.c _errors _const.c