diff --git a/collects/racket/cmdline.rkt b/collects/racket/cmdline.rkt
index b7ced4103e..a08097f6fa 100644
--- a/collects/racket/cmdline.rkt
+++ b/collects/racket/cmdline.rkt
@@ -72,6 +72,14 @@
(loop (at-next-keyword (cdr lst))
(cons (list* #'list #`(quote help-labels) pieces)
accum))]
+ [(#:ps)
+ (for ([x (in-list pieces)])
+ (unless (string? (syntax-e x))
+ (serror "#:ps clause contains non-string"
+ x)))
+ (loop (at-next-keyword (cdr lst))
+ (cons (list* #'list #`(quote ps) pieces)
+ accum))]
[(#:once-each #:once-any #:multi #:final)
(let ([sublines
(let slloop ([sublines pieces])
@@ -239,13 +247,13 @@
(for ([spec (in-list table)])
(unless (and (list? spec) (pair? spec))
(bad-table "spec-set must be a non-empty list: ~a" spec))
- (unless (memq (car spec) '(once-any once-each multi final help-labels))
- (bad-table "spec-set type must be 'once-any, 'once-each, 'multi, 'final, or 'help-labels: ~a"
+ (unless (memq (car spec) '(once-any once-each multi final help-labels ps))
+ (bad-table "spec-set type must be 'once-any, 'once-each, 'multi, 'final, 'help-labels, or 'ps: ~a"
(car spec)))
(for ([line (in-list (cdr spec))])
- (if (eq? (car spec) 'help-labels)
+ (if (memq (car spec) '(help-labels ps))
(unless (string? line)
- (bad-table "help-labels line must be a string: ~e" line))
+ (bad-table "~a line must be a string: ~e" (car spec) line))
(begin
(unless (and (list? line) (= (length line) 3))
(bad-table "spec-line must be a list of at three or four items: ~e" line))
@@ -339,7 +347,8 @@
(fprintf sp "~a [