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.24 by tdb, Mon Jan 19 16:49:21 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 > * $Id$
22   */
23  
24   #ifdef HAVE_CONFIG_H
# Line 187 | Line 190 | int get_alias(char *alias){
190          return 0;
191   }
192  
193 +
194 + #define BIG_ENOUGH 512
195   int build_mapping(){
196 <        char device_name[512];
196 >        char device_name[BIG_ENOUGH];
197          int x;
198          kstat_ctl_t *kc;
199          kstat_t *ksp;
200          kstat_io_t kios;
201  
202 +        char driver_list[BIG_ENOUGH][BIG_ENOUGH];
203 +        int list_entries = 0;
204 +        int found;
205 +
206          if ((kc = kstat_open()) == NULL) {
207                  return;
208          }
# Line 210 | Line 219 | int build_mapping(){
219                          }
220                          if(x == sizeof device_name) x--;
221                          device_name[x] = '\0';
222 <                        if((get_alias(device_name)) != 0){
223 <                                return 1;
222 >
223 >                        /* Check if we've not already looked it up */
224 >                        found = 0;
225 >                        for(x=0;x<list_entries;x++){
226 >                                if (x>=BIG_ENOUGH){
227 >                                        /* We've got bigger than we thought was massive */
228 >                                        /* If we hit this.. Make big enough bigger */
229 >                                        return 1;
230 >                                }
231 >                                if( !strncmp(driver_list[x], device_name, BIG_ENOUGH)){
232 >                                        found = 1;
233 >                                        break;
234 >                                }
235                          }
236 +
237 +                        if(!found){
238 +                                if((get_alias(device_name)) != 0){
239 +                                        return 1;
240 +                                }
241 +                                strncpy(driver_list[x], device_name, BIG_ENOUGH);
242 +                                list_entries++;
243 +                        }
244                  }
245          }
246  
# Line 269 | Line 297 | static long long atoll(const char *s) {
297   #endif
298  
299   #ifndef HAVE_STRLCPY
300 < *      $OpenBSD: strlcpy.c,v 1.8 2003/06/17 21:56:24 millert Exp $     */
300 > /*      $OpenBSD: strlcpy.c,v 1.8 2003/06/17 21:56:24 millert Exp $     */
301  
302   /*
303   * Copyright (c) 1998 Todd C. Miller <Todd.Miller@courtesan.com>

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines