Наткнулся на очень интересный случай, по моему это баг в чистом виде, но очень редкий и трудно выявляемый.
Основная суть в том, что вызывается программа/скрипт с передачей параметров, содержащих пробелы, заключенных в двойные кавычки. При этом если параметр содержит конечный слэш (в windows стиле!), то происходит сбой при разборе параметров на уровне интерпретаторов ruby/php, а может и у бинарников такая же проблема?!
php script.php "param1 with space and leading slash\" "param2 with space too"
ruby script.rb "param1 with space and leading slash\" "param2 with space too"
В общем в данном случае вызывается скрипт всего с двумя параметрами, но на выходе (точнее на входе скрипта), в соответствующих переменных аргументов больше чем нужно.
Проверил на бинарнике, та же еруда. Причем можно было бы ожидать чего угодно только не такого:
C:\cmd_line_test>
cmd_line_test.exe "param1 with space and leading slash\" "param2 with space too"
argc=5
argv[0]=|C:\cmd_line_test\cmd_line_test.exe|
argv[1]=|param1 with space and leading slash" param2|
argv[2]=|with|
argv[3]=|space|
argv[4]=|too|
Допустим слеш используется для ескейпа, но этож бред?! Если все пути в винде используются с такими слешами "\", то это же должен быть высоко-интелектуальный интерпретатор с эскейпом?!
При этом самое смешное, что в этом случае получается ни два ни полтора, точнее как раз полтора и выходит, потому что если уж на то пошло то именно строка
param1 with space and leading slash\"
должна быть первым аргументом, если принять во внимание и за правило эскейпа
\"
?!