Deleted Added
full compact
config.c (209052) config.c (211095)
1 /*-
1 /*-
2 * Copyright (c) 2005-2008 Daniel Braniss <danny@cs.huji.ac.il>
2 * Copyright (c) 2005-2009 Daniel Braniss <danny@cs.huji.ac.il>
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright

--- 13 unchanged lines hidden (view full) ---

24 * SUCH DAMAGE.
25 *
26 */
27/*
28 | $Id: config.c,v 2.1 2006/11/12 08:06:51 danny Exp danny $
29 */
30
31#include <sys/cdefs.h>
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright

--- 13 unchanged lines hidden (view full) ---

24 * SUCH DAMAGE.
25 *
26 */
27/*
28 | $Id: config.c,v 2.1 2006/11/12 08:06:51 danny Exp danny $
29 */
30
31#include <sys/cdefs.h>
32__FBSDID("$FreeBSD: head/sbin/iscontrol/config.c 209052 2010-06-11 17:03:04Z uqs $");
32__FBSDID("$FreeBSD: head/sbin/iscontrol/config.c 211095 2010-08-09 12:36:36Z des $");
33
34#include <stdlib.h>
35#include <unistd.h>
36#include <stdio.h>
37#include <string.h>
38#include <errno.h>
39#include <fcntl.h>
40#include <time.h>
41#include <ctype.h>
42#include <camlib.h>
43
33
34#include <stdlib.h>
35#include <unistd.h>
36#include <stdio.h>
37#include <string.h>
38#include <errno.h>
39#include <fcntl.h>
40#include <time.h>
41#include <ctype.h>
42#include <camlib.h>
43
44#include "iscsi.h"
44#include <dev/iscsi/initiator/iscsi.h>
45#include "iscontrol.h"
46
47/*
48 | ints
49 */
50#define OPT_port 1
51#define OPT_tags 2
52

--- 36 unchanged lines hidden (view full) ---

89#define OPT_tgtChallengeLen 32
90/*
91 | private
92 */
93#define OPT_maxluns 33
94#define OPT_iqn 34
95#define OPT_sockbufsize 35
96
45#include "iscontrol.h"
46
47/*
48 | ints
49 */
50#define OPT_port 1
51#define OPT_tags 2
52

--- 36 unchanged lines hidden (view full) ---

