staging.inyokaproject.org

Sinn auskommentierter Klammern in case-Statement

Status: Ungelöst | Ubuntu-Version: Ubuntu 14.04 (Trusty Tahr)
Antworten |

Harry_Hirsch

Anmeldungsdatum:
19. August 2011

Beiträge: Zähle...

Hallo, ich versuche gerade diverse Programme unter Gnome3-Classic an meine Bedürfnisse anzupassen, weil mir einfach verschiedene Dinge fehlen, die man mit den üblichen Tricks nicht hinbekommt (z.B. eine zu hohe oberste Fensterleiste). Dazu habe ich mir als erstes Übungsbeispiel gedit in der Version 3.10.4 ausgesucht und das Source-Paket dazu heruntergeladen. Im automatisch erzeugten bzw. im Source-Paket enthaltenen configure-Skript ist mir jetzt aufgefallen, dass in vielen Zeilen mit dem Befehl case am Ende der Zeile jeweils auskommentierte runde Klammern, genauer Anfangsklammern

#(

oder

 #((((

stehen. Ziemlich sicher haben die keine Bedeutung, weil sie ja auskommentiert da stehen, aber wenn es solche "Artefakte" im automatisch erzeugten Shell-Skript gibt, mit immerhin über 21.000 Zeilen, gibt es vielleicht an anderer Stelle, die einem nicht so leicht auffält, auch welche? Oder haben diese Klammern vielleicht doch eine Bedeutung?

Ein Beispiel aus der Zeile 512 des obigen configure-Skriptes:

1
2
3
4
5
6
ECHO_C= ECHO_N= ECHO_T=
case `echo -n x` in #(((((
-n*)
  case `echo 'xy\c'` in
  *c*) ECHO_T='	';;	# ECHO_T is single tab character.
  xy)  ECHO_C='\c';;

Das Seltsame ist noch, dass nur in einigen der case-Zeilen diese Kommentare stehen, in anderen nicht.

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17432

Harry_Hirsch schrieb:

Ziemlich sicher haben die keine Bedeutung, weil sie ja auskommentiert da stehen, aber wenn es solche "Artefakte" im automatisch erzeugten Shell-Skript gibt, mit immerhin über 21.000 Zeilen, gibt es vielleicht an anderer Stelle, die einem nicht so leicht auffält, auch welche?

Mein erster Verdacht wäre, dass es sich um einen Trick handelt, um einen Editor mit Syntaxhighlightening zu benutzen, der die Bashsyntax nicht kennt, und die vielen schließenden Klammern bei Case-Statements sonst anmeckert und sich beschwert, dass er dazu keine öffnenden Klammern findet. ☺

Wenn sie aber hinter Kommentaren, die er auch nicht erkennt, versteckt werden, und er zählt nach, dann passt es wieder.

Vain

Avatar von Vain

Anmeldungsdatum:
12. April 2008

Beiträge: 2503

Vielleicht sind es auch Hints für Folding.

Kannst du mal die konkreten Dateien verlinken, um die es geht?

Harry_Hirsch

(Themenstarter)

Anmeldungsdatum:
19. August 2011

Beiträge: 80

@Vain

Also heruntergeladen habe ich das Source-Paket mit apt-get source gedit.

Die Dateien heißen gedit_3.10.4.orig.tar.xz und gedit_3.10.4-0ubuntu4.debian.tar.gz.

EDIT:

Also mir ist doch noch klar geworden 😉, dass je nach Ubuntu-Version man mit diesen Befehlen jeweils unterschiedliche Sourcen-Pakete herunterlädt.

Deswegen hier doch der Direkt-Link zum Paket: http://packages.ubuntu.com/source/trusty/gedit

Und zu den Dateien: http://archive.ubuntu.com/ubuntu/pool/main/g/gedit/gedit_3.10.4.orig.tar.xz

http://archive.ubuntu.com/ubuntu/pool/main/g/gedit/gedit_3.10.4-0ubuntu4.debian.tar.gz

Wobei ich gerade nicht weiß, wofür man eigentlich die letzte Datei braucht.

Vain

Avatar von Vain

Anmeldungsdatum:
12. April 2008

Beiträge: 2503

Das „configure“ hat kein Mensch geschrieben. Das Skript wird aus der „configure.ac“ heraus generiert und zwar durch das Tool „autoconf“. „configure.ac“ wiederum ist in m4 geschrieben.

Im Quellcode von autoconf findet man diese Stelle:

The shell comments are intentional, to work around people who don't realize the impacts of using insufficient m4 quoting.

Leider kenne ich mich mit m4 nicht aus und kann daher nicht bis ins Detail erklären, was hier los ist. ☹ Die von dir gefundenen Klammern scheinen aber Workarounds für eigentlich „kaputte“ „configure.ac“-Dateien zu sein.

Lustige Sache, die du da ausgegraben hast. ☺

Harry_Hirsch

(Themenstarter)

Anmeldungsdatum:
19. August 2011

Beiträge: 80

Vain schrieb:

Das „configure“ hat kein Mensch geschrieben. Das Skript wird aus der „configure.ac“ heraus generiert und zwar durch das Tool „autoconf“. „configure.ac“ wiederum ist in m4 geschrieben.

Ja das wusste ich schon als ich mich an das Skript herangemacht hatte - deswegen hatte ich ja auch "automatisch erzeugtes configure-Skript" geschrieben. Aber ich dachte halt, wenn der Rest einigermaßen logisch aussieht, dass dann alles logisch und vernünftig sein sollte. Aber dem ist ja anscheinend nicht so.

Im Quellcode von autoconf findet man diese Stelle:

The shell comments are intentional, to work around people who don't realize the impacts of using insufficient m4 quoting.

M4 ist wohl schon etwas happig für Anfänger - also bis auf weiteres auch nichts für mich. Deswegen gibt's dann auch die ganzen Automatik-Skripte.

Leider kenne ich mich mit m4 nicht aus und kann daher nicht bis ins Detail erklären, was hier los ist. ☹ Die von dir gefundenen Klammern scheinen aber Workarounds für eigentlich „kaputte“ „configure.ac“-Dateien zu sein.

Auch auf englisch hatte ich nichts gescheites zum Thema gefunden. Diese Klammern sind wohl wirklich ohne große Bedeutung. Danke vielmals für's reinschauen!

Lustige Sache, die du da ausgegraben hast. ☺

Ja ich grabe immer gerne dort, wo noch kein anderer gegraben hat. 😉

Soll ich den Thread auf gelöst setzen oder noch warten bis jemand die vollständige Erklärung hat?

Antworten |