diff --git a/builtin_set.cpp b/builtin_set.cpp index c1bb65ccc..11fe2ab98 100644 --- a/builtin_set.cpp +++ b/builtin_set.cpp @@ -236,11 +236,33 @@ static int parse_index( std::vector &indexes, l_ind = var_count+l_ind+1; } - indexes.push_back( l_ind ); src = end; - count++; - while (iswspace(*src)) src++; - } + if ( *src==L'.' && *(src+1)==L'.' ){ + src+=2; + long l_ind2 = wcstol( src, &end, 10 ); + if( end==src || errno ) + { + return 1; + } + src = end; + + if( l_ind2 < 0 ) + { + l_ind2 = var_count+l_ind2+1; + } + int direction = l_ind2 } // debug( 0, L"Push idx %d", tmp ); - idx.push_back(tmp); pos = end-in; + if ( in[pos]==L'.' && in[pos+1]==L'.' ){ + pos+=2; + long tmp1 = wcstol( &in[pos], &end, 10 ); + if( ( errno ) || ( end == &in[pos] ) ) + { + return 1; + } + pos = end-in; + + debug( 0, L"Push range idx %d %d", tmp, tmp1 ); + idx.push_back(tmp); + // idx.push_back(tmp2); + continue; + } + + debug( 0, L"Push idx %d", tmp ); + idx.push_back(tmp); + // idx.push_back(tmp2); } if( end_ptr )