<br><br><div class="gmail_quote">On Sun Jan 18 2015 at 6:25:54 PM Lawrence D'Oliveiro <<a href="mailto:ldo@geek-central.gen.nz">ldo@geek-central.gen.nz</a>> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">On Mon, 19 Jan 2015 02:02:30 +0000, Timothy Gu wrote:<br>
<br>
> AC_MSG_CHECKING<br>
> AC_MSG_RESULT<br>
<br>
Thanks for mentioning those, I shall look at them. :)<br>
<br>
>> +#if defined(HAVE_ATTRIBUTE_<u></u>DEPRECATED)<br>
>> +    #define __DEPRECATED__ __attribute__((deprecated))<br>
>> +#else<br>
>> +    #define __DEPRECATED__<br>
>> +#endif<br>
><br>
> This simply won't work...<br>
><br>
> 1. ifo_read.h does not include config.h, and thus will not ever get<br>
> the definition of HAVE_ATTRIBUTE_DEPRECATED which is defined in<br>
> config.h.<br>
<br>
It does work--I did check that. For example, adding the following quick<br>
patch<br>
<br>
diff --git a/src/dvdread/ifo_read.h b/src/dvdread/ifo_read.h<br>
index 8b58b61..1436ec6 100644<br>
--- a/src/dvdread/ifo_read.h<br>
+++ b/src/dvdread/ifo_read.h<br>
@@ -215,7 +215,7 @@ int ifoRead_TXTDT_MGI(ifo_handle_t *);<br>
  * below are safe:  they will not mind if you attempt to free part of<br>
an IFO<br>
  * file which was not read in or which does not exist.<br>
  */<br>
-void ifoFree_PTL_MAIT(ifo_handle_t *);<br>
+__DEPRECATED__ void ifoFree_PTL_MAIT(ifo_handle_t *);<br>
 void ifoFree_VTS_ATRT(ifo_handle_t *);<br>
 void ifoFree_TT_SRPT(ifo_handle_t *);<br>
 void ifoFree_VTS_PTT_SRPT(ifo_<u></u>handle_t *);<br>
<br>
and then building, produces the expected warning:<br>
<br>
  CC       src/ifo_read.lo<br>
src/ifo_read.c: In function ‘ifoClose’:<br>
src/ifo_read.c:496:3: warning: ‘ifoFree_PTL_MAIT’ is deprecated<br>
(declared at src/dvdread/ifo_read.h:218) [-Wdeprecated-declarations]<br>
<br>
Of course, it could be working “accidentally”... :)<br></blockquote><div><br></div><div>Pretty sure that is the case. src/ifo_read.c includes config.h before dvdread/ifo_read.h so the <span style="font-size:13.1999998092651px">HAVE_ATTRIBUTE_DEPRECATED got pulled in</span><span style="font-size:13.1999998092651px">.</span></div><div><br></div><div>If you *really* want to test it, try installing your (modified) library and try compiling this:<br><br><br>#include <dvdread/ifo_read.h></div><div><br></div><div>int main()</div><div>{</div><div>    <span style="font-size:13.1999998092651px">ifoFree_PTL_MAIT(NULL);</span></div><div><span style="font-size:13.1999998092651px">}</span></div><div><span style="font-size:13.1999998092651px"><br></span></div><div><span style="font-size:13.1999998092651px">Also BTW you can't use __DEPRECATED__ as the macro name as it is reserved by</span> the C standard for C implementations:<br><br>> All identifiers that begin with an underscore and either an uppercase letter or another underscore are always reserved for any use.</div><div><br></div><div><span style="font-size:13.1999998092651px">(ISO/IEC 9899:2011</span> §7.1.3)<br><br></div><div><span style="font-size:13.1999998092651px">Timothy</span></div><div><br></div></div>