On Wed, 26 Sep 2018 00:44:18 +0200, Klemens Nanni wrote:
> Replace `long long id' with appropiate types and names, use smaller
> limits where applicable and move variable declarations up out of loops.
>
> This makes the code clearer and a tad simpler while staying consistent
> across databases.
One comment inline, otherwise OK millert@
- todd
> Index: getent.c
> ===================================================================
> RCS file: /cvs/src/usr.bin/getent/getent.c,v
> retrieving revision 1.18
> diff -u -p -r1.18 getent.c
> --- getent.c 25 Sep 2018 19:51:39 -0000 1.18
> +++ getent.c 25 Sep 2018 22:21:22 -0000
> @@ -190,8 +190,10 @@ ethers(int argc, char *argv[])
> static int
> group(int argc, char *argv[])
> {
> - int i, rv = RV_OK;
> struct group *gr;
> + const char *err;
> + gid_t gid;
> + int i, rv = RV_OK;
>
> setgroupent(1);
> if (argc == 2) {
> @@ -199,11 +201,9 @@ group(int argc, char *argv[])
> GROUPPRINT;
> } else {
> for (i = 2; i < argc; i++) {
> - const char *err;
> - long long id = strtonum(argv[i], 0, UINT_MAX, &err);
> -
> + gid = strtonum(argv[i], 0, GID_MAX, &err);
> if (!err)
> - gr = getgrgid((gid_t)id);
> + gr = getgrgid(gid);
> else
> gr = getgrnam(argv[i]);
> if (gr != NULL)
> @@ -291,8 +291,10 @@ hosts(int argc, char *argv[])
> static int
> passwd(int argc, char *argv[])
> {
> - int i, rv = RV_OK;
> struct passwd *pw;
> + const char *err;
> + uid_t uid;
> + int i, rv = RV_OK;
>
> setpassent(1);
> if (argc == 2) {
> @@ -300,11 +302,9 @@ passwd(int argc, char *argv[])
> PASSWDPRINT;
> } else {
> for (i = 2; i < argc; i++) {
> - const char *err;
> - long long id = strtonum(argv[i], 0, UINT_MAX, &err);
> -
> + uid = strtonum(argv[i], 0, UID_MAX, &err);
> if (!err)
> - pw = getpwuid((uid_t)id);
> + pw = getpwuid(uid);
> else
> pw = getpwnam(argv[i]);
> if (pw != NULL)
> @@ -327,6 +327,8 @@ static int
> protocols(int argc, char *argv[])
> {
> struct protoent *pe;
> + const char *err;
> + int proto;
> int i, rv = RV_OK;
>
> setprotoent(1);
> @@ -335,11 +337,9 @@ protocols(int argc, char *argv[])
> PROTOCOLSPRINT;
> } else {
> for (i = 2; i < argc; i++) {
> - const char *err;
> - long long id = strtonum(argv[i], 0, UINT_MAX, &err);
> -
> + proto = strtonum(argv[i], 0, INT_MAX, &err);
> if (!err)
> - pe = getprotobynumber((int)id);
> + pe = getprotobynumber(proto);
> else
> pe = getprotobyname(argv[i]);
> if (pe != NULL)
> @@ -362,6 +362,8 @@ static int
> rpc(int argc, char *argv[])
> {
> struct rpcent *re;
> + const char *err;
> + int rpc;
> int i, rv = RV_OK;
>
> setrpcent(1);
> @@ -370,11 +372,9 @@ rpc(int argc, char *argv[])
> RPCPRINT;
> } else {
> for (i = 2; i < argc; i++) {
> - const char *err;
> - long long id = strtonum(argv[i], 0, UINT_MAX, &err);
> -
> + rpc = strtonum(argv[i], 0, INT_MAX, &err);
> if (!err)
> - re = getrpcbynumber((int)id);
> + re = getrpcbynumber(rpc);
> else
> re = getrpcbyname(argv[i]);
> if (re != NULL)
> @@ -397,6 +397,9 @@ static int
> services(int argc, char *argv[])
> {
> struct servent *se;
> + const char *err;
> + char *proto;
> + int serv;
This should be in_port_t, not int. I would also call the variable
port instead of serv but the type is what is important.
> int i, rv = RV_OK;
>
> setservent(1);
> @@ -405,15 +408,11 @@ services(int argc, char *argv[])
> SERVICESPRINT;
> } else {
> for (i = 2; i < argc; i++) {
> - const char *err;
> - long long id;
> - char *proto = strchr(argv[i], '/');
> -
> - if (proto != NULL)
> + if ((proto = strchr(argv[i], '/')) != NULL)
> *proto++ = '\0';
> - id = strtonum(argv[i], 0, UINT_MAX, &err);
> + serv = strtonum(argv[i], 0, IPPORT_HILASTAUTO, &err);
> if (!err)
> - se = getservbyport(htons((u_short)id), proto);
> + se = getservbyport(htons(serv), proto);
> else
> se = getservbyname(argv[i], proto);
> if (se != NULL)
> ===================================================================
> Stats: --- 25 lines 676 chars
> Stats: +++ 24 lines 655 chars
> Stats: -1 lines
> Stats: -21 chars