diff src/nas.c @ 442:abe6d1db359e r21-2-36

Import from CVS: tag r21-2-36
author cvs
date Mon, 13 Aug 2007 11:35:02 +0200
parents 8de8e3f6228a
children 183866b06e0b
line wrap: on
line diff
--- a/src/nas.c	Mon Aug 13 11:33:40 2007 +0200
+++ b/src/nas.c	Mon Aug 13 11:35:02 2007 +0200
@@ -68,15 +68,30 @@
 #include <unistd.h>
 #endif
 
+/* NAS <= 1.2p5 defines {BIG,LITTLE}_ENDIAN in <audio/fileutil.h>,
+   conflicting with GNU libc (at least); newer versions avoid this
+   name space pollution.
 
+   DO NOT USE THOSE MACROS in this file.  Use NAS_{BIG,LITTLE}_ENDIAN.
+
+   It would be slightly more reliable to do this via configure, but that
+   seems unnecessarily complex.
+*/
 #undef LITTLE_ENDIAN
 #undef BIG_ENDIAN
+
 #include <audio/audiolib.h>
 #include <audio/soundlib.h>
 #include <audio/snd.h>
 #include <audio/wave.h>
 #include <audio/fileutil.h>
 
+/* NAS <= 1.2p5 <audio/fileutil.h> doesn't define the NAS_ versions */
+#ifndef NAS_LITTLE_ENDIAN
+#define NAS_LITTLE_ENDIAN LITTLE_ENDIAN
+#define NAS_BIG_ENDIAN BIG_ENDIAN
+#endif
+
 #ifdef emacs
 
 #    define XTOOLKIT
@@ -108,7 +123,6 @@
 
 #else /* !emacs */
 #    define warn(str) fprintf (stderr, "%s\n", (str))
-#    define CONST const
 #endif /* emacs */
 
 #ifdef XTOOLKIT
@@ -624,7 +638,7 @@
 /* Create a name from the sound. */
 
 static char *
-NameFromData (CONST char *buf,
+NameFromData (const char *buf,
 	      int len)
 
 {
@@ -668,7 +682,7 @@
  */
 
 static SndInfo *
-SndOpenDataForReading (CONST char *data,
+SndOpenDataForReading (const char *data,
 		       int length)
 
 {
@@ -683,7 +697,7 @@
 
   memcpy (&si->h, data, sizeof (SndHeader));
 
-  if (LITTLE_ENDIAN)
+  if (NAS_LITTLE_ENDIAN)
     {
       char            n;
     
@@ -744,11 +758,11 @@
 /* The length of the "file" */
 static size_t file_len;
 /* The actual "file" data. */
-static CONST void* file_data;
+static const void* file_data;
 
 /* Like fopen, but for a buffer in memory */
 static void
-dopen (CONST void* data, size_t length)
+dopen (const void* data, size_t length)
 {
    file_data = data;
    file_len = length;
@@ -835,7 +849,7 @@
     char            n;
 
     if ((status = dread(c, sizeof(RiffChunk), 1)))
-	if (BIG_ENDIAN)
+	if (NAS_BIG_ENDIAN)
 	    swapl(&c->ckSize, n);
 
     return status;
@@ -845,7 +859,7 @@
    read the wave data from a buffer in memory. */
 
 static WaveInfo *
-WaveOpenDataForReading (CONST char *data,
+WaveOpenDataForReading (const char *data,
 			int length)
 {
     RiffChunk       ck;
@@ -921,18 +935,18 @@
 	{
 	    AuInt32            dummy;
 
-	    wi->format = DataReadS(BIG_ENDIAN);
-	    wi->channels = DataReadS(BIG_ENDIAN);
-	    wi->sampleRate = DataReadL(BIG_ENDIAN);
+	    wi->format = DataReadS(NAS_BIG_ENDIAN);
+	    wi->channels = DataReadS(NAS_BIG_ENDIAN);
+	    wi->sampleRate = DataReadL(NAS_BIG_ENDIAN);
 
 	    /* we don't care about the next two fields */
-	    dummy = DataReadL(BIG_ENDIAN);
-	    dummy = DataReadS(BIG_ENDIAN);
+	    dummy = DataReadL(NAS_BIG_ENDIAN);
+	    dummy = DataReadS(NAS_BIG_ENDIAN);
 
 	    if (wi->format != RIFF_WAVE_FORMAT_PCM)
 		Err();
 
-	    wi->bitsPerSample = DataReadS(BIG_ENDIAN);
+	    wi->bitsPerSample = DataReadS(NAS_BIG_ENDIAN);
 
 	    /* skip any other format specific fields */
 	    dseek(PAD2(ck.ckSize - 16), 1);