summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--linux.c14
-rw-r--r--macos.c12
-rw-r--r--qt-ui/downloadfromdivecomputer.cpp1
-rw-r--r--windows.c7
4 files changed, 23 insertions, 11 deletions
diff --git a/linux.c b/linux.c
index c694d5d67..ed063b28c 100644
--- a/linux.c
+++ b/linux.c
@@ -51,7 +51,7 @@ const char *system_default_filename(void)
int enumerate_devices(device_callback_t callback, void *userdata, int dc_type)
{
- int index = -1;
+ int index = -1, entries = 0;
DIR *dp = NULL;
struct dirent *ep = NULL;
size_t i;
@@ -85,7 +85,8 @@ int enumerate_devices(device_callback_t callback, void *userdata, int dc_type)
}
callback(filename, userdata);
if (is_default_dive_computer_device(filename))
- index = i;
+ index = entries;
+ entries++;
break;
}
}
@@ -93,6 +94,7 @@ int enumerate_devices(device_callback_t callback, void *userdata, int dc_type)
closedir(dp);
}
if (dc_type != DC_TYPE_SERIAL) {
+ int num_uemis = 0;
file = fopen("/proc/mounts", "r");
if (file == NULL)
return index;
@@ -114,14 +116,16 @@ int enumerate_devices(device_callback_t callback, void *userdata, int dc_type)
callback(fname, userdata);
if (is_default_dive_computer_device(fname))
- index = i;
- i++;
+ index = entries;
+ entries++;
+ num_uemis++;
free((void *)fname);
}
}
-
free(line);
fclose(file);
+ if (num_uemis == 1 && entries == 1) /* if we found only one and it's a mounted Uemis, pick it */
+ index = 0;
}
return index;
}
diff --git a/macos.c b/macos.c
index 8b2f122dc..b75ddbf6f 100644
--- a/macos.c
+++ b/macos.c
@@ -47,7 +47,7 @@ const char *system_default_filename(void)
int enumerate_devices(device_callback_t callback, void *userdata, int dc_type)
{
- int index = -1;
+ int index = -1, entries = 0;
DIR *dp = NULL;
struct dirent *ep = NULL;
size_t i;
@@ -75,7 +75,8 @@ int enumerate_devices(device_callback_t callback, void *userdata, int dc_type)
}
callback(filename, userdata);
if (is_default_dive_computer_device(filename))
- index = i;
+ index = entries;
+ entries++;
break;
}
}
@@ -84,6 +85,7 @@ int enumerate_devices(device_callback_t callback, void *userdata, int dc_type)
}
if (dc_type != DC_TYPE_SERIAL) {
const char *dirname = "/Volumes";
+ int num_uemis = 0;
dp = opendir(dirname);
if (dp == NULL) {
return -1;
@@ -99,11 +101,15 @@ int enumerate_devices(device_callback_t callback, void *userdata, int dc_type)
}
callback(filename, userdata);
if (is_default_dive_computer_device(filename))
- index = i;
+ index = entries;
+ entries++;
+ num_uemis++;
break;
}
}
closedir(dp);
+ if (num_uemis == 1 && entries == 1) /* if we find exactly one entry and that's a Uemis, select it */
+ index = 0;
}
return index;
}
diff --git a/qt-ui/downloadfromdivecomputer.cpp b/qt-ui/downloadfromdivecomputer.cpp
index 0347932d5..8c0f81aa5 100644
--- a/qt-ui/downloadfromdivecomputer.cpp
+++ b/qt-ui/downloadfromdivecomputer.cpp
@@ -56,7 +56,6 @@ DownloadFromDCWidget::DownloadFromDCWidget(QWidget *parent, Qt::WindowFlags f) :
progress_bar_text = "";
- fill_device_list(DC_TYPE_OTHER);
fill_computer_list();
ui.chooseDumpFile->setEnabled(ui.dumpToFile->isChecked());
diff --git a/windows.c b/windows.c
index da7e9005b..a8b7c55a6 100644
--- a/windows.c
+++ b/windows.c
@@ -90,6 +90,7 @@ int enumerate_devices(device_callback_t callback, void *userdata, int dc_type)
}
if (dc_type != DC_TYPE_SERIAL) {
int i;
+ int count_drives = 0;
const int bufdef = 512;
const char *dlabels[] = {"UEMISSDA", NULL};
char bufname[bufdef], bufval[bufdef], *p;
@@ -110,12 +111,14 @@ int enumerate_devices(device_callback_t callback, void *userdata, int dc_type)
snprintf(data, sizeof(data), "%s (%s)", p, dlabels[i]);
callback(data, userdata);
if (is_default_dive_computer_device(p))
- index = i;
- i++;
+ index = count_drives;
+ count_drives++;
}
}
p = &p[strlen(p) + 1];
}
+ if (count_drives == 1) /* we found exactly one Uemis "drive" */
+ index = 0; /* make it the selected "device" */
}
}
return index;