torproject / tor Public
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Config subsys v2 #1501
Closed
Closed
Config subsys v2 #1501
Conversation
This file is a workaround for the issue that if you say `a ## b` to create a token that is the name of a macro, the C preprocessor won't expand that macro. So you can't say this: #define FOO__SQUARE(x) ((x)*(x)) #define FOO__CUBE(x) ((x)*(x)*(x)) #define FOO(func, x) FOO__##func(x) Instead, the standard C trick is to add a layer of indirection: #define PASTE(a,b) PASTE__(a,b) #define PASTE__(a,b) a ## b #define FOO__SQUARE(x) ((x)*(x)) #define FOO__CUBE(x) ((x)*(x)*(x)) #define FOO(func, x) PASTE(FOO__, func)(x) We should use this kind of trick sparingly, since it gets confusing.
In our old design, we had to declare configuration structures (like or_options_t) and variable tables (like option_vars_) separately, and we used some magic to enforce their consistency (see conftesting.h). With this design, we write a single definition for the configuration object and its fields, and use C macros to expand it either into a structure, or a variable table. Since they are both made from the same source, they can't become inconsistent. The two designs can coexist happily, and we can migrate from one to the other at our convenience.
This version uses the enum rather than the type definitions, to avoid layering violations and linking problems.
These settings allow doxygen to find and understand doxygen comments in configuration definitions made using the macros in confdecl.h.
The subsysmgr code wants to use them.
We used to have only one boolean per subsystem, but we're about to have a little more information.
The formats, when provided, are now added to the global config_mgr_t objects.
These functions are in the subsystem, not in the config_format_t, since they are about how the format is _used_, not about _what it is_.
This is a comparatively simple change.
We still interpret "AccelName" as turning on the "HardwareAccel" feature, but we no longer modify the user's options here. Fixes bug 32382; bugfix on 0.2.2.1-alpha when we added openssl engine support.
Instead, create a separate "has_config_suite" boolean, so that only top-level formats with config_suites need to declare an offset at all.
Pull Request Test Coverage Report for Build 7070
|
Add a changes file for 32382.
Closes ticket 32406.
This also lets us test a failing set_options().
Doing so caused us to crash in some unusual circumstances, such as using --verify-config to verify a configuration that failed during the options_act() stage. Fixes bug 32407; bugfix on 0.3.3.1-alpha.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
No description provided.
The text was updated successfully, but these errors were encountered: