diff options
author | Andrew Bartlett <abartlet@samba.org> | 2008-08-27 11:01:55 +1000 |
---|---|---|
committer | Andrew Bartlett <abartlet@samba.org> | 2008-08-27 11:01:55 +1000 |
commit | 8b94f7bcd70b1196487b433e355127a4f84bf5a5 (patch) | |
tree | 940c1838cd0fa4033fef7945e97b530341f99ecf /source4/heimdal/cf | |
parent | ca20c56b260e2799c40b0c7c0e3ef5f7308b586e (diff) | |
parent | 9430420ba246c26489ad51e8b52e13d891436bb3 (diff) | |
download | samba-8b94f7bcd70b1196487b433e355127a4f84bf5a5.tar.gz samba-8b94f7bcd70b1196487b433e355127a4f84bf5a5.tar.bz2 samba-8b94f7bcd70b1196487b433e355127a4f84bf5a5.zip |
Merge branch 'v4-0-test' of ssh://git.samba.org/data/git/samba into pac-verify
(This used to be commit 32143287c7eb452c6ed9ccd15e8cd4e5a907b437)
Diffstat (limited to 'source4/heimdal/cf')
-rw-r--r-- | source4/heimdal/cf/check-var.m4 | 4 | ||||
-rw-r--r-- | source4/heimdal/cf/find-func-no-libs.m4 | 2 | ||||
-rw-r--r-- | source4/heimdal/cf/find-func-no-libs2.m4 | 2 | ||||
-rw-r--r-- | source4/heimdal/cf/find-func.m4 | 2 | ||||
-rw-r--r-- | source4/heimdal/cf/make-proto.pl | 351 | ||||
-rw-r--r-- | source4/heimdal/cf/resolv.m4 | 2 |
6 files changed, 357 insertions, 6 deletions
diff --git a/source4/heimdal/cf/check-var.m4 b/source4/heimdal/cf/check-var.m4 index ffa61915e9..f81f3524c1 100644 --- a/source4/heimdal/cf/check-var.m4 +++ b/source4/heimdal/cf/check-var.m4 @@ -1,4 +1,4 @@ -dnl $Id: check-var.m4 15422 2005-06-16 18:59:29Z lha $ +dnl $Id$ dnl dnl rk_CHECK_VAR(variable, includes) AC_DEFUN([rk_CHECK_VAR], [ @@ -23,5 +23,5 @@ if test "$ac_foo" = yes; then fi ]) -dnl AC_WARNING_ENABLE([obsolete]) +AC_WARNING_ENABLE([obsolete]) AU_DEFUN([AC_CHECK_VAR], [rk_CHECK_VAR([$2], [$1])], [foo]) diff --git a/source4/heimdal/cf/find-func-no-libs.m4 b/source4/heimdal/cf/find-func-no-libs.m4 index 76965a84ee..f3413409f6 100644 --- a/source4/heimdal/cf/find-func-no-libs.m4 +++ b/source4/heimdal/cf/find-func-no-libs.m4 @@ -1,4 +1,4 @@ -dnl $Id: find-func-no-libs.m4 13338 2004-02-12 14:21:14Z lha $ +dnl $Id$ dnl dnl dnl Look for function in any of the specified libraries diff --git a/source4/heimdal/cf/find-func-no-libs2.m4 b/source4/heimdal/cf/find-func-no-libs2.m4 index 617a09e8da..692001c103 100644 --- a/source4/heimdal/cf/find-func-no-libs2.m4 +++ b/source4/heimdal/cf/find-func-no-libs2.m4 @@ -1,4 +1,4 @@ -dnl $Id: find-func-no-libs2.m4 14166 2004-08-26 12:35:42Z joda $ +dnl $Id$ dnl dnl dnl Look for function in any of the specified libraries diff --git a/source4/heimdal/cf/find-func.m4 b/source4/heimdal/cf/find-func.m4 index 2354f38e5e..865772a700 100644 --- a/source4/heimdal/cf/find-func.m4 +++ b/source4/heimdal/cf/find-func.m4 @@ -1,4 +1,4 @@ -dnl $Id: find-func.m4 13338 2004-02-12 14:21:14Z lha $ +dnl $Id$ dnl dnl AC_FIND_FUNC(func, libraries, includes, arguments) AC_DEFUN([AC_FIND_FUNC], [ diff --git a/source4/heimdal/cf/make-proto.pl b/source4/heimdal/cf/make-proto.pl new file mode 100644 index 0000000000..b89ef79067 --- /dev/null +++ b/source4/heimdal/cf/make-proto.pl @@ -0,0 +1,351 @@ +# Make prototypes from .c files +# $Id$ + +##use Getopt::Std; +require 'getopts.pl'; + +my $comment = 0; +my $if_0 = 0; +my $brace = 0; +my $line = ""; +my $debug = 0; +my $oproto = 1; +my $private_func_re = "^_"; + +do Getopts('x:m:o:p:dqE:R:P:') || die "foo"; + +if($opt_d) { + $debug = 1; +} + +if($opt_q) { + $oproto = 0; +} + +if($opt_R) { + $private_func_re = $opt_R; +} +%flags = ( + 'multiline-proto' => 1, + 'header' => 1, + 'function-blocking' => 0, + 'gnuc-attribute' => 1, + 'cxx' => 1 + ); +if($opt_m) { + foreach $i (split(/,/, $opt_m)) { + if($i eq "roken") { + $flags{"multiline-proto"} = 0; + $flags{"header"} = 0; + $flags{"function-blocking"} = 0; + $flags{"gnuc-attribute"} = 0; + $flags{"cxx"} = 0; + } else { + if(substr($i, 0, 3) eq "no-") { + $flags{substr($i, 3)} = 0; + } else { + $flags{$i} = 1; + } + } + } +} + +if($opt_x) { + open(EXP, $opt_x); + while(<EXP>) { + chomp; + s/\#.*//g; + s/\s+/ /g; + if(/^([a-zA-Z0-9_]+)\s?(.*)$/) { + $exported{$1} = $2; + } else { + print $_, "\n"; + } + } + close EXP; +} + +while(<>) { + print $brace, " ", $_ if($debug); + + # Handle C comments + s@/\*.*\*/@@; + s@//.*/@@; + if ( s@/\*.*@@) { $comment = 1; + } elsif ($comment && s@.*\*/@@) { $comment = 0; + } elsif ($comment) { next; } + + if(/^\#if 0/) { + $if_0 = 1; + } + if($if_0 && /^\#endif/) { + $if_0 = 0; + } + if($if_0) { next } + if(/^\s*\#/) { + next; + } + if(/^\s*$/) { + $line = ""; + next; + } + if(/\{/){ + if (!/\}/) { + $brace++; + } + $_ = $line; + while(s/\*\//\ca/){ + s/\/\*(.|\n)*\ca//; + } + s/^\s*//; + s/\s*$//; + s/\s+/ /g; + if($_ =~ /\)$/){ + if(!/^static/ && !/^PRIVATE/){ + if(/(.*)(__attribute__\s?\(.*\))/) { + $attr = $2; + $_ = $1; + } else { + $attr = ""; + } + # remove outer () + s/\s*\(/</; + s/\)\s?$/>/; + # remove , within () + while(s/\(([^()]*),(.*)\)/($1\$$2)/g){} + s/\<\s*void\s*\>/<>/; + # remove parameter names + if($opt_P eq "remove") { + s/(\s*)([a-zA-Z0-9_]+)([,>])/$3/g; + s/\s+\*/*/g; + s/\(\*(\s*)([a-zA-Z0-9_]+)\)/(*)/g; + } elsif($opt_P eq "comment") { + s/([a-zA-Z0-9_]+)([,>])/\/\*$1\*\/$2/g; + s/\(\*([a-zA-Z0-9_]+)\)/(*\/\*$1\*\/)/g; + } + s/\<\>/<void>/; + # add newlines before parameters + if($flags{"multiline-proto"}) { + s/,\s*/,\n\t/g; + } else { + s/,\s*/, /g; + } + # fix removed , + s/\$/,/g; + # match function name + /([a-zA-Z0-9_]+)\s*\</; + $f = $1; + if($oproto) { + $LP = "__P(("; + $RP = "))"; + } else { + $LP = "("; + $RP = ")"; + } + # only add newline if more than one parameter + if($flags{"multiline-proto"} && /,/){ + s/\</ $LP\n\t/; + }else{ + s/\</ $LP/; + } + s/\>/$RP/; + # insert newline before function name + if($flags{"multiline-proto"}) { + s/(.*)\s([a-zA-Z0-9_]+ \Q$LP\E)/$1\n$2/; + } + if($attr ne "") { + $_ .= "\n $attr"; + } + $_ = $_ . ";"; + $funcs{$f} = $_; + } + } + $line = ""; + } + if(/\}/){ + $brace--; + } + if(/^\}/){ + $brace = 0; + } + if($brace == 0) { + $line = $line . " " . $_; + } +} + +sub foo { + local ($arg) = @_; + $_ = $arg; + s/.*\/([^\/]*)/$1/; + s/[^a-zA-Z0-9]/_/g; + "__" . $_ . "__"; +} + +if($opt_o) { + open(OUT, ">$opt_o"); + $block = &foo($opt_o); +} else { + $block = "__public_h__"; +} + +if($opt_p) { + open(PRIV, ">$opt_p"); + $private = &foo($opt_p); +} else { + $private = "__private_h__"; +} + +$public_h = ""; +$private_h = ""; + +$public_h_header .= "/* This is a generated file */ +#ifndef $block +#define $block + +"; +if ($oproto) { + $public_h_header .= "#ifdef __STDC__ +#include <stdarg.h> +#ifndef __P +#define __P(x) x +#endif +#else +#ifndef __P +#define __P(x) () +#endif +#endif + +"; +} else { + $public_h_header .= "#include <stdarg.h> + +"; +} +$public_h_trailer = ""; + +$private_h_header = "/* This is a generated file */ +#ifndef $private +#define $private + +"; +if($oproto) { + $private_h_header .= "#ifdef __STDC__ +#include <stdarg.h> +#ifndef __P +#define __P(x) x +#endif +#else +#ifndef __P +#define __P(x) () +#endif +#endif + +"; +} else { + $private_h_header .= "#include <stdarg.h> + +"; +} +$private_h_trailer = ""; + +foreach(sort keys %funcs){ + if(/^(main)$/) { next } + if(!defined($exported{$_}) && /$private_func_re/) { + $private_h .= $funcs{$_} . "\n\n"; + if($funcs{$_} =~ /__attribute__/) { + $private_attribute_seen = 1; + } + } else { + if($flags{"function-blocking"}) { + $fupper = uc $_; + if($exported{$_} =~ /proto/) { + $public_h .= "#if !defined(HAVE_$fupper) || defined(NEED_${fupper}_PROTO)\n"; + } else { + $public_h .= "#ifndef HAVE_$fupper\n"; + } + } + $public_h .= $funcs{$_} . "\n"; + if($funcs{$_} =~ /__attribute__/) { + $public_attribute_seen = 1; + } + if($flags{"function-blocking"}) { + $public_h .= "#endif\n"; + } + $public_h .= "\n"; + } +} + +if($flags{"gnuc-attribute"}) { + if ($public_attribute_seen) { + $public_h_header .= "#if !defined(__GNUC__) && !defined(__attribute__) +#define __attribute__(x) +#endif + +"; + } + + if ($private_attribute_seen) { + $private_h_header .= "#if !defined(__GNUC__) && !defined(__attribute__) +#define __attribute__(x) +#endif + +"; + } +} +if($flags{"cxx"}) { + $public_h_header .= "#ifdef __cplusplus +extern \"C\" { +#endif + +"; + $public_h_trailer .= "#ifdef __cplusplus +} +#endif + +"; + +} +if ($opt_E) { + $public_h_header .= "#ifndef $opt_E +#if defined(_WIN32) +#define ${opt_E}_FUNCTION _stdcall __declspec(dllimport) +#define ${opt_E}_VARIABLE __declspec(dllimport) +#else +#define ${opt_E}_FUNCTION +#define ${opt_E}_VARIABLE +#endif +#endif + +"; + + $private_h_header .= "#ifndef $opt_E +#if defined(_WIN32) +#define ${opt_E}_FUNCTION _stdcall __declspec(dllimport) +#define ${opt_E}_VARIABLE __declspec(dllimport) +#else +#define ${opt_E}_FUNCTION +#define ${opt_E}_VARIABLE +#endif +#endif + +"; +} + +if ($public_h ne "" && $flags{"header"}) { + $public_h = $public_h_header . $public_h . + $public_h_trailer . "#endif /* $block */\n"; +} +if ($private_h ne "" && $flags{"header"}) { + $private_h = $private_h_header . $private_h . + $private_h_trailer . "#endif /* $private */\n"; +} + +if($opt_o) { + print OUT $public_h; +} +if($opt_p) { + print PRIV $private_h; +} + +close OUT; +close PRIV; diff --git a/source4/heimdal/cf/resolv.m4 b/source4/heimdal/cf/resolv.m4 index 8bb5e4ecbb..b4045094d8 100644 --- a/source4/heimdal/cf/resolv.m4 +++ b/source4/heimdal/cf/resolv.m4 @@ -1,6 +1,6 @@ dnl stuff used by DNS resolv code in roken dnl -dnl $Id: resolv.m4 16009 2005-09-02 10:17:38Z lha $ +dnl $Id$ dnl AC_DEFUN([rk_RESOLV],[ |