* some commenting work

* add new field "read_only" to memory blocks
* add new API function pa_context_get_server()
* filter capture data through mcalign on client
* make module-tunnel use pa_socket_client_new_string() instead of using pa_resolve_server() directly.
* remove pa_resolve_server()
* remove debug.h and replace it by a macro definition on the gcc command line
* some strbuf cleanups
* small fixes in pa_stream for cleanup when server dies
* new CLI command "load-sample-dir-lazy"
* send FQDN as part of server info
* rework mcalign, this time with memory block merging
* fix iochannel cleanup when connection dies
* check getaddrinfo() results


git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@286 fefdeb5f-60dc-0310-8127-8f9354f1896f
This commit is contained in:
Lennart Poettering 2004-11-17 00:05:25 +00:00
parent f5f6605254
commit 0a2bbc528b
30 changed files with 636 additions and 273 deletions

View file

@ -27,6 +27,12 @@
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <sys/types.h>
#include <dirent.h>
#include <sys/stat.h>
#include <errno.h>
#include <limits.h>
#include <glob.h>
#include "scache.h"
#include "sink-input.h"
@ -38,6 +44,7 @@
#include "namereg.h"
#include "sound-file.h"
#include "util.h"
#include "log.h"
#define UNLOAD_POLL_TIME 2
@ -291,3 +298,58 @@ void pa_scache_unload_unused(struct pa_core *c) {
pa_subscription_post(c, PA_SUBSCRIPTION_EVENT_SAMPLE_CACHE|PA_SUBSCRIPTION_EVENT_CHANGE, e->index);
}
}
static void add_file(struct pa_core *c, const char *pathname) {
struct stat st;
const char *e;
if (!(e = strrchr(pathname, '/')))
e = pathname;
else
e++;
if (stat(pathname, &st) < 0) {
pa_log(__FILE__": stat('%s') failed: %s\n", pathname, strerror(errno));
return;
}
if (S_ISREG(st.st_mode) || S_ISLNK(st.st_mode))
pa_scache_add_file_lazy(c, e, pathname, NULL);
}
int pa_scache_add_directory_lazy(struct pa_core *c, const char *pathname) {
DIR *dir;
assert(c && pathname);
/* First try to open this as directory */
if (!(dir = opendir(pathname))) {
glob_t p;
unsigned int i;
/* If that fails, try to open it as shell glob */
if (glob(pathname, GLOB_ERR|GLOB_NOSORT, NULL, &p) < 0) {
pa_log(__FILE__": Failed to open directory: %s\n", strerror(errno));
return -1;
}
for (i = 0; i < p.gl_pathc; i++)
add_file(c, p.gl_pathv[i]);
globfree(&p);
} else {
struct dirent *e;
while ((e = readdir(dir))) {
char p[PATH_MAX];
if (e->d_name[0] == '.')
continue;
snprintf(p, sizeof(p), "%s/%s", pathname, e->d_name);
add_file(c, p);
}
}
closedir(dir);
return 0;
}