From f6b8e0eae4374f339487a33e3e4fe5462d5816e1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Frings-F=C3=BCrst?= Date: Sat, 25 Nov 2017 10:16:00 +0100 Subject: New upstream version 2.0.0 --- Jambase | 0 Jamfile | 0 Jamtop | 19 +- License.txt | 0 License2.txt | 0 License3.txt | 0 Makefile | 0 Readme.txt | 6 +- adirs | 0 afiles | 0 binfiles | 0 blddirs | 0 ccast/Jamfile | 0 ccast/License.txt | 0 ccast/Readme.txt | 6 +- ccast/axTLS/Jamfile | 2 +- ccast/axTLS/aes.c | 0 ccast/axTLS/asn1.c | 34 + ccast/axTLS/axTLS_config.h | 0 ccast/axTLS/axTLS_version.h | 0 ccast/axTLS/bigint.c | 0 ccast/axTLS/bigint.h | 0 ccast/axTLS/bigint_impl.h | 0 ccast/axTLS/cert.h | 0 ccast/axTLS/crypto.h | 1 + ccast/axTLS/crypto_misc.c | 0 ccast/axTLS/crypto_misc.h | 2 + ccast/axTLS/gen_cert.c | 0 ccast/axTLS/hmac.c | 0 ccast/axTLS/loader.c | 0 ccast/axTLS/md2.c | 0 ccast/axTLS/md5.c | 0 ccast/axTLS/openssl.c | 0 ccast/axTLS/os_int.h | 0 ccast/axTLS/os_port.c | 0 ccast/axTLS/os_port.h | 0 ccast/axTLS/p12.c | 0 ccast/axTLS/private_key.h | 0 ccast/axTLS/rc4.c | 0 ccast/axTLS/rsa.c | 44 + ccast/axTLS/sha1.c | 0 ccast/axTLS/ssl.h | 0 ccast/axTLS/temp | 0 ccast/axTLS/tls1.c | 0 ccast/axTLS/tls1.h | 0 ccast/axTLS/tls1_clnt.c | 0 ccast/axTLS/tls1_svr.c | 0 ccast/axTLS/x509.c | 0 ccast/cast_channel.proto | 0 ccast/ccast.c | 2 +- ccast/ccast.h | 0 ccast/ccmdns.c | 761 +++- ccast/ccmdns.h | 17 +- ccast/ccmes.c | 0 ccast/ccmes.h | 0 ccast/ccpacket.c | 0 ccast/ccpacket.h | 0 ccast/cctest.c | 0 ccast/chan/cast_channel.pb-c.c | 0 ccast/chan/cast_channel.pb-c.h | 0 ccast/chan/protobuf-c.c | 0 ccast/chan/protobuf-c.h | 0 ccast/dpat.c | 0 ccast/filt.c | 0 cgats/Jamfile | 0 cgats/License4.txt | 0 cgats/Makefile | 0 cgats/Makefile.IBMNT | 0 cgats/Makefile.OSX | 0 cgats/Makefile.UNIX | 0 cgats/Makefile.WNT | 0 cgats/Readme.txt | 0 cgats/afiles | 0 cgats/cgats.c | 1 + cgats/cgats.h | 3 + cgats/cgatsstd.c | 0 cgats/makezip.ksh | 0 cgats/pars.c | 6 + cgats/pars.h | 0 cgats/parsstd.c | 0 cgats/test.txt | 0 doc/3dformat.html | 0 doc/ArgyllCMS_arts_tag.html | 0 doc/ArgyllDoc.html | 1054 ++++- doc/ArgyllFlow.jpg | Bin doc/ArgyllFlowThumb.jpg | Bin doc/CMP_DT_003.jpg | Bin doc/CMP_Digital_Target-4.jpg | Bin doc/CMP_Digital_Target-7.jpg | Bin doc/CRTspectrum.jpg | Bin doc/ChangesSummary.html | 93 +- doc/Chroma4.jpg | Bin doc/ColorHug.jpg | Bin doc/ColorManagement.html | 0 doc/ColorMunki.jpg | Bin doc/ColorMunkiCreate.jpg | Bin doc/Compiling.html | 2 +- doc/CrushedDisplyBlacks.html | 0 doc/DC.jpg | Bin doc/DTP20.jpg | Bin doc/DTP22.jpg | Bin doc/DTP41.jpg | Bin doc/DTP51.jpg | Bin doc/DTP92.jpg | Bin doc/DTP94.jpg | Bin doc/DocLicense.txt | 0 doc/EX1.jpg | Bin doc/Environment.html | 115 +- doc/FWA.html | 0 doc/FWA_measure.jpg | Bin doc/File_Formats.html | 0 doc/Fluorescent.jpg | Bin doc/HCFR.jpg | Bin doc/HCT.jpg | Bin doc/HiResLaser.jpg | Bin doc/Huey.jpg | Bin doc/Installing.html | 0 doc/Installing_Linux.html | 839 ++-- doc/Installing_MSWindows.html | 0 doc/Installing_OSX.html | 0 doc/JETI_1211.jpg | Bin doc/JETI_1501.jpg | Bin doc/K10A.jpg | Bin doc/Kgraph1.jpg | Bin doc/Kgraph2.jpg | Bin doc/Kgraph3.jpg | Bin doc/Kgraph4.jpg | Bin doc/Kgraph5.jpg | Bin doc/Kgraph6.jpg | Bin doc/Kgraph7.jpg | Bin doc/Kgraph8.jpg | Bin doc/Kparams.jpg | Bin doc/LSDC.jpg | Bin doc/LabSteps.jpg | Bin doc/License.txt | 0 doc/License2.txt | 0 doc/License3.txt | 0 doc/License4.txt | 0 doc/Limitations.html | 0 doc/MinorTools.html | 0 doc/Organisation.html | 0 doc/Overview.html | 0 doc/Passport.jpg | Bin 0 -> 10046 bytes doc/Performance.html | 0 doc/Q60.jpg | Bin doc/QPcard201.jpg | Bin doc/QPcard202.jpg | Bin doc/SG.jpg | Bin doc/SG_footer.txt | 0 doc/SG_header.txt | 0 doc/SMCube.jpg | Bin doc/Scenarios.html | 224 +- doc/Smile.jpg | Bin doc/Source.html | 0 doc/Spyd2.jpg | Bin doc/Spyd3.jpg | Bin doc/Spyd3x.jpg | Bin doc/Spyd4.jpg | Bin doc/Spyd5.jpg | Bin doc/SpyderChecker.jpg | Bin doc/SpyderChecker24.jpg | Bin doc/VideoEOTFs.html | 0 doc/WideGamutColmters.html | 0 doc/XRGA.html | 4 + doc/YellowGreen.jpg | Bin doc/afiles | 5 + doc/applycal.html | 0 doc/average.html | 0 doc/cal_format.html | 0 doc/calvschar.html | 0 doc/cb2ti3.html | 0 doc/ccmxs.html | 0 doc/ccmxs/DTP-94_1964_10_Dell_2408W.ccmx | 0 doc/ccmxs/DTP-94_1997_Shaw_Dell_2408W.ccmx | 0 doc/ccmxs/DTP-94_Dell_2408W.ccmx | 0 doc/ccmxs/DTP-94_Dell_U2410.ccmx | 0 doc/ccmxs/EyeOne_Display_1_NEC1990SXi.ccmx | 0 doc/ccmxs/EyeOne_Display_2_EIZO_S2233W.ccmx | 0 doc/ccmxs/EyeOne_Display_2_NEC1990SXi.ccmx | 0 .../EyeOne_Display_LT_U2410_Standard_1931.ccmx | 0 .../EyeOne_Display_LT_U2410_Standard_1964.ccmx | 0 doc/ccmxs/EyeOne_Display_LT_U2410_sRGB_1931.ccmx | 0 doc/ccmxs/EyeOne_Display_LT_U2410_sRGB_1964.ccmx | 0 doc/ccmxs/Huey_Acer_al2016w.ccmx | 0 doc/ccmxs/Huey_Eizo_CG243.ccmx | 0 doc/ccmxs/Huey_HP_compaq_6730s.ccmx | 0 doc/ccmxs/Huey_HP_lp2475w.ccmx | 0 doc/ccmxs/Huey_NEC1990SXi.ccmx | 0 doc/ccmxs/Huey_NEC_Spectraview_241.ccmx | 0 doc/ccmxs/NEC_EyeOne_Display_2_NEC2690WUXi2.ccmx | 0 doc/ccmxs/Spyder2_EIZO_S2433W_standard_1931.ccmx | 0 doc/ccmxs/Spyder2_EIZO_S2433W_standard_1964.ccmx | 0 doc/ccmxs/Spyder3_EIZO_S2233_standard_1964.ccmx | 0 doc/ccmxs/Spyder3_EIZO_S2243W_standard_1931.ccmx | 0 doc/ccmxs/Spyder3_HP_LP2475w.ccmx | 0 doc/ccmxs/Spyder3_NEC2690WUXi2.ccmx | 0 doc/ccmxs/Spyder3_NEC_PA301W.ccmx | 0 doc/ccsss.html | 56 + doc/ccsss/MacBookProRetina2016.ccss | 24 + doc/cctiff.html | 0 doc/ccxxmake.html | 207 +- doc/chartread.html | 87 +- doc/cht_format.html | 0 doc/collink.html | 1067 +++-- doc/colorchecker.jpg | Bin doc/colprof.html | 1076 ++--- doc/colverify.html | 57 +- doc/cube.jpg | Bin doc/dispcal.html | 226 +- doc/dispprofloc.html | 0 doc/dispread.html | 128 +- doc/dispwin.html | 197 +- doc/evalInputTargets.html | 0 doc/extracticc.html | 0 doc/extractttag.html | 0 doc/fakeCMY.html | 0 doc/fakeread.html | 57 +- doc/filmread.html | 0 doc/filmtarg.html | 0 doc/gamma.html | 0 doc/gamutmapping1.jpg | Bin doc/greytiff.html | 0 doc/i1d.jpg | Bin doc/i1d3_1.jpg | Bin doc/i1d3_2.jpg | Bin doc/i1m.jpg | Bin doc/i1p.jpg | Bin doc/i1pro2.jpg | Bin doc/i1proDriver.html | 0 doc/i1proDriver.xls | Bin doc/i1proHiRes.html | 0 doc/i1proHiRes.jpg | Bin doc/i1proHiRes.zip | Bin doc/i1scan14.jpg | Bin doc/iccdump.html | 0 doc/iccgamut.html | 313 +- doc/iccgamutmapping.html | 0 doc/icclu.html | 0 doc/illumread.html | 0 doc/illumread_1.jpg | Bin doc/illumread_2.jpg | Bin doc/illumread_3.jpg | Bin doc/illumread_4.jpg | Bin doc/illumread_5.jpg | Bin doc/illumread_6.jpg | Bin doc/inoutreferred.html | 48 + doc/instruments.html | 373 +- doc/invprofcheck.html | 0 doc/kodak2ti3.html | 0 doc/ls2ti3.html | 37 + doc/monitorcontrols.html | 0 doc/mox.jpg | Bin doc/moxxr.jpg | Bin doc/mppcheck.html | 0 doc/mpplu.html | 382 +- doc/mppprof.html | 0 doc/oeminst.html | 0 doc/printcal.html | 0 doc/printtarg.html | 162 +- doc/profcheck.html | 40 +- doc/refine.html | 89 +- doc/revfix.html | 0 doc/scanin.html | 0 doc/sl.jpg | Bin doc/spec2cie.html | 149 +- doc/specplot.html | 0 doc/splitti3.html | 0 doc/spotread.html | 287 +- doc/srgbplot.gif | Bin doc/ss.jpg | Bin doc/surface.jpg | Bin doc/synthcal.html | 0 doc/synthread.html | 347 +- doc/targen.html | 0 doc/ti3_format.html | 38 +- doc/tiffgamut.html | 281 +- doc/timage.html | 0 doc/txt2ti3.html | 16 +- doc/ucmm.html | 0 doc/viewgam.html | 0 doc/xicclu.html | 611 +-- gamut/GenRMGam.c | 0 gamut/GenVisGam.c | 0 gamut/Jamfile | 0 gamut/License.txt | 0 gamut/Readme.txt | 0 gamut/afiles | 0 gamut/fakegam.c | 0 gamut/gammap.c | 8 +- gamut/gammap.h | 0 gamut/gammap.txt | 0 gamut/gamut.c | 0 gamut/gamut.h | 0 gamut/isecvol.c | 0 gamut/maptest.c | 0 gamut/nearsmth.c | 0 gamut/nearsmth.h | 0 gamut/smthtest.c | 0 gamut/surftest.c | 0 gamut/viewgam.c | 0 h/License.txt | 0 h/Readme.txt | 0 h/aconfig.h | 10 +- h/afiles | 0 h/copyright.h | 0 h/counters.h | 30 +- h/llist.h | 0 h/sort.h | 6 +- h/xlist.h | 0 icc/ClayRGB1998.icm | Bin icc/EBU3213_PAL.icm | Bin icc/Jamfile | 0 icc/License4.txt | 0 icc/Makefile | 0 icc/Makefile.IBMNT | 0 icc/Makefile.OSX | 0 icc/Makefile.UNIX | 0 icc/Makefile.WNT | 0 icc/ProPhoto.icm | Bin icc/ProPhotoLin.icm | Bin icc/Readme.txt | 0 icc/Rec2020.icm | Bin icc/Rec709.icm | Bin icc/SMPTE431_P3.icm | Bin icc/SMPTE_RP145_NTSC.icm | Bin icc/afiles | 0 icc/icc.c | 698 ++- icc/icc.h | 141 +- icc/iccV42.h | 0 icc/iccdump.c | 0 icc/icclu.c | 0 icc/iccrw.c | 0 icc/iccstd.c | 0 icc/icctest.c | 0 icc/lab2lab.icm | Bin icc/log.txt | 0 icc/lutest.c | 0 icc/mcheck.c | 0 icc/mkDispProf.c | 0 icc/sRGB.icm | Bin icc/testDE2K.c | 0 icc/todo.txt | 0 imdi/Jamfile | 0 imdi/License.txt | 0 imdi/Makefile | 0 imdi/Makefile.OSX | 0 imdi/Makefile.UNIX | 0 imdi/Makefile.WNT | 0 imdi/Readme.txt | 0 imdi/afiles | 0 imdi/cctiff.c | 0 imdi/cctiffo.c | 0 imdi/cgen.c | 0 imdi/ctest.c | 0 imdi/greytiff.c | 0 imdi/imdi.c | 0 imdi/imdi.h | 0 imdi/imdi_arch.h | 0 imdi/imdi_gen.c | 0 imdi/imdi_gen.h | 0 imdi/imdi_make.c | 0 imdi/imdi_tab.c | 0 imdi/imdi_tab.h | 0 imdi/imdi_utl.h | 0 imdi/itest.c | 0 imdi/refi.c | 0 imdi/refi.h | 0 imdi/ssort.c | 0 install.bat | 0 jam.patch | 0 jcnf/Jamfile | 0 jcnf/Readme.txt | 0 jcnf/afiles | 0 jcnf/jcnf.c | 4 + jcnf/jcnf.h | 0 jcnf/test.c | 0 jcnf/test.jcnf | 0 lib/Readme.txt | 0 lib/afiles | 0 link/Jamfile | 2 + link/collink.c | 118 +- link/monoplot.c | 0 link/pathplot.c | 0 log.txt | 144 + makeall.bat | 0 makeall.sh | 0 makeinstall.sh | 0 makeoemdnldbin.sh | 0 makepackagebin.sh | 9 +- namedc/Jamfile | 2 + namedc/License.txt | 0 namedc/afiles | 0 namedc/namedc.c | 0 namedc/namedc.h | 0 namedc/txt2iccnc.c | 1 + notes.txt | 0 numlib/Jamfile | 4 +- numlib/LUtest.c | 0 numlib/License.txt | 0 numlib/Readme.txt | 0 numlib/aatree.c | 0 numlib/aatree.h | 3 + numlib/afiles | 5 + numlib/dhsx.c | 306 +- numlib/dhsx.h | 28 +- numlib/dnsq.c | 0 numlib/dnsq.h | 0 numlib/dnsqtest.c | 0 numlib/ludecomp.c | 16 +- numlib/ludecomp.h | 14 + numlib/numlib.h | 2 + numlib/numsup.c | 327 +- numlib/numsup.h | 88 +- numlib/powell.c | 121 +- numlib/powell.h | 24 +- numlib/qptest.c | 105 + numlib/quadprog.c | 845 ++++ numlib/quadprog.h | 67 + numlib/rand.c | 128 +- numlib/rand.h | 40 + numlib/sobol.c | 0 numlib/sobol.h | 0 numlib/soboltest.c | 0 numlib/svd.c | 0 numlib/svd.h | 35 +- numlib/svdtest.c | 0 numlib/tdhsx.c | 0 numlib/tpowell.c | 0 numlib/ui.c | 0 numlib/ui.h | 0 numlib/varmet.c | 290 ++ numlib/varmet.h | 55 + numlib/zbrent.c | 0 numlib/zbrent.h | 0 numlib/zbrenttest.c | 0 plot/Imakefile | 0 plot/Jamfile | 7 +- plot/License.txt | 0 plot/Readme.txt | 0 plot/X3DOM_LICENSE.txt | 0 plot/afiles | 0 plot/plot.c | 37 +- plot/plot.h | 11 +- plot/vrml.c | 19 +- plot/vrml.h | 4 + plot/x3dom.css | 0 plot/x3dom.css.h | 0 plot/x3dom.js | 0 plot/x3dom.js.h | 0 profile/Jamfile | 2 + profile/applycal.c | 5 +- profile/cb2ti3.c | 0 profile/colprof.c | 84 +- profile/colverify.c | 38 +- profile/invprofcheck.c | 0 profile/kodak2ti3.c | 0 profile/ls2ti3.c | 0 profile/mppcheck.c | 0 profile/mppprof.c | 0 profile/printcal.c | 0 profile/prof.h | 6 +- profile/profcheck.c | 36 +- profile/profin.c | 16 +- profile/profout.c | 34 +- profile/simpprof.c | 0 profile/splitti3.c | 0 profile/txt2ti3.c | 157 +- ref/3dap5k.sp | 0 ref/CIE_C.sp | 0 ref/CMP_DT_003.cht | 0 ref/CMP_Digital_Target-4.cht | 0 ref/CMP_Digital_Target-4.cie | 0 ref/CMP_Digital_Target-4.ti2 | 0 ref/CMP_Digital_Target-7.cht | 0 ref/CRT.ccss | 0 ref/ClayRGB1998.icm | Bin ref/ColorChecker.cht | 0 ref/ColorChecker.cie | 0 ref/ColorChecker.ti2 | 0 ref/ColorCheckerDC.cht | 0 ref/ColorCheckerDC.ti2 | 0 ref/ColorCheckerPassport.cht | 0 ref/ColorCheckerPassport.cie | 0 ref/ColorCheckerSG.cht | 0 ref/ColorCheckerSG.ti2 | 0 ref/D50_0.0.sp | 0 ref/D50_0.1.sp | 0 ref/D50_0.3.sp | 0 ref/D50_0.5.sp | 0 ref/D50_0.7.sp | 0 ref/D50_1.0.sp | 0 ref/D50_1.2.sp | 0 ref/D50_1.5.sp | 0 ref/D50_1.7.sp | 0 ref/D50_2.0.sp | 0 ref/D50_2.5.sp | 0 ref/D50_3.0.sp | 0 ref/EBU3213_PAL.icm | Bin ref/ECI2002.ti2 | 0 ref/ECI2002R.ti2 | 0 ref/F1.sp | 0 ref/F5.sp | 0 ref/F8.sp | 0 ref/FograStrip2.ti1 | 0 ref/FograStrip2_2.ti2 | 0 ref/FograStrip3.ti1 | 0 ref/FograStrip3_3.ti2 | 0 ref/GTIPlus.sp | 0 ref/Hutchcolor.cht | 0 ref/LaserSoftDCPro.cht | 0 ref/License.txt | 0 ref/Office.sp | 0 ref/ProPhoto.icm | Bin ref/ProPhotoLin.icm | Bin ref/QPcard_201.cht | 0 ref/QPcard_201.cie | 0 ref/QPcard_202.cht | 0 ref/QPcard_202.cie | 0 ref/ReadMe.txt | 0 ref/Rec2020.icm | Bin ref/Rec709.icm | Bin ref/SMPTE431_P3.icm | Bin ref/SMPTE_RP145_NTSC.icm | Bin ref/SOtele.sp | 0 ref/SpyderChecker.cht | 0 ref/SpyderChecker.cie | 0 ref/SpyderChecker24.cht | 0 ref/SpyderChecker24.cie | 0 ref/StandardObs2deg.cmf | 23 + ref/Trulux.sp | 0 ref/TruluxPlus.sp | 0 ref/afiles | 1 + ref/ccxx.ti1 | 0 ref/cmyk.icm | Bin ref/example.sp | 0 ref/example121.sp | 0 ref/i1_RGB_Scan_1.4.cht | 0 ref/i1_RGB_Scan_1.4.ti2 | 0 ref/it8.cht | 0 ref/lab2lab.icm | Bin ref/linear.cal | 2 +- ref/sRGB.icm | Bin ref/strange.cal | 2 +- render/Jamfile | 0 render/License.txt | 0 render/Readme.txt | 0 render/afiles | 0 render/makecharts.ksh | 0 render/render.c | 13 +- render/render.h | 0 render/screens.h | 0 render/thscreen.c | 0 render/thscreen.h | 0 render/timage.c | 2 +- rspl/Jamfile | 2 + rspl/c1.c | 0 rspl/c1df.c | 0 rspl/cw1.c | 0 rspl/cw3.c | 0 rspl/gam.c | 13 +- rspl/gam.h | 0 rspl/mlbs.c | 0 rspl/mlbs.h | 0 rspl/opt.c | 0 rspl/rev.c | 963 +++- rspl/rev.h | 17 +- rspl/revbench.c | 0 rspl/rspl.c | 0 rspl/rspl.h | 35 +- rspl/rspl1.c | 0 rspl/rspl1.h | 0 rspl/rspl_imp.h | 0 rspl/scat.c | 127 +- rspl/scat2.c | 0 rspl/sm1.c | 0 rspl/sm2.c | 0 rspl/sm3.c | 0 rspl/smtmpp.c | 0 rspl/smtnd.c | 2 +- rspl/spline.c | 0 rspl/stest.c | 0 rspl/t2d.c | 0 rspl/t2ddf.c | 0 rspl/t3d.c | 0 rspl/t3ddf.c | 0 rspl/tnd.c | 0 rspl/trnd.c | 0 scanin/CMP_DT_003.cht | 0 scanin/CMP_Digital_Target-4.cht | 0 scanin/CMP_Digital_Target-4.cie | 0 scanin/CMP_Digital_Target-4.ti2 | 0 scanin/CMP_Digital_Target-7.cht | 0 scanin/ColorChecker.cht | 0 scanin/ColorChecker.cie | 0 scanin/ColorCheckerDC.cht | 0 scanin/ColorCheckerDC.ti2 | 0 scanin/ColorCheckerHalfPassport.cht | 58 + scanin/ColorCheckerHalfPassport.cie | 38 + scanin/ColorCheckerPassport.cht | 0 scanin/ColorCheckerPassport.cie | 0 scanin/ColorCheckerSG.cht | 0 scanin/ColorCheckerSG.ti2 | 0 scanin/Hutchcolor.cht | 0 scanin/Jamfile | 2 + scanin/LaserSoftDCPro.cht | 0 scanin/License.txt | 0 scanin/QPcard_201.cht | 0 scanin/QPcard_201.cie | 0 scanin/QPcard_202.cht | 0 scanin/QPcard_202.cie | 0 scanin/Readme.txt | 0 scanin/SpyderChecker.cht | 0 scanin/SpyderChecker.cie | 0 scanin/SpyderChecker24.cht | 0 scanin/SpyderChecker24.cie | 0 scanin/afiles | 2 + scanin/i1_RGB_Scan_1.4.cht | 0 scanin/it8.cht | 0 scanin/scanin.c | 0 scanin/scanrd.c | 2 +- scanin/scanrd.h | 0 scanin/scanrd_.h | 0 spectro/IntsLib_Readme.txt | 0 spectro/Jamfile | 34 +- spectro/License.txt | 0 spectro/License2.txt | 0 spectro/License3.txt | 0 spectro/LzmaDec.c | 0 spectro/LzmaDec.h | 0 spectro/LzmaTypes.h | 0 spectro/Makefile.OSX | 0 spectro/Makefile.SA | 0 spectro/Makefile.UNIX | 0 spectro/Makefile.WNT | 0 spectro/Readme.txt | 0 spectro/SOtele.sp | 0 spectro/afiles | 3 + spectro/aglob.c | 0 spectro/aglob.h | 0 spectro/average.c | 0 spectro/base64.c | 0 spectro/base64.h | 0 spectro/ccwin.c | 0 spectro/ccwin.h | 0 spectro/ccxx.ti1 | 0 spectro/ccxxmake.c | 48 +- spectro/chartread.c | 34 +- spectro/colorhug.c | 7 +- spectro/colorhug.h | 0 spectro/conv.c | 41 + spectro/conv.h | 4 + spectro/cubecal.h | 0 spectro/dev.h | 6 +- spectro/dispcal.c | 217 +- spectro/dispread.c | 39 +- spectro/dispsup.c | 2 + spectro/dispsup.h | 0 spectro/disptechs.c | 0 spectro/disptechs.h | 0 spectro/dispwin.c | 580 ++- spectro/dispwin.h | 14 +- spectro/dtp20.c | 5 +- spectro/dtp20.h | 0 spectro/dtp22.c | 15 +- spectro/dtp22.h | 0 spectro/dtp41.c | 5 +- spectro/dtp41.h | 0 spectro/dtp51.c | 5 +- spectro/dtp51.h | 0 spectro/dtp92.c | 37 +- spectro/dtp92.h | 0 spectro/ex1.c | 7 +- spectro/ex1.h | 0 spectro/fakeread.c | 0 spectro/hcfr.c | 7 +- spectro/hcfr.h | 0 spectro/hidio.c | 3 + spectro/hidio.h | 0 spectro/huey.c | 28 +- spectro/huey.h | 0 spectro/i1d3.c | 81 +- spectro/i1d3.h | 5 +- spectro/i1disp.c | 81 +- spectro/i1disp.h | 7 +- spectro/i1pro.c | 11 +- spectro/i1pro.h | 2 +- spectro/i1pro_imp.c | 117 +- spectro/i1pro_imp.h | 0 spectro/icoms.c | 179 +- spectro/icoms.h | 32 +- spectro/icoms_nt.c | 26 +- spectro/icoms_ux.c | 62 +- spectro/ifiles | 0 spectro/illumread.c | 8 +- spectro/inflate.c | 0 spectro/inst.c | 365 +- spectro/inst.h | 37 +- spectro/instappsup.c | 3 +- spectro/instappsup.h | 0 spectro/instlib.ksh | 0 spectro/instlib.txt | 0 spectro/insttypeinst.h | 0 spectro/insttypes.c | 90 +- spectro/insttypes.h | 30 +- spectro/iusb.h | 0 spectro/kleink10.c | 11 +- spectro/kleink10.h | 0 spectro/linear.cal | 2 +- spectro/linear.sp | 0 spectro/madvrwin.c | 0 spectro/madvrwin.h | 0 spectro/mongoose.c | 0 spectro/mongoose.h | 0 spectro/munki.c | 5 +- spectro/munki.h | 2 +- spectro/munki_imp.c | 12 +- spectro/munki_imp.h | 3 +- spectro/oemarch.c | 1 + spectro/oemarch.h | 0 spectro/oeminst.c | 4 +- spectro/pollem.c | 0 spectro/pollem.h | 0 spectro/rspec.c | 7 +- spectro/rspec.h | 0 spectro/sa_conv.c | 0 spectro/sa_conv.h | 0 spectro/smcube.c | 7 +- spectro/smcube.h | 0 spectro/spec2cie.c | 159 +- spectro/specbos.c | 260 +- spectro/specbos.h | 3 + spectro/spotread.c | 153 +- spectro/spyd2.c | 72 +- spectro/spyd2.h | 0 spectro/ss.c | 71 +- spectro/ss.h | 0 spectro/ss_imp.c | 1 + spectro/ss_imp.h | 0 spectro/strange.cal | 2 +- spectro/synthcal.c | 0 spectro/synthread.c | 0 spectro/usbio.c | 1 + spectro/usbio.h | 0 spectro/usbio_bsd.c | 0 spectro/usbio_lx.c | 4 + spectro/usbio_nt.c | 6 + spectro/usbio_ox.c | 13 +- spectro/vinflate.c | 0 spectro/vtpglut.c | 570 +++ spectro/vtpglut.h | 243 ++ spectro/vtpgluttypes.h | 44 + spectro/webwin.c | 0 spectro/webwin.h | 0 spectro/xdg_bds.c | 52 +- spectro/xdg_bds.h | 7 + spectro/xrga.c | 1 + spectro/xrga.h | 0 target/ColorChecker.ti2 | 0 target/ECI2002.ti2 | 0 target/ECI2002R.ti2 | 0 target/FograStrip2.ti1 | 0 target/FograStrip2_2.ti2 | 0 target/FograStrip3.ti1 | 0 target/FograStrip3_3.ti2 | 0 target/Jamfile | 2 + target/License.txt | 0 target/Readme.txt | 0 target/afiles | 0 target/alphix.c | 0 target/alphix.h | 0 target/filmtarg.c | 0 target/i1_RGB_Scan_1.4.ti2 | 0 target/ifarp.c | 0 target/ifarp.h | 0 target/ofps.c | 8 +- target/ofps.h | 0 target/ppoint.c | 0 target/ppoint.h | 0 target/prand.c | 0 target/prand.h | 0 target/printtarg.c | 0 target/randix.c | 0 target/randix.h | 0 target/simdlat.c | 0 target/simdlat.h | 0 target/simplat.c | 0 target/simplat.h | 0 target/targen.c | 0 target/targen.h | 0 ttbd.txt | 0 tweak/Jamfile | 2 + tweak/License.txt | 0 tweak/Readme.txt | 0 tweak/afiles | 0 tweak/refine.c | 32 +- ucmm/Jamfile | 0 ucmm/afiles | 0 ucmm/ucmm.c | 615 ++- ucmm/ucmm.h | 11 +- usb/45-Argyll.rules | 3 + usb/55-Argyll.rules | 3 + usb/Argyll | 0 usb/Argyll.kext/Info.plist | 0 usb/Argyll.usermap | 0 usb/ArgyllCMS.cat | Bin 3551 -> 3635 bytes usb/ArgyllCMS.inf | 3 + usb/ArgyllCMS.inf.d | 1 + usb/ArgyllCMS.inf.t | 0 usb/ArgyllCMS_x64.cat | Bin 3535 -> 3619 bytes usb/Jamfile | 0 usb/afiles | 0 usb/binfiles.lx | 0 usb/binfiles.msw | 0 usb/binfiles.osx | 0 usb/driver/AUTHORS.txt | 0 usb/driver/COPYING_GPL.txt | 0 usb/driver/LICENSE.txt | 0 usb/driver/Makefile | 0 usb/driver/README.txt | 0 usb/driver/abort_endpoint.c | 0 usb/driver/claim_interface.c | 0 usb/driver/clear_feature.c | 0 usb/driver/dispatch.c | 0 usb/driver/driver_api.h | 0 usb/driver/driver_debug.c | 0 usb/driver/driver_debug.h | 0 usb/driver/driver_registry.c | 0 usb/driver/get_configuration.c | 0 usb/driver/get_descriptor.c | 0 usb/driver/get_interface.c | 0 usb/driver/get_status.c | 0 usb/driver/ioctl.c | 0 usb/driver/libusb-win32-README-1.2.6.0.txt | 0 usb/driver/libusb_driver.c | 0 usb/driver/libusb_driver.h | 0 usb/driver/libusb_driver_rc.rc | 0 usb/driver/lusb_defdi_guids.h | 0 usb/driver/pnp.c | 0 usb/driver/power.c | 0 usb/driver/release_interface.c | 0 usb/driver/reset_device.c | 0 usb/driver/reset_endpoint.c | 0 usb/driver/set_configuration.c | 0 usb/driver/set_descriptor.c | 0 usb/driver/set_feature.c | 0 usb/driver/set_interface.c | 0 usb/driver/transfer.c | 0 usb/driver/usbd.def | 0 usb/driver/usbdlib_gcc.h | 0 usb/driver/vendor_request.c | 0 usb/install_kext.sh | 0 xicc/Jamfile | 6 + xicc/License.txt | 0 xicc/Readme.txt | 0 xicc/afiles | 0 xicc/bt1886.c | 0 xicc/bt1886.h | 0 xicc/cam02.c | 127 +- xicc/cam02.h | 19 +- xicc/cam02plot.c | 8 +- xicc/cam02ref.h | 11 +- xicc/cam02test.c | 38 +- xicc/cam97s3.c | 0 xicc/cam97s3.h | 0 xicc/cam97test.c | 0 xicc/ccmx.c | 0 xicc/ccmx.h | 0 xicc/ccss.c | 0 xicc/ccss.h | 0 xicc/ccttest.c | 5 +- xicc/cgatsplot.c | 53 +- xicc/cv.c | 0 xicc/cvtest.c | 0 xicc/example.sp | 0 xicc/extracticc.c | 0 xicc/extractttag.c | 0 xicc/fakeCMY.c | 0 xicc/fbview.c | 0 xicc/iccgamut.c | 38 + xicc/iccjpeg.c | 0 xicc/iccjpeg.h | 0 xicc/icheck.c | 0 xicc/monctest.c | 0 xicc/moncurve.c | 0 xicc/moncurve.h | 0 xicc/mpp.c | 0 xicc/mpp.h | 0 xicc/mpplu.c | 30 +- xicc/revfix.c | 0 xicc/specplot.c | 12 +- xicc/specsubsamp.c | 40 +- xicc/spectest.c | 1 + xicc/spectest2.c | 1 + xicc/tiffgamut.c | 57 +- xicc/tiffgmts.c | 0 xicc/transplot.c | 0 xicc/xcal.c | 0 xicc/xcal.h | 0 xicc/xcam.c | 8 +- xicc/xcam.h | 5 +- xicc/xcolorants.c | 0 xicc/xcolorants.h | 0 xicc/xcolorantslu.c | 0 xicc/xdevlin.c | 0 xicc/xdevlin.h | 0 xicc/xdgb.c | 0 xicc/xdgb.h | 0 xicc/xfbview.c | 0 xicc/xfit.c | 1 + xicc/xfit.h | 1 + xicc/xicc.c | 72 +- xicc/xicc.h | 23 +- xicc/xicclu.c | 59 +- xicc/xlut.c | 41 +- xicc/xlutfix.c | 0 xicc/xmatrix.c | 16 +- xicc/xmono.c | 2 +- xicc/xspect.c | 4584 +++++++++----------- xicc/xspect.h | 78 +- xicc/xutils.c | 0 xicc/xutils.h | 0 xml/ANNOUNCEMENT | 0 xml/CHANGES | 0 xml/COPYING | 0 xml/Makefile.in | 0 xml/README | 0 xml/afiles | 0 xml/config.h.in | 0 xml/configure | 0 xml/configure.in | 0 xml/doc/Mini-XML.pdf | Bin xml/install-sh | 0 xml/mxml-attr.c | 0 xml/mxml-config.h | 0 xml/mxml-entity.c | 0 xml/mxml-file.c | 0 xml/mxml-get.c | 0 xml/mxml-index.c | 0 xml/mxml-node.c | 0 xml/mxml-private.c | 0 xml/mxml-private.h | 0 xml/mxml-search.c | 0 xml/mxml-set.c | 0 xml/mxml-string.c | 0 xml/mxml.h | 0 xml/mxml.list.in | 0 xml/mxml.pc.in | 0 xml/mxml.spec | 0 xml/mxml.xml | 0 xml/mxmldoc.c | 0 xml/test.xml | 0 xml/testmxml.c | 0 yajl/COPYING | 0 yajl/ChangeLog | 0 yajl/Jamfile | 0 yajl/README | 0 yajl/TODO | 0 yajl/afiles | 0 yajl/json_verify.c | 0 yajl/yajl.c | 0 yajl/yajl.h | 0 yajl/yajl_alloc.c | 0 yajl/yajl_alloc.h | 0 yajl/yajl_buf.c | 0 yajl/yajl_buf.h | 0 yajl/yajl_bytestack.h | 0 yajl/yajl_common.h | 0 yajl/yajl_encode.c | 0 yajl/yajl_encode.h | 0 yajl/yajl_gen.c | 0 yajl/yajl_gen.h | 4 + yajl/yajl_lex.c | 0 yajl/yajl_lex.h | 0 yajl/yajl_parse.h | 0 yajl/yajl_parser.c | 0 yajl/yajl_parser.h | 0 yajl/yajl_test.c | 0 yajl/yajl_tree.c | 0 yajl/yajl_tree.h | 0 yajl/yajl_version.c | 0 yajl/yajl_version.h | 0 ziparch.sh | 0 982 files changed, 17458 insertions(+), 7586 deletions(-) mode change 100644 => 100755 Jambase mode change 100644 => 100755 Jamfile mode change 100644 => 100755 Jamtop mode change 100644 => 100755 License.txt mode change 100644 => 100755 License2.txt mode change 100644 => 100755 License3.txt mode change 100644 => 100755 Makefile mode change 100644 => 100755 Readme.txt mode change 100644 => 100755 adirs mode change 100644 => 100755 afiles mode change 100644 => 100755 binfiles mode change 100644 => 100755 blddirs mode change 100644 => 100755 ccast/Jamfile mode change 100644 => 100755 ccast/License.txt mode change 100644 => 100755 ccast/axTLS/Jamfile mode change 100644 => 100755 ccast/axTLS/aes.c mode change 100644 => 100755 ccast/axTLS/asn1.c mode change 100644 => 100755 ccast/axTLS/axTLS_config.h mode change 100644 => 100755 ccast/axTLS/axTLS_version.h mode change 100644 => 100755 ccast/axTLS/bigint.c mode change 100644 => 100755 ccast/axTLS/bigint.h mode change 100644 => 100755 ccast/axTLS/bigint_impl.h mode change 100644 => 100755 ccast/axTLS/cert.h mode change 100644 => 100755 ccast/axTLS/crypto.h mode change 100644 => 100755 ccast/axTLS/crypto_misc.c mode change 100644 => 100755 ccast/axTLS/crypto_misc.h mode change 100644 => 100755 ccast/axTLS/gen_cert.c mode change 100644 => 100755 ccast/axTLS/hmac.c mode change 100644 => 100755 ccast/axTLS/loader.c mode change 100644 => 100755 ccast/axTLS/md2.c mode change 100644 => 100755 ccast/axTLS/md5.c mode change 100644 => 100755 ccast/axTLS/openssl.c mode change 100644 => 100755 ccast/axTLS/os_int.h mode change 100644 => 100755 ccast/axTLS/os_port.c mode change 100644 => 100755 ccast/axTLS/os_port.h mode change 100644 => 100755 ccast/axTLS/p12.c mode change 100644 => 100755 ccast/axTLS/private_key.h mode change 100644 => 100755 ccast/axTLS/rc4.c mode change 100644 => 100755 ccast/axTLS/rsa.c mode change 100644 => 100755 ccast/axTLS/sha1.c mode change 100644 => 100755 ccast/axTLS/ssl.h mode change 100644 => 100755 ccast/axTLS/temp mode change 100644 => 100755 ccast/axTLS/tls1.c mode change 100644 => 100755 ccast/axTLS/tls1.h mode change 100644 => 100755 ccast/axTLS/tls1_clnt.c mode change 100644 => 100755 ccast/axTLS/tls1_svr.c mode change 100644 => 100755 ccast/axTLS/x509.c mode change 100644 => 100755 ccast/cast_channel.proto mode change 100644 => 100755 ccast/ccast.c mode change 100644 => 100755 ccast/ccast.h mode change 100644 => 100755 ccast/ccmdns.c mode change 100644 => 100755 ccast/ccmdns.h mode change 100644 => 100755 ccast/ccmes.c mode change 100644 => 100755 ccast/ccmes.h mode change 100644 => 100755 ccast/ccpacket.c mode change 100644 => 100755 ccast/ccpacket.h mode change 100644 => 100755 ccast/cctest.c mode change 100644 => 100755 ccast/chan/cast_channel.pb-c.c mode change 100644 => 100755 ccast/chan/cast_channel.pb-c.h mode change 100644 => 100755 ccast/chan/protobuf-c.c mode change 100644 => 100755 ccast/chan/protobuf-c.h mode change 100644 => 100755 ccast/dpat.c mode change 100644 => 100755 ccast/filt.c mode change 100644 => 100755 cgats/Jamfile mode change 100644 => 100755 cgats/License4.txt mode change 100644 => 100755 cgats/Makefile mode change 100644 => 100755 cgats/Makefile.IBMNT mode change 100644 => 100755 cgats/Makefile.OSX mode change 100644 => 100755 cgats/Makefile.UNIX mode change 100644 => 100755 cgats/Makefile.WNT mode change 100644 => 100755 cgats/Readme.txt mode change 100644 => 100755 cgats/afiles mode change 100644 => 100755 cgats/cgats.c mode change 100644 => 100755 cgats/cgats.h mode change 100644 => 100755 cgats/cgatsstd.c mode change 100644 => 100755 cgats/makezip.ksh mode change 100644 => 100755 cgats/pars.c mode change 100644 => 100755 cgats/pars.h mode change 100644 => 100755 cgats/parsstd.c mode change 100644 => 100755 cgats/test.txt mode change 100644 => 100755 doc/3dformat.html mode change 100644 => 100755 doc/ArgyllCMS_arts_tag.html mode change 100644 => 100755 doc/ArgyllFlow.jpg mode change 100644 => 100755 doc/ArgyllFlowThumb.jpg mode change 100644 => 100755 doc/CMP_DT_003.jpg mode change 100644 => 100755 doc/CMP_Digital_Target-4.jpg mode change 100644 => 100755 doc/CMP_Digital_Target-7.jpg mode change 100644 => 100755 doc/CRTspectrum.jpg mode change 100644 => 100755 doc/Chroma4.jpg mode change 100644 => 100755 doc/ColorHug.jpg mode change 100644 => 100755 doc/ColorManagement.html mode change 100644 => 100755 doc/ColorMunki.jpg mode change 100644 => 100755 doc/ColorMunkiCreate.jpg mode change 100644 => 100755 doc/Compiling.html mode change 100644 => 100755 doc/CrushedDisplyBlacks.html mode change 100644 => 100755 doc/DC.jpg mode change 100644 => 100755 doc/DTP20.jpg mode change 100644 => 100755 doc/DTP22.jpg mode change 100644 => 100755 doc/DTP41.jpg mode change 100644 => 100755 doc/DTP51.jpg mode change 100644 => 100755 doc/DTP92.jpg mode change 100644 => 100755 doc/DTP94.jpg mode change 100644 => 100755 doc/DocLicense.txt mode change 100644 => 100755 doc/EX1.jpg mode change 100644 => 100755 doc/Environment.html mode change 100644 => 100755 doc/FWA.html mode change 100644 => 100755 doc/FWA_measure.jpg mode change 100644 => 100755 doc/File_Formats.html mode change 100644 => 100755 doc/Fluorescent.jpg mode change 100644 => 100755 doc/HCFR.jpg mode change 100644 => 100755 doc/HCT.jpg mode change 100644 => 100755 doc/HiResLaser.jpg mode change 100644 => 100755 doc/Huey.jpg mode change 100644 => 100755 doc/Installing.html mode change 100644 => 100755 doc/Installing_Linux.html mode change 100644 => 100755 doc/Installing_MSWindows.html mode change 100644 => 100755 doc/Installing_OSX.html mode change 100644 => 100755 doc/JETI_1211.jpg mode change 100644 => 100755 doc/JETI_1501.jpg mode change 100644 => 100755 doc/K10A.jpg mode change 100644 => 100755 doc/Kgraph1.jpg mode change 100644 => 100755 doc/Kgraph2.jpg mode change 100644 => 100755 doc/Kgraph3.jpg mode change 100644 => 100755 doc/Kgraph4.jpg mode change 100644 => 100755 doc/Kgraph5.jpg mode change 100644 => 100755 doc/Kgraph6.jpg mode change 100644 => 100755 doc/Kgraph7.jpg mode change 100644 => 100755 doc/Kgraph8.jpg mode change 100644 => 100755 doc/Kparams.jpg mode change 100644 => 100755 doc/LSDC.jpg mode change 100644 => 100755 doc/LabSteps.jpg mode change 100644 => 100755 doc/License.txt mode change 100644 => 100755 doc/License2.txt mode change 100644 => 100755 doc/License3.txt mode change 100644 => 100755 doc/License4.txt mode change 100644 => 100755 doc/Limitations.html mode change 100644 => 100755 doc/MinorTools.html mode change 100644 => 100755 doc/Organisation.html mode change 100644 => 100755 doc/Overview.html create mode 100755 doc/Passport.jpg mode change 100644 => 100755 doc/Performance.html mode change 100644 => 100755 doc/Q60.jpg mode change 100644 => 100755 doc/QPcard201.jpg mode change 100644 => 100755 doc/QPcard202.jpg mode change 100644 => 100755 doc/SG.jpg mode change 100644 => 100755 doc/SG_footer.txt mode change 100644 => 100755 doc/SG_header.txt mode change 100644 => 100755 doc/SMCube.jpg mode change 100644 => 100755 doc/Scenarios.html mode change 100644 => 100755 doc/Smile.jpg mode change 100644 => 100755 doc/Source.html mode change 100644 => 100755 doc/Spyd2.jpg mode change 100644 => 100755 doc/Spyd3.jpg mode change 100644 => 100755 doc/Spyd3x.jpg mode change 100644 => 100755 doc/Spyd4.jpg mode change 100644 => 100755 doc/Spyd5.jpg mode change 100644 => 100755 doc/SpyderChecker.jpg mode change 100644 => 100755 doc/SpyderChecker24.jpg mode change 100644 => 100755 doc/VideoEOTFs.html mode change 100644 => 100755 doc/WideGamutColmters.html mode change 100644 => 100755 doc/XRGA.html mode change 100644 => 100755 doc/YellowGreen.jpg mode change 100644 => 100755 doc/afiles mode change 100644 => 100755 doc/applycal.html mode change 100644 => 100755 doc/average.html mode change 100644 => 100755 doc/cal_format.html mode change 100644 => 100755 doc/calvschar.html mode change 100644 => 100755 doc/cb2ti3.html mode change 100644 => 100755 doc/ccmxs.html mode change 100644 => 100755 doc/ccmxs/DTP-94_1964_10_Dell_2408W.ccmx mode change 100644 => 100755 doc/ccmxs/DTP-94_1997_Shaw_Dell_2408W.ccmx mode change 100644 => 100755 doc/ccmxs/DTP-94_Dell_2408W.ccmx mode change 100644 => 100755 doc/ccmxs/DTP-94_Dell_U2410.ccmx mode change 100644 => 100755 doc/ccmxs/EyeOne_Display_1_NEC1990SXi.ccmx mode change 100644 => 100755 doc/ccmxs/EyeOne_Display_2_EIZO_S2233W.ccmx mode change 100644 => 100755 doc/ccmxs/EyeOne_Display_2_NEC1990SXi.ccmx mode change 100644 => 100755 doc/ccmxs/EyeOne_Display_LT_U2410_Standard_1931.ccmx mode change 100644 => 100755 doc/ccmxs/EyeOne_Display_LT_U2410_Standard_1964.ccmx mode change 100644 => 100755 doc/ccmxs/EyeOne_Display_LT_U2410_sRGB_1931.ccmx mode change 100644 => 100755 doc/ccmxs/EyeOne_Display_LT_U2410_sRGB_1964.ccmx mode change 100644 => 100755 doc/ccmxs/Huey_Acer_al2016w.ccmx mode change 100644 => 100755 doc/ccmxs/Huey_Eizo_CG243.ccmx mode change 100644 => 100755 doc/ccmxs/Huey_HP_compaq_6730s.ccmx mode change 100644 => 100755 doc/ccmxs/Huey_HP_lp2475w.ccmx mode change 100644 => 100755 doc/ccmxs/Huey_NEC1990SXi.ccmx mode change 100644 => 100755 doc/ccmxs/Huey_NEC_Spectraview_241.ccmx mode change 100644 => 100755 doc/ccmxs/NEC_EyeOne_Display_2_NEC2690WUXi2.ccmx mode change 100644 => 100755 doc/ccmxs/Spyder2_EIZO_S2433W_standard_1931.ccmx mode change 100644 => 100755 doc/ccmxs/Spyder2_EIZO_S2433W_standard_1964.ccmx mode change 100644 => 100755 doc/ccmxs/Spyder3_EIZO_S2233_standard_1964.ccmx mode change 100644 => 100755 doc/ccmxs/Spyder3_EIZO_S2243W_standard_1931.ccmx mode change 100644 => 100755 doc/ccmxs/Spyder3_HP_LP2475w.ccmx mode change 100644 => 100755 doc/ccmxs/Spyder3_NEC2690WUXi2.ccmx mode change 100644 => 100755 doc/ccmxs/Spyder3_NEC_PA301W.ccmx create mode 100755 doc/ccsss.html create mode 100755 doc/ccsss/MacBookProRetina2016.ccss mode change 100644 => 100755 doc/cctiff.html mode change 100644 => 100755 doc/ccxxmake.html mode change 100644 => 100755 doc/chartread.html mode change 100644 => 100755 doc/cht_format.html mode change 100644 => 100755 doc/collink.html mode change 100644 => 100755 doc/colorchecker.jpg mode change 100644 => 100755 doc/colprof.html mode change 100644 => 100755 doc/colverify.html mode change 100644 => 100755 doc/cube.jpg mode change 100644 => 100755 doc/dispcal.html mode change 100644 => 100755 doc/dispprofloc.html mode change 100644 => 100755 doc/dispread.html mode change 100644 => 100755 doc/dispwin.html mode change 100644 => 100755 doc/evalInputTargets.html mode change 100644 => 100755 doc/extracticc.html mode change 100644 => 100755 doc/extractttag.html mode change 100644 => 100755 doc/fakeCMY.html mode change 100644 => 100755 doc/fakeread.html mode change 100644 => 100755 doc/filmread.html mode change 100644 => 100755 doc/filmtarg.html mode change 100644 => 100755 doc/gamma.html mode change 100644 => 100755 doc/gamutmapping1.jpg mode change 100644 => 100755 doc/greytiff.html mode change 100644 => 100755 doc/i1d.jpg mode change 100644 => 100755 doc/i1d3_1.jpg mode change 100644 => 100755 doc/i1d3_2.jpg mode change 100644 => 100755 doc/i1m.jpg mode change 100644 => 100755 doc/i1p.jpg mode change 100644 => 100755 doc/i1pro2.jpg mode change 100644 => 100755 doc/i1proDriver.html mode change 100644 => 100755 doc/i1proDriver.xls mode change 100644 => 100755 doc/i1proHiRes.html mode change 100644 => 100755 doc/i1proHiRes.jpg mode change 100644 => 100755 doc/i1proHiRes.zip mode change 100644 => 100755 doc/i1scan14.jpg mode change 100644 => 100755 doc/iccdump.html mode change 100644 => 100755 doc/iccgamut.html mode change 100644 => 100755 doc/iccgamutmapping.html mode change 100644 => 100755 doc/icclu.html mode change 100644 => 100755 doc/illumread.html mode change 100644 => 100755 doc/illumread_1.jpg mode change 100644 => 100755 doc/illumread_2.jpg mode change 100644 => 100755 doc/illumread_3.jpg mode change 100644 => 100755 doc/illumread_4.jpg mode change 100644 => 100755 doc/illumread_5.jpg mode change 100644 => 100755 doc/illumread_6.jpg create mode 100755 doc/inoutreferred.html mode change 100644 => 100755 doc/instruments.html mode change 100644 => 100755 doc/invprofcheck.html mode change 100644 => 100755 doc/kodak2ti3.html create mode 100755 doc/ls2ti3.html mode change 100644 => 100755 doc/monitorcontrols.html mode change 100644 => 100755 doc/mox.jpg mode change 100644 => 100755 doc/moxxr.jpg mode change 100644 => 100755 doc/mppcheck.html mode change 100644 => 100755 doc/mpplu.html mode change 100644 => 100755 doc/mppprof.html mode change 100644 => 100755 doc/oeminst.html mode change 100644 => 100755 doc/printcal.html mode change 100644 => 100755 doc/printtarg.html mode change 100644 => 100755 doc/profcheck.html mode change 100644 => 100755 doc/refine.html mode change 100644 => 100755 doc/revfix.html mode change 100644 => 100755 doc/scanin.html mode change 100644 => 100755 doc/sl.jpg mode change 100644 => 100755 doc/spec2cie.html mode change 100644 => 100755 doc/specplot.html mode change 100644 => 100755 doc/splitti3.html mode change 100644 => 100755 doc/spotread.html mode change 100644 => 100755 doc/srgbplot.gif mode change 100644 => 100755 doc/ss.jpg mode change 100644 => 100755 doc/surface.jpg mode change 100644 => 100755 doc/synthcal.html mode change 100644 => 100755 doc/synthread.html mode change 100644 => 100755 doc/targen.html mode change 100644 => 100755 doc/ti3_format.html mode change 100644 => 100755 doc/tiffgamut.html mode change 100644 => 100755 doc/timage.html mode change 100644 => 100755 doc/txt2ti3.html mode change 100644 => 100755 doc/ucmm.html mode change 100644 => 100755 doc/viewgam.html mode change 100644 => 100755 doc/xicclu.html mode change 100644 => 100755 gamut/GenRMGam.c mode change 100644 => 100755 gamut/GenVisGam.c mode change 100644 => 100755 gamut/Jamfile mode change 100644 => 100755 gamut/License.txt mode change 100644 => 100755 gamut/Readme.txt mode change 100644 => 100755 gamut/afiles mode change 100644 => 100755 gamut/fakegam.c mode change 100644 => 100755 gamut/gammap.c mode change 100644 => 100755 gamut/gammap.h mode change 100644 => 100755 gamut/gammap.txt mode change 100644 => 100755 gamut/gamut.c mode change 100644 => 100755 gamut/gamut.h mode change 100644 => 100755 gamut/isecvol.c mode change 100644 => 100755 gamut/maptest.c mode change 100644 => 100755 gamut/nearsmth.c mode change 100644 => 100755 gamut/nearsmth.h mode change 100644 => 100755 gamut/smthtest.c mode change 100644 => 100755 gamut/surftest.c mode change 100644 => 100755 gamut/viewgam.c mode change 100644 => 100755 h/License.txt mode change 100644 => 100755 h/Readme.txt mode change 100644 => 100755 h/aconfig.h mode change 100644 => 100755 h/afiles mode change 100644 => 100755 h/copyright.h mode change 100644 => 100755 h/counters.h mode change 100644 => 100755 h/llist.h mode change 100644 => 100755 h/sort.h mode change 100644 => 100755 h/xlist.h mode change 100644 => 100755 icc/ClayRGB1998.icm mode change 100644 => 100755 icc/EBU3213_PAL.icm mode change 100644 => 100755 icc/Jamfile mode change 100644 => 100755 icc/License4.txt mode change 100644 => 100755 icc/Makefile mode change 100644 => 100755 icc/Makefile.IBMNT mode change 100644 => 100755 icc/Makefile.OSX mode change 100644 => 100755 icc/Makefile.UNIX mode change 100644 => 100755 icc/Makefile.WNT mode change 100644 => 100755 icc/ProPhoto.icm mode change 100644 => 100755 icc/ProPhotoLin.icm mode change 100644 => 100755 icc/Readme.txt mode change 100644 => 100755 icc/Rec2020.icm mode change 100644 => 100755 icc/Rec709.icm mode change 100644 => 100755 icc/SMPTE431_P3.icm mode change 100644 => 100755 icc/SMPTE_RP145_NTSC.icm mode change 100644 => 100755 icc/afiles mode change 100644 => 100755 icc/icc.c mode change 100644 => 100755 icc/icc.h mode change 100644 => 100755 icc/iccV42.h mode change 100644 => 100755 icc/iccdump.c mode change 100644 => 100755 icc/icclu.c mode change 100644 => 100755 icc/iccrw.c mode change 100644 => 100755 icc/iccstd.c mode change 100644 => 100755 icc/icctest.c mode change 100644 => 100755 icc/lab2lab.icm mode change 100644 => 100755 icc/log.txt mode change 100644 => 100755 icc/lutest.c mode change 100644 => 100755 icc/mcheck.c mode change 100644 => 100755 icc/mkDispProf.c mode change 100644 => 100755 icc/sRGB.icm mode change 100644 => 100755 icc/testDE2K.c mode change 100644 => 100755 icc/todo.txt mode change 100644 => 100755 imdi/Jamfile mode change 100644 => 100755 imdi/License.txt mode change 100644 => 100755 imdi/Makefile mode change 100644 => 100755 imdi/Makefile.OSX mode change 100644 => 100755 imdi/Makefile.UNIX mode change 100644 => 100755 imdi/Makefile.WNT mode change 100644 => 100755 imdi/Readme.txt mode change 100644 => 100755 imdi/afiles mode change 100644 => 100755 imdi/cctiff.c mode change 100644 => 100755 imdi/cctiffo.c mode change 100644 => 100755 imdi/cgen.c mode change 100644 => 100755 imdi/ctest.c mode change 100644 => 100755 imdi/greytiff.c mode change 100644 => 100755 imdi/imdi.c mode change 100644 => 100755 imdi/imdi.h mode change 100644 => 100755 imdi/imdi_arch.h mode change 100644 => 100755 imdi/imdi_gen.c mode change 100644 => 100755 imdi/imdi_gen.h mode change 100644 => 100755 imdi/imdi_make.c mode change 100644 => 100755 imdi/imdi_tab.c mode change 100644 => 100755 imdi/imdi_tab.h mode change 100644 => 100755 imdi/imdi_utl.h mode change 100644 => 100755 imdi/itest.c mode change 100644 => 100755 imdi/refi.c mode change 100644 => 100755 imdi/refi.h mode change 100644 => 100755 imdi/ssort.c mode change 100644 => 100755 install.bat mode change 100644 => 100755 jam.patch mode change 100644 => 100755 jcnf/Jamfile mode change 100644 => 100755 jcnf/Readme.txt mode change 100644 => 100755 jcnf/afiles mode change 100644 => 100755 jcnf/jcnf.c mode change 100644 => 100755 jcnf/jcnf.h mode change 100644 => 100755 jcnf/test.c mode change 100644 => 100755 jcnf/test.jcnf mode change 100644 => 100755 lib/Readme.txt mode change 100644 => 100755 lib/afiles mode change 100644 => 100755 link/collink.c mode change 100644 => 100755 link/monoplot.c mode change 100644 => 100755 link/pathplot.c mode change 100644 => 100755 log.txt mode change 100644 => 100755 makeall.bat mode change 100644 => 100755 makeall.sh mode change 100644 => 100755 makeinstall.sh mode change 100644 => 100755 makeoemdnldbin.sh mode change 100644 => 100755 makepackagebin.sh mode change 100644 => 100755 namedc/Jamfile mode change 100644 => 100755 namedc/License.txt mode change 100644 => 100755 namedc/afiles mode change 100644 => 100755 namedc/namedc.c mode change 100644 => 100755 namedc/namedc.h mode change 100644 => 100755 namedc/txt2iccnc.c mode change 100644 => 100755 notes.txt mode change 100644 => 100755 numlib/Jamfile mode change 100644 => 100755 numlib/LUtest.c mode change 100644 => 100755 numlib/License.txt mode change 100644 => 100755 numlib/Readme.txt mode change 100644 => 100755 numlib/aatree.c mode change 100644 => 100755 numlib/aatree.h mode change 100644 => 100755 numlib/afiles mode change 100644 => 100755 numlib/dhsx.c mode change 100644 => 100755 numlib/dhsx.h mode change 100644 => 100755 numlib/dnsq.c mode change 100644 => 100755 numlib/dnsq.h mode change 100644 => 100755 numlib/dnsqtest.c mode change 100644 => 100755 numlib/ludecomp.c mode change 100644 => 100755 numlib/ludecomp.h mode change 100644 => 100755 numlib/numlib.h mode change 100644 => 100755 numlib/numsup.c mode change 100644 => 100755 numlib/numsup.h mode change 100644 => 100755 numlib/powell.c mode change 100644 => 100755 numlib/powell.h create mode 100755 numlib/qptest.c create mode 100755 numlib/quadprog.c create mode 100755 numlib/quadprog.h mode change 100644 => 100755 numlib/rand.c mode change 100644 => 100755 numlib/rand.h mode change 100644 => 100755 numlib/sobol.c mode change 100644 => 100755 numlib/sobol.h mode change 100644 => 100755 numlib/soboltest.c mode change 100644 => 100755 numlib/svd.c mode change 100644 => 100755 numlib/svd.h mode change 100644 => 100755 numlib/svdtest.c mode change 100644 => 100755 numlib/tdhsx.c mode change 100644 => 100755 numlib/tpowell.c mode change 100644 => 100755 numlib/ui.c mode change 100644 => 100755 numlib/ui.h create mode 100755 numlib/varmet.c create mode 100755 numlib/varmet.h mode change 100644 => 100755 numlib/zbrent.c mode change 100644 => 100755 numlib/zbrent.h mode change 100644 => 100755 numlib/zbrenttest.c mode change 100644 => 100755 plot/Imakefile mode change 100644 => 100755 plot/Jamfile mode change 100644 => 100755 plot/License.txt mode change 100644 => 100755 plot/Readme.txt mode change 100644 => 100755 plot/X3DOM_LICENSE.txt mode change 100644 => 100755 plot/afiles mode change 100644 => 100755 plot/plot.c mode change 100644 => 100755 plot/plot.h mode change 100644 => 100755 plot/vrml.c mode change 100644 => 100755 plot/vrml.h mode change 100644 => 100755 plot/x3dom.css mode change 100644 => 100755 plot/x3dom.css.h mode change 100644 => 100755 plot/x3dom.js mode change 100644 => 100755 plot/x3dom.js.h mode change 100644 => 100755 profile/applycal.c mode change 100644 => 100755 profile/cb2ti3.c mode change 100644 => 100755 profile/colprof.c mode change 100644 => 100755 profile/colverify.c mode change 100644 => 100755 profile/invprofcheck.c mode change 100644 => 100755 profile/kodak2ti3.c mode change 100644 => 100755 profile/ls2ti3.c mode change 100644 => 100755 profile/mppcheck.c mode change 100644 => 100755 profile/mppprof.c mode change 100644 => 100755 profile/printcal.c mode change 100644 => 100755 profile/prof.h mode change 100644 => 100755 profile/profcheck.c mode change 100644 => 100755 profile/profin.c mode change 100644 => 100755 profile/profout.c mode change 100644 => 100755 profile/simpprof.c mode change 100644 => 100755 profile/splitti3.c mode change 100644 => 100755 profile/txt2ti3.c mode change 100644 => 100755 ref/3dap5k.sp mode change 100644 => 100755 ref/CIE_C.sp mode change 100644 => 100755 ref/CMP_DT_003.cht mode change 100644 => 100755 ref/CMP_Digital_Target-4.cht mode change 100644 => 100755 ref/CMP_Digital_Target-4.cie mode change 100644 => 100755 ref/CMP_Digital_Target-4.ti2 mode change 100644 => 100755 ref/CMP_Digital_Target-7.cht mode change 100644 => 100755 ref/CRT.ccss mode change 100644 => 100755 ref/ClayRGB1998.icm mode change 100644 => 100755 ref/ColorChecker.cht mode change 100644 => 100755 ref/ColorChecker.cie mode change 100644 => 100755 ref/ColorChecker.ti2 mode change 100644 => 100755 ref/ColorCheckerDC.cht mode change 100644 => 100755 ref/ColorCheckerDC.ti2 mode change 100644 => 100755 ref/ColorCheckerPassport.cht mode change 100644 => 100755 ref/ColorCheckerPassport.cie mode change 100644 => 100755 ref/ColorCheckerSG.cht mode change 100644 => 100755 ref/ColorCheckerSG.ti2 mode change 100644 => 100755 ref/D50_0.0.sp mode change 100644 => 100755 ref/D50_0.1.sp mode change 100644 => 100755 ref/D50_0.3.sp mode change 100644 => 100755 ref/D50_0.5.sp mode change 100644 => 100755 ref/D50_0.7.sp mode change 100644 => 100755 ref/D50_1.0.sp mode change 100644 => 100755 ref/D50_1.2.sp mode change 100644 => 100755 ref/D50_1.5.sp mode change 100644 => 100755 ref/D50_1.7.sp mode change 100644 => 100755 ref/D50_2.0.sp mode change 100644 => 100755 ref/D50_2.5.sp mode change 100644 => 100755 ref/D50_3.0.sp mode change 100644 => 100755 ref/EBU3213_PAL.icm mode change 100644 => 100755 ref/ECI2002.ti2 mode change 100644 => 100755 ref/ECI2002R.ti2 mode change 100644 => 100755 ref/F1.sp mode change 100644 => 100755 ref/F5.sp mode change 100644 => 100755 ref/F8.sp mode change 100644 => 100755 ref/FograStrip2.ti1 mode change 100644 => 100755 ref/FograStrip2_2.ti2 mode change 100644 => 100755 ref/FograStrip3.ti1 mode change 100644 => 100755 ref/FograStrip3_3.ti2 mode change 100644 => 100755 ref/GTIPlus.sp mode change 100644 => 100755 ref/Hutchcolor.cht mode change 100644 => 100755 ref/LaserSoftDCPro.cht mode change 100644 => 100755 ref/License.txt mode change 100644 => 100755 ref/Office.sp mode change 100644 => 100755 ref/ProPhoto.icm mode change 100644 => 100755 ref/ProPhotoLin.icm mode change 100644 => 100755 ref/QPcard_201.cht mode change 100644 => 100755 ref/QPcard_201.cie mode change 100644 => 100755 ref/QPcard_202.cht mode change 100644 => 100755 ref/QPcard_202.cie mode change 100644 => 100755 ref/ReadMe.txt mode change 100644 => 100755 ref/Rec2020.icm mode change 100644 => 100755 ref/Rec709.icm mode change 100644 => 100755 ref/SMPTE431_P3.icm mode change 100644 => 100755 ref/SMPTE_RP145_NTSC.icm mode change 100644 => 100755 ref/SOtele.sp mode change 100644 => 100755 ref/SpyderChecker.cht mode change 100644 => 100755 ref/SpyderChecker.cie mode change 100644 => 100755 ref/SpyderChecker24.cht mode change 100644 => 100755 ref/SpyderChecker24.cie create mode 100644 ref/StandardObs2deg.cmf mode change 100644 => 100755 ref/Trulux.sp mode change 100644 => 100755 ref/TruluxPlus.sp mode change 100644 => 100755 ref/afiles mode change 100644 => 100755 ref/ccxx.ti1 mode change 100644 => 100755 ref/cmyk.icm mode change 100644 => 100755 ref/example.sp mode change 100644 => 100755 ref/example121.sp mode change 100644 => 100755 ref/i1_RGB_Scan_1.4.cht mode change 100644 => 100755 ref/i1_RGB_Scan_1.4.ti2 mode change 100644 => 100755 ref/it8.cht mode change 100644 => 100755 ref/lab2lab.icm mode change 100644 => 100755 ref/linear.cal mode change 100644 => 100755 ref/sRGB.icm mode change 100644 => 100755 ref/strange.cal mode change 100644 => 100755 render/Jamfile mode change 100644 => 100755 render/License.txt mode change 100644 => 100755 render/Readme.txt mode change 100644 => 100755 render/afiles mode change 100644 => 100755 render/makecharts.ksh mode change 100644 => 100755 render/render.c mode change 100644 => 100755 render/render.h mode change 100644 => 100755 render/screens.h mode change 100644 => 100755 render/thscreen.c mode change 100644 => 100755 render/thscreen.h mode change 100644 => 100755 render/timage.c mode change 100644 => 100755 rspl/c1.c mode change 100644 => 100755 rspl/c1df.c mode change 100644 => 100755 rspl/cw1.c mode change 100644 => 100755 rspl/cw3.c mode change 100644 => 100755 rspl/gam.c mode change 100644 => 100755 rspl/gam.h mode change 100644 => 100755 rspl/mlbs.c mode change 100644 => 100755 rspl/mlbs.h mode change 100644 => 100755 rspl/opt.c mode change 100644 => 100755 rspl/rev.c mode change 100644 => 100755 rspl/rev.h mode change 100644 => 100755 rspl/revbench.c mode change 100644 => 100755 rspl/rspl.c mode change 100644 => 100755 rspl/rspl.h mode change 100644 => 100755 rspl/rspl1.c mode change 100644 => 100755 rspl/rspl1.h mode change 100644 => 100755 rspl/rspl_imp.h mode change 100644 => 100755 rspl/scat.c mode change 100644 => 100755 rspl/scat2.c mode change 100644 => 100755 rspl/sm1.c mode change 100644 => 100755 rspl/sm2.c mode change 100644 => 100755 rspl/sm3.c mode change 100644 => 100755 rspl/smtmpp.c mode change 100644 => 100755 rspl/smtnd.c mode change 100644 => 100755 rspl/spline.c mode change 100644 => 100755 rspl/stest.c mode change 100644 => 100755 rspl/t2d.c mode change 100644 => 100755 rspl/t2ddf.c mode change 100644 => 100755 rspl/t3d.c mode change 100644 => 100755 rspl/t3ddf.c mode change 100644 => 100755 rspl/tnd.c mode change 100644 => 100755 rspl/trnd.c mode change 100644 => 100755 scanin/CMP_DT_003.cht mode change 100644 => 100755 scanin/CMP_Digital_Target-4.cht mode change 100644 => 100755 scanin/CMP_Digital_Target-4.cie mode change 100644 => 100755 scanin/CMP_Digital_Target-4.ti2 mode change 100644 => 100755 scanin/CMP_Digital_Target-7.cht mode change 100644 => 100755 scanin/ColorChecker.cht mode change 100644 => 100755 scanin/ColorChecker.cie mode change 100644 => 100755 scanin/ColorCheckerDC.cht mode change 100644 => 100755 scanin/ColorCheckerDC.ti2 create mode 100755 scanin/ColorCheckerHalfPassport.cht create mode 100755 scanin/ColorCheckerHalfPassport.cie mode change 100644 => 100755 scanin/ColorCheckerPassport.cht mode change 100644 => 100755 scanin/ColorCheckerPassport.cie mode change 100644 => 100755 scanin/ColorCheckerSG.cht mode change 100644 => 100755 scanin/ColorCheckerSG.ti2 mode change 100644 => 100755 scanin/Hutchcolor.cht mode change 100644 => 100755 scanin/Jamfile mode change 100644 => 100755 scanin/LaserSoftDCPro.cht mode change 100644 => 100755 scanin/License.txt mode change 100644 => 100755 scanin/QPcard_201.cht mode change 100644 => 100755 scanin/QPcard_201.cie mode change 100644 => 100755 scanin/QPcard_202.cht mode change 100644 => 100755 scanin/QPcard_202.cie mode change 100644 => 100755 scanin/Readme.txt mode change 100644 => 100755 scanin/SpyderChecker.cht mode change 100644 => 100755 scanin/SpyderChecker.cie mode change 100644 => 100755 scanin/SpyderChecker24.cht mode change 100644 => 100755 scanin/SpyderChecker24.cie mode change 100644 => 100755 scanin/afiles mode change 100644 => 100755 scanin/i1_RGB_Scan_1.4.cht mode change 100644 => 100755 scanin/it8.cht mode change 100644 => 100755 scanin/scanin.c mode change 100644 => 100755 scanin/scanrd.c mode change 100644 => 100755 scanin/scanrd.h mode change 100644 => 100755 scanin/scanrd_.h mode change 100644 => 100755 spectro/IntsLib_Readme.txt mode change 100644 => 100755 spectro/Jamfile mode change 100644 => 100755 spectro/License.txt mode change 100644 => 100755 spectro/License2.txt mode change 100644 => 100755 spectro/License3.txt mode change 100644 => 100755 spectro/LzmaDec.c mode change 100644 => 100755 spectro/LzmaDec.h mode change 100644 => 100755 spectro/LzmaTypes.h mode change 100644 => 100755 spectro/Makefile.OSX mode change 100644 => 100755 spectro/Makefile.SA mode change 100644 => 100755 spectro/Makefile.UNIX mode change 100644 => 100755 spectro/Makefile.WNT mode change 100644 => 100755 spectro/Readme.txt mode change 100644 => 100755 spectro/SOtele.sp mode change 100644 => 100755 spectro/afiles mode change 100644 => 100755 spectro/aglob.c mode change 100644 => 100755 spectro/aglob.h mode change 100644 => 100755 spectro/average.c mode change 100644 => 100755 spectro/base64.c mode change 100644 => 100755 spectro/base64.h mode change 100644 => 100755 spectro/ccwin.c mode change 100644 => 100755 spectro/ccwin.h mode change 100644 => 100755 spectro/ccxx.ti1 mode change 100644 => 100755 spectro/ccxxmake.c mode change 100644 => 100755 spectro/chartread.c mode change 100644 => 100755 spectro/colorhug.c mode change 100644 => 100755 spectro/colorhug.h mode change 100644 => 100755 spectro/conv.c mode change 100644 => 100755 spectro/conv.h mode change 100644 => 100755 spectro/cubecal.h mode change 100644 => 100755 spectro/dev.h mode change 100644 => 100755 spectro/dispcal.c mode change 100644 => 100755 spectro/dispread.c mode change 100644 => 100755 spectro/dispsup.c mode change 100644 => 100755 spectro/dispsup.h mode change 100644 => 100755 spectro/disptechs.c mode change 100644 => 100755 spectro/disptechs.h mode change 100644 => 100755 spectro/dispwin.c mode change 100644 => 100755 spectro/dispwin.h mode change 100644 => 100755 spectro/dtp20.c mode change 100644 => 100755 spectro/dtp20.h mode change 100644 => 100755 spectro/dtp22.c mode change 100644 => 100755 spectro/dtp22.h mode change 100644 => 100755 spectro/dtp41.c mode change 100644 => 100755 spectro/dtp41.h mode change 100644 => 100755 spectro/dtp51.c mode change 100644 => 100755 spectro/dtp51.h mode change 100644 => 100755 spectro/dtp92.c mode change 100644 => 100755 spectro/dtp92.h mode change 100644 => 100755 spectro/ex1.c mode change 100644 => 100755 spectro/ex1.h mode change 100644 => 100755 spectro/fakeread.c mode change 100644 => 100755 spectro/hcfr.c mode change 100644 => 100755 spectro/hcfr.h mode change 100644 => 100755 spectro/hidio.c mode change 100644 => 100755 spectro/hidio.h mode change 100644 => 100755 spectro/huey.c mode change 100644 => 100755 spectro/huey.h mode change 100644 => 100755 spectro/i1d3.c mode change 100644 => 100755 spectro/i1d3.h mode change 100644 => 100755 spectro/i1disp.c mode change 100644 => 100755 spectro/i1disp.h mode change 100644 => 100755 spectro/i1pro.c mode change 100644 => 100755 spectro/i1pro.h mode change 100644 => 100755 spectro/i1pro_imp.c mode change 100644 => 100755 spectro/i1pro_imp.h mode change 100644 => 100755 spectro/icoms.c mode change 100644 => 100755 spectro/icoms.h mode change 100644 => 100755 spectro/icoms_nt.c mode change 100644 => 100755 spectro/icoms_ux.c mode change 100644 => 100755 spectro/ifiles mode change 100644 => 100755 spectro/illumread.c mode change 100644 => 100755 spectro/inflate.c mode change 100644 => 100755 spectro/inst.c mode change 100644 => 100755 spectro/inst.h mode change 100644 => 100755 spectro/instappsup.c mode change 100644 => 100755 spectro/instappsup.h mode change 100644 => 100755 spectro/instlib.ksh mode change 100644 => 100755 spectro/instlib.txt mode change 100644 => 100755 spectro/insttypeinst.h mode change 100644 => 100755 spectro/insttypes.c mode change 100644 => 100755 spectro/insttypes.h mode change 100644 => 100755 spectro/iusb.h mode change 100644 => 100755 spectro/kleink10.c mode change 100644 => 100755 spectro/kleink10.h mode change 100644 => 100755 spectro/linear.cal mode change 100644 => 100755 spectro/linear.sp mode change 100644 => 100755 spectro/madvrwin.c mode change 100644 => 100755 spectro/madvrwin.h mode change 100644 => 100755 spectro/mongoose.c mode change 100644 => 100755 spectro/mongoose.h mode change 100644 => 100755 spectro/munki.c mode change 100644 => 100755 spectro/munki.h mode change 100644 => 100755 spectro/munki_imp.c mode change 100644 => 100755 spectro/munki_imp.h mode change 100644 => 100755 spectro/oemarch.c mode change 100644 => 100755 spectro/oemarch.h mode change 100644 => 100755 spectro/oeminst.c mode change 100644 => 100755 spectro/pollem.c mode change 100644 => 100755 spectro/pollem.h mode change 100644 => 100755 spectro/rspec.c mode change 100644 => 100755 spectro/rspec.h mode change 100644 => 100755 spectro/sa_conv.c mode change 100644 => 100755 spectro/sa_conv.h mode change 100644 => 100755 spectro/smcube.c mode change 100644 => 100755 spectro/smcube.h mode change 100644 => 100755 spectro/spec2cie.c mode change 100644 => 100755 spectro/specbos.c mode change 100644 => 100755 spectro/specbos.h mode change 100644 => 100755 spectro/spotread.c mode change 100644 => 100755 spectro/spyd2.c mode change 100644 => 100755 spectro/spyd2.h mode change 100644 => 100755 spectro/ss.c mode change 100644 => 100755 spectro/ss.h mode change 100644 => 100755 spectro/ss_imp.c mode change 100644 => 100755 spectro/ss_imp.h mode change 100644 => 100755 spectro/strange.cal mode change 100644 => 100755 spectro/synthcal.c mode change 100644 => 100755 spectro/synthread.c mode change 100644 => 100755 spectro/usbio.c mode change 100644 => 100755 spectro/usbio.h mode change 100644 => 100755 spectro/usbio_bsd.c mode change 100644 => 100755 spectro/usbio_lx.c mode change 100644 => 100755 spectro/usbio_nt.c mode change 100644 => 100755 spectro/usbio_ox.c mode change 100644 => 100755 spectro/vinflate.c create mode 100755 spectro/vtpglut.c create mode 100755 spectro/vtpglut.h create mode 100755 spectro/vtpgluttypes.h mode change 100644 => 100755 spectro/webwin.c mode change 100644 => 100755 spectro/webwin.h mode change 100644 => 100755 spectro/xdg_bds.c mode change 100644 => 100755 spectro/xdg_bds.h mode change 100644 => 100755 spectro/xrga.c mode change 100644 => 100755 spectro/xrga.h mode change 100644 => 100755 target/ColorChecker.ti2 mode change 100644 => 100755 target/ECI2002.ti2 mode change 100644 => 100755 target/ECI2002R.ti2 mode change 100644 => 100755 target/FograStrip2.ti1 mode change 100644 => 100755 target/FograStrip2_2.ti2 mode change 100644 => 100755 target/FograStrip3.ti1 mode change 100644 => 100755 target/FograStrip3_3.ti2 mode change 100644 => 100755 target/Jamfile mode change 100644 => 100755 target/License.txt mode change 100644 => 100755 target/Readme.txt mode change 100644 => 100755 target/afiles mode change 100644 => 100755 target/alphix.c mode change 100644 => 100755 target/alphix.h mode change 100644 => 100755 target/filmtarg.c mode change 100644 => 100755 target/i1_RGB_Scan_1.4.ti2 mode change 100644 => 100755 target/ifarp.c mode change 100644 => 100755 target/ifarp.h mode change 100644 => 100755 target/ofps.c mode change 100644 => 100755 target/ofps.h mode change 100644 => 100755 target/ppoint.c mode change 100644 => 100755 target/ppoint.h mode change 100644 => 100755 target/prand.c mode change 100644 => 100755 target/prand.h mode change 100644 => 100755 target/printtarg.c mode change 100644 => 100755 target/randix.c mode change 100644 => 100755 target/randix.h mode change 100644 => 100755 target/simdlat.c mode change 100644 => 100755 target/simdlat.h mode change 100644 => 100755 target/simplat.c mode change 100644 => 100755 target/simplat.h mode change 100644 => 100755 target/targen.c mode change 100644 => 100755 target/targen.h mode change 100644 => 100755 ttbd.txt mode change 100644 => 100755 tweak/Jamfile mode change 100644 => 100755 tweak/License.txt mode change 100644 => 100755 tweak/Readme.txt mode change 100644 => 100755 tweak/afiles mode change 100644 => 100755 tweak/refine.c mode change 100644 => 100755 ucmm/Jamfile mode change 100644 => 100755 ucmm/afiles mode change 100644 => 100755 ucmm/ucmm.c mode change 100644 => 100755 ucmm/ucmm.h mode change 100644 => 100755 usb/45-Argyll.rules mode change 100644 => 100755 usb/55-Argyll.rules mode change 100644 => 100755 usb/Argyll mode change 100644 => 100755 usb/Argyll.kext/Info.plist mode change 100644 => 100755 usb/Argyll.usermap mode change 100644 => 100755 usb/ArgyllCMS.cat mode change 100644 => 100755 usb/ArgyllCMS.inf mode change 100644 => 100755 usb/ArgyllCMS.inf.d mode change 100644 => 100755 usb/ArgyllCMS.inf.t mode change 100644 => 100755 usb/ArgyllCMS_x64.cat mode change 100644 => 100755 usb/Jamfile mode change 100644 => 100755 usb/afiles mode change 100644 => 100755 usb/binfiles.lx mode change 100644 => 100755 usb/binfiles.msw mode change 100644 => 100755 usb/binfiles.osx mode change 100644 => 100755 usb/driver/AUTHORS.txt mode change 100644 => 100755 usb/driver/COPYING_GPL.txt mode change 100644 => 100755 usb/driver/LICENSE.txt mode change 100644 => 100755 usb/driver/Makefile mode change 100644 => 100755 usb/driver/README.txt mode change 100644 => 100755 usb/driver/abort_endpoint.c mode change 100644 => 100755 usb/driver/claim_interface.c mode change 100644 => 100755 usb/driver/clear_feature.c mode change 100644 => 100755 usb/driver/dispatch.c mode change 100644 => 100755 usb/driver/driver_api.h mode change 100644 => 100755 usb/driver/driver_debug.c mode change 100644 => 100755 usb/driver/driver_debug.h mode change 100644 => 100755 usb/driver/driver_registry.c mode change 100644 => 100755 usb/driver/get_configuration.c mode change 100644 => 100755 usb/driver/get_descriptor.c mode change 100644 => 100755 usb/driver/get_interface.c mode change 100644 => 100755 usb/driver/get_status.c mode change 100644 => 100755 usb/driver/ioctl.c mode change 100644 => 100755 usb/driver/libusb-win32-README-1.2.6.0.txt mode change 100644 => 100755 usb/driver/libusb_driver.c mode change 100644 => 100755 usb/driver/libusb_driver.h mode change 100644 => 100755 usb/driver/libusb_driver_rc.rc mode change 100644 => 100755 usb/driver/lusb_defdi_guids.h mode change 100644 => 100755 usb/driver/pnp.c mode change 100644 => 100755 usb/driver/power.c mode change 100644 => 100755 usb/driver/release_interface.c mode change 100644 => 100755 usb/driver/reset_device.c mode change 100644 => 100755 usb/driver/reset_endpoint.c mode change 100644 => 100755 usb/driver/set_configuration.c mode change 100644 => 100755 usb/driver/set_descriptor.c mode change 100644 => 100755 usb/driver/set_feature.c mode change 100644 => 100755 usb/driver/set_interface.c mode change 100644 => 100755 usb/driver/transfer.c mode change 100644 => 100755 usb/driver/usbd.def mode change 100644 => 100755 usb/driver/usbdlib_gcc.h mode change 100644 => 100755 usb/driver/vendor_request.c mode change 100644 => 100755 usb/install_kext.sh mode change 100644 => 100755 xicc/Jamfile mode change 100644 => 100755 xicc/License.txt mode change 100644 => 100755 xicc/Readme.txt mode change 100644 => 100755 xicc/afiles mode change 100644 => 100755 xicc/bt1886.c mode change 100644 => 100755 xicc/bt1886.h mode change 100644 => 100755 xicc/cam02.c mode change 100644 => 100755 xicc/cam02.h mode change 100644 => 100755 xicc/cam02plot.c mode change 100644 => 100755 xicc/cam02ref.h mode change 100644 => 100755 xicc/cam02test.c mode change 100644 => 100755 xicc/cam97s3.c mode change 100644 => 100755 xicc/cam97s3.h mode change 100644 => 100755 xicc/cam97test.c mode change 100644 => 100755 xicc/ccmx.c mode change 100644 => 100755 xicc/ccmx.h mode change 100644 => 100755 xicc/ccss.c mode change 100644 => 100755 xicc/ccss.h mode change 100644 => 100755 xicc/ccttest.c mode change 100644 => 100755 xicc/cgatsplot.c mode change 100644 => 100755 xicc/cv.c mode change 100644 => 100755 xicc/cvtest.c mode change 100644 => 100755 xicc/example.sp mode change 100644 => 100755 xicc/extracticc.c mode change 100644 => 100755 xicc/extractttag.c mode change 100644 => 100755 xicc/fakeCMY.c mode change 100644 => 100755 xicc/fbview.c mode change 100644 => 100755 xicc/iccgamut.c mode change 100644 => 100755 xicc/iccjpeg.c mode change 100644 => 100755 xicc/iccjpeg.h mode change 100644 => 100755 xicc/icheck.c mode change 100644 => 100755 xicc/monctest.c mode change 100644 => 100755 xicc/moncurve.c mode change 100644 => 100755 xicc/moncurve.h mode change 100644 => 100755 xicc/mpp.c mode change 100644 => 100755 xicc/mpp.h mode change 100644 => 100755 xicc/mpplu.c mode change 100644 => 100755 xicc/revfix.c mode change 100644 => 100755 xicc/specplot.c mode change 100644 => 100755 xicc/specsubsamp.c mode change 100644 => 100755 xicc/spectest.c mode change 100644 => 100755 xicc/spectest2.c mode change 100644 => 100755 xicc/tiffgamut.c mode change 100644 => 100755 xicc/tiffgmts.c mode change 100644 => 100755 xicc/transplot.c mode change 100644 => 100755 xicc/xcal.c mode change 100644 => 100755 xicc/xcal.h mode change 100644 => 100755 xicc/xcam.c mode change 100644 => 100755 xicc/xcam.h mode change 100644 => 100755 xicc/xcolorants.c mode change 100644 => 100755 xicc/xcolorants.h mode change 100644 => 100755 xicc/xcolorantslu.c mode change 100644 => 100755 xicc/xdevlin.c mode change 100644 => 100755 xicc/xdevlin.h mode change 100644 => 100755 xicc/xdgb.c mode change 100644 => 100755 xicc/xdgb.h mode change 100644 => 100755 xicc/xfbview.c mode change 100644 => 100755 xicc/xfit.c mode change 100644 => 100755 xicc/xfit.h mode change 100644 => 100755 xicc/xicc.c mode change 100644 => 100755 xicc/xicc.h mode change 100644 => 100755 xicc/xicclu.c mode change 100644 => 100755 xicc/xlut.c mode change 100644 => 100755 xicc/xlutfix.c mode change 100644 => 100755 xicc/xmatrix.c mode change 100644 => 100755 xicc/xmono.c mode change 100644 => 100755 xicc/xspect.c mode change 100644 => 100755 xicc/xspect.h mode change 100644 => 100755 xicc/xutils.c mode change 100644 => 100755 xicc/xutils.h mode change 100644 => 100755 xml/ANNOUNCEMENT mode change 100644 => 100755 xml/CHANGES mode change 100644 => 100755 xml/COPYING mode change 100644 => 100755 xml/Makefile.in mode change 100644 => 100755 xml/README mode change 100644 => 100755 xml/afiles mode change 100644 => 100755 xml/config.h.in mode change 100644 => 100755 xml/configure mode change 100644 => 100755 xml/configure.in mode change 100644 => 100755 xml/doc/Mini-XML.pdf mode change 100644 => 100755 xml/install-sh mode change 100644 => 100755 xml/mxml-attr.c mode change 100644 => 100755 xml/mxml-config.h mode change 100644 => 100755 xml/mxml-entity.c mode change 100644 => 100755 xml/mxml-file.c mode change 100644 => 100755 xml/mxml-get.c mode change 100644 => 100755 xml/mxml-index.c mode change 100644 => 100755 xml/mxml-node.c mode change 100644 => 100755 xml/mxml-private.c mode change 100644 => 100755 xml/mxml-private.h mode change 100644 => 100755 xml/mxml-search.c mode change 100644 => 100755 xml/mxml-set.c mode change 100644 => 100755 xml/mxml-string.c mode change 100644 => 100755 xml/mxml.h mode change 100644 => 100755 xml/mxml.list.in mode change 100644 => 100755 xml/mxml.pc.in mode change 100644 => 100755 xml/mxml.spec mode change 100644 => 100755 xml/mxml.xml mode change 100644 => 100755 xml/mxmldoc.c mode change 100644 => 100755 xml/test.xml mode change 100644 => 100755 xml/testmxml.c mode change 100644 => 100755 yajl/COPYING mode change 100644 => 100755 yajl/ChangeLog mode change 100644 => 100755 yajl/Jamfile mode change 100644 => 100755 yajl/README mode change 100644 => 100755 yajl/TODO mode change 100644 => 100755 yajl/afiles mode change 100644 => 100755 yajl/json_verify.c mode change 100644 => 100755 yajl/yajl.c mode change 100644 => 100755 yajl/yajl.h mode change 100644 => 100755 yajl/yajl_alloc.c mode change 100644 => 100755 yajl/yajl_alloc.h mode change 100644 => 100755 yajl/yajl_buf.c mode change 100644 => 100755 yajl/yajl_buf.h mode change 100644 => 100755 yajl/yajl_bytestack.h mode change 100644 => 100755 yajl/yajl_common.h mode change 100644 => 100755 yajl/yajl_encode.c mode change 100644 => 100755 yajl/yajl_encode.h mode change 100644 => 100755 yajl/yajl_gen.c mode change 100644 => 100755 yajl/yajl_gen.h mode change 100644 => 100755 yajl/yajl_lex.c mode change 100644 => 100755 yajl/yajl_lex.h mode change 100644 => 100755 yajl/yajl_parse.h mode change 100644 => 100755 yajl/yajl_parser.c mode change 100644 => 100755 yajl/yajl_parser.h mode change 100644 => 100755 yajl/yajl_test.c mode change 100644 => 100755 yajl/yajl_tree.c mode change 100644 => 100755 yajl/yajl_tree.h mode change 100644 => 100755 yajl/yajl_version.c mode change 100644 => 100755 yajl/yajl_version.h mode change 100644 => 100755 ziparch.sh diff --git a/Jambase b/Jambase old mode 100644 new mode 100755 diff --git a/Jamfile b/Jamfile old mode 100644 new mode 100755 diff --git a/Jamtop b/Jamtop old mode 100644 new mode 100755 index 6864931..da2f9c5 --- a/Jamtop +++ b/Jamtop @@ -39,6 +39,16 @@ USE_USB = true ; # enable dummy Demo Instrument (only if code is available) USE_DEMOINST = true ; +# enable Video Test Patch Generator and 3DLUT device support +# (V2.0.0 and above) +USE_VTPGLUT = false ; + +# enable Printer device support +USE_PRINTER = false ; + +# enable CMF Measurement device support +USE_CMFM = false ; + # Use ArgyllCMS version of libusb (deprecated - don't use) USE_LIBUSB = false ; @@ -110,11 +120,14 @@ if $(UNIX) { } } if $(OS) = FREEBSD { - LINKFLAGS += -L$(LibWinD) -g -lrt -lX11 -lXext -lXxf86vm -lXinerama -lXrandr -lXau -lXdmcp -lXss -lusb ; + LINKFLAGS += -g -lrt -lusb ; + GUILINKFLAGS += -L$(LibWinD) -g -lX11 -lXext -lXxf86vm -lXinerama -lXrandr -lXau -lXdmcp -lXss ; } else if $(OS) = OPENBSD { - LINKFLAGS += -L$(LibWinD) -g -lX11 -lXext -lXxf86vm -lXinerama -lXrandr -lXau -lXdmcp -lXss -L/usr/local/lib ; + LINKFLAGS += ; + GUILINKFLAGS += -L$(LibWinD) -g -lX11 -lXext -lXxf86vm -lXinerama -lXrandr -lXau -lXdmcp -lXss -L/usr/local/lib ; } else { - LINKFLAGS += -L$(LibWinD) -ldl -lrt -lX11 -lXext -lXxf86vm -lXinerama -lXrandr -lXau -lXdmcp -lXss ; + LINKFLAGS += -ldl -lrt ; + GUILINKFLAGS += -L$(LibWinD) -lX11 -lXext -lXxf86vm -lXinerama -lXrandr -lXau -lXdmcp -lXss ; } # HDRS += $(LibWinH) ; } diff --git a/License.txt b/License.txt old mode 100644 new mode 100755 diff --git a/License2.txt b/License2.txt old mode 100644 new mode 100755 diff --git a/License3.txt b/License3.txt old mode 100644 new mode 100755 diff --git a/Makefile b/Makefile old mode 100644 new mode 100755 diff --git a/Readme.txt b/Readme.txt old mode 100644 new mode 100755 index f406d68..38c9ce1 --- a/Readme.txt +++ b/Readme.txt @@ -1,8 +1,8 @@ -Argyll CMS README file - Version 1.9.2 +Argyll CMS README file - Version 2.0.0 -------------------------------------- -Date: 17th October 2016 +Date: 17th November 2017 Author: Graeme Gill Introduction @@ -26,7 +26,7 @@ provided for each major tool, and a general guide to using the tools for typical color management tasks is also available. A mailing list provides support for more advanced usage. -This is Version 1.9.2, a bug fix update to the last release V1.9.1. +This is Version 2.0.0, a feature and bug fix update to the last major release V1.9.2. The first public release of icclib was in November 1998, and of Argyll was in October 2000. Code development commenced in 1995. See Changes Summary for an overview of changes since the last release. Changes diff --git a/adirs b/adirs old mode 100644 new mode 100755 diff --git a/afiles b/afiles old mode 100644 new mode 100755 diff --git a/binfiles b/binfiles old mode 100644 new mode 100755 diff --git a/blddirs b/blddirs old mode 100644 new mode 100755 diff --git a/ccast/Jamfile b/ccast/Jamfile old mode 100644 new mode 100755 diff --git a/ccast/License.txt b/ccast/License.txt old mode 100644 new mode 100755 diff --git a/ccast/Readme.txt b/ccast/Readme.txt index 6823ba9..fc99019 100644 --- a/ccast/Readme.txt +++ b/ccast/Readme.txt @@ -3,10 +3,10 @@ rasters to the Google ChromeCast. Hierarchy: - cccast.c Top level actions & receive thread - ccmes.c Message handling, uses probuf + ccast.c Top level actions & receive thread + ccmes.c Message handling, uses protobuf chan/ protobuf encoding ccpacket.c socket write/read ccmdns.c MDNS sign on - axTLS SSL/TLS library + axTLS Standalone SSL/TLS library diff --git a/ccast/axTLS/Jamfile b/ccast/axTLS/Jamfile old mode 100644 new mode 100755 index 9a8aff4..5466680 --- a/ccast/axTLS/Jamfile +++ b/ccast/axTLS/Jamfile @@ -13,7 +13,7 @@ if $(NT) { } } -# tiff library +# axTLS library LIBSRCS = aes.c asn1.c diff --git a/ccast/axTLS/aes.c b/ccast/axTLS/aes.c old mode 100644 new mode 100755 diff --git a/ccast/axTLS/asn1.c b/ccast/axTLS/asn1.c old mode 100644 new mode 100755 index b082275..b5e678e --- a/ccast/axTLS/asn1.c +++ b/ccast/axTLS/asn1.c @@ -200,6 +200,40 @@ int asn1_get_private_key(const uint8_t *buf, int len, RSA_CTX **rsa_ctx) return X509_OK; } +/** + * Read the modulus and public exponent of an RSA certificate. + */ +int asn1_get_public_key(const uint8_t *cert, int *offset, RSA_CTX **rsa_ctx) +{ + int ret = X509_NOT_OK, mod_len, pub_len; + uint8_t *modulus = NULL, *pub_exp = NULL; + int len; + + /* Hmm. Not checking that the two ints are within the squence ... */ + if ((len = asn1_next_obj(cert, offset, ASN1_SEQUENCE)) < 0) + goto end_pub_key; + + if ((mod_len = asn1_get_int(cert, offset, &modulus)) <= 0) { + ret = X509_INVALID_PUB_KEY; + goto end_pub_key; + } + if ((pub_len = asn1_get_int(cert, offset, &pub_exp)) <= 0) { + free(modulus); + ret = X509_INVALID_PUB_KEY; + goto end_pub_key; + } + + RSA_pub_key_new(rsa_ctx, modulus, mod_len, pub_exp, pub_len); + + free(modulus); + free(pub_exp); + + ret = X509_OK; + +end_pub_key: + return ret; +} + /** * Get the time of a certificate. Ignore hours/minutes/seconds. */ diff --git a/ccast/axTLS/axTLS_config.h b/ccast/axTLS/axTLS_config.h old mode 100644 new mode 100755 diff --git a/ccast/axTLS/axTLS_version.h b/ccast/axTLS/axTLS_version.h old mode 100644 new mode 100755 diff --git a/ccast/axTLS/bigint.c b/ccast/axTLS/bigint.c old mode 100644 new mode 100755 diff --git a/ccast/axTLS/bigint.h b/ccast/axTLS/bigint.h old mode 100644 new mode 100755 diff --git a/ccast/axTLS/bigint_impl.h b/ccast/axTLS/bigint_impl.h old mode 100644 new mode 100755 diff --git a/ccast/axTLS/cert.h b/ccast/axTLS/cert.h old mode 100644 new mode 100755 diff --git a/ccast/axTLS/crypto.h b/ccast/axTLS/crypto.h old mode 100644 new mode 100755 index bf2c187..904000d --- a/ccast/axTLS/crypto.h +++ b/ccast/axTLS/crypto.h @@ -204,6 +204,7 @@ void RSA_pub_key_new(RSA_CTX **rsa_ctx, void RSA_free(RSA_CTX *ctx); int RSA_decrypt(const RSA_CTX *ctx, const uint8_t *in_data, uint8_t *out_data, int is_decryption); +int RSA_decrypt2(const RSA_CTX *ctx, const uint8_t *in_data, uint8_t *out_data); bigint *RSA_private(const RSA_CTX *c, bigint *bi_msg); #if defined(CONFIG_SSL_CERT_VERIFICATION) || defined(CONFIG_SSL_GENERATE_X509_CERT) bigint *RSA_sign_verify(BI_CTX *ctx, const uint8_t *sig, int sig_len, diff --git a/ccast/axTLS/crypto_misc.c b/ccast/axTLS/crypto_misc.c old mode 100644 new mode 100755 diff --git a/ccast/axTLS/crypto_misc.h b/ccast/axTLS/crypto_misc.h old mode 100644 new mode 100755 index acb5c73..d1c843c --- a/ccast/axTLS/crypto_misc.h +++ b/ccast/axTLS/crypto_misc.h @@ -55,6 +55,7 @@ extern "C" { #define X509_VFY_ERROR_INVALID_CHAIN -7 #define X509_VFY_ERROR_UNSUPPORTED_DIGEST -8 #define X509_INVALID_PRIV_KEY -9 +#define X509_INVALID_PUB_KEY -10 /* * The Distinguished Name @@ -128,6 +129,7 @@ const char * x509_display_error(int error); int get_asn1_length(const uint8_t *buf, int *offset); int asn1_get_private_key(const uint8_t *buf, int len, RSA_CTX **rsa_ctx); +int asn1_get_public_key(const uint8_t *cert, int *offset, RSA_CTX **rsa_ctx); int asn1_next_obj(const uint8_t *buf, int *offset, int obj_type); int asn1_skip_obj(const uint8_t *buf, int *offset, int obj_type); int asn1_get_int(const uint8_t *buf, int *offset, uint8_t **object); diff --git a/ccast/axTLS/gen_cert.c b/ccast/axTLS/gen_cert.c old mode 100644 new mode 100755 diff --git a/ccast/axTLS/hmac.c b/ccast/axTLS/hmac.c old mode 100644 new mode 100755 diff --git a/ccast/axTLS/loader.c b/ccast/axTLS/loader.c old mode 100644 new mode 100755 diff --git a/ccast/axTLS/md2.c b/ccast/axTLS/md2.c old mode 100644 new mode 100755 diff --git a/ccast/axTLS/md5.c b/ccast/axTLS/md5.c old mode 100644 new mode 100755 diff --git a/ccast/axTLS/openssl.c b/ccast/axTLS/openssl.c old mode 100644 new mode 100755 diff --git a/ccast/axTLS/os_int.h b/ccast/axTLS/os_int.h old mode 100644 new mode 100755 diff --git a/ccast/axTLS/os_port.c b/ccast/axTLS/os_port.c old mode 100644 new mode 100755 diff --git a/ccast/axTLS/os_port.h b/ccast/axTLS/os_port.h old mode 100644 new mode 100755 diff --git a/ccast/axTLS/p12.c b/ccast/axTLS/p12.c old mode 100644 new mode 100755 diff --git a/ccast/axTLS/private_key.h b/ccast/axTLS/private_key.h old mode 100644 new mode 100755 diff --git a/ccast/axTLS/rc4.c b/ccast/axTLS/rc4.c old mode 100644 new mode 100755 diff --git a/ccast/axTLS/rsa.c b/ccast/axTLS/rsa.c old mode 100644 new mode 100755 index e707f2b..14948eb --- a/ccast/axTLS/rsa.c +++ b/ccast/axTLS/rsa.c @@ -187,6 +187,50 @@ int RSA_decrypt(const RSA_CTX *ctx, const uint8_t *in_data, return size ? size : -1; } +/** + * @brief Use PKCS1.5 for decryption. + * @param ctx [in] The context + * @param in_data [in] The data to encrypt + * @param out_data [out] The decrypted data. + * @return The number of bytes that were originally encrypted. -1 on error. + */ +int RSA_decrypt2(const RSA_CTX *ctx, const uint8_t *in_data, uint8_t *out_data) +{ + const int byte_size = ctx->num_octets; + int i, size; + bigint *decrypted_bi, *dat_bi; + uint8_t *block = (uint8_t *)malloc(byte_size); + + /* decrypt */ + dat_bi = bi_import(ctx->bi_ctx, in_data, byte_size); + + decrypted_bi = RSA_public(ctx, dat_bi); /* Frees dat_bi and exponent ? */ + + /* convert to a normal block (frees decrypted_bi) */ + bi_export(ctx->bi_ctx, decrypted_bi, block, byte_size); + + + /* We assume this is padded with "0001ff....ff00" */ + i = 2; + while (block[i++] == 0xff && i < byte_size) + ; + + /* Skip last 0x00 */ + if (i < byte_size && block[i] == 0x00) + i++; + + size = byte_size - i; + + /* get only the bit we want */ + if (size > 0) { + memcpy(out_data, &block[i], size); + } + + free(block); + + return size ? size : -1; +} + /** * Performs m = c^d mod n */ diff --git a/ccast/axTLS/sha1.c b/ccast/axTLS/sha1.c old mode 100644 new mode 100755 diff --git a/ccast/axTLS/ssl.h b/ccast/axTLS/ssl.h old mode 100644 new mode 100755 diff --git a/ccast/axTLS/temp b/ccast/axTLS/temp old mode 100644 new mode 100755 diff --git a/ccast/axTLS/tls1.c b/ccast/axTLS/tls1.c old mode 100644 new mode 100755 diff --git a/ccast/axTLS/tls1.h b/ccast/axTLS/tls1.h old mode 100644 new mode 100755 diff --git a/ccast/axTLS/tls1_clnt.c b/ccast/axTLS/tls1_clnt.c old mode 100644 new mode 100755 diff --git a/ccast/axTLS/tls1_svr.c b/ccast/axTLS/tls1_svr.c old mode 100644 new mode 100755 diff --git a/ccast/axTLS/x509.c b/ccast/axTLS/x509.c old mode 100644 new mode 100755 diff --git a/ccast/cast_channel.proto b/ccast/cast_channel.proto old mode 100644 new mode 100755 diff --git a/ccast/ccast.c b/ccast/ccast.c old mode 100644 new mode 100755 index 2a2c1a8..26a4dee --- a/ccast/ccast.c +++ b/ccast/ccast.c @@ -71,8 +71,8 @@ static void check_json(char *mesbuf) { /* Read messages. If they are ones we deal with, send a reply */ /* If they are anonomous (sessionId == 0), then ignore them */ -/* (Could save last known anonomous message if they prove useful) */ /* and if they are numbered, keep then in a sorted list. */ +/* (Could save last known anonomous message if they prove useful) */ static int cc_rec_thread(void *context) { ccast *p = (ccast *)context; diff --git a/ccast/ccast.h b/ccast/ccast.h old mode 100644 new mode 100755 diff --git a/ccast/ccmdns.c b/ccast/ccmdns.c old mode 100644 new mode 100755 index 1000db3..8fd7046 --- a/ccast/ccmdns.c +++ b/ccast/ccmdns.c @@ -130,10 +130,12 @@ typedef int SOCKET; # define DBG(xxx) a1logd xxx ; # define DBG2(xxx) a1logd xxx ; # define DLEV 0 +# define DLEVP1 0 #else # define DBG(xxx) ; # define DBG2(xxx) a1logd xxx ; # define DLEV 2 +# define DLEVP1 3 #endif /* DEBUG */ /* ================================================================ */ @@ -144,7 +146,7 @@ typedef int SOCKET; #define SOURCE_PORT 5353 #define DESTINATION_PORT 5353 -#define BUFSIZE 1024 +#define BUFSIZE 2048 /* Various DNS defines */ #define DNS_CLASS_IN 0x0001 @@ -158,6 +160,25 @@ typedef int SOCKET; #define DNS_TYPE_NSEC 47 /* DNS Next Secure Name */ +char *cctype2str(cctype typ) { + switch (typ) { + case cctyp_unkn: + return "Unknown"; + case cctyp_1: + return "One"; + case cctyp_2: + return "Two"; + case cctyp_Audio: + return "Audio"; + case cctyp_Ultra: + return "Ultra"; + case cctyp_Other: + return "Other"; + default: + return "Unexpected"; + } +} + #ifdef NEVER /* Print out a V6 address in zero compresed form */ /* (It would be nice to add zero compression) */ @@ -201,20 +222,21 @@ static int init_mDNS() { return 0; } -/* Setup the send socket */ +/* Setup the send and recieve socket */ /* Return nz on error */ -static int init_send_mDNS(SOCKET *psock) { +static int init_socket_mDNS(SOCKET *psock) { int nRet, nOptVal; int off; SOCKET sock; struct sockaddr_in stSourceAddr; + struct ip_mreq stIpMreq; - DBG((g_log,0,"init_send_mDNS() called\n")) + DBG((g_log,0,"init_socket_mDNS() called\n")) /* get a datagram (UDP) socket */ sock = socket(PF_INET, SOCK_DGRAM, 0); if (sock == INVALID_SOCKET) { - DBG((g_log,0,"opening send UDP socked failed with %d\n",ERRNO)) + DBG((g_log,0,"opening UDP socked failed with %d\n",ERRNO)) return 1; } @@ -234,7 +256,7 @@ static int init_send_mDNS(SOCKET *psock) { { int on = 1; if (setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, (const char *)&on, sizeof(on))) { - DBG((g_log,0,"setsockopt(SO_REUSEADDR) failed with %d\n",ERRNO)) + DBG((g_log,0,"setsockopt(SO_REUSEADDR) failed with %d\n",ERRNO)) closesocket(sock); return 1; } @@ -272,6 +294,9 @@ static int init_send_mDNS(SOCKET *psock) { return 1; } + /* - - - - - - - */ + /* Send setup */ + /* disable loopback of multicast datagrams we send, since the * default--according to Steve Deering--is to loopback all * datagrams sent on any interface which is a member of the @@ -306,13 +331,55 @@ static int init_send_mDNS(SOCKET *psock) { if (psock != NULL) *psock = sock; - DBG((g_log,0,"init sending mDNS succeed\n",ERRNO)) + /* - - - - - - - */ + /* Recieve setup */ + + /* join the multicast group we want to receive datagrams from */ + stIpMreq.imr_multiaddr.s_addr = inet_addr(DESTINATION_MCAST); /* group addr */ + stIpMreq.imr_interface.s_addr = INADDR_ANY; /* use default */ + nRet = setsockopt(sock, IPPROTO_IP, IP_ADD_MEMBERSHIP, + (char *)&stIpMreq, sizeof (struct ip_mreq)); + + if (nRet == SOCKET_ERROR) { + DBG((g_log,0,"registering for read events failed with %d\n",ERRNO)) + closesocket(sock); + return 1; + } + + /* Make this timeout after 100 msec second */ +#ifdef NT + { + DWORD tv; + tv = 100; + if (setsockopt(sock, SOL_SOCKET, SO_RCVTIMEO, (const char*)&tv, sizeof(tv)) < 0) { + DBG((g_log,0,"setsockopt timout failed with %d\n",ERRNO)) + closesocket(sock); + return 1; + } + } +#else + { + struct timeval tv; + tv.tv_sec = 0; + tv.tv_usec = 100 * 1000; + if (setsockopt(sock, SOL_SOCKET, SO_RCVTIMEO, (const char*)&tv, sizeof(tv)) < 0) { + DBG((g_log,0,"setsockopt timout failed with %d\n",ERRNO)) + closesocket(sock); + return 1; + } + } +#endif + + if (psock != NULL) + *psock = sock; + + DBG((g_log,0,"init mDNS socket succeed\n",ERRNO)) return 0; } -/* Send an mDNS quesry */ -/* on some platforms if we try to transmit & recieve at the same time */ +/* Send an mDNS query */ +/* On some platforms if we try to transmit & recieve at the same time (what ?) */ /* Return nz on error */ static int send_mDNS(SOCKET sock) { int nRet; @@ -360,7 +427,7 @@ static int send_mDNS(SOCKET sock) { return 0; } -static int parse_dns(char **name, char **ip, ORD8 *buf, int size); +static int parse_dns(char **name, char **ip, cctype *ptyp, int *pcaflags, ORD8 *buf, int size); /* Free up what get_ccids returned */ void free_ccids(ccast_id **ids) { @@ -376,135 +443,25 @@ void free_ccids(ccast_id **ids) { } } -/* Spend the given time waiting for replies. */ -/* (Note than on MSWin this will be a minimum of 500msec) */ -/* Add any ChromeCast replies to the list. */ -/* return nz on error */ -static int init_receive_mDNS(SOCKET *psock) { - int nRet; - int off, size; - struct sockaddr_in stSourceAddr; - struct ip_mreq stIpMreq; - SOCKET sock; - - DBG((g_log,0,"init_receive_mDNS() called\n")) - - /* get a datagram (UDP) socket */ - sock = socket(PF_INET, SOCK_DGRAM, 0); - if (sock == INVALID_SOCKET) { - DBG((g_log,0,"opening receive UDP socked failed with %d\n",ERRNO)) - return 1; - } - - /* We can't receive from port 5353 if someone else is using it, */ - /* so set the SO_REUSEADDR option (which is enough for MSWin), */ - /* and SO_REUSEPORT for OS X and Linux */ - { - int on = 1, off = 0; - if (setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, (const char *) &on, sizeof(on))) { - DBG((g_log,0,"setsockopt(SO_REUSEADDR) failed with %d\n",ERRNO)) - closesocket(sock); - return 1; - } - - /* Need this to be able to open port on Unix like systems */ -#ifndef NT -# ifndef SO_REUSEPORT -# ifdef __APPLE__ -# define SO_REUSEPORT 0x0200 -# else /* Linux */ -# define SO_REUSEPORT 15 -# endif -# endif - if (setsockopt(sock, SOL_SOCKET, SO_REUSEPORT, (const char *)&on, sizeof(on))) { - DBG((g_log,0,"setsockopt(SO_REUSEPORT) failed with %d\n",ERRNO)) - } -#endif - } - - /* init source address structure */ - stSourceAddr.sin_family = PF_INET; - stSourceAddr.sin_port = htons(SOURCE_PORT); - stSourceAddr.sin_addr.s_addr = INADDR_ANY; - - /* - * Calling bind() is not required, but some implementations need it - * before you can reference any multicast socket options - * and in this case we must be on port 5353. - */ - nRet = bind(sock, (struct sockaddr *)&stSourceAddr, - sizeof(struct sockaddr)); - if (nRet == SOCKET_ERROR) { - DBG((g_log,0,"bind failed with %d\n",ERRNO)) - closesocket(sock); - return 1; - } - - /* join the multicast group we want to receive datagrams from */ - stIpMreq.imr_multiaddr.s_addr = inet_addr(DESTINATION_MCAST); /* group addr */ - stIpMreq.imr_interface.s_addr = INADDR_ANY; /* use default */ - nRet = setsockopt(sock, IPPROTO_IP, IP_ADD_MEMBERSHIP, - (char *)&stIpMreq, sizeof (struct ip_mreq)); - - if (nRet == SOCKET_ERROR) { - DBG((g_log,0,"registering for read events failed with %d\n",ERRNO)) - closesocket(sock); - return 1; - } - - /* Make this timeout after 100 msec second */ -#ifdef NT - { - DWORD tv; - tv = 100; - if (setsockopt(sock, SOL_SOCKET, SO_RCVTIMEO, (const char*)&tv, sizeof(tv)) < 0) { - DBG((g_log,0,"setsockopt timout failed with %d\n",ERRNO)) - closesocket(sock); - return 1; - } - } -#else - { - struct timeval tv; - tv.tv_sec = 0; - tv.tv_usec = 100 * 1000; - if (setsockopt(sock, SOL_SOCKET, SO_RCVTIMEO, (const char*)&tv, sizeof(tv)) < 0) { - DBG((g_log,0,"setsockopt timout failed with %d\n",ERRNO)) - closesocket(sock); - return 1; - } - } -#endif - - if (psock != NULL) - *psock = sock; - - return 0; -} - /* Spend the given time waiting for replies. */ /* (Note than on MSWin this will be a minimum of 500msec) */ /* Add any ChromeCast replies to the list. */ /* return nz on error & free *ids */ -static int receive_mDNS(SOCKET sock, ccast_id ***ids, int emsec) { - int nids = 0; +static int receive_mDNS(SOCKET sock, ccast_id ***ids, int *nids, int emsec) { unsigned int smsec; unsigned int nSize; int off, size; ORD8 achInBuf[BUFSIZE]; struct sockaddr_in stSourceAddr; - /* Count the number of current id's */ - if (*ids != NULL) { - for (nids = 0; (*ids)[nids] != NULL; nids++) - ; - } - - DBG((g_log,0,"receive_mDNS() called with %d ids\n",nids)) + DBG((g_log,0,"receive_mDNS() called with %d ids\n",*nids)) + /* While there is still wait time */ for (smsec = msec_time(), emsec += smsec;msec_time() <= emsec;) { int i; char *name, *ip; + cctype typ; + int caflags; /* (We're not currently saving this) */ struct sockaddr stSockAddr; /* Recv the available data */ @@ -514,75 +471,86 @@ static int receive_mDNS(SOCKET sock, ccast_id ***ids, int emsec) { if (size == SOCKET_ERROR) { if (ERRNO == UDP_SOCKET_TIMEOUT) continue; /* Timeout */ - DBG((g_log,0,"recvfrom failed with %d\n",ERRNO)) + DBG2((g_log,DLEV,"recvfrom failed with %d\n",ERRNO)) free_ccids(*ids); *ids = NULL; return 1; } - DBG((g_log,0,"Got mDNS message length %d bytes\n",size)) + + DBG2((g_log,DLEVP1,"Got mDNS message length %d bytes\n",size)) #ifdef DEBUG adump_bytes(g_log, " ", achInBuf, 0, size); #endif - if (parse_dns(&name, &ip, achInBuf, size) != 0) { + if (parse_dns(&name, &ip, &typ, &caflags, achInBuf, size) != 0) { DBG((g_log,0,"Failed to parse the reply\n")) } else { DBG((g_log,0,"Parsed reply OK\n")) -//if (*pnids > 0) { -// name = strdup("Argyll1234"); -// ip = strdup("10.0.0.129"); -//} /* If we found an entry */ if (name != NULL && ip != NULL) { - DBG((g_log,0,"Got a name '%s' & IP '%s'\n",name,ip)) - /* Check if it is a duplcate */ - for (i = 0; i < nids; i++) { - if (strcmp((*ids)[i]->name, name) == 0 - && strcmp((*ids)[i]->ip, ip) == 0) - break; /* yes */ - } - if (i < nids) { - DBG((g_log,0,"Duplicate\n")) + DBG((g_log,0,"Got a name '%s', IP '%s', type %s\n",name,ip, cctype2str(typ))) + + /* Check if it is a Chromecast-Audio or Other */ + if (typ == cctyp_Audio + || typ == cctyp_Other) { + DBG((g_log,0,"Ignoring Chromecast-Audio/Other\n")) free(name); free(ip); + } else { - ccast_id **tids; - if ((tids = realloc(*ids, (nids + 2) * sizeof(ccast_id *))) == NULL - || (*ids = tids, (*ids)[nids] = malloc(sizeof(ccast_id)), (*ids)[nids]) == NULL) { - DBG((g_log,0,"realloc/malloc fail\n")) + + /* Check if it is a duplcate */ + for (i = 0; i < *nids; i++) { + if (strcmp((*ids)[i]->name, name) == 0 + && strcmp((*ids)[i]->ip, ip) == 0) + break; /* yes */ + } + if (i < *nids) { + DBG((g_log,0,"Duplicate\n")) free(name); free(ip); - free_ccids(*ids); - *ids = NULL; - return 1; } else { - DBG((g_log,0,"Adding entry\n")) - (*ids)[nids]->name = name; - (*ids)[nids]->ip = ip; - (*ids)[++nids] = NULL; /* End marker */ + ccast_id **tids; + if ((tids = realloc(*ids, (*nids + 2) * sizeof(ccast_id *))) == NULL + || (*ids = tids, (*ids)[*nids] = malloc(sizeof(ccast_id)), (*ids)[*nids]) == NULL) { + DBG((g_log,0,"realloc/malloc fail\n")) + free(name); + free(ip); + free_ccids(*ids); + *ids = NULL; + return 1; + } else { + DBG((g_log,0,"Adding entry\n")) + (*ids)[*nids]->name = name; + (*ids)[*nids]->ip = ip; + (*ids)[*nids]->typ = typ; + (*nids)++; + (*ids)[*nids] = NULL; /* End marker */ + } } } } } } - DBG((g_log,0,"receive_mDNS() returning %d in list\n",nids)) + DBG2((g_log,DLEVP1,"receive_mDNS() returning %d in list\n",*nids)) return 0; } /* ==================================================================== */ -/* Get a list of Chromecasts. Return NULL on error */ +/* Get a list of Video output capable Chromecasts. Return NULL on error */ /* Last pointer in array is NULL */ -/* Takes 1.0 second to return */ +/* Takes 1.5 second to return */ ccast_id **get_ccids() { ccast_id **ids = NULL; + int nids = 0; int i, j, k; unsigned int smsec; - int waittime = 100; - SOCKET ssock, rsock; + int waittime = 200; + SOCKET sock; DBG2((g_log,DLEV,"get_ccids: called\n")) @@ -591,45 +559,38 @@ ccast_id **get_ccids() { return NULL; } - if (init_send_mDNS(&ssock)) { - DBG2((g_log,0,"get_ccids: init_send_mDNS() failed\n")) - return NULL; - } - - if (init_receive_mDNS(&rsock)) { - DBG2((g_log,0,"get_ccids: init_receive_mDNS() failed\n")) - closesocket(ssock); + if (init_socket_mDNS(&sock)) { + DBG2((g_log,0,"get_ccids: init_socket_mDNS() failed\n")) return NULL; } smsec = msec_time(); /* Try a few times, with increasing response wait time */ - for (k = 1; ids == NULL && (msec_time() - smsec) < 1000; k++) { + for (k = 1; + ((msec_time() - smsec) < 700) + || (nids == 0 && (msec_time() - smsec) < 1600); + k++) { DBG2((g_log,DLEV,"get_ccids: Sending mDNS query #%d:\n",k)) - if (send_mDNS(ssock)) { + if (send_mDNS(sock)) { DBG2((g_log,0,"get_ccids: send_mDNS() #1 failed\n")) - closesocket(ssock); - closesocket(rsock); + closesocket(sock); return NULL; } DBG2((g_log,DLEV,"get_ccids: Waiting for mDNS reply #%d:\n",k)) - if (receive_mDNS(rsock, &ids, waittime)) { + if (receive_mDNS(sock, &ids, &nids, waittime)) { DBG2((g_log,0,"get_ccids: receive_mDNS() #%d failed\n",k)) - closesocket(ssock); - closesocket(rsock); + closesocket(sock); return NULL; } - if (ids != NULL) - DBG2((g_log,DLEV,"get_ccids: Got reply\n")) + DBG2((g_log,DLEV,"get_ccids: have %d %s\n",nids, nids == 1 ? "reply" : "replies")) - waittime *= 2; + if (waittime < 500) + waittime = 500; } - - closesocket(ssock); - closesocket(rsock); + closesocket(sock); /* If no ChromCasts found, return an empty list */ if (ids == NULL) { @@ -655,6 +616,7 @@ ccast_id **get_ccids() { DBG2((g_log,DLEV," Entry %d:\n",i)) DBG2((g_log,DLEV," Name: %s\n",ids[i]->name)) DBG2((g_log,DLEV," IP: %s\n",ids[i]->ip)) + DBG2((g_log,DLEV," Type: %s\n",cctype2str(ids[i]->typ))) } DBG2((g_log,DLEV,"get_ccids: Returning %d devices\n",i)) @@ -698,46 +660,66 @@ static int read_string_imp(char **rv, int *slen, ORD8 *buf, int off, int size, i int len; int d1 = 0; -//printf("~1 read_string_imp called for off 0x%x rec %d\n",off,rec); + DBG((g_log,8,"read_string_imp called for off %d (0x%x) rec %d\n",off,off,rec)); - if (rec > 10) /* Too many recursions */ + if (rec > 10) { /* Too many recursions */ + DBG((g_log,8,"read_string_imp too many recursions\n")); return -1; /* Error */ + } - if (off >= size) + if (off >= size) { + DBG((g_log,8,"read_string_imp off %d >= size %d\n",off,size)); return -1; /* Error */ + } for (;;) { -//printf("~1 top of loop at off 0x%x\n",off); + DBG((g_log,8,"top of loop at off %d\n",off)); len = buf[off]; - if (len == 0xc0) { /* Is it an offset marker */ + if ((len & 0xc0) == 0xc0) { /* Is it an offset marker */ int poff; -//printf("~1 got pointer\n"); - if ((size - off) < 2) + + DBG((g_log,8,"got pointer\n")); + if ((size - off) < 2) { + DBG((g_log,8,"read_string_imp size %d - off %d < 2\n",size,off)); return -1; + } poff = read_ORD16_be(buf + off); off += 2; poff -= 0xc000; - if (poff < 0 || poff >= size) + if (poff < 0 || poff >= size) { return -1; + } + DBG((g_log,8,"read_string_imp recursing\n")); read_string_imp(rv, slen, buf, poff, size, rec+1); -//if (slen != NULL) printf("~1 after recurse, slen = %d, off = 0x%x\n",*slen,off); + if (slen != NULL) { + DBG((g_log,8,"after recurse, slen = %d, off = %d (0x%x)\n",*slen,off,off)); + } break; /* we're done */ } else { -//printf("~1 got string length %d\n",len); + DBG((g_log,8,"got string length %d\n",len)); + off++; - if ((off + len) >= size) + if ((off + len) >= size) { + DBG((g_log,8,"read_string_imp size off %d + len %d >= size %d\n",off,len,size)); return -1; + } - if (len == 0) + if (len == 0) { + DBG((g_log,8,"read_string_imp len == 0 - done\n")); break; /* we're done */ + } if (rv != NULL) { memcpy(*rv, buf + off, len); -//(*rv)[len] = '\000'; printf("Copied string %p = '%s'\n",*rv,*rv); + +#ifdef DEBUG + (*rv)[len] = '\000'; + DBG((g_log,8,"Copied string %p = '%s'\n",*rv,*rv)); +#endif *rv += len; } @@ -745,21 +727,25 @@ static int read_string_imp(char **rv, int *slen, ORD8 *buf, int off, int size, i if (slen != NULL) { (*slen) += len; -//printf("~1 slen now = %d\n",*slen); + DBG((g_log,8,"slen now = %d\n",*slen)); } } d1 = 1; - if (slen != NULL) + if (slen != NULL) { (*slen)++; + } if (rv != NULL) { (*rv)[0] = '.'; (*rv)++; } } -//if (slen != NULL) printf("~1 returning slen = %d\n",*slen); + if (slen != NULL) { + DBG((g_log,8,"returning slen = %d\n",*slen)); + } + return off; } @@ -769,29 +755,31 @@ static int read_string(char **rv, ORD8 *buf, int off, int size) { int len = 0, toff = off; char *trv; -//printf("~1 read_string called for off 0x%x\n",off); + DBG((g_log,7,"read_string called for off 0x%x\n",off)); /* See how long it will be */ if ((toff = read_string_imp(NULL, &len, buf, off, size, 0)) < 0) { -//printf("~1 read_string_imp length returned error\n"); + DBG((g_log,7,"read_string_imp length returned error\n")); return toff; } -//printf("~1 read_string_imp got length %d\n",len); + DBG((g_log,7,"read_string_imp got length %d\n",len)); if (len == 0) { -//printf("~1 Got zero length string\n"); + DBG((g_log,7,"Got zero length string\n")); len++; /* Room for null string */ } if ((*rv = trv = malloc(len)) == NULL) { + DBG((g_log,7,"malloc for string failed\n")); return -1; } -//printf("Malloced %p\n",*rv); + DBG((g_log,7,"loced %p\n",*rv)); off = read_string_imp(&trv, NULL, buf, off, size, 0); if (off >= 0) { (*rv)[len-1] = '\000'; -//printf("~1 read string ok: %p = '%s'\n",*rv, *rv); + DBG((g_log,7,"read string ok: %p = '%s'\n",*rv, *rv)); + } else { + DBG((g_log,7,"reading string failed\n")); } -//else printf("~1 reading string failed\n"); return off; } @@ -820,9 +808,9 @@ int parse_query(ORD8 *buf, int off, int size) { return off; } -/* Parse an mDNS reply */ +/* Parse an mDNS reply, and set Friendly name (if known) + formal name + IP */ /* Return updated off value or -1 on error */ -int parse_reply(char **pname, char **pip, ORD8 *buf, int off, int size) { +int parse_reply(char **pname, char **pip, cctype *ptyp, int *pcaflags, ORD8 *buf, int off, int size) { char *sv; int rtype, rclass, rdlength; unsigned int ttl; @@ -831,21 +819,21 @@ int parse_reply(char **pname, char **pip, ORD8 *buf, int off, int size) { if ((off = read_string(&sv, buf, off, size)) < 0) return -1; - DBG((g_log,0," Got string '%s'\n",sv)) + DBG((g_log,0," Got string '%s', now off = 0x%x\n",sv,off)) if ((size - off) < 2) { free(sv); return -1; } rtype = read_ORD16_be(buf + off); off += 2; - DBG((g_log,0," RTYPE = %d\n",rtype)) + DBG((g_log,0," RTYPE = %d, now off = 0x%x\n",rtype,off)) if ((size - off) < 2) { free(sv); return -1; } rclass = read_ORD16_be(buf + off); off += 2; - DBG((g_log,0," RCLASS = 0x%04x\n",rclass)) + DBG((g_log,0," RCLASS = 0x%04x, now off = 0x%x\n",rclass,off)) /* rclass top bit is cache flush bit */ if ((rclass & 0x7fff) != DNS_CLASS_IN) { @@ -857,12 +845,12 @@ int parse_reply(char **pname, char **pip, ORD8 *buf, int off, int size) { if ((size - off) < 4) return -1; ttl = read_ORD32_be(buf + off); off += 4; - DBG((g_log,0," TTL = %u\n",ttl)) + DBG((g_log,0," TTL = %u, now off = 0x%x\n",ttl,off)) if ((size - off) < 2) return -1; rdlength = read_ORD16_be(buf + off); off += 2; - DBG((g_log,0," RDLENGTH = %d\n",rdlength)) + DBG((g_log,0," RDLENGTH = %d, now off = 0x%x\n",rdlength,off)) if ((off + rdlength) > size) { DBG((g_log,0," response RDLENGTH is longer than remaining buffer (%d)\n",size - off)) @@ -872,7 +860,10 @@ int parse_reply(char **pname, char **pip, ORD8 *buf, int off, int size) { /* Just decode the replies we need */ if (rtype == DNS_TYPE_TXT) { /* Check it's a ChromeCast & get its name */ - char *cp; + char *cp, *fn = NULL; + int rdsize = off + rdlength; + int caflags = 0; + if ((cp = strchr(sv, '.')) == NULL) { free(sv); return -1; @@ -884,12 +875,112 @@ int parse_reply(char **pname, char **pip, ORD8 *buf, int off, int size) { return -1; } - DBG((g_log,0," Chromacast '%s'\n", sv)) - if ((*pname = strdup(sv)) == NULL) { - DBG((g_log,0,"strdup failed\n")) - free(sv); - return -1; +#ifdef NEVER + DBG((g_log,0," TXT data:\n")) + adump_bytes(g_log, " ", buf + off, 0, rdlength); +#endif + + /* Chromecast TXT DATA format: + + Buffer is series of strings, each beginning with a byte length. + Each string is id=value, with the following known values: + + id=c17a8e82ee7187d5013e2d12c61bbd40 uuidNoHyphens + rm=669B9448366A01CB + ve=05 SW version ???? + md=Chromecast Model ? + i.e. Chromecast-Audio + i.e. Chromecast-Ultra + i.e. Group + ic=/setup/icon.png Icon file ?? + fn=Chromecast6892 Friendly name + ca=4101 Capabilities bits ??? + st=1 Application running ?? + bs=FA8FCA566645 Application ID ?? + rs=Pattern generator ready Application state ?? + + */ + + /* Parse the Chromacast TX Data */ + for (; off < rdsize; ) { + int slen; + char *ss; + + /* Read the string length */ + if ((rdsize - off) < 1) + goto done_tx; + + slen = read_ORD8(buf + off); off += 1; + + if ((rdsize - off) < slen) + goto done_tx; + + if ((ss = malloc(slen + 1)) == NULL) { + DBG((g_log,0,"malloc for sub-string failed\n")); + return -1; + } + + memcpy(ss, buf + off, slen); + ss[slen] = '\000'; + off += slen; + + DBG((g_log,0," TX Sub-string '%s'\n", ss)) + + /* Record info we want: */ + if (strncmp(ss, "fn=", 3) == 0) { /* Friendly name */ + if ((fn = malloc(slen -3 +1)) == NULL) { + DBG((g_log,0,"malloc for fn-string failed\n")); + return -1; + } + strcpy(fn, ss + 3); + } + + if (strncmp(ss, "ca=", 3) == 0) { /* Capability bits ? */ + caflags = atoi(ss + 3); + } + free(ss); } + + done_tx: + + if (fn != NULL) { + DBG((g_log,0," Chromacast '%s', fn '%s'\n", sv, fn)) + } else { + DBG((g_log,0," Chromacast '%s'\n", sv)) + } + + DBG2((g_log,DLEV,"ca bits 0x%x\n", caflags)) + + if (strncmp(sv, "Chromecast-Ultra", 16) == 0) { + *ptyp = cctyp_Ultra; + } else if (strncmp(sv, "Chromecast-Audio", 16) == 0) { + *ptyp = cctyp_Audio; + } else { + // Hmm. A CC1 or non-Google device. + + /* We're guessing that bit 0 of the ca bits == Video capable */ + /* and bit 1 of the ca bits == Audio capable */ + if (caflags & 1) + *ptyp = cctyp_1; + else if (caflags & 4) + *ptyp = cctyp_Audio; + else + *ptyp = cctyp_Other; + } + + if (fn != NULL) { + *pname = fn; + } else { + free(fn); + if ((*pname = strdup(sv)) == NULL) { + DBG((g_log,0,"strdup failed\n")) + free(sv); + return -1; + } + } + + off = rdsize; + } else if (rtype == DNS_TYPE_A) { /* Should we check name matches ? */ if ((*pip = malloc(3 * 4 + 3 + 1)) == NULL) { @@ -900,6 +991,7 @@ int parse_reply(char **pname, char **pip, ORD8 *buf, int off, int size) { sprintf(*pip, "%d.%d.%d.%d", buf[off], buf[off+1], buf[off+2], buf[off+3]); DBG((g_log,0," V4 address = %s\n",*pip)) + off += rdlength; } else if (rtype == DNS_TYPE_AAAA) { /* The IPV6 address */ /* Should we check name matches ? */ if ((*pip = malloc(8 * 4 + 7 + 1)) == NULL) { @@ -918,10 +1010,11 @@ int parse_reply(char **pname, char **pip, ORD8 *buf, int off, int size) { buf[off+14] * 245 + buf[off+15]); DBG((g_log,0," V6 address = %s\n",*pip)) + off += rdlength; } else { DBG((g_log,0," Skipping reply at 0x%x\n",off)) + off += rdlength; } - off += rdlength; free(sv); return off; @@ -930,7 +1023,7 @@ int parse_reply(char **pname, char **pip, ORD8 *buf, int off, int size) { /* Parse an mDNS reply into a ChromCast name & IP address */ /* Allocate and return name and IP on finding ChromeCast reply, NULL otherwise */ /* Return nz on failure */ -static int parse_dns(char **pname, char **pip, ORD8 *buf, int size) { +static int parse_dns(char **pname, char **pip, cctype *ptyp, int *pcaflags, ORD8 *buf, int size) { int i, off = 0; int id, flags, qdcount, ancount, nscount, arcount; @@ -976,7 +1069,7 @@ static int parse_dns(char **pname, char **pip, ORD8 *buf, int size) { // Parse all the answers (ANCOUNT) for (i = 0; i < ancount; i++) { - if ((off = parse_reply(pname, pip, buf, off, size)) < 0) { + if ((off = parse_reply(pname, pip, ptyp, pcaflags, buf, off, size)) < 0) { DBG((g_log,0," ### Parsing answer failed ###\n")) return 1; } @@ -984,7 +1077,7 @@ static int parse_dns(char **pname, char **pip, ORD8 *buf, int size) { // Parse all the NS records (NSCOUNT) for (i = 0; i < nscount; i++) { - if ((off = parse_reply(pname, pip, buf, off, size)) < 0) { + if ((off = parse_reply(pname, pip, ptyp, pcaflags, buf, off, size)) < 0) { DBG((g_log,0," ### Parsing NS record failed ###\n")) return 1; } @@ -992,7 +1085,7 @@ static int parse_dns(char **pname, char **pip, ORD8 *buf, int size) { // Parse all the addition RR answers (ARCOUNT) for (i = 0; i < arcount; i++) { - if ((off = parse_reply(pname, pip, buf, off, size)) < 0) { + if ((off = parse_reply(pname, pip, ptyp, pcaflags, buf, off, size)) < 0) { DBG((g_log,0," ### Parsing additional records failed ###\n")) return 1; } @@ -1032,6 +1125,35 @@ static int parse_dns(char **pname, char **pip, ORD8 *buf, int size) { ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +*/ + +/* + .ca values: + + Original CC 5 = 0x0005 + Latest CC1 4101 = 0x1005 + Latest CC2 4101 = 0x1005 + Latest CC3 4101 = 0x1005 + Vizio TV 2053 = 0x0805 + Toshiba TV 4101 = 0x1005 + Audio CC 4100 = 0x1004 + Sound bar 2052 = 0x0804 + + Google documents the following Capability strings: + + VIDEO_OUT The receiver supports video output. + VIDEO_IN The receiver supports video input (camera). + AUDIO_OUT The receiver supports audio output. + AUDIO_IN The receiver supports audio input (microphone). + MULTIZONE_GROUP The receiver represents a multi-zone group. + + Which may correspond to ca bits 0, 1, 2, 3 respectively ? + +*/ + +/* + Original CC 1 dump ? + 0000: 00 00 84 00 00 00 00 01 00 00 00 05 0b 5f 67 6f ............._go 0010: 6f 67 6c 65 63 61 73 74 04 5f 74 63 70 05 6c 6f oglecast._tcp.lo 0020: 63 61 6c 00 00 0c 00 01 00 00 11 94 00 11 0e 43 cal............C @@ -1050,6 +1172,207 @@ static int parse_dns(char **pname, char **pip, ORD8 *buf, int size) { 00f0: 09 c0 2e 00 05 00 00 80 00 40 c0 c4 00 2f 80 01 .........@.../.. 0100: 00 00 00 78 00 05 c0 c4 00 01 40 ...x......@ +*/ + +/* + + ChromeCast 1 dump + +0000: 00 00 84 00 00 00 00 01 00 00 00 03 0b 5f 67 6f ............._go +0010: 6f 67 6c 65 63 61 73 74 04 5f 74 63 70 05 6c 6f oglecast._tcp.lo +0020: 63 61 6c 00 00 0c 00 01 00 00 00 78 00 44 2b 43 cal........x.D+C +0030: 68 72 6f 6d 65 63 61 73 74 2d 63 31 37 61 65 38 hromecast-c17ae8 +0040: 38 32 65 37 65 31 38 37 35 64 30 31 33 65 64 32 82e7e1875d013ed2 +0050: 31 32 63 31 36 62 62 64 34 30 0b 5f 67 6f 6f 67 12c16bbd40._goog +0060: 6c 65 63 61 73 74 04 5f 74 63 70 05 6c 6f 63 61 lecast._tcp.loca +0070: 6c 00 2b 43 68 72 6f 6d 65 63 61 73 74 2d 63 31 l.+Chromecast-c1 +0080: 37 61 65 38 38 32 65 37 65 31 38 37 35 64 30 31 7ae882e7e1875d01 +0090: 33 65 64 32 31 32 63 31 36 62 62 64 34 30 0b 5f 3ed212c16bbd40._ +00a0: 67 6f 6f 67 6c 65 63 61 73 74 04 5f 74 63 70 05 googlecast._tcp. +00b0: 6c 6f 63 61 6c 00 00 10 80 01 00 00 11 94 00 82 local........... +00c0: 23 69 64 3d 63 31 37 61 65 38 38 32 65 37 65 31 #id=c17ae882e7e1 +00d0: 38 37 35 64 30 31 33 65 64 32 31 32 63 31 36 62 875d013ed212c16b +00e0: 62 64 34 30 03 72 6d 3d 05 76 65 3d 30 35 0d 6d bd40.rm=.ve=05.m +00f0: 64 3d 43 68 72 6f 6d 65 63 61 73 74 12 69 63 3d d=Chromecast.ic= +0100: 2f 73 65 74 75 70 2f 69 63 6f 6e 2e 70 6e 67 11 /setup/icon.png. +0110: 66 6e 3d 43 68 72 6f 6d 65 63 61 73 74 36 38 39 fn=Chromecast689 +0120: 32 07 63 61 3d 34 31 30 31 04 73 74 3d 30 0f 62 2.ca=4101.st=0.b +0130: 73 3d 46 41 38 46 43 41 35 36 36 36 34 35 03 72 s=FA8FCA566645.r +0140: 73 3d 2b 43 68 72 6f 6d 65 63 61 73 74 2d 63 31 s=+Chromecast-c1 +0150: 37 61 65 38 38 32 65 37 65 31 38 37 35 64 30 31 7ae882e7e1875d01 +0160: 33 65 64 32 31 32 63 31 36 62 62 64 34 30 0b 5f 3ed212c16bbd40._ +0170: 67 6f 6f 67 6c 65 63 61 73 74 04 5f 74 63 70 05 googlecast._tcp. +0180: 6c 6f 63 61 6c 00 00 21 80 01 00 00 00 78 00 32 local..!.....x.2 +0190: 00 00 00 00 1f 49 24 63 31 37 61 65 38 38 32 2d .....I$c17ae882- +01a0: 65 37 65 31 2d 38 37 35 64 2d 30 31 33 65 2d 64 e7e1-875d-013e-d +01b0: 32 31 32 63 31 36 62 62 64 34 30 05 6c 6f 63 61 212c16bbd40.loca +01c0: 6c 00 24 63 31 37 61 65 38 38 32 2d 65 37 65 31 l.$c17ae882-e7e1 +01d0: 2d 38 37 35 64 2d 30 31 33 65 2d 64 32 31 32 63 -875d-013e-d212c +01e0: 31 36 62 62 64 34 30 05 6c 6f 63 61 6c 00 00 01 16bbd40.local... +01f0: 80 01 00 00 00 78 00 04 c0 a8 01 68 .....x.....h + + +ChromeCast 2 dump: + +0000: 00 00 84 00 00 00 00 01 00 00 00 03 0b 5f 67 6f ............._go +0010: 6f 67 6c 65 63 61 73 74 04 5f 74 63 70 05 6c 6f oglecast._tcp.lo +0020: 63 61 6c 00 00 0c 00 01 00 00 00 78 00 44 2b 43 cal........x.D+C +0030: 68 72 6f 6d 65 63 61 73 74 2d 38 32 38 30 30 66 hromecast-82800f +0040: 65 63 33 37 37 36 35 39 38 66 35 38 64 34 61 61 ec3776598f58d4aa +0050: 63 39 65 36 35 64 30 30 30 61 0b 5f 67 6f 6f 67 c9e65d000a._goog +0060: 6c 65 63 61 73 74 04 5f 74 63 70 05 6c 6f 63 61 lecast._tcp.loca +0070: 6c 00 2b 43 68 72 6f 6d 65 63 61 73 74 2d 38 32 l.+Chromecast-82 +0080: 38 30 30 66 65 63 33 37 37 36 35 39 38 66 35 38 800fec3776598f58 +0090: 64 34 61 61 63 39 65 36 35 64 30 30 30 61 0b 5f d4aac9e65d000a._ +00a0: 67 6f 6f 67 6c 65 63 61 73 74 04 5f 74 63 70 05 googlecast._tcp. +00b0: 6c 6f 63 61 6c 00 00 10 80 01 00 00 11 94 00 a9 local........... +00c0: 23 69 64 3d 38 32 38 30 30 66 65 63 33 37 37 36 #id=82800fec3776 +00d0: 35 39 38 66 35 38 64 34 61 61 63 39 65 36 35 64 598f58d4aac9e65d +00e0: 30 30 30 61 13 72 6d 3d 36 36 39 42 39 34 34 38 000a.rm=669B9448 +00f0: 36 33 36 30 41 31 43 42 05 76 65 3d 30 35 0d 6d 6360A1CB.ve=05.m +0100: 64 3d 43 68 72 6f 6d 65 63 61 73 74 12 69 63 3d d=Chromecast.ic= +0110: 2f 73 65 74 75 70 2f 69 63 6f 6e 2e 70 6e 67 11 /setup/icon.png. +0120: 66 6e 3d 43 68 72 6f 6d 65 63 61 73 74 36 35 30 fn=Chromecast650 +0130: 32 07 63 61 3d 34 31 30 31 04 73 74 3d 31 0f 62 2.ca=4101.st=1.b +0140: 73 3d 46 41 38 46 43 41 39 45 33 45 30 31 1a 72 s=FA8FCA9E3E01.r +0150: 73 3d 50 61 74 74 65 72 6e 20 67 65 6e 65 72 61 s=Pattern genera +0160: 74 6f 72 20 72 65 61 64 79 2b 43 68 72 6f 6d 65 tor ready+Chrome +0170: 63 61 73 74 2d 38 32 38 30 30 66 65 63 33 37 37 cast-82800fec377 +0180: 36 35 39 38 66 35 38 64 34 61 61 63 39 65 36 35 6598f58d4aac9e65 +0190: 64 30 30 30 61 0b 5f 67 6f 6f 67 6c 65 63 61 73 d000a._googlecas +01a0: 74 04 5f 74 63 70 05 6c 6f 63 61 6c 00 00 21 80 t._tcp.local..!. +01b0: 01 00 00 00 78 00 32 00 00 00 00 1f 49 24 38 32 ....x.2.....I$82 +01c0: 38 30 30 66 65 63 2d 33 37 37 36 2d 35 39 38 66 800fec-3776-598f +01d0: 2d 35 38 64 34 2d 61 61 63 39 65 36 35 64 30 30 -58d4-aac9e65d00 +01e0: 30 61 05 6c 6f 63 61 6c 00 24 38 32 38 30 30 66 0a.local.$82800f +01f0: 65 63 2d 33 37 37 36 2d 35 39 38 66 2d 35 38 64 ec-3776-598f-58d +0200: 34 2d 61 61 63 39 65 36 35 64 30 30 30 61 05 6c 4-aac9e65d000a.l +0210: 6f 63 61 6c 00 00 01 80 01 00 00 00 78 00 04 0a ocal........x... +0220: 00 00 80 ... + +ChromeCast 3 (Ultra) + +0000: 00 00 84 00 00 00 00 01 00 00 00 03 0b 5f 67 6f ............._go +0010: 6f 67 6c 65 63 61 73 74 04 5f 74 63 70 05 6c 6f oglecast._tcp.lo +0020: 63 61 6c 00 00 0c 00 01 00 00 00 78 00 34 31 43 cal........x.41C +0030: 68 72 6f 6d 65 63 61 73 74 2d 55 6c 74 72 61 2d hromecast-Ultra- +0040: 32 38 36 65 36 63 63 65 38 34 65 32 38 65 61 33 286e6cce84e28ea3 +0050: 36 63 37 63 33 31 39 32 66 33 35 62 65 30 33 65 6c7c3192f35be03e +0060: c0 0c c0 2e 00 10 80 01 00 00 11 94 00 8d 23 69 ..............#i +0070: 64 3d 32 38 36 65 36 63 63 65 38 34 65 32 38 65 d=286e6cce84e28e +0080: 61 33 36 63 37 63 33 31 39 32 66 33 35 62 65 30 a36c7c3192f35be0 +0090: 33 65 03 72 6d 3d 05 76 65 3d 30 35 13 6d 64 3d 3e.rm=.ve=05.md= +00a0: 43 68 72 6f 6d 65 63 61 73 74 20 55 6c 74 72 61 Chromecast Ultra +00b0: 12 69 63 3d 2f 73 65 74 75 70 2f 69 63 6f 6e 2e .ic=/setup/icon. +00c0: 70 6e 67 16 66 6e 3d 43 68 72 6f 6d 65 63 61 73 png.fn=Chromecas +00d0: 74 55 6c 74 72 61 36 32 35 30 07 63 61 3d 34 31 tUltra6250.ca=41 +00e0: 30 31 04 73 74 3d 30 0f 62 73 3d 46 41 38 46 43 01.st=0.bs=FA8FC +00f0: 41 37 30 38 35 42 35 03 72 73 3d c0 2e 00 21 80 A7085B5.rs=...!. +0100: 01 00 00 00 78 00 2d 00 00 00 00 1f 49 24 32 38 ....x.-.....I$28 +0110: 36 65 36 63 63 65 2d 38 34 65 32 2d 38 65 61 33 6e6cce-84e2-8ea3 +0120: 2d 36 63 37 63 2d 33 31 39 32 66 33 35 62 65 30 -6c7c-3192f35be0 +0130: 33 65 c0 1d c1 0d 00 01 80 01 00 00 00 78 00 04 3e...........x.. +0140: 0a 00 01 1d .... + +*/ + + +/* Other non-Google devices: + +Vizio M60-D1 :- Smart TV + +00000000 00 00 84 00 00 00 00 01 00 00 00 03 0b 5f 67 6f |............._go| +00000010 6f 67 6c 65 63 61 73 74 04 5f 74 63 70 05 6c 6f |oglecast._tcp.lo| +00000020 63 61 6c 00 00 0c 00 01 00 00 00 78 00 40 27 4d |cal........x.@'M| +00000030 36 30 2d 44 31 2d 37 63 35 35 36 37 39 31 35 38 |60-D1-7c55679158| +00000040 38 64 63 64 33 37 63 37 37 32 33 31 61 30 64 64 |8dcd37c77231a0dd| +00000050 31 35 61 35 30 36 0b 5f 67 6f 6f 67 6c 65 63 61 |15a506._googleca| +00000060 73 74 04 5f 74 63 70 05 6c 6f 63 61 6c 00 27 4d |st._tcp.local.'M| +00000070 36 30 2d 44 31 2d 37 63 35 35 36 37 39 31 35 38 |60-D1-7c55679158| +00000080 38 64 63 64 33 37 63 37 37 32 33 31 61 30 64 64 |8dcd37c77231a0dd| +00000090 31 35 61 35 30 36 0b 5f 67 6f 6f 67 6c 65 63 61 |15a506._googleca| +000000a0 73 74 04 5f 74 63 70 05 6c 6f 63 61 6c 00 00 10 |st._tcp.local...| +000000b0 80 01 00 00 11 94 00 80 23 69 64 3d 37 63 35 35 |........#id=7c55| +000000c0 36 37 39 31 35 38 38 64 63 64 33 37 63 37 37 32 |6791588dcd37c772| +000000d0 33 31 61 30 64 64 31 35 61 35 30 36 13 72 6d 3d |31a0dd15a506.rm=| +000000e0 31 33 39 46 33 32 34 34 38 34 44 46 41 39 32 34 |139F324484DFA924| +000000f0 05 76 65 3d 30 35 09 6d 64 3d 4d 36 30 2d 44 31 |.ve=05.md=M60-D1| +00000100 12 69 63 3d 2f 73 65 74 75 70 2f 69 63 6f 6e 2e |.ic=/setup/icon.| +00000110 70 6e 67 0f 66 6e 3d 56 69 7a 69 6f 20 4d 36 30 |png.fn=Vizio M60| +00000120 2d 44 31 07 63 61 3d 32 30 35 33 04 73 74 3d 30 |-D1.ca=2053.st=0| +00000130 03 62 73 3d 03 72 73 3d 27 4d 36 30 2d 44 31 2d |.bs=.rs='M60-D1-| +00000140 37 63 35 35 36 37 39 31 35 38 38 64 63 64 33 37 |7c556791588dcd37| +00000150 63 37 37 32 33 31 61 30 64 64 31 35 61 35 30 36 |c77231a0dd15a506| +00000160 0b 5f 67 6f 6f 67 6c 65 63 61 73 74 04 5f 74 63 |._googlecast._tc| +00000170 70 05 6c 6f 63 61 6c 00 00 21 80 01 00 00 00 78 |p.local..!.....x| +00000180 00 32 00 00 00 00 1f 49 24 37 63 35 35 36 37 39 |.2.....I$7c55679| +00000190 31 2d 35 38 38 64 2d 63 64 33 37 2d 63 37 37 32 |1-588d-cd37-c772| +000001a0 2d 33 31 61 30 64 64 31 35 61 35 30 36 05 6c 6f |-31a0dd15a506.lo| +000001b0 63 61 6c 00 24 37 63 35 35 36 37 39 31 2d 35 38 |cal.$7c556791-58| +000001c0 38 64 2d 63 64 33 37 2d 63 37 37 32 2d 33 31 61 |8d-cd37-c772-31a| +000001d0 30 64 64 31 35 61 35 30 36 05 6c 6f 63 61 6c 00 |0dd15a506.local.| +000001e0 00 01 80 01 00 00 00 78 00 04 c0 a8 00 3e |.......x.....>| +000001ee + +SmartCast Sound Bar 3851-D0 :- Sound bar + +00000000 00 00 84 00 00 00 00 01 00 00 00 03 0b 5f 67 6f |............._go| +00000010 6f 67 6c 65 63 61 73 74 04 5f 74 63 70 05 6c 6f |oglecast._tcp.lo| +00000020 63 61 6c 00 00 0c 00 01 00 00 00 78 00 22 09 53 |cal........x.".S| +00000030 42 33 38 35 31 2d 44 30 0b 5f 67 6f 6f 67 6c 65 |B3851-D0._google| +00000040 63 61 73 74 04 5f 74 63 70 05 6c 6f 63 61 6c 00 |cast._tcp.local.| +00000050 09 53 42 33 38 35 31 2d 44 30 0b 5f 67 6f 6f 67 |.SB3851-D0._goog| +00000060 6c 65 63 61 73 74 04 5f 74 63 70 05 6c 6f 63 61 |lecast._tcp.loca| +00000070 6c 00 00 10 80 01 00 00 11 94 00 8a 23 69 64 3d |l...........#id=| +00000080 64 35 36 63 33 66 30 39 36 66 30 31 30 31 36 66 |d56c3f096f01016f| +00000090 33 64 37 30 65 62 62 63 36 32 36 34 65 66 33 31 |3d70ebbc6264ef31| +000000a0 05 76 65 3d 30 34 1e 6d 64 3d 53 6d 61 72 74 43 |.ve=04.md=SmartC| +000000b0 61 73 74 20 53 6f 75 6e 64 20 42 61 72 20 33 38 |ast Sound Bar 38| +000000c0 35 31 2d 44 30 12 69 63 3d 2f 73 65 74 75 70 2f |51-D0.ic=/setup/| +000000d0 69 63 6f 6e 2e 70 6e 67 0c 66 6e 3d 53 42 33 38 |icon.png.fn=SB38| +000000e0 35 31 2d 44 30 07 63 61 3d 32 30 35 32 04 73 74 |51-D0.ca=2052.st| +000000f0 3d 30 0f 62 73 3d 46 46 46 46 46 46 46 46 46 46 |=0.bs=FFFFFFFFFF| +00000100 46 46 03 72 73 3d 09 53 42 33 38 35 31 2d 44 30 |FF.rs=.SB3851-D0| +00000110 0b 5f 67 6f 6f 67 6c 65 63 61 73 74 04 5f 74 63 |._googlecast._tc| +00000120 70 05 6c 6f 63 61 6c 00 00 21 80 01 00 00 00 78 |p.local..!.....x| +00000130 00 17 00 00 00 00 1f 49 09 53 42 33 38 35 31 2d |.......I.SB3851-| +00000140 44 30 05 6c 6f 63 61 6c 00 09 53 42 33 38 35 31 |D0.local..SB3851| +00000150 2d 44 30 05 6c 6f 63 61 6c 00 00 01 80 01 00 00 |-D0.local.......| +00000160 00 78 00 04 c0 a8 00 26 |.x.....&| +00000168 + +ZChromecast Toshiba :- TV ? + +00000000 00 00 84 00 00 00 00 01 00 00 00 03 0b 5f 67 6f |............._go| +00000010 6f 67 6c 65 63 61 73 74 04 5f 74 63 70 05 6c 6f |oglecast._tcp.lo| +00000020 63 61 6c 00 00 0c 00 01 00 00 00 78 00 2e 2b 43 |cal........x..+C| +00000030 68 72 6f 6d 65 63 61 73 74 2d 64 61 30 33 34 62 |hromecast-da034b| +00000040 31 39 30 30 34 34 62 63 38 65 35 33 30 31 34 37 |190044bc8e530147| +00000050 63 37 61 65 33 32 63 35 61 33 c0 0c c0 2e 00 10 |c7ae32c5a3......| +00000060 80 01 00 00 11 94 00 87 23 69 64 3d 64 61 30 33 |........#id=da03| +00000070 34 62 31 39 30 30 34 34 62 63 38 65 35 33 30 31 |4b190044bc8e5301| +00000080 34 37 63 37 61 65 33 32 63 35 61 33 03 72 6d 3d |47c7ae32c5a3.rm=| +00000090 05 76 65 3d 30 35 0d 6d 64 3d 43 68 72 6f 6d 65 |.ve=05.md=Chrome| +000000a0 63 61 73 74 12 69 63 3d 2f 73 65 74 75 70 2f 69 |cast.ic=/setup/i| +000000b0 63 6f 6e 2e 70 6e 67 16 66 6e 3d 5a 43 68 72 6f |con.png.fn=ZChro| +000000c0 6d 65 63 61 73 74 20 54 6f 73 68 69 62 61 07 63 |mecast Toshiba.c| +000000d0 61 3d 34 31 30 31 04 73 74 3d 30 0f 62 73 3d 46 |a=4101.st=0.bs=F| +000000e0 41 38 46 43 41 37 30 32 30 36 32 03 72 73 3d c0 |A8FCA702062.rs=.| +000000f0 2e 00 21 80 01 00 00 00 78 00 2d 00 00 00 00 1f |..!.....x.-.....| +00000100 49 24 64 61 30 33 34 62 31 39 2d 30 30 34 34 2d |I$da034b19-0044-| +00000110 62 63 38 65 2d 35 33 30 31 2d 34 37 63 37 61 65 |bc8e-5301-47c7ae| +00000120 33 32 63 35 61 33 c0 1d c1 01 00 01 80 01 00 00 |32c5a3..........| +00000130 00 78 00 04 c0 a8 00 1b |.x......| +00000138 */ +/* + + Can get info from Chromecast http server at http://XX.XX.XX.XX:8008/ssdp/device-desc.xml + + Get info about the app running: http://XX.XX.XX.XX:8008/apps/ChromeCast + +*/ + + diff --git a/ccast/ccmdns.h b/ccast/ccmdns.h old mode 100644 new mode 100755 index 5144448..7a57808 --- a/ccast/ccmdns.h +++ b/ccast/ccmdns.h @@ -20,13 +20,26 @@ * for the purposes of generating Video Test patches. */ +/* Chrome cast type */ +typedef enum { + cctyp_unkn = 0, /* Unknown */ + cctyp_1, /* Chromecast 1 or General Video */ + cctyp_2, /* Chromecast 2 */ + cctyp_Audio, /* Chromecast Audio or General Audio */ + cctyp_Ultra, /* Chromecast Ultra */ + cctyp_Other /* Non Video/Audio output device */ +} cctype; + +/* Use cctype2str() to dump type */ + /* A record of a Chromecast that may be accessed */ struct _ccast_id { - char *name; /* Chromecast name */ + char *name; /* Chromecast friendly name */ char *ip; /* IP address as string (ie. "10.0.0.128") */ + cctype typ; /* Chromecast type (If known) */ }; typedef struct _ccast_id ccast_id; -/* Get a list of Chromecasts. Return NULL on error */ +/* Get a list of Video out capable Chromecasts. Return NULL on error */ /* Last pointer in array is NULL */ /* Takes 0.5 second to return */ ccast_id **get_ccids(void); diff --git a/ccast/ccmes.c b/ccast/ccmes.c old mode 100644 new mode 100755 diff --git a/ccast/ccmes.h b/ccast/ccmes.h old mode 100644 new mode 100755 diff --git a/ccast/ccpacket.c b/ccast/ccpacket.c old mode 100644 new mode 100755 diff --git a/ccast/ccpacket.h b/ccast/ccpacket.h old mode 100644 new mode 100755 diff --git a/ccast/cctest.c b/ccast/cctest.c old mode 100644 new mode 100755 diff --git a/ccast/chan/cast_channel.pb-c.c b/ccast/chan/cast_channel.pb-c.c old mode 100644 new mode 100755 diff --git a/ccast/chan/cast_channel.pb-c.h b/ccast/chan/cast_channel.pb-c.h old mode 100644 new mode 100755 diff --git a/ccast/chan/protobuf-c.c b/ccast/chan/protobuf-c.c old mode 100644 new mode 100755 diff --git a/ccast/chan/protobuf-c.h b/ccast/chan/protobuf-c.h old mode 100644 new mode 100755 diff --git a/ccast/dpat.c b/ccast/dpat.c old mode 100644 new mode 100755 diff --git a/ccast/filt.c b/ccast/filt.c old mode 100644 new mode 100755 diff --git a/cgats/Jamfile b/cgats/Jamfile old mode 100644 new mode 100755 diff --git a/cgats/License4.txt b/cgats/License4.txt old mode 100644 new mode 100755 diff --git a/cgats/Makefile b/cgats/Makefile old mode 100644 new mode 100755 diff --git a/cgats/Makefile.IBMNT b/cgats/Makefile.IBMNT old mode 100644 new mode 100755 diff --git a/cgats/Makefile.OSX b/cgats/Makefile.OSX old mode 100644 new mode 100755 diff --git a/cgats/Makefile.UNIX b/cgats/Makefile.UNIX old mode 100644 new mode 100755 diff --git a/cgats/Makefile.WNT b/cgats/Makefile.WNT old mode 100644 new mode 100755 diff --git a/cgats/Readme.txt b/cgats/Readme.txt old mode 100644 new mode 100755 diff --git a/cgats/afiles b/cgats/afiles old mode 100644 new mode 100755 diff --git a/cgats/cgats.c b/cgats/cgats.c old mode 100644 new mode 100755 index 3741a5d..578da10 --- a/cgats/cgats.c +++ b/cgats/cgats.c @@ -135,6 +135,7 @@ cgatsAlloc *al /* memory allocator */ p->add_other = add_other; p->get_oi = get_oi; p->add_kword = add_kword; + p->add_kword_at = add_kword_at; p->add_field = add_field; p->add_set = add_set; p->add_setarr = add_setarr; diff --git a/cgats/cgats.h b/cgats/cgats.h old mode 100644 new mode 100755 index bf5c94e..9ef5f7f --- a/cgats/cgats.h +++ b/cgats/cgats.h @@ -132,6 +132,9 @@ struct _cgats { int (*add_kword)(struct _cgats *p, int table, const char *ksym, const char *kdata, const char *kcom); /* Add a new keyword/value pair + optional comment to the table */ /* Return index of new keyword, or -1, errc & err on error */ + int (*add_kword_at)(struct _cgats *p, int table, int pos, const char *ksym, + const char *kdata, const char *kcom); + /* Replace or append a new keyword/value pair + optional comment */ int (*add_field)(struct _cgats *p, int table, const char *fsym, data_type ftype); /* Add a new field to the table */ /* Return index of new field, or -1, -2, errc and err on error */ diff --git a/cgats/cgatsstd.c b/cgats/cgatsstd.c old mode 100644 new mode 100755 diff --git a/cgats/makezip.ksh b/cgats/makezip.ksh old mode 100644 new mode 100755 diff --git a/cgats/pars.c b/cgats/pars.c old mode 100644 new mode 100755 index c3038d5..d4d04bf --- a/cgats/pars.c +++ b/cgats/pars.c @@ -17,6 +17,12 @@ * see the License4.txt file in this directory for licensing details. */ +/* + TTBD: + + Should skip UTF-8 BOM (0xef 0xbb 0xbf) + +*/ #define _PARS_C_ /* Turn on implimentation code */ diff --git a/cgats/pars.h b/cgats/pars.h old mode 100644 new mode 100755 diff --git a/cgats/parsstd.c b/cgats/parsstd.c old mode 100644 new mode 100755 diff --git a/cgats/test.txt b/cgats/test.txt old mode 100644 new mode 100755 diff --git a/doc/3dformat.html b/doc/3dformat.html old mode 100644 new mode 100755 diff --git a/doc/ArgyllCMS_arts_tag.html b/doc/ArgyllCMS_arts_tag.html old mode 100644 new mode 100755 diff --git a/doc/ArgyllDoc.html b/doc/ArgyllDoc.html index 8c6f353..8463fcf 100644 --- a/doc/ArgyllDoc.html +++ b/doc/ArgyllDoc.html @@ -10,9 +10,9 @@ Argyll Documentation Top -

