12345678910111213141516171819202122232425262728293031323334353637383940 |
- proc prints(chan out, value fmt[], str[]) =
- -- Like fprintf(out, fmt, str), with only %s or %<width>s in fmt[]
- def otherwise=true:
- var i, len:
- seq
- len:=fmt[byte 0]
- i:=1
- while i<=len
- if
- fmt[byte i] = '%'
- var w:
- seq
- i:=i+1
- w:=0
- while (i<=len) and ('0'<=fmt[byte i]) and (fmt[byte i]<='9')
- seq
- w:=(w*10)+(fmt[byte i]-'0')
- i:=i+1
- if
- i<=len
- var key:
- seq
- key:=fmt[byte i]
- if
- key='s'
- seq
- seq i=[0 for w-str[byte 0]]
- out ! ' '
- seq i=[0 for str[byte 0]]
- out ! str[byte i]
- otherwise
- out ! key
- i:=i+1
- otherwise
- seq
- out ! fmt[byte i]
- i:=i+1
- :
|