From bd9d3e1df3686f3a2090d4a3b27a6f95b795aaba Mon Sep 17 00:00:00 2001 From: xiphmont Date: Fri, 19 Jan 2007 17:44:17 +0000 Subject: [PATCH] Update the fusd examples now that multiple registration is no longer bitrotted. git-svn-id: http://svn.xiph.org/trunk/fusd@12355 0101bb08-14d6-0310-b084-bc0e0c8e3800 --- examples/drums.c | 2 +- examples/drums2.c | 9 ++++++--- examples/pager.c | 2 +- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/examples/drums.c b/examples/drums.c index f39ccf5..24b8e69 100644 --- a/examples/drums.c +++ b/examples/drums.c @@ -59,7 +59,7 @@ static char *drums_strings[] = {"bam", "bum", "beat", "boom", "bang", "crash", NULL}; -int drums_read(struct fusd_file_info *file, char *user_buffer, +ssize_t drums_read(struct fusd_file_info *file, char *user_buffer, size_t user_length, loff_t *offset) { int len; diff --git a/examples/drums2.c b/examples/drums2.c index 3146aaa..0165eeb 100644 --- a/examples/drums2.c +++ b/examples/drums2.c @@ -82,14 +82,16 @@ int drums_open(struct fusd_file_info *file) /* file->device_info is what we passed to fusd_register when we * registered the device. It's a pointer into the "drums" struct. */ struct drum_info *d = (struct drum_info *) file->device_info; + int *user_num = calloc(1, sizeof(*user_num)); /* Store this user's unique user number in their private_data */ - file->private_data = (void *) ++(d->num_users); + *user_num = ++(d->num_users); + file->private_data = (void *) user_num; return 0; /* return success */ } -int drums_read(struct fusd_file_info *file, char *user_buffer, +ssize_t drums_read(struct fusd_file_info *file, char *user_buffer, size_t user_length, loff_t *offset) { struct drum_info *d = (struct drum_info *) file->device_info; @@ -97,10 +99,11 @@ int drums_read(struct fusd_file_info *file, char *user_buffer, char sound[128]; sprintf(sound, "You are user %d to hear a drum go '%s'!\n", - (int) file->private_data, d->name); + *(int *) file->private_data, d->name); len = MIN(user_length, strlen(sound)); memcpy(user_buffer, sound, len); + *offset += len; return len; } /* EXAMPLE STOP */ diff --git a/examples/pager.c b/examples/pager.c index 3d8fa87..40fe675 100644 --- a/examples/pager.c +++ b/examples/pager.c @@ -247,7 +247,7 @@ void pager_notify_complete_read(struct pager_client *c) * one; if this happens, use fusd_destroy() to get rid of the older one. */ /* EXAMPLE START pager-polldiff.c */ -ssize_t pager_notify_polldiff(struct fusd_file_info *file, +int pager_notify_polldiff(struct fusd_file_info *file, unsigned int cached_state) { struct pager_client *c = (struct pager_client *) file->private_data;