ArgyllCMS documentation index (V1.9.2)
+

ArgyllCMS documentation index (V2.0.0)

- Date:   17th October 2016
+ Date:   17th November 2017
Author: Graeme Gill

Introduction

ArgyllCMS is an ICC compatible color management system, available as @@ -35,15 +35,26 @@ general guide to using the tools for typical color management tasks is also available. A mailing list provides support for more advanced usage.
-

This is Version 1.9.2, a bug fix update to the last - releaseV1.9.1. The first public release of icclib was in November - 1998, and of ArgyllCMS was in October 2000. Code development - commenced in 1995. See Changes +

This is Version 2.0.0, a feature and bug fix update to the last + major releaseV1.9.2. The first public release of icclib was in + November 1998, and of ArgyllCMS was in October 2000. Code + development commenced in 1995. See Changes + + + + + + + + + + + Summary for an overview of changes since the last release. Changes between revisions is detailed in the log.txt file that accompanies the source code.

The latest source code is available from here.
+ href="http://www.argyllcms.com/#Downloads">here.

Please note that instruments are being driven by ArgyllCMS drivers, @@ -125,6 +136,14 @@ + + + + + + + + @@ -247,6 +266,14 @@ + + + + + + + + @@ -271,6 +298,14 @@ + + + + + + + +    - Tele-Spectro-Radiometer

