fix packaging
[adaptation/panda/wpa_supplicant.git] / packaging / wpa_s-alldrivers.patch
1 commit 74b1c84a0b1218a33ce7089e11172e7f39273158
2 Author: Samuel Ortiz <sameo@linux.intel.com>
3 Date:   Tue Nov 9 16:45:27 2010 +0200
4
5     wpa_supplicant: Test all compiled drivers before failing
6     
7     wpa_supplicant_set_driver() is returning an error if the first driver
8     in the driver list is not built in. It should continue through the
9     driver list until it finds one that's built in.
10
11 diff --git a/wpa_supplicant/wpa_supplicant.c b/wpa_supplicant/wpa_supplicant.c
12 index ff1cfd3..0a603af 100644
13 --- a/wpa_supplicant/wpa_supplicant.c
14 +++ b/wpa_supplicant/wpa_supplicant.c
15 @@ -1702,7 +1702,7 @@ static int wpa_supplicant_set_driver(struct wpa_supplicant *wpa_s,
16  {
17         int i;
18         size_t len;
19 -       const char *pos;
20 +       const char *pos, *driver = name;
21  
22         if (wpa_s == NULL)
23                 return -1;
24 @@ -1720,20 +1720,26 @@ static int wpa_supplicant_set_driver(struct wpa_supplicant *wpa_s,
25                 return 0;
26         }
27  
28 -       pos = os_strchr(name, ',');
29 -       if (pos)
30 -               len = pos - name;
31 -       else
32 -               len = os_strlen(name);
33 -       for (i = 0; wpa_drivers[i]; i++) {
34 -               if (os_strlen(wpa_drivers[i]->name) == len &&
35 -                   os_strncmp(name, wpa_drivers[i]->name, len) ==
36 -                   0) {
37 -                       wpa_s->driver = wpa_drivers[i];
38 -                       wpa_s->global_drv_priv = wpa_s->global->drv_priv[i];
39 -                       return 0;
40 +       do {
41 +               pos = os_strchr(driver, ',');
42 +               if (pos)
43 +                       len = pos - driver;
44 +               else
45 +                       len = os_strlen(driver);
46 +
47 +               for (i = 0; wpa_drivers[i]; i++) {
48 +                       if (os_strlen(wpa_drivers[i]->name) == len &&
49 +                           os_strncmp(driver, wpa_drivers[i]->name, len) ==
50 +                           0) {
51 +                               wpa_s->driver = wpa_drivers[i];
52 +                               wpa_s->global_drv_priv =
53 +                                       wpa_s->global->drv_priv[i];
54 +                               return 0;
55 +                       }
56                 }
57 -       }
58 +
59 +               driver = pos + 1;
60 +       } while (pos);
61  
62         wpa_printf(MSG_ERROR, "Unsupported driver '%s'.", name);
63         return -1;