/[openvortex]/alsa/acore/wrappers.c
ViewVC logotype

Diff of /alsa/acore/wrappers.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.2 by vizard, Sat May 31 02:35:09 2003 UTC revision 1.3 by vizard, Sun Jun 15 21:01:29 2003 UTC
# Line 10  Line 10 
10  #include "sndversions.h"  #include "sndversions.h"
11  #endif  #endif
12    
13    #include <linux/kmod.h>
14  #include <linux/devfs_fs_kernel.h>  #include <linux/devfs_fs_kernel.h>
15    
16  #include "../alsa-kernel/core/wrappers.c"  #include "../alsa-kernel/core/wrappers.c"
17    
18    #ifndef CONFIG_HAVE_STRLCPY
19    #define strlcpy snd_compat_strlcpy
20    #define strlcat snd_compat_strlcat
21    #ifndef BUG_ON
22    #define BUG_ON(x) /* nothing */
23    #endif
24    size_t snd_compat_strlcpy(char *dest, const char *src, size_t size)
25    {
26            size_t ret = strlen(src);
27    
28            if (size) {
29                    size_t len = (ret >= size) ? size-1 : ret;
30                    memcpy(dest, src, len);
31                    dest[len] = '\0';
32            }
33            return ret;
34    }
35    
36    size_t snd_compat_strlcat(char *dest, const char *src, size_t count)
37    {
38            size_t dsize = strlen(dest);
39            size_t len = strlen(src);
40            size_t res = dsize + len;
41    
42            /* This would be a bug */
43            BUG_ON(dsize >= count);
44    
45            dest += dsize;
46            count -= dsize;
47            if (len >= count)
48                    len = count-1;
49            memcpy(dest, src, len);
50            dest[len] = 0;
51            return res;
52    }
53    #endif
54    
55    #ifndef CONFIG_HAVE_SNPRINTF
56    #define vsnprintf snd_compat_vsnprintf
57    
58    int snd_compat_vsnprintf(char *buf, size_t size, const char *fmt, va_list args)
59    {
60            char *ptr = (void *) __get_free_pages(GFP_KERNEL, 0);
61            va_list args;
62            if (ptr == NULL) {      /* should not happen - GFP_KERNEL has wait flag */
63                    if (size > 0)
64                            buf[0] = 0;
65                    return 0;
66            }
67            vsprintf(ptr, fmt, args);
68            strlcpy(buf, ptr, size);
69            free_pages((unsigned long) ptr, 0);
70            return strlen(buf);
71    }
72    
73    int snd_compat_snprintf(char *buf, size_t size, const char * fmt, ...)
74    {
75            int res;
76    
77            va_start(args, fmt);
78            res = snd_compat_vsnprintf(buf, size, args);
79            va_end(args);
80            return res;
81    }
82    #endif
83    
84    #ifdef CONFIG_HAVE_OLD_REQUEST_MODULE
85    void snd_compat_request_module(const char *fmt, ...)
86    {
87            char buf[64];
88            va_list args;
89            int n;
90    
91            va_start(args, fmt);
92            n = vsnprintf(buf, 64, fmt, args);
93            if (n < 64 && buf[0])
94                    request_module(buf);
95            va_end(args);
96    }
97    #endif
98    
99  #if LINUX_VERSION_CODE < KERNEL_VERSION(2, 3, 0)  #if LINUX_VERSION_CODE < KERNEL_VERSION(2, 3, 0)
100    
101  void snd_wrapper_request_region(unsigned long from, unsigned long extent, const char *name)  void snd_wrapper_request_region(unsigned long from, unsigned long extent, const char *name)
# Line 21  void snd_wrapper_request_region(unsigned Line 103  void snd_wrapper_request_region(unsigned
103          return request_region(from, extent, name);          return request_region(from, extent, name);
104  }  }
105    
106    #ifdef CONFIG_OLD_KILL_FASYNC
107  void snd_wrapper_kill_fasync(struct fasync_struct **fp, int sig, int band)  void snd_wrapper_kill_fasync(struct fasync_struct **fp, int sig, int band)
108  {  {
 #ifdef CONFIG_OLD_KILL_FASYNC  
109          kill_fasync(*(fp), sig);          kill_fasync(*(fp), sig);
 #else  
         kill_fasync(*(fp), sig, band);  
 #endif  
110  }  }
111    #endif
112    
113  #endif /* < 2.3.0 */  #endif /* < 2.3.0 */
114    
115  #if defined(CONFIG_DEVFS_FS)  #if defined(CONFIG_DEVFS_FS)
116    
 #if LINUX_VERSION_CODE < KERNEL_VERSION(2, 4, 10)  
 #define vsnprintf(buf,size,fmt,args) vsprintf(buf,fmt,args)  
 #endif  
   
117  #if LINUX_VERSION_CODE < KERNEL_VERSION(2, 5, 29)  #if LINUX_VERSION_CODE < KERNEL_VERSION(2, 5, 29)
118    
119  void snd_compat_devfs_remove(const char *fmt, ...)  void snd_compat_devfs_remove(const char *fmt, ...)
# Line 53  void snd_compat_devfs_remove(const char Line 129  void snd_compat_devfs_remove(const char
129                  devfs_unregister(de);                  devfs_unregister(de);
130                  devfs_put(de);                  devfs_put(de);
131          }          }
132            va_end(args);
133  }  }
134    
135  #endif /* 2.5.29 */  #endif /* 2.5.29 */
136    
137  #if LINUX_VERSION_CODE < KERNEL_VERSION(2, 5, 67)  #if LINUX_VERSION_CODE < KERNEL_VERSION(2, 5, 67)
138    
139  devfs_handle_t snd_compat_devfs_mk_dir(const char *dir)  int snd_compat_devfs_mk_dir(const char *dir, ...)
140  {  {
141            char buf[64];
142            va_list args;
143            int n;
144    
145            va_start(args, dir);
146            n = vsnprintf(buf, 64, dir, args);
147            va_end(args);
148            if (n < 64 && buf[0]) {
149  #if LINUX_VERSION_CODE < KERNEL_VERSION(2,3,0)  #if LINUX_VERSION_CODE < KERNEL_VERSION(2,3,0)
150          return devfs_mk_dir(NULL, dir, strlen(dir), NULL);                  return devfs_mk_dir(NULL, buf, strlen(dir), NULL) ? -EIO : 0;
151  #else  #else
152          return devfs_mk_dir(NULL, dir, NULL);                  return devfs_mk_dir(NULL, buf, NULL) ? -EIO : 0;
153  #endif  #endif
154            }
155            return 0;
156    }
157    
158    extern struct file_operations snd_fops;
159    int snd_compat_devfs_mk_cdev(dev_t dev, umode_t mode, const char *fmt, ...)
160    {
161            char buf[64];
162            va_list args;
163            int n;
164    
165            va_start(args, fmt);
166            n = vsnprintf(buf, 64, fmt, args);
167            va_end(args);
168            if (n < 64 && buf[0]) {
169                    devfs_register(NULL, buf, DEVFS_FL_DEFAULT,
170                                   major(dev), minor(dev), mode,
171                                   &snd_fops, NULL);
172            }
173            return 0;
174  }  }
175    
176  #endif /* 2.5.67 */  #endif /* 2.5.67 */

Legend:
Removed from v.1.2  
changed lines
  Added in v.1.3

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26