Text File

Aucbvax.2275 fa.unix-wizards utzoo!duke!decvax!ucbvax!saks@LL-XN Tue Jul 14 11:41:47 1981 lint and enumerated types From: Joft Saks <SAKS@LL-XN> For some reason or another, our lint does not seem to like some things about enumerated types. I have included below two (unrelated) C-source files which use enumerated types.

Note that in the first, I have used the feature which allows one to set a particular value in the enum - list. (Let's forget for a moment any qualms we may have about said feature.) Applications of lint to this program yield the following message:

"puterr.c", line 35: warning: nonportable character comparison

Applications of lint to the second program yield the message:

stuff value used inconsistently "test.c"(12) :: "test.c"(20)

Ken Schroder (schroder at ll-asg) thinks older versions of lint may have trouble with functions which return enumerated types. If anyone else has encountered troubles, or has some ideas/suggestions/comments/anything at all useful to say about this, please let me know. Many thanks.

--------------------------------------------------------------------------------

puterr.c -------- /* * print an error message */ #include <STDIO.H> typedef enum { ERRNONE = -1, ERRNOTFOUND, ERRNOTPLAIN, ERRDIRACC, ERRNAMELONG, ERRREADACC, ERRWRITEACC, ERRCHNGSACC, ERRDIFFEXEC } tpserror;

tpserror puterr(e, progname, s) tpserror e; char *progname, *s; { static char *format[] = { "%s: can't find %s\n", "%s: %s is special file or directory\n", "%s: can't access containing directory %s\n", "%s: file name too long %s\n", "%s: no read privileges on %s\n", "%s: no write privileges on %s\n", "%s: can't access changes file for %s\n", "%s: can't execute 'diff' for %s\n" };

if (e != ERRNONE) fprintf(stderr, format[(int)e], progname, s); return (e); }

--------------------------------------------------------------------------------

test.c: -------

#include <STDIO.H>

typedef enum { RED, GREEN, BLUE } color;

color stuff() {

return (RED); }

main() {

if (stuff() == RED) fprintf(stderr, "stuff == RED\n"); else fprintf(stderr, "stuff != RED\n"); exit(0); }

----------------------------------------------------------------- gopher://quux.org/ conversion by John Goerzen <jgoerzen@complete.org> of http://communication.ucsd.edu/A-News/

This Usenet Oldnews Archive article may be copied and distributed freely, provided:

1. There is no money collected for the text(s) of the articles.

2. The following notice remains appended to each copy:

The Usenet Oldnews Archive: Compilation Copyright (C) 1981, 1996 Bruce Jones, Henry Spencer, David Wiseman.