[OPEN-ILS-DEV] PATCH: osrf_system.c (pedantic)

Mike Rylander mrylander at gmail.com
Mon May 28 15:40:27 EDT 2007


On 5/27/07, Scott McKellar <mck9 at swbell.net> wrote:
> Toward the end of osrf_system_bootstrap_client_resc(), we use
> snprintf() to build a connect string, incorporating a process id
> at the end.
>
> The conversion specification for the process id is "%d", implying
> that a pid_t is an int.  However it is not necessarily an int.  It
> is a signed integral type but it can be a long.
>
> This patch changes the conversion specification to "%ld", and casts
> the return value of getpid() to a long, in order to coerce it into
> a matching type.
>
> I know this is a really picky thing to worry about, but it's the
> right thing to do, even though it's a rare system where this change
> will make any difference.  (Alternatively we could coerce the pid_t
> into a long long, but that's almost certainly overkill.)

Googling around shows (long) or even (unsigned long) to be the common
qualifiers.  AFAICT, Solaris and Irix might use long (depends on the
hardware), and linux uses the platform int (again, AFAICT -- linux's
sys/types.h is a tangled web ...) so I've gone through and updated the
rest of our getpid() calls that are used in *printf functions with the
(long) format specifier and cast.

>
> Scott McKellar
> http://home.swbell.net/mck9/aargh/
>
> Developer's Certificate of Origin 1.1 By making a contribution to
> this project, I certify that:
>
> (a) The contribution was created in whole or in part by me and I
> have the right to submit it under the open source license indicated
> in the file; or
>
> (b) The contribution is based upon previous work that, to the best
> of my knowledge, is covered under an appropriate open source license
> and I have the right under that license to submit that work with
> modifications, whether created in whole or in part by me, under the
> same open source license (unless I am permitted to submit under a
> different license), as indicated in the file; or
>
> (c) The contribution was provided directly to me by some other person
> who certified (a), (b) or (c) and I have not modified it; and
>
> (d) In the case of each of (a), (b), or (c), I understand and agree
> that this project and the contribution are public and that a record
> of the contribution (including all personal information I submit
> with it, including my sign-off) is maintained indefinitely and may
> be redistributed consistent with this project or the open source
> license indicated in the file.
>


-- 
Mike Rylander


More information about the Open-ils-dev mailing list