Index: common.scm
==================================================================
--- common.scm
+++ common.scm
@@ -26,11 +26,10 @@
      (prefix sqlite3 sqlite3:)
      pkts (prefix dbi dbi:)
      )
 
 (declare (unit common))
-(declare (uses configf))
 (include "common_records.scm")
 
 
 ;; (require-library margs)
 ;; (include "margs.scm")
@@ -1395,10 +1394,26 @@
 ;; if it looks like a number -> convert it to a number, else return it
 ;;
 (define (common:lazy-convert inval)
   (let* ((as-num (if (string? inval)(string->number inval) #f)))
     (or as-num inval)))
+;; convert string a=1; b=2; c=a silly thing; d=
+;; to '((a . 1)(b . 2)(c . "a silly thing")(d . ""))
+;;
+(define (common:val->alist val #!key (convert #f))
+  (let ((val-list (string-split-fields ";\\s*" val #:infix)))
+    (if val-list
+	(map (lambda (x)
+	       (let ((f (string-split-fields "\\s*=\\s*" x #:infix)))
+		 (case (length f)
+		   ((0) `(,#f))  ;; null string case
+		   ((1) `(,(string->symbol (car f))))
+		   ((2) `(,(string->symbol (car f)) . ,(let ((inval (cadr f)))
+							 (if convert (common:lazy-convert inval) inval))))
+		   (else f))))
+	     val-list)
+	'())))
 
 ;;======================================================================
 ;; S Y S T E M   S T U F F
 ;;======================================================================
 
@@ -1627,11 +1642,11 @@
 ;; go through the hosts from least recently used to most recently used, pick the first that meets the load criteral from the
 ;; [host-rules] section.
 ;;
 (define (common:get-least-loaded-host hosts-raw host-type configdat)
   (let* ((rdat       (configf:lookup configdat "host-rules" host-type))
-	 (rules      (configf:val->alist (or rdat "") convert: #t))   ;; maxnload, maxnjobs, maxjobrate
+	 (rules      (common:val->alist (or rdat "") convert: #t))   ;; maxnload, maxnjobs, maxjobrate
 	 (maxnload   (common:alist-ref/default 'maxnload rules 1.5)) ;; max normalized load
 	 (maxnjobs   (common:alist-ref/default 'maxnjobs rules 1.5)) ;; max normalized number of jobs
 	 (maxjobrate (common:alist-ref/default 'maxjobrate rules (/ 1 6))) ;; max rate of submitting jobs to a given host in jobs/second
 	 (hosts      (filter (lambda (x)
 			       (string-match (regexp "^\\S+$") x))

Index: configf.scm
==================================================================
--- configf.scm
+++ configf.scm
@@ -22,11 +22,10 @@
 ;; Config file handling
 ;;======================================================================
 
 (use regex regex-case) ;;  directory-utils)
 (declare (unit configf))
-(declare (uses common))
 (declare (uses process))
 (declare (uses env))
 (declare (uses keys))
 
 (include "common_records.scm")

Index: mtut.scm
==================================================================
--- mtut.scm
+++ mtut.scm
@@ -1,6 +1,6 @@
-; Copyright 2006-2017, Matthew Welland.
+;; Copyright 2006-2017, Matthew Welland.
 ;; 
 ;; This file is part of Megatest.
 ;; 
 ;;     Megatest is free software: you can redistribute it and/or modify
 ;;     it under the terms of the GNU General Public License as published by