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

Reply via email to