@@ -347,6 +382,14 @@ + + + + + + + + @@ -409,6 +452,14 @@ + + + + + + + + @@ -539,6 +590,14 @@ + + + + + + + + @@ -663,6 +722,14 @@ + + + + + + + + @@ -786,6 +853,14 @@ + + + + + + + + @@ -911,6 +986,14 @@ + + + + + + + + @@ -1034,6 +1117,14 @@ + + + + + + + + @@ -1157,6 +1248,14 @@ + + + + + + + + @@ -1175,6 +1274,18 @@ style="text-decoration: underline;">ColorMunki
Design or Photo           - spot and "swipe" reflective/emissive spectrometer (UV cut only).
+                                                             + + + + The i1Studio version of this instrument is also reported to + work.
+             +             +             +             +             [ The + OEM  XEROX PhaserMeter is also reported to work. ]
    ColorMunki Create or Smile   @@ -1341,6 +1452,14 @@ + + + + + + + + @@ -1465,6 +1584,14 @@ + + + + + + + + @@ -1598,6 +1725,14 @@ + + + + + + + + @@ -1724,6 +1859,14 @@ + + + + + + + + @@ -1854,6 +1997,14 @@ + + + + + + + + @@ -1997,6 +2148,14 @@ + + + + + + + + @@ -2021,6 +2180,14 @@ + + + + + + + + - display colorimeter
    Palette/SwatchMate @@ -2044,6 +2211,14 @@ + + + + + + + + @@ -2065,6 +2240,14 @@ + + + + + + + + - reflective colorimeter

