Merge branch 'ticket31705_v2' into ticket31705_v2_merged

Conflicts:
	src/feature/dirparse/authcert_parse.c
	src/feature/dirparse/ns_parse.c
	src/feature/hs/hs_service.c
	src/lib/conf/conftesting.h
	src/lib/log/log.h
	src/lib/thread/threads.h
	src/test/test_options.c

These conflicts were mostly related to autostyle improvements, with
one or two due to doxygen fixes.
This commit is contained in:
Nick Mathewson
2019-10-22 09:39:06 -04:00
53 changed files with 296 additions and 63 deletions
+9
View File
@@ -0,0 +1,9 @@
#!/bin/sh
# apply.sh:
# run spatch with appropriate includes and builtins for the Tor source code
top="$(dirname "$0")/../.."
spatch -macro_file_builtins "$top"/scripts/coccinelle/tor-coccinelle.h \
-I "$top" -I "$top"/src -I "$top"/ext --defined COCCI "$@"
+13
View File
@@ -1,4 +1,17 @@
#!/usr/bin/perl -w -p -i
#
# Copyright (c) 2001 Matej Pfajfar.
# Copyright (c) 2001-2004, Roger Dingledine.
# Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
# Copyright (c) 2007-2019, The Tor Project, Inc.
# See LICENSE for licensing information
# This script looks for instances of C comparison operators as macro arguments,
# and replaces them with our OP_* equivalents.
#
# Some macros that take operators are our tt_int_op() testing macro, and the
# standard timercmp() macro. Coccinelle can't handle their syntax, however,
# unless we give them their operators as a macro too.
next if m#^ */\*# or m#^ *\* #;
+60
View File
@@ -1,3 +1,63 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
* Copyright (c) 2007-2019, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/*
* This file looks like a C header, but its purpose is a bit different.
*
* We never include it from our real C files; we only tell Coccinelle
* about it in apply.sh.
*
* It tells the Coccinelle semantic patching tool how to understand
* things that would otherwise not be good C syntax, or which would
* otherwise not make sense to it as C. It doesn't need to produce
* semantically equivalent C, or even correct C: it only has to produce
* syntactically valid C.
*/
#define MOCK_DECL(a, b, c) a b c
#define MOCK_IMPL(a, b, c) a b c
#define CHECK_PRINTF(a, b)
#define CHECK_SCANF(a, b)
#define STATIC static
#define EXTERN(a,b) extern a b;
#define STMT_BEGIN do {
#define STMT_END } while (0)
#define BUG(x) (x)
#define IF_BUG_ONCE(x) if (x)
#define ATTR_NORETURN
#define ATTR_UNUSED
#define ATTR_CONST
#define ATTR_MALLOC
#define ATTR_WUR
#define DISABLE_GCC_WARNING(x)
#define ENABLE_GCC_WARNING(x)
#define HANDLE_DECL(a,b,c)
#define HANDLE_IMPL(a,b,c)
#define HT_ENTRY(x) void *
#define HT_HEAD(a,b) struct ht_head
#define HT_INITIALIZER() { }
#define X509 struct x509_st
#define STACK_OF(x) struct foo_stack_t
#define TOR_TAILQ_HEAD(a,b) struct tailq_head
#define TOR_TAILQ_ENTRY(a) struct tailq_entry
#define TOR_SIMPLEQ_HEAD(a,b) struct simpleq_entry
#define TOR_SIMPLEQ_ENTRY(a) struct simpleq_entry
#define TOR_LIST_HEAD(a,b) struct list_head
#define TOR_LIST_ENTRY(a) struct list_entry
#define TOR_SLIST_HEAD(a,b) struct slist_head
#define TOR_SLIST_ENTRY(a) struct slist_entry
#define NS_DECL(a, b, c) a b c
#define NS(a) a
#define CONF_TEST_MEMBERS(a,b,c)
#define DUMMY_CONF_TEST_MEMBERS
#define EAT_SEMICOLON extern int dummy__;
+29
View File
@@ -0,0 +1,29 @@
#!/bin/sh
# Echo the name of every argument of this script that is not "perfect"
# according to coccinelle's --parse-c.
top="$(dirname "$0")/../.."
exitcode=0
for fn in "$@"; do
if spatch -macro_file_builtins "$top"/scripts/coccinelle/tor-coccinelle.h \
-I "$top" -I "$top"/src -I "$top"/ext --defined COCCI \
--parse-c "$fn" \
2>/dev/null | grep "perfect = 1" > /dev/null; then
: # it's perfect
else
echo "$fn"
if test "${VERBOSE}" != ""; then
spatch -macro_file_builtins "$top"/scripts/coccinelle/tor-coccinelle.h \
-I "$top" -I "$top"/src -I "$top"/ext --defined COCCI \
--parse-c "$fn"
fi
exitcode=1
fi
done
exit "$exitcode"