Update of /cvsroot/alsa/alsa-driver/acore
In directory sc8-pr-cvs1:/tmp/cvs-serv30060/acore
Modified Files:
sound.c wrappers.c
Log Message:
Added strlcat() and strlcpy() wrapper function.
Added snprintf() and vsnprintf() wrapper functions for 2.2 kernels.
Improved detection for request_module().
Cleanups in configure.in to retain backward compatibility.
Index: sound.c
===================================================================
RCS file: /cvsroot/alsa/alsa-driver/acore/sound.c,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -r1.16 -r1.17
--- sound.c 20 May 2003 21:39:17 -0000 1.16
+++ sound.c 30 May 2003 12:27:02 -0000 1.17
@@ -12,10 +12,18 @@
EXPORT_SYMBOL(pm_send);
#endif
/* wrappers */
-#if defined(CONFIG_KMOD) && LINUX_VERSION_CODE < KERNEL_VERSION(2, 5, 69)
+#ifndef CONFIG_HAVE_STRLCPY
+EXPORT_SYMBOL(snd_compat_strlcpy);
+EXPORT_SYMBOL(snd_compat_strlcat);
+#endif
+#ifndef CONFIG_HAVE_SNPRINTF
+EXPORT_SYMBOL(snd_compat_snprintf);
+EXPORT_SYMBOL(snd_compat_vsnprintf);
+#endif
+#ifdef CONFIG_HAVE_OLD_REQUEST_MODULE
EXPORT_SYMBOL(snd_compat_request_module);
#endif
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,3,0)
+#ifdef CONFIG_OLD_KILL_FASYNC
EXPORT_SYMBOL(snd_wrapper_kill_fasync);
#endif
#if defined(CONFIG_DEVFS_FS) && LINUX_VERSION_CODE < KERNEL_VERSION(2, 5, 29)
Index: wrappers.c
===================================================================
RCS file: /cvsroot/alsa/alsa-driver/acore/wrappers.c,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -r1.15 -r1.16
--- wrappers.c 20 May 2003 21:39:17 -0000 1.15
+++ wrappers.c 30 May 2003 12:27:02 -0000 1.16
@@ -15,11 +15,73 @@
#include "../alsa-kernel/core/wrappers.c"
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 4, 10)
-#define vsnprintf(buf,size,fmt,args) vsprintf(buf,fmt,args)
+#ifndef CONFIG_HAVE_STRLCPY
+#define strlcpy snd_compat_strlcpy
+#define strlcat snd_compat_strlcat
+#ifndef BUG_ON
+#define BUG_ON(x) /* nothing */
#endif
+size_t snd_compat_strlcpy(char *dest, const char *src, size_t size)
+{
+ size_t ret = strlen(src);
+
+ if (size) {
+ size_t len = (ret >= size) ? size-1 : ret;
+ memcpy(dest, src, len);
+ dest[len] = '\0';
+ }
+ return ret;
+}
-#if defined(CONFIG_KMOD) && LINUX_VERSION_CODE < KERNEL_VERSION(2, 5, 69)
+size_t snd_compat_strlcat(char *dest, const char *src, size_t count)
+{
+ size_t dsize = strlen(dest);
+ size_t len = strlen(src);
+ size_t res = dsize + len;
+
+ /* This would be a bug */
+ BUG_ON(dsize >= count);
+
+ dest += dsize;
+ count -= dsize;
+ if (len >= count)
+ len = count-1;
+ memcpy(dest, src, len);
+ dest[len] = 0;
+ return res;
+}
+#endif
+
+#ifndef CONFIG_HAVE_SNPRINTF
+#define vsnprintf snd_compat_vsnprintf
+
+int snd_compat_vsnprintf(char *buf, size_t size, const char *fmt, va_list args)
+{
+ char *ptr = (void *) __get_free_pages(GFP_KERNEL, 0);
+ va_list args;
+ if (ptr == NULL) { /* should not happen - GFP_KERNEL has wait flag */
+ if (size > 0)
+ buf[0] = 0;
+ return 0;
+ }
+ vsprintf(ptr, fmt, args);
+ strlcpy(buf, ptr, size);
+ free_pages((unsigned long) ptr, 0);
+ return strlen(buf);
+}
+
+int snd_compat_snprintf(char *buf, size_t size, const char * fmt, ...)
+{
+ int res;
+
+ va_start(args, fmt);
+ res = snd_compat_vsnprintf(buf, size, args);
+ va_end(args);
+ return res;
+}
+#endif
+
+#ifdef CONFIG_HAVE_OLD_REQUEST_MODULE
void snd_compat_request_module(const char *fmt, ...)
{
char buf[64];
@@ -30,6 +92,7 @@
n = vsnprintf(buf, 64, fmt, args);
if (n < 64 && buf[0])
request_module(buf);
+ va_end(args);
}
#endif
@@ -40,14 +103,12 @@
return request_region(from, extent, name);
}
+#ifdef CONFIG_OLD_KILL_FASYNC
void snd_wrapper_kill_fasync(struct fasync_struct **fp, int sig, int band)
{
-#ifdef CONFIG_OLD_KILL_FASYNC
kill_fasync(*(fp), sig);
-#else
- kill_fasync(*(fp), sig, band);
-#endif
}
+#endif
#endif /* < 2.3.0 */
@@ -68,6 +129,7 @@
devfs_unregister(de);
devfs_put(de);
}
+ va_end(args);
}
#endif /* 2.5.29 */
@@ -82,6 +144,7 @@
va_start(args, dir);
n = vsnprintf(buf, 64, dir, args);
+ va_end(args);
if (n < 64 && buf[0]) {
#if LINUX_VERSION_CODE < KERNEL_VERSION(2,3,0)
return devfs_mk_dir(NULL, buf, strlen(dir), NULL) ? -EIO : 0;
@@ -101,6 +164,7 @@
va_start(args, fmt);
n = vsnprintf(buf, 64, fmt, args);
+ va_end(args);
if (n < 64 && buf[0]) {
devfs_register(NULL, buf, DEVFS_FL_DEFAULT,
major(dev), minor(dev), mode,
-------------------------------------------------------
This SF.net email is sponsored by: eBay
Get office equipment for less on eBay!
http://adfarm.mediaplex.com/ad/ck/711-11697-6916-5
_______________________________________________
Alsa-cvslog mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/alsa-cvslog