+(defun c-string-list-p (val)
+ "Return non-nil if VAL is a list of strings."
+ (and
+ (listp val)
+ (catch 'string
+ (dolist (elt val)
+ (if (not (stringp elt))
+ (throw 'string nil)))
+ t)))
+
+(defun c-string-or-string-list-p (val)
+ "Return non-nil if VAL is a string or a list of strings."
+ (or (stringp val)
+ (c-string-list-p val)))