some NONNULLs

Update the prototypes of some functions which return a pointer that
will never be NULL.  Only covers pager.c and part of objnam.c.
This commit is contained in:
PatR
2023-12-20 15:55:21 -08:00
parent 07ef4583ce
commit a696cb8d90
2 changed files with 60 additions and 59 deletions
+48 -47
View File
@@ -26,7 +26,7 @@
* *
* Description of the NONNULL macros: * Description of the NONNULL macros:
* *
* NONULL The function return value is never NULL. * NONNULL The function return value is never NULL.
* NONNULLPTRS Every pointer argument is declared nonnull. * NONNULLPTRS Every pointer argument is declared nonnull.
* NONNULLARG1 The 1st argument is declared nonnull. * NONNULLARG1 The 1st argument is declared nonnull.
* NONNULLARG2 The 2nd argument is declared nonnull. * NONNULLARG2 The 2nd argument is declared nonnull.
@@ -2106,66 +2106,65 @@ extern char *killer_xname(struct obj *) NONNULLARG1;
extern char *short_oname(struct obj *, char *(*)(struct obj *), extern char *short_oname(struct obj *, char *(*)(struct obj *),
char *(*)(struct obj *), unsigned) NONNULLARG12; char *(*)(struct obj *), unsigned) NONNULLARG12;
extern const char *singular(struct obj *, char *(*)(struct obj *)) NONNULLPTRS; extern const char *singular(struct obj *, char *(*)(struct obj *)) NONNULLPTRS;
extern char *just_an(char *, const char *) NONNULLARG12; extern char *just_an(char *, const char *) NONNULL NONNULLARG12;
/* an(), the() contain tests for NULL arg, preventing NONNULLARG1 */ /* an(), the() contain tests for NULL arg, preventing NONNULLARG1 */
extern char *an(const char *) NO_NONNULLS; extern char *an(const char *) NONNULL NO_NONNULLS;
extern char *An(const char *) NO_NONNULLS; extern char *An(const char *) NONNULL NO_NONNULLS;
extern char *The(const char *) NO_NONNULLS; extern char *The(const char *) NONNULL NO_NONNULLS;
extern char *the(const char *) NO_NONNULLS; extern char *the(const char *) NONNULL NO_NONNULLS;
extern char *aobjnam(struct obj *, const char *) NONNULLARG1; extern char *aobjnam(struct obj *, const char *) NONNULL NONNULLARG1;
extern char *yobjnam(struct obj *, const char *) NONNULLARG1; extern char *yobjnam(struct obj *, const char *) NONNULL NONNULLARG1;
extern char *Yobjnam2(struct obj *, const char *) NONNULLARG1; extern char *Yobjnam2(struct obj *, const char *) NONNULL NONNULLARG1;
extern char *Tobjnam(struct obj *, const char *) NONNULLARG1; extern char *Tobjnam(struct obj *, const char *) NONNULL NONNULLARG1;
extern char *otense(struct obj *, const char *) NONNULLARG12; extern char *otense(struct obj *, const char *) NONNULL NONNULLARG12;
extern char *vtense(const char *, const char *) NONNULLARG2; extern char *vtense(const char *, const char *) NONNULL NONNULLARG2;
extern char *Doname2(struct obj *) NONNULLARG1; extern char *Doname2(struct obj *) NONNULL NONNULLARG1;
extern char *yname(struct obj *) NONNULLARG1; extern char *yname(struct obj *) NONNULL NONNULLARG1;
extern char *Yname2(struct obj *) NONNULLARG1; extern char *Yname2(struct obj *) NONNULL NONNULLARG1;
extern char *ysimple_name(struct obj *) NONNULLARG1; extern char *ysimple_name(struct obj *) NONNULL NONNULLARG1;
extern char *Ysimple_name2(struct obj *) NONNULLARG1; extern char *Ysimple_name2(struct obj *) NONNULL NONNULLARG1;
extern char *simpleonames(struct obj *) NONNULLARG1; extern char *simpleonames(struct obj *) NONNULL NONNULLARG1;
extern char *ansimpleoname(struct obj *) NONNULLARG1; extern char *ansimpleoname(struct obj *) NONNULL NONNULLARG1;
extern char *thesimpleoname(struct obj *) NONNULLARG1; extern char *thesimpleoname(struct obj *) NONNULL NONNULLARG1;
extern char *actualoname(struct obj *) NONNULLARG1; extern char *actualoname(struct obj *) NONNULL NONNULLARG1;
extern char *bare_artifactname(struct obj *) NONNULLARG1; extern char *bare_artifactname(struct obj *) NONNULL NONNULLARG1;
/* makeplural() and makesingular() have tests for NULL arg1, and code path /* makeplural() and makesingular() never return NULL but have tests for NULL
that leads to impossible(), preventing NONNULLARG1 */ arg1, and code path that leads to impossible(), preventing NONNULLARG1 */
extern char *makeplural(const char *) NO_NONNULLS; extern char *makeplural(const char *) NONNULL NO_NONNULLS;
extern char *makesingular(const char *) NO_NONNULLS; extern char *makesingular(const char *) NONNULL NO_NONNULLS;
/* readobjnam() allows a NULL to trigger code path for random; if it /* readobjnam() can return NULL and allows a NULL to trigger code path for
and its caller were modifed to look for/provide a particular address random object */
to use as a trigger instead, it could be declared NONNULLARG1 */
extern struct obj *readobjnam(char *, struct obj *) NO_NONNULLS; extern struct obj *readobjnam(char *, struct obj *) NO_NONNULLS;
extern int rnd_class(int, int); extern int rnd_class(int, int);
/* discover_object() passes NULL arg2 to Japanese_item_name(), /* discover_object() passes NULL arg2 to Japanese_item_name(),
* preventing NONNULLARG2 */ * preventing NONNULLARG2 */
extern const char *Japanese_item_name(int, const char *) NO_NONNULLS; extern const char *Japanese_item_name(int, const char *) NO_NONNULLS;
extern const char *armor_simple_name(struct obj *) NONNULLARG1; extern const char *armor_simple_name(struct obj *) NONNULL NONNULLARG1;
/* suit_simple_name has its code in a NULL arg test /* suit_simple_name has its code in a NULL arg test
conditional block, preventing NONNULLARG1 */ conditional block, preventing NONNULLARG1 */
extern const char *suit_simple_name(struct obj *) NO_NONNULLS; extern const char *suit_simple_name(struct obj *) NONNULL NO_NONNULLS;
/* cloak_simple_name has its code in a NULL arg test /* cloak_simple_name has its code in a NULL arg test
conditional block, preventing NONNULLARG1 */ conditional block, preventing NONNULLARG1 */
extern const char *cloak_simple_name(struct obj *) NO_NONNULLS; extern const char *cloak_simple_name(struct obj *) NONNULL NO_NONNULLS;
/* helm_simple_name always just returns hardcoded literals */ /* helm_simple_name always just returns hardcoded literals */
extern const char *helm_simple_name(struct obj *) NO_NONNULLS; extern const char *helm_simple_name(struct obj *) NONNULL NO_NONNULLS;
/* gloves_simple_name has its code in a NULL arg test /* gloves_simple_name has its code in a NULL arg test
conditional block, preventing NONNULLARG1 */ conditional block, preventing NONNULLARG1 */
extern const char *gloves_simple_name(struct obj *) NO_NONNULLS; extern const char *gloves_simple_name(struct obj *) NONNULL NO_NONNULLS;
/* boots_simple_name has its code in a NULL arg test /* boots_simple_name has its code in a NULL arg test
conditional block, preventing NONNULLARG1 */ conditional block, preventing NONNULLARG1 */
extern const char *boots_simple_name(struct obj *) NO_NONNULLS; extern const char *boots_simple_name(struct obj *) NONNULL NO_NONNULLS;
/* shield_simple_name has its code in a NULL arg test /* shield_simple_name has its code in a NULL arg test
conditional block, preventing NONNULLARG1 */ conditional block, preventing NONNULLARG1 */
extern const char *shield_simple_name(struct obj *) NO_NONNULLS; extern const char *shield_simple_name(struct obj *) NONNULL NO_NONNULLS;
/* shirt_simple_name always just returns hardcoded "shirt" */ /* shirt_simple_name always just returns hardcoded "shirt" */
extern const char *shirt_simple_name(struct obj *) NO_NONNULLS; extern const char *shirt_simple_name(struct obj *) NONNULL NO_NONNULLS;
extern const char *mimic_obj_name(struct monst *) NONNULLARG1; extern const char *mimic_obj_name(struct monst *) NONNULL NONNULLARG1;
/* safe_qbuf() contains tests for NULL arg2 and arg3, qprefix and qsuffix, /* safe_qbuf() contains tests for NULL arg2 and arg3, qprefix and qsuffix,
preventing use of NONNULLPTRS. NONNULLARG14567 is not defined */ preventing use of NONNULLPTRS. NONNULLARG14567 is not defined */
extern char *safe_qbuf(char *, const char *, const char *, struct obj *, extern char *safe_qbuf(char *, const char *, const char *, struct obj *,
char *(*)(struct obj *), char *(*)(struct obj *), char * (*)(struct obj *), char * (*)(struct obj *),
const char *) NO_NONNULLS; const char *) NONNULL NONNULLARG14;
extern int shiny_obj(char); extern int shiny_obj(char);
/* ### options.c ### */ /* ### options.c ### */
@@ -2218,21 +2217,23 @@ extern void msgtype_free(void);
/* ### pager.c ### */ /* ### pager.c ### */
extern char *self_lookat(char *) NONNULLARG1; extern char *self_lookat(char *) NONNULL NONNULLARG1;
extern char *monhealthdescr(struct monst *mon, boolean, char *) NONNULLARG3; extern char *monhealthdescr(struct monst *mon, boolean,
char *) NONNULL NONNULLARG3;
extern void mhidden_description(struct monst *, boolean, char *) NONNULLPTRS; extern void mhidden_description(struct monst *, boolean, char *) NONNULLPTRS;
extern boolean object_from_map(int, coordxy, coordxy, struct obj **) NONNULLPTRS; extern boolean object_from_map(int, coordxy, coordxy,
extern const char *waterbody_name(coordxy, coordxy); struct obj **) NONNULLPTRS;
extern char *ice_descr(coordxy, coordxy, char *) NONNULLARG3; extern const char *waterbody_name(coordxy, coordxy) NONNULL;
extern char *ice_descr(coordxy, coordxy, char *) NONNULL NONNULLARG3;
extern boolean ia_checkfile(struct obj *) NONNULLARG1; extern boolean ia_checkfile(struct obj *) NONNULLARG1;
extern int do_screen_description(coord, boolean, int, char *, const char **, extern int do_screen_description(coord, boolean, int, char *, const char **,
struct permonst **) NONNULLARG45; struct permonst **) NONNULLARG45;
extern int do_look(int, coord *); extern int do_look(int, coord *);
extern int dowhatis(void); extern int dowhatis(void);
extern int doquickwhatis(void); extern int doquickwhatis(void);
extern int doidtrap(void); extern int doidtrap(void);
extern int dowhatdoes(void); extern int dowhatdoes(void);
extern char *dowhatdoes_core(char, char *) NONNULLARG2; extern char *dowhatdoes_core(char, char *) NONNULLARG2; /*might return NULL*/
extern int dohelp(void); extern int dohelp(void);
extern int dohistory(void); extern int dohistory(void);
+12 -12
View File
@@ -49,7 +49,7 @@ static boolean wishymatch(const char *, const char *, boolean);
static short rnd_otyp_by_wpnskill(schar); static short rnd_otyp_by_wpnskill(schar);
static short rnd_otyp_by_namedesc(const char *, char, int); static short rnd_otyp_by_namedesc(const char *, char, int);
static struct obj *wizterrainwish(struct _readobjnam_data *); static struct obj *wizterrainwish(struct _readobjnam_data *);
static void dbterrainmesg(const char *, coordxy, coordxy); static void dbterrainmesg(const char *, coordxy, coordxy) NONNULLARG1;
static void readobjnam_init(char *, struct _readobjnam_data *); static void readobjnam_init(char *, struct _readobjnam_data *);
static int readobjnam_preparse(struct _readobjnam_data *); static int readobjnam_preparse(struct _readobjnam_data *);
static void readobjnam_parse_charges(struct _readobjnam_data *); static void readobjnam_parse_charges(struct _readobjnam_data *);
@@ -2018,7 +2018,7 @@ aobjnam(struct obj *otmp, const char *verb)
/* combine yname and aobjnam eg "your count cxname(otmp)" */ /* combine yname and aobjnam eg "your count cxname(otmp)" */
char * char *
yobjnam(struct obj* obj, const char *verb) yobjnam(struct obj *obj, const char *verb)
{ {
char *s = aobjnam(obj, verb); char *s = aobjnam(obj, verb);
@@ -2036,7 +2036,7 @@ yobjnam(struct obj* obj, const char *verb)
/* combine Yname2 and aobjnam eg "Your count cxname(otmp)" */ /* combine Yname2 and aobjnam eg "Your count cxname(otmp)" */
char * char *
Yobjnam2(struct obj* obj, const char *verb) Yobjnam2(struct obj *obj, const char *verb)
{ {
register char *s = yobjnam(obj, verb); register char *s = yobjnam(obj, verb);
@@ -2046,7 +2046,7 @@ Yobjnam2(struct obj* obj, const char *verb)
/* like aobjnam, but prepend "The", not count, and use xname */ /* like aobjnam, but prepend "The", not count, and use xname */
char * char *
Tobjnam(struct obj* otmp, const char *verb) Tobjnam(struct obj *otmp, const char *verb)
{ {
char *bp = The(xname(otmp)); char *bp = The(xname(otmp));
@@ -2059,7 +2059,7 @@ Tobjnam(struct obj* otmp, const char *verb)
/* capitalized variant of doname() */ /* capitalized variant of doname() */
char * char *
Doname2(struct obj* obj) Doname2(struct obj *obj)
{ {
char *s = doname(obj); char *s = doname(obj);
@@ -2070,7 +2070,7 @@ Doname2(struct obj* obj)
#if 0 /* stalled-out work in progress */ #if 0 /* stalled-out work in progress */
/* Doname2() for itemized buying of 'obj' from a shop */ /* Doname2() for itemized buying of 'obj' from a shop */
char * char *
payDoname(struct obj* obj) payDoname(struct obj *obj)
{ {
static const char and_contents[] = " and its contents"; static const char and_contents[] = " and its contents";
char *p = doname(obj); char *p = doname(obj);
@@ -2092,7 +2092,7 @@ payDoname(struct obj* obj)
/* returns "[your ]xname(obj)" or "Foobar's xname(obj)" or "the xname(obj)" */ /* returns "[your ]xname(obj)" or "Foobar's xname(obj)" or "the xname(obj)" */
char * char *
yname(struct obj* obj) yname(struct obj *obj)
{ {
char *s = cxname(obj); char *s = cxname(obj);
@@ -2111,7 +2111,7 @@ yname(struct obj* obj)
/* capitalized variant of yname() */ /* capitalized variant of yname() */
char * char *
Yname2(struct obj* obj) Yname2(struct obj *obj)
{ {
char *s = yname(obj); char *s = yname(obj);
@@ -2124,7 +2124,7 @@ Yname2(struct obj* obj)
* or "the minimal_xname(obj)" * or "the minimal_xname(obj)"
*/ */
char * char *
ysimple_name(struct obj* obj) ysimple_name(struct obj *obj)
{ {
char *outbuf = nextobuf(); char *outbuf = nextobuf();
char *s = shk_your(outbuf, obj); /* assert( s == outbuf ); */ char *s = shk_your(outbuf, obj); /* assert( s == outbuf ); */
@@ -2135,7 +2135,7 @@ ysimple_name(struct obj* obj)
/* capitalized variant of ysimple_name() */ /* capitalized variant of ysimple_name() */
char * char *
Ysimple_name2(struct obj* obj) Ysimple_name2(struct obj *obj)
{ {
char *s = ysimple_name(obj); char *s = ysimple_name(obj);
@@ -2145,7 +2145,7 @@ Ysimple_name2(struct obj* obj)
/* "scroll" or "scrolls" */ /* "scroll" or "scrolls" */
char * char *
simpleonames(struct obj* obj) simpleonames(struct obj *obj)
{ {
char *obufp, *simpleoname = minimal_xname(obj); char *obufp, *simpleoname = minimal_xname(obj);
@@ -2163,7 +2163,7 @@ simpleonames(struct obj* obj)
/* "a scroll" or "scrolls"; "a silver bell" or "the Bell of Opening" */ /* "a scroll" or "scrolls"; "a silver bell" or "the Bell of Opening" */
char * char *
ansimpleoname(struct obj* obj) ansimpleoname(struct obj *obj)
{ {
char *obufp, *simpleoname = simpleonames(obj); char *obufp, *simpleoname = simpleonames(obj);
int otyp = obj->otyp; int otyp = obj->otyp;