@@ -2090,9 +2273,13 @@ directed to the Argyll's author(s) or the Argyll mailing list, and not to any
other party.

-

There is a list of contributed There is a list of contributed ccss (Colorimeter Correction + Spectral Sample) files for some displays.
+ There is a list of contributed ccmx (Colorimeter Correction - Matrix) files for some display/colorimeter combinations.

+ Matrix) files for some display/colorimeter combinations.
+

Copyright, Licensing & Trade Mark:

@@ -2145,6 +2332,14 @@ + + + + + + + + @@ -2322,6 +2517,14 @@ + + + + + + + + @@ -2443,6 +2646,14 @@ + + + + + + + + @@ -2491,8 +2702,9 @@

The axTLS library is Copyright (c) 2008, Cameron Rich, and the license is detailed in ccast/axTLS/LICENSE file (an "MIT"/"BSD" like permissive free software license).
- It is not used for any security sensitive purpose, but is used - purely to communicate with the ChromeCast.
+ It has been modified to permit multiple threads to use it, but is + not used for any security sensitive purpose, but is used purely to + enable communication with the ChromeCast in a portable fashion.

The X3DOM x3dom.css and x3dom.js files are Copyright (C) 2009 X3DOM and licensed dual @@ -2501,8 +2713,8 @@

