tesseract_bin 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.document +5 -0
- data/Gemfile +14 -0
- data/Gemfile.lock +23 -0
- data/LICENSE.txt +20 -0
- data/README.rdoc +19 -0
- data/Rakefile +46 -0
- data/VERSION +1 -0
- data/ext/tesseract_bin/extconf.rb +17 -0
- data/lib/tesseract_bin.rb +12 -0
- data/tesseract_bin.gemspec +660 -0
- data/test/helper.rb +18 -0
- data/test/test_tesseract_bin.rb +7 -0
- data/vendor/tesseract-2.04/AUTHORS +8 -0
- data/vendor/tesseract-2.04/COPYING +23 -0
- data/vendor/tesseract-2.04/ChangeLog +71 -0
- data/vendor/tesseract-2.04/INSTALL +229 -0
- data/vendor/tesseract-2.04/Makefile.am +20 -0
- data/vendor/tesseract-2.04/Makefile.in +641 -0
- data/vendor/tesseract-2.04/NEWS +1 -0
- data/vendor/tesseract-2.04/README +138 -0
- data/vendor/tesseract-2.04/ReleaseNotes +213 -0
- data/vendor/tesseract-2.04/StdAfx.cpp +8 -0
- data/vendor/tesseract-2.04/StdAfx.h +24 -0
- data/vendor/tesseract-2.04/ccmain/Makefile.am +63 -0
- data/vendor/tesseract-2.04/ccmain/Makefile.in +735 -0
- data/vendor/tesseract-2.04/ccmain/adaptions.cpp +1082 -0
- data/vendor/tesseract-2.04/ccmain/adaptions.h +109 -0
- data/vendor/tesseract-2.04/ccmain/applybox.cpp +891 -0
- data/vendor/tesseract-2.04/ccmain/applybox.h +73 -0
- data/vendor/tesseract-2.04/ccmain/baseapi.cpp +1105 -0
- data/vendor/tesseract-2.04/ccmain/baseapi.h +256 -0
- data/vendor/tesseract-2.04/ccmain/blobcmp.cpp +76 -0
- data/vendor/tesseract-2.04/ccmain/blobcmp.h +29 -0
- data/vendor/tesseract-2.04/ccmain/callnet.cpp +93 -0
- data/vendor/tesseract-2.04/ccmain/callnet.h +32 -0
- data/vendor/tesseract-2.04/ccmain/charcut.cpp +704 -0
- data/vendor/tesseract-2.04/ccmain/charcut.h +120 -0
- data/vendor/tesseract-2.04/ccmain/charsample.cpp +699 -0
- data/vendor/tesseract-2.04/ccmain/control.cpp +1842 -0
- data/vendor/tesseract-2.04/ccmain/control.h +198 -0
- data/vendor/tesseract-2.04/ccmain/docqual.cpp +1481 -0
- data/vendor/tesseract-2.04/ccmain/docqual.h +155 -0
- data/vendor/tesseract-2.04/ccmain/expandblob.cpp +82 -0
- data/vendor/tesseract-2.04/ccmain/expandblob.h +13 -0
- data/vendor/tesseract-2.04/ccmain/fixspace.cpp +989 -0
- data/vendor/tesseract-2.04/ccmain/fixspace.h +72 -0
- data/vendor/tesseract-2.04/ccmain/fixxht.cpp +825 -0
- data/vendor/tesseract-2.04/ccmain/fixxht.h +93 -0
- data/vendor/tesseract-2.04/ccmain/imgscale.cpp +154 -0
- data/vendor/tesseract-2.04/ccmain/imgscale.h +32 -0
- data/vendor/tesseract-2.04/ccmain/matmatch.cpp +391 -0
- data/vendor/tesseract-2.04/ccmain/matmatch.h +48 -0
- data/vendor/tesseract-2.04/ccmain/output.cpp +1273 -0
- data/vendor/tesseract-2.04/ccmain/output.h +116 -0
- data/vendor/tesseract-2.04/ccmain/pagewalk.cpp +666 -0
- data/vendor/tesseract-2.04/ccmain/pagewalk.h +155 -0
- data/vendor/tesseract-2.04/ccmain/paircmp.cpp +107 -0
- data/vendor/tesseract-2.04/ccmain/paircmp.h +43 -0
- data/vendor/tesseract-2.04/ccmain/pgedit.cpp +1867 -0
- data/vendor/tesseract-2.04/ccmain/pgedit.h +181 -0
- data/vendor/tesseract-2.04/ccmain/reject.cpp +1775 -0
- data/vendor/tesseract-2.04/ccmain/reject.h +181 -0
- data/vendor/tesseract-2.04/ccmain/scaleimg.cpp +366 -0
- data/vendor/tesseract-2.04/ccmain/scaleimg.h +35 -0
- data/vendor/tesseract-2.04/ccmain/tessbox.cpp +375 -0
- data/vendor/tesseract-2.04/ccmain/tessbox.h +110 -0
- data/vendor/tesseract-2.04/ccmain/tessedit.cpp +278 -0
- data/vendor/tesseract-2.04/ccmain/tessedit.h +49 -0
- data/vendor/tesseract-2.04/ccmain/tessembedded.cpp +110 -0
- data/vendor/tesseract-2.04/ccmain/tessembedded.h +38 -0
- data/vendor/tesseract-2.04/ccmain/tesseractfull.cc +37 -0
- data/vendor/tesseract-2.04/ccmain/tesseractmain.cpp +387 -0
- data/vendor/tesseract-2.04/ccmain/tesseractmain.h +58 -0
- data/vendor/tesseract-2.04/ccmain/tessio.h +110 -0
- data/vendor/tesseract-2.04/ccmain/tessvars.cpp +38 -0
- data/vendor/tesseract-2.04/ccmain/tessvars.h +48 -0
- data/vendor/tesseract-2.04/ccmain/tfacep.h +62 -0
- data/vendor/tesseract-2.04/ccmain/tfacepp.cpp +443 -0
- data/vendor/tesseract-2.04/ccmain/tfacepp.h +85 -0
- data/vendor/tesseract-2.04/ccmain/tstruct.cpp +549 -0
- data/vendor/tesseract-2.04/ccmain/tstruct.h +108 -0
- data/vendor/tesseract-2.04/ccmain/varabled.cpp +346 -0
- data/vendor/tesseract-2.04/ccmain/varabled.h +125 -0
- data/vendor/tesseract-2.04/ccmain/werdit.cpp +193 -0
- data/vendor/tesseract-2.04/ccmain/werdit.h +67 -0
- data/vendor/tesseract-2.04/ccstruct/Makefile.am +25 -0
- data/vendor/tesseract-2.04/ccstruct/Makefile.in +650 -0
- data/vendor/tesseract-2.04/ccstruct/blckerr.h +29 -0
- data/vendor/tesseract-2.04/ccstruct/blobbox.cpp +778 -0
- data/vendor/tesseract-2.04/ccstruct/blobbox.h +381 -0
- data/vendor/tesseract-2.04/ccstruct/blobs.cpp +247 -0
- data/vendor/tesseract-2.04/ccstruct/blobs.h +119 -0
- data/vendor/tesseract-2.04/ccstruct/blread.cpp +537 -0
- data/vendor/tesseract-2.04/ccstruct/blread.h +63 -0
- data/vendor/tesseract-2.04/ccstruct/callcpp.cpp +252 -0
- data/vendor/tesseract-2.04/ccstruct/coutln.cpp +650 -0
- data/vendor/tesseract-2.04/ccstruct/coutln.h +186 -0
- data/vendor/tesseract-2.04/ccstruct/crakedge.h +39 -0
- data/vendor/tesseract-2.04/ccstruct/genblob.cpp +133 -0
- data/vendor/tesseract-2.04/ccstruct/genblob.h +52 -0
- data/vendor/tesseract-2.04/ccstruct/hpddef.h +39 -0
- data/vendor/tesseract-2.04/ccstruct/hpdsizes.h +8 -0
- data/vendor/tesseract-2.04/ccstruct/ipoints.h +479 -0
- data/vendor/tesseract-2.04/ccstruct/labls.cpp +188 -0
- data/vendor/tesseract-2.04/ccstruct/labls.h +38 -0
- data/vendor/tesseract-2.04/ccstruct/linlsq.cpp +249 -0
- data/vendor/tesseract-2.04/ccstruct/linlsq.h +102 -0
- data/vendor/tesseract-2.04/ccstruct/lmedsq.cpp +453 -0
- data/vendor/tesseract-2.04/ccstruct/lmedsq.h +84 -0
- data/vendor/tesseract-2.04/ccstruct/mod128.cpp +100 -0
- data/vendor/tesseract-2.04/ccstruct/mod128.h +85 -0
- data/vendor/tesseract-2.04/ccstruct/normalis.cpp +176 -0
- data/vendor/tesseract-2.04/ccstruct/normalis.h +108 -0
- data/vendor/tesseract-2.04/ccstruct/ocrblock.cpp +369 -0
- data/vendor/tesseract-2.04/ccstruct/ocrblock.h +235 -0
- data/vendor/tesseract-2.04/ccstruct/ocrrow.cpp +216 -0
- data/vendor/tesseract-2.04/ccstruct/ocrrow.h +133 -0
- data/vendor/tesseract-2.04/ccstruct/pageblk.cpp +879 -0
- data/vendor/tesseract-2.04/ccstruct/pageblk.h +318 -0
- data/vendor/tesseract-2.04/ccstruct/pageres.cpp +330 -0
- data/vendor/tesseract-2.04/ccstruct/pageres.h +313 -0
- data/vendor/tesseract-2.04/ccstruct/pdblock.cpp +361 -0
- data/vendor/tesseract-2.04/ccstruct/pdblock.h +181 -0
- data/vendor/tesseract-2.04/ccstruct/pdclass.h +54 -0
- data/vendor/tesseract-2.04/ccstruct/points.cpp +102 -0
- data/vendor/tesseract-2.04/ccstruct/points.h +299 -0
- data/vendor/tesseract-2.04/ccstruct/polyaprx.cpp +588 -0
- data/vendor/tesseract-2.04/ccstruct/polyaprx.h +51 -0
- data/vendor/tesseract-2.04/ccstruct/polyblk.cpp +398 -0
- data/vendor/tesseract-2.04/ccstruct/polyblk.h +122 -0
- data/vendor/tesseract-2.04/ccstruct/polyblob.cpp +357 -0
- data/vendor/tesseract-2.04/ccstruct/polyblob.h +102 -0
- data/vendor/tesseract-2.04/ccstruct/polyvert.cpp +23 -0
- data/vendor/tesseract-2.04/ccstruct/polyvert.h +58 -0
- data/vendor/tesseract-2.04/ccstruct/poutline.cpp +441 -0
- data/vendor/tesseract-2.04/ccstruct/poutline.h +125 -0
- data/vendor/tesseract-2.04/ccstruct/quadlsq.cpp +147 -0
- data/vendor/tesseract-2.04/ccstruct/quadlsq.h +67 -0
- data/vendor/tesseract-2.04/ccstruct/quadratc.cpp +21 -0
- data/vendor/tesseract-2.04/ccstruct/quadratc.h +63 -0
- data/vendor/tesseract-2.04/ccstruct/quspline.cpp +382 -0
- data/vendor/tesseract-2.04/ccstruct/quspline.h +113 -0
- data/vendor/tesseract-2.04/ccstruct/ratngs.cpp +372 -0
- data/vendor/tesseract-2.04/ccstruct/ratngs.h +198 -0
- data/vendor/tesseract-2.04/ccstruct/rect.cpp +229 -0
- data/vendor/tesseract-2.04/ccstruct/rect.h +320 -0
- data/vendor/tesseract-2.04/ccstruct/rejctmap.cpp +545 -0
- data/vendor/tesseract-2.04/ccstruct/rejctmap.h +284 -0
- data/vendor/tesseract-2.04/ccstruct/rwpoly.cpp +89 -0
- data/vendor/tesseract-2.04/ccstruct/rwpoly.h +45 -0
- data/vendor/tesseract-2.04/ccstruct/statistc.cpp +905 -0
- data/vendor/tesseract-2.04/ccstruct/statistc.h +135 -0
- data/vendor/tesseract-2.04/ccstruct/stepblob.cpp +296 -0
- data/vendor/tesseract-2.04/ccstruct/stepblob.h +88 -0
- data/vendor/tesseract-2.04/ccstruct/txtregn.cpp +230 -0
- data/vendor/tesseract-2.04/ccstruct/txtregn.h +155 -0
- data/vendor/tesseract-2.04/ccstruct/vecfuncs.cpp +63 -0
- data/vendor/tesseract-2.04/ccstruct/vecfuncs.h +91 -0
- data/vendor/tesseract-2.04/ccstruct/werd.cpp +967 -0
- data/vendor/tesseract-2.04/ccstruct/werd.h +277 -0
- data/vendor/tesseract-2.04/ccutil/Makefile.am +19 -0
- data/vendor/tesseract-2.04/ccutil/Makefile.in +626 -0
- data/vendor/tesseract-2.04/ccutil/basedir.cpp +118 -0
- data/vendor/tesseract-2.04/ccutil/basedir.h +32 -0
- data/vendor/tesseract-2.04/ccutil/bits16.cpp +30 -0
- data/vendor/tesseract-2.04/ccutil/bits16.h +61 -0
- data/vendor/tesseract-2.04/ccutil/boxread.cpp +105 -0
- data/vendor/tesseract-2.04/ccutil/boxread.h +44 -0
- data/vendor/tesseract-2.04/ccutil/clst.cpp +626 -0
- data/vendor/tesseract-2.04/ccutil/clst.h +1085 -0
- data/vendor/tesseract-2.04/ccutil/debugwin.cpp +500 -0
- data/vendor/tesseract-2.04/ccutil/debugwin.h +103 -0
- data/vendor/tesseract-2.04/ccutil/elst.cpp +593 -0
- data/vendor/tesseract-2.04/ccutil/elst.h +1125 -0
- data/vendor/tesseract-2.04/ccutil/elst2.cpp +606 -0
- data/vendor/tesseract-2.04/ccutil/elst2.h +1121 -0
- data/vendor/tesseract-2.04/ccutil/errcode.cpp +104 -0
- data/vendor/tesseract-2.04/ccutil/errcode.h +104 -0
- data/vendor/tesseract-2.04/ccutil/fileerr.h +34 -0
- data/vendor/tesseract-2.04/ccutil/globaloc.cpp +115 -0
- data/vendor/tesseract-2.04/ccutil/globaloc.h +40 -0
- data/vendor/tesseract-2.04/ccutil/hashfn.cpp +57 -0
- data/vendor/tesseract-2.04/ccutil/hashfn.h +30 -0
- data/vendor/tesseract-2.04/ccutil/host.h +180 -0
- data/vendor/tesseract-2.04/ccutil/hosthplb.h +1 -0
- data/vendor/tesseract-2.04/ccutil/lsterr.h +43 -0
- data/vendor/tesseract-2.04/ccutil/mainblk.cpp +126 -0
- data/vendor/tesseract-2.04/ccutil/mainblk.h +39 -0
- data/vendor/tesseract-2.04/ccutil/memblk.cpp +1106 -0
- data/vendor/tesseract-2.04/ccutil/memblk.h +189 -0
- data/vendor/tesseract-2.04/ccutil/memry.cpp +532 -0
- data/vendor/tesseract-2.04/ccutil/memry.h +192 -0
- data/vendor/tesseract-2.04/ccutil/memryerr.h +38 -0
- data/vendor/tesseract-2.04/ccutil/mfcpch.cpp +5 -0
- data/vendor/tesseract-2.04/ccutil/mfcpch.h +37 -0
- data/vendor/tesseract-2.04/ccutil/ndminx.h +31 -0
- data/vendor/tesseract-2.04/ccutil/notdll.h +28 -0
- data/vendor/tesseract-2.04/ccutil/nwmain.h +176 -0
- data/vendor/tesseract-2.04/ccutil/ocrclass.h +345 -0
- data/vendor/tesseract-2.04/ccutil/ocrshell.cpp +772 -0
- data/vendor/tesseract-2.04/ccutil/ocrshell.h +191 -0
- data/vendor/tesseract-2.04/ccutil/platform.h +18 -0
- data/vendor/tesseract-2.04/ccutil/scanutils.cpp +543 -0
- data/vendor/tesseract-2.04/ccutil/scanutils.h +55 -0
- data/vendor/tesseract-2.04/ccutil/secname.h +9 -0
- data/vendor/tesseract-2.04/ccutil/serialis.cpp +117 -0
- data/vendor/tesseract-2.04/ccutil/serialis.h +93 -0
- data/vendor/tesseract-2.04/ccutil/stderr.h +26 -0
- data/vendor/tesseract-2.04/ccutil/strngs.cpp +495 -0
- data/vendor/tesseract-2.04/ccutil/strngs.h +138 -0
- data/vendor/tesseract-2.04/ccutil/tessclas.h +135 -0
- data/vendor/tesseract-2.04/ccutil/tessopt.cpp +61 -0
- data/vendor/tesseract-2.04/ccutil/tessopt.h +30 -0
- data/vendor/tesseract-2.04/ccutil/tprintf.cpp +122 -0
- data/vendor/tesseract-2.04/ccutil/tprintf.h +35 -0
- data/vendor/tesseract-2.04/ccutil/unichar.cpp +144 -0
- data/vendor/tesseract-2.04/ccutil/unichar.h +84 -0
- data/vendor/tesseract-2.04/ccutil/unicharmap.cpp +172 -0
- data/vendor/tesseract-2.04/ccutil/unicharmap.h +82 -0
- data/vendor/tesseract-2.04/ccutil/unicharset.cpp +307 -0
- data/vendor/tesseract-2.04/ccutil/unicharset.h +267 -0
- data/vendor/tesseract-2.04/ccutil/varable.cpp +672 -0
- data/vendor/tesseract-2.04/ccutil/varable.h +419 -0
- data/vendor/tesseract-2.04/classify/Makefile.am +24 -0
- data/vendor/tesseract-2.04/classify/Makefile.in +647 -0
- data/vendor/tesseract-2.04/classify/adaptive.cpp +535 -0
- data/vendor/tesseract-2.04/classify/adaptive.h +199 -0
- data/vendor/tesseract-2.04/classify/adaptmatch.cpp +2958 -0
- data/vendor/tesseract-2.04/classify/adaptmatch.h +86 -0
- data/vendor/tesseract-2.04/classify/baseline.cpp +58 -0
- data/vendor/tesseract-2.04/classify/baseline.h +91 -0
- data/vendor/tesseract-2.04/classify/blobclass.cpp +123 -0
- data/vendor/tesseract-2.04/classify/blobclass.h +49 -0
- data/vendor/tesseract-2.04/classify/chartoname.cpp +74 -0
- data/vendor/tesseract-2.04/classify/chartoname.h +21 -0
- data/vendor/tesseract-2.04/classify/cluster.cpp +2834 -0
- data/vendor/tesseract-2.04/classify/cluster.h +158 -0
- data/vendor/tesseract-2.04/classify/clusttool.cpp +507 -0
- data/vendor/tesseract-2.04/classify/clusttool.h +70 -0
- data/vendor/tesseract-2.04/classify/cutoffs.cpp +73 -0
- data/vendor/tesseract-2.04/classify/cutoffs.h +49 -0
- data/vendor/tesseract-2.04/classify/extern.h +32 -0
- data/vendor/tesseract-2.04/classify/extract.cpp +100 -0
- data/vendor/tesseract-2.04/classify/extract.h +36 -0
- data/vendor/tesseract-2.04/classify/featdefs.cpp +244 -0
- data/vendor/tesseract-2.04/classify/featdefs.h +71 -0
- data/vendor/tesseract-2.04/classify/flexfx.cpp +87 -0
- data/vendor/tesseract-2.04/classify/flexfx.h +34 -0
- data/vendor/tesseract-2.04/classify/float2int.cpp +126 -0
- data/vendor/tesseract-2.04/classify/float2int.h +65 -0
- data/vendor/tesseract-2.04/classify/fpoint.cpp +73 -0
- data/vendor/tesseract-2.04/classify/fpoint.h +63 -0
- data/vendor/tesseract-2.04/classify/fxdefs.cpp +74 -0
- data/vendor/tesseract-2.04/classify/fxdefs.h +93 -0
- data/vendor/tesseract-2.04/classify/fxid.h +69 -0
- data/vendor/tesseract-2.04/classify/hideedge.cpp +35 -0
- data/vendor/tesseract-2.04/classify/hideedge.h +76 -0
- data/vendor/tesseract-2.04/classify/intfx.cpp +608 -0
- data/vendor/tesseract-2.04/classify/intfx.h +63 -0
- data/vendor/tesseract-2.04/classify/intmatcher.cpp +1524 -0
- data/vendor/tesseract-2.04/classify/intmatcher.h +199 -0
- data/vendor/tesseract-2.04/classify/intproto.cpp +1823 -0
- data/vendor/tesseract-2.04/classify/intproto.h +320 -0
- data/vendor/tesseract-2.04/classify/kdtree.cpp +884 -0
- data/vendor/tesseract-2.04/classify/kdtree.h +118 -0
- data/vendor/tesseract-2.04/classify/mf.cpp +106 -0
- data/vendor/tesseract-2.04/classify/mf.h +43 -0
- data/vendor/tesseract-2.04/classify/mfdefs.cpp +58 -0
- data/vendor/tesseract-2.04/classify/mfdefs.h +60 -0
- data/vendor/tesseract-2.04/classify/mfoutline.cpp +1087 -0
- data/vendor/tesseract-2.04/classify/mfoutline.h +277 -0
- data/vendor/tesseract-2.04/classify/mfx.cpp +436 -0
- data/vendor/tesseract-2.04/classify/mfx.h +52 -0
- data/vendor/tesseract-2.04/classify/normfeat.cpp +132 -0
- data/vendor/tesseract-2.04/classify/normfeat.h +63 -0
- data/vendor/tesseract-2.04/classify/normmatch.cpp +305 -0
- data/vendor/tesseract-2.04/classify/normmatch.h +38 -0
- data/vendor/tesseract-2.04/classify/ocrfeatures.cpp +310 -0
- data/vendor/tesseract-2.04/classify/ocrfeatures.h +148 -0
- data/vendor/tesseract-2.04/classify/outfeat.cpp +262 -0
- data/vendor/tesseract-2.04/classify/outfeat.h +76 -0
- data/vendor/tesseract-2.04/classify/picofeat.cpp +297 -0
- data/vendor/tesseract-2.04/classify/picofeat.h +65 -0
- data/vendor/tesseract-2.04/classify/protos.cpp +472 -0
- data/vendor/tesseract-2.04/classify/protos.h +258 -0
- data/vendor/tesseract-2.04/classify/sigmenu.cpp +225 -0
- data/vendor/tesseract-2.04/classify/sigmenu.h +39 -0
- data/vendor/tesseract-2.04/classify/speckle.cpp +127 -0
- data/vendor/tesseract-2.04/classify/speckle.h +69 -0
- data/vendor/tesseract-2.04/classify/xform2d.cpp +120 -0
- data/vendor/tesseract-2.04/classify/xform2d.h +60 -0
- data/vendor/tesseract-2.04/config/config.guess +1466 -0
- data/vendor/tesseract-2.04/config/config.h.in +188 -0
- data/vendor/tesseract-2.04/config/config.sub +1579 -0
- data/vendor/tesseract-2.04/config/depcomp +530 -0
- data/vendor/tesseract-2.04/config/install-sh +269 -0
- data/vendor/tesseract-2.04/config/missing +198 -0
- data/vendor/tesseract-2.04/config/mkinstalldirs +40 -0
- data/vendor/tesseract-2.04/config/stamp-h.in +0 -0
- data/vendor/tesseract-2.04/configure +10424 -0
- data/vendor/tesseract-2.04/cutil/Makefile.am +14 -0
- data/vendor/tesseract-2.04/cutil/Makefile.in +612 -0
- data/vendor/tesseract-2.04/cutil/bitvec.cpp +115 -0
- data/vendor/tesseract-2.04/cutil/bitvec.h +100 -0
- data/vendor/tesseract-2.04/cutil/callcpp.h +190 -0
- data/vendor/tesseract-2.04/cutil/const.h +108 -0
- data/vendor/tesseract-2.04/cutil/cutil.cpp +92 -0
- data/vendor/tesseract-2.04/cutil/cutil.h +159 -0
- data/vendor/tesseract-2.04/cutil/danerror.cpp +144 -0
- data/vendor/tesseract-2.04/cutil/danerror.h +41 -0
- data/vendor/tesseract-2.04/cutil/debug.cpp +97 -0
- data/vendor/tesseract-2.04/cutil/debug.h +348 -0
- data/vendor/tesseract-2.04/cutil/efio.cpp +62 -0
- data/vendor/tesseract-2.04/cutil/efio.h +32 -0
- data/vendor/tesseract-2.04/cutil/emalloc.cpp +91 -0
- data/vendor/tesseract-2.04/cutil/emalloc.h +44 -0
- data/vendor/tesseract-2.04/cutil/freelist.cpp +75 -0
- data/vendor/tesseract-2.04/cutil/freelist.h +45 -0
- data/vendor/tesseract-2.04/cutil/funcdefs.h +35 -0
- data/vendor/tesseract-2.04/cutil/general.h +33 -0
- data/vendor/tesseract-2.04/cutil/globals.cpp +69 -0
- data/vendor/tesseract-2.04/cutil/globals.h +70 -0
- data/vendor/tesseract-2.04/cutil/listio.cpp +68 -0
- data/vendor/tesseract-2.04/cutil/listio.h +43 -0
- data/vendor/tesseract-2.04/cutil/minmax.h +40 -0
- data/vendor/tesseract-2.04/cutil/oldheap.cpp +337 -0
- data/vendor/tesseract-2.04/cutil/oldheap.h +126 -0
- data/vendor/tesseract-2.04/cutil/oldlist.cpp +393 -0
- data/vendor/tesseract-2.04/cutil/oldlist.h +350 -0
- data/vendor/tesseract-2.04/cutil/structures.cpp +66 -0
- data/vendor/tesseract-2.04/cutil/structures.h +112 -0
- data/vendor/tesseract-2.04/cutil/tessarray.cpp +115 -0
- data/vendor/tesseract-2.04/cutil/tessarray.h +166 -0
- data/vendor/tesseract-2.04/cutil/tordvars.cpp +95 -0
- data/vendor/tesseract-2.04/cutil/tordvars.h +61 -0
- data/vendor/tesseract-2.04/cutil/variables.cpp +317 -0
- data/vendor/tesseract-2.04/cutil/variables.h +170 -0
- data/vendor/tesseract-2.04/dict/Makefile.am +13 -0
- data/vendor/tesseract-2.04/dict/Makefile.in +609 -0
- data/vendor/tesseract-2.04/dict/choicearr.h +96 -0
- data/vendor/tesseract-2.04/dict/choices.cpp +210 -0
- data/vendor/tesseract-2.04/dict/choices.h +241 -0
- data/vendor/tesseract-2.04/dict/context.cpp +270 -0
- data/vendor/tesseract-2.04/dict/context.h +82 -0
- data/vendor/tesseract-2.04/dict/dawg.cpp +363 -0
- data/vendor/tesseract-2.04/dict/dawg.h +394 -0
- data/vendor/tesseract-2.04/dict/hyphen.cpp +84 -0
- data/vendor/tesseract-2.04/dict/hyphen.h +125 -0
- data/vendor/tesseract-2.04/dict/lookdawg.cpp +228 -0
- data/vendor/tesseract-2.04/dict/lookdawg.h +76 -0
- data/vendor/tesseract-2.04/dict/makedawg.cpp +449 -0
- data/vendor/tesseract-2.04/dict/makedawg.h +83 -0
- data/vendor/tesseract-2.04/dict/matchdefs.h +145 -0
- data/vendor/tesseract-2.04/dict/permdawg.cpp +415 -0
- data/vendor/tesseract-2.04/dict/permdawg.h +98 -0
- data/vendor/tesseract-2.04/dict/permngram.cpp +358 -0
- data/vendor/tesseract-2.04/dict/permngram.h +33 -0
- data/vendor/tesseract-2.04/dict/permnum.cpp +522 -0
- data/vendor/tesseract-2.04/dict/permnum.h +83 -0
- data/vendor/tesseract-2.04/dict/permute.cpp +1704 -0
- data/vendor/tesseract-2.04/dict/permute.h +93 -0
- data/vendor/tesseract-2.04/dict/reduce.cpp +424 -0
- data/vendor/tesseract-2.04/dict/reduce.h +112 -0
- data/vendor/tesseract-2.04/dict/states.cpp +382 -0
- data/vendor/tesseract-2.04/dict/states.h +111 -0
- data/vendor/tesseract-2.04/dict/stopper.cpp +1458 -0
- data/vendor/tesseract-2.04/dict/stopper.h +103 -0
- data/vendor/tesseract-2.04/dict/trie.cpp +683 -0
- data/vendor/tesseract-2.04/dict/trie.h +190 -0
- data/vendor/tesseract-2.04/dlltest/Makefile.am +2 -0
- data/vendor/tesseract-2.04/dlltest/Makefile.in +388 -0
- data/vendor/tesseract-2.04/dlltest/dlltest.cpp +163 -0
- data/vendor/tesseract-2.04/dlltest/dlltest.dsp +186 -0
- data/vendor/tesseract-2.04/dlltest/dlltest.vcproj +637 -0
- data/vendor/tesseract-2.04/eurotext.tif +0 -0
- data/vendor/tesseract-2.04/image/Makefile.am +10 -0
- data/vendor/tesseract-2.04/image/Makefile.in +596 -0
- data/vendor/tesseract-2.04/image/bitstrm.cpp +157 -0
- data/vendor/tesseract-2.04/image/bitstrm.h +73 -0
- data/vendor/tesseract-2.04/image/img.h +336 -0
- data/vendor/tesseract-2.04/image/imgbmp.cpp +223 -0
- data/vendor/tesseract-2.04/image/imgbmp.h +50 -0
- data/vendor/tesseract-2.04/image/imgerrs.h +35 -0
- data/vendor/tesseract-2.04/image/imgio.cpp +321 -0
- data/vendor/tesseract-2.04/image/imgio.h +22 -0
- data/vendor/tesseract-2.04/image/imgs.cpp +1764 -0
- data/vendor/tesseract-2.04/image/imgs.h +102 -0
- data/vendor/tesseract-2.04/image/imgtiff.cpp +723 -0
- data/vendor/tesseract-2.04/image/imgtiff.h +89 -0
- data/vendor/tesseract-2.04/image/imgunpk.h +1377 -0
- data/vendor/tesseract-2.04/image/svshowim.cpp +40 -0
- data/vendor/tesseract-2.04/image/svshowim.h +25 -0
- data/vendor/tesseract-2.04/java/Makefile.am +4 -0
- data/vendor/tesseract-2.04/java/Makefile.in +473 -0
- data/vendor/tesseract-2.04/java/com/Makefile.am +1 -0
- data/vendor/tesseract-2.04/java/com/Makefile.in +470 -0
- data/vendor/tesseract-2.04/java/com/google/Makefile.am +1 -0
- data/vendor/tesseract-2.04/java/com/google/Makefile.in +470 -0
- data/vendor/tesseract-2.04/java/com/google/scrollview/Makefile.am +4 -0
- data/vendor/tesseract-2.04/java/com/google/scrollview/Makefile.in +473 -0
- data/vendor/tesseract-2.04/java/com/google/scrollview/ScrollView.java +421 -0
- data/vendor/tesseract-2.04/java/com/google/scrollview/events/Makefile.am +5 -0
- data/vendor/tesseract-2.04/java/com/google/scrollview/events/Makefile.in +474 -0
- data/vendor/tesseract-2.04/java/com/google/scrollview/events/SVEvent.java +87 -0
- data/vendor/tesseract-2.04/java/com/google/scrollview/events/SVEventHandler.java +296 -0
- data/vendor/tesseract-2.04/java/com/google/scrollview/events/SVEventType.java +31 -0
- data/vendor/tesseract-2.04/java/com/google/scrollview/ui/Makefile.am +7 -0
- data/vendor/tesseract-2.04/java/com/google/scrollview/ui/Makefile.in +476 -0
- data/vendor/tesseract-2.04/java/com/google/scrollview/ui/SVAbstractMenuItem.java +58 -0
- data/vendor/tesseract-2.04/java/com/google/scrollview/ui/SVCheckboxMenuItem.java +60 -0
- data/vendor/tesseract-2.04/java/com/google/scrollview/ui/SVEmptyMenuItem.java +48 -0
- data/vendor/tesseract-2.04/java/com/google/scrollview/ui/SVImageHandler.java +228 -0
- data/vendor/tesseract-2.04/java/com/google/scrollview/ui/SVMenuBar.java +130 -0
- data/vendor/tesseract-2.04/java/com/google/scrollview/ui/SVMenuItem.java +61 -0
- data/vendor/tesseract-2.04/java/com/google/scrollview/ui/SVPopupMenu.java +142 -0
- data/vendor/tesseract-2.04/java/com/google/scrollview/ui/SVSubMenuItem.java +41 -0
- data/vendor/tesseract-2.04/java/com/google/scrollview/ui/SVWindow.java +643 -0
- data/vendor/tesseract-2.04/java/makefile +55 -0
- data/vendor/tesseract-2.04/pageseg/Makefile.am +13 -0
- data/vendor/tesseract-2.04/pageseg/Makefile.in +596 -0
- data/vendor/tesseract-2.04/pageseg/leptonica_pageseg.cpp +363 -0
- data/vendor/tesseract-2.04/pageseg/leptonica_pageseg.h +90 -0
- data/vendor/tesseract-2.04/pageseg/leptonica_pageseg_interface.cpp +82 -0
- data/vendor/tesseract-2.04/pageseg/leptonica_pageseg_interface.h +30 -0
- data/vendor/tesseract-2.04/pageseg/pageseg.cpp +170 -0
- data/vendor/tesseract-2.04/pageseg/pageseg.h +29 -0
- data/vendor/tesseract-2.04/phototest.tif +0 -0
- data/vendor/tesseract-2.04/tessdata/Makefile.am +31 -0
- data/vendor/tesseract-2.04/tessdata/Makefile.in +529 -0
- data/vendor/tesseract-2.04/tessdata/configs/Makefile.am +3 -0
- data/vendor/tesseract-2.04/tessdata/configs/Makefile.in +344 -0
- data/vendor/tesseract-2.04/tessdata/configs/api_config +1 -0
- data/vendor/tesseract-2.04/tessdata/configs/box.train +19 -0
- data/vendor/tesseract-2.04/tessdata/configs/box.train.stderr +18 -0
- data/vendor/tesseract-2.04/tessdata/configs/inter +4 -0
- data/vendor/tesseract-2.04/tessdata/configs/kannada +4 -0
- data/vendor/tesseract-2.04/tessdata/configs/makebox +1 -0
- data/vendor/tesseract-2.04/tessdata/configs/unlv +3 -0
- data/vendor/tesseract-2.04/tessdata/confsets +3 -0
- data/vendor/tesseract-2.04/tessdata/eng.DangAmbigs +39 -0
- data/vendor/tesseract-2.04/tessdata/eng.freq-dawg +0 -0
- data/vendor/tesseract-2.04/tessdata/eng.inttemp +0 -0
- data/vendor/tesseract-2.04/tessdata/eng.normproto +1247 -0
- data/vendor/tesseract-2.04/tessdata/eng.pffmtable +111 -0
- data/vendor/tesseract-2.04/tessdata/eng.unicharset +113 -0
- data/vendor/tesseract-2.04/tessdata/eng.user-words +921 -0
- data/vendor/tesseract-2.04/tessdata/eng.word-dawg +0 -0
- data/vendor/tesseract-2.04/tessdata/makedummies +8 -0
- data/vendor/tesseract-2.04/tessdata/tessconfigs/Makefile.am +3 -0
- data/vendor/tesseract-2.04/tessdata/tessconfigs/Makefile.in +344 -0
- data/vendor/tesseract-2.04/tessdata/tessconfigs/batch +2 -0
- data/vendor/tesseract-2.04/tessdata/tessconfigs/batch.nochop +2 -0
- data/vendor/tesseract-2.04/tessdata/tessconfigs/matdemo +7 -0
- data/vendor/tesseract-2.04/tessdata/tessconfigs/msdemo +13 -0
- data/vendor/tesseract-2.04/tessdata/tessconfigs/nobatch +2 -0
- data/vendor/tesseract-2.04/tessdata/tessconfigs/segdemo +9 -0
- data/vendor/tesseract-2.04/tessdll.cpp +351 -0
- data/vendor/tesseract-2.04/tessdll.dsp +2050 -0
- data/vendor/tesseract-2.04/tessdll.h +143 -0
- data/vendor/tesseract-2.04/tessdll.vcproj +5495 -0
- data/vendor/tesseract-2.04/tesseract.dsp +2124 -0
- data/vendor/tesseract-2.04/tesseract.dsw +116 -0
- data/vendor/tesseract-2.04/tesseract.sln +59 -0
- data/vendor/tesseract-2.04/tesseract.spec +188 -0
- data/vendor/tesseract-2.04/tesseract.vcproj +5859 -0
- data/vendor/tesseract-2.04/testing/Makefile.am +2 -0
- data/vendor/tesseract-2.04/testing/Makefile.in +312 -0
- data/vendor/tesseract-2.04/testing/README +43 -0
- data/vendor/tesseract-2.04/testing/counttestset.sh +61 -0
- data/vendor/tesseract-2.04/testing/reorgdata.sh +44 -0
- data/vendor/tesseract-2.04/testing/reports/1995.bus.3B.sum +1 -0
- data/vendor/tesseract-2.04/testing/reports/1995.doe3.3B.sum +1 -0
- data/vendor/tesseract-2.04/testing/reports/1995.mag.3B.sum +1 -0
- data/vendor/tesseract-2.04/testing/reports/1995.news.3B.sum +1 -0
- data/vendor/tesseract-2.04/testing/reports/2.03.summary +9 -0
- data/vendor/tesseract-2.04/testing/reports/2.04.summary +9 -0
- data/vendor/tesseract-2.04/testing/runalltests.sh +110 -0
- data/vendor/tesseract-2.04/testing/runtestset.sh +61 -0
- data/vendor/tesseract-2.04/textord/Makefile.am +20 -0
- data/vendor/tesseract-2.04/textord/Makefile.in +624 -0
- data/vendor/tesseract-2.04/textord/blkocc.cpp +809 -0
- data/vendor/tesseract-2.04/textord/blkocc.h +327 -0
- data/vendor/tesseract-2.04/textord/blobcmpl.h +31 -0
- data/vendor/tesseract-2.04/textord/drawedg.cpp +77 -0
- data/vendor/tesseract-2.04/textord/drawedg.h +34 -0
- data/vendor/tesseract-2.04/textord/drawtord.cpp +469 -0
- data/vendor/tesseract-2.04/textord/drawtord.h +107 -0
- data/vendor/tesseract-2.04/textord/edgblob.cpp +412 -0
- data/vendor/tesseract-2.04/textord/edgblob.h +100 -0
- data/vendor/tesseract-2.04/textord/edgloop.cpp +211 -0
- data/vendor/tesseract-2.04/textord/edgloop.h +66 -0
- data/vendor/tesseract-2.04/textord/fpchop.cpp +1641 -0
- data/vendor/tesseract-2.04/textord/fpchop.h +238 -0
- data/vendor/tesseract-2.04/textord/gap_map.cpp +166 -0
- data/vendor/tesseract-2.04/textord/gap_map.h +40 -0
- data/vendor/tesseract-2.04/textord/makerow.cpp +2628 -0
- data/vendor/tesseract-2.04/textord/makerow.h +295 -0
- data/vendor/tesseract-2.04/textord/oldbasel.cpp +1761 -0
- data/vendor/tesseract-2.04/textord/oldbasel.h +195 -0
- data/vendor/tesseract-2.04/textord/pithsync.cpp +696 -0
- data/vendor/tesseract-2.04/textord/pithsync.h +134 -0
- data/vendor/tesseract-2.04/textord/pitsync1.cpp +425 -0
- data/vendor/tesseract-2.04/textord/pitsync1.h +135 -0
- data/vendor/tesseract-2.04/textord/scanedg.cpp +452 -0
- data/vendor/tesseract-2.04/textord/scanedg.h +74 -0
- data/vendor/tesseract-2.04/textord/sortflts.cpp +80 -0
- data/vendor/tesseract-2.04/textord/sortflts.h +64 -0
- data/vendor/tesseract-2.04/textord/tessout.h +76 -0
- data/vendor/tesseract-2.04/textord/topitch.cpp +2019 -0
- data/vendor/tesseract-2.04/textord/topitch.h +195 -0
- data/vendor/tesseract-2.04/textord/tordmain.cpp +907 -0
- data/vendor/tesseract-2.04/textord/tordmain.h +132 -0
- data/vendor/tesseract-2.04/textord/tospace.cpp +1939 -0
- data/vendor/tesseract-2.04/textord/tospace.h +193 -0
- data/vendor/tesseract-2.04/textord/tovars.cpp +87 -0
- data/vendor/tesseract-2.04/textord/tovars.h +94 -0
- data/vendor/tesseract-2.04/textord/underlin.cpp +312 -0
- data/vendor/tesseract-2.04/textord/underlin.h +53 -0
- data/vendor/tesseract-2.04/textord/wordseg.cpp +620 -0
- data/vendor/tesseract-2.04/textord/wordseg.h +70 -0
- data/vendor/tesseract-2.04/training/Makefile.am +54 -0
- data/vendor/tesseract-2.04/training/Makefile.in +720 -0
- data/vendor/tesseract-2.04/training/cnTraining.cpp +855 -0
- data/vendor/tesseract-2.04/training/cntraining.dsp +243 -0
- data/vendor/tesseract-2.04/training/cntraining.vcproj +950 -0
- data/vendor/tesseract-2.04/training/mergenf.cpp +451 -0
- data/vendor/tesseract-2.04/training/mergenf.h +106 -0
- data/vendor/tesseract-2.04/training/mfTraining.cpp +1341 -0
- data/vendor/tesseract-2.04/training/mftraining.dsp +285 -0
- data/vendor/tesseract-2.04/training/mftraining.vcproj +1055 -0
- data/vendor/tesseract-2.04/training/name2char.cpp +166 -0
- data/vendor/tesseract-2.04/training/name2char.h +38 -0
- data/vendor/tesseract-2.04/training/training.cpp +190 -0
- data/vendor/tesseract-2.04/training/training.h +130 -0
- data/vendor/tesseract-2.04/training/unicharset_extractor.cpp +140 -0
- data/vendor/tesseract-2.04/training/unicharset_extractor.dsp +335 -0
- data/vendor/tesseract-2.04/training/unicharset_extractor.vcproj +769 -0
- data/vendor/tesseract-2.04/training/wordlist2dawg.cpp +69 -0
- data/vendor/tesseract-2.04/training/wordlist2dawg.dsp +319 -0
- data/vendor/tesseract-2.04/training/wordlist2dawg.vcproj +1113 -0
- data/vendor/tesseract-2.04/viewer/Makefile.am +9 -0
- data/vendor/tesseract-2.04/viewer/Makefile.in +591 -0
- data/vendor/tesseract-2.04/viewer/scrollview.cpp +825 -0
- data/vendor/tesseract-2.04/viewer/scrollview.h +414 -0
- data/vendor/tesseract-2.04/viewer/svmnode.cpp +140 -0
- data/vendor/tesseract-2.04/viewer/svmnode.h +94 -0
- data/vendor/tesseract-2.04/viewer/svpaint.cpp +220 -0
- data/vendor/tesseract-2.04/viewer/svutil.cpp +347 -0
- data/vendor/tesseract-2.04/viewer/svutil.h +138 -0
- data/vendor/tesseract-2.04/wordrec/Makefile.am +23 -0
- data/vendor/tesseract-2.04/wordrec/Makefile.in +641 -0
- data/vendor/tesseract-2.04/wordrec/associate.cpp +62 -0
- data/vendor/tesseract-2.04/wordrec/associate.h +93 -0
- data/vendor/tesseract-2.04/wordrec/badwords.cpp +106 -0
- data/vendor/tesseract-2.04/wordrec/badwords.h +51 -0
- data/vendor/tesseract-2.04/wordrec/bestfirst.cpp +526 -0
- data/vendor/tesseract-2.04/wordrec/bestfirst.h +203 -0
- data/vendor/tesseract-2.04/wordrec/charsample.h +208 -0
- data/vendor/tesseract-2.04/wordrec/chop.cpp +458 -0
- data/vendor/tesseract-2.04/wordrec/chop.h +153 -0
- data/vendor/tesseract-2.04/wordrec/chopper.cpp +750 -0
- data/vendor/tesseract-2.04/wordrec/chopper.h +104 -0
- data/vendor/tesseract-2.04/wordrec/closed.cpp +136 -0
- data/vendor/tesseract-2.04/wordrec/closed.h +65 -0
- data/vendor/tesseract-2.04/wordrec/djmenus.cpp +118 -0
- data/vendor/tesseract-2.04/wordrec/djmenus.h +33 -0
- data/vendor/tesseract-2.04/wordrec/drawfx.cpp +92 -0
- data/vendor/tesseract-2.04/wordrec/drawfx.h +33 -0
- data/vendor/tesseract-2.04/wordrec/findseam.cpp +566 -0
- data/vendor/tesseract-2.04/wordrec/findseam.h +69 -0
- data/vendor/tesseract-2.04/wordrec/gradechop.cpp +226 -0
- data/vendor/tesseract-2.04/wordrec/gradechop.h +91 -0
- data/vendor/tesseract-2.04/wordrec/heuristic.cpp +194 -0
- data/vendor/tesseract-2.04/wordrec/heuristic.h +120 -0
- data/vendor/tesseract-2.04/wordrec/makechop.cpp +281 -0
- data/vendor/tesseract-2.04/wordrec/makechop.h +69 -0
- data/vendor/tesseract-2.04/wordrec/matchtab.cpp +191 -0
- data/vendor/tesseract-2.04/wordrec/matchtab.h +45 -0
- data/vendor/tesseract-2.04/wordrec/matrix.cpp +118 -0
- data/vendor/tesseract-2.04/wordrec/matrix.h +104 -0
- data/vendor/tesseract-2.04/wordrec/measure.h +135 -0
- data/vendor/tesseract-2.04/wordrec/metrics.cpp +363 -0
- data/vendor/tesseract-2.04/wordrec/metrics.h +130 -0
- data/vendor/tesseract-2.04/wordrec/mfvars.cpp +51 -0
- data/vendor/tesseract-2.04/wordrec/mfvars.h +27 -0
- data/vendor/tesseract-2.04/wordrec/msmenus.cpp +110 -0
- data/vendor/tesseract-2.04/wordrec/msmenus.h +45 -0
- data/vendor/tesseract-2.04/wordrec/olutil.cpp +153 -0
- data/vendor/tesseract-2.04/wordrec/olutil.h +128 -0
- data/vendor/tesseract-2.04/wordrec/outlines.cpp +172 -0
- data/vendor/tesseract-2.04/wordrec/outlines.h +148 -0
- data/vendor/tesseract-2.04/wordrec/pieces.cpp +410 -0
- data/vendor/tesseract-2.04/wordrec/pieces.h +154 -0
- data/vendor/tesseract-2.04/wordrec/plotedges.cpp +134 -0
- data/vendor/tesseract-2.04/wordrec/plotedges.h +71 -0
- data/vendor/tesseract-2.04/wordrec/plotseg.cpp +116 -0
- data/vendor/tesseract-2.04/wordrec/plotseg.h +73 -0
- data/vendor/tesseract-2.04/wordrec/render.cpp +152 -0
- data/vendor/tesseract-2.04/wordrec/render.h +58 -0
- data/vendor/tesseract-2.04/wordrec/seam.cpp +482 -0
- data/vendor/tesseract-2.04/wordrec/seam.h +136 -0
- data/vendor/tesseract-2.04/wordrec/split.cpp +182 -0
- data/vendor/tesseract-2.04/wordrec/split.h +115 -0
- data/vendor/tesseract-2.04/wordrec/tally.cpp +68 -0
- data/vendor/tesseract-2.04/wordrec/tally.h +94 -0
- data/vendor/tesseract-2.04/wordrec/tessinit.cpp +108 -0
- data/vendor/tesseract-2.04/wordrec/tessinit.h +46 -0
- data/vendor/tesseract-2.04/wordrec/tface.cpp +272 -0
- data/vendor/tesseract-2.04/wordrec/tface.h +35 -0
- data/vendor/tesseract-2.04/wordrec/wordclass.cpp +284 -0
- data/vendor/tesseract-2.04/wordrec/wordclass.h +64 -0
- metadata +708 -0
|
@@ -0,0 +1,543 @@
|
|
|
1
|
+
// Copyright 2006 Google Inc.
|
|
2
|
+
// All Rights Reserved.
|
|
3
|
+
// Author: renn
|
|
4
|
+
//
|
|
5
|
+
// The fscanf, vfscanf and creat functions are implemented so that their
|
|
6
|
+
// functionality is mostly like their stdio counterparts. However, currently
|
|
7
|
+
// these functions do not use any buffering, making them rather slow.
|
|
8
|
+
// File streams are thus processed one character at a time.
|
|
9
|
+
// Although the implementations of the scanf functions do lack a few minor
|
|
10
|
+
// features, they should be sufficient for their use in tesseract.
|
|
11
|
+
//
|
|
12
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
13
|
+
// you may not use this file except in compliance with the License.
|
|
14
|
+
// You may obtain a copy of the License at
|
|
15
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
|
16
|
+
// Unless required by applicable law or agreed to in writing, software
|
|
17
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
18
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
19
|
+
// See the License for the specific language governing permissions and
|
|
20
|
+
// limitations under the License.
|
|
21
|
+
|
|
22
|
+
#include <ctype.h>
|
|
23
|
+
#include <stdarg.h>
|
|
24
|
+
#include <stddef.h>
|
|
25
|
+
#include <inttypes.h>
|
|
26
|
+
#include <string.h>
|
|
27
|
+
#include <limits.h>
|
|
28
|
+
#include <stdio.h>
|
|
29
|
+
#include <sys/types.h>
|
|
30
|
+
#include <sys/stat.h>
|
|
31
|
+
#include <fcntl.h>
|
|
32
|
+
|
|
33
|
+
#include "scanutils.h"
|
|
34
|
+
|
|
35
|
+
enum Flags {
|
|
36
|
+
FL_SPLAT = 0x01, // Drop the value, do not assign
|
|
37
|
+
FL_INV = 0x02, // Character-set with inverse
|
|
38
|
+
FL_WIDTH = 0x04, // Field width specified
|
|
39
|
+
FL_MINUS = 0x08, // Negative number
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
enum Ranks {
|
|
43
|
+
RANK_CHAR = -2,
|
|
44
|
+
RANK_SHORT = -1,
|
|
45
|
+
RANK_INT = 0,
|
|
46
|
+
RANK_LONG = 1,
|
|
47
|
+
RANK_LONGLONG = 2,
|
|
48
|
+
RANK_PTR = 3 // Special value used for pointers
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
const enum Ranks kMinRank = RANK_CHAR;
|
|
52
|
+
const enum Ranks kMaxRank = RANK_LONGLONG;
|
|
53
|
+
|
|
54
|
+
const enum Ranks kIntMaxRank = RANK_LONGLONG;
|
|
55
|
+
const enum Ranks kSizeTRank = RANK_LONG;
|
|
56
|
+
const enum Ranks kPtrDiffRank = RANK_LONG;
|
|
57
|
+
|
|
58
|
+
enum Bail {
|
|
59
|
+
BAIL_NONE = 0, // No error condition
|
|
60
|
+
BAIL_EOF, // Hit EOF
|
|
61
|
+
BAIL_ERR // Conversion mismatch
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
// Helper functions ------------------------------------------------------------
|
|
65
|
+
inline size_t LongBit() {
|
|
66
|
+
return CHAR_BIT * sizeof(long);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
static inline int
|
|
70
|
+
SkipSpace(FILE *s)
|
|
71
|
+
{
|
|
72
|
+
int p;
|
|
73
|
+
while (isspace(p = fgetc(s)));
|
|
74
|
+
ungetc(p, s); // Make sure next char is available for reading
|
|
75
|
+
return p;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
static inline void
|
|
79
|
+
SetBit(unsigned long *bitmap, unsigned int bit)
|
|
80
|
+
{
|
|
81
|
+
bitmap[bit/LongBit()] |= 1UL << (bit%LongBit());
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
static inline int
|
|
85
|
+
TestBit(unsigned long *bitmap, unsigned int bit)
|
|
86
|
+
{
|
|
87
|
+
return static_cast<int>(bitmap[bit/LongBit()] >> (bit%LongBit())) & 1;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
static inline int DigitValue(int ch)
|
|
91
|
+
{
|
|
92
|
+
if (ch >= '0' && ch <= '9') {
|
|
93
|
+
return ch-'0';
|
|
94
|
+
} else if (ch >= 'A' && ch <= 'Z') {
|
|
95
|
+
return ch-'A'+10;
|
|
96
|
+
} else if (ch >= 'a' && ch <= 'z') {
|
|
97
|
+
return ch-'a'+10;
|
|
98
|
+
} else {
|
|
99
|
+
return -1;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
// IO (re-)implementations -----------------------------------------------------
|
|
104
|
+
uintmax_t streamtoumax(FILE* s, int base)
|
|
105
|
+
{
|
|
106
|
+
int minus = 0;
|
|
107
|
+
uintmax_t v = 0;
|
|
108
|
+
int d, c = 0;
|
|
109
|
+
|
|
110
|
+
for (c = fgetc(s);
|
|
111
|
+
isspace(static_cast<unsigned char>(c)) && (c != EOF);
|
|
112
|
+
c = fgetc(s))
|
|
113
|
+
|
|
114
|
+
// Single optional + or -
|
|
115
|
+
if (c == '-' || c == '+') {
|
|
116
|
+
minus = (c == '-');
|
|
117
|
+
c = fgetc(s);
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
// Assign correct base
|
|
121
|
+
if (base == 0) {
|
|
122
|
+
if (c == '0') {
|
|
123
|
+
c = fgetc(s);
|
|
124
|
+
if (c == 'x' || c == 'X') {
|
|
125
|
+
base = 16;
|
|
126
|
+
c = fgetc(s);
|
|
127
|
+
} else {
|
|
128
|
+
base = 8;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
} else if (base == 16) {
|
|
132
|
+
if (c == '0') {
|
|
133
|
+
c = fgetc(s);
|
|
134
|
+
if (c == 'x' && c == 'X') c = fgetc(s);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
// Actual number parsing
|
|
139
|
+
for (; (c != EOF) && (d = DigitValue(c)) >= 0 && d < base; c = fgetc(s))
|
|
140
|
+
v = v*base + d;
|
|
141
|
+
|
|
142
|
+
ungetc(c, s);
|
|
143
|
+
return minus ? -v : v;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
double streamtofloat(FILE* s)
|
|
147
|
+
{
|
|
148
|
+
int minus = 0;
|
|
149
|
+
int v = 0;
|
|
150
|
+
int d, c = 0;
|
|
151
|
+
int k = 1;
|
|
152
|
+
int w = 0;
|
|
153
|
+
|
|
154
|
+
for (c = fgetc(s);
|
|
155
|
+
isspace(static_cast<unsigned char>(c)) && (c != EOF);
|
|
156
|
+
c = fgetc(s));
|
|
157
|
+
|
|
158
|
+
// Single optional + or -
|
|
159
|
+
if (c == '-' || c == '+') {
|
|
160
|
+
minus = (c == '-');
|
|
161
|
+
c = fgetc(s);
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
// Actual number parsing
|
|
165
|
+
for (; (c != EOF) && (d = DigitValue(c)) >= 0; c = fgetc(s))
|
|
166
|
+
v = v*10 + d;
|
|
167
|
+
if (c == '.') {
|
|
168
|
+
for (c = fgetc(s); (c != EOF) && (d = DigitValue(c)) >= 0; c = fgetc(s)) {
|
|
169
|
+
w = w*10 + d;
|
|
170
|
+
k *= 10;
|
|
171
|
+
}
|
|
172
|
+
} else if (c == 'e' || c == 'E')
|
|
173
|
+
tprintf("WARNING: Scientific Notation not supported!");
|
|
174
|
+
|
|
175
|
+
ungetc(c, s);
|
|
176
|
+
double f = static_cast<double>(v)
|
|
177
|
+
+ static_cast<double>(w) / static_cast<double>(k);
|
|
178
|
+
|
|
179
|
+
return minus ? -f : f;
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
double strtofloat(const char* s)
|
|
183
|
+
{
|
|
184
|
+
int minus = 0;
|
|
185
|
+
int v = 0;
|
|
186
|
+
int d, c;
|
|
187
|
+
int k = 1;
|
|
188
|
+
int w = 0;
|
|
189
|
+
|
|
190
|
+
while(*s && isspace(static_cast<unsigned char>(*s))) s++;
|
|
191
|
+
|
|
192
|
+
// Single optional + or -
|
|
193
|
+
if (*s == '-' || *s == '+') {
|
|
194
|
+
minus = (*s == '-');
|
|
195
|
+
s++;
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
// Actual number parsing
|
|
199
|
+
for (; *s && (d = DigitValue(*s)) >= 0; s++)
|
|
200
|
+
v = v*10 + d;
|
|
201
|
+
if (*s == '.') {
|
|
202
|
+
for (++s; *s && (d = DigitValue(*s)) >= 0; s++) {
|
|
203
|
+
w = w*10 + d;
|
|
204
|
+
k *= 10;
|
|
205
|
+
}
|
|
206
|
+
} else if (*s == 'e' || *s == 'E')
|
|
207
|
+
tprintf("WARNING: Scientific Notation not supported!");
|
|
208
|
+
|
|
209
|
+
double f = static_cast<double>(v)
|
|
210
|
+
+ static_cast<double>(w) / static_cast<double>(k);
|
|
211
|
+
|
|
212
|
+
return minus ? -f : f;
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
int fscanf(FILE* stream, const char *format, ...)
|
|
216
|
+
{
|
|
217
|
+
va_list ap;
|
|
218
|
+
int rv;
|
|
219
|
+
|
|
220
|
+
va_start(ap, format);
|
|
221
|
+
rv = vfscanf(stream, format, ap);
|
|
222
|
+
va_end(ap);
|
|
223
|
+
|
|
224
|
+
return rv;
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
int vfscanf(FILE* stream, const char *format, va_list ap)
|
|
228
|
+
{
|
|
229
|
+
const char *p = format;
|
|
230
|
+
char ch;
|
|
231
|
+
int q = 0;
|
|
232
|
+
uintmax_t val = 0;
|
|
233
|
+
int rank = RANK_INT; // Default rank
|
|
234
|
+
unsigned int width = ~0;
|
|
235
|
+
int base;
|
|
236
|
+
int flags = 0;
|
|
237
|
+
enum {
|
|
238
|
+
ST_NORMAL, // Ground state
|
|
239
|
+
ST_FLAGS, // Special flags
|
|
240
|
+
ST_WIDTH, // Field width
|
|
241
|
+
ST_MODIFIERS, // Length or conversion modifiers
|
|
242
|
+
ST_MATCH_INIT, // Initial state of %[ sequence
|
|
243
|
+
ST_MATCH, // Main state of %[ sequence
|
|
244
|
+
ST_MATCH_RANGE, // After - in a %[ sequence
|
|
245
|
+
} state = ST_NORMAL;
|
|
246
|
+
char *oarg, *sarg = NULL; // %s %c or %[ string argument
|
|
247
|
+
enum Bail bail = BAIL_NONE;
|
|
248
|
+
int sign;
|
|
249
|
+
int converted = 0; // Successful conversions
|
|
250
|
+
unsigned long matchmap[((1 << CHAR_BIT)+(LongBit()-1))/LongBit()];
|
|
251
|
+
int matchinv = 0; // Is match map inverted?
|
|
252
|
+
unsigned char range_start = 0;
|
|
253
|
+
off_t start_off = ftell(stream);
|
|
254
|
+
|
|
255
|
+
// Skip leading spaces
|
|
256
|
+
SkipSpace(stream);
|
|
257
|
+
|
|
258
|
+
while ((ch = *p++) && !bail) {
|
|
259
|
+
switch (state) {
|
|
260
|
+
case ST_NORMAL:
|
|
261
|
+
if (ch == '%') {
|
|
262
|
+
state = ST_FLAGS;
|
|
263
|
+
flags = 0; rank = RANK_INT; width = ~0;
|
|
264
|
+
} else if (isspace(static_cast<unsigned char>(ch))) {
|
|
265
|
+
SkipSpace(stream);
|
|
266
|
+
} else {
|
|
267
|
+
if (fgetc(stream) != ch)
|
|
268
|
+
bail = BAIL_ERR; // Match failure
|
|
269
|
+
}
|
|
270
|
+
break;
|
|
271
|
+
|
|
272
|
+
case ST_FLAGS:
|
|
273
|
+
switch (ch) {
|
|
274
|
+
case '*':
|
|
275
|
+
flags |= FL_SPLAT;
|
|
276
|
+
break;
|
|
277
|
+
|
|
278
|
+
case '0' ... '9':
|
|
279
|
+
width = (ch-'0');
|
|
280
|
+
state = ST_WIDTH;
|
|
281
|
+
flags |= FL_WIDTH;
|
|
282
|
+
break;
|
|
283
|
+
|
|
284
|
+
default:
|
|
285
|
+
state = ST_MODIFIERS;
|
|
286
|
+
p--; // Process this character again
|
|
287
|
+
break;
|
|
288
|
+
}
|
|
289
|
+
break;
|
|
290
|
+
|
|
291
|
+
case ST_WIDTH:
|
|
292
|
+
if (ch >= '0' && ch <= '9') {
|
|
293
|
+
width = width*10+(ch-'0');
|
|
294
|
+
} else {
|
|
295
|
+
state = ST_MODIFIERS;
|
|
296
|
+
p--; // Process this character again
|
|
297
|
+
}
|
|
298
|
+
break;
|
|
299
|
+
|
|
300
|
+
case ST_MODIFIERS:
|
|
301
|
+
switch (ch) {
|
|
302
|
+
// Length modifiers - nonterminal sequences
|
|
303
|
+
case 'h':
|
|
304
|
+
rank--; // Shorter rank
|
|
305
|
+
break;
|
|
306
|
+
case 'l':
|
|
307
|
+
rank++; // Longer rank
|
|
308
|
+
break;
|
|
309
|
+
case 'j':
|
|
310
|
+
rank = kIntMaxRank;
|
|
311
|
+
break;
|
|
312
|
+
case 'z':
|
|
313
|
+
rank = kSizeTRank;
|
|
314
|
+
break;
|
|
315
|
+
case 't':
|
|
316
|
+
rank = kPtrDiffRank;
|
|
317
|
+
break;
|
|
318
|
+
case 'L':
|
|
319
|
+
case 'q':
|
|
320
|
+
rank = RANK_LONGLONG; // long double/long long
|
|
321
|
+
break;
|
|
322
|
+
|
|
323
|
+
default:
|
|
324
|
+
// Output modifiers - terminal sequences
|
|
325
|
+
state = ST_NORMAL; // Next state will be normal
|
|
326
|
+
if (rank < kMinRank) // Canonicalize rank
|
|
327
|
+
rank = kMinRank;
|
|
328
|
+
else if (rank > kMaxRank)
|
|
329
|
+
rank = kMaxRank;
|
|
330
|
+
|
|
331
|
+
switch (ch) {
|
|
332
|
+
case 'P': // Upper case pointer
|
|
333
|
+
case 'p': // Pointer
|
|
334
|
+
rank = RANK_PTR;
|
|
335
|
+
base = 0; sign = 0;
|
|
336
|
+
goto scan_int;
|
|
337
|
+
|
|
338
|
+
case 'i': // Base-independent integer
|
|
339
|
+
base = 0; sign = 1;
|
|
340
|
+
goto scan_int;
|
|
341
|
+
|
|
342
|
+
case 'd': // Decimal integer
|
|
343
|
+
base = 10; sign = 1;
|
|
344
|
+
goto scan_int;
|
|
345
|
+
|
|
346
|
+
case 'o': // Octal integer
|
|
347
|
+
base = 8; sign = 0;
|
|
348
|
+
goto scan_int;
|
|
349
|
+
|
|
350
|
+
case 'u': // Unsigned decimal integer
|
|
351
|
+
base = 10; sign = 0;
|
|
352
|
+
goto scan_int;
|
|
353
|
+
|
|
354
|
+
case 'x': // Hexadecimal integer
|
|
355
|
+
case 'X':
|
|
356
|
+
base = 16; sign = 0;
|
|
357
|
+
goto scan_int;
|
|
358
|
+
|
|
359
|
+
case 'n': // Number of characters consumed
|
|
360
|
+
val = ftell(stream) - start_off;
|
|
361
|
+
goto set_integer;
|
|
362
|
+
|
|
363
|
+
scan_int:
|
|
364
|
+
q = SkipSpace(stream);
|
|
365
|
+
if ( q <= 0 ) {
|
|
366
|
+
bail = BAIL_EOF;
|
|
367
|
+
break;
|
|
368
|
+
}
|
|
369
|
+
val = streamtoumax(stream, base);
|
|
370
|
+
converted++;
|
|
371
|
+
// fall through
|
|
372
|
+
|
|
373
|
+
set_integer:
|
|
374
|
+
if (!(flags & FL_SPLAT)) {
|
|
375
|
+
switch(rank) {
|
|
376
|
+
case RANK_CHAR:
|
|
377
|
+
*va_arg(ap, unsigned char *)
|
|
378
|
+
= static_cast<unsigned char>(val);
|
|
379
|
+
break;
|
|
380
|
+
case RANK_SHORT:
|
|
381
|
+
*va_arg(ap, unsigned short *)
|
|
382
|
+
= static_cast<unsigned short>(val);
|
|
383
|
+
break;
|
|
384
|
+
case RANK_INT:
|
|
385
|
+
*va_arg(ap, unsigned int *)
|
|
386
|
+
= static_cast<unsigned int>(val);
|
|
387
|
+
break;
|
|
388
|
+
case RANK_LONG:
|
|
389
|
+
*va_arg(ap, unsigned long *)
|
|
390
|
+
= static_cast<unsigned long>(val);
|
|
391
|
+
break;
|
|
392
|
+
case RANK_LONGLONG:
|
|
393
|
+
*va_arg(ap, unsigned long long *)
|
|
394
|
+
= static_cast<unsigned long long>(val);
|
|
395
|
+
break;
|
|
396
|
+
case RANK_PTR:
|
|
397
|
+
*va_arg(ap, void **)
|
|
398
|
+
= reinterpret_cast<void *>(static_cast<uintptr_t>(val));
|
|
399
|
+
break;
|
|
400
|
+
}
|
|
401
|
+
}
|
|
402
|
+
break;
|
|
403
|
+
|
|
404
|
+
case 'f': // Preliminary float value parsing
|
|
405
|
+
case 'g':
|
|
406
|
+
case 'G':
|
|
407
|
+
case 'e':
|
|
408
|
+
case 'E':
|
|
409
|
+
q = SkipSpace(stream);
|
|
410
|
+
if (q <= 0) {
|
|
411
|
+
bail = BAIL_EOF;
|
|
412
|
+
break;
|
|
413
|
+
}
|
|
414
|
+
|
|
415
|
+
double fval = streamtofloat(stream);
|
|
416
|
+
switch(rank) {
|
|
417
|
+
case RANK_INT:
|
|
418
|
+
*va_arg(ap, float *) = static_cast<float>(fval);
|
|
419
|
+
break;
|
|
420
|
+
case RANK_LONG:
|
|
421
|
+
*va_arg(ap, double *) = static_cast<double>(fval);
|
|
422
|
+
break;
|
|
423
|
+
}
|
|
424
|
+
converted++;
|
|
425
|
+
break;
|
|
426
|
+
|
|
427
|
+
case 'c': // Character
|
|
428
|
+
width = (flags & FL_WIDTH) ? width : 1; // Default width == 1
|
|
429
|
+
sarg = va_arg(ap, char *);
|
|
430
|
+
while (width--) {
|
|
431
|
+
if ((q = fgetc(stream)) <= 0) {
|
|
432
|
+
bail = BAIL_EOF;
|
|
433
|
+
break;
|
|
434
|
+
}
|
|
435
|
+
*sarg++ = q;
|
|
436
|
+
}
|
|
437
|
+
if (!bail)
|
|
438
|
+
converted++;
|
|
439
|
+
break;
|
|
440
|
+
|
|
441
|
+
case 's': // String
|
|
442
|
+
{
|
|
443
|
+
char *sp;
|
|
444
|
+
sp = sarg = va_arg(ap, char *);
|
|
445
|
+
while (width--) {
|
|
446
|
+
q = fgetc(stream);
|
|
447
|
+
if (isspace(static_cast<unsigned char>(q)) || q <= 0) {
|
|
448
|
+
ungetc(q, stream);
|
|
449
|
+
break;
|
|
450
|
+
}
|
|
451
|
+
*sp++ = q;
|
|
452
|
+
}
|
|
453
|
+
if (sarg != sp) {
|
|
454
|
+
*sp = '\0'; // Terminate output
|
|
455
|
+
converted++;
|
|
456
|
+
} else {
|
|
457
|
+
bail = BAIL_EOF;
|
|
458
|
+
}
|
|
459
|
+
}
|
|
460
|
+
break;
|
|
461
|
+
|
|
462
|
+
case '[': // Character range
|
|
463
|
+
sarg = va_arg(ap, char *);
|
|
464
|
+
state = ST_MATCH_INIT;
|
|
465
|
+
matchinv = 0;
|
|
466
|
+
memset(matchmap, 0, sizeof matchmap);
|
|
467
|
+
break;
|
|
468
|
+
|
|
469
|
+
case '%': // %% sequence
|
|
470
|
+
if (fgetc(stream) != '%' )
|
|
471
|
+
bail = BAIL_ERR;
|
|
472
|
+
break;
|
|
473
|
+
|
|
474
|
+
default: // Anything else
|
|
475
|
+
bail = BAIL_ERR; // Unknown sequence
|
|
476
|
+
break;
|
|
477
|
+
}
|
|
478
|
+
}
|
|
479
|
+
break;
|
|
480
|
+
|
|
481
|
+
case ST_MATCH_INIT: // Initial state for %[ match
|
|
482
|
+
if (ch == '^' && !(flags & FL_INV)) {
|
|
483
|
+
matchinv = 1;
|
|
484
|
+
} else {
|
|
485
|
+
SetBit(matchmap, static_cast<unsigned char>(ch));
|
|
486
|
+
state = ST_MATCH;
|
|
487
|
+
}
|
|
488
|
+
break;
|
|
489
|
+
|
|
490
|
+
case ST_MATCH: // Main state for %[ match
|
|
491
|
+
if (ch == ']') {
|
|
492
|
+
goto match_run;
|
|
493
|
+
} else if (ch == '-') {
|
|
494
|
+
range_start = static_cast<unsigned char>(ch);
|
|
495
|
+
state = ST_MATCH_RANGE;
|
|
496
|
+
} else {
|
|
497
|
+
SetBit(matchmap, static_cast<unsigned char>(ch));
|
|
498
|
+
}
|
|
499
|
+
break;
|
|
500
|
+
|
|
501
|
+
case ST_MATCH_RANGE: // %[ match after -
|
|
502
|
+
if (ch == ']') {
|
|
503
|
+
SetBit(matchmap, static_cast<unsigned char>('-'));
|
|
504
|
+
goto match_run;
|
|
505
|
+
} else {
|
|
506
|
+
int i;
|
|
507
|
+
for (i = range_start ; i < (static_cast<unsigned char>(ch)) ; i++)
|
|
508
|
+
SetBit(matchmap, i);
|
|
509
|
+
state = ST_MATCH;
|
|
510
|
+
}
|
|
511
|
+
break;
|
|
512
|
+
|
|
513
|
+
match_run: // Match expression finished
|
|
514
|
+
char* oarg = sarg;
|
|
515
|
+
while (width) {
|
|
516
|
+
q = fgetc(stream);
|
|
517
|
+
unsigned char qc = static_cast<unsigned char>(q);
|
|
518
|
+
if (q <= 0 || !(TestBit(matchmap, qc)^matchinv)) {
|
|
519
|
+
ungetc(q, stream);
|
|
520
|
+
break;
|
|
521
|
+
}
|
|
522
|
+
*sarg++ = q;
|
|
523
|
+
}
|
|
524
|
+
if (oarg != sarg) {
|
|
525
|
+
*sarg = '\0';
|
|
526
|
+
converted++;
|
|
527
|
+
} else {
|
|
528
|
+
bail = (q <= 0) ? BAIL_EOF : BAIL_ERR;
|
|
529
|
+
}
|
|
530
|
+
break;
|
|
531
|
+
}
|
|
532
|
+
}
|
|
533
|
+
|
|
534
|
+
if (bail == BAIL_EOF && !converted)
|
|
535
|
+
converted = -1; // Return EOF (-1)
|
|
536
|
+
|
|
537
|
+
return converted;
|
|
538
|
+
}
|
|
539
|
+
|
|
540
|
+
int creat(const char *pathname, mode_t mode)
|
|
541
|
+
{
|
|
542
|
+
return open(pathname, O_CREAT | O_TRUNC | O_WRONLY, mode);
|
|
543
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
// Copyright 2006 Google Inc.
|
|
2
|
+
// All Rights Reserved.
|
|
3
|
+
// Author: renn
|
|
4
|
+
//
|
|
5
|
+
// Contains file io functions (mainly for file parsing), that might not be
|
|
6
|
+
// available, on embedded devices, or that have an incomplete implementation
|
|
7
|
+
// there.
|
|
8
|
+
//
|
|
9
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
10
|
+
// you may not use this file except in compliance with the License.
|
|
11
|
+
// You may obtain a copy of the License at
|
|
12
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
|
13
|
+
// Unless required by applicable law or agreed to in writing, software
|
|
14
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
15
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
16
|
+
// See the License for the specific language governing permissions and
|
|
17
|
+
// limitations under the License.
|
|
18
|
+
|
|
19
|
+
#ifndef SCANUTILS_H
|
|
20
|
+
#define SCANUTILS_H
|
|
21
|
+
|
|
22
|
+
#ifdef EMBEDDED
|
|
23
|
+
|
|
24
|
+
#include <stdint.h>
|
|
25
|
+
#include <stddef.h>
|
|
26
|
+
#include <stdio.h>
|
|
27
|
+
#include <klibc/extern.h>
|
|
28
|
+
|
|
29
|
+
// Attempts to parse the given file stream s as an integer of the base
|
|
30
|
+
// 'base'. Returns the first successfully parsed integer as a uintmax_t, or
|
|
31
|
+
// 0, if none was found.
|
|
32
|
+
uintmax_t streamtoumax(FILE* s, int base);
|
|
33
|
+
|
|
34
|
+
// Parse a file stream according to the given format. See the fscanf manpage
|
|
35
|
+
// for more information, as this function attempts to mimic its behavior.
|
|
36
|
+
// Note that scientific loating-point notation is not supported.
|
|
37
|
+
int fscanf(FILE* stream, const char *format, ...);
|
|
38
|
+
|
|
39
|
+
// Parse a file stream according to the given format. See the fscanf manpage
|
|
40
|
+
// for more information, as this function attempts to mimic its behavior.
|
|
41
|
+
// Note that scientific loating-point notation is not supported.
|
|
42
|
+
int vfscanf(FILE* stream, const char *format, va_list ap);
|
|
43
|
+
|
|
44
|
+
// Create a file at the specified path. See the creat manpage for more
|
|
45
|
+
// information, as this function attempts to mimic its behavior.
|
|
46
|
+
int creat(const char *pathname, mode_t mode);
|
|
47
|
+
|
|
48
|
+
// Convert the specified C-String to a float. Returns the first parsed float,
|
|
49
|
+
// or 0.0 if no floating point value could be found. Note that scientific
|
|
50
|
+
// floating-point notation is not supported.
|
|
51
|
+
double strtofloat(const char* s);
|
|
52
|
+
|
|
53
|
+
#endif
|
|
54
|
+
|
|
55
|
+
#endif
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/* Include this file in any module which needs to have conditional compilation
|
|
2
|
+
of sensitive code for UNLV. In INTERNAL mode SECURE_NAMES is NOT defined.
|
|
3
|
+
For UNLV mode it IS defined, allowing multiple modules to do conditional
|
|
4
|
+
compilation on the same name.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
#ifndef SECURE_NAMES
|
|
8
|
+
/* #define SECURE_NAMES */
|
|
9
|
+
#endif
|