kopia lustrzana https://gitlab.com/sane-project/website
				
				
				
			
		
			
	
	
		
			225 wiersze
		
	
	
		
			8.3 KiB
		
	
	
	
		
			HTML
		
	
	
		
		
			
		
	
	
			225 wiersze
		
	
	
		
			8.3 KiB
		
	
	
	
		
			HTML
		
	
	
|   | <!-- received="Tue Apr 27 15:28:36 1999 PDT" --> | ||
|  | <!-- sent="Wed, 28 Apr 1999 00:32:11 +0200" --> | ||
|  | <!-- name="Petter Reinholdtsen" --> | ||
|  | <!-- email="pere@hungry.com" --> | ||
|  | <!-- subject="Patch: sane_init() may fail" --> | ||
|  | <!-- id="199904272232.AAA24299@lee.Cc.Uit.No" --> | ||
|  | <!-- inreplyto="" --> | ||
|  | <title>sane-devel: Patch: sane_init() may fail</title> | ||
|  | <h1>Patch: sane_init() may fail</h1> | ||
|  | <b>Petter Reinholdtsen</b> (<a href="mailto:pere@hungry.com"><i>pere@hungry.com</i></a>)<br> | ||
|  | <i>Wed, 28 Apr 1999 00:32:11 +0200</i> | ||
|  | <p> | ||
|  | <ul> | ||
|  | <li> <b>Messages sorted by:</b> <a href="date.html#392">[ date ]</a><a href="index.html#392">[ thread ]</a><a href="subject.html#392">[ subject ]</a><a href="author.html#392">[ author ]</a> | ||
|  | <!-- next="start" --> | ||
|  | <li> <b>Next message:</b> <a href="0393.html">Petter Reinholdtsen: "Patch: Autogenerate lsm entry"</a> | ||
|  | <li> <b>Previous message:</b> <a href="0391.html">Petter Reinholdtsen: "Re: May sane_init fail?"</a> | ||
|  | <!-- nextthread="start" --> | ||
|  | <!-- reply="end" --> | ||
|  | </ul> | ||
|  | <!-- body="start" --> | ||
|  | Here is my patch to document and implement the changes required to let<br> | ||
|  | sane_init() fail.  It is relative to SANE 1.0.1.<br> | ||
|  | <p> | ||
|  | diff -ur sane-1.0.1/ChangeLog sane-1.0.1-pere/ChangeLog<br> | ||
|  | --- sane-1.0.1/ChangeLog	Mon Apr 19 18:21:33 1999<br> | ||
|  | +++ sane-1.0.1-pere/ChangeLog	Wed Apr 28 00:28:01 1999<br> | ||
|  | @@ -1,3 +1,10 @@<br> | ||
|  | +1999-04-28  Petter Reinholdtsen <<a href="mailto:pere@td.org.uit.no">pere@td.org.uit.no</a>><br> | ||
|  | +<br> | ||
|  | +	* doc/sane.tex frontend/scanimage.c frontend/xcam.c<br> | ||
|  | + 	frontend/xscanimage.c: Specified valid return values for<br> | ||
|  | + 	sane_init(), and made sure all our frontends checks for the<br> | ||
|  | + 	correct return value before using other methods in the backend.<br> | ||
|  | +<br> | ||
|  |  1999-04-19  David Mosberger-Tang  <<a href="mailto:David.Mosberger@acm.org">David.Mosberger@acm.org</a>><br> | ||
|  |  <br> | ||
|  |  	* Version 1.0.1 released.<br> | ||
|  | diff -ur sane-1.0.1/doc/sane.tex sane-1.0.1-pere/doc/sane.tex<br> | ||
|  | --- sane-1.0.1/doc/sane.tex	Sat Apr  3 23:16:07 1999<br> | ||
|  | +++ sane-1.0.1-pere/doc/sane.tex	Wed Apr 28 00:17:31 1999<br> | ||
|  | @@ -1052,9 +1052,11 @@<br> | ||
|  |  <br> | ||
|  |  This function must be called before any other SANE function can be<br> | ||
|  |  called.  The behavior of a SANE backend is undefined if this function<br> | ||
|  | -is not called first.  The version code of the backend is returned in<br> | ||
|  | -the value pointed to by \code{version\_code}.  If that pointer is<br> | ||
|  | -\code{NULL}, no version code is returned. <br> | ||
|  | +is not called first.  The behavior of a backend is also undefined if<br> | ||
|  | +this function returns anything other then \code{SANE\_STATUS\_GOOD}.<br> | ||
|  | +The version code of the backend is returned in the value pointed to by<br> | ||
|  | +\code{version\_code}.  If that pointer is \code{NULL}, no version code<br> | ||
|  | +is returned.<br> | ||
|  |    Argument \code{authorize} is either a pointer to a function that is<br> | ||
|  |    invoked when the backend requires authentication for a specific<br> | ||
|  |    resource or \code{NULL} if the frontend does not support<br> | ||
|  | @@ -1064,6 +1066,16 @@<br> | ||
|  |  SANE_Status sane_init (SANE_Int * version_code,<br> | ||
|  |                         SANE_Authorization_Callback authorize);<br> | ||
|  |  \end{verbatim}<br> | ||
|  | +\end{quote}<br> | ||
|  | +<br> | ||
|  | +This function may fail with one of the following status codes.<br> | ||
|  | +\begin{quote}<br> | ||
|  | +\begin{description}<br> | ||
|  | +\item[\code{SANE\_STATUS\_UNSUPPORTED}:] The backend is not supported on <br> | ||
|  | +  this machines current configuration.<br> | ||
|  | +\item[\code{SANE\_STATUS\_NO\_MEM}:] An insufficent amount of memory<br> | ||
|  | +  is available to complete.  Try later when more memory is available.<br> | ||
|  | +\end{description}<br> | ||
|  |  \end{quote}<br> | ||
|  |  <br> | ||
|  |  The authorization function may be called by a backend in response to<br> | ||
|  | diff -ur sane-1.0.1/frontend/scanimage.c sane-1.0.1-pere/frontend/scanimage.c<br> | ||
|  | --- sane-1.0.1/frontend/scanimage.c	Fri Mar  5 07:13:49 1999<br> | ||
|  | +++ sane-1.0.1-pere/frontend/scanimage.c	Wed Apr 28 00:28:44 1999<br> | ||
|  | @@ -73,6 +73,7 @@<br> | ||
|  |  static SANE_Handle device;<br> | ||
|  |  static int verbose;<br> | ||
|  |  static int test;<br> | ||
|  | +static int list;<br> | ||
|  |  static int help;<br> | ||
|  |  static const char * prog_name;<br> | ||
|  |  static SANE_Option_Descriptor window_option[2];<br> | ||
|  | @@ -1041,6 +1042,29 @@<br> | ||
|  |      free (image.data);<br> | ||
|  |  }<br> | ||
|  |  <br> | ||
|  | +void<br> | ||
|  | +list_devices(void)<br> | ||
|  | +{<br> | ||
|  | +  const SANE_Device ** device_list;<br> | ||
|  | +  SANE_Status status;<br> | ||
|  | +  int i;<br> | ||
|  | +<br> | ||
|  | +  status = sane_get_devices (&device_list, SANE_FALSE);<br> | ||
|  | +  if (status != SANE_STATUS_GOOD)<br> | ||
|  | +    {<br> | ||
|  | +      fprintf (stderr, "%s: sane_get_devices() failed: %s\n",<br> | ||
|  | +	       prog_name, sane_strstatus (status));<br> | ||
|  | +      return;<br> | ||
|  | +    }<br> | ||
|  | +<br> | ||
|  | +  for (i = 0; device_list[i]; ++i)<br> | ||
|  | +    {<br> | ||
|  | +      printf ("device `%s' is a %s %s %s\n",<br> | ||
|  | +	      device_list[i]->name, device_list[i]->vendor,<br> | ||
|  | +	      device_list[i]->model, device_list[i]->type);<br> | ||
|  | +    }<br> | ||
|  | +}<br> | ||
|  | +<br> | ||
|  |  int<br> | ||
|  |  main (int argc, char **argv)<br> | ||
|  |  {<br> | ||
|  | @@ -1060,8 +1084,6 @@<br> | ||
|  |    else<br> | ||
|  |      prog_name = argv[0];<br> | ||
|  |  <br> | ||
|  | -  sane_init (0, 0);<br> | ||
|  | -<br> | ||
|  |    /* make a first pass through the options with error printing and argument<br> | ||
|  |       permutation disabled: */<br> | ||
|  |    opterr = 0;<br> | ||
|  | @@ -1079,27 +1101,7 @@<br> | ||
|  |  	case 'h': help = 1; break;<br> | ||
|  |  	case 'v': ++verbose; break;<br> | ||
|  |  	case 'T': test= 1; break;<br> | ||
|  | -	case 'L':<br> | ||
|  | -	  {<br> | ||
|  | -	    int i;<br> | ||
|  | -<br> | ||
|  | -	    status = sane_get_devices (&device_list, SANE_FALSE);<br> | ||
|  | -	    if (status != SANE_STATUS_GOOD)<br> | ||
|  | -	      {<br> | ||
|  | -		fprintf (stderr, "%s: sane_get_devices() failed: %s\n",<br> | ||
|  | -			 prog_name, sane_strstatus (status));<br> | ||
|  | -		exit (1);<br> | ||
|  | -	      }<br> | ||
|  | -<br> | ||
|  | -	    for (i = 0; device_list[i]; ++i)<br> | ||
|  | -	      {<br> | ||
|  | -		printf ("device `%s' is a %s %s %s\n",<br> | ||
|  | -			 device_list[i]->name, device_list[i]->vendor,<br> | ||
|  | -			 device_list[i]->model, device_list[i]->type);<br> | ||
|  | -	      }<br> | ||
|  | -	    exit (0);<br> | ||
|  | -	  }<br> | ||
|  | -<br> | ||
|  | +	case 'L': list = 1; break;<br> | ||
|  |  	case 'V':<br> | ||
|  |  	  printf ("scanimage (%s) %s\n", PACKAGE, VERSION);<br> | ||
|  |  	  exit (0);<br> | ||
|  | @@ -1122,6 +1124,18 @@<br> | ||
|  |  -v, --verbose              give even more status messages\n\<br> | ||
|  |  -V, --version              print version information\n",<br> | ||
|  |  	    prog_name);<br> | ||
|  | +<br> | ||
|  | +  if (SANE_STATUS_GOOD != sane_init (NULL, NULL))<br> | ||
|  | +    {<br> | ||
|  | +      fprintf(stderr,"sane_init() failed.  Unable to do anything.  Exiting\n");<br> | ||
|  | +      return(1);<br> | ||
|  | +    }<br> | ||
|  | +<br> | ||
|  | +  if (list)<br> | ||
|  | +    {<br> | ||
|  | +      list_devices();<br> | ||
|  | +      return(0);<br> | ||
|  | +    }<br> | ||
|  |  <br> | ||
|  |    if (!devname)<br> | ||
|  |      {<br> | ||
|  | diff -ur sane-1.0.1/frontend/xcam.c sane-1.0.1-pere/frontend/xcam.c<br> | ||
|  | --- sane-1.0.1/frontend/xcam.c	Sat Apr  4 06:39:20 1998<br> | ||
|  | +++ sane-1.0.1-pere/frontend/xcam.c	Tue Apr 27 23:54:56 1999<br> | ||
|  | @@ -894,7 +894,11 @@<br> | ||
|  |    /* turn on by default as we don't support graphical geometry selection */<br> | ||
|  |    preferences.advanced = 1;<br> | ||
|  |  <br> | ||
|  | -  sane_init (NULL, 0);<br> | ||
|  | +  if (SANE_STATUS_GOOD != sane_init (NULL, NULL))<br> | ||
|  | +    {<br> | ||
|  | +      fprintf(stderr,"sane_init() failed.  Unable to do anything.  Exiting\n");<br> | ||
|  | +      return(1);<br> | ||
|  | +    }<br> | ||
|  |  <br> | ||
|  |    gdk_set_show_events (0);<br> | ||
|  |    gtk_init (&argc, &argv);<br> | ||
|  | diff -ur sane-1.0.1/frontend/xscanimage.c sane-1.0.1-pere/frontend/xscanimage.c<br> | ||
|  | --- sane-1.0.1/frontend/xscanimage.c	Sat Apr  3 06:07:57 1999<br> | ||
|  | +++ sane-1.0.1-pere/frontend/xscanimage.c	Tue Apr 27 23:56:42 1999<br> | ||
|  | @@ -257,7 +257,12 @@<br> | ||
|  |        nargs, nreturn_vals,<br> | ||
|  |        args, return_vals);<br> | ||
|  |  <br> | ||
|  | -  sane_init (0, 0);<br> | ||
|  | +  if (SANE_STATUS_GOOD != sane_init (NULL, NULL))<br> | ||
|  | +    {<br> | ||
|  | +      fprintf(stderr,"sane_init() failed.  Unable to do anything.  Exiting\n");<br> | ||
|  | +      return(1);<br> | ||
|  | +    }<br> | ||
|  | +<br> | ||
|  |    sane_get_devices (&devlist, SANE_FALSE);<br> | ||
|  |  <br> | ||
|  |    for (i = 0; devlist[i]; ++i)<br> | ||
|  | <p> | ||
|  | <pre> | ||
|  | --  | ||
|  | ##>  Petter Reinholdtsen <##    | <a href="mailto:pere@td.org.uit.no">pere@td.org.uit.no</a> | ||
|  | <a href="http://www.hungry.com/~pere/">http://www.hungry.com/~pere/</a> O- | Go Mozilla, go! Go! | ||
|  | <p> | ||
|  | <pre> | ||
|  | -- | ||
|  | Source code, list archive, and docs: <a href="http://www.mostang.com/sane/">http://www.mostang.com/sane/</a> | ||
|  | To unsubscribe: echo unsubscribe sane-devel | mail <a href="mailto:majordomo@mostang.com">majordomo@mostang.com</a> | ||
|  | </pre> | ||
|  | <!-- body="end" --> | ||
|  | <p> | ||
|  | <ul> | ||
|  | <!-- next="start" --> | ||
|  | <li> <b>Next message:</b> <a href="0393.html">Petter Reinholdtsen: "Patch: Autogenerate lsm entry"</a> | ||
|  | <li> <b>Previous message:</b> <a href="0391.html">Petter Reinholdtsen: "Re: May sane_init fail?"</a> | ||
|  | <!-- nextthread="start" --> | ||
|  | <!-- reply="end" --> | ||
|  | </ul> |