[rfc] HOME-ETC.txt [było: Re: Wolna amerykanka w PLD?]
Witold Filipczyk
witekfl at poczta.gazeta.pl
Tue Apr 8 21:11:31 CEST 2003
On Tue, Apr 08, 2003 at 03:45:24PM +0200, Jakub Bogusz wrote:
> On Tue, Apr 08, 2003 at 03:23:52PM +0200, Tomek Orzechowski wrote:
> > [08 kwiecień, 2003] Michal Moskal napisał:
> > >IMHO CONFIG_DIR powinno być bezwzględne. To żaden problem tak to ustawić
> > >w ~/.*profile, a patche są znacznie prostsze, np. wystarczy często
> > >zmiana getenv("HOME") na getenv("CONFIG_DIR") ? getenv("CONFIG_DIR") :
> > >getenv("HOME").
> >
> > Zmiana CONFIG_DIR z względnego na bezwzględne nie powinna być dla
> > użytkownika dużym problemem. Po prostu zamieni
> > export CONFIG_DIR=etc na
> > export CINFIG_DIR=$HOME/etc
>
> Albo (to trochę skomplikowałoby poprawki, ale załatwiłoby problem
> zgodności nowych i starych wersji) jeśli pierwszym znakiem $CONFIG_DIR
> jest '/', to ścieżka bezwzględna, wpp. względem $HOME.
HOME też może ktoś ustawić jako zmienną względną i nigdzie nie jest
sprawdzane czy zaczyna się od '/'.
Cała dyskusja powinna się sprowadzić do tego jak nazwać tę zmienną.
Bo to, że powinna być bezwzględna jest oczywiste.
Podstawowym argumentem za jest to, że łatwiej robić patche.
W robieniu patcha też nie ma dużej filozofii.
Schemat
W pliku jest mniej więcej tak
home = getenv("HOME"); // pobierz o informację o HOME
sprintf(buf, "...") // utwórz nazwę pliku konfiguracyjnego
open // otwórz plik
to trzeba zamienić na:
...dir = getenv("...DIR");
if (...dir) {
sprintf(...)
} else {
home = getenv("HOME");
sprintf(...)
}
open
W porządnie napisanych programach tak właśnie by było.
Są niestety jeszcze takie programy, że pliki konfiguracyjne nazywają
"~/cośtam" i '~' jest rozwijana.
Jest z tym trochę roboty, ale to też jest łatwe.
Jeśli program tworzy katalog $HOME, gdy go nie ma, to i spaczowany
program powinien tworzyć $...DIR.
I to wszystko.
Sprawa home_etc była poruszana wielokrotnie, ale nic z tego nie wynikło.
Zacznijcie od ustalenia nazwy tej zmiennej ;-)
Nie ma sensu komentować paczy etc_dir. Wystarczy ustalić nazwę zmiennej
i pozamieniać ETC_DIR na ustaloną zmienną.
--
Witold Filipczyk
<witekfl at poczta.gazeta.pl>
More information about the pld-devel-pl
mailing list