Changeset 1039
- Timestamp:
- 05/08/08 00:01:33 (7 months ago)
- Location:
- trunk
- Files:
-
- 2 modified
-
etc/openct_usb.mdev.in (modified) (2 diffs)
-
src/ifd/sys-linux.c (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/etc/openct_usb.mdev.in
r1035 r1039 11 11 [ "$ACTION" = "add" ] || exit 0 12 12 [ "$DEVTYPE" = "usb_device" ] || exit 0 13 [ -e /var/run/openct/status ] || exit 014 13 15 14 DEVICE="$(echo "${DEVICE}" | sed 's/proc/dev/')" … … 20 19 fi 21 20 21 [ -e /var/run/openct/status ] || exit 0 22 22 23 # Don't know why... 23 24 sleep 1 -
trunk/src/ifd/sys-linux.c
r1028 r1039 18 18 #include <sys/stat.h> 19 19 #include <sys/file.h> 20 #include <dirent.h> 20 21 #include <string.h> 21 22 #include <stdio.h> … … 379 380 return open(device, O_RDWR); 380 381 } 382 383 #ifndef ENABLE_LIBUSB 384 static int read_number (const char *base, const char *name, const char *file, const char *format) { 385 char full[PATH_MAX]; 386 FILE *fp = NULL; 387 int n = -1; 388 389 snprintf (full, sizeof (full), "%s/%s/%s", base, name, file); 390 391 if ((fp = fopen (full, "r")) == NULL) { 392 goto out; 393 } 394 395 fscanf (fp, format, &n); 396 397 out: 398 if (fp != NULL) { 399 fclose (fp); 400 } 401 402 return n; 403 } 404 #endif 381 405 382 406 /* … … 450 474 } 451 475 } 476 #else 477 const char *base = "/sys/bus/usb/devices"; 478 DIR *dir = NULL; 479 struct dirent *ent; 480 481 dir = opendir (base); 482 483 if (dir == NULL) { 484 goto out; 485 } 486 487 while ((ent = readdir (dir)) != NULL) { 488 if (ent->d_name[0] != '.') { 489 char buffer[1024]; 490 FILE *fp = NULL; 491 int idProduct = -1; 492 int idVendor = -1; 493 int busnum = -1; 494 int devnum = -1; 495 496 idProduct = read_number (base, ent->d_name, "idProduct", "%x"); 497 idVendor = read_number (base, ent->d_name, "idVendor", "%x"); 498 busnum = read_number (base, ent->d_name, "busnum", "%d"); 499 devnum = read_number (base, ent->d_name, "devnum", "%d"); 500 501 ifd_debug (6, "coldplug: %s usb: %04x:%04x bus: %03d:%03d\n", ent->d_name, idProduct, idVendor, busnum, devnum); 502 503 if (idProduct != -1 && idVendor != -1 && busnum != -1 && devnum != -1) { 504 const char *driver; 505 ifd_devid_t id; 506 507 id.type = IFD_DEVICE_TYPE_USB; 508 id.num = 2; 509 id.val[0] = idVendor; 510 id.val[1] = idProduct; 511 512 if ((driver = ifd_driver_for_id(&id)) != NULL) { 513 char typedev[1024]; 514 515 snprintf(typedev, sizeof(typedev), 516 "usb:/dev/bus/usb/%03d/%03d", 517 busnum, devnum); 518 ifd_spawn_handler(driver, typedev, -1); 519 } 520 } 521 } 522 } 523 524 out: 525 if (dir != NULL) { 526 closedir (dir); 527 } 452 528 #endif 453 529 return 0;
