Frage an C-Programmierer

From: Dieter Rauschenberger <dr(at)d-ra.de>
Date: Tue, 05 Apr 2005 17:27:07 +0200

Hallo,

ich denke folgendes Problem kann ein BSD C-Programmierer lösen:

Vorgeschichte:

Ich wollte den Port audio/jack bauen (Version 0.99.0), da portversion
ihn als veraltet meldete. Beim Compilieren brach das make in der Datei
drivers/oss/oss_driver.c im Header <sys/soundcard.h> ab. Es wurden
folgende Bezeichner angemeckert:

u_long
u_char
u_short
u_int

Eigentlich hätten diese ja über <sys/types.h> in oss_driver.c
eingebunden sein sollen. Ausschnitt aus <sys/types.h>

#if __BSD_VISIBLE
typedef unsigned char u_char;
typedef unsigned short u_short;
typedef unsigned int u_int;
typedef unsigned long u_long;
#ifndef _KERNEL
typedef unsigned short ushort; /* Sys V compatibility */
typedef unsigned int uint; /* Sys V compatibility */
#endif
#endif

Aber irgendwie waren diese nicht bekannt. Da ich mich mit
UNIX-Programmierung nun gar nicht auskenne habe ich nicht sofort
versucht die Bedeutung von __BSD_VISIBLE herauszubekommen (zu schwer für
mich). Zunächst wollte ich meine Vermutung bestätigen, ob WIRKLICH die
Fehlermeldung des Compilers aufgrund der fehlenden Deklaration der Typen
ausgelöst wurde. Ich habe deshalb in drivers/oss/oss_driver.c folgendes
unmittelbar vor #include <sys/types.h> eingepatcht (also vor Zeile 49):

typedef unsigned char u_char;
typedef unsigned short u_short;
typedef unsigned int u_int;
typedef unsigned long u_long;

Dann lief der Compiler ohne weitere Probleme durch. Das make install
klappte auch. Diese Art der Therapie ist natürlich grosser Pfusch!!

Jetzt meine Fragen:

* Wie müsste man das Ganze fachgerecht angehen?
* Was bedeutet das __BSD_VISIBLE
* Wenn das __BSD_VISIBLE==TRUE sein müsste, an welcher Stelle müsste man
das definieren? Irgendwo im Makefile? In welchem?

Ich hoffe nicht allzu blöde gefragt zu haben :\

Grüsse
   Dieter

To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Tue 05 Apr 2005 - 17:29:09 CEST

search this site