dup file-extension
[ ?tail drop ]
[
- ?string>number
+ [ string>number ]
[ 1 + number>string append ]
- [ ".1" 3append ] if
+ [ ".1" 3append ] ?if
] bi ;
-: ?parenthesis-number ( str -- n/str ? )
- dup { [ "(" head? ] [ ")" tail? ] } 1&&
- [ rest but-last ?string>number ] [ f ] if ;
+: ?parenthesis-number ( str -- n/f )
+ [
+ {
+ [ "(" head? ]
+ [ ")" tail? ]
+ [ rest but-last string>number ]
+ } 1&&
+ ] [ drop f ] ?unless ;
: increment-file-name ( path -- path' )
[
file-stem " " split1-last
- ?parenthesis-number
+ [ ?parenthesis-number ]
[ 1 + number>string "(" ")" surround " " glue ]
- [ "(1)" append " " glue ] if
+ [ "(1)" append " " glue ] ?if
] [
file-extension
] bi "." glue ;
: parse-content-length-safe ( request -- content-length )
"content-length" header [
- ?string>number [
+ [ string>number ]
+ [
dup 0 upload-limit get between? [
invalid-content-length
] unless
- ] [ invalid-content-length ] if
+ ] [ invalid-content-length ] ?if
] [ content-length-missing ] if* ;
: parse-content ( request content-type -- post-data )
: string>number ( str -- n/f )
10 <number-parse> [ @first-char ] require-next-digit ;
-: ?string>number ( str -- n/str ? )
- dup string>number [ nip t ] [ f ] if* ;
-
: base> ( str radix -- n/f )
<number-parse> [ @first-char-no-radix ] require-next-digit ;