aboutsummaryrefslogtreecommitdiffstats
path: root/pkg/csource/csource.go
diff options
context:
space:
mode:
authorMark Johnston <markjdb@gmail.com>2019-03-06 20:32:44 -0500
committerDmitry Vyukov <dvyukov@google.com>2019-03-07 19:46:55 +0100
commitc08c1cd05c3c8e0cf6b24a0425f058c6555b82cc (patch)
tree5398f4d613b6ba2d95b614e35a3c00d3b259657c /pkg/csource/csource.go
parent2eb2cd93e0d0050ff52de919bf7620da680b16cc (diff)
pkg/csource: sort sys/types.h to the top on FreeBSD
sys/types.h is a special header that is required by many other system headers on FreeBSD.
Diffstat (limited to 'pkg/csource/csource.go')
-rw-r--r--pkg/csource/csource.go7
1 files changed, 6 insertions, 1 deletions
diff --git a/pkg/csource/csource.go b/pkg/csource/csource.go
index 26834dd3f..d58c361ee 100644
--- a/pkg/csource/csource.go
+++ b/pkg/csource/csource.go
@@ -445,19 +445,24 @@ func (ctx *context) hoistIncludes(result []byte) []byte {
}
result = includeRe.ReplaceAll(result, nil)
// Certain linux and bsd headers are broken and go to the bottom.
- var sorted, sortedBottom []string
+ var sorted, sortedBottom, sortedTop []string
for include := range includes {
if strings.Contains(include, "<linux/") {
sortedBottom = append(sortedBottom, include)
} else if strings.Contains(include, "<netinet/if_ether.h>") {
sortedBottom = append(sortedBottom, include)
+ } else if ctx.target.OS == freebsd && strings.Contains(include, "<sys/types.h>") {
+ sortedTop = append(sortedTop, include)
} else {
sorted = append(sorted, include)
}
}
+ sort.Strings(sortedTop)
sort.Strings(sorted)
sort.Strings(sortedBottom)
newResult := append([]byte{}, result[:includesStart]...)
+ newResult = append(newResult, strings.Join(sortedTop, "")...)
+ newResult = append(newResult, '\n')
newResult = append(newResult, strings.Join(sorted, "")...)
newResult = append(newResult, '\n')
newResult = append(newResult, strings.Join(sortedBottom, "")...)