diff mbox series

[RFC] block/file-posix: Remove a deprecation warning on macOS 12

Message ID 20220105235607.212848-1-f4bug@amsat.org (mailing list archive)
State New, archived
Headers show
Series [RFC] block/file-posix: Remove a deprecation warning on macOS 12 | expand

Commit Message

Philippe Mathieu-Daudé Jan. 5, 2022, 11:56 p.m. UTC
When building on macOS 12 we get:

  ../block/file-posix.c:3335:18: warning: 'IOMasterPort' is deprecated: first deprecated in macOS 12.0 [-Wdeprecated-declarations]
      kernResult = IOMasterPort( MACH_PORT_NULL, &masterPort );
                   ^~~~~~~~~~~~
                   IOMainPort

Use IOMainPort (define it to IOMasterPort on macOS < 12),
and replace 'master' by 'main' in a variable name.

Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
---
 block/file-posix.c | 13 +++++++++----
 1 file changed, 9 insertions(+), 4 deletions(-)

Comments

Hanna Czenczek Jan. 14, 2022, 2:09 p.m. UTC | #1
On 06.01.22 00:56, Philippe Mathieu-Daudé wrote:
> When building on macOS 12 we get:
>
>    ../block/file-posix.c:3335:18: warning: 'IOMasterPort' is deprecated: first deprecated in macOS 12.0 [-Wdeprecated-declarations]
>        kernResult = IOMasterPort( MACH_PORT_NULL, &masterPort );
>                     ^~~~~~~~~~~~
>                     IOMainPort
>
> Use IOMainPort (define it to IOMasterPort on macOS < 12),
> and replace 'master' by 'main' in a variable name.
>
> Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
> ---
>   block/file-posix.c | 13 +++++++++----
>   1 file changed, 9 insertions(+), 4 deletions(-)

I hope the [RFC] tag isn’t directed at me.

Still, I can give my comment, of course.

