diff -ruN linuxfirmwarekit-orig/tests.c linuxfirmwarekit/tests.c --- linuxfirmwarekit-orig/tests.c 2007-01-05 09:32:47 +0300 +++ linuxfirmwarekit/tests.c 2007-03-29 16:46:28 +0400 @@ -199,8 +199,8 @@ void dump_results(void) { - dump_xml(all_tests, "results/results.xml"); - dump_xml_resources("results/resources.xml"); + dump_xml(all_tests, "/var/log/firmwarekit/results.xml"); + dump_xml_resources("/var/log/firmwarekit/resources.xml"); show_results_ui(all_tests); } void dump_xml_results(void) diff -ruN linuxfirmwarekit-orig/usb.c linuxfirmwarekit/usb.c --- linuxfirmwarekit-orig/usb.c 2006-11-01 21:57:31 +0300 +++ linuxfirmwarekit/usb.c 2007-03-29 17:16:52 +0400 @@ -33,6 +33,31 @@ #include #include "biostest.h" +int is_mounted(const char *device, char *mnt_point) +{ + FILE *fp; + char buf[512]; + char dev[512]; + char dev_mnt_point[512]; + int ret = 0; + + if ((fp = fopen("/proc/mounts", "r")) == NULL) { + return -1; + } + while (!feof(fp)) { + if (fgets(buf, sizeof(buf), fp) == NULL) + break; + if (sscanf(buf, "%s %s", dev, dev_mnt_point) != 2) + continue; + if (!strcmp(dev, device)) { + ret = 1; + strcpy(mnt_point, dev_mnt_point); + break; + } + } + fclose(fp); + return ret; +} void save_on_usb(void) { @@ -41,13 +66,15 @@ FILE *file; int devcount = 0; char *c; + char path[4096]; + char buffer[4096]; + char mnt_point[512]; + char cmd[1024]; dir = opendir("/sys/block"); if (!dir) return; do { - char path[4096]; - char buffer[4096]; entry = readdir(dir); if (!entry) @@ -73,27 +100,34 @@ readlink(path, buffer, 4096); if (strstr(buffer, "usb")==NULL) continue; + /* ok so we have a removable device with USB in the device string. Assume it's an USB key */ - sprintf(buffer, "/bin/mount /dev/%s1 /usbkey &> mountlog", entry->d_name); - if (system(buffer)!=0) { + sprintf(buffer, "/dev/%s1", entry->d_name); + if( !is_mounted(buffer, mnt_point) ) { /* no cookie; maybe there was no partition table */ - sprintf(buffer, "/bin/mount /dev/%s /usbkey &> mountlog", entry->d_name); - if (system(buffer)!=0) + sprintf(buffer, "/dev/%s", entry->d_name); + if( !is_mounted(buffer, mnt_point) ) continue; } - system("/bin/cp results/* /usbkey &> /dev/null"); - system("/bin/cp acpidump /usbkey &> /dev/null"); - system("/bin/cp DSDT.* /usbkey &> /dev/null"); - system("/bin/umount /usbkey &> /dev/null"); + + sprintf(cmd, "/bin/cp /var/log/firmwarekit/*.xml %s > /dev/null 2>&1", mnt_point); + system(cmd); + sprintf(cmd, "/bin/cp acpidump %s > /dev/null 2>&1", mnt_point); + system(cmd); + sprintf(cmd, "/bin/cp DSDT.* %s > /dev/null 2>&1", mnt_point); + system(cmd); + sprintf(cmd, "/bin/sync"); + system(cmd); devcount ++; + sprintf(buffer, "Test data successfully saved to %s", mnt_point); + simple_ok_dialog("Save to USB", buffer); } while (entry); - if (devcount) { - c = "Test data successfully saved"; - } else { + if (!devcount) { c = "No USB keys found; data not saved"; + simple_ok_dialog("Save to USB", c); } - simple_ok_dialog("Save to USB", c); + closedir(dir); }