corrected readproc for SANE

Oliver.Rauch@Wolfsburg.DE
Fri, 17 Apr 1998 23:14:03 +0200 (MET DST)

Hello backend-developers!

The Makefile.in in the backend-directory was not correct!
This is the right version!

I just made the follwing test that works fine:

My sytsem:
/dev/sg0: scsi-disk (id 0)
/dev/sg1: scsi-cdrom (id 4)
/dev/sg2: scanner (id 5)

in umax.conf: SCSI_NAME: "UMAX " "UMAX S-12"

xscanimage finds scanner on /dev/sg2

as root: echo "scsi remove-single-device 0 0 4 0" >/proc/scsi/scsi

xscanimage finds scanner on /dev/sg1 (must rw for users!)

as root: echo "scsi remove-single-device 0 0 4 0" >/proc/scsi/scsi
as root: echo "scsi add-single-device 0 0 4 0" >/proc/scsi/scsi
as root: echo "scsi add-single-device 0 0 5 0" >/proc/scsi/scsi

xscanimage finds scanner on /dev/sg2 again!

So the user only needs to make all devices on which the scanner may
be connected set to rw for user, then sane always finds the scanner!

Bye
Oliver

------------------------------------------------------------------------
I included the readproc routine into sane. It already works with
the umax-backend.

I added sanei_readproc to sane-0.72/sanei with the function:
char *sanei_readproc_get_device(char *findvendor, char *findmodel,
int findbus, int findcha, int findid, int findlun)

You call it with findvendor and findmodel set or
with findbus, findcha, findid and findlun set, see example!
There three differnt possibilities to specifiy a device in the config-file:
SCSI_ID: 0 0 5 0
SCSI_NAME: "UMAX " "UMAX S-12"
/dev/scanner

And I added two functions to sanei/sanei_config.c:
void sanei_config_kill_spaces(char **string)
char *sanei_config_read_string(char **string)

Example for reading configure-file and using readproc:
( you have to #include "sane/sanei_readproc.h" )

-------------------------------------------------------------------------------

fp = sanei_config_open(UMAX_CONFIG_FILE);
if (!fp)
{
attach_scanner("/dev/scanner", 0); /* no config-file: /dev/scanner */
return SANE_STATUS_GOOD;
}

while(fgets(dev_name, sizeof(dev_name), fp))
{
if (dev_name[0] == '#') { continue; } /* ignore line comments */

len = strlen (dev_name);
if (dev_name[len - 1] == '\n') { dev_name[--len] = '\0'; }

if (!len) { continue; } /* ignore empty lines */

if (strncmp(dev_name, "SCSI_ID:",8) == 0)
{
int bus, cha, id, lun;
char *dev;
char *pos = &dev_name[8];

bus = strtol(pos, &pos, 10);
cha = strtol(pos, &pos, 10);
id = strtol(pos, &pos, 10);
lun = strtol(pos, &pos, 10);

dev = sanei_readproc_get_device(NULL,NULL,bus,cha,id,lun);
if (dev != NULL)
{
attach_scanner(dev,0);
}
}
else if (strncmp(dev_name, "SCSI_NAME:",10) == 0)
{
char *vendor, *model;
char *dev;
char *pos = &dev_name[10];

vendor = sanei_config_read_string(&pos);
model = sanei_config_read_string(&pos);

DBG(DBG_info, "looking for vendor=\"%s\", model=\"%s\"\n",vendor, model);

dev = sanei_readproc_get_device(vendor, model, -1, -1, -1, -1);
if (dev != NULL)
{
attach_scanner(dev,0);
}

free(vendor);
free(model);
}
else
{
attach_scanner(dev_name, 0);
}
}

fclose(fp);

-------------------------------------------------------------------------------

This is the snapshot of the readproc-changes.
It overwirtes/creates the following files:

sane-0.72/backend/Makefile.in
sane-0.72/include/sane/sanei_readproc.h
sane-0.72/include/sane/sanei_config.h
sane-0.72/sanei/Makefile.in
sane-0.72/sanei/sanei_config.c
sane-0.72/sanei/sanei_readproc.c

Bye
Oliver

=============================================================

begin 644 readproc-0.72a.tar.gz
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
=[:\LE#>8I_6B0/TQ&V/3IDW[(WL!ZVTY.@!X````
`
end

--
Source code, list archive, and docs: http://www.mostang.com/sane/
To unsubscribe: echo unsubscribe sane-devel | mail majordomo@mostang.com