*
* Version $Id$
*/
-
/*
Copyright (C) 2000-2005 Kern Sibbald
This program is free software; you can redistribute it and/or
- modify it under the terms of the GNU General Public License as
- published by the Free Software Foundation; either version 2 of
- the License, or (at your option) any later version.
+ modify it under the terms of the GNU General Public License
+ version 2 as amended with additional clauses defined in the
+ file LICENSE in the main source directory.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- General Public License for more details.
-
- You should have received a copy of the GNU General Public
- License along with this program; if not, write to the Free
- Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
- MA 02111-1307, USA.
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ the file LICENSE for additional details.
*/
res_all.hdr.rcode = type;
res_all.hdr.refcnt = 1;
+ /* Set defaults in each item */
for (i=0; items[i].name; i++) {
Dmsg3(900, "Item=%s def=%s defval=%d\n", items[i].name,
(items[i].flags & ITEM_DEFAULT) ? "yes" : "no",
scan_err3(lc, _("Missing config Resource \"%s\" referenced on line %d : %s\n"),
lc->str, lc->line_no, lc->line);
}
- /* for each item not set, we copy the field from res */
-#ifdef xxx
- for (int i=0; item->name;; i++, item++) {
- if (bit_is_set(i, res->item_present)) {
- Dmsg2(900, "Item %d is present in %s\n", i, res->name);
- } else {
- Dmsg2(900, "Item %d is not present in %s\n", i, res->name);
- }
- }
- /* ***FIXME **** add code */
-#endif
}
scan_to_eol(lc);
}
{
int token;
uint64_t uvalue;
+ char bsize[500];
Dmsg0(900, "Enter store_size\n");
token = lex_get_token(lc, T_SKIP_EOL);
case T_NUMBER:
case T_IDENTIFIER:
case T_UNQUOTED_STRING:
- if (!size_to_uint64(lc->str, lc->str_len, &uvalue)) {
+ bstrncpy(bsize, lc->str, sizeof(bsize)); /* save first part */
+ /* if terminated by space, scan and get modifier */
+ while (lc->ch == ' ') {
+ token = lex_get_token(lc, T_ALL);
+ switch (token) {
+ case T_NUMBER:
+ case T_IDENTIFIER:
+ case T_UNQUOTED_STRING:
+ bstrncat(bsize, lc->str, sizeof(bsize));
+ break;
+ }
+ }
+ if (!size_to_uint64(bsize, strlen(bsize), &uvalue)) {
scan_err1(lc, _("expected a size number, got: %s"), lc->str);
}
*(uint64_t *)(item->value) = uvalue;
scan_err1(lc, _("expected a size, got: %s"), lc->str);
break;
}
- scan_to_eol(lc);
+ if (token != T_EOL) {
+ scan_to_eol(lc);
+ }
set_bit(index, res_all.hdr.item_present);
Dmsg0(900, "Leave store_size\n");
}
case T_NUMBER:
case T_IDENTIFIER:
case T_UNQUOTED_STRING:
- bstrncpy(period, lc->str, sizeof(period));
- if (lc->ch == ' ') {
+ bstrncpy(period, lc->str, sizeof(period)); /* get first part */
+ /* if terminated by space, scan and get modifier */
+ while (lc->ch == ' ') {
token = lex_get_token(lc, T_ALL);
switch (token) {
+ case T_NUMBER:
case T_IDENTIFIER:
case T_UNQUOTED_STRING:
bstrncat(period, lc->str, sizeof(period));
return 0;
}
}
- Dmsg1(900, "calling handler for %s\n", items[i].name);
+ Dmsg1(800, "calling handler for %s\n", items[i].name);
/* Call item handler */
items[i].handler(lc, &items[i], i, pass);
i = -1;