diff options
Diffstat (limited to 'backend/kodakaio.c')
| -rw-r--r-- | backend/kodakaio.c | 60 | 
1 files changed, 32 insertions, 28 deletions
| diff --git a/backend/kodakaio.c b/backend/kodakaio.c index 9a7a8b4..73dd58b 100644 --- a/backend/kodakaio.c +++ b/backend/kodakaio.c @@ -51,10 +51,10 @@ If you want to use the test backend, for example with sane-troubleshoot, you sho     . - sane_open() : open a particular scanner-device and attach_scanner(devicename,&dev)     . . - sane_set_io_mode : set blocking-mode     . . - sane_get_select_fd : get scanner-fd -   . . - sane_get_option_descriptor() : get option informations +   . . - sane_get_option_descriptor() : get option information     . . - sane_control_option() : change option values     . . -   . . - sane_start() : start image aquisition [V,L,F,S,C,D,O,Z] first time or after cancel. [(F),E,G] every time +   . . - sane_start() : start image acquisition [V,L,F,S,C,D,O,Z] first time or after cancel. [(F),E,G] every time     . .   - sane_get_parameters() : returns actual scan-parameters     . .   - sane_read() : read image-data (from pipe)     . . - sane_cancel() : cancel operation, kill reader_process [(F), U] @@ -1299,7 +1299,7 @@ int  cmparray (unsigned char *array1, unsigned char *array2, size_t len)  {  /* compares len bytes of the arrays returns 0 if they match -returns the first missmatch position if they don't match */ +returns the first mismatch position if they don't match */  unsigned int i;  	for(i=0; i<len; ++i)  	{ @@ -2434,7 +2434,7 @@ First version only does autodiscovery */      /* Allocate a new client */      client = avahi_client_new(avahi_simple_poll_get(simple_poll), 0, client_callback, simple_poll, &error); -    /* Check wether creating the client object succeeded */ +    /* Check whether creating the client object succeeded */      if (!client) {          DBG(min(1,DBG_AUTO), "Failed to create client: %s\n", avahi_strerror(error));          goto fail; @@ -2513,10 +2513,11 @@ attach_one_net(const char *dev, unsigned int model)  }  static SANE_Status -attach_one_config(SANEI_Config __sane_unused__ *config, const char *line) +attach_one_config(SANEI_Config __sane_unused__ *config, const char *line, +		  void *data)  {  	int vendor, product, timeout; - +	SANE_Bool local_only = *(SANE_Bool*) data;  	int len = strlen(line);  	DBG(7, "%s: len = %d, line = %s\n", __func__, len, line); @@ -2550,27 +2551,30 @@ attach_one_config(SANEI_Config __sane_unused__ *config, const char *line)  	} else if (strncmp(line, "net", 3) == 0) { -		/* remove the "net" sub string */ -		const char *name = sanei_config_skip_whitespace(line + 3); -		char IP[1024]; -		unsigned int model = 0; - -		if (strncmp(name, "autodiscovery", 13) == 0) { - -#if WITH_AVAHI -			DBG (30, "%s: Initiating network autodiscovery via avahi\n", __func__); -			kodak_network_discovery(NULL); -#else -			DBG (20, "%s: Network autodiscovery not done because not configured with avahi.\n", __func__); -#endif - -		} else if (sscanf(name, "%s %x", IP, &model) == 2) { -			DBG(30, "%s: Using network device on IP %s, forcing model 0x%x\n", __func__, IP, model); -			attach_one_net(IP, model); -		} else { +		if (!local_only) { +			/* remove the "net" sub string */ +			const char *name = +				sanei_config_skip_whitespace(line + 3); +			char IP[1024]; +			unsigned int model = 0; + +			if (strncmp(name, "autodiscovery", 13) == 0) { + +	#if WITH_AVAHI +				DBG (30, "%s: Initiating network autodiscovery via avahi\n", __func__); +				kodak_network_discovery(NULL); +	#else +				DBG (20, "%s: Network autodiscovery not done because not configured with avahi.\n", __func__); +	#endif + +			} else if (sscanf(name, "%s %x", IP, &model) == 2) { +				DBG(30, "%s: Using network device on IP %s, forcing model 0x%x\n", __func__, IP, model); +				attach_one_net(IP, model); +			} else {  				DBG(1, "%s: net entry %s may be a host name?\n", __func__, name);  				attach_one_net(name, 0);  			} +		}  	} else if (sscanf(line, "snmp-timeout %i\n", &timeout)) {  		/* Timeout for auto network discovery */ @@ -2646,7 +2650,7 @@ sane_exit(void)  }  SANE_Status -sane_get_devices(const SANE_Device ***device_list, SANE_Bool __sane_unused__ local_only) +sane_get_devices(const SANE_Device ***device_list, SANE_Bool local_only)  {  	Kodak_Device *dev, *s, *prev=0;  	int i; @@ -2662,7 +2666,7 @@ sane_get_devices(const SANE_Device ***device_list, SANE_Bool __sane_unused__ loc  	/* Read the config, mark each device as found, possibly add new devs */  	sanei_configure_attach(KODAKAIO_CONFIG_FILE, NULL, -			       attach_one_config); +			       attach_one_config, &local_only);  	/*delete missing scanners from list*/  	for (s = first_dev; s;) { @@ -2756,7 +2760,7 @@ init_options(KodakAio_Scanner *s)  	s->val[OPT_MODE].w = MODE_COLOR;	/* default */  	DBG(20, "%s: mode_list has first entry %s, default mode is %s\n", __func__, mode_list[0],mode_list[s->val[OPT_MODE].w]); -	/* theshold the sane std says should be SANE_TYPE_FIXED 0..100 but all other backends seem to use INT 0..255 */ +	/* threshold the sane std says should be SANE_TYPE_FIXED 0..100 but all other backends seem to use INT 0..255 */  	s->opt[OPT_THRESHOLD].name = SANE_NAME_THRESHOLD;  	s->opt[OPT_THRESHOLD].title = SANE_TITLE_THRESHOLD;  	s->opt[OPT_THRESHOLD].desc = SANE_DESC_THRESHOLD; @@ -2768,7 +2772,7 @@ init_options(KodakAio_Scanner *s)  	s->val[OPT_THRESHOLD].w = SANE_FIX(50.0);  	DBG(20, "%s: threshold initialised to fixed %f\n", __func__, SANE_UNFIX(s->val[OPT_THRESHOLD].w)); -	/* theshold the sane std says should be SANE_TYPE_FIXED 0..100 but all other backends seem to use INT 0..255 +	/* threshold the sane std says should be SANE_TYPE_FIXED 0..100 but all other backends seem to use INT 0..255  	s->opt[OPT_THRESHOLD].name = SANE_NAME_THRESHOLD;  	s->opt[OPT_THRESHOLD].title = SANE_TITLE_THRESHOLD;  	s->opt[OPT_THRESHOLD].desc = SANE_DESC_THRESHOLD; | 
