Am Sam, 2003-02-08 um 15.25 schrieb Bernhard Walle:
On Sat, 08 Feb 2003 at 14:36 (+0100), Ratti wrote:
Am Sam, 2003-02-08 um 11.08 schrieb Bernhard Walle:
On Sat, 08 Feb 2003 at 10:51 (+0100), Ratti wrote:
Ich wuerde eher sagen: Es ist nicht empfehlenswert, Zeilenumbrueche in Dateinamen zu verwenden weil viele Programme unnoetig Probleme bereiten.
Ja, und genau das meinte ich mit "Windows kann kein "/" im Dateinamen. "Unnötige Probleme" heisst ja, das irgendwo irgendwas nciht funktioniert. Daher machen die Fontlinge beim generieren von Dateinamen ein s/\W/_/gs;
Nein, es heisst, dass es _unter_bestimmten_Umstaenden_ nicht funktioniert. Natuerlich ist es sinnvoll solche Zeichen mit einem Unterstrich zu escapen.
Stimmt. Da ich aber kein Perl-Modul gefunden habe, welches in der Lage wäre, Dateien zu kopieren bei vollständiger Beibehaltung der Attribute, mache ich sowas ohnehin über die Shell: `cp -a $src $dest`;
Ist -a nicht eine GNU-Erweiterung? Bin mir aber nicht sicher.
Tja. Ich weiss es nicht. Aber was soll ich machen? Wenn andere das Feature nicht anbieten kann ich a) Für alle das Feature auch nicht anbieten b) Nur den OSsen eine lange Nase ziehen, die das Feature nicht haben.
Ich bevorzuge b). Es liegt bei Dir. Ich bevorzuge
c) Portable Lösungen ("Schreib deinen Code so, dass das Problem erst gar nicht auftritt")
Man kann ja zunaechst pruefen, ob es sich um eine GNU-Umgebung handelt Ein besserer Ansatz wäre, zu prüfen, ob ein System ein Feature bietet und es dann zu nutzen, wenn dieses Feature Vorteile bietet, nicht wie Du vorschlägst, auf "GNU" oder "Linux" o.ä. zu testen.
und dann die ensprechenden Befehle setzen, d. h. wenn das OS das Feature bietet, dann nimmt man -a her, ansonsten laesst man es sein. Immer noch besser als gar nichts. Ansonsten wuerde sich anbieten, das Ganze ueber tar nachzubilden. Ja, das ist eine gängige Lösung für dieses Problem.
Eine andere Lösung wäre, sich gar nicht erst auf cp -a einzulassen und sich darauf zu verlassen, dass User ihre umasks vernünftig gesetzt haben (cp -a macht ausser als "root" sowieso nur sehr selten Sinn) Eine weitere Lösung wäre, statt cp ein BSD-install-kompatibles "install"-Programm/Script zu verwenden. Autoconf sucht standardmässig nach einem solchen und verwendet es falls es eines findet, und greift, falls es keines findet auf sein install-sh Script zurück.
Ob es sich um eine GNU-Erweiterung handelt weiss ich immer noch nicht,
Ich weiss es auch nicht, ich kann Dir aber sagen, dass alles ausser .. cp [ -ip ] filename1 filename2 cp -rR [ -ip ] directory1 directory2 cp [ -iprR ] filename ... directory .. nicht portabel ist.
ich habe mich aber mal an einem HP_UX-System eingeloggt und in dessen Manpage nachgesehen, von -a steht da jedenfalls nichts. Der Auszug oben stammt aus einer SunOS4-Manpage (SunOS4 stellt ungefähr den kleinsten gemeinsamen Nenner der Shellprogrammierung dar.)
Ralf