> diff --git a/block/file-posix.c b/block/file-posix.c
> index b283093e5b..0dcfce1856 100644
> --- a/block/file-posix.c
> +++ b/block/file-posix.c
> @@ -3324,17 +3324,22 @@ BlockDriver bdrv_file = {
>   #if defined(__APPLE__) && defined(__MACH__)
>   static kern_return_t GetBSDPath(io_iterator_t mediaIterator, char *bsdPath,
>                                   CFIndex maxPathSize, int flags);
> +
> +#if !defined(MAC_OS_VERSION_12_0)

So AFAIU from my quick rather fruit-less googling, this macro is defined 
(to some version-defining integer) on every macOS version starting from 
12.0?  (Just confirming because the name could also mean it’d be defined 
only on 12.0.)

> +#define IOMainPort IOMasterPort
> +#endif
> +
>   static char *FindEjectableOpticalMedia(io_iterator_t *mediaIterator)
>   {
>       kern_return_t kernResult = KERN_FAILURE;
> -    mach_port_t     masterPort;
> +    mach_port_t mainPort;
>       CFMutableDictionaryRef  classesToMatch;
>       const char *matching_array[] = {kIODVDMediaClass, kIOCDMediaClass};
>       char *mediaType = NULL;
>   
> -    kernResult = IOMasterPort( MACH_PORT_NULL, &masterPort );
> +    kernResult = IOMainPort(MACH_PORT_NULL, &mainPort);
>       if ( KERN_SUCCESS != kernResult ) {
> -        printf( "IOMasterPort returned %d\n", kernResult );
> +        printf("IOMainPort returned %d\n", kernResult);
>       }
>   
>       int index;
> @@ -3347,7 +3352,7 @@ static char *FindEjectableOpticalMedia(io_iterator_t *mediaIterator)
>           }
>           CFDictionarySetValue(classesToMatch, CFSTR(kIOMediaEjectableKey),
>                                kCFBooleanTrue);
> -        kernResult = IOServiceGetMatchingServices(masterPort, classesToMatch,
> +        kernResult = IOServiceGetMatchingServices(mainPort, classesToMatch,
>                                                     mediaIterator);
>           if (kernResult != KERN_SUCCESS) {
>               error_report("Note: IOServiceGetMatchingServices returned %d",

“Looks good to me” ← here’s the comment you requested O:)

Hanna
Philippe Mathieu-Daudé Jan. 14, 2022, 2:15 p.m. UTC | #2
On 14/1/22 15:09, Hanna Reitz wrote:
> On 06.01.22 00:56, Philippe Mathieu-Daudé wrote:
>> When building on macOS 12 we get:
>>
>>    ../block/file-posix.c:3335:18: warning: 'IOMasterPort' is 
>> deprecated: first deprecated in macOS 12.0 [-Wdeprecated-declarations]
>>        kernResult = IOMasterPort( MACH_PORT_NULL, &masterPort );
>>                     ^~~~~~~~~~~~
>>                     IOMainPort
>>
>> Use IOMainPort (define it to IOMasterPort on macOS < 12),
>> and replace 'master' by 'main' in a variable name.
>>
>> Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
>> ---
>>   block/file-posix.c | 13 +++++++++----
>>   1 file changed, 9 insertions(+), 4 deletions(-)
> 
> I hope the [RFC] tag isn’t directed at me.
> 
> Still, I can give my comment, of course.
> 
>> diff --git a/block/file-posix.c b/block/file-posix.c
>> index b283093e5b..0dcfce1856 100644
>> --- a/block/file-posix.c
>> +++ b/block/file-posix.c
>> @@ -3324,17 +3324,22 @@ BlockDriver bdrv_file = {
>>   #if defined(__APPLE__) && defined(__MACH__)
>>   static kern_return_t GetBSDPath(io_iterator_t mediaIterator, char 
>> *bsdPath,
>>                                   CFIndex maxPathSize, int flags);
>> +
>> +#if !defined(MAC_OS_VERSION_12_0)
> 
> So AFAIU from my quick rather fruit-less googling, this macro is defined 
> (to some version-defining integer) on every macOS version starting from 
> 12.0?  (Just confirming because the name could also mean it’d be defined 
> only on 12.0.)

Thanks, I posted up to v3 and macOS users helped me, I will post a v4 soon.

v3: 
https://lore.kernel.org/qemu-devel/20220110131001.614319-1-f4bug@amsat.org/

>> +#define IOMainPort IOMasterPort
>> +#endif
>> +
>>   static char *FindEjectableOpticalMedia(io_iterator_t *mediaIterator)
>>   {
>>       kern_return_t kernResult = KERN_FAILURE;
>> -    mach_port_t     masterPort;
>> +    mach_port_t mainPort;
>>       CFMutableDictionaryRef  classesToMatch;
>>       const char *matching_array[] = {kIODVDMediaClass, kIOCDMediaClass};
>>       char *mediaType = NULL;
>> -    kernResult = IOMasterPort( MACH_PORT_NULL, &masterPort );
>> +    kernResult = IOMainPort(MACH_PORT_NULL, &mainPort);
>>       if ( KERN_SUCCESS != kernResult ) {
>> -        printf( "IOMasterPort returned %d\n", kernResult );
>> +        printf("IOMainPort returned %d\n", kernResult);
>>       }
>>       int index;
>> @@ -3347,7 +3352,7 @@ static char 
>> *FindEjectableOpticalMedia(io_iterator_t *mediaIterator)
>>           }
>>           CFDictionarySetValue(classesToMatch, 
>> CFSTR(kIOMediaEjectableKey),
>>                                kCFBooleanTrue);
>> -        kernResult = IOServiceGetMatchingServices(masterPort, 
>> classesToMatch,
>> +        kernResult = IOServiceGetMatchingServices(mainPort, 
>> classesToMatch,
>>                                                     mediaIterator);
>>           if (kernResult != KERN_SUCCESS) {
>>               error_report("Note: IOServiceGetMatchingServices 
>> returned %d",
> 
> “Looks good to me” ← here’s the comment you requested O:)

Thanks :)
Hanna Czenczek Jan. 14, 2022, 2:27 p.m. UTC | #3
On 14.01.22 15:15, Philippe Mathieu-Daudé wrote:
> On 14/1/22 15:09, Hanna Reitz wrote:
>> On 06.01.22 00:56, Philippe Mathieu-Daudé wrote:
>>> When building on macOS 12 we get:
>>>
>>>    ../block/file-posix.c:3335:18: warning: 'IOMasterPort' is 
>>> deprecated: first deprecated in macOS 12.0 [-Wdeprecated-declarations]
>>>        kernResult = IOMasterPort( MACH_PORT_NULL, &masterPort );
>>>                     ^~~~~~~~~~~~
>>>                     IOMainPort
>>>
>>> Use IOMainPort (define it to IOMasterPort on macOS < 12),
>>> and replace 'master' by 'main' in a variable name.
>>>
>>> Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
>>> ---
>>>   block/file-posix.c | 13 +++++++++----
>>>   1 file changed, 9 insertions(+), 4 deletions(-)
>>
>> I hope the [RFC] tag isn’t directed at me.
>>
>> Still, I can give my comment, of course.
>>
>>> diff --git a/block/file-posix.c b/block/file-posix.c
>>> index b283093e5b..0dcfce1856 100644
>>> --- a/block/file-posix.c
>>> +++ b/block/file-posix.c
>>> @@ -3324,17 +3324,22 @@ BlockDriver bdrv_file = {
>>>   #if defined(__APPLE__) && defined(__MACH__)
>>>   static kern_return_t GetBSDPath(io_iterator_t mediaIterator, char 
>>> *bsdPath,
>>>                                   CFIndex maxPathSize, int flags);
>>> +
>>> +#if !defined(MAC_OS_VERSION_12_0)
>>
>> So AFAIU from my quick rather fruit-less googling, this macro is 
>> defined (to some version-defining integer) on every macOS version 
>> starting from 12.0?  (Just confirming because the name could also 
>> mean it’d be defined only on 12.0.)
>
> Thanks, I posted up to v3 and macOS users helped me, I will post a v4 
> soon.
>
> v3: 
> https://lore.kernel.org/qemu-devel/20220110131001.614319-1-f4bug@amsat.org/

I see.  The MAC_OS_X_VERSION_M{IN,AX}_REQUIRED thing was exactly what I 
didn’t really understand from said googling, but the important thing is 
that you do.  (Something to do with what runtime is actually in use 
rather than what the system can provide?  Well, I’ll just stop asking.)  O:)

Hanna
diff mbox series

Patch

diff --git a/block/file-posix.c b/block/file-posix.c
index b283093e5b..0dcfce1856 100644
--- a/block/file-posix.c
+++ b/block/file-posix.c
@@ -3324,17 +3324,22 @@  BlockDriver bdrv_file = {
 #if defined(__APPLE__) && defined(__MACH__)
 static kern_return_t GetBSDPath(io_iterator_t mediaIterator, char *bsdPath,
                                 CFIndex maxPathSize, int flags);
+
+#if !defined(MAC_OS_VERSION_12_0)
+#define IOMainPort IOMasterPort
+#endif
+
 static char *FindEjectableOpticalMedia(io_iterator_t *mediaIterator)
 {
     kern_return_t kernResult = KERN_FAILURE;
-    mach_port_t     masterPort;
+    mach_port_t mainPort;
     CFMutableDictionaryRef  classesToMatch;
     const char *matching_array[] = {kIODVDMediaClass, kIOCDMediaClass};
     char *mediaType = NULL;
 
-    kernResult = IOMasterPort( MACH_PORT_NULL, &masterPort );
+    kernResult = IOMainPort(MACH_PORT_NULL, &mainPort);
     if ( KERN_SUCCESS != kernResult ) {
-        printf( "IOMasterPort returned %d\n", kernResult );
+        printf("IOMainPort returned %d\n", kernResult);
     }
 
     int index;
@@ -3347,7 +3352,7 @@  static char *FindEjectableOpticalMedia(io_iterator_t *mediaIterator)
         }
         CFDictionarySetValue(classesToMatch, CFSTR(kIOMediaEjectableKey),
                              kCFBooleanTrue);
-        kernResult = IOServiceGetMatchingServices(masterPort, classesToMatch,
+        kernResult = IOServiceGetMatchingServices(mainPort, classesToMatch,
                                                   mediaIterator);
         if (kernResult != KERN_SUCCESS) {
             error_report("Note: IOServiceGetMatchingServices returned %d",