Re: [BlueZ PATCH v3 4/4] fixing const decoration warnins on options.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Alain,

>>> ---
>>> 
>>> Changes in v3: None
>>> Changes in v2: None
>>> 
>>> src/main.c | 12 ++++++------
>>> 1 file changed, 6 insertions(+), 6 deletions(-)
>>> 
>>> diff --git a/src/main.c b/src/main.c
>>> index ca27f313d..cea50a3d2 100644
>>> --- a/src/main.c
>>> +++ b/src/main.c
>>> @@ -80,7 +80,7 @@ static enum {
>>>        MPS_MULTIPLE,
>>> } mps = MPS_OFF;
>>> 
>>> -static const char *supported_options[] = {
>>> +static const char * const supported_options[] = {
>>>        "Name",
>>>        "Class",
>>>        "DiscoverableTimeout",
>>> @@ -129,7 +129,7 @@ static const char * const controller_options[] = {
>>>        NULL
>>> };
>>> 
>>> -static const char *policy_options[] = {
>>> +static const char * const policy_options[] = {
>>>        "ReconnectUUIDs",
>>>        "ReconnectAttempts",
>>>        "ReconnectIntervals",
>>> @@ -137,7 +137,7 @@ static const char *policy_options[] = {
>>>        NULL
>>> };
>>> 
>>> -static const char *gatt_options[] = {
>>> +static const char * const gatt_options[] = {
>>>        "Cache",
>>>        "KeySize",
>>>        "ExchangeMTU",
>>> @@ -146,8 +146,8 @@ static const char *gatt_options[] = {
>>> };
>>> 
>>> static const struct group_table {
>>> -       const char *name;
>>> -       const char **options;
>>> +       const char * const name;
>>> +       const char * const * const options;
>>> } valid_groups[] = {
>>>        { "General",    supported_options },
>>>        { "Controller", controller_options },
>>> @@ -243,7 +243,7 @@ static enum jw_repairing_t parse_jw_repairing(const char *jw_repairing)
>>> 
>>> 
>>> static void check_options(GKeyFile *config, const char *group,
>>> -                                               const char **options)
>>> +                                       const char * const * const options)
>>> {
>>>        char **keys;
>>>        int i;
>>> --
>>> 2.27.0.rc0.183.gde8f92d652-goog
>>> 
>> 
>> I wonder how usufull is to tell it is a constant pointer to a constant
>> character given that is so rarely in the kernel and userspace,
>> something like const char * const * const would be very hard to keep
>> it readable.
> 
> I'm personally a big fan of leveraging the compiler to find bugs, but
> in this case it also allows the compiler to put all the strings into
> read only sections.  In this example, it will catch code trying to
> write into the string or prevent code execution in the read only
> sections if there is ever a bug that leverages this data section to
> store code that can be manipulated.  For readability, I've seen other
> platforms use type definitions LPCSTR to typedef const char * const
> etc..  I'm happy to follow guidance here.

I am a big fan of letting the compiler help us, but the readability concerns me a bit in this case. Can we explore what kind of macros we might be able to introduce to make this easier on the eyes.

Regards

Marcel




[Index of Archives]     [Bluez Devel]     [Linux Wireless Networking]     [Linux Wireless Personal Area Networking]     [Linux ATH6KL]     [Linux USB Devel]     [Linux Media Drivers]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Big List of Linux Books]

  Powered by Linux