chiark / gitweb /
Sources, by analogy with sinks
[disorder] / lib / configuration.c
index c2c9a9f69b4d7ed8a83ae5e2df6b2a04b22a4388..62ccf1b5df614aff6f0776a0350cd14bc020e40a 100644 (file)
@@ -632,8 +632,10 @@ static const struct conftype
   type_stringlist_accum = { set_stringlist_accum, free_stringlistlist },
   type_string_accum = { set_string_accum, free_stringlist },
   type_sample_format = { set_sample_format, free_none },
+#if HAVE_PCRE_H
   type_namepart = { set_namepart, free_namepartlist },
   type_transform = { set_transform, free_transformlist },
+#endif
   type_netaddress = { set_netaddress, free_netaddress },
   type_rights = { set_rights, free_string };
 
@@ -676,7 +678,7 @@ static int validate_isabspath(const struct config_state *cs,
 
   for(n = 0; n < nvec; ++n)
     if(vec[n][0] != '/') {
-      disorder_error(errno, "%s:%d: %s: not an absolute path", 
+      disorder_error(0, "%s:%d: %s: not an absolute path", 
                     cs->path, cs->line, vec[n]);
       return -1;
     }
@@ -750,6 +752,7 @@ static int validate_tracklength(const struct config_state *cs,
 static int validate_non_negative(const struct config_state *cs,
                                 int nvec, char **vec) {
   long n;
+  char errbuf[1024];
 
   if(nvec < 1) {
     disorder_error(0, "%s:%d: missing argument", cs->path, cs->line);
@@ -760,7 +763,8 @@ static int validate_non_negative(const struct config_state *cs,
     return -1;
   }
   if(xstrtol(&n, vec[0], 0, 0)) {
-    disorder_error(0, "%s:%d: %s", cs->path, cs->line, strerror(errno));
+    disorder_error(0, "%s:%d: %s", cs->path, cs->line,
+                   format_error(ec_errno, errno, errbuf, sizeof errbuf));
     return -1;
   }
   if(n < 0) {
@@ -779,6 +783,7 @@ static int validate_non_negative(const struct config_state *cs,
 static int validate_positive(const struct config_state *cs,
                          int nvec, char **vec) {
   long n;
+  char errbuf[1024];
 
   if(nvec < 1) {
     disorder_error(0, "%s:%d: missing argument", cs->path, cs->line);
@@ -789,7 +794,8 @@ static int validate_positive(const struct config_state *cs,
     return -1;
   }
   if(xstrtol(&n, vec[0], 0, 0)) {
-    disorder_error(0, "%s:%d: %s", cs->path, cs->line, strerror(errno));
+    disorder_error(0, "%s:%d: %s", cs->path, cs->line,
+                   format_error(ec_errno, errno, errbuf, sizeof errbuf));
     return -1;
   }
   if(n <= 0) {
@@ -1140,6 +1146,7 @@ static int config_set_args(const struct config_state *cs,
   va_list ap;
   struct vector v[1];
   char *s;
+  int rc;
 
   vector_init(v);
   vector_append(v, (char *)which);
@@ -1148,7 +1155,7 @@ static int config_set_args(const struct config_state *cs,
     vector_append(v, s);
   va_end(ap);
   vector_terminate(v);
-  int rc = config_set(cs, v->nvec, v->vec);
+  rc = config_set(cs, v->nvec, v->vec);
   xfree(v->vec);
   return rc;
 }
@@ -1698,7 +1705,8 @@ static int namepartlist_compare(const struct namepartlist *a,
 */
 int config_verify(void) {
   int fails = 0;
-  for(size_t n = 1; n < sizeof conf / sizeof *conf; ++n)
+  size_t n;
+  for(n = 1; n < sizeof conf / sizeof *conf; ++n)
     if(strcmp(conf[n-1].name, conf[n].name) >= 0) {
       fprintf(stderr, "%s >= %s\n", conf[n-1].name, conf[n].name);
       ++fails;