Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/sbin/mount_nfs - centralize number parsing code
details: https://anonhg.NetBSD.org/src/rev/469c2e65c819
branches: trunk
changeset: 940101:469c2e65c819
user: christos <christos%NetBSD.org@localhost>
date: Sat Oct 03 18:42:20 2020 +0000
description:
- centralize number parsing code
- enable -g
- KNF
diffstat:
sbin/mount_nfs/mount_nfs.c | 102 ++++++++++++++++++++------------------------
1 files changed, 46 insertions(+), 56 deletions(-)
diffs (254 lines):
diff -r 0072302ed520 -r 469c2e65c819 sbin/mount_nfs/mount_nfs.c
--- a/sbin/mount_nfs/mount_nfs.c Sat Oct 03 18:35:21 2020 +0000
+++ b/sbin/mount_nfs/mount_nfs.c Sat Oct 03 18:42:20 2020 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: mount_nfs.c,v 1.73 2020/10/03 18:06:37 christos Exp $ */
+/* $NetBSD: mount_nfs.c,v 1.74 2020/10/03 18:42:20 christos Exp $ */
/*
* Copyright (c) 1992, 1993, 1994
@@ -42,7 +42,7 @@
#if 0
static char sccsid[] = "@(#)mount_nfs.c 8.11 (Berkeley) 5/4/95";
#else
-__RCSID("$NetBSD: mount_nfs.c,v 1.73 2020/10/03 18:06:37 christos Exp $");
+__RCSID("$NetBSD: mount_nfs.c,v 1.74 2020/10/03 18:42:20 christos Exp $");
#endif
#endif /* not lint */
@@ -52,7 +52,8 @@
#include <sys/stat.h>
#include <syslog.h>
-#include <nfs/rpcv2.h>
+#include <rpc/rpc.h>
+#include <nfs/rpcv2.h> /* XXX: redefines enums */
#include <nfs/nfsproto.h>
#include <nfs/nfs.h>
#include <nfs/nfsmount.h>
@@ -181,21 +182,36 @@
nfsargsp->addrlen = sizeof(sa);
} else {
if ((tspec = strdup(spec)) == NULL) {
- err(1, "strdup");
+ err(EXIT_FAILURE, "strdup");
}
if (!getnfsargs(tspec, nfsargsp)) {
- exit(1);
+ exit(EXIT_FAILURE);
}
free(tspec);
}
}
+static int
+getnum(const char *s, int c)
+{
+ char *es;
+ long num = strtol(s, &es, 10);
+ if (*es || num <= 0 || num > INT_MAX)
+ errx(EXIT_FAILURE, "Illegal value `%s' for option -%c", s, c);
+ return (int)num;
+}
+
+static __dead void
+conflicting(void)
+{
+ errx(EXIT_FAILURE, "Conflicting version options");
+}
+
void
mount_nfs_parseargs(int argc, char *argv[],
struct nfs_args *nfsargsp, int *mntflags,
char *spec, char *name)
{
- char *p;
int altflags, num;
int c;
mntoptparse_t mp;
@@ -210,12 +226,12 @@
case '3':
case 'q':
if (force2)
- errx(1, "conflicting version options");
+ conflicting();
force3 = 1;
break;
case '2':
if (force3)
- errx(1, "conflicting version options");
+ conflicting();
force2 = 1;
nfsargsp->flags &= ~NFSMNT_NFSV3;
break;
@@ -223,10 +239,7 @@
nfsargsp->flags |= NFSMNT_NOAC;
break;
case 'a':
- num = strtol(optarg, &p, 10);
- if (*p || num < 0)
- errx(1, "illegal -a value -- %s", optarg);
- nfsargsp->readahead = num;
+ nfsargsp->readahead = getnum(optarg, c);
nfsargsp->flags |= NFSMNT_READAHEAD;
break;
case 'b':
@@ -239,30 +252,20 @@
nfsargsp->flags &= ~NFSMNT_NOCONN;
break;
case 'D':
- num = strtol(optarg, &p, 10);
- if (*p || num <= 0)
- errx(1, "illegal -D value -- %s", optarg);
- nfsargsp->deadthresh = num;
+ nfsargsp->deadthresh = getnum(optarg, c);
nfsargsp->flags |= NFSMNT_DEADTHRESH;
break;
case 'd':
nfsargsp->flags |= NFSMNT_DUMBTIMR;
break;
-#if 0 /* XXXX */
case 'g':
- num = strtol(optarg, &p, 10);
- if (*p || num <= 0)
- errx(1, "illegal -g value -- %s", optarg);
+ num = getnum(optarg, c);
set_rpc_maxgrouplist(num);
nfsargsp->maxgrouplist = num;
nfsargsp->flags |= NFSMNT_MAXGRPS;
break;
-#endif
case 'I':
- num = strtol(optarg, &p, 10);
- if (*p || num <= 0)
- errx(1, "illegal -I value -- %s", optarg);
- nfsargsp->readdirsize = num;
+ nfsargsp->readdirsize = getnum(optarg, c);
nfsargsp->flags |= NFSMNT_READDIRSIZE;
break;
case 'i':
@@ -277,7 +280,7 @@
case 'o':
mp = getmntopts(optarg, mopts, mntflags, &altflags);
if (mp == NULL)
- err(1, "getmntopts");
+ err(EXIT_FAILURE, "getmntopts");
if (altflags & ALTF_BG)
opflags |= BGRND;
if (altflags & ALTF_CONN)
@@ -290,12 +293,12 @@
nfsargsp->flags |= NFSMNT_NOAC;
if (altflags & (ALTF_NFSV3|ALTF_NQNFS)) {
if (force2)
- errx(1, "conflicting version options");
+ conflicting();
force3 = 1;
}
if (altflags & ALTF_NFSV2) {
if (force3)
- errx(1, "conflicting version options");
+ conflicting();
force2 = 1;
nfsargsp->flags &= ~NFSMNT_NFSV3;
}
@@ -318,7 +321,7 @@
nfsargsp->sotype = SOCK_STREAM;
}
if (altflags & ALTF_PORT) {
- port = getmntoptnum(mp, "port");
+ port = (int)getmntoptnum(mp, "port");
}
if (altflags & ALTF_RSIZE) {
nfsargsp->rsize =
@@ -378,16 +381,10 @@
nfsargsp->flags &= ~NFSMNT_RESVPORT;
break;
case 'R':
- num = strtol(optarg, &p, 10);
- if (*p || num <= 0)
- errx(1, "illegal -R value -- %s", optarg);
- retrycnt = num;
+ retrycnt = getnum(optarg, c);
break;
case 'r':
- num = strtol(optarg, &p, 10);
- if (*p || num <= 0)
- errx(1, "illegal -r value -- %s", optarg);
- nfsargsp->rsize = num;
+ nfsargsp->rsize = getnum(optarg, c);
nfsargsp->flags |= NFSMNT_RSIZE;
break;
case 's':
@@ -397,24 +394,15 @@
nfsargsp->sotype = SOCK_STREAM;
break;
case 't':
- num = strtol(optarg, &p, 10);
- if (*p || num <= 0)
- errx(1, "illegal -t value -- %s", optarg);
- nfsargsp->timeo = num;
+ nfsargsp->timeo = getnum(optarg, c);
nfsargsp->flags |= NFSMNT_TIMEO;
break;
case 'w':
- num = strtol(optarg, &p, 10);
- if (*p || num <= 0)
- errx(1, "illegal -w value -- %s", optarg);
- nfsargsp->wsize = num;
+ nfsargsp->wsize = getnum(optarg, c);
nfsargsp->flags |= NFSMNT_WSIZE;
break;
case 'x':
- num = strtol(optarg, &p, 10);
- if (*p || num <= 0)
- errx(1, "illegal -x value -- %s", optarg);
- nfsargsp->retrans = num;
+ nfsargsp->retrans = getnum(optarg, c);
nfsargsp->flags |= NFSMNT_RETRANS;
break;
case 'X':
@@ -467,13 +455,13 @@
}
}
if (retval == -1)
- err(1, "%s on %s", spec, name);
+ err(EXIT_FAILURE, "%s on %s", spec, name);
if (mntflags & MNT_GETARGS) {
shownfsargs(&args);
- return (0);
+ return EXIT_SUCCESS;
}
- exit(0);
+ exit(EXIT_SUCCESS);
}
static void
@@ -483,9 +471,11 @@
char host[NI_MAXHOST], serv[NI_MAXSERV];
int error;
- (void)snprintb(fbuf, sizeof(fbuf), NFSMNT_BITS, nfsargsp->flags);
+ (void)snprintb(fbuf, sizeof(fbuf), NFSMNT_BITS,
+ (uint64_t)nfsargsp->flags);
if (nfsargsp->addr != NULL) {
- error = getnameinfo(nfsargsp->addr, nfsargsp->addrlen, host,
+ error = getnameinfo(nfsargsp->addr,
+ (socklen_t)nfsargsp->addrlen, host,
sizeof(host), serv, sizeof(serv),
NI_NUMERICHOST | NI_NUMERICSERV);
if (error != 0)
@@ -518,11 +508,11 @@
static void
usage(void)
{
- (void)fprintf(stderr, "usage: %s %s\n%s\n%s\n%s\n%s\n", getprogname(),
+ (void)fprintf(stderr, "Usage: %s %s\n%s\n%s\n%s\n%s\n", getprogname(),
"[-23bCcdilPpqsTUuX] [-a maxreadahead] [-D deadthresh]",
"\t[-g maxgroups] [-I readdirsize] [-L leaseterm]",
"\t[-o options] [-R retrycnt] [-r readsize] [-t timeout]",
"\t[-w writesize] [-x retrans]",
"\trhost:path node");
- exit(1);
+ exit(EXIT_FAILURE);
}
Home |
Main Index |
Thread Index |
Old Index