89#define OPT_tgtChallengeLen 32
90/*
91 | private
92 */
93#define OPT_maxluns 33
94#define OPT_iqn 34
95#define OPT_sockbufsize 35
96
97/*
98 | sentinel
99 */
100#define OPT_end 0
101
97#define _OFF(v) ((int)&((isc_opt_t *)NULL)->v)
98#define _E(u, s, v) {.usage=u, .scope=s, .name=#v, .tokenID=OPT_##v}
99
100textkey_t keyMap[] = {
101 _E(U_PR, S_PR, port),
102 _E(U_PR, S_PR, tags),
103 _E(U_PR, S_PR, maxluns),
104 _E(U_PR, S_PR, sockbufsize),

--- 35 unchanged lines hidden (view full) ---

140 _E(U_LO, S_SW, maxOutstandingR2T),
141 _E(U_LO, S_SW, dataPDUInOrder),
142 _E(U_LO, S_SW, dataSequenceInOrder),
143
144 _E(U_LO, S_SW, errorRecoveryLevel),
145
146 _E(U_LO, S_SW, sessionType),
147
102#define _OFF(v) ((int)&((isc_opt_t *)NULL)->v)
103#define _E(u, s, v) {.usage=u, .scope=s, .name=#v, .tokenID=OPT_##v}
104
105textkey_t keyMap[] = {
106 _E(U_PR, S_PR, port),
107 _E(U_PR, S_PR, tags),
108 _E(U_PR, S_PR, maxluns),
109 _E(U_PR, S_PR, sockbufsize),

--- 35 unchanged lines hidden (view full) ---

145 _E(U_LO, S_SW, maxOutstandingR2T),
146 _E(U_LO, S_SW, dataPDUInOrder),
147 _E(U_LO, S_SW, dataSequenceInOrder),
148
149 _E(U_LO, S_SW, errorRecoveryLevel),
150
151 _E(U_LO, S_SW, sessionType),
152
148 {0}
153 _E(0, 0, end)
149};
150
151#define _OPT_INT(w) strtol((char *)w, NULL, 0)
152#define _OPT_STR(w) (char *)(w)
153
154static __inline int
155_OPT_BOOL(char *w)
156{
154};
155
156#define _OPT_INT(w) strtol((char *)w, NULL, 0)
157#define _OPT_STR(w) (char *)(w)
158
159static __inline int
160_OPT_BOOL(char *w)
161{
157 if(isalpha(*w))
162 if(isalpha((unsigned char)*w))
158 return strcasecmp(w, "TRUE") == 0;
159 else
160 return _OPT_INT(w);
161}
162
163#define _CASE(k, v) case OPT_##k: op->k = v; break
164static void
165setOption(isc_opt_t *op, int which, void *rval)

--- 73 unchanged lines hidden (view full) ---

239
240 ar = Ar;
241 if(key)
242 len = strlen(key);
243 else
244 len = 0;
245 state = 0;
246 while((lp = getline(fd)) != NULL) {
163 return strcasecmp(w, "TRUE") == 0;
164 else
165 return _OPT_INT(w);
166}
167
168#define _CASE(k, v) case OPT_##k: op->k = v; break
169static void
170setOption(isc_opt_t *op, int which, void *rval)

--- 73 unchanged lines hidden (view full) ---

244
245 ar = Ar;
246 if(key)
247 len = strlen(key);
248 else
249 len = 0;
250 state = 0;
251 while((lp = getline(fd)) != NULL) {
247 for(; isspace(*lp); lp++)
252 for(; isspace((unsigned char)*lp); lp++)
248 ;
249 switch(state) {
250 case 0:
251 if((p = strchr(lp, '{')) != NULL) {
253 ;
254 switch(state) {
255 case 0:
256 if((p = strchr(lp, '{')) != NULL) {
252 while((--p > lp) && *p && isspace(*p));
257 while((--p > lp) && *p && isspace((unsigned char)*p));
253 n = p - lp;
254 if(len && strncmp(lp, key, MAX(n, len)) == 0)
255 state = 2;
256 else
257 state = 1;
258 continue;
259 }
260 break;

--- 6 unchanged lines hidden (view full) ---

267 case 2:
268 if(*lp == '}')
269 goto done;
270
271 break;
272 }
273
274
258 n = p - lp;
259 if(len && strncmp(lp, key, MAX(n, len)) == 0)
260 state = 2;
261 else
262 state = 1;
263 continue;
264 }
265 break;

--- 6 unchanged lines hidden (view full) ---

272 case 2:
273 if(*lp == '}')
274 goto done;
275
276 break;
277 }
278
279
275 for(p = &lp[strlen(lp)-1]; isspace(*p); p--)
280 for(p = &lp[strlen(lp)-1]; isspace((unsigned char)*p); p--)
276 *p = 0;
277 if((*nargs)-- > 0)
278 *ar++ = strdup(lp);
279 }
280
281 done:
282 if(*nargs > 0)
283 *ar = 0;

--- 62 unchanged lines hidden (view full) ---

346 textkey_t *tk;
347
348 for(ar = args; nargs > 0; nargs--, ar++) {
349 p = strchr(*ar, '=');
350 if(p == NULL)
351 continue;
352 *p = 0;
353 v = p + 1;
281 *p = 0;
282 if((*nargs)-- > 0)
283 *ar++ = strdup(lp);
284 }
285
286 done:
287 if(*nargs > 0)
288 *ar = 0;

--- 62 unchanged lines hidden (view full) ---

351 textkey_t *tk;
352
353 for(ar = args; nargs > 0; nargs--, ar++) {
354 p = strchr(*ar, '=');
355 if(p == NULL)
356 continue;
357 *p = 0;
358 v = p + 1;
354 while(isspace(*--p))
359 while(isspace((unsigned char)*--p))
355 *p = 0;
360 *p = 0;
356 while(isspace(*v))
361 while(isspace((unsigned char)*v))
357 v++;
358 if((tk = keyLookup(*ar)) == NULL)
359 continue;
360 setOption(op, tk->tokenID, v);
361 }
362}
363
364void
365parseConfig(FILE *fd, char *key, isc_opt_t *op)
366{
367 char *Ar[256];
368 int cc;
369
370 cc = 256;
371 if(getConfig(fd, key, Ar, &cc))
372 parseArgs(cc, Ar, op);
373 if(vflag)
374 puke(op);
375}
362 v++;
363 if((tk = keyLookup(*ar)) == NULL)
364 continue;
365 setOption(op, tk->tokenID, v);
366 }
367}
368
369void
370parseConfig(FILE *fd, char *key, isc_opt_t *op)
371{
372 char *Ar[256];
373 int cc;
374
375 cc = 256;
376 if(getConfig(fd, key, Ar, &cc))
377 parseArgs(cc, Ar, op);
378 if(vflag)
379 puke(op);
380}