Module Name: othersrc
Committed By: agc
Date: Mon Aug 8 02:24:33 UTC 2011
Modified Files:
othersrc/external/bsd/iscsi/sbin/iscsictl: TODO iscsic_daemonif.c
iscsic_driverif.c iscsic_globals.h iscsic_main.c iscsic_parse.c
Log Message:
Make this compile WARNS=4
To generate a diff of this commit:
cvs rdiff -u -r1.1.1.1 -r1.2 othersrc/external/bsd/iscsi/sbin/iscsictl/TODO \
othersrc/external/bsd/iscsi/sbin/iscsictl/iscsic_daemonif.c \
othersrc/external/bsd/iscsi/sbin/iscsictl/iscsic_driverif.c \
othersrc/external/bsd/iscsi/sbin/iscsictl/iscsic_globals.h \
othersrc/external/bsd/iscsi/sbin/iscsictl/iscsic_main.c \
othersrc/external/bsd/iscsi/sbin/iscsictl/iscsic_parse.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: othersrc/external/bsd/iscsi/sbin/iscsictl/TODO
diff -u othersrc/external/bsd/iscsi/sbin/iscsictl/TODO:1.1.1.1 othersrc/external/bsd/iscsi/sbin/iscsictl/TODO:1.2
--- othersrc/external/bsd/iscsi/sbin/iscsictl/TODO:1.1.1.1 Mon May 2 07:01:06 2011
+++ othersrc/external/bsd/iscsi/sbin/iscsictl/TODO Mon Aug 8 02:24:33 2011
@@ -1,6 +1,5 @@
To Do
=====
-mktemp()
man page
global buf - make local
@@ -14,3 +13,4 @@
ctype.h
u_int
u_char
+mktemp()
Index: othersrc/external/bsd/iscsi/sbin/iscsictl/iscsic_daemonif.c
diff -u othersrc/external/bsd/iscsi/sbin/iscsictl/iscsic_daemonif.c:1.1.1.1 othersrc/external/bsd/iscsi/sbin/iscsictl/iscsic_daemonif.c:1.2
--- othersrc/external/bsd/iscsi/sbin/iscsictl/iscsic_daemonif.c:1.1.1.1 Mon May 2 07:01:03 2011
+++ othersrc/external/bsd/iscsi/sbin/iscsictl/iscsic_daemonif.c Mon Aug 8 02:24:33 2011
@@ -1,4 +1,4 @@
-/* $NetBSD: iscsic_daemonif.c,v 1.1.1.1 2011/05/02 07:01:03 agc Exp $ */
+/* $NetBSD: iscsic_daemonif.c,v 1.2 2011/08/08 02:24:33 agc Exp $ */
/*-
* Copyright (c) 2005,2006,2011 The NetBSD Foundation, Inc.
@@ -49,7 +49,8 @@
iscsid_get_set_target_options_t opt;
iscsid_response_t *rsp;
iscsid_add_target_rsp_t *res;
- int opts, auths, tlen, i;
+ unsigned i;
+ int opts, auths, tlen;
uint32_t tid;
tlen = cl_get_target(&targ, argc, argv, kind != SEND_TARGETS_LIST);
@@ -134,7 +135,7 @@
iscsid_response_t *rsp;
if (!cl_get_id('I', &req.id, argc, argv)) {
- if (!cl_get_string('n', srch.strval, argc, argv)) {
+ if (!cl_get_string('n', (char *)srch.strval, argc, argv)) {
arg_missing("Target ID or Name");
}
check_extra_args(argc, argv);
@@ -192,7 +193,8 @@
srch.search_kind = FIND_NAME;
srch.list_kind = kind;
- strlcpy(srch.strval, id.name, sizeof(srch.strval));
+ strlcpy((char *)srch.strval, (char *)id.name,
+ sizeof(srch.strval));
send_request(ISCSID_SEARCH_LIST, sizeof(srch), &srch);
rsp = get_response(FALSE);
@@ -347,7 +349,7 @@
iscsid_response_t *trsp, *prsp;
iscsid_get_target_rsp_t *targ;
iscsid_get_portal_rsp_t *port;
- int i;
+ unsigned i;
/* get target info */
req.list_kind = kind;
@@ -414,7 +416,7 @@
iscsid_get_list_req_t lst;
iscsid_response_t *rsp;
iscsid_get_list_rsp_t *list;
- int i;
+ unsigned i;
check_extra_args(argc, argv);
@@ -512,10 +514,11 @@
int
add_isns_server(int argc, char **argv)
{
- iscsid_add_isns_server_req_t arg = { {0} };
+ iscsid_add_isns_server_req_t arg;
iscsid_add_isns_server_rsp_t *res;
iscsid_response_t *rsp;
+ (void) memset(&arg, 0x0, sizeof(arg));
if (!(cl_get_isns(&arg, argc, argv))) {
arg_missing("Server Address");
}
@@ -553,7 +556,7 @@
iscsid_response_t *rsp;
if (!cl_get_id('I', &req, argc, argv)) {
- if (!cl_get_string('a', srch.strval, argc, argv)) {
+ if (!cl_get_string('a', (char *)srch.strval, argc, argv)) {
arg_missing("Server Address");
}
check_extra_args(argc, argv);
@@ -615,9 +618,10 @@
iscsid_response_t *rsp, *prsp;
iscsid_get_list_rsp_t *list;
iscsid_get_isns_server_rsp_t *isns;
- iscsid_sym_id_t req = { 0 };
- int i;
+ iscsid_sym_id_t req;
+ unsigned i;
+ (void) memset(&req, 0x0, sizeof(req));
check_extra_args(argc, argv);
/* get the list of servers */
@@ -674,11 +678,12 @@
int
add_initiator(int argc, char **argv)
{
- iscsid_add_initiator_req_t req = { {0} };
+ iscsid_add_initiator_req_t req;
iscsid_add_initiator_rsp_t *res;
iscsid_response_t *rsp;
- if (!cl_get_string('a', req.address, argc, argv)) {
+ (void) memset(&req, 0x0, sizeof(req));
+ if (!cl_get_string('a', (char *)req.address, argc, argv)) {
arg_missing("Interface Address");
}
cl_get_symname(req.name, argc, argv);
@@ -709,9 +714,10 @@
int
remove_initiator(int argc, char **argv)
{
- iscsid_sym_id_t req = { 0 };
+ iscsid_sym_id_t req;
iscsid_response_t *rsp;
+ (void) memset(&req, 0x0, sizeof(req));
if (!cl_get_id('I', &req, argc, argv)) {
arg_missing("Initiator Portal ID");
}
@@ -744,9 +750,10 @@
iscsid_response_t *rsp, *prsp;
iscsid_get_list_rsp_t *list;
iscsid_get_initiator_rsp_t *init;
- iscsid_sym_id_t req = { 0 };
- int i;
+ iscsid_sym_id_t req;
+ unsigned i;
+ (void) memset(&req, 0x0, sizeof(req));
check_extra_args(argc, argv);
/* get the list of servers */
@@ -831,7 +838,8 @@
/* else find the target by its TargetName */
srch.search_kind = FIND_TARGET_NAME;
srch.list_kind = TARGET_LIST;
- strlcpy(srch.strval, targ->TargetName, sizeof(srch.strval));
+ strlcpy((char *)srch.strval, (char *)targ->TargetName,
+ sizeof(srch.strval));
send_request(ISCSID_SEARCH_LIST, sizeof(srch), &srch);
rsp = get_response(FALSE);
@@ -882,10 +890,11 @@
int
login(int argc, char **argv)
{
- iscsid_login_req_t loginp = { {0} };
+ iscsid_login_req_t loginp;
iscsid_login_rsp_t *res;
iscsid_response_t *rsp;
+ (void) memset(&loginp, 0x0, sizeof(loginp));
loginp.login_type = (cl_get_opt('m', argc, argv))
? ISCSI_LOGINTYPE_NOMAP : ISCSI_LOGINTYPE_MAP;
@@ -950,9 +959,10 @@
int
add_connection(int argc, char **argv)
{
- iscsid_login_req_t loginp = { {0} };
+ iscsid_login_req_t loginp;
iscsid_response_t *rsp;
+ (void) memset(&loginp, 0x0, sizeof(loginp));
loginp.login_type = ISCSI_LOGINTYPE_MAP;
cl_get_id('I', &loginp.session_id, argc, argv);
@@ -1024,13 +1034,17 @@
iscsid_response_t *lrsp, *rsp;
iscsid_get_session_list_rsp_t *list;
iscsid_session_list_entry_t *ent;
- iscsid_get_connection_info_req_t creq = { {0} };
+ iscsid_get_connection_info_req_t creq;
iscsid_get_connection_info_rsp_t *info;
- iscsid_sym_id_t clreq = { 0 };
+ iscsid_sym_id_t clreq;
iscsid_get_connection_list_rsp_t *clinfo;
iscsid_connection_list_entry_t *clent;
- int i, j, lconn;
+ unsigned i;
+ unsigned j;
+ int lconn;
+ (void) memset(&creq, 0x0, sizeof(creq));
+ (void) memset(&clreq, 0x0, sizeof(clreq));
lconn = cl_get_opt('c', argc, argv);
check_extra_args(argc, argv);
@@ -1099,14 +1113,15 @@
int
set_node_name(int argc, char **argv)
{
- iscsid_set_node_name_req_t req = { {0} };
+ iscsid_set_node_name_req_t req;
iscsid_response_t *rsp;
uint64_t isid;
- if (!cl_get_string('n', req.InitiatorName, argc, argv)) {
+ (void) memset(&req, 0x0, sizeof(req));
+ if (!cl_get_string('n', (char *)req.InitiatorName, argc, argv)) {
arg_missing("Initiator Name");
}
- cl_get_string('A', req.InitiatorAlias, argc, argv);
+ cl_get_string('A', (char *)req.InitiatorAlias, argc, argv);
isid = cl_get_longlong('i', argc, argv);
hton6(req.ISID, isid);
Index: othersrc/external/bsd/iscsi/sbin/iscsictl/iscsic_driverif.c
diff -u othersrc/external/bsd/iscsi/sbin/iscsictl/iscsic_driverif.c:1.1.1.1 othersrc/external/bsd/iscsi/sbin/iscsictl/iscsic_driverif.c:1.2
--- othersrc/external/bsd/iscsi/sbin/iscsictl/iscsic_driverif.c:1.1.1.1 Mon May 2 07:01:04 2011
+++ othersrc/external/bsd/iscsi/sbin/iscsictl/iscsic_driverif.c Mon Aug 8 02:24:33 2011
@@ -1,4 +1,4 @@
-/* $NetBSD: iscsic_driverif.c,v 1.1.1.1 2011/05/02 07:01:04 agc Exp $ */
+/* $NetBSD: iscsic_driverif.c,v 1.2 2011/08/08 02:24:33 agc Exp $ */
/*-
* Copyright (c) 2005,2006,2011 The NetBSD Foundation, Inc.
@@ -32,11 +32,12 @@
#include "iscsic_globals.h"
#include <ctype.h>
+#include <inttypes.h>
typedef struct {
- uint8_t asc;
- uint8_t ascq;
- char *key;
+ uint8_t asc;
+ uint8_t ascq;
+ const char *key;
} asc_tab_t;
asc_tab_t asctab[] = {
@@ -259,7 +260,7 @@
if (!sid.id) {
srch.list_kind = SESSION_LIST;
srch.search_kind = FIND_NAME;
- strlcpy(srch.strval, sid.name, sizeof(srch.strval));
+ strlcpy((char *)srch.strval, (char *)sid.name, sizeof(srch.strval));
srch.intval = 0;
send_request(ISCSID_SEARCH_LIST, sizeof(srch), &srch);
@@ -285,7 +286,7 @@
*/
void
-dump_data(char *title, void *buffer, int len)
+dump_data(const char *title, void *buffer, int len)
{
uint8_t *bp = (uint8_t *) buffer;
int i, nelem;
@@ -334,7 +335,7 @@
for (pt = asctab; pt->key != NULL && asc >= pt->asc; pt++) {
if (asc == pt->asc && ascq == pt->ascq) {
- bp = &buf[1024];
+ bp = (char *)&buf[1024];
(void) snprintf(bp, sizeof(buf) - 1024, "%s: %s",
str, pt->key);
return bp;
@@ -358,8 +359,9 @@
int
do_ioctl(iscsi_iocommand_parameters_t * io, int rd)
{
- int rc;
- char *es;
+ char *esp;
+ char es[64];
+ int rc;
io->req.databuf = buf;
io->req.senselen = sizeof(io->req.sense);
@@ -371,40 +373,39 @@
if (io->req.senselen_used) {
switch (io->req.sense[2] & 0x0f) {
case 0x01:
- es = "Recovered Error";
+ (void) snprintf(esp = es, sizeof(es), "Recovered Error");
break;
case 0x02:
- es = "Not Ready";
+ (void) snprintf(esp = es, sizeof(es), "Not Ready");
break;
case 0x03:
- es = "Medium Error";
+ (void) snprintf(esp = es, sizeof(es), "Medium Error");
break;
case 0x04:
- es = "Hardware Error";
+ (void) snprintf(esp = es, sizeof(es), "Hardware Error");
break;
case 0x05:
- es = "Illegal Request";
+ (void) snprintf(esp = es, sizeof(es), "Illegal Request");
break;
case 0x06:
- es = "Unit Attention";
+ (void) snprintf(esp = es, sizeof(es), "Unit Attention");
break;
case 0x07:
- es = "Data Protect";
+ (void) snprintf(esp = es, sizeof(es), "Data Protect");
break;
case 0x08:
- es = "Blank Check";
+ (void) snprintf(esp = es, sizeof(es), "Blank Check");
break;
default:
- es = &buf[256];
- (void) snprintf(es, sizeof(buf) - 256, "Sense key 0x%x",
+ (void) snprintf(esp = (char *)&buf[256], sizeof(buf) - 256, "Sense key 0x%x",
io->req.sense[2] & 0x0f);
break;
}
if (io->req.senselen_used >= 14) {
- es = add_asc_info(es, io->req.sense[12], io->req.sense[13]);
+ add_asc_info(esp, io->req.sense[12], io->req.sense[13]);
}
- (void) snprintf(buf, sizeof(buf), "Sense Data (%s):", es);
- dump_data(buf, io->req.sense, io->req.senselen_used);
+ (void) snprintf((char *)buf, sizeof(buf), "Sense Data (%s):", esp);
+ dump_data((char *)buf, io->req.sense, io->req.senselen_used);
return io->req.retsts;
}
@@ -430,10 +431,11 @@
int
inquiry(int argc, char **argv)
{
- iscsi_iocommand_parameters_t io = { 0 };
+ iscsi_iocommand_parameters_t io;
char opt;
int pag, rc;
+ (void) memset(&io, 0x0, sizeof(io));
if ((io.session_id = get_sessid(argc, argv, FALSE)) == 0) {
return 1;
}
@@ -497,11 +499,12 @@
int
read_capacity(int argc, char **argv)
{
- iscsi_iocommand_parameters_t io = { 0 };
+ iscsi_iocommand_parameters_t io;
int rc;
uint32_t bsz;
uint64_t lbn, cap;
+ (void) memset(&io, 0x0, sizeof(io));
if ((io.session_id = get_sessid(argc, argv, FALSE)) == 0) {
return 1;
}
@@ -519,7 +522,7 @@
lbn = (uint64_t) ntohl(*((long *) buf)) + 1;
bsz = ntohl(*((long *) &buf[4]));
cap = lbn * bsz;
- printf("Total Blocks: %qd, Block Size: %u, Capacity: %qd Bytes\n",
+ printf("Total Blocks: %" PRIu64 ", Block Size: %u, Capacity: %" PRIu64 " Bytes\n",
lbn, bsz, cap);
return 0;
@@ -538,9 +541,10 @@
int
test_unit_ready(int argc, char **argv)
{
- iscsi_iocommand_parameters_t io = { 0 };
+ iscsi_iocommand_parameters_t io;
int rc;
+ (void) memset(&io, 0x0, sizeof(io));
if ((io.session_id = get_sessid(argc, argv, FALSE)) == 0) {
return 1;
}
@@ -572,11 +576,12 @@
int
report_luns(int argc, char **argv)
{
- iscsi_iocommand_parameters_t io = { 0 };
+ iscsi_iocommand_parameters_t io;
int rc;
uint32_t llen;
uint64_t *lp;
+ (void) memset(&io, 0x0, sizeof(io));
if ((io.session_id = get_sessid(argc, argv, FALSE)) == 0) {
return 1;
}
@@ -602,7 +607,7 @@
lp = (uint64_t *) & buf[8];
for (llen = min(llen, sizeof(buf) - 8) / 8; llen; llen--) {
- printf(" 0x%qx\n", ntohq(*lp));
+ printf(" 0x%" PRIx64 "\n", ntohq(*lp));
lp++;
}
return 0;
Index: othersrc/external/bsd/iscsi/sbin/iscsictl/iscsic_globals.h
diff -u othersrc/external/bsd/iscsi/sbin/iscsictl/iscsic_globals.h:1.1.1.1 othersrc/external/bsd/iscsi/sbin/iscsictl/iscsic_globals.h:1.2
--- othersrc/external/bsd/iscsi/sbin/iscsictl/iscsic_globals.h:1.1.1.1 Mon May 2 07:01:04 2011
+++ othersrc/external/bsd/iscsi/sbin/iscsictl/iscsic_globals.h Mon Aug 8 02:24:33 2011
@@ -1,4 +1,4 @@
-/* $NetBSD: iscsic_globals.h,v 1.1.1.1 2011/05/02 07:01:04 agc Exp $ */
+/* $NetBSD: iscsic_globals.h,v 1.2 2011/08/08 02:24:33 agc Exp $ */
/*-
* Copyright (c) 2005,2006,2011 The NetBSD Foundation, Inc.
@@ -64,10 +64,9 @@
typedef int (*cmdproc_t) (int, char **);
-typedef struct
-{
- char *cmd;
- cmdproc_t proc;
+typedef struct {
+ const char *cmd;
+ cmdproc_t proc;
} command_t;
@@ -144,10 +143,10 @@
/* iscsic_main.c */
-void arg_error(char *, char *, ...);
-void arg_missing(char *);
-void io_error(char *, ...);
-void gen_error(char *, ...);
+void arg_error(char *, const char *, ...);
+void arg_missing(const char *);
+void io_error(const char *, ...);
+void gen_error(const char *, ...);
void check_extra_args(int, char **);
void status_error(unsigned);
void status_error_slist(unsigned);
@@ -188,7 +187,7 @@
/* iscsic_driverif.c */
uint32_t get_sessid(int, char **, int);
-void dump_data(char *, void *, int);
+void dump_data(const char *, void *, int);
int do_ioctl(iscsi_iocommand_parameters_t *, int);
int set_node_name(int, char **);
int inquiry(int, char **);
Index: othersrc/external/bsd/iscsi/sbin/iscsictl/iscsic_main.c
diff -u othersrc/external/bsd/iscsi/sbin/iscsictl/iscsic_main.c:1.1.1.1 othersrc/external/bsd/iscsi/sbin/iscsictl/iscsic_main.c:1.2
--- othersrc/external/bsd/iscsi/sbin/iscsictl/iscsic_main.c:1.1.1.1 Mon May 2 07:01:04 2011
+++ othersrc/external/bsd/iscsi/sbin/iscsictl/iscsic_main.c Mon Aug 8 02:24:33 2011
@@ -1,4 +1,4 @@
-/* $NetBSD: iscsic_main.c,v 1.1.1.1 2011/05/02 07:01:04 agc Exp $ */
+/* $NetBSD: iscsic_main.c,v 1.2 2011/08/08 02:24:33 agc Exp $ */
/*-
* Copyright (c) 2005,2006,2011 The NetBSD Foundation, Inc.
@@ -28,6 +28,10 @@
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
+#include <sys/types.h>
+#include <sys/param.h>
+#include <sys/socket.h>
+#include <sys/un.h>
#include "iscsic_globals.h"
#include "iscsi_test.h"
@@ -35,15 +39,11 @@
#include <err.h>
#include <errno.h>
#include <fcntl.h>
-#include <sys/socket.h>
-#include <sys/un.h>
#include <stdarg.h>
#define DEVICE "/dev/iscsi0"
-/* response socket name template */
-#define TEMPLATE "/tmp/iscsi_client.XXXXXX"
-
+#define ISCSICTL_VERSION "20110805"
/*
*-------- Table of commands and the associated handler function -------------
@@ -92,10 +92,9 @@
*-------- Table of error codes and the associated message text -------------
*/
-typedef struct
-{
- unsigned code;
- char *str;
+typedef struct {
+ unsigned code;
+ const char *str;
} status_msg_t;
static status_msg_t status_msg[] = {
@@ -192,9 +191,11 @@
/* -------------------------------------------------------------------------- */
/* local variables */
-static struct sockaddr_un daemon_name; /* daemon socket name */
-static struct sockaddr_un myname; /* my socket name */
-static int sock; /* the socket */
+static struct sockaddr_un daemon_name; /* daemon socket name */
+
+static char sockdir[MAXPATHLEN]; /* where myname lives */
+static struct sockaddr_un myname; /* my socket name */
+static int sock; /* the socket */
static char *cmdname; /* pointer to command name for error msgs */
@@ -221,9 +222,9 @@
static void
bye(void)
{
-
close(sock);
- unlink(myname.sun_path);
+ (void) unlink(myname.sun_path);
+ (void) rmdir(sockdir);
exit(EXIT_FAILURE);
}
@@ -241,15 +242,15 @@
*/
void
-arg_error(char *argp, char *fmt, ...)
+arg_error(char *argp, const char *fmt, ...)
{
-
va_list args;
+ char lbuf[BUF_SIZE];
va_start(args, fmt);
- vsnprintf(buf, sizeof(buf), fmt, args);
+ vsnprintf(lbuf, sizeof(lbuf), fmt, args);
fprintf(stderr, "%s: %s: Invalid option at or near '%s': %s\n",
- progname, cmdname, argp, buf);
+ progname, cmdname, argp, lbuf);
bye();
}
@@ -265,7 +266,7 @@
*/
void
-arg_missing(char *arg)
+arg_missing(const char *arg)
{
warnx("%s: Missing argument: %s", cmdname, arg);
bye();
@@ -284,14 +285,15 @@
*/
void
-io_error(char *fmt, ...)
+io_error(const char *fmt, ...)
{
va_list args;
+ char lbuf[BUF_SIZE];
va_start(args, fmt);
- vsnprintf(buf, sizeof(buf), fmt, args);
+ vsnprintf(lbuf, sizeof(lbuf), fmt, args);
fprintf(stderr, "%s: %s: %s: %s\n",
- progname, cmdname, buf, strerror(errno));
+ progname, cmdname, lbuf, strerror(errno));
bye();
}
@@ -308,13 +310,14 @@
*/
void
-gen_error(char *fmt, ...)
+gen_error(const char *fmt, ...)
{
va_list args;
+ char lbuf[BUF_SIZE];
va_start(args, fmt);
- vsnprintf(buf, sizeof(buf), fmt, args);
- fprintf(stderr, "%s: %s: %s\n", progname, cmdname, buf);
+ vsnprintf(lbuf, sizeof(lbuf), fmt, args);
+ fprintf(stderr, "%s: %s: %s\n", progname, cmdname, lbuf);
bye();
}
@@ -434,7 +437,7 @@
to fit into the static buffer, alloc a temp buffer.
*/
- temp = temp || (len > (sizeof(buf) - sizeof(int)));
+ temp = temp || (len > (int)(sizeof(buf) - sizeof(int)));
if (temp) {
if (NULL == (pbuf = (int *) malloc(len + sizeof(int))))
@@ -494,7 +497,7 @@
len = sizeof(iscsid_request_t) + par_len;
/* alloc buffer if static one is too small to hold request */
- req_temp = len > sizeof(buf);
+ req_temp = len > (int)sizeof(buf);
if (req_temp) {
req = malloc(len);
@@ -534,14 +537,29 @@
int
main(int argc, char **argv)
{
- command_t *c;
- int res;
-
- if (argc < 2)
- errx(1, "Usage: %s <command> <options>, see manual for details.",
+ command_t *c;
+ int res;
+ int i;
+
+ (void) snprintf(sockdir, sizeof(sockdir), "/tmp/iscsictl.XXXXXX");
+ while ((i = getopt(argc, argv, "d:v")) != -1) {
+ switch(i) {
+ case 'd':
+ (void) snprintf(sockdir, sizeof(sockdir), "%s", optarg);
+ break;
+ case 'v':
+ printf("%s version %s\n", *argv, ISCSICTL_VERSION);
+ break;
+ default:
+ break;
+ }
+ }
+ if (argc - optind < 1) {
+ errx(EXIT_FAILURE, "Usage: %s <command> <options>, see manual for details.",
progname);
+ }
- cmdname = argv[1];
+ cmdname = argv[optind];
for (c = cmds; c->cmd != NULL; c++) {
if (strcmp(c->cmd, cmdname) == 0) {
@@ -549,36 +567,39 @@
}
}
if (c->cmd == NULL) {
- errx(2, "Unknown command: '%s'\n", cmdname);
+ errx(EXIT_FAILURE, "Unknown command: '%s'", cmdname);
}
if ((driver = open(DEVICE, O_RDONLY)) < 0) {
warn("Opening " DEVICE);
#ifndef ISCSI_DEBUG /* DEBUG ONLY: Allow CLI to operate w/o driver */
- return 3;
+ return EXIT_FAILURE;
#endif
}
sock = socket(AF_UNIX, SOCK_DGRAM, 0);
if (sock < 0)
- err(4, "opening datagram socket");
+ err(EXIT_FAILURE, "opening datagram socket");
/* bind socket to unique name */
+ if (mkdtemp(sockdir) == NULL) {
+ errx(EXIT_FAILURE, "can't create iscsictl dir '%s'", sockdir);
+ }
myname.sun_family = AF_UNIX;
- strlcpy(myname.sun_path, TEMPLATE, sizeof(myname.sun_path));
- mktemp(myname.sun_path);
- if (bind(sock, (struct sockaddr *) &myname, sizeof(struct sockaddr_un)))
+ (void) snprintf(myname.sun_path, sizeof(myname.sun_path), "%s/socket", sockdir);
+ if (bind(sock, (struct sockaddr *) &myname, sizeof(struct sockaddr_un)) < 0) {
io_error("Binding name to datagram socket");
-
+ }
daemon_name.sun_family = AF_UNIX;
strlcpy(daemon_name.sun_path, ISCSID_SOCK_NAME,
sizeof(daemon_name.sun_path));
/* dispatch command */
- res = c->proc(argc - 2, &argv[2]);
+ res = (*c->proc)(optind + 1, &argv[optind + 1]);
/* cleanup */
close(sock);
unlink(myname.sun_path);
+ rmdir(sockdir);
return res;
}
Index: othersrc/external/bsd/iscsi/sbin/iscsictl/iscsic_parse.c
diff -u othersrc/external/bsd/iscsi/sbin/iscsictl/iscsic_parse.c:1.1.1.1 othersrc/external/bsd/iscsi/sbin/iscsictl/iscsic_parse.c:1.2
--- othersrc/external/bsd/iscsi/sbin/iscsictl/iscsic_parse.c:1.1.1.1 Mon May 2 07:01:04 2011
+++ othersrc/external/bsd/iscsi/sbin/iscsictl/iscsic_parse.c Mon Aug 8 02:24:33 2011
@@ -1,4 +1,4 @@
-/* $NetBSD: iscsic_parse.c,v 1.1.1.1 2011/05/02 07:01:04 agc Exp $ */
+/* $NetBSD: iscsic_parse.c,v 1.2 2011/08/08 02:24:33 agc Exp $ */
/*-
* Copyright (c) 2005,2006,2011 The NetBSD Foundation, Inc.
@@ -75,7 +75,7 @@
portal->port = (uint16_t) val;
}
/* is there a group tag? */
- for (; isdigit(*sp); sp++);
+ for (; isdigit((unsigned char)*sp); sp++);
if (*sp && *sp != ',')
arg_error(arg, "Bad address format: Extra character(s) '%c'", *sp);
} else
@@ -94,7 +94,7 @@
if (strlen(str) >= sizeof(portal->address))
arg_error(arg, "Bad address format: Address string too long");
- strlcpy(portal->address, str, sizeof(portal->address));
+ strlcpy((char *)portal->address, str, sizeof(portal->address));
}
@@ -112,7 +112,7 @@
*/
STATIC uint16_t
-get_short_int(char *sp, char *arg, char *name)
+get_short_int(char *sp, char *arg, const char *name)
{
int val;
@@ -169,7 +169,7 @@
*/
STATIC void
-get_str(char *dest, char *sp, char *arg, char *name)
+get_str(char *dest, char *sp, char *arg, const char *name)
{
if (!sp || !*sp)
@@ -232,7 +232,7 @@
switch (argv[i][1]) {
case 'n': /* target name */
- get_str(targ->TargetName, sp, argv[i], "Target name");
+ get_str((char *)targ->TargetName, sp, argv[i], "Target name");
break;
case 'a': /* target address */
@@ -278,10 +278,11 @@
int
cl_get_isns(iscsid_add_isns_server_req_t * srv, int argc, char **argv)
{
- iscsi_portal_address_t addr = { {0} };
+ iscsi_portal_address_t addr;
char *sp;
int i, found;
+ (void) memset(&addr, 0x0, sizeof(addr));
found = FALSE;
for (i = 0; i < argc; i++) {
@@ -292,7 +293,7 @@
switch (argv[i][1]) {
case 'N': /* symbolic name */
- get_str(srv->name, sp, argv[i], "Server name");
+ get_str((char *)srv->name, sp, argv[i], "Server name");
break;
case 'a': /* target address */
@@ -313,7 +314,7 @@
argv[i] = NULL;
}
- strlcpy(srv->address, addr.address, sizeof(srv->address));
+ strlcpy((char *)srv->address, (char *)addr.address, sizeof(srv->address));
srv->port = addr.port;
return found;
@@ -375,15 +376,15 @@
break;
case 'u': /* user name */
- get_str(auth->user_name, sp, argv[i], "User name");
+ get_str((char *)auth->user_name, sp, argv[i], "User name");
break;
case 's': /* secret */
- get_str(auth->password, sp, argv[i], "Secret");
+ get_str((char *)auth->password, sp, argv[i], "Secret");
break;
case 'S': /* target secret */
- get_str(auth->target_password, sp, argv[i], "Target secret");
+ get_str((char *)auth->target_password, sp, argv[i], "Target secret");
break;
default:
@@ -587,7 +588,7 @@
if (strlen(sp) >= ISCSI_STRING_LENGTH)
arg_error(argv[i], "ID String too long");
if (!sscanf(sp, "%d", &sid->id))
- strlcpy(sid->name, sp, sizeof(sid->name));
+ strlcpy((char *)sid->name, sp, sizeof(sid->name));
else if (!sid->id)
arg_error(argv[i], "Invalid ID");
@@ -634,12 +635,12 @@
if (!sp || !*sp)
arg_error(argv[i], "Symbolic name missing");
- if (isdigit(*sp))
+ if (isdigit((unsigned char)*sp))
arg_error(argv[i], "Symbolic name must not be numeric");
if (strlen(sp) >= ISCSI_STRING_LENGTH)
arg_error(argv[i], "Symbolic name too long");
- strlcpy(sn, sp, ISCSI_STRING_LENGTH);
+ strlcpy((char *)sn, sp, ISCSI_STRING_LENGTH);
if (!argv[i][2])
argv[i + 1] = NULL;
@@ -903,7 +904,7 @@
if (!sp || !*sp)
arg_error(argv[i], "Option value missing");
- if (!sscanf(sp, "%qi", &val))
+ if (!sscanf(sp, "%qi", (long long *)(void *)&val))
arg_error(argv[i], "Integer expected");
if (!argv[i][2])