Front page | perl.perl5.porters |
Postings from June 2008
Warnings, how informative?
From:
H.Merijn Brand
Date:
June 19, 2008 01:32
Subject:
Warnings, how informative?
Message ID:
20080619103228.01219be8@pc09.procura.nl
In my quest for gethostbyaddr () fixed, I stumbled into HP-UX' variant
of gcc's -Wall: +w, and that revealed quite a bit of warnings.
Maybe useful. Enjoy while I dig further ...
x2:/pro/3gl/CPAN/perl-current 156 > `sh cflags "optimize='+O2 +Onolimit +p +w'" pp_sys.o` pp_sys.c
CCCMD = cc -DPERL_CORE -c -DPERL_PATCHNUM=34073 -Ae -DDEBUGGING +Z -z -D_HPUX_SOURCE -Wl,+vnocompatwarnings -I/pro/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 +O2 +Onolimit +p +w
"sv.h", line 415: remark #4264-D: padding size of struct <anonymous> with 2
bytes to alignment boundary
struct {
^
"sv.h", line 445: remark #4255-D: padding size of struct "xpviv" with 4 bytes
to alignment boundary
struct xpviv {
^
"sv.h", line 457: remark #4255-D: padding size of struct "xpvuv" with 4 bytes
to alignment boundary
struct xpvuv {
^
"sv.h", line 464: remark #4255-D: padding size of struct "xpvnv" with 4 bytes
to alignment boundary
struct xpvnv {
^
"sv.h", line 475: remark #4255-D: padding size of struct "xpvmg" with 4 bytes
to alignment boundary
struct xpvmg {
^
"sv.h", line 480: remark #4255-D: padding size of struct "xpvlv" with 7 bytes
to alignment boundary
struct xpvlv {
^
"sv.h", line 493: remark #4255-D: padding size of struct "xpvgv" with 4 bytes
to alignment boundary
struct xpvgv {
^
"sv.h", line 525: remark #4227-D: padding struct with 2 bytes to align member
"xfm_lines"
IV xfm_lines;
^
"sv.h", line 521: remark #4255-D: padding size of struct "xpvfm" with 4 bytes
to alignment boundary
struct xpvfm {
^
"sv.h", line 532: remark #4227-D: padding struct with 2 bytes to align member
"xfm_lines"
IV xfm_lines;
^
"sv.h", line 565: remark #4255-D: padding size of struct "xpvio" with 6 bytes
to alignment boundary
struct xpvio {
^
"sv.h", line 571: remark #4264-D: padding size of struct <anonymous> with 2
bytes to alignment boundary
typedef struct {
^
"regexp.h", line 498: remark #4255-D: padding size of struct
"_reg_trie_accepted" with 2 bytes to alignment boundary
struct _reg_trie_accepted {
^
"regexp.h", line 617: remark #4227-D: padding struct with 3 bytes to align
member "parenfloor"
int parenfloor;/* how far back to strip paren data */
^
"regexp.h", line 645: remark #4227-D: padding struct with 3 bytes to align
member "A"
regnode *A, *B; /* the nodes corresponding to /A*B/ */
^
"regexp.h", line 705: remark #4227-D: padding struct with 3 bytes to align
member "re_state_bostr"
char *re_state_bostr;
^
"cv.h", line 13: remark #4255-D: padding size of struct "xpvcv" with 2 bytes
to alignment boundary
struct xpvcv {
^
"cv.h", line 19: remark #4264-D: padding size of struct <anonymous> with 2
bytes to alignment boundary
typedef struct {
^
"hv.h", line 25: remark #4255-D: padding size of struct "hek" with 3 bytes to
alignment boundary
struct hek {
^
"hv.h", line 79: remark #4255-D: padding size of struct "xpvhv" with 4 bytes
to alignment boundary
struct xpvhv {
^
"hv.h", line 457: remark #4255-D: padding size of struct "refcounted_he" with 3
bytes to alignment boundary
struct refcounted_he {
^
"cop.h", line 33: remark #4227-D: padding struct with 12 bytes to align member
"je_buf"
Sigjmp_buf je_buf; /* only for use if !je_throw */
^
"cop.h", line 31: remark #4255-D: padding size of struct "jmpenv" with 11
bytes to alignment boundary
struct jmpenv {
^
"av.h", line 19: remark #4255-D: padding size of struct "xpvav" with 4 bytes
to alignment boundary
struct xpvav {
^
"perl.h", line 3372: remark #4227-D: padding struct with 1 bytes to align
member "sub_inwhat"
U16 sub_inwhat; /* "lex_inwhat" to use */
^
"parser.h", line 17: remark #4227-D: padding struct with 2 bytes to align
member "savestack_ix"
I32 savestack_ix; /* size of savestack at this state */
^
"pp_sys.c", line 368: remark #3348-D: declaration hides variable "sp"
(declared at line 368)
tryAMAGICunTARGET(iter, -1);
^
"pp_sys.c", line 709: remark #4235-D: conversion from "IV" to "mode_t" may
lose significant bits
anum = PerlLIO_umask(POPi);
^
"pp_sys.c", line 827: remark #4272-D: conversion from "long" to "U32" may lose
sign
items = SP - MARK++;
^
"pp_sys.c", line 861: remark #3348-D: declaration hides variable "sp"
(declared at line 790)
POPSTACK;
^
"pp_sys.c", line 883: remark #4235-D: conversion from "int" to "const char"
may lose significant bits
const char how = (SvTYPE(sv) == SVt_PVHV || SvTYPE(sv) == SVt_PVAV)
^
"pp_sys.c", line 921: remark #4235-D: conversion from "int" to "const char"
may lose significant bits
const char how = (SvTYPE(sv) == SVt_PVHV || SvTYPE(sv) == SVt_PVAV)
^
"pp_sys.c", line 1020: remark #3348-D: declaration hides variable "sv"
(declared at line 997)
SV * const sv = SP[i];
^
"pp_sys.c", line 1090: remark #4272-D: conversion from "I32" to "STRLEN" may
lose sign
Sv_Grow(sv, growsize);
^
"pp_sys.c", line 1121: remark #4229-D: 64 bit migration: conversion from "long"
to "int" may truncate value
maxlen * 8,
^
"pp_sys.c", line 1227: remark #4235-D: conversion from "int" to "char" may
lose significant bits
*SvPVX(TARG) = PerlIO_getc(IoIFP(GvIOp(gv))); /* should never be EOF */
^
"pp_sys.c", line 1233: remark #4272-D: conversion from "ssize_t" to "size_t"
may lose sign
len = PerlIO_read(IoIFP(GvIOp(gv)),SvPVX(TARG)+1,len-1);
^
"pp_sys.c", line 1252: remark #4230-D: 64 bit migration: conversion from
"I32 *" to "int *" may cause target of pointers to have a different
size
SAVETMPS;
^
"pp_sys.c", line 1369: remark #4272-D: conversion from "long" to "STRLEN" may
lose sign
SvCUR_set(PL_formtarget, s - SvPVX_const(PL_formtarget));
^
"pp_sys.c", line 1453: remark #4229-D: 64 bit migration: conversion from "long"
to "const int" may truncate value
MEXTEND(SP, 1);
^
"pp_sys.c", line 1516: remark #4229-D: 64 bit migration: conversion from "long"
to "const int" may truncate value
const int perm = (MAXARG > 3) ? POPi : 0666;
^
"pp_sys.c", line 1517: remark #4229-D: 64 bit migration: conversion from "IV"
to "const int" may truncate value
const int mode = POPi;
^
"pp_sys.c", line 1583: remark #4229-D: 64 bit migration: conversion from "long"
to "int" may truncate value
offset = SvIVx(*++MARK);
^
"pp_sys.c", line 1605: remark #4272-D: conversion from "ssize_t" to "size_t"
may lose sign
wanted = length;
^
"pp_sys.c", line 1625: remark #4229-D: 64 bit migration: conversion from
"ssize_t" to "int" may truncate value
count = PerlSock_recvfrom(PerlIO_fileno(IoIFP(io)), buffer, length, offset,
^
"pp_sys.c", line 1633: remark #4272-D: conversion from "ssize_t" to "STRLEN"
may lose sign
SvCUR_set(bufsv, count);
^
"pp_sys.c", line 1643: remark #4272-D: conversion from "int" to "const STRLEN"
may lose sign
sv_setpvn(TARG, namebuf, bufsize);
^
"pp_sys.c", line 1658: remark #4229-D: 64 bit migration: conversion from
"unsigned long" to "int" may truncate value
offset += blen;
^
"pp_sys.c", line 1663: remark #4229-D: 64 bit migration: conversion from
"unsigned long" to "int" may truncate value
offset += SvCUR(bufsv) - blen;
^
"pp_sys.c", line 1665: remark #4229-D: 64 bit migration: conversion from "long"
to "int" may truncate value
offset = utf8_hop((U8 *)buffer,offset) - (U8 *) buffer;
^
"pp_sys.c", line 1668: remark #4229-D: 64 bit migration: conversion from
"STRLEN" to "int" may truncate value
bufsize = SvCUR(bufsv);
^
"pp_sys.c", line 1687: remark #4272-D: conversion from "int" to "STRLEN" may
lose sign
SvCUR_set(bufsv, offset);
^
"pp_sys.c", line 1703: remark #4272-D: conversion from "ssize_t" to "size_t"
may lose sign
count = PerlLIO_read(PerlIO_fileno(IoIFP(io)),
^
"pp_sys.c", line 1722: remark #4272-D: conversion from "ssize_t" to "size_t"
may lose sign
count = PerlIO_read(IoIFP(io), buffer, length);
^
"pp_sys.c", line 1732: remark #4272-D: conversion from "long" to "STRLEN" may
lose sign
SvCUR_set(read_target, count+(buffer - SvPVX_const(read_target)));
^
"pp_sys.c", line 1746: remark #4229-D: 64 bit migration: conversion from "long"
to "int" may truncate value
offset = bend - SvPVX_const(bufsv);
^
"pp_sys.c", line 1763: remark #4229-D: 64 bit migration: conversion from "long"
to "int" may truncate value
offset = bend - SvPVX_const(bufsv);
^
"pp_sys.c", line 1849: remark #4235-D: conversion from "int" to "char" may
lose significant bits
doing_utf8 = DO_UTF8(bufsv);
^
"pp_sys.c", line 1936: remark #4272-D: conversion from "long" to "size_t" may
lose sign
length = utf8_hop((U8 *)buffer, length) - (U8 *)buffer;
^
"pp_sys.c", line 1949: remark #4272-D: conversion from "I32" to "size_t" may
lose sign
length = len_I32;
^
"pp_sys.c", line 1970: remark #4229-D: 64 bit migration: conversion from "long"
to "const int" may truncate value
const int flags = SvIVx(*++MARK);
^
"pp_sys.c", line 1974: remark #4229-D: 64 bit migration: conversion from
"STRLEN" to "int" may truncate value
retval = PerlSock_sendto(PerlIO_fileno(IoIFP(io)), buffer, blen,
^
"pp_sys.c", line 1975: remark #4229-D: 64 bit migration: conversion from
"STRLEN" to "int" may truncate value
flags, (struct sockaddr *)sockbuf, mlen);
^
"pp_sys.c", line 1979: remark #4229-D: 64 bit migration: conversion from
"STRLEN" to "int" may truncate value
= PerlSock_send(PerlIO_fileno(IoIFP(io)), buffer, blen, flags);
^
"pp_sys.c", line 2094: remark #4229-D: 64 bit migration: conversion from "IV"
to "const int" may truncate value
const int whence = POPi;
^
"pp_sys.c", line 2243: remark #4229-D: 64 bit migration: conversion from "UV"
to "const unsigned int" may truncate value
const unsigned int func = POPu;
^
"pp_sys.c", line 2321: remark #4229-D: 64 bit migration: conversion from "IV"
to "const int" may truncate value
const int argtype = POPi;
^
"pp_sys.c", line 2354: remark #4229-D: 64 bit migration: conversion from "IV"
to "const int" may truncate value
const int protocol = POPi;
^
"pp_sys.c", line 2355: remark #4229-D: 64 bit migration: conversion from "IV"
to "const int" may truncate value
const int type = POPi;
^
"pp_sys.c", line 2356: remark #4229-D: 64 bit migration: conversion from "IV"
to "const int" may truncate value
const int domain = POPi;
^
"pp_sys.c", line 2404: remark #4229-D: 64 bit migration: conversion from "IV"
to "const int" may truncate value
const int protocol = POPi;
^
"pp_sys.c", line 2405: remark #4229-D: 64 bit migration: conversion from "IV"
to "const int" may truncate value
const int type = POPi;
^
"pp_sys.c", line 2406: remark #4229-D: 64 bit migration: conversion from "IV"
to "const int" may truncate value
const int domain = POPi;
^
"pp_sys.c", line 2477: remark #4229-D: 64 bit migration: conversion from
"STRLEN" to "int" may truncate value
if (PerlSock_bind(PerlIO_fileno(IoIFP(io)), (struct sockaddr *)addr, len) >= 0)
^
"pp_sys.c", line 2507: remark #4229-D: 64 bit migration: conversion from
"STRLEN" to "int" may truncate value
if (PerlSock_connect(PerlIO_fileno(IoIFP(io)), (struct sockaddr *)addr, len) >= 0)
^
"pp_sys.c", line 2526: remark #4229-D: 64 bit migration: conversion from "IV"
to "const int" may truncate value
const int backlog = POPi;
^
"pp_sys.c", line 2611: remark #4272-D: conversion from "int" to "const STRLEN"
may lose sign
PUSHp(namebuf, len);
^
"pp_sys.c", line 2631: remark #4229-D: 64 bit migration: conversion from "IV"
to "const int" may truncate value
const int how = POPi;
^
"pp_sys.c", line 2674: remark #4229-D: 64 bit migration: conversion from
"STRLEN" to "int" may truncate value
len = SvCUR(sv);
^
"pp_sys.c", line 2677: remark #4272-D: conversion from "int" to "STRLEN" may
lose sign
SvCUR_set(sv, len);
^
"pp_sys.c", line 2701: remark #4229-D: 64 bit migration: conversion from
"STRLEN" to "int" may truncate value
len = l;
^
"pp_sys.c", line 2745: remark #4272-D: conversion from "int" to "STRLEN" may
lose sign
SvCUR_set(sv, len);
^
"pp_sys.c", line 2775: remark #4272-D: conversion from "int" to "STRLEN" may
lose sign
SvCUR_set(sv, len);
^
"pp_sys.c", line 2862: remark #4235-D: conversion from "unsigned int" to "U16"
may lose significant bits
PL_laststype = PL_op->op_type;
^
"pp_sys.c", line 3025: remark #4235-D: conversion from "int" to "mode_t" may
lose significant bits
result = PERL_EFF_ACCESS(name, access_mode);
^
"pp_sys.c", line 3050: remark #4235-D: conversion from "int" to "mode_t" may
lose significant bits
if (cando(stat_mode, effective, &PL_statcache))
^
"pp_sys.c", line 3290: remark #4229-D: 64 bit migration: conversion from "I32"
to "int" may truncate value
(void)PerlIO_ungetc(IoIFP(io),i);
^
"pp_sys.c", line 3589: remark #4272-D: conversion from "int" to "const STRLEN"
may lose sign
PUSHp(buf, len);
^
"pp_sys.c", line 3714: remark #4229-D: 64 bit migration: conversion from "long"
to "const int" may truncate value
const int mode = (MAXARG > 1) ? POPi : 0777;
^
"pp_sys.c", line 3720: remark #4235-D: conversion from "int" to "mode_t" may
lose significant bits
SETi( PerlDir_mkdir(tmps, mode) >= 0 );
^
"pp_sys.c", line 3815: remark #4272-D: conversion from "short" to
"const STRLEN" may lose sign
sv = newSVpvn(dp->d_name, dp->d_namlen);
^
"pp_sys.c", line 4015: remark #4229-D: 64 bit migration: conversion from "I32"
to "pid_t" may truncate value
childpid = wait4pid(-1, &argflags, 0);
^
"pp_sys.c", line 4017: remark #4229-D: 64 bit migration: conversion from "I32"
to "pid_t" may truncate value
while ((childpid = wait4pid(-1, &argflags, 0)) == -1 &&
^
"pp_sys.c", line 4039: remark #4229-D: 64 bit migration: conversion from "IV"
to "const int" may truncate value
const int optype = POPi;
^
"pp_sys.c", line 4040: remark #4229-D: 64 bit migration: conversion from "IV"
to "const pid_t" may truncate value
const Pid_t pid = TOPi;
^
"pp_sys.c", line 4045: remark #4229-D: 64 bit migration: conversion from "I32"
to "pid_t" may truncate value
result = wait4pid(pid, &argflags, optype);
^
"pp_sys.c", line 4047: remark #4229-D: 64 bit migration: conversion from "I32"
to "pid_t" may truncate value
while ((result = wait4pid(pid, &argflags, optype)) == -1 &&
^
"pp_sys.c", line 4119: remark #4229-D: 64 bit migration: conversion from "I32"
to "int" may truncate value
result = wait4pid(childpid, &status, 0);
^
"pp_sys.c", line 4139: remark #4229-D: 64 bit migration: conversion from
"unsigned long" to "unsigned int" may truncate value
n += n1;
^
"pp_sys.c", line 4160: remark #4229-D: 64 bit migration: conversion from "I32"
to "int" may truncate value
value = (I32)do_aexec5(really, MARK, SP, pp[1], did_pipes);
^
"pp_sys.c", line 4163: remark #4229-D: 64 bit migration: conversion from "I32"
to "int" may truncate value
value = (I32)do_aexec5(NULL, MARK, SP, pp[1], did_pipes);
^
"pp_sys.c", line 4165: remark #4229-D: 64 bit migration: conversion from "I32"
to "int" may truncate value
value = (I32)do_exec3(SvPVx_nolen(sv_mortalcopy(*SP)), pp[1], did_pipes);
^
"pp_sys.c", line 4275: remark #4229-D: 64 bit migration: conversion from "long"
to "const pid_t" may truncate value
const Pid_t pid = (MAXARG < 1) ? 0 : SvIVx(POPs);
^
"pp_sys.c", line 4278: remark #4229-D: 64 bit migration: conversion from "I32"
to "pid_t" may truncate value
pgrp = (I32)BSD_GETPGRP(pid);
^
"pp_sys.c", line 4302: remark #4229-D: 64 bit migration: conversion from "IV"
to "pid_t" may truncate value
pgrp = POPi;
^
"pp_sys.c", line 4303: remark #4229-D: 64 bit migration: conversion from "IV"
to "pid_t" may truncate value
pid = TOPi;
^
"pp_sys.c", line 4327: remark #4229-D: 64 bit migration: conversion from "IV"
to "const int" may truncate value
const int who = POPi;
^
"pp_sys.c", line 4328: remark #4229-D: 64 bit migration: conversion from "IV"
to "const int" may truncate value
const int which = TOPi;
^
"pp_sys.c", line 4340: remark #4229-D: 64 bit migration: conversion from "IV"
to "const int" may truncate value
const int niceval = POPi;
^
"pp_sys.c", line 4341: remark #4229-D: 64 bit migration: conversion from "IV"
to "const int" may truncate value
const int who = POPi;
^
"pp_sys.c", line 4342: remark #4229-D: 64 bit migration: conversion from "IV"
to "const int" may truncate value
const int which = TOPi;
^
"pp_sys.c", line 4509: remark #4229-D: 64 bit migration: conversion from "IV"
to "int" may truncate value
anum = POPi;
^
"pp_sys.c", line 4579: remark #4229-D: 64 bit migration: conversion from "I32"
to "const int" may truncate value
const int anum = do_ipcget(PL_op->op_type, MARK, SP);
^
"pp_sys.c", line 4594: remark #4229-D: 64 bit migration: conversion from "I32"
to "const int" may truncate value
const int anum = do_ipcctl(PL_op->op_type, MARK, SP);
^
"pp_sys.c", line 4661: remark #4229-D: 64 bit migration: conversion from "IV"
to "const int" may truncate value
const int addrtype = POPi;
^
"pp_sys.c", line 4694: remark #4272-D: conversion from "int" to "const STRLEN"
may lose sign
sv_setpvn(sv, hent->h_addr, hent->h_length);
^
"pp_sys.c", line 4706: remark #4272-D: conversion from "int" to "unsigned long"
may lose sign
len = hent->h_length;
^
"pp_sys.c", line 4748: remark #4229-D: 64 bit migration: conversion from "IV"
to "const int" may truncate value
const int addrtype = POPi;
^
"pp_sys.c", line 4821: remark #4229-D: 64 bit migration: conversion from "IV"
to "const int" may truncate value
const int number = POPi;
^
"pp_sys.c", line 4937: remark #4229-D: 64 bit migration: conversion from "IV"
to "int" may truncate value
PerlSock_sethostent(TOPi);
^
"pp_sys.c", line 4948: remark #4229-D: 64 bit migration: conversion from "IV"
to "int" may truncate value
(void)PerlSock_setnetent(TOPi);
^
"pp_sys.c", line 4959: remark #4229-D: 64 bit migration: conversion from "IV"
to "int" may truncate value
(void)PerlSock_setprotoent(TOPi);
^
"pp_sys.c", line 4970: remark #4229-D: 64 bit migration: conversion from "IV"
to "int" may truncate value
(void)PerlSock_setservent(TOPi);
^
"pp_sys.c", line 5107: remark #4229-D: 64 bit migration: conversion from "IV"
to "uid_t" may truncate value
Uid_t uid = POPi;
^
"pp_sys.c", line 5292: remark #4229-D: 64 bit migration: conversion from "IV"
to "const gid_t" may truncate value
const Gid_t gid = POPi;
^
"pp_sys.c", line 5411: remark #4272-D: conversion from "long" to
"unsigned long" may lose sign
a[i++] = SvIV(*MARK);
^
"pp_sys.c", line 5425: remark #4229-D: 64 bit migration: conversion from
"unsigned long" to "int" may truncate value
retval = syscall(a[0]);
^
"pp_sys.c", line 5428: remark #4229-D: 64 bit migration: conversion from
"unsigned long" to "int" may truncate value
retval = syscall(a[0],a[1]);
^
"pp_sys.c", line 5431: remark #4229-D: 64 bit migration: conversion from
"unsigned long" to "int" may truncate value
retval = syscall(a[0],a[1],a[2]);
^
"pp_sys.c", line 5434: remark #4229-D: 64 bit migration: conversion from
"unsigned long" to "int" may truncate value
retval = syscall(a[0],a[1],a[2],a[3]);
^
"pp_sys.c", line 5437: remark #4229-D: 64 bit migration: conversion from
"unsigned long" to "int" may truncate value
retval = syscall(a[0],a[1],a[2],a[3],a[4]);
^
"pp_sys.c", line 5440: remark #4229-D: 64 bit migration: conversion from
"unsigned long" to "int" may truncate value
retval = syscall(a[0],a[1],a[2],a[3],a[4],a[5]);
^
"pp_sys.c", line 5443: remark #4229-D: 64 bit migration: conversion from
"unsigned long" to "int" may truncate value
retval = syscall(a[0],a[1],a[2],a[3],a[4],a[5],a[6]);
^
"pp_sys.c", line 5446: remark #4229-D: 64 bit migration: conversion from
"unsigned long" to "int" may truncate value
retval = syscall(a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7]);
^
"pp_sys.c", line 1676: remark #4298-D: 64 bit migration: addition result could
be truncated before cast to bigger sized type
Zero(buffer+bufsize, offset-bufsize, char);
^
"pp_sys.c", line 1676: remark #4298-D: 64 bit migration: addition result could
be truncated before cast to bigger sized type
Zero(buffer+bufsize, offset-bufsize, char);
^
"pp_sys.c", line 1362, procedure Perl_pp_leavewrite: warning #20200-D:
Potential null pointer dereference through s is detected (null
definition:pp_sys.c, line 1362)
"pp_sys.c", line 1406, procedure Perl_pp_leavewrite: warning #20200-D:
Potential null pointer dereference through io is detected
"pp_sys.c", line 4134, procedure Perl_pp_system: warning #20206-D: Out of
bound access (In expression "read(*&pp[0],
(void*)((char*)&errkid+n), 4 - n)", variable "errkid"
[pp_sys.c:4129] (type: int ) has byte range [0 .. 3], writing byte
range [0 .. 6].)
--
H.Merijn Brand Amsterdam Perl Mongers http://amsterdam.pm.org/
using & porting perl 5.6.2, 5.8.x, 5.10.x, 5.11.x on HP-UX 10.20, 11.00,
11.11, 11.23, and 11.31, SuSE 10.1, 10.2, and 10.3, AIX 5.2, and Cygwin.
http://mirrors.develooper.com/hpux/ http://www.test-smoke.org/
http://qa.perl.org http://www.goldmark.org/jeff/stupid-disclaimers/
-
Warnings, how informative?
by H.Merijn Brand