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>
|