+static void
+read_int_or_str(
+ conf_var_t *np G_GNUC_UNUSED,
+ val_t *val)
+{
+ ckseen(&val->seen);
+
+ get_conftoken(CONF_ANY);
+ switch(tok) {
+ case CONF_INT:
+ amfree(val->v.s);
+ val->v.s = g_strdup_printf("%d", tokenval.v.i);
+ break;
+
+ case CONF_SIZE:
+ amfree(val->v.s);
+ val->v.s = g_strdup_printf("%zu", tokenval.v.size);
+ break;
+
+ case CONF_INT64:
+ amfree(val->v.s);
+ val->v.s = g_strdup_printf("%jd", (intmax_t)tokenval.v.int64);
+ break;
+
+ case CONF_STRING:
+ val->v.s = newstralloc(val->v.s, tokenval.v.s);
+ break;
+ default:
+ conf_parserror(_("CLIENT or SERVER expected"));
+ }
+}
+
+static void
+read_autolabel(
+ conf_var_t *np G_GNUC_UNUSED,
+ val_t *val)
+{
+ int data = 0;
+ ckseen(&val->seen);
+
+ get_conftoken(CONF_ANY);
+ if (tok == CONF_STRING) {
+ data++;
+ val->v.autolabel.template = newstralloc(val->v.autolabel.template,
+ tokenval.v.s);
+ get_conftoken(CONF_ANY);
+ }
+ val->v.autolabel.autolabel = 0;
+ while (tok != CONF_NL && tok != CONF_END) {
+ data++;
+ if (tok == CONF_ANY_VOLUME)
+ val->v.autolabel.autolabel |= AL_OTHER_CONFIG | AL_NON_AMANDA |
+ AL_VOLUME_ERROR | AL_EMPTY;
+ else if (tok == CONF_OTHER_CONFIG)
+ val->v.autolabel.autolabel |= AL_OTHER_CONFIG;
+ else if (tok == CONF_NON_AMANDA)
+ val->v.autolabel.autolabel |= AL_NON_AMANDA;
+ else if (tok == CONF_VOLUME_ERROR)
+ val->v.autolabel.autolabel |= AL_VOLUME_ERROR;
+ else if (tok == CONF_EMPTY)
+ val->v.autolabel.autolabel |= AL_EMPTY;
+ else {
+ conf_parserror(_("ANY-VOLUME, NEW-VOLUME, OTHER-CONFIG, NON-AMANDA, VOLUME-ERROR or EMPTY is expected"));
+ }
+ get_conftoken(CONF_ANY);
+ }
+ if (data == 0) {
+ amfree(val->v.autolabel.template);
+ val->v.autolabel.autolabel = 0;
+ } else if (val->v.autolabel.autolabel == 0) {
+ val->v.autolabel.autolabel = AL_VOLUME_ERROR | AL_EMPTY;
+ }
+}
+