Size: a a a

2021 May 01

Dv

Dr. Friedrich von Ne... in codingteam
Хм, окей, да, пусть будет новый интерфейс. Чтобы getenv2 возвращал безопасную копию, на которой потом надо делать какой-нибудь freeenv.
источник

c

codingteam@cjr in codingteam
Minoru
> <@fvnever> Вроде, мы пришли к выводу, что 5.0 — это ненастоящая версия?

а, да, просто GCC 5 (я не знаю, какая конкретно у меня в CI)
источник

c

codingteam@cjr in codingteam
Minoru
да просто free, зачем freeenv
источник

c

codingteam@cjr in codingteam
Minoru
или ты предлагаешь reference counting там внутри сделать? Это тоже годно
источник

Dv

Dr. Friedrich von Ne... in codingteam
Мне не нравится просто free, не хочу завязываться на способ, которым выделяется память.
источник

Dv

Dr. Friedrich von Ne... in codingteam
Но мб там в POSIX действительно так принято? Я не знаю.
источник

Dv

Dr. Friedrich von Ne... in codingteam
Эта идея мне в голову не приходила, но ведь действительно можно.
источник

c

codingteam@cjr in codingteam
Minoru
про позикс не уверен, он у меня как-то не выделен в отдельную группу. В целом сишные апишки предлагают что попало: и не освобождать (потому что это указатель на static, лол), либо освобождать с помощью free, либо освобождать с помощью их особой функции. Пожалуй, особая функция действительно гибче
источник

Dv

Dr. Friedrich von Ne... in codingteam
При работе со старым API его можно будет заткнуть, слинковавшись с пустой freeenv.
источник

c

codingteam@cjr in codingteam
Minoru
ну, ок, это обратная совместимость. А forward compatibility как?
источник

c

codingteam@cjr in codingteam
Minoru
а, хотя это же сишка
источник

c

codingteam@cjr in codingteam
Minoru
#if POSIX_VERSION >= 20210501
free(env_home);
#endif

и дело с концом :)
источник

c

codingteam@cjr in codingteam
Minoru
> <@pink_snow> Никто же не хочет потокобезопасные хелперы для модификации argv?

это плохая аналогия, потому что до argv (по-хорошему) можно добраться только одним способом — его должны тебе явно передать из main. А вот setenv можно вызвать из любого уголка программы, тихо и незаметно
источник

c

codingteam@cjr in codingteam
Minoru
> <@fvnever> У меня есть функции, которые зависят от getenv, и хотелось его переопределять во время выполнения тестов. […]

вот что-то кроме тестов пока что примеров использования setenv не нашлось :) Может быть, это всё и правда non-issue
источник

c

codingteam@cjr in codingteam
Minoru
> <@pink_snow> Как в gdb массив этот массив строк вывести?

SO предлагает дёрнуть xargs printf в шелле: https://stackoverflow.com/a/32917097 :)
источник

Dv

Dr. Friedrich von Ne... in codingteam
Ппц содомия.
источник

t

ttldtor in codingteam
а ещё юзер может предоставлять свой буфер и размер, а функция заполнять
источник

t

ttldtor in codingteam
потому что херово, когда либа выделяет память, а высвобождать должен юзер
источник

Dv

Dr. Friedrich von Ne... in codingteam
Имхо, вполне норм, если есть специальная функция освобождения для такого объекта.
источник

t

ttldtor in codingteam
только если так)
источник