summaryrefslogtreecommitdiff
path: root/spectro
diff options
context:
space:
mode:
Diffstat (limited to 'spectro')
-rw-r--r--[-rwxr-xr-x]spectro/IntsLib_Readme.txt0
-rw-r--r--[-rwxr-xr-x]spectro/Jamfile0
-rw-r--r--[-rwxr-xr-x]spectro/License.txt0
-rw-r--r--[-rwxr-xr-x]spectro/License2.txt0
-rw-r--r--[-rwxr-xr-x]spectro/License3.txt0
-rw-r--r--[-rwxr-xr-x]spectro/LzmaDec.c0
-rw-r--r--[-rwxr-xr-x]spectro/LzmaDec.h0
-rw-r--r--[-rwxr-xr-x]spectro/LzmaTypes.h0
-rw-r--r--[-rwxr-xr-x]spectro/Makefile.OSX0
-rw-r--r--[-rwxr-xr-x]spectro/Makefile.SA0
-rw-r--r--[-rwxr-xr-x]spectro/Makefile.UNIX0
-rw-r--r--[-rwxr-xr-x]spectro/Makefile.WNT0
-rw-r--r--[-rwxr-xr-x]spectro/Readme.txt0
-rw-r--r--[-rwxr-xr-x]spectro/SOtele.sp0
-rw-r--r--[-rwxr-xr-x]spectro/afiles0
-rw-r--r--[-rwxr-xr-x]spectro/aglob.c0
-rw-r--r--[-rwxr-xr-x]spectro/aglob.h0
-rw-r--r--[-rwxr-xr-x]spectro/average.c0
-rw-r--r--[-rwxr-xr-x]spectro/base64.c0
-rw-r--r--[-rwxr-xr-x]spectro/base64.h0
-rw-r--r--[-rwxr-xr-x]spectro/ccwin.c0
-rw-r--r--[-rwxr-xr-x]spectro/ccwin.h0
-rw-r--r--[-rwxr-xr-x]spectro/ccxx.ti10
-rw-r--r--[-rwxr-xr-x]spectro/ccxxmake.c0
-rw-r--r--[-rwxr-xr-x]spectro/chartread.c0
-rw-r--r--[-rwxr-xr-x]spectro/colorhug.c0
-rw-r--r--[-rwxr-xr-x]spectro/colorhug.h0
-rw-r--r--[-rwxr-xr-x]spectro/conv.c5
-rw-r--r--[-rwxr-xr-x]spectro/conv.h0
-rw-r--r--[-rwxr-xr-x]spectro/cubecal.h0
-rw-r--r--[-rwxr-xr-x]spectro/dispcal.c0
-rw-r--r--[-rwxr-xr-x]spectro/dispread.c0
-rw-r--r--[-rwxr-xr-x]spectro/dispsup.c0
-rw-r--r--[-rwxr-xr-x]spectro/dispsup.h0
-rw-r--r--[-rwxr-xr-x]spectro/disptechs.c109
-rw-r--r--[-rwxr-xr-x]spectro/disptechs.h3
-rw-r--r--[-rwxr-xr-x]spectro/dispwin.c0
-rw-r--r--[-rwxr-xr-x]spectro/dispwin.h0
-rw-r--r--[-rwxr-xr-x]spectro/dtp20.c0
-rw-r--r--[-rwxr-xr-x]spectro/dtp20.h0
-rw-r--r--[-rwxr-xr-x]spectro/dtp22.c0
-rw-r--r--[-rwxr-xr-x]spectro/dtp22.h0
-rw-r--r--[-rwxr-xr-x]spectro/dtp41.c0
-rw-r--r--[-rwxr-xr-x]spectro/dtp41.h0
-rw-r--r--[-rwxr-xr-x]spectro/dtp51.c0
-rw-r--r--[-rwxr-xr-x]spectro/dtp51.h0
-rw-r--r--[-rwxr-xr-x]spectro/dtp92.c0
-rw-r--r--[-rwxr-xr-x]spectro/dtp92.h0
-rw-r--r--[-rwxr-xr-x]spectro/ex1.c0
-rw-r--r--[-rwxr-xr-x]spectro/ex1.h0
-rw-r--r--[-rwxr-xr-x]spectro/fakeread.c0
-rw-r--r--[-rwxr-xr-x]spectro/hcfr.c0
-rw-r--r--[-rwxr-xr-x]spectro/hcfr.h0
-rw-r--r--[-rwxr-xr-x]spectro/hidio.c0
-rw-r--r--[-rwxr-xr-x]spectro/hidio.h0
-rw-r--r--[-rwxr-xr-x]spectro/huey.c0
-rw-r--r--[-rwxr-xr-x]spectro/huey.h0
-rw-r--r--[-rwxr-xr-x]spectro/i1d3.c0
-rw-r--r--[-rwxr-xr-x]spectro/i1d3.h0
-rw-r--r--[-rwxr-xr-x]spectro/i1disp.c0
-rw-r--r--[-rwxr-xr-x]spectro/i1disp.h0
-rw-r--r--[-rwxr-xr-x]spectro/i1pro.c0
-rw-r--r--[-rwxr-xr-x]spectro/i1pro.h0
-rw-r--r--[-rwxr-xr-x]spectro/i1pro_imp.c0
-rw-r--r--[-rwxr-xr-x]spectro/i1pro_imp.h0
-rw-r--r--[-rwxr-xr-x]spectro/icoms.c0
-rw-r--r--[-rwxr-xr-x]spectro/icoms.h0
-rw-r--r--[-rwxr-xr-x]spectro/icoms_nt.c0
-rw-r--r--[-rwxr-xr-x]spectro/icoms_ux.c0
-rw-r--r--[-rwxr-xr-x]spectro/ifiles0
-rw-r--r--[-rwxr-xr-x]spectro/illumread.c0
-rw-r--r--[-rwxr-xr-x]spectro/inflate.c0
-rw-r--r--[-rwxr-xr-x]spectro/inst.c43
-rw-r--r--[-rwxr-xr-x]spectro/inst.h1
-rw-r--r--[-rwxr-xr-x]spectro/instappsup.c0
-rw-r--r--[-rwxr-xr-x]spectro/instappsup.h0
-rw-r--r--[-rwxr-xr-x]spectro/instlib.ksh0
-rw-r--r--[-rwxr-xr-x]spectro/instlib.txt0
-rw-r--r--[-rwxr-xr-x]spectro/insttypeinst.h0
-rw-r--r--[-rwxr-xr-x]spectro/insttypes.c0
-rw-r--r--[-rwxr-xr-x]spectro/insttypes.h0
-rw-r--r--[-rwxr-xr-x]spectro/iusb.h0
-rw-r--r--[-rwxr-xr-x]spectro/kleink10.c0
-rw-r--r--[-rwxr-xr-x]spectro/kleink10.h0
-rw-r--r--[-rwxr-xr-x]spectro/linear.cal2
-rw-r--r--[-rwxr-xr-x]spectro/linear.sp0
-rw-r--r--[-rwxr-xr-x]spectro/madvrwin.c0
-rw-r--r--[-rwxr-xr-x]spectro/madvrwin.h0
-rw-r--r--[-rwxr-xr-x]spectro/mongoose.c0
-rw-r--r--[-rwxr-xr-x]spectro/mongoose.h0
-rw-r--r--[-rwxr-xr-x]spectro/munki.c0
-rw-r--r--[-rwxr-xr-x]spectro/munki.h0
-rw-r--r--[-rwxr-xr-x]spectro/munki_imp.c0
-rw-r--r--[-rwxr-xr-x]spectro/munki_imp.h0
-rw-r--r--[-rwxr-xr-x]spectro/oemarch.c0
-rw-r--r--[-rwxr-xr-x]spectro/oemarch.h0
-rw-r--r--[-rwxr-xr-x]spectro/oeminst.c0
-rw-r--r--[-rwxr-xr-x]spectro/pollem.c0
-rw-r--r--[-rwxr-xr-x]spectro/pollem.h0
-rw-r--r--[-rwxr-xr-x]spectro/rspec.c0
-rw-r--r--[-rwxr-xr-x]spectro/rspec.h0
-rw-r--r--[-rwxr-xr-x]spectro/smcube.c0
-rw-r--r--[-rwxr-xr-x]spectro/smcube.h0
-rw-r--r--[-rwxr-xr-x]spectro/spec2cie.c163
-rw-r--r--[-rwxr-xr-x]spectro/specbos.c0
-rw-r--r--[-rwxr-xr-x]spectro/specbos.h0
-rw-r--r--[-rwxr-xr-x]spectro/spotread.c0
-rw-r--r--[-rwxr-xr-x]spectro/spyd2.c0
-rw-r--r--[-rwxr-xr-x]spectro/spyd2.h0
-rw-r--r--[-rwxr-xr-x]spectro/ss.c0
-rw-r--r--[-rwxr-xr-x]spectro/ss.h0
-rw-r--r--[-rwxr-xr-x]spectro/ss_imp.c0
-rw-r--r--[-rwxr-xr-x]spectro/ss_imp.h0
-rw-r--r--[-rwxr-xr-x]spectro/strange.cal2
-rw-r--r--[-rwxr-xr-x]spectro/synthcal.c0
-rw-r--r--[-rwxr-xr-x]spectro/synthread.c0
-rw-r--r--[-rwxr-xr-x]spectro/usbio.c0
-rw-r--r--[-rwxr-xr-x]spectro/usbio.h0
-rw-r--r--[-rwxr-xr-x]spectro/usbio_bsd.c0
-rw-r--r--[-rwxr-xr-x]spectro/usbio_lx.c0
-rw-r--r--[-rwxr-xr-x]spectro/usbio_nt.c0
-rw-r--r--[-rwxr-xr-x]spectro/usbio_ox.c0
-rw-r--r--[-rwxr-xr-x]spectro/vinflate.c0
-rw-r--r--[-rwxr-xr-x]spectro/webwin.c0
-rw-r--r--[-rwxr-xr-x]spectro/webwin.h0
-rw-r--r--[-rwxr-xr-x]spectro/xdg_bds.c0
-rw-r--r--[-rwxr-xr-x]spectro/xdg_bds.h0
127 files changed, 189 insertions, 139 deletions
diff --git a/spectro/IntsLib_Readme.txt b/spectro/IntsLib_Readme.txt
index 7d9fb0c..7d9fb0c 100755..100644
--- a/spectro/IntsLib_Readme.txt
+++ b/spectro/IntsLib_Readme.txt
diff --git a/spectro/Jamfile b/spectro/Jamfile
index 9eb292f..9eb292f 100755..100644
--- a/spectro/Jamfile
+++ b/spectro/Jamfile
diff --git a/spectro/License.txt b/spectro/License.txt
index a871fcf..a871fcf 100755..100644
--- a/spectro/License.txt
+++ b/spectro/License.txt
diff --git a/spectro/License2.txt b/spectro/License2.txt
index 05ca889..05ca889 100755..100644
--- a/spectro/License2.txt
+++ b/spectro/License2.txt
diff --git a/spectro/License3.txt b/spectro/License3.txt
index 94a9ed0..94a9ed0 100755..100644
--- a/spectro/License3.txt
+++ b/spectro/License3.txt
diff --git a/spectro/LzmaDec.c b/spectro/LzmaDec.c
index 8c1a148..8c1a148 100755..100644
--- a/spectro/LzmaDec.c
+++ b/spectro/LzmaDec.c
diff --git a/spectro/LzmaDec.h b/spectro/LzmaDec.h
index 6045fae..6045fae 100755..100644
--- a/spectro/LzmaDec.h
+++ b/spectro/LzmaDec.h
diff --git a/spectro/LzmaTypes.h b/spectro/LzmaTypes.h
index 7732c24..7732c24 100755..100644
--- a/spectro/LzmaTypes.h
+++ b/spectro/LzmaTypes.h
diff --git a/spectro/Makefile.OSX b/spectro/Makefile.OSX
index 485cbf4..485cbf4 100755..100644
--- a/spectro/Makefile.OSX
+++ b/spectro/Makefile.OSX
diff --git a/spectro/Makefile.SA b/spectro/Makefile.SA
index 2d57742..2d57742 100755..100644
--- a/spectro/Makefile.SA
+++ b/spectro/Makefile.SA
diff --git a/spectro/Makefile.UNIX b/spectro/Makefile.UNIX
index adafa67..adafa67 100755..100644
--- a/spectro/Makefile.UNIX
+++ b/spectro/Makefile.UNIX
diff --git a/spectro/Makefile.WNT b/spectro/Makefile.WNT
index 83eef28..83eef28 100755..100644
--- a/spectro/Makefile.WNT
+++ b/spectro/Makefile.WNT
diff --git a/spectro/Readme.txt b/spectro/Readme.txt
index b9fe0aa..b9fe0aa 100755..100644
--- a/spectro/Readme.txt
+++ b/spectro/Readme.txt
diff --git a/spectro/SOtele.sp b/spectro/SOtele.sp
index f63d90e..f63d90e 100755..100644
--- a/spectro/SOtele.sp
+++ b/spectro/SOtele.sp
diff --git a/spectro/afiles b/spectro/afiles
index 984bac5..984bac5 100755..100644
--- a/spectro/afiles
+++ b/spectro/afiles
diff --git a/spectro/aglob.c b/spectro/aglob.c
index 2ba37d5..2ba37d5 100755..100644
--- a/spectro/aglob.c
+++ b/spectro/aglob.c
diff --git a/spectro/aglob.h b/spectro/aglob.h
index dbb5025..dbb5025 100755..100644
--- a/spectro/aglob.h
+++ b/spectro/aglob.h
diff --git a/spectro/average.c b/spectro/average.c
index 5a8fb3f..5a8fb3f 100755..100644
--- a/spectro/average.c
+++ b/spectro/average.c
diff --git a/spectro/base64.c b/spectro/base64.c
index 388d121..388d121 100755..100644
--- a/spectro/base64.c
+++ b/spectro/base64.c
diff --git a/spectro/base64.h b/spectro/base64.h
index 726f20a..726f20a 100755..100644
--- a/spectro/base64.h
+++ b/spectro/base64.h
diff --git a/spectro/ccwin.c b/spectro/ccwin.c
index 1e9a18d..1e9a18d 100755..100644
--- a/spectro/ccwin.c
+++ b/spectro/ccwin.c
diff --git a/spectro/ccwin.h b/spectro/ccwin.h
index 9fb902d..9fb902d 100755..100644
--- a/spectro/ccwin.h
+++ b/spectro/ccwin.h
diff --git a/spectro/ccxx.ti1 b/spectro/ccxx.ti1
index 47f2b13..47f2b13 100755..100644
--- a/spectro/ccxx.ti1
+++ b/spectro/ccxx.ti1
diff --git a/spectro/ccxxmake.c b/spectro/ccxxmake.c
index 4202c67..4202c67 100755..100644
--- a/spectro/ccxxmake.c
+++ b/spectro/ccxxmake.c
diff --git a/spectro/chartread.c b/spectro/chartread.c
index 0fc7646..0fc7646 100755..100644
--- a/spectro/chartread.c
+++ b/spectro/chartread.c
diff --git a/spectro/colorhug.c b/spectro/colorhug.c
index 1b2a56d..1b2a56d 100755..100644
--- a/spectro/colorhug.c
+++ b/spectro/colorhug.c
diff --git a/spectro/colorhug.h b/spectro/colorhug.h
index 90fff6f..90fff6f 100755..100644
--- a/spectro/colorhug.h
+++ b/spectro/colorhug.h
diff --git a/spectro/conv.c b/spectro/conv.c
index 1f4d102..1a8c78b 100755..100644
--- a/spectro/conv.c
+++ b/spectro/conv.c
@@ -130,11 +130,11 @@ int next_con_char(void) {
return c;
}
-/* Horrible hack to poll stdin when we're not interactive */
+/* Horrible hack to poll stdin when we're not interactive. */
/* This has the drawback that the char and returm must be */
/* written in one operation for the character to be recognised - */
/* trying to do this manually typically doesn't work unless you are */
-/* very fast an lucky. */
+/* very fast and lucky. */
static int th_read_char(void *pp) {
char *rp = (char *)pp;
HANDLE stdinh;
@@ -166,6 +166,7 @@ int poll_con_char(void) {
/* any of MSWin's async file read functions, because we */
/* have no way of ensuring that the STD_INPUT_HANDLE has been */
/* opened with FILE_FLAG_OVERLAPPED. Used a thread instead... */
+ /* ReOpenFile() would fix this, but it's not available in WinXP, only Visa+ :-( */
if ((getch_thread = new_athread(th_read_char, &c)) != NULL) {
HANDLE stdinh;
diff --git a/spectro/conv.h b/spectro/conv.h
index 4e14dd9..4e14dd9 100755..100644
--- a/spectro/conv.h
+++ b/spectro/conv.h
diff --git a/spectro/cubecal.h b/spectro/cubecal.h
index 60f7380..60f7380 100755..100644
--- a/spectro/cubecal.h
+++ b/spectro/cubecal.h
diff --git a/spectro/dispcal.c b/spectro/dispcal.c
index 97337cd..97337cd 100755..100644
--- a/spectro/dispcal.c
+++ b/spectro/dispcal.c
diff --git a/spectro/dispread.c b/spectro/dispread.c
index 8a78fcc..8a78fcc 100755..100644
--- a/spectro/dispread.c
+++ b/spectro/dispread.c
diff --git a/spectro/dispsup.c b/spectro/dispsup.c
index 57a598e..57a598e 100755..100644
--- a/spectro/dispsup.c
+++ b/spectro/dispsup.c
diff --git a/spectro/dispsup.h b/spectro/dispsup.h
index bca3070..bca3070 100755..100644
--- a/spectro/dispsup.h
+++ b/spectro/dispsup.h
diff --git a/spectro/disptechs.c b/spectro/disptechs.c
index d44519c..70e150f 100755..100644
--- a/spectro/disptechs.c
+++ b/spectro/disptechs.c
@@ -56,7 +56,7 @@
/* We deliberately duplicate the selection characters, */
/* because it's not usual to offer the whole list, just */
-/* a sub-set, which may not clash. */
+/* a sub-set which may not clash. */
/* disptechs_set_sel() should be used to present */
/* unique selectors. */
static disptech_info disptech_info_array[] = {
@@ -387,52 +387,72 @@ disptech_info *disptech_get_strid(char *strid) {
so we need to do three passes through all the selections.
*/
-/* Set the selection characters. */
-/* Return NZ if we have not set all selectors */
-/* If a selector is set, its index will be set in usels[], */
-/* and any remaining selection characters deleted. */
-/* If flag == 0, set from just first suggested selector */
-/* If flag == 1, set from just suggested selector */
+/* Append the selection characters. */
+/* If a selector is set, its index will be set in usels[]. */
+/* Remove any used selectors from isel[]. */
+/* If flag == 0, set from just first suggested selector. */
+/* If flag == 1, set from just suggested selectors. */
/* If flag == 2, set from suggested and fallback selectors */
-/* If flag == 3, set from suggested and fallback selectors, and set unset to nul */
-int disptechs_set_sel(
+/* If flag == 3, append from suggested selectors */
+void disptechs_set_sel(
int flag, /* See above */
int ix, /* Index of entry being set */
- char *sel, /* Pointer to string list of suggested selectors, */
- /* return a single unique selector in string. */
+ char *osel, /* Append unique selectors to this string. */
+ char *isel, /* Pointer to string list of suggested selectors, */
char *usels, /* char[256] initially -1, to track used selector entry index */
int *k, /* Index of next available selector in asels */
char *asels /* String list of fallback selectors to choose from, in order. */
) {
- char *d, *s, i;
+ char *iisel = isel, i;
-//a1logd(g_log, 1,"disptechs_set_sel: flag %d, ix %d, sel '%s', k %d\n",flag, ix,sel,*k);
+//a1logd(g_log, 1,"disptechs_set_sel: flag %d, ix %d, osel '%s', isel '%s', k %d\n",flag, ix,osel,isel,*k);
- /* See if this has already been allocated */
- if (usels[*sel] == ix) {
-//a1logd(g_log, 1," set OK\n");
- return 0; /* Nothing to do */
+ if (flag != 3) {
+ /* See if we already have a selecor character */
+ if (osel[0] != '\000') {
+//a1logd(g_log, 1," already set OK\n");
+ return;
+ }
+ } else {
+ if (isel[0] == '\000') {
+//a1logd(g_log, 1," nothing to set from\n");
+ return; /* Nothing to set from */
+ }
+
+ /* Get ready to append */
+ osel += strlen(osel);
}
- /* Set from the suggested selectors */
- for (i = 0, s = sel; *s != '\000'; s++, i++) {
+ /* Set or add from the first unsed suggested selectors */
+ for (i = 0; *isel != '\000'; isel++, i++) {
if (flag == 0 && i > 0) {
//a1logd(g_log, 1," run out of primaries\n");
break; /* Looked at primary */
}
- if (usels[*s] == ((char)-1)) { /* If this selector is not currently used */
-//a1logd(g_log, 1," set to '%c' at %d\n", *s, i);
- sel[0] = *s; /* Use it */
- sel[1] = '\000';
- usels[*s] = ix;
- return 0;
+ if (usels[*isel] == ((char)-1)) { /* If this selector is not currently used */
+//a1logd(g_log, 1," added to '%c' from %d\n", *isel, i);
+ osel[0] = *isel; /* Use it */
+ osel[1] = '\000';
+ usels[osel[0]] = ix;
+
+ /* Remove all used/discarded from isel, in case we are called again. */
+ for (isel++; ;isel++, iisel++) {
+ *iisel = *isel;
+ if (*isel == '\000')
+ break;
+ }
+ return;
}
-//a1logd(g_log, 1," sel '%c' at %d is used by ix %d\n", *s, i, usels[*s]);
+//a1logd(g_log, 1," sel '%c' at %d is used by ix %d\n", *isel, i, usels[*isel]);
}
- if (flag <= 2) {
-//a1logd(g_log, 1," returning unset\n");
- return 1;
+ /* If we get here, we haven't managed to add anything from the remaining */
+ /* selectors, so mark the candidate list as empty: */
+ iisel[0] = '\000';
+
+ if (flag != 2) {
+//a1logd(g_log, 1," returning without add\n");
+ return;
}
/* Get the next unused char in fallback list */
@@ -442,22 +462,16 @@ int disptechs_set_sel(
}
if (asels[*k] != '\000') {
//a1logd(g_log, 1," set int to fallback '%c' at %d\n", asels[*k], *k);
- sel[0] = asels[*k];
- sel[1] = '\000';
- usels[sel[0]] = ix;
+ osel[0] = asels[*k];
+ osel[1] = '\000';
+ usels[osel[0]] = ix;
(*k)++;
- return 0;
- }
-
- /* Set any unset to nul */
- if (flag >= 3) {
-//a1logd(g_log, 1," clearing\n");
- sel[0] = '\000';
+ return;
}
-//a1logd(g_log, 1," failed\n");
- /* If we got here, we failed */
- return 1;
+//a1logd(g_log, 1," returning after fallback without add\n");
+ /* If we got here, we failed to add a selector */
+ return;
}
/* Return the display tech list with unique lsel lectors */
@@ -474,18 +488,19 @@ disptech_info *disptech_get_list() {
/* Add entries from the static list and their primary selectors */
for (i = 0; list[i].dtech != disptech_end; i++) {
-//a1logd(1,"tech[%d] '%s' sels = '%s'\n",i,list[i].desc,list[i].sel);
- strcpy(list[i].lsel, list[i].sel);
- disptechs_set_sel(0, i, list[i].lsel, usels, &k, asels);
+//a1logd(g_log,1,"tech[%d] '%s' sels = '%s'\n",i,list[i].desc,list[i].sel);
+ strcpy(list[i].isel, list[i].sel);
+ list[i].lsel[0] = '\000';
+ disptechs_set_sel(0, i, list[i].lsel, list[i].isel, usels, &k, asels);
}
/* Set selectors from secondary */
for (i = 0; list[i].dtech != disptech_end; i++)
- disptechs_set_sel(1, i, list[i].lsel, usels, &k, asels);
+ disptechs_set_sel(1, i, list[i].lsel, list[i].isel, usels, &k, asels);
/* Set remainder from fallback */
for (i = 0; list[i].dtech != disptech_end; i++)
- disptechs_set_sel(3, i, list[i].lsel, usels, &k, asels);
+ disptechs_set_sel(2, i, list[i].lsel, list[i].isel, usels, &k, asels);
return list;
}
diff --git a/spectro/disptechs.h b/spectro/disptechs.h
index 68245cf..9860eac 100755..100644
--- a/spectro/disptechs.h
+++ b/spectro/disptechs.h
@@ -114,6 +114,7 @@ struct _disptech_info {
/* Private: */
char lsel[10]; /* Unique list selector for ui */
+ char isel[10]; /* Candidate selectors */
}; typedef struct _disptech_info disptech_info;
@@ -137,7 +138,7 @@ disptech_info *disptech_select(disptech_info *list, char c);
/* utility function, used by disptech_get_list & inst_creat_disptype_list() */
/* See disptechs.c for parameter description. */
-int disptechs_set_sel(int flag, int ix, char *sel, char *usels, int *k, char *asels);
+void disptechs_set_sel(int flag, int ix, char *osel, char *isel, char *usels, int *k, char *asels);
/* - - - - - - - - - - */
/* Display settling time model */
diff --git a/spectro/dispwin.c b/spectro/dispwin.c
index 69536f3..69536f3 100755..100644
--- a/spectro/dispwin.c
+++ b/spectro/dispwin.c
diff --git a/spectro/dispwin.h b/spectro/dispwin.h
index b5e14ce..b5e14ce 100755..100644
--- a/spectro/dispwin.h
+++ b/spectro/dispwin.h
diff --git a/spectro/dtp20.c b/spectro/dtp20.c
index a504803..a504803 100755..100644
--- a/spectro/dtp20.c
+++ b/spectro/dtp20.c
diff --git a/spectro/dtp20.h b/spectro/dtp20.h
index c575c67..c575c67 100755..100644
--- a/spectro/dtp20.h
+++ b/spectro/dtp20.h
diff --git a/spectro/dtp22.c b/spectro/dtp22.c
index d332ffc..d332ffc 100755..100644
--- a/spectro/dtp22.c
+++ b/spectro/dtp22.c
diff --git a/spectro/dtp22.h b/spectro/dtp22.h
index 95dce16..95dce16 100755..100644
--- a/spectro/dtp22.h
+++ b/spectro/dtp22.h
diff --git a/spectro/dtp41.c b/spectro/dtp41.c
index 5c3361c..5c3361c 100755..100644
--- a/spectro/dtp41.c
+++ b/spectro/dtp41.c
diff --git a/spectro/dtp41.h b/spectro/dtp41.h
index 529f94c..529f94c 100755..100644
--- a/spectro/dtp41.h
+++ b/spectro/dtp41.h
diff --git a/spectro/dtp51.c b/spectro/dtp51.c
index cfd1265..cfd1265 100755..100644
--- a/spectro/dtp51.c
+++ b/spectro/dtp51.c
diff --git a/spectro/dtp51.h b/spectro/dtp51.h
index 329c5d6..329c5d6 100755..100644
--- a/spectro/dtp51.h
+++ b/spectro/dtp51.h
diff --git a/spectro/dtp92.c b/spectro/dtp92.c
index 1ed9bc1..1ed9bc1 100755..100644
--- a/spectro/dtp92.c
+++ b/spectro/dtp92.c
diff --git a/spectro/dtp92.h b/spectro/dtp92.h
index 317fb7a..317fb7a 100755..100644
--- a/spectro/dtp92.h
+++ b/spectro/dtp92.h
diff --git a/spectro/ex1.c b/spectro/ex1.c
index 93d0a31..93d0a31 100755..100644
--- a/spectro/ex1.c
+++ b/spectro/ex1.c
diff --git a/spectro/ex1.h b/spectro/ex1.h
index d69b7ca..d69b7ca 100755..100644
--- a/spectro/ex1.h
+++ b/spectro/ex1.h
diff --git a/spectro/fakeread.c b/spectro/fakeread.c
index 3cad93a..3cad93a 100755..100644
--- a/spectro/fakeread.c
+++ b/spectro/fakeread.c
diff --git a/spectro/hcfr.c b/spectro/hcfr.c
index d0a8261..d0a8261 100755..100644
--- a/spectro/hcfr.c
+++ b/spectro/hcfr.c
diff --git a/spectro/hcfr.h b/spectro/hcfr.h
index 8910cec..8910cec 100755..100644
--- a/spectro/hcfr.h
+++ b/spectro/hcfr.h
diff --git a/spectro/hidio.c b/spectro/hidio.c
index c930755..c930755 100755..100644
--- a/spectro/hidio.c
+++ b/spectro/hidio.c
diff --git a/spectro/hidio.h b/spectro/hidio.h
index 90a741b..90a741b 100755..100644
--- a/spectro/hidio.h
+++ b/spectro/hidio.h
diff --git a/spectro/huey.c b/spectro/huey.c
index 79f8089..79f8089 100755..100644
--- a/spectro/huey.c
+++ b/spectro/huey.c
diff --git a/spectro/huey.h b/spectro/huey.h
index aec96a0..aec96a0 100755..100644
--- a/spectro/huey.h
+++ b/spectro/huey.h
diff --git a/spectro/i1d3.c b/spectro/i1d3.c
index 689f328..689f328 100755..100644
--- a/spectro/i1d3.c
+++ b/spectro/i1d3.c
diff --git a/spectro/i1d3.h b/spectro/i1d3.h
index 47f3858..47f3858 100755..100644
--- a/spectro/i1d3.h
+++ b/spectro/i1d3.h
diff --git a/spectro/i1disp.c b/spectro/i1disp.c
index 437e1fa..437e1fa 100755..100644
--- a/spectro/i1disp.c
+++ b/spectro/i1disp.c
diff --git a/spectro/i1disp.h b/spectro/i1disp.h
index 45e21db..45e21db 100755..100644
--- a/spectro/i1disp.h
+++ b/spectro/i1disp.h
diff --git a/spectro/i1pro.c b/spectro/i1pro.c
index 96335cc..96335cc 100755..100644
--- a/spectro/i1pro.c
+++ b/spectro/i1pro.c
diff --git a/spectro/i1pro.h b/spectro/i1pro.h
index 4366e4f..4366e4f 100755..100644
--- a/spectro/i1pro.h
+++ b/spectro/i1pro.h
diff --git a/spectro/i1pro_imp.c b/spectro/i1pro_imp.c
index 0b6fc69..0b6fc69 100755..100644
--- a/spectro/i1pro_imp.c
+++ b/spectro/i1pro_imp.c
diff --git a/spectro/i1pro_imp.h b/spectro/i1pro_imp.h
index 6bf8de4..6bf8de4 100755..100644
--- a/spectro/i1pro_imp.h
+++ b/spectro/i1pro_imp.h
diff --git a/spectro/icoms.c b/spectro/icoms.c
index b69b72a..b69b72a 100755..100644
--- a/spectro/icoms.c
+++ b/spectro/icoms.c
diff --git a/spectro/icoms.h b/spectro/icoms.h
index 2a282f0..2a282f0 100755..100644
--- a/spectro/icoms.h
+++ b/spectro/icoms.h
diff --git a/spectro/icoms_nt.c b/spectro/icoms_nt.c
index 14258e9..14258e9 100755..100644
--- a/spectro/icoms_nt.c
+++ b/spectro/icoms_nt.c
diff --git a/spectro/icoms_ux.c b/spectro/icoms_ux.c
index 7fb7359..7fb7359 100755..100644
--- a/spectro/icoms_ux.c
+++ b/spectro/icoms_ux.c
diff --git a/spectro/ifiles b/spectro/ifiles
index 706d0b7..706d0b7 100755..100644
--- a/spectro/ifiles
+++ b/spectro/ifiles
diff --git a/spectro/illumread.c b/spectro/illumread.c
index 381f6b6..381f6b6 100755..100644
--- a/spectro/illumread.c
+++ b/spectro/illumread.c
diff --git a/spectro/inflate.c b/spectro/inflate.c
index 55d8e65..55d8e65 100755..100644
--- a/spectro/inflate.c
+++ b/spectro/inflate.c
diff --git a/spectro/inst.c b/spectro/inst.c
index ba12f9d..949e34f 100755..100644
--- a/spectro/inst.c
+++ b/spectro/inst.c
@@ -875,9 +875,11 @@ int doccmx /* Add matching installed ccmx files */
usels[i] = ((char)-1);
k = 0; /* Next selector index */
+ /* First create a list of calibrations and their desired selectors: */
+
/* Add entries from the static list and their primary selectors */
/* (We're currently assuming that calibrations that the instrument */
- /* returns are not custom) */
+ /* returns are not custom.) */
/* Count the number in the static list. */
for (i = 0; !(sdtlist[i].flags & inst_dtflags_end); i++) {
@@ -966,25 +968,52 @@ int doccmx /* Add matching installed ccmx files */
}
}
+ /* Copy candidate selectors to private isel[] list */
+ for (i = 0; i < nlist; i++) {
+ strcpy(list[i].isel, list[i].sel);
+ list[i].sel[0] = '\000';
+ }
+
+ /* Then allocate a slector for each calibration: */
+
/* Set selectors from primary for cbid or custom first */
for (i = 0; i < nlist; i++) {
if (list[i].cbid > 0
|| (list[i].flags & inst_dtflags_custom) != 0) {
- disptechs_set_sel(0, i, list[i].sel, usels, &k, asels);
+ disptechs_set_sel(0, i, list[i].sel, list[i].isel, usels, &k, asels);
}
}
/* Set selectors from primary for rest */
for (i = 0; i < nlist; i++)
- disptechs_set_sel(0, i, list[i].sel, usels, &k, asels);
+ disptechs_set_sel(0, i, list[i].sel, list[i].isel, usels, &k, asels);
- /* Set remaining selectors from secondaries */
+ /* Set remaining selectors from primaries or secondaries */
for (i = 0; i < nlist; i++)
- disptechs_set_sel(1, i, list[i].sel, usels, &k, asels);
+ disptechs_set_sel(1, i, list[i].sel, list[i].isel, usels, &k, asels);
- /* Set remaining from fallback (or give up and set to null) */
+ /* Set remaining from fallback */
for (i = 0; i < nlist; i++) {
- fail = disptechs_set_sel(3, i, list[i].sel, usels, &k, asels);
+ disptechs_set_sel(2, i, list[i].sel, list[i].isel, usels, &k, asels);
+ if (list[i].sel[0] == '\000')
+ fail = 1;
+ }
+
+ /* Any calibrations that failed to find a character will be left as a nul string */
+
+ /* Add alternate selectors if they are free. */
+ for (;;) {
+ int more = 0;
+ for (i = 0; i < nlist; i++) {
+ /* Add unused secondaries */
+ disptechs_set_sel(3, i, list[i].sel, list[i].isel, usels, &k, asels);
+
+ if (list[i].isel[0] != '\000') { /* Still more secondaries available */
+ more = 1;
+ }
+ }
+ if (!more)
+ break;
}
if (pndtlist != NULL)
diff --git a/spectro/inst.h b/spectro/inst.h
index 00dd9b3..d47f7ea 100755..100644
--- a/spectro/inst.h
+++ b/spectro/inst.h
@@ -390,6 +390,7 @@ typedef struct _inst_disptypesel {
/* Private: */
int ix; /* Internal index, */
+ char isel[INST_DTYPE_SEL_LEN]; /* String of potential selector characters */
// Stuff for ccss & ccmx
char *path; /* Path to ccss or ccmx. NULL if not valid */
diff --git a/spectro/instappsup.c b/spectro/instappsup.c
index 0762bbe..0762bbe 100755..100644
--- a/spectro/instappsup.c
+++ b/spectro/instappsup.c
diff --git a/spectro/instappsup.h b/spectro/instappsup.h
index 8da4325..8da4325 100755..100644
--- a/spectro/instappsup.h
+++ b/spectro/instappsup.h
diff --git a/spectro/instlib.ksh b/spectro/instlib.ksh
index 88796f8..88796f8 100755..100644
--- a/spectro/instlib.ksh
+++ b/spectro/instlib.ksh
diff --git a/spectro/instlib.txt b/spectro/instlib.txt
index 661584d..661584d 100755..100644
--- a/spectro/instlib.txt
+++ b/spectro/instlib.txt
diff --git a/spectro/insttypeinst.h b/spectro/insttypeinst.h
index ad8047d..ad8047d 100755..100644
--- a/spectro/insttypeinst.h
+++ b/spectro/insttypeinst.h
diff --git a/spectro/insttypes.c b/spectro/insttypes.c
index 5a660a8..5a660a8 100755..100644
--- a/spectro/insttypes.c
+++ b/spectro/insttypes.c
diff --git a/spectro/insttypes.h b/spectro/insttypes.h
index ab80cd2..ab80cd2 100755..100644
--- a/spectro/insttypes.h
+++ b/spectro/insttypes.h
diff --git a/spectro/iusb.h b/spectro/iusb.h
index a254ec0..a254ec0 100755..100644
--- a/spectro/iusb.h
+++ b/spectro/iusb.h
diff --git a/spectro/kleink10.c b/spectro/kleink10.c
index 461cb28..461cb28 100755..100644
--- a/spectro/kleink10.c
+++ b/spectro/kleink10.c
diff --git a/spectro/kleink10.h b/spectro/kleink10.h
index 4dcc334..4dcc334 100755..100644
--- a/spectro/kleink10.h
+++ b/spectro/kleink10.h
diff --git a/spectro/linear.cal b/spectro/linear.cal
index ac93eb5..96cad93 100755..100644
--- a/spectro/linear.cal
+++ b/spectro/linear.cal
@@ -2,7 +2,7 @@ CAL
DESCRIPTOR "Argyll Device Calibration Curves"
ORIGINATOR "Argyll synthcal"
-CREATED "Tue Aug 18 00:14:21 2015"
+CREATED "Mon Sep 07 03:37:56 2015"
DEVICE_CLASS "DISPLAY"
COLOR_REP "RGB"
diff --git a/spectro/linear.sp b/spectro/linear.sp
index 8851462..8851462 100755..100644
--- a/spectro/linear.sp
+++ b/spectro/linear.sp
diff --git a/spectro/madvrwin.c b/spectro/madvrwin.c
index e131e5e..e131e5e 100755..100644
--- a/spectro/madvrwin.c
+++ b/spectro/madvrwin.c
diff --git a/spectro/madvrwin.h b/spectro/madvrwin.h
index bbaf32e..bbaf32e 100755..100644
--- a/spectro/madvrwin.h
+++ b/spectro/madvrwin.h
diff --git a/spectro/mongoose.c b/spectro/mongoose.c
index 019101e..019101e 100755..100644
--- a/spectro/mongoose.c
+++ b/spectro/mongoose.c
diff --git a/spectro/mongoose.h b/spectro/mongoose.h
index 1ee0c47..1ee0c47 100755..100644
--- a/spectro/mongoose.h
+++ b/spectro/mongoose.h
diff --git a/spectro/munki.c b/spectro/munki.c
index 57f5ce8..57f5ce8 100755..100644
--- a/spectro/munki.c
+++ b/spectro/munki.c
diff --git a/spectro/munki.h b/spectro/munki.h
index 01eda29..01eda29 100755..100644
--- a/spectro/munki.h
+++ b/spectro/munki.h
diff --git a/spectro/munki_imp.c b/spectro/munki_imp.c
index 6f49d0d..6f49d0d 100755..100644
--- a/spectro/munki_imp.c
+++ b/spectro/munki_imp.c
diff --git a/spectro/munki_imp.h b/spectro/munki_imp.h
index ea9451f..ea9451f 100755..100644
--- a/spectro/munki_imp.h
+++ b/spectro/munki_imp.h
diff --git a/spectro/oemarch.c b/spectro/oemarch.c
index a9bbda1..a9bbda1 100755..100644
--- a/spectro/oemarch.c
+++ b/spectro/oemarch.c
diff --git a/spectro/oemarch.h b/spectro/oemarch.h
index b0b1a65..b0b1a65 100755..100644
--- a/spectro/oemarch.h
+++ b/spectro/oemarch.h
diff --git a/spectro/oeminst.c b/spectro/oeminst.c
index bce7a67..bce7a67 100755..100644
--- a/spectro/oeminst.c
+++ b/spectro/oeminst.c
diff --git a/spectro/pollem.c b/spectro/pollem.c
index f7578c8..f7578c8 100755..100644
--- a/spectro/pollem.c
+++ b/spectro/pollem.c
diff --git a/spectro/pollem.h b/spectro/pollem.h
index f8a86ee..f8a86ee 100755..100644
--- a/spectro/pollem.h
+++ b/spectro/pollem.h
diff --git a/spectro/rspec.c b/spectro/rspec.c
index 49d725b..49d725b 100755..100644
--- a/spectro/rspec.c
+++ b/spectro/rspec.c
diff --git a/spectro/rspec.h b/spectro/rspec.h
index bc5d427..bc5d427 100755..100644
--- a/spectro/rspec.h
+++ b/spectro/rspec.h
diff --git a/spectro/smcube.c b/spectro/smcube.c
index 1618447..1618447 100755..100644
--- a/spectro/smcube.c
+++ b/spectro/smcube.c
diff --git a/spectro/smcube.h b/spectro/smcube.h
index 7283635..7283635 100755..100644
--- a/spectro/smcube.h
+++ b/spectro/smcube.h
diff --git a/spectro/spec2cie.c b/spectro/spec2cie.c
index c9e570c..aa91ebb 100755..100644
--- a/spectro/spec2cie.c
+++ b/spectro/spec2cie.c
@@ -514,8 +514,10 @@ main(int argc, char *argv[])
{
int sidx; /* Sample ID index */
- int ti, ii, Xi, Yi, Zi, Li, ai, bi;
+ int ti, ii;
+ int Xi, Yi, Zi, Li, ai, bi; /* CGATS indexes for each field */
int spi[XSPECT_MAX_BANDS]; /* CGATS indexes for each wavelength */
+ int oXi, oYi, oZi, oLi, oai, obi; /* CGATS indexes for each ouput field */
xsp2cie *sp2cie; /* Spectral conversion object */
xspect sp;
double XYZ[3];
@@ -572,13 +574,17 @@ main(int argc, char *argv[])
/* copy fields to output file (except spectral if nospec) */
for (i = 0; i < icg->t[0].nfields; i++) {
- /* See if this is a input spectral field */
- for (j = 0; nospec && j < sp.spec_n; j++) {
- if (spi[j] == i)
- break; /* Yes it is */
+
+ if (nospec) {
+ for (j = 0; nospec && j < sp.spec_n; j++) {
+ if (spi[j] == i) {
+ break; /* Yes it is */
+ }
+ }
+ if (j < sp.spec_n)
+ continue; /* Skip it */
}
- if (nospec == 0 || j >= sp.spec_n)
- ocg->add_field (ocg, 0, icg->t[0].fsym[i], icg->t[0].ftype[i]);
+ ocg->add_field (ocg, 0, icg->t[0].fsym[i], icg->t[0].ftype[i]);
}
/* create field for XYZ and Lab if not present */
@@ -607,6 +613,13 @@ main(int argc, char *argv[])
if ((bi = ocg->add_field(ocg, 0, "LAB_B", r_t)) < 0)
error ("Cannot add field to table");
+ oXi = Xi;
+ oYi = Yi;
+ oZi = Zi;
+ oLi = Li;
+ oai = ai;
+ obi = bi;
+
/* allocate elements */
if ((elems = (cgats_set_elem *)
@@ -746,25 +759,40 @@ main(int argc, char *argv[])
xspect corr_sp;
/* copy all input colums to output (except spectral if nospec) */
-
for (jj = j = 0; j < icg->t[0].nfields; j++) {
- for (k = 0; nospec && k < sp.spec_n; k++) {
- if (spi[k] == j)
- break;
- }
- if (nospec == 0 || k >= sp.spec_n) {
- switch (icg->t[0].ftype[j]) {
- case r_t:
- elems[jj].d = *((double *) icg->t[0].fdata[i][j]);
- break;
- case i_t:
- elems[jj].i = *((int *) icg->t[0].fdata[i][j]);
+
+ if (nospec) {
+ /* See if this is a spectral field */
+ for (k = 0; nospec && k < sp.spec_n; k++) {
+ if (spi[k] == j)
break;
- default:
- elems[jj].c = (char *) icg->t[0].fdata[i][j];
}
- jj++;
+
+ /* It is a spectral field */
+ if (k < sp.spec_n) {
+ continue; /* Skip it */
+ }
}
+
+ /* Correct the other fields location in output */
+ if (j == Xi) oXi = jj;
+ if (j == Yi) oYi = jj;
+ if (j == Zi) oZi = jj;
+ if (j == Li) oLi = jj;
+ if (j == ai) oai = jj;
+ if (j == bi) obi = jj;
+
+ switch (icg->t[0].ftype[j]) {
+ case r_t:
+ elems[jj].d = *((double *) icg->t[0].fdata[i][j]);
+ break;
+ case i_t:
+ elems[jj].i = *((int *) icg->t[0].fdata[i][j]);
+ break;
+ default:
+ elems[jj].c = (char *) icg->t[0].fdata[i][j];
+ }
+ jj++;
}
/* Read the spectral values for this patch */
@@ -781,63 +809,16 @@ main(int argc, char *argv[])
/* Write the corrected spectral values for this patch */
if (nospec == 0) {
for (j = 0; j < sp.spec_n; j++) {
- elems[spi[j]].d = corr_sp.spec[j];
+ elems[spi[j]].d = sp.spec[j] = corr_sp.spec[j];
}
}
-#ifdef ALLOW_PLOT
- if (doplot) {
- int ii;
- double xx[XRES];
- double y1[XRES];
- double y2[XRES];
- double lab[3];
-
- icmXYZ2Lab(&icmD50, lab, XYZ);
- printf("Patch %d, XYZ = %f %f %f, Lab = %f %f %f\n",i,
- XYZ[0], XYZ[1], XYZ[2], lab[0], lab[1], lab[2]);
-
- /* Plot spectrum out */
- for (ii = 0; ii < XRES; ii++) {
- double ww;
-
- ww = (sp.spec_wl_long - sp.spec_wl_short)
- * ((double)ii/(XRES-1.0)) + sp.spec_wl_short;
-
- xx[ii] = ww;
- y1[ii] = value_xspect(&sp, ww);
- y2[ii] = 100.0 * value_xspect(&corr_sp, ww);
- }
- do_plot(xx,y1,y2,NULL,ii);
- }
-#endif
}
+
+ /* No FWA comp */
else {
/* Convert it to CIE space */
sp2cie->convert (sp2cie, XYZ, &sp);
-#ifdef ALLOW_PLOT
- if (doplot) {
- int ii;
- double xx[XRES];
- double y1[XRES];
- double lab[3];
-
- icmXYZ2Lab(&icmD50, lab, XYZ);
- printf("Patch %d, XYZ = %f %f %f, Lab = %f %f %f\n",i,
- XYZ[0], XYZ[1], XYZ[2], lab[0], lab[1], lab[2]);
-
- /* Plot spectrum out */
- for (ii = 0; ii < XRES; ii++) {
- double ww;
-
- ww = (sp.spec_wl_long - sp.spec_wl_short)
- * ((double)ii/(XRES-1.0)) + sp.spec_wl_short;
-
- xx[ii] = ww;
- y1[ii] = value_xspect(&sp, ww);
- }
- do_plot(xx,y1,NULL,NULL,ii);
- }
-#endif
+
}
/* Could use sp2cie->get_cie_il() to get CIE white point */
@@ -846,13 +827,35 @@ main(int argc, char *argv[])
/* This won't work for emmisive though, since get_cie_il() will return 'E' */
icmXYZ2Lab(&icmD50, Lab, XYZ);
- elems[Xi].d = XYZ[0] * 100.0;
- elems[Yi].d = XYZ[1] * 100.0;
- elems[Zi].d = XYZ[2] * 100.0;
+#ifdef ALLOW_PLOT
+ if (doplot) {
+ int ii;
+ double xx[XRES];
+ double y1[XRES];
+
+ printf("Patch %d, XYZ = %f %f %f, Lab = %f %f %f\n",i,
+ XYZ[0], XYZ[1], XYZ[2], Lab[0], Lab[1], Lab[2]);
+
+ /* Plot spectrum out */
+ for (ii = 0; ii < XRES; ii++) {
+ double ww;
+
+ ww = (sp.spec_wl_long - sp.spec_wl_short)
+ * ((double)ii/(XRES-1.0)) + sp.spec_wl_short;
+
+ xx[ii] = ww;
+ y1[ii] = value_xspect(&sp, ww);
+ }
+ do_plot(xx,y1,NULL,NULL,ii);
+ }
+#endif
+ elems[oXi].d = XYZ[0] * 100.0;
+ elems[oYi].d = XYZ[1] * 100.0;
+ elems[oZi].d = XYZ[2] * 100.0;
- elems[Li].d = Lab[0];
- elems[ai].d = Lab[1];
- elems[bi].d = Lab[2];
+ elems[oLi].d = Lab[0];
+ elems[oai].d = Lab[1];
+ elems[obi].d = Lab[2];
ocg->add_setarr(ocg, 0, elems);
}
@@ -866,7 +869,7 @@ main(int argc, char *argv[])
ocg->del (ocg); /* Clean up */
icg->del (icg); /* Clean up */
- free (elems);
+ free (elems);
}
return 0;
diff --git a/spectro/specbos.c b/spectro/specbos.c
index e819c06..e819c06 100755..100644
--- a/spectro/specbos.c
+++ b/spectro/specbos.c
diff --git a/spectro/specbos.h b/spectro/specbos.h
index e926c42..e926c42 100755..100644
--- a/spectro/specbos.h
+++ b/spectro/specbos.h
diff --git a/spectro/spotread.c b/spectro/spotread.c
index baf1c76..baf1c76 100755..100644
--- a/spectro/spotread.c
+++ b/spectro/spotread.c
diff --git a/spectro/spyd2.c b/spectro/spyd2.c
index b546f6b..b546f6b 100755..100644
--- a/spectro/spyd2.c
+++ b/spectro/spyd2.c
diff --git a/spectro/spyd2.h b/spectro/spyd2.h
index 923234f..923234f 100755..100644
--- a/spectro/spyd2.h
+++ b/spectro/spyd2.h
diff --git a/spectro/ss.c b/spectro/ss.c
index 90720ca..90720ca 100755..100644
--- a/spectro/ss.c
+++ b/spectro/ss.c
diff --git a/spectro/ss.h b/spectro/ss.h
index bff0846..bff0846 100755..100644
--- a/spectro/ss.h
+++ b/spectro/ss.h
diff --git a/spectro/ss_imp.c b/spectro/ss_imp.c
index 6f184b3..6f184b3 100755..100644
--- a/spectro/ss_imp.c
+++ b/spectro/ss_imp.c
diff --git a/spectro/ss_imp.h b/spectro/ss_imp.h
index c298e80..c298e80 100755..100644
--- a/spectro/ss_imp.h
+++ b/spectro/ss_imp.h
diff --git a/spectro/strange.cal b/spectro/strange.cal
index 06725b0..406fba4 100755..100644
--- a/spectro/strange.cal
+++ b/spectro/strange.cal
@@ -2,7 +2,7 @@ CAL
DESCRIPTOR "Argyll Device Calibration Curves"
ORIGINATOR "Argyll synthcal"
-CREATED "Tue Aug 18 00:14:21 2015"
+CREATED "Mon Sep 07 03:37:56 2015"
DEVICE_CLASS "DISPLAY"
COLOR_REP "RGB"
diff --git a/spectro/synthcal.c b/spectro/synthcal.c
index 75d18be..75d18be 100755..100644
--- a/spectro/synthcal.c
+++ b/spectro/synthcal.c
diff --git a/spectro/synthread.c b/spectro/synthread.c
index 3a23c31..3a23c31 100755..100644
--- a/spectro/synthread.c
+++ b/spectro/synthread.c
diff --git a/spectro/usbio.c b/spectro/usbio.c
index 668544a..668544a 100755..100644
--- a/spectro/usbio.c
+++ b/spectro/usbio.c
diff --git a/spectro/usbio.h b/spectro/usbio.h
index 578bd83..578bd83 100755..100644
--- a/spectro/usbio.h
+++ b/spectro/usbio.h
diff --git a/spectro/usbio_bsd.c b/spectro/usbio_bsd.c
index 0af13a1..0af13a1 100755..100644
--- a/spectro/usbio_bsd.c
+++ b/spectro/usbio_bsd.c
diff --git a/spectro/usbio_lx.c b/spectro/usbio_lx.c
index cb9ec59..cb9ec59 100755..100644
--- a/spectro/usbio_lx.c
+++ b/spectro/usbio_lx.c
diff --git a/spectro/usbio_nt.c b/spectro/usbio_nt.c
index 8daac0d..8daac0d 100755..100644
--- a/spectro/usbio_nt.c
+++ b/spectro/usbio_nt.c
diff --git a/spectro/usbio_ox.c b/spectro/usbio_ox.c
index d3da59a..d3da59a 100755..100644
--- a/spectro/usbio_ox.c
+++ b/spectro/usbio_ox.c
diff --git a/spectro/vinflate.c b/spectro/vinflate.c
index 847fa28..847fa28 100755..100644
--- a/spectro/vinflate.c
+++ b/spectro/vinflate.c
diff --git a/spectro/webwin.c b/spectro/webwin.c
index e13981a..e13981a 100755..100644
--- a/spectro/webwin.c
+++ b/spectro/webwin.c
diff --git a/spectro/webwin.h b/spectro/webwin.h
index 1f4412a..1f4412a 100755..100644
--- a/spectro/webwin.h
+++ b/spectro/webwin.h
diff --git a/spectro/xdg_bds.c b/spectro/xdg_bds.c
index c1805ed..c1805ed 100755..100644
--- a/spectro/xdg_bds.c
+++ b/spectro/xdg_bds.c
diff --git a/spectro/xdg_bds.h b/spectro/xdg_bds.h
index 5c29790..5c29790 100755..100644
--- a/spectro/xdg_bds.h
+++ b/spectro/xdg_bds.h