"ArgyllCMS" is a trade mark. It is permissible to refer to copies or derivatives of this software as being the same as - ArgyllCMS if they are materially  unchanged, and retain all - the functionality provided by the software made available at + ArgyllCMS if they are materially unchanged, and retain all the + functionality provided by the software made available at www.argyllcms.com. Modified versions of this software that are materially changed or have missing functionality must be clearly marked as such, so as not to to be confused with ArgyllCMS.
@@ -2658,6 +2870,14 @@ calibration + + + + + + + + @@ -2683,6 +2903,14 @@ calibration + + + + + + + + @@ -2693,8 +2921,8 @@ calibration Little Argyll GUI by Russell Cottrell, and for cameras or - scanners, CoCa by - Andrew Stawowczyk Long.
+ scanners, CoCa by Andrew + Stawowczyk Long.

Others can be found with a suitable search.
@@ -2816,6 +3044,14 @@ href="http://www.google.com/search?hl=en&source=hp&q=argyllcms+GUI&a + + + + + + + + @@ -2954,6 +3190,14 @@ href="http://www.google.com/search?hl=en&source=hp&q=argyllcms+GUI&a + + + + + + + + @@ -3078,6 +3322,14 @@ href="http://www.google.com/search?hl=en&source=hp&q=argyllcms+GUI&a + + + + + + + + @@ -3202,6 +3454,14 @@ href="http://www.google.com/search?hl=en&source=hp&q=argyllcms+GUI&a + + + + + + + + @@ -3329,6 +3589,14 @@ href="http://www.google.com/search?hl=en&source=hp&q=argyllcms+GUI&a + + + + + + + + @@ -3453,6 +3721,14 @@ href="http://www.google.com/search?hl=en&source=hp&q=argyllcms+GUI&a + + + + + + + + @@ -3728,6 +4004,14 @@ href="http://www.google.com/search?hl=en&q=windows+command+prompt+tutorial"> + + + + + + + + @@ -3853,6 +4137,14 @@ href="http://www.google.com/search?hl=en&q=windows+command+prompt+tutorial"> + + + + + + + + @@ -3978,6 +4270,14 @@ href="http://www.google.com/search?hl=en&q=windows+command+prompt+tutorial"> + + + + + + + + @@ -4105,6 +4405,14 @@ href="http://www.google.com/search?hl=en&q=windows+command+prompt+tutorial"> + + + + + + + + @@ -4231,6 +4539,14 @@ href="http://www.google.com/search?hl=en&q=windows+command+prompt+tutorial"> + + + + + + + + @@ -4356,6 +4672,14 @@ href="http://www.google.com/search?hl=en&q=windows+command+prompt+tutorial"> + + + + + + + + @@ -4481,6 +4805,14 @@ href="http://www.google.com/search?hl=en&q=windows+command+prompt+tutorial"> + + + + + + + + @@ -4611,6 +4943,14 @@ href="http://www.google.com/search?hl=en&q=windows+command+prompt+tutorial"> + + + + + + + + @@ -4740,6 +5080,14 @@ href="http://www.google.com/search?hl=en&q=windows+command+prompt+tutorial"> + + + + + + + + @@ -4866,6 +5214,14 @@ href="http://www.google.com/search?hl=en&q=windows+command+prompt+tutorial"> + + + + + + + + @@ -4991,6 +5347,14 @@ href="http://www.google.com/search?hl=en&q=windows+command+prompt+tutorial"> + + + + + + + + @@ -5055,6 +5419,14 @@ href="http://www.google.com/search?hl=en&q=windows+command+prompt+tutorial"> + + + + + + + + @@ -5180,6 +5552,14 @@ href="http://www.google.com/search?hl=en&q=windows+command+prompt+tutorial"> + + + + + + + + @@ -5235,6 +5615,14 @@ href="http://www.google.com/search?hl=en&q=windows+command+prompt+tutorial"> + + + + + + + + @@ -5361,6 +5749,14 @@ href="http://www.google.com/search?hl=en&q=windows+command+prompt+tutorial"> + + + + + + + + @@ -5485,6 +5881,14 @@ href="http://www.google.com/search?hl=en&q=windows+command+prompt+tutorial"> + + + + + + + + @@ -5610,6 +6014,14 @@ href="http://www.google.com/search?hl=en&q=windows+command+prompt+tutorial"> + + + + + + + + @@ -5736,6 +6148,14 @@ href="http://www.google.com/search?hl=en&q=windows+command+prompt+tutorial"> + + + + + + + + @@ -5863,6 +6283,14 @@ href="http://www.google.com/search?hl=en&q=windows+command+prompt+tutorial"> + + + + + + + + @@ -5988,6 +6416,14 @@ href="http://www.google.com/search?hl=en&q=windows+command+prompt+tutorial"> + + + + + + + + @@ -6112,6 +6548,14 @@ href="http://www.google.com/search?hl=en&q=windows+command+prompt+tutorial"> + + + + + + + + @@ -6237,6 +6681,14 @@ href="http://www.google.com/search?hl=en&q=windows+command+prompt+tutorial"> + + + + + + + + @@ -6362,6 +6814,14 @@ href="http://www.google.com/search?hl=en&q=windows+command+prompt+tutorial"> + + + + + + + + @@ -6487,6 +6947,14 @@ href="http://www.google.com/search?hl=en&q=windows+command+prompt+tutorial"> + + + + + + + + @@ -6620,6 +7088,14 @@ href="http://www.google.com/search?hl=en&q=windows+command+prompt+tutorial"> + + + + + + + + @@ -6744,6 +7220,14 @@ href="http://www.google.com/search?hl=en&q=windows+command+prompt+tutorial"> + + + + + + + + @@ -6869,6 +7353,14 @@ href="http://www.google.com/search?hl=en&q=windows+command+prompt+tutorial"> + + + + + + + + @@ -6996,6 +7488,14 @@ href="http://www.google.com/search?hl=en&q=windows+command+prompt+tutorial"> + + + + + + + + @@ -7120,6 +7620,14 @@ href="http://www.google.com/search?hl=en&q=windows+command+prompt+tutorial"> + + + + + + + + @@ -7244,6 +7752,14 @@ href="http://www.google.com/search?hl=en&q=windows+command+prompt+tutorial"> + + + + + + + + @@ -7367,6 +7883,14 @@ href="http://www.google.com/search?hl=en&q=windows+command+prompt+tutorial"> + + + + + + + + @@ -7495,6 +8019,14 @@ href="http://www.google.com/search?hl=en&q=windows+command+prompt+tutorial"> + + + + + + + + @@ -7618,6 +8150,14 @@ href="http://www.google.com/search?hl=en&q=windows+command+prompt+tutorial"> + + + + + + + + @@ -7685,6 +8225,14 @@ href="http://www.google.com/search?hl=en&q=windows+command+prompt+tutorial"> + + + + + + + + @@ -7809,6 +8357,14 @@ href="http://www.google.com/search?hl=en&q=windows+command+prompt+tutorial"> + + + + + + + + @@ -7934,6 +8490,14 @@ href="http://www.google.com/search?hl=en&q=windows+command+prompt+tutorial"> + + + + + + + + @@ -8061,6 +8625,14 @@ href="http://www.google.com/search?hl=en&q=windows+command+prompt+tutorial"> + + + + + + + + @@ -8191,6 +8763,14 @@ href="http://www.google.com/search?hl=en&q=windows+command+prompt+tutorial"> + + + + + + + + @@ -8322,6 +8902,14 @@ href="http://www.google.com/search?hl=en&q=windows+command+prompt+tutorial"> + + + + + + + + @@ -8350,6 +8938,14 @@ href="http://www.google.com/search?hl=en&q=windows+command+prompt+tutorial"> + + + + + + + + @@ -8361,7 +8957,7 @@ href="http://www.google.com/search?hl=en&q=windows+command+prompt+tutorial"> spectral .ti3 or .sp readings into CIE XYZ and D50 L*a*b* readings. - Apply FWA, plot spectrums.
+ Apply FWA, plot spectrums. Convert to/from XRGA standard.
 

