summaryrefslogtreecommitdiffstats
path: root/src/modules
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2007-10-29 15:32:22 +0000
committerLennart Poettering <lennart@poettering.net>2007-10-29 15:32:22 +0000
commit27d6b7b4732f3678ecb6f1e5e53d440f1e8b2547 (patch)
tree1bfa866016cbd172bf92d494ae443f1dffd91fc3 /src/modules
parentca98c544ab7a26bfc840d1470f467a7dea06238c (diff)
make use of new pa_readlink() where applicable
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1975 fefdeb5f-60dc-0310-8127-8f9354f1896f
Diffstat (limited to 'src/modules')
-rw-r--r--src/modules/oss-util.c32
1 files changed, 21 insertions, 11 deletions
diff --git a/src/modules/oss-util.c b/src/modules/oss-util.c
index 25e45a35..015db4ca 100644
--- a/src/modules/oss-util.c
+++ b/src/modules/oss-util.c
@@ -293,29 +293,39 @@ int pa_oss_set_volume(int fd, long mixer, const pa_sample_spec *ss, const pa_cvo
}
static int get_device_number(const char *dev) {
- char buf[PATH_MAX];
const char *p, *e;
+ char *rp = NULL;
+ int r;
- if (readlink(dev, buf, sizeof(buf)) < 0) {
- if (errno != EINVAL && errno != ENOLINK)
- return -1;
+ if (!(p = rp = pa_readlink(dev))) {
+ if (errno != EINVAL && errno != ENOLINK) {
+ r = -1;
+ goto finish;
+ }
p = dev;
- } else
- p = buf;
+ }
if ((e = strrchr(p, '/')))
p = e+1;
- if (p == 0)
- return 0;
+ if (p == 0) {
+ r = 0;
+ goto finish;
+ }
p = strchr(p, 0) -1;
- if (*p >= '0' && *p <= '9')
- return *p - '0';
+ if (*p >= '0' && *p <= '9') {
+ r = *p - '0';
+ goto finish;
+ }
- return -1;
+ r = -1;
+
+finish:
+ pa_xfree(rp);
+ return r;
}
int pa_oss_get_hw_description(const char *dev, char *name, size_t l) {