[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