Radix cross Linux

The main Radix cross Linux repository contains the build scripts of packages, which have the most complete and common functionality for desktop machines

452 Commits   2 Branches   1 Tag
Index: search.c
===================================================================
--- search.c	(nonexistent)
+++ search.c	(revision 5)
@@ -0,0 +1,134 @@
+/* search.c
+
+   Free software by Richard W.E. Furse. Do with as you will. No
+   warranty. */
+
+/*****************************************************************************/
+
+#include <dirent.h>
+#include <dlfcn.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/types.h>
+#include <unistd.h>
+
+/*****************************************************************************/
+
+#include "ladspa.h"
+#include "utils.h"
+
+/*****************************************************************************/
+
+/* Search just the one directory. */
+static void
+LADSPADirectoryPluginSearch
+(const char * pcDirectory, 
+ LADSPAPluginSearchCallbackFunction fCallbackFunction) {
+
+  char * pcFilename;
+  DIR * psDirectory;
+  LADSPA_Descriptor_Function fDescriptorFunction;
+  long lDirLength;
+  long iNeedSlash;
+  struct dirent * psDirectoryEntry;
+  void * pvPluginHandle;
+
+  lDirLength = strlen(pcDirectory);
+  if (!lDirLength)
+    return;
+  if (pcDirectory[lDirLength - 1] == '/')
+    iNeedSlash = 0;
+  else
+    iNeedSlash = 1;
+
+  psDirectory = opendir(pcDirectory);
+  if (!psDirectory)
+    return;
+
+  while (1) {
+
+    psDirectoryEntry = readdir(psDirectory);
+    if (!psDirectoryEntry) {
+      closedir(psDirectory);
+      return;
+    }
+
+    pcFilename = malloc(lDirLength
+			+ strlen(psDirectoryEntry->d_name)
+			+ 1 + iNeedSlash);
+    strcpy(pcFilename, pcDirectory);
+    if (iNeedSlash)
+      strcat(pcFilename, "/");
+    strcat(pcFilename, psDirectoryEntry->d_name);
+    
+    pvPluginHandle = dlopen(pcFilename, RTLD_LAZY);
+    if (pvPluginHandle) {
+      /* This is a file and the file is a shared library! */
+
+      dlerror();
+      fDescriptorFunction
+	= (LADSPA_Descriptor_Function)dlsym(pvPluginHandle,
+					    "ladspa_descriptor");
+      if (dlerror() == NULL && fDescriptorFunction) {
+	/* We've successfully found a ladspa_descriptor function. Pass
+           it to the callback function. */
+	fCallbackFunction(pcFilename,
+			  pvPluginHandle,
+			  fDescriptorFunction);
+	free(pcFilename);
+      }
+      else {
+	/* It was a library, but not a LADSPA one. Unload it. */
+	dlclose(pvPluginHandle);
+	free(pcFilename);
+      }
+    } else {
+      free(pcFilename);
+    }
+  }
+}
+
+/*****************************************************************************/
+
+void 
+LADSPAPluginSearch(LADSPAPluginSearchCallbackFunction fCallbackFunction) {
+
+  char * pcBuffer;
+  const char * pcEnd;
+  const char * pcLADSPAPath;
+  const char * pcStart;
+
+  pcLADSPAPath = getenv("LADSPA_PATH");
+  if (!pcLADSPAPath) {
+    fprintf(stderr,
+	    "Warning: You do not have a LADSPA_PATH "
+	    "environment variable set. Defaulting to "
+            EXPAND_AND_STRINGIFY(DEFAULT_LADSPA_PATH)
+            ".\n");
+    pcLADSPAPath = EXPAND_AND_STRINGIFY(DEFAULT_LADSPA_PATH);
+  }
+  
+  pcStart = pcLADSPAPath;
+  while (*pcStart != '\0') {
+    pcEnd = pcStart;
+    while (*pcEnd != ':' && *pcEnd != '\0')
+      pcEnd++;
+    
+    pcBuffer = malloc(1 + pcEnd - pcStart);
+    if (pcEnd > pcStart)
+      strncpy(pcBuffer, pcStart, pcEnd - pcStart);
+    pcBuffer[pcEnd - pcStart] = '\0';
+    
+    LADSPADirectoryPluginSearch(pcBuffer, fCallbackFunction);
+    free(pcBuffer);
+
+    pcStart = pcEnd;
+    if (*pcStart == ':')
+      pcStart++;
+  }
+}
+
+/*****************************************************************************/
+
+/* EOF */
Index: .
===================================================================
--- .	(nonexistent)
+++ .	(revision 5)

Property changes on: .
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,73 ##
+
+# install dir
+dist
+
+# Target build dirs
+.a1x-newlib
+.a2x-newlib
+.at91sam7s-newlib
+
+.build-machine
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.i586-glibc
+.i686-glibc
+.imx6-glibc
+.jz47xx-glibc
+.makefile
+.am335x-glibc
+.omap543x-glibc
+.p5600-glibc
+.power8-glibc
+.power8le-glibc
+.power9-glibc
+.power9le-glibc
+.m1000-glibc
+.riscv64-glibc
+.rk328x-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.dist
+.rootfs
+
+# src & hw requires
+.src_requires
+.src_requires_depend
+.requires
+.requires_depend
+
+# Tarballs
+*.gz
+*.bz2
+*.lz
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Descriptions
+*.dsc
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~