diff --git a/include/extern.h b/include/extern.h index 249e72074..a409c6fff 100644 --- a/include/extern.h +++ b/include/extern.h @@ -26,7 +26,7 @@ * * 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. * NONNULLARG1 The 1st 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 *), char *(*)(struct obj *), unsigned) NONNULLARG12; 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 */ -extern char *an(const char *) NO_NONNULLS; -extern char *An(const char *) NO_NONNULLS; -extern char *The(const char *) NO_NONNULLS; -extern char *the(const char *) NO_NONNULLS; -extern char *aobjnam(struct obj *, const char *) NONNULLARG1; -extern char *yobjnam(struct obj *, const char *) NONNULLARG1; -extern char *Yobjnam2(struct obj *, const char *) NONNULLARG1; -extern char *Tobjnam(struct obj *, const char *) NONNULLARG1; -extern char *otense(struct obj *, const char *) NONNULLARG12; -extern char *vtense(const char *, const char *) NONNULLARG2; -extern char *Doname2(struct obj *) NONNULLARG1; -extern char *yname(struct obj *) NONNULLARG1; -extern char *Yname2(struct obj *) NONNULLARG1; -extern char *ysimple_name(struct obj *) NONNULLARG1; -extern char *Ysimple_name2(struct obj *) NONNULLARG1; -extern char *simpleonames(struct obj *) NONNULLARG1; -extern char *ansimpleoname(struct obj *) NONNULLARG1; -extern char *thesimpleoname(struct obj *) NONNULLARG1; -extern char *actualoname(struct obj *) NONNULLARG1; -extern char *bare_artifactname(struct obj *) NONNULLARG1; -/* makeplural() and makesingular() have tests for NULL arg1, and code path - that leads to impossible(), preventing NONNULLARG1 */ -extern char *makeplural(const char *) NO_NONNULLS; -extern char *makesingular(const char *) NO_NONNULLS; -/* readobjnam() allows a NULL to trigger code path for random; if it - and its caller were modifed to look for/provide a particular address - to use as a trigger instead, it could be declared NONNULLARG1 */ +extern char *an(const char *) NONNULL NO_NONNULLS; +extern char *An(const char *) NONNULL NO_NONNULLS; +extern char *The(const char *) NONNULL NO_NONNULLS; +extern char *the(const char *) NONNULL NO_NONNULLS; +extern char *aobjnam(struct obj *, const char *) NONNULL NONNULLARG1; +extern char *yobjnam(struct obj *, const char *) NONNULL NONNULLARG1; +extern char *Yobjnam2(struct obj *, const char *) NONNULL NONNULLARG1; +extern char *Tobjnam(struct obj *, const char *) NONNULL NONNULLARG1; +extern char *otense(struct obj *, const char *) NONNULL NONNULLARG12; +extern char *vtense(const char *, const char *) NONNULL NONNULLARG2; +extern char *Doname2(struct obj *) NONNULL NONNULLARG1; +extern char *yname(struct obj *) NONNULL NONNULLARG1; +extern char *Yname2(struct obj *) NONNULL NONNULLARG1; +extern char *ysimple_name(struct obj *) NONNULL NONNULLARG1; +extern char *Ysimple_name2(struct obj *) NONNULL NONNULLARG1; +extern char *simpleonames(struct obj *) NONNULL NONNULLARG1; +extern char *ansimpleoname(struct obj *) NONNULL NONNULLARG1; +extern char *thesimpleoname(struct obj *) NONNULL NONNULLARG1; +extern char *actualoname(struct obj *) NONNULL NONNULLARG1; +extern char *bare_artifactname(struct obj *) NONNULL NONNULLARG1; +/* makeplural() and makesingular() never return NULL but have tests for NULL + arg1, and code path that leads to impossible(), preventing NONNULLARG1 */ +extern char *makeplural(const char *) NONNULL NO_NONNULLS; +extern char *makesingular(const char *) NONNULL NO_NONNULLS; +/* readobjnam() can return NULL and allows a NULL to trigger code path for + random object */ extern struct obj *readobjnam(char *, struct obj *) NO_NONNULLS; extern int rnd_class(int, int); /* discover_object() passes NULL arg2 to Japanese_item_name(), * preventing NONNULLARG2 */ 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 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 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 */ -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 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 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 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" */ -extern const char *shirt_simple_name(struct obj *) NO_NONNULLS; -extern const char *mimic_obj_name(struct monst *) NONNULLARG1; +extern const char *shirt_simple_name(struct obj *) NONNULL NO_NONNULLS; +extern const char *mimic_obj_name(struct monst *) NONNULL NONNULLARG1; /* safe_qbuf() contains tests for NULL arg2 and arg3, qprefix and qsuffix, preventing use of NONNULLPTRS. NONNULLARG14567 is not defined */ extern char *safe_qbuf(char *, const char *, const char *, struct obj *, - char *(*)(struct obj *), char *(*)(struct obj *), - const char *) NO_NONNULLS; + char * (*)(struct obj *), char * (*)(struct obj *), + const char *) NONNULL NONNULLARG14; extern int shiny_obj(char); /* ### options.c ### */ @@ -2218,21 +2217,23 @@ extern void msgtype_free(void); /* ### pager.c ### */ -extern char *self_lookat(char *) NONNULLARG1; -extern char *monhealthdescr(struct monst *mon, boolean, char *) NONNULLARG3; +extern char *self_lookat(char *) NONNULL NONNULLARG1; +extern char *monhealthdescr(struct monst *mon, boolean, + char *) NONNULL NONNULLARG3; extern void mhidden_description(struct monst *, boolean, char *) NONNULLPTRS; -extern boolean object_from_map(int, coordxy, coordxy, struct obj **) NONNULLPTRS; -extern const char *waterbody_name(coordxy, coordxy); -extern char *ice_descr(coordxy, coordxy, char *) NONNULLARG3; +extern boolean object_from_map(int, coordxy, coordxy, + struct obj **) NONNULLPTRS; +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 int do_screen_description(coord, boolean, int, char *, const char **, - struct permonst **) NONNULLARG45; + struct permonst **) NONNULLARG45; extern int do_look(int, coord *); extern int dowhatis(void); extern int doquickwhatis(void); extern int doidtrap(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 dohistory(void); diff --git a/src/objnam.c b/src/objnam.c index 71c7a49f8..a7ee15687 100644 --- a/src/objnam.c +++ b/src/objnam.c @@ -49,7 +49,7 @@ static boolean wishymatch(const char *, const char *, boolean); static short rnd_otyp_by_wpnskill(schar); static short rnd_otyp_by_namedesc(const char *, char, int); 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 int readobjnam_preparse(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)" */ char * -yobjnam(struct obj* obj, const char *verb) +yobjnam(struct obj *obj, const char *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)" */ char * -Yobjnam2(struct obj* obj, const char *verb) +Yobjnam2(struct obj *obj, const char *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 */ char * -Tobjnam(struct obj* otmp, const char *verb) +Tobjnam(struct obj *otmp, const char *verb) { char *bp = The(xname(otmp)); @@ -2059,7 +2059,7 @@ Tobjnam(struct obj* otmp, const char *verb) /* capitalized variant of doname() */ char * -Doname2(struct obj* obj) +Doname2(struct obj *obj) { char *s = doname(obj); @@ -2070,7 +2070,7 @@ Doname2(struct obj* obj) #if 0 /* stalled-out work in progress */ /* Doname2() for itemized buying of 'obj' from a shop */ char * -payDoname(struct obj* obj) +payDoname(struct obj *obj) { static const char and_contents[] = " and its contents"; 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)" */ char * -yname(struct obj* obj) +yname(struct obj *obj) { char *s = cxname(obj); @@ -2111,7 +2111,7 @@ yname(struct obj* obj) /* capitalized variant of yname() */ char * -Yname2(struct obj* obj) +Yname2(struct obj *obj) { char *s = yname(obj); @@ -2124,7 +2124,7 @@ Yname2(struct obj* obj) * or "the minimal_xname(obj)" */ char * -ysimple_name(struct obj* obj) +ysimple_name(struct obj *obj) { char *outbuf = nextobuf(); char *s = shk_your(outbuf, obj); /* assert( s == outbuf ); */ @@ -2135,7 +2135,7 @@ ysimple_name(struct obj* obj) /* capitalized variant of ysimple_name() */ char * -Ysimple_name2(struct obj* obj) +Ysimple_name2(struct obj *obj) { char *s = ysimple_name(obj); @@ -2145,7 +2145,7 @@ Ysimple_name2(struct obj* obj) /* "scroll" or "scrolls" */ char * -simpleonames(struct obj* obj) +simpleonames(struct obj *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" */ char * -ansimpleoname(struct obj* obj) +ansimpleoname(struct obj *obj) { char *obufp, *simpleoname = simpleonames(obj); int otyp = obj->otyp;