Main Tools Alphabetic Listing:

@@ -8477,6 +9073,14 @@ href="http://www.google.com/search?hl=en&q=windows+command+prompt+tutorial"> + + + + + + + + @@ -8601,6 +9205,14 @@ href="http://www.google.com/search?hl=en&q=windows+command+prompt+tutorial"> + + + + + + + + @@ -8726,6 +9338,14 @@ href="http://www.google.com/search?hl=en&q=windows+command+prompt+tutorial"> + + + + + + + + @@ -8851,6 +9471,14 @@ href="http://www.google.com/search?hl=en&q=windows+command+prompt+tutorial"> + + + + + + + + @@ -8975,6 +9603,14 @@ href="http://www.google.com/search?hl=en&q=windows+command+prompt+tutorial"> + + + + + + + + @@ -9101,6 +9737,14 @@ href="http://www.google.com/search?hl=en&q=windows+command+prompt+tutorial"> + + + + + + + + @@ -9225,6 +9869,14 @@ href="http://www.google.com/search?hl=en&q=windows+command+prompt+tutorial"> + + + + + + + + @@ -9350,6 +10002,14 @@ href="http://www.google.com/search?hl=en&q=windows+command+prompt+tutorial"> + + + + + + + + @@ -9481,6 +10141,14 @@ href="http://www.google.com/search?hl=en&q=windows+command+prompt+tutorial"> + + + + + + + + @@ -9606,6 +10274,14 @@ href="http://www.google.com/search?hl=en&q=windows+command+prompt+tutorial"> + + + + + + + + @@ -9732,6 +10408,14 @@ href="http://www.google.com/search?hl=en&q=windows+command+prompt+tutorial"> + + + + + + + + @@ -9861,6 +10545,14 @@ href="http://www.google.com/search?hl=en&q=windows+command+prompt+tutorial"> + + + + + + + + @@ -9986,6 +10678,14 @@ href="http://www.google.com/search?hl=en&q=windows+command+prompt+tutorial"> + + + + + + + + @@ -10110,6 +10810,14 @@ href="http://www.google.com/search?hl=en&q=windows+command+prompt+tutorial"> + + + + + + + + @@ -10234,6 +10942,14 @@ href="http://www.google.com/search?hl=en&q=windows+command+prompt+tutorial"> + + + + + + + + @@ -10358,6 +11074,14 @@ href="http://www.google.com/search?hl=en&q=windows+command+prompt+tutorial"> + + + + + + + + @@ -10483,6 +11207,14 @@ href="http://www.google.com/search?hl=en&q=windows+command+prompt+tutorial"> + + + + + + + + @@ -10607,6 +11339,14 @@ href="http://www.google.com/search?hl=en&q=windows+command+prompt+tutorial"> + + + + + + + + @@ -10731,6 +11471,14 @@ href="http://www.google.com/search?hl=en&q=windows+command+prompt+tutorial"> + + + + + + + + @@ -10855,6 +11603,14 @@ href="http://www.google.com/search?hl=en&q=windows+command+prompt+tutorial"> + + + + + + + + @@ -10983,6 +11739,14 @@ href="http://www.google.com/search?hl=en&q=windows+command+prompt+tutorial"> + + + + + + + + @@ -11012,6 +11776,14 @@ href="http://www.google.com/search?hl=en&q=windows+command+prompt+tutorial"> + + + + + + + + @@ -11137,6 +11909,14 @@ href="http://www.google.com/search?hl=en&q=windows+command+prompt+tutorial"> + + + + + + + + @@ -11261,6 +12041,14 @@ href="http://www.google.com/search?hl=en&q=windows+command+prompt+tutorial"> + + + + + + + + @@ -11386,6 +12174,14 @@ href="http://www.google.com/search?hl=en&q=windows+command+prompt+tutorial"> + + + + + + + + @@ -11515,6 +12311,14 @@ href="http://www.google.com/search?hl=en&q=windows+command+prompt+tutorial"> + + + + + + + + @@ -11639,6 +12443,14 @@ href="http://www.google.com/search?hl=en&q=windows+command+prompt+tutorial"> + + + + + + + + @@ -11764,6 +12576,14 @@ href="http://www.google.com/search?hl=en&q=windows+command+prompt+tutorial"> + + + + + + + + @@ -11894,6 +12714,14 @@ href="http://www.google.com/search?hl=en&q=windows+command+prompt+tutorial"> + + + + + + + + @@ -12019,6 +12847,14 @@ href="http://www.google.com/search?hl=en&q=windows+command+prompt+tutorial"> + + + + + + + + @@ -12145,6 +12981,14 @@ href="http://www.google.com/search?hl=en&q=windows+command+prompt+tutorial"> + + + + + + + + @@ -12156,7 +13000,7 @@ href="http://www.google.com/search?hl=en&q=windows+command+prompt+tutorial"> spectral .ti3 or .sp readings into CIE XYZ and D50 L*a*b* readings. - Apply FWA, plot spectrums.
+ Apply FWA, plot spectrums. Convert to/from XRGA standard.
specplot       @@ -12271,6 +13115,14 @@ href="http://www.google.com/search?hl=en&q=windows+command+prompt+tutorial"> + + + + + + + + @@ -12394,6 +13246,14 @@ href="http://www.google.com/search?hl=en&q=windows+command+prompt+tutorial"> + + + + + + + + @@ -12518,6 +13378,14 @@ href="http://www.google.com/search?hl=en&q=windows+command+prompt+tutorial"> + + + + + + + + @@ -12642,6 +13510,14 @@ href="http://www.google.com/search?hl=en&q=windows+command+prompt+tutorial"> + + + + + + + + @@ -12767,6 +13643,14 @@ href="http://www.google.com/search?hl=en&q=windows+command+prompt+tutorial"> + + + + + + + + @@ -12891,6 +13775,14 @@ href="http://www.google.com/search?hl=en&q=windows+command+prompt+tutorial"> + + + + + + + + @@ -13016,6 +13908,14 @@ href="http://www.google.com/search?hl=en&q=windows+command+prompt+tutorial"> + + + + + + + + @@ -13145,6 +14045,14 @@ href="http://www.google.com/search?hl=en&q=windows+command+prompt+tutorial"> + + + + + + + + @@ -13271,6 +14179,14 @@ href="http://www.google.com/search?hl=en&q=windows+command+prompt+tutorial"> + + + + + + + + @@ -13396,6 +14312,14 @@ href="http://www.google.com/search?hl=en&q=windows+command+prompt+tutorial"> + + + + + + + + @@ -13548,6 +14472,14 @@ href="http://www.google.com/search?hl=en&q=windows+command+prompt+tutorial"> + + + + + + + + @@ -13671,6 +14603,14 @@ href="http://www.google.com/search?hl=en&q=windows+command+prompt+tutorial"> + + + + + + + + @@ -13794,6 +14734,14 @@ href="http://www.google.com/search?hl=en&q=windows+command+prompt+tutorial"> + + + + + + + + @@ -13921,6 +14869,14 @@ href="http://www.google.com/search?hl=en&q=windows+command+prompt+tutorial"> + + + + + + + + @@ -14045,6 +15001,14 @@ href="http://www.google.com/search?hl=en&q=windows+command+prompt+tutorial"> + + + + + + + + @@ -14168,6 +15132,14 @@ href="http://www.google.com/search?hl=en&q=windows+command+prompt+tutorial"> + + + + + + + + @@ -14299,6 +15271,14 @@ href="http://www.google.com/search?hl=en&q=windows+command+prompt+tutorial"> + + + + + + + + @@ -14422,6 +15402,14 @@ href="http://www.google.com/search?hl=en&q=windows+command+prompt+tutorial"> + + + + + + + + @@ -14545,6 +15533,14 @@ href="http://www.google.com/search?hl=en&q=windows+command+prompt+tutorial"> + + + + + + + + @@ -14668,6 +15664,14 @@ href="http://www.google.com/search?hl=en&q=windows+command+prompt+tutorial"> + + + + + + + + @@ -14791,6 +15795,14 @@ href="http://www.google.com/search?hl=en&q=windows+command+prompt+tutorial"> + + + + + + + + @@ -14919,6 +15931,14 @@ href="http://www.google.com/search?hl=en&q=windows+command+prompt+tutorial"> + + + + + + + + diff --git a/doc/ArgyllFlow.jpg b/doc/ArgyllFlow.jpg old mode 100644 new mode 100755 diff --git a/doc/ArgyllFlowThumb.jpg b/doc/ArgyllFlowThumb.jpg old mode 100644 new mode 100755 diff --git a/doc/CMP_DT_003.jpg b/doc/CMP_DT_003.jpg old mode 100644 new mode 100755 diff --git a/doc/CMP_Digital_Target-4.jpg b/doc/CMP_Digital_Target-4.jpg old mode 100644 new mode 100755 diff --git a/doc/CMP_Digital_Target-7.jpg b/doc/CMP_Digital_Target-7.jpg old mode 100644 new mode 100755 diff --git a/doc/CRTspectrum.jpg b/doc/CRTspectrum.jpg old mode 100644 new mode 100755 diff --git a/doc/ChangesSummary.html b/doc/ChangesSummary.html index 3549a79..354437d 100644 --- a/doc/ChangesSummary.html +++ b/doc/ChangesSummary.html @@ -16,6 +16,88 @@

Summary of Argyll CMS Changes since last release

For a complete and more detailed list of changes, please see the log.txt file.

+

[V1.9.2 -> V2.0.0] 17th November 2017

+

[V1.9.1 -> V1.9.2] 17th October 2016

[V1.8.3 -> V1.9.1] 28th September 2016