PERFORCE change 114805 for review
Todd Miller
millert at FreeBSD.org
Wed Feb 21 15:28:22 UTC 2007
http://perforce.freebsd.org/chv.cgi?CH=114805
Change 114805 by millert at millert_p4 on 2007/02/21 15:27:45
Remove dependence on gawk
Affected files ...
.. //depot/projects/trustedbsd/sebsd/contrib/sebsd/refpolicy/policy/flask/Makefile#2 edit
.. //depot/projects/trustedbsd/sebsd/contrib/sebsd/refpolicy/policy/flask/mkaccess_vector.sh#2 edit
Differences ...
==== //depot/projects/trustedbsd/sebsd/contrib/sebsd/refpolicy/policy/flask/Makefile#2 (text+ko) ====
@@ -4,7 +4,7 @@
# flask needs to know where to export the kernel headers.
LINUXDIR ?= ../../../linux-2.6
-AWK = gawk
+AWK = awk
CONFIG_SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \
else if [ -x /bin/bash ]; then echo /bin/bash; \
==== //depot/projects/trustedbsd/sebsd/contrib/sebsd/refpolicy/policy/flask/mkaccess_vector.sh#2 (text+ko) ====
@@ -15,6 +15,23 @@
av_perm_to_string="av_perm_to_string.h"
cat $* | $awk "
+ # Quicksort function for awk arrays, from The AWK Programming
+ # Language, by Aho, Kernighan and Weinberger.
+ # Call qsort(array, smallestindex, largestindex)
+ function qsort(a,left,right, i,last) {
+ if (left >= right) return
+ swap(a, left, left + int((right-left+1)*rand()))
+ last = left
+ for (i=left+1; i<=right; i++)
+ if (a[i] < a[left]) swap(a, ++last, i)
+ swap(a, left, last)
+ qsort(a, left, last-1)
+ qsort(a, last+1, right)
+ }
+ function swap(a,i,j, t) {
+ t = a[i]; a[i] = a[j]; a[j] = t;
+ }
+
BEGIN {
outfile = \"$av_permissions\"
inheritfile = \"$av_inherit\"
@@ -102,12 +119,12 @@
}
}
- j = 1;
+ n = 0;
for (i in inherited_perms) {
- ind[j] = i + 0;
- j++;
+ n++;
+ ind[n] = i + 0;
}
- n = asort(ind);
+ qsort(ind, 1, n);
for (i = 1; i <= n; i++) {
perm = inherited_perms[ind[i]];
printf("#define %s__%s", toupper(tclass), toupper(perm)) > outfile;
@@ -118,7 +135,6 @@
printf(" ") > outfile;
printf("0x%08xUL\n", ind[i]) > outfile;
}
- printf("\n") > outfile;
for (i in ind) delete ind[i];
for (i in inherited_perms) delete inherited_perms[i];
@@ -214,8 +230,6 @@
printf("TE_(common_%s_perm_to_string)\n\n", common_name) > cpermfile;
}
- printf("\n") > outfile;
-
nextstate = "COMMON_OR_AV";
}
END {
More information about the p4-projects
mailing list