forked from Lainports/freebsd-ports
This is a port of the Seiko/Epson Epsonscan2 scanner engine and GUI[1].
It provides a complete alternative to sane/xsane with its own scanner engine and GUI.
It also provides a sane back-end library (libsane-epsonscan2.so) so that it works with the sane package.
There are two parts to this port:
- graphics/epsonscan2 - the main scanner engine and GUI that
works with (most) USB scanners
- graphics/epsonscan2-non-free-plugin - support for Epson's
Linux binary that adds network access to scanners and
usb access to some particular scanners
Please read the file %%PREFIX%%/lib/epsonscan2/Read_me.FreeBSD for notes on how to set this up and use it.
[1] https://download.ebz.epson.net/man/linux/epsonscan2_e.html
PR: 261891
Reviewed by: (partly) Tatsuki Makino <tatsuki_makino@hotmail.com>, diizzy@
37 lines
1.4 KiB
C++
37 lines
1.4 KiB
C++
--- src/SaneWrapper/backend.cpp.orig 2021-11-25 00:56:59 UTC
|
|
+++ src/SaneWrapper/backend.cpp
|
|
@@ -220,7 +220,8 @@ sane_open (SANE_String_Const device_name, SANE_Handle
|
|
{
|
|
return SANE_STATUS_INVAL;
|
|
}
|
|
- ((Epson_Scanner*)handle)->out_buffer = NULL;
|
|
+ // XXX next causes a SEGV on FreeBSD because out_buffer is not yet allocated
|
|
+ //((Epson_Scanner*)handle)->out_buffer = NULL;
|
|
if (!epson_backend->sane_dev)
|
|
{
|
|
const SANE_Device **dev = NULL;
|
|
@@ -355,6 +356,7 @@ sane_get_parameters (SANE_Handle handle, SANE_Paramete
|
|
unsigned int nSize = 100;
|
|
unsigned char* tmp_buf = (unsigned char*)::malloc(nSize);
|
|
SDIChar* output_path;
|
|
+ SDIError outError = kSDIErrorNone;
|
|
if(tmp_buf){
|
|
memset(tmp_buf, 0, nSize);
|
|
}else {
|
|
@@ -363,7 +365,6 @@ sane_get_parameters (SANE_Handle handle, SANE_Paramete
|
|
goto ERROR_2;
|
|
}
|
|
output_path = (SDIChar*)tmp_buf;
|
|
- SDIError outError;
|
|
s->hw->sv->SDIImage_CreatePtr_(&s->outImageData);
|
|
s->hw->sv->SDIScannerDriver_GetNextTransferEventPtr_(s->hw->sv->driver,
|
|
&outType,
|
|
@@ -442,7 +443,7 @@ sane_get_parameters (SANE_Handle handle, SANE_Paramete
|
|
}
|
|
}else {
|
|
status = SANE_STATUS_INVAL;
|
|
- fclose(fp);
|
|
+ //fclose(fp); // shouldn't try to close file that isn't open!
|
|
goto ERROR;
|
|
}
|
|
if(s->hw->sv->device_data.ColorType.select == kSDIColorTypeMono1){
|