cleaning up plperl warnings

Started by Andrew Dunstanabout 20 years ago3 messages
#1Andrew Dunstan
andrew@dunslane.net

First, I cleaned up many of the warnings on my Windows box by running
this to fix up comments in perl's config.h:

sed -i -e 's,\(^/\*.*\)/\*,\1/ *,' config.h
unix2dos config.h

That puts a space between the / and * of what would otherwise be an
embedded comment start, and thus removes a huge number of warning messages.

Second, stopping the hijacking of stdio and other things by the perl
headers (see discussion elsewhere) cleans up most of the remaining messages.

Now, in src/include/port/win32.h we have this:

/*
* Supplement to <sys/types.h>.
*
* Perl already has conflicting defines for uid_t and gid_t.
*/
#ifndef PLPERL_HAVE_UID_GID
typedef int uid_t;
typedef int gid_t;
#else
/* These are redefined by perl. */
#define uid_t int
#define gid_t int
#endif

But in my perl installation, at least, these are not redefined at all,
but typedef''d:

typedef long uid_t;
typedef long gid_t;

Which causes a couple of pretty obscure warnings:

C:/Perl/lib/CORE/win32.h:219: warning: useless keyword or type name in empty declaration
C:/Perl/lib/CORE/win32.h:219: warning: empty declaration
C:/Perl/lib/CORE/win32.h:220: warning: useless keyword or type name in empty declaration
C:/Perl/lib/CORE/win32.h:220: warning: empty declaration

Why do we need these defines at all? We don't use either of these types anywhere in the plperl code.

Is the community perl different in what it does here from what the ActiveState perl?

cheers

andrew

#2Bruce Momjian
pgman@candle.pha.pa.us
In reply to: Andrew Dunstan (#1)
Re: cleaning up plperl warnings

Andrew Dunstan wrote:

Now, in src/include/port/win32.h we have this:

/*
* Supplement to <sys/types.h>.
*
* Perl already has conflicting defines for uid_t and gid_t.
*/
#ifndef PLPERL_HAVE_UID_GID
typedef int uid_t;
typedef int gid_t;
#else
/* These are redefined by perl. */
#define uid_t int
#define gid_t int
#endif

But in my perl installation, at least, these are not redefined at all,
but typedef''d:

typedef long uid_t;
typedef long gid_t;

Which causes a couple of pretty obscure warnings:

C:/Perl/lib/CORE/win32.h:219: warning: useless keyword or type name in empty declaration
C:/Perl/lib/CORE/win32.h:219: warning: empty declaration
C:/Perl/lib/CORE/win32.h:220: warning: useless keyword or type name in empty declaration
C:/Perl/lib/CORE/win32.h:220: warning: empty declaration

Why do we need these defines at all? We don't use either of these types anywhere in the plperl code.

Is the community perl different in what it does here from what the ActiveState perl?

No idea, but if you don't need them, remove them so they work on your
setup, and if it breaks other people's perl, we will hear about it
before we package 8.2 and make adjustments.

-- 
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@candle.pha.pa.us               |  (610) 359-1001
  +  If your life is a hard drive,     |  13 Roberts Road
  +  Christ can be your backup.        |  Newtown Square, Pennsylvania 19073
#3Andrew Dunstan
andrew@dunslane.net
In reply to: Bruce Momjian (#2)
Re: cleaning up plperl warnings

Bruce Momjian wrote:

Why do we need these defines at all? We don't use either of these types anywhere in the plperl code.

Is the community perl different in what it does here from what the ActiveState perl?

No idea, but if you don't need them, remove them so they work on your
setup, and if it breaks other people's perl, we will hear about it
before we package 8.2 and make adjustments.

done

cheers

andrew