ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/i-scream/projects/libstatgrab/src/libstatgrab/tools.c
(Generate patch)

Comparing projects/libstatgrab/src/libstatgrab/tools.c (file contents):
Revision 1.20 by pajs, Fri Jan 9 16:37:08 2004 UTC vs.
Revision 1.23 by tdb, Fri Jan 16 15:54:54 2004 UTC

# Line 1 | Line 1
1 < /*
1 > /*
2   * i-scream central monitoring system
3   * http://www.i-scream.org
4 < * Copyright (C) 2000-2003 i-scream
4 > * Copyright (C) 2000-2004 i-scream
5   *
6 < * This program is free software; you can redistribute it and/or
7 < * modify it under the terms of the GNU General Public License
8 < * as published by the Free Software Foundation; either version 2
9 < * of the License, or (at your option) any later version.
6 > * This library is free software; you can redistribute it and/or
7 > * modify it under the terms of the GNU Lesser General Public
8 > * License as published by the Free Software Foundation; either
9 > * version 2.1 of the License, or (at your option) any later version.
10   *
11 < * This program is distributed in the hope that it will be useful,
11 > * This library is distributed in the hope that it will be useful,
12   * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 < * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14 < * GNU General Public License for more details.
13 > * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14 > * Lesser General Public License for more details.
15   *
16 < * You should have received a copy of the GNU General Public License
17 < * along with this program; if not, write to the Free Software
18 < * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
16 > * You should have received a copy of the GNU Lesser General Public
17 > * License along with this library; if not, write to the Free Software
18 > * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
19 > * 02111-1307 USA
20   */
21  
22   #ifdef HAVE_CONFIG_H
# Line 187 | Line 188 | int get_alias(char *alias){
188          return 0;
189   }
190  
191 +
192 + #define BIG_ENOUGH 512
193   int build_mapping(){
194 <        char device_name[512];
194 >        char device_name[BIG_ENOUGH];
195          int x;
196          kstat_ctl_t *kc;
197          kstat_t *ksp;
198          kstat_io_t kios;
199  
200 +        char driver_list[BIG_ENOUGH][BIG_ENOUGH];
201 +        int list_entries = 0;
202 +        int found;
203 +
204          if ((kc = kstat_open()) == NULL) {
205                  return;
206          }
# Line 210 | Line 217 | int build_mapping(){
217                          }
218                          if(x == sizeof device_name) x--;
219                          device_name[x] = '\0';
220 <                        if((get_alias(device_name)) != 0){
221 <                                return 1;
220 >
221 >                        /* Check if we've not already looked it up */
222 >                        found = 0;
223 >                        for(x=0;x<list_entries;x++){
224 >                                if (x>=BIG_ENOUGH){
225 >                                        /* We've got bigger than we thought was massive */
226 >                                        /* If we hit this.. Make big enough bigger */
227 >                                        return 1;
228 >                                }
229 >                                if( !strncmp(driver_list[x], device_name, BIG_ENOUGH)){
230 >                                        found = 1;
231 >                                        break;
232 >                                }
233                          }
234 +
235 +                        if(!found){
236 +                                if((get_alias(device_name)) != 0){
237 +                                        return 1;
238 +                                }
239 +                                strncpy(driver_list[x], device_name, BIG_ENOUGH);
240 +                                list_entries++;
241 +                        }
242                  }
243          }
244  
# Line 269 | Line 295 | static long long atoll(const char *s) {
295   #endif
296  
297   #ifndef HAVE_STRLCPY
298 < *      $OpenBSD: strlcpy.c,v 1.8 2003/06/17 21:56:24 millert Exp $     */
298 > /*      $OpenBSD: strlcpy.c,v 1.8 2003/06/17 21:56:24 millert Exp $     */
299  
300   /*
301   * Copyright (c) 1998 Todd C. Miller <Todd.Miller@courtesan.com>

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines