- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
FILE *ConfigFile = NULL;
char *workdir = NULL;
workdir=getenv("APP_WORKDIR");
if ((NULL!=workdir) && (NULL != (ConfigFile = fopen(strcat(workdir,"appname/config.xml"), "r"))))
{
fclose(ConfigFile);
workdir[strlen(workdir)-10] = '\0';
setenv("APP_RESOURCE_DIR", workdir , 1);
}
absolut 19.11.2010 16:51 # 0
Показательно, что в проверке на NULL константа стоит вначале, видимо автор частенько попадал на присваивание внутри if.
Анонимус 19.11.2010 17:02 # 0
absolut 19.11.2010 17:04 # 0
Файлы, пайпы, общая память ...
Анонимус 19.11.2010 17:06 # 0
файлы -- круто (если конечно они не мемори мапед)
пайпы -- это которые в win32?
зы: это сарказм, если что
absolut 19.11.2010 17:49 # 0
кстати, shared memory по имени открывается пайп
Dummy00001 19.11.2010 18:10 # 0
А как насчет просто инстанциировать объект и передать конструктору параметры??
Не смотря на С++ терминологию, применимо и к чистому С.
Анонимус 19.11.2010 18:14 # 0
понятно, что кашерно делать так:
absolut 19.11.2010 18:19 # 0
Dummy00001 19.11.2010 17:09 # +1
то что они setenv() делают (== не умеют интерфейсы делать т.к. дебильно все синглтонами обвешано) это полбеды.
никто еще не заметил что данная конструкция еще и окружение (или по крайней мере одну другую переменную) убивает тем strcat(), т.к. getenv() возвращает указатель на строку из внутренней структуры окружения.
nil 20.11.2010 00:54 # 0
А потом приходим домой, вознамереваясь в очередной раз зарезать правду-матку, заклеймить и выжечь глаголом (или на худой конец деепричастием)... Так, мысль потерял. Короче, а тут уже все рассказано:)
Dummy00001 20.11.2010 01:31 # 0
я как бы насамом деле это говно увидел именно по strcat() - на который у меня давно автоматическая реакция уже выработалась "а размер буфера кто будет проверять?????" - а когда увидел что это делается в результат getenv(), чуть кофеем офисным не захлебулся.