unc ресурса ФТП

Все, что вы хотели знать о программизме, но боялись спросить.
Ответить
vg
Маньяк
Сообщения: 2803
Зарегистрирован: 29 май 2003, 22:29
Откуда: Магадан - Миссиссага

unc ресурса ФТП

Сообщение vg »

Столкнулся второй раз с "юникс стилем" программ использующих сетевой обмен данными...

Когда посылаешь файл в каталог на FTP (ftp.xxx.com/directory/filename), то такой формат имени удалённого файла, directory/filename, одинаково хорошо работает для MS Windows и Unix based FTPs.
Когда же используешь нотацию directory\filename, то MS надо это и посылать. Для юниксов же надо посылать directory\\filename в сеть!
Т.е, LPCTSTR для MS remoteFileName= "directory\\filename" (что ясно и понятно), а для юникс remoteFileName= "directory\\\\filename" (что ясно и смешно).
Такая нежная восприимчивость юникса к эскейп последовательнотям всего лишь в имени файла, передаваемого по сети (передаваемого по сети _имени_) немного удивляет и настараживает неискушённого программиста, вроде меня.

Казалось бы используй / вместо \\. Но не ту-то было. Первый раз столкнулся в с тем, как приложения первоначально написанные для юникс, интерпретируют строки, передаваемые по сети - для MySQL. Легко проверить, что если в базе данных мы захотим хранить path \\host\directory\filename, то придётся использовать нечто вроде LPCTSTR fname = "\\\\\\\\host\\\\direcory\\\\fiename";

Ничего такого для Microsoft нет. Пишем обычную строку:
LPCTSTR fname = "\\\\host\\direcory\\fiename"

Поинт, в том, что негоже по сети передовать строки так, как принято в том или другом языке программирования. Если надо по сети передать строку "\\aaa\bbb", то ровно это, ровно эти байты и должны проезжать по сетке, а не эскейп последовательности.

Поправьте, если я не прав.
Спасибо.

ПС. RFC ftp умалчивает спецификацию последовательности байт представляющих имя ресурса ftp.
Аватара пользователя
Marmot
Графоман
Сообщения: 39279
Зарегистрирован: 17 фев 2003, 17:58
Откуда: Caulfeild
Контактная информация:

Re: unc ресурса ФТП

Сообщение Marmot »

vg писал(а):Поправьте, если я не прав.
Да прав, прав, извращенцы они ...
Хотя мне с этой проблемой проще, JDBC драйвер всё это прозрачно обрабатывает, потому как стандарт :) .
vg
Маньяк
Сообщения: 2803
Зарегистрирован: 29 май 2003, 22:29
Откуда: Магадан - Миссиссага

Re: unc ресурса ФТП

Сообщение vg »

Marmot писал(а):
vg писал(а):Поправьте, если я не прав.
Да прав, прав, извращенцы они ...
Хотя мне с этой проблемой проще, JDBC драйвер всё это прозрачно обрабатывает, потому как стандарт :) .
Всё же я не прав здесь. Причём жутко :oops:
http://dev.mysql.com/doc/refman/5.1/en/ ... -mode.html
NO_BACKSLASH_ESCAPES

Disable the use of the backslash character (‘\’) as an escape character within strings. With this mode enabled, backslash becomes any ordinary character like any other.
Как правильно сказал один парень обо мне - такие извращенцы появляются, если некогда читать маны.
Единственное оправдание - ведь действительно некогда. :(

С FTP похоже тоже не очень прав. :? Поскольку MSDOS pathName не очень модный unc сегодня.
Аватара пользователя
Marmot
Графоман
Сообщения: 39279
Зарегистрирован: 17 фев 2003, 17:58
Откуда: Caulfeild
Контактная информация:

Сообщение Marmot »

Это всё список подпорок на заплатки, есть стандарт и ему надо следовать.
А они сначала наделали кучу нестандартных плюх, а теперь неуклюже пытаются имплементировать стандарт и не порушить старые аппликухи построенные на кривых плюхах.
Ответить