Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
tree: 9fa499dbdf
Fetching contributors…

Octocat-spinner-32-eaf2f5

Cannot retrieve contributors at this time

executable file 53 lines (44 sloc) 1.584 kb
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
#! /bin/sh

# (C) 1998, 2007 Free Software Foundation
# Originally by Alexandre Oliva <oliva@lsd.ic.unicamp.br>

# This gawk/shell script is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License as published
# by the Free Software Foundation; either version 3, or (at your option)
# any later version.

# Given a preprocessed C/C++ code snippet, this script will replace any
# standard header files with an actual #include <...> directive.

# Example:
# # 1 "test.c"
# # 1 "/usr/include/stdio.h" 1 3
# <snip>
# # 1 "test.c" 2
#
# main() { printf("Hello world!\n"); }

# is replaced with
# # 1 "test.c"
# #include <stdio.h>
# main() { printf("Hello world!\n"); }


# Header files whose pathnames contain any of the following patterns
# are considered as standard headers: usr/include, g++-include,
# include/g++, include/c++/<version>, gcc-lib/<anything>/include.

gawk ${EXCLUDEPATT+-vexclude="$EXCLUDEPATT"} \
     ${INCLUDEPATT+-vinclude="$INCLUDEPATT"} '
BEGIN {
skipping = 0;
cppline = "^# [0-9]+ \"[^\"]*/(usr/include|g\\+\\+-include|include/g\\+\\+|include/c\\+\\+/[^/]+|gcc-lib/[^\"]+/include|gcc/include)/([^\"]+)\"( [1-4])*$"
}
!skipping && $0 ~ cppline &&
(exclude == "" || $3 !~ exclude) && (include == "" || $3 ~ include) {
skipping = 1;
printf "%s\n", "#include <" gensub(cppline, "\\2", "", $0) ">"
next;
}
skipping && /^# [0-9]+ / && $3 == lastincluded {
skipping = 0;
next;
}
!skipping && /^# [0-9]+ / {
lastincluded = $3;
}
!skipping { print }
' ${1+"$@"}
Something went wrong with that request. Please try again.