Skip to content

Commit 36ac268

Browse files
authored
Merge pull request #746 from Dyalog/744-a-badly-formatted-linkconfig-file-leads-to-a-value-error-for-name-when-creating-a-link
2 parents bb16ede + 61bb47c commit 36ac268

File tree

1 file changed

+30
-2
lines changed

1 file changed

+30
-2
lines changed

StartupSession/Link/Config.apln

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,7 @@
187187
:EndIf
188188
189189

190-
∇ (rc config)←ReadConfigFile file;valid;names;m;p;json;one;t
190+
∇ (rc config)←ReadConfigFile file;valid;names;p;json;one;t;mask;i;sf;badNames;member;val
191191
⍝ Read a configuration file and return a namespace
192192
⍝ rc←0 on success, 1 on failure in which case config is an error message :-(
193193

@@ -217,7 +217,35 @@
217217
:EndIf
218218
one←1=≢names←valid~names,⊂'SourceFlags'
219219
⍎(×≢names)/'config.(',(⍕names),')←',(one/'⊃'),'⎕NS¨(⍴names)⍴⊂'''''
220-
:If 0=⎕NC'config.SourceFlags' ⋄ config.SourceFlags←⍬ ⋄ :EndIf
220+
:If 0=⎕NC'config.SourceFlags'
221+
config.SourceFlags←⍬
222+
:ElseIf 1≠≢⍴config.SourceFlags
223+
(rc config)←1('SourceFlags in "',file,'" must be a vector')
224+
:ElseIf 0=≢config.SourceFlags
225+
:ElseIf ≠/mask←9≠{40 ⎕ATX'⍵'}¨config.SourceFlags
226+
→0⊣(rc config)←1('SourceFlags[',(⍕⍸mask),'] in "',file,'" must be objects'↓⍨1=+/mask)
227+
:Else
228+
:For i sf :InEach (⍳≢config.SourceFlags)config.SourceFlags
229+
:If 0=40 sf.⎕ATX'Name'
230+
→0⊣(rc config)←1('SourceFlags[',(⍕i),'] in "',file,'" has no Name member')
231+
:ElseIf 2≠40 sf.⎕ATX'Name'
232+
:OrIf 1≠≡sf.Name
233+
:OrIf ¯1=⎕NC⍕sf.Name
234+
→0⊣(rc config)←1('SourceFlags[',(⍕i),'] in "',file,'" has invalid Name member')
235+
:ElseIf ×≢badNames←'Name' 'Stop' 'Trace'~⍨sf.⎕NL-⍳9
236+
→0⊣(rc config)←1('SourceFlags[',(⍕i),'] in "',file,'" has invalid member',(1=≢badNames)↓'s:',∊' ',¨badNames)
237+
:Else
238+
:For member :In 'Stop' 'Trace'∩sf.⎕NL ¯2
239+
val←sf⍎member
240+
:If 1≠≡val
241+
:OrIf ⍬≢0/val
242+
:OrIf val≢⌊val
243+
→0⊣(rc config)←1('SourceFlags[',(⍕i),'].',member,' in "',file,'" is not a vector of line numbers')
244+
:EndIf
245+
:EndFor
246+
:EndIf
247+
:EndFor
248+
:EndIf
221249
rc←0
222250
223251

0 commit comments

Comments
 (0)