1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
|
.TH sane\-dll 5 "13 Jul 2008" "" "SANE Scanner Access Now Easy"
.IX sane\-dll
.SH NAME
sane\-dll \- SANE dynamic backend loader
.SH DESCRIPTION
The
.B sane\-dll
library implements a SANE (Scanner Access Now Easy) backend that
provides access to an arbitrary number of other SANE backends. These
backends may either be pre-loaded at the time the
.B sane\-dll
library is built or, on systems that support dynamic loading of shared
libraries, the backends may be loaded at runtime. In the latter case,
adding support for a new backend simply involves installing the
relevant library in
.I /usr/lib/x86_64-linux-gnu/sane
and adding an entry to the
.I dll.conf
configuration file. In other words, no applications need to be
modified or recompiled to add support for new devices.
.SH "DEVICE NAMES"
This backend expects device names of the form:
.PP
.RS
.IR backend : device
.RE
.PP
Where
.I backend
is the name of the backend and
.I device
is the name of the device in this backend that should be addressed.
If the device name does not contain a colon (:), then the entire string
is treated as the
.I device
string for the default backend. The default backend is the backend
listed last in the configuration file (see below) or the first
pre-loaded backend (if any).
.SH CONFIGURATION
The contents of the
.I dll.conf
file is a list of backend names that may be loaded dynamically upon demand.
Empty lines are ignored, also everything after a hash mark (#). A sample
configuration file is shown below:
.PP
.RS
net
.br
# this is a comment
.br
pnm
.br
mustek
.RE
.PP
It is also possible to add a file in
.I /etc/sane.d/dll.d
that contains the list of backends to be added. Backends mentioned in a
file included in this directory will be added before any backends listed
in
.I dll.conf.
Files in
.I /etc/sane.d/dll.d
can be freely named. They shall follow the format conventions as apply for
.I dll.conf.
.PP
Note that backends that were pre-loaded when building this library do
not have to be listed in this configuration file. That is, if a
backend was preloaded, then that backend will always be present,
regardless of whether it's listed in the configuration file or not.
.PP
The list of preloaded backends is determined by macro
.B PRELOADABLE_BACKENDS
in file backend/Makefile.in of the SANE source code distribution. After
changing the value of this macro, it is necessary to reconfigure, rebuild,
and reinstall SANE for the change to take effect.
Aliases are defined in the config file
.IR dll.aliases .
It can contain entries of the form
.PP
.RS
.br
alias SomeName SaneDeviceName
.br
alias "Some Name" SaneDeviceName
.br
hide SaneDeviceName
.RE
.PP
For example:
.PP
.RS
.br
alias Epson net:somehost:epson:/dev/sgX
.br
alias "Siemens ST400" st400:/dev/sgY
.br
hide net:somehost:pnm:0
.br
hide net:somehost:pnm:1
.br
alias "Read from file" pnm:0
.br
hide pnm:1
.RE
.PP
Aliased device names are automatically hidden.
The idea is that users don't have to deal with complicated device
names (especially for networked devices), and to hide other exported
devices which might confuse them. Note that a hidden device can still
be accessed if the device name is known, it just doesn't appear on the
list.
.SH FILES
.TP
.I /etc/sane.d/dll.aliases
The list of aliased or hidden backends.
.TP
.I /etc/sane.d/dll.conf
The backend configuration file (see also description of
.B SANE_CONFIG_DIR
below).
.TP
.I /usr/lib/x86_64-linux-gnu/sane/libsane\-dll.a
The static library implementing this backend.
.TP
.I /usr/lib/x86_64-linux-gnu/sane/libsane\-dll.so
The shared library implementing this backend (present on systems that
support dynamic loading).
.SH ENVIRONMENT
.TP
.B SANE_CONFIG_DIR
This environment variable specifies the list of directories that may
contain the configuration file. On *NIX systems, the directories are
separated by a colon (`:'), under OS/2, they are separated by a
semi-colon (`;'). If this variable is not set, the configuration file
is searched in two default directories: first, the current working
directory (".") and then in
.IR /etc/sane.d .
If the value of the environment variable ends with the directory
separator character, then the default directories are searched after
the explicitly specified directories. For example, setting
.B SANE_CONFIG_DIR
to "/tmp/config:" would result in directories
.IR tmp/config ,
.IR . ,
and
.I "/etc/sane.d"
being searched (in this order).
.TP
.B SANE_DEBUG_DLL
If the library was compiled with debug support enabled, this
environment variable controls the debug level for this backend. E.g.,
a value of 128 requests all debug output to be printed. Smaller
levels reduce verbosity.
.ft CR
.nf
Value Description
0 print severe errors only
1 print normal errors and important messages
2 print normal messages
3 print debugging messages
4 print everything
.fi
.ft R
Example:
export SANE_DEBUG_DLL=3
.SH "SEE ALSO"
.BR sane (7),
.BR scanimage (1),
.BR sane\-"backendname" (5)
.SH AUTHOR
David Mosberger
|