kopia lustrzana https://gitlab.com/sane-project/backends
2001-04-13 Henning Meier-Geinitz <hmg@gmx.de>
* PROJECTS TODO: Added entry about E3 USB chipset. * backend/dll.c backend/dll.desc: New version is 1.0.5. Version and PACKAGE_VERSION is printed with debug level set to 1 or higher. The version numbers of all backends that are loaded are printed at debug level 3 or higher. Print error if backend with wrong major version number is loaded. Some standardization changes concerning the DBG messages. * backend/net.c backend/net.desc: New version is 1.0.5. Version and PACKAGE_VERSION is printed with debug level set to 1 or higher. Some standardization changes concerning the DBG messages. * backend/pnm.c: Return SANE_INFO_RELOAD_PARAMS even if the pnm file doesn't exist or can't be loaded (from mh <crapsite@gmx.net>). * doc/backend-writing.txt: Added AUTHORS to the list of things that should be updated when including a new backend. Added points about avoiding printf and exit in backends. * doc/releases.txt: New file. This text summarizes some points to pay attention to when a new release of sane-backends is made. Additions and corrections are appreciated. * doc/scanimage.man: Add some more information about the -V option. * frontend/scanimage.c: The option -V now also prints the version of the backend (ususally dll).DEVEL_2_0_BRANCH-1
rodzic
2b29b35e30
commit
30b517b433
4
PROJECTS
4
PROJECTS
|
|
@ -22,6 +22,10 @@ David Mosberger
|
|||
Canon 1220U USB scanner (wip)
|
||||
http://sourceforge.net/projects/canonscanner/
|
||||
|
||||
E3 USB chipset support (e.g. Genius Vivid Pro USB, Colorado USB 19200,
|
||||
Visioneer OneTouch 7600, IBM IdeaScan 2000 USB) (wip)
|
||||
http://homepages.paradise.net.nz/stevenel/scanner/
|
||||
|
||||
ePhoto (wip?)
|
||||
Matthew K. Gray <mkgray@mit.edu>
|
||||
|
||||
|
|
|
|||
|
|
@ -42,6 +42,8 @@
|
|||
allows managing an arbitrary number of SANE backends by using
|
||||
dynamic linking to load backends on demand. */
|
||||
|
||||
#define BUILD 5
|
||||
|
||||
#ifdef _AIX
|
||||
# include "lalloca.h" /* MUST come first for AIX! */
|
||||
#endif
|
||||
|
|
@ -198,7 +200,7 @@ static const char *op_name[] =
|
|||
static void *
|
||||
op_unsupported (void)
|
||||
{
|
||||
DBG(1, "call to unsupported backend operation\n");
|
||||
DBG(1, "op_unsupported: call to unsupported backend operation\n");
|
||||
return (void *) (long) SANE_STATUS_UNSUPPORTED;
|
||||
}
|
||||
|
||||
|
|
@ -208,18 +210,18 @@ add_backend (const char *name, struct backend **bep)
|
|||
{
|
||||
struct backend *be, *prev;
|
||||
|
||||
DBG(1, "adding backend %s\n", name);
|
||||
DBG(1, "add_backend: adding backend %s\n", name);
|
||||
|
||||
if (strcmp(name,"dll") == 0)
|
||||
{
|
||||
DBG( 0, "remove the dll-backend from your dll.conf !!!\n");
|
||||
DBG( 0, "add_backend: remove the dll-backend from your dll.conf!!!\n");
|
||||
return SANE_STATUS_GOOD;
|
||||
}
|
||||
|
||||
for (prev = 0, be = first_backend; be; prev = be, be = be->next)
|
||||
if (strcmp (be->name, name) == 0)
|
||||
{
|
||||
DBG(1, "...already there\n");
|
||||
DBG(1, "add_backend: %s is already there\n", name);
|
||||
/* move to front so we preserve order that we'd get with
|
||||
dynamic loading: */
|
||||
if (prev)
|
||||
|
|
@ -269,7 +271,7 @@ load (struct backend *be)
|
|||
# error "Tried to compile unsupported DLL."
|
||||
#endif /* HAVE_DLOPEN */
|
||||
|
||||
DBG(1, "loading backend %s\n", be->name);
|
||||
DBG(1, "load: loading backend %s\n", be->name);
|
||||
|
||||
/* initialize all ops to "unsupported" so we can "use" the backend
|
||||
even if the stuff later in this function fails */
|
||||
|
|
@ -312,7 +314,7 @@ load (struct backend *be)
|
|||
libname, strerror (errno));
|
||||
return SANE_STATUS_INVAL;
|
||||
}
|
||||
DBG(2, "dlopen()ing `%s'\n", libname);
|
||||
DBG(2, "load: dlopen()ing `%s'\n", libname);
|
||||
|
||||
#ifdef HAVE_DLOPEN
|
||||
be->handle = dlopen (libname, mode);
|
||||
|
|
@ -324,9 +326,9 @@ load (struct backend *be)
|
|||
if (!be->handle)
|
||||
{
|
||||
#ifdef HAVE_DLOPEN
|
||||
DBG(2, "dlopen() failed (%s)\n", dlerror());
|
||||
DBG(2, "load: dlopen() failed (%s)\n", dlerror());
|
||||
#else
|
||||
DBG(2, "dlopen() failed (%s)\n", strerror (errno));
|
||||
DBG(2, "load: dlopen() failed (%s)\n", strerror (errno));
|
||||
#endif
|
||||
return SANE_STATUS_INVAL;
|
||||
}
|
||||
|
|
@ -363,7 +365,7 @@ load (struct backend *be)
|
|||
be->op[i] = op;
|
||||
}
|
||||
if (NULL == op)
|
||||
DBG(2, "unable to find %s\n", funcname);
|
||||
DBG(2, "load: unable to find %s\n", funcname);
|
||||
}
|
||||
|
||||
return SANE_STATUS_GOOD;
|
||||
|
|
@ -397,7 +399,14 @@ init (struct backend *be)
|
|||
return status;
|
||||
|
||||
if (SANE_VERSION_MAJOR (version) != V_MAJOR)
|
||||
return SANE_STATUS_INVAL;
|
||||
{
|
||||
DBG(1, "init: backend `%s´ has a wrong major version (%d instead of %d)\n",
|
||||
be->name, SANE_VERSION_MAJOR (version), V_MAJOR);
|
||||
return SANE_STATUS_INVAL;
|
||||
}
|
||||
DBG(3, "init: backend `%s' is version %d.%d.%d\n", be->name,
|
||||
SANE_VERSION_MAJOR(version), SANE_VERSION_MINOR(version),
|
||||
SANE_VERSION_BUILD(version));
|
||||
|
||||
be->inited = 1;
|
||||
|
||||
|
|
@ -497,6 +506,10 @@ sane_init (SANE_Int * version_code, SANE_Auth_Callback authorize)
|
|||
|
||||
auth_callback = authorize;
|
||||
|
||||
DBG(1, "sane_init: SANE dll backend version %d.%d.%d from %s\n", V_MAJOR,
|
||||
V_MINOR, BUILD, PACKAGE_VERSION);
|
||||
|
||||
|
||||
/* chain preloaded backends together: */
|
||||
for (i = 0; i < NELEMS(preloaded_backends); ++i)
|
||||
{
|
||||
|
|
@ -507,7 +520,7 @@ sane_init (SANE_Int * version_code, SANE_Auth_Callback authorize)
|
|||
}
|
||||
|
||||
if (version_code)
|
||||
*version_code = SANE_VERSION_CODE (V_MAJOR, V_MINOR, 0);
|
||||
*version_code = SANE_VERSION_CODE (V_MAJOR, V_MINOR, BUILD);
|
||||
|
||||
fp = sanei_config_open (DLL_CONFIG_FILE);
|
||||
if (!fp)
|
||||
|
|
@ -553,14 +566,14 @@ sane_exit (void)
|
|||
struct backend *be, *next;
|
||||
struct alias *alias;
|
||||
|
||||
DBG(1, "exiting\n");
|
||||
DBG(1, "sane_exit: exiting\n");
|
||||
|
||||
for (be = first_backend; be; be = next)
|
||||
{
|
||||
next = be->next;
|
||||
if (be->loaded)
|
||||
{
|
||||
DBG(2, "calling backend `%s's exit function\n", be->name);
|
||||
DBG(2, "sane_exit: calling backend `%s's exit function\n", be->name);
|
||||
(*be->op[OP_EXIT]) ();
|
||||
#ifdef HAVE_DLL
|
||||
|
||||
|
|
@ -803,7 +816,7 @@ sane_close (SANE_Handle handle)
|
|||
{
|
||||
struct meta_scanner *s = handle;
|
||||
|
||||
DBG(3, "close(handle=%p)\n", handle);
|
||||
DBG(3, "sane_close(handle=%p)\n", handle);
|
||||
(*s->be->op[OP_CLOSE]) (s->handle);
|
||||
free (s);
|
||||
}
|
||||
|
|
@ -813,7 +826,7 @@ sane_get_option_descriptor (SANE_Handle handle, SANE_Int option)
|
|||
{
|
||||
struct meta_scanner *s = handle;
|
||||
|
||||
DBG(3, "get_option_descriptor(handle=%p,option=%d)\n", handle, option);
|
||||
DBG(3, "sane_get_option_descriptor(handle=%p,option=%d)\n", handle, option);
|
||||
return (*s->be->op[OP_GET_OPTION_DESC]) (s->handle, option);
|
||||
}
|
||||
|
||||
|
|
@ -823,7 +836,7 @@ sane_control_option (SANE_Handle handle, SANE_Int option,
|
|||
{
|
||||
struct meta_scanner *s = handle;
|
||||
|
||||
DBG(3, "control_option(handle=%p,option=%d,action=%d,value=%p,info=%p)\n",
|
||||
DBG(3, "sane_control_option(handle=%p,option=%d,action=%d,value=%p,info=%p)\n",
|
||||
handle, option, action, value, info);
|
||||
return (long) (*s->be->op[OP_CTL_OPTION]) (s->handle, option, action,
|
||||
value, info);
|
||||
|
|
@ -834,7 +847,7 @@ sane_get_parameters (SANE_Handle handle, SANE_Parameters * params)
|
|||
{
|
||||
struct meta_scanner *s = handle;
|
||||
|
||||
DBG(3, "get_parameters(handle=%p,params=%p)\n", handle, params);
|
||||
DBG(3, "sane_get_parameters(handle=%p,params=%p)\n", handle, params);
|
||||
return (long) (*s->be->op[OP_GET_PARAMS]) (s->handle, params);
|
||||
}
|
||||
|
||||
|
|
@ -843,7 +856,7 @@ sane_start (SANE_Handle handle)
|
|||
{
|
||||
struct meta_scanner *s = handle;
|
||||
|
||||
DBG(3, "start(handle=%p)\n", handle);
|
||||
DBG(3, "sane_start(handle=%p)\n", handle);
|
||||
return (long) (*s->be->op[OP_START]) (s->handle);
|
||||
}
|
||||
|
||||
|
|
@ -853,7 +866,7 @@ sane_read (SANE_Handle handle, SANE_Byte * data, SANE_Int max_length,
|
|||
{
|
||||
struct meta_scanner *s = handle;
|
||||
|
||||
DBG(3, "read(handle=%p,data=%p,maxlen=%d,lenp=%p)\n",
|
||||
DBG(3, "sane_read(handle=%p,data=%p,maxlen=%d,lenp=%p)\n",
|
||||
handle, data, max_length, length);
|
||||
return (long) (*s->be->op[OP_READ]) (s->handle, data, max_length, length);
|
||||
}
|
||||
|
|
@ -863,7 +876,7 @@ sane_cancel (SANE_Handle handle)
|
|||
{
|
||||
struct meta_scanner *s = handle;
|
||||
|
||||
DBG(3, "cancel(handle=%p)\n", handle);
|
||||
DBG(3, "sane_cancel(handle=%p)\n", handle);
|
||||
(*s->be->op[OP_CANCEL]) (s->handle);
|
||||
}
|
||||
|
||||
|
|
@ -872,7 +885,7 @@ sane_set_io_mode (SANE_Handle handle, SANE_Bool non_blocking)
|
|||
{
|
||||
struct meta_scanner *s = handle;
|
||||
|
||||
DBG(3, "set_io_mode(handle=%p,nonblocking=%d)\n", handle, non_blocking);
|
||||
DBG(3, "sane_set_io_mode(handle=%p,nonblocking=%d)\n", handle, non_blocking);
|
||||
return (long) (*s->be->op[OP_SET_IO_MODE]) (s->handle, non_blocking);
|
||||
}
|
||||
|
||||
|
|
@ -881,6 +894,6 @@ sane_get_select_fd (SANE_Handle handle, SANE_Int * fd)
|
|||
{
|
||||
struct meta_scanner *s = handle;
|
||||
|
||||
DBG(3, "get_select_fd(handle=%p,fdp=%p)\n", handle, fd);
|
||||
DBG(3, "sane_get_select_fd(handle=%p,fdp=%p)\n", handle, fd);
|
||||
return (long) (*s->be->op[OP_GET_SELECT_FD]) (s->handle, fd);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
:backend "dll" ; name of backend
|
||||
:version "0.73"
|
||||
:version "1.0.5"
|
||||
:status :beta
|
||||
:manpage "sane-dll"
|
||||
|
||||
|
|
|
|||
|
|
@ -40,6 +40,8 @@
|
|||
|
||||
This file implements a SANE network-based meta backend. */
|
||||
|
||||
#define BUILD 5
|
||||
|
||||
#ifdef _AIX
|
||||
# include "lalloca.h" /* MUST come first for AIX! */
|
||||
#endif
|
||||
|
|
@ -90,18 +92,18 @@ add_device (const char *name, Net_Device ** ndp)
|
|||
struct hostent *he;
|
||||
Net_Device *nd;
|
||||
|
||||
DBG (1, "adding backend %s\n", name);
|
||||
DBG (1, "add_device: adding backend %s\n", name);
|
||||
|
||||
he = gethostbyname (name);
|
||||
if (!he)
|
||||
{
|
||||
DBG (1, "can't get address of host %s\n", name);
|
||||
DBG (1, "add_device: can't get address of host %s\n", name);
|
||||
return SANE_STATUS_IO_ERROR;
|
||||
}
|
||||
|
||||
if (he->h_addrtype != AF_INET)
|
||||
{
|
||||
DBG (1, "don't know how to deal with addr family %d\n", he->h_addrtype);
|
||||
DBG (1, "add_device: don't know how to deal with addr family %d\n", he->h_addrtype);
|
||||
return SANE_STATUS_INVAL;
|
||||
}
|
||||
|
||||
|
|
@ -328,7 +330,10 @@ SANE_Status sane_init (SANE_Int * version_code, SANE_Auth_Callback authorize)
|
|||
auth_callback = authorize;
|
||||
|
||||
if (version_code)
|
||||
*version_code = SANE_VERSION_CODE (V_MAJOR, V_MINOR, 0);
|
||||
*version_code = SANE_VERSION_CODE (V_MAJOR, V_MINOR, BUILD);
|
||||
|
||||
DBG(1, "sane_init: SANE net backend version %d.%d.%d from %s\n", V_MAJOR,
|
||||
V_MINOR, BUILD, PACKAGE_VERSION);
|
||||
|
||||
serv = getservbyname ("sane", "tcp");
|
||||
if (serv)
|
||||
|
|
@ -337,7 +342,7 @@ SANE_Status sane_init (SANE_Int * version_code, SANE_Auth_Callback authorize)
|
|||
{
|
||||
saned_port = htons (6566);
|
||||
DBG (1,
|
||||
"init: could not find `sane' service (%s); using default port %d\n",
|
||||
"sane_init: could not find `sane' service (%s); using default port %d\n",
|
||||
strerror (errno), htons (saned_port));
|
||||
}
|
||||
|
||||
|
|
@ -380,7 +385,7 @@ sane_exit (void)
|
|||
Net_Scanner *handle, *next_handle;
|
||||
Net_Device *dev, *next_device;
|
||||
|
||||
DBG (1, "exiting\n");
|
||||
DBG (1, "sane_exit: exiting\n");
|
||||
|
||||
/* first, close all handles: */
|
||||
for (handle = first_handle; handle; handle = next_handle)
|
||||
|
|
@ -395,7 +400,7 @@ sane_exit (void)
|
|||
{
|
||||
next_device = dev->next;
|
||||
|
||||
DBG (2, "closing dev %p, ctl=%d\n", dev, dev->ctl);
|
||||
DBG (2, "sane_exit: closing dev %p, ctl=%d\n", dev, dev->ctl);
|
||||
|
||||
if (dev->ctl >= 0)
|
||||
{
|
||||
|
|
@ -458,7 +463,7 @@ sane_get_devices (const SANE_Device *** device_list, SANE_Bool local_only)
|
|||
status = connect_dev (dev);
|
||||
if (status != SANE_STATUS_GOOD)
|
||||
{
|
||||
DBG (1, "get_devices: ignoring failure to connect to %s\n",
|
||||
DBG (1, "sane_get_devices: ignoring failure to connect to %s\n",
|
||||
dev->name);
|
||||
continue;
|
||||
}
|
||||
|
|
@ -469,7 +474,7 @@ sane_get_devices (const SANE_Device *** device_list, SANE_Bool local_only)
|
|||
(WireCodecFunc) sanei_w_get_devices_reply, &reply);
|
||||
if (reply.status != SANE_STATUS_GOOD)
|
||||
{
|
||||
DBG (1, "get_devices: ignoring rpc-returned status %s\n",
|
||||
DBG (1, "sane_get_devices: ignoring rpc-returned status %s\n",
|
||||
sane_strstatus (reply.status));
|
||||
sanei_w_free (&dev->wire,
|
||||
(WireCodecFunc) sanei_w_get_devices_reply, &reply);
|
||||
|
|
@ -531,7 +536,7 @@ SANE_Status sane_open (SANE_String_Const full_name, SANE_Handle * meta_handle)
|
|||
Net_Scanner *s;
|
||||
int need_auth;
|
||||
|
||||
DBG (3, "open(\"%s\")\n", full_name);
|
||||
DBG (3, "sane_open(\"%s\")\n", full_name);
|
||||
|
||||
dev_name = strchr (full_name, ':');
|
||||
if (dev_name)
|
||||
|
|
@ -589,7 +594,7 @@ SANE_Status sane_open (SANE_String_Const full_name, SANE_Handle * meta_handle)
|
|||
{
|
||||
if (dev->wire.status != 0)
|
||||
{
|
||||
DBG (1, "open rpc call failed (%s)\n", strerror (dev->wire.status));
|
||||
DBG (1, "sane_open: open rpc call failed (%s)\n", strerror (dev->wire.status));
|
||||
return SANE_STATUS_IO_ERROR;
|
||||
}
|
||||
|
||||
|
|
@ -618,7 +623,7 @@ SANE_Status sane_open (SANE_String_Const full_name, SANE_Handle * meta_handle)
|
|||
|
||||
if (status != SANE_STATUS_GOOD)
|
||||
{
|
||||
DBG (1, "remote open failed\n");
|
||||
DBG (1, "sane_open: remote open failed\n");
|
||||
return reply.status;
|
||||
}
|
||||
}
|
||||
|
|
@ -654,7 +659,7 @@ sane_close (SANE_Handle handle)
|
|||
}
|
||||
if (!s)
|
||||
{
|
||||
DBG (1, "close: invalid handle %p\n", handle);
|
||||
DBG (1, "sane_close: invalid handle %p\n", handle);
|
||||
return; /* oops, not a handle we know about */
|
||||
}
|
||||
if (prev)
|
||||
|
|
@ -764,7 +769,7 @@ sane_control_option (SANE_Handle handle, SANE_Int option,
|
|||
if ((SANE_Word) value_size == reply.value_size)
|
||||
memcpy (value, reply.value, reply.value_size);
|
||||
else
|
||||
DBG (1, "control_option: size changed from %d to %d\n",
|
||||
DBG (1, "sane_control_option: size changed from %d to %d\n",
|
||||
s->opt.desc[option]->size, reply.value_size);
|
||||
}
|
||||
|
||||
|
|
@ -819,14 +824,14 @@ SANE_Status sane_start (SANE_Handle handle)
|
|||
len = sizeof (sin);
|
||||
if (getpeername (s->hw->ctl, (struct sockaddr *) &sin, &len) < 0)
|
||||
{
|
||||
DBG (1, "start: getpeername() failed (%s)\n", strerror (errno));
|
||||
DBG (1, "sane_start: getpeername() failed (%s)\n", strerror (errno));
|
||||
return SANE_STATUS_IO_ERROR;
|
||||
}
|
||||
|
||||
fd = socket (s->hw->addr.sa_family, SOCK_STREAM, 0);
|
||||
if (fd < 0)
|
||||
{
|
||||
DBG (1, "start: socket() failed (%s)\n", strerror (errno));
|
||||
DBG (1, "sane_start: socket() failed (%s)\n", strerror (errno));
|
||||
return SANE_STATUS_IO_ERROR;
|
||||
}
|
||||
|
||||
|
|
@ -869,7 +874,7 @@ SANE_Status sane_start (SANE_Handle handle)
|
|||
|
||||
if (connect (fd, (struct sockaddr *) &sin, len) < 0)
|
||||
{
|
||||
DBG (1, "start: connect() failed (%s)\n", strerror (errno));
|
||||
DBG (1, "sane_start: connect() failed (%s)\n", strerror (errno));
|
||||
close (fd);
|
||||
return SANE_STATUS_IO_ERROR;
|
||||
}
|
||||
|
|
@ -920,7 +925,7 @@ sane_read (SANE_Handle handle, SANE_Byte * data, SANE_Int max_length,
|
|||
| ((u_long) s->reclen_buf[1] << 16)
|
||||
| ((u_long) s->reclen_buf[2] << 8)
|
||||
| ((u_long) s->reclen_buf[3] << 0));
|
||||
DBG (3, "read: next record length=%ld bytes\n",
|
||||
DBG (3, "sane_read: next record length=%ld bytes\n",
|
||||
(long) s->bytes_remaining);
|
||||
if (s->bytes_remaining == (size_t) - 1)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
:backend "net" ; name of backend
|
||||
:version "0.73"
|
||||
:version "1.0.5"
|
||||
:status :beta
|
||||
:manpage "sane-net"
|
||||
|
||||
|
|
|
|||
|
|
@ -335,8 +335,7 @@ sane_control_option (SANE_Handle handle, SANE_Int option,
|
|||
if ((strlen (value) + 1) > sizeof (filename))
|
||||
return SANE_STATUS_NO_MEM;
|
||||
strcpy (filename, value);
|
||||
if (access (filename, R_OK) == 0)
|
||||
myinfo |= SANE_INFO_RELOAD_PARAMS;
|
||||
myinfo |= SANE_INFO_RELOAD_PARAMS;
|
||||
break;
|
||||
case 4:
|
||||
bright = *(SANE_Word *) value;
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
2000-12-23
|
||||
2001-04-13
|
||||
|
||||
Here are a few rules that should help writing a SANE-conformant
|
||||
backend:
|
||||
|
|
@ -117,5 +117,13 @@ backend:
|
|||
look at "sane-desc.el" in the tools/ directory.
|
||||
|
||||
* When your backend is included in the SANE distribution, add an entry
|
||||
to README and sane-backends.lsm. The README entry should point to your
|
||||
documentation (man-page, website, readme).
|
||||
to README, AUTHORS and sane-backends.lsm. The README entry should point to
|
||||
your documentation (man-page, website, readme).
|
||||
|
||||
* Don't use printf, fprintf or perror to output debug or error messages.
|
||||
Use the DBG macro instead. If your backend can't detect a scanner for
|
||||
whatever reason it shouldn't output anything as long as
|
||||
SANE_DEBUG_BACKENDNAME isn't set.
|
||||
|
||||
* Don't use exit() in your backend. You will exit the whole program, not only your
|
||||
backend.
|
||||
|
|
|
|||
|
|
@ -0,0 +1,31 @@
|
|||
2001-04-13
|
||||
|
||||
This text summarizes some points to pay attention to when a new realease
|
||||
of sane-backends should be made.
|
||||
|
||||
Before the release:
|
||||
|
||||
* configure.in: increase version number
|
||||
* configure.in: set --disable-warnings as default
|
||||
* configure: recreate
|
||||
* net.c net.desc dll.c dll.desc: update version numbers
|
||||
* NEWS: update and enter date of release
|
||||
* sane-backends.lsm: update
|
||||
* ChangeLog: set release marker
|
||||
* final compilation test
|
||||
* make distclean
|
||||
|
||||
Making the release:
|
||||
|
||||
* remove all CVS files from directories (CVS, .cvsignore etc.)
|
||||
* make tar.gz and sane-backends-x.y.z.lsm
|
||||
* upload both to mostang.com
|
||||
* write announcements on mostang.com and sane-devel, maybe others
|
||||
(e.g. freshmeat)
|
||||
* upload to mirrors that don't get the files automatically (sunsite
|
||||
and tsx11)
|
||||
|
||||
After the release:
|
||||
|
||||
* configure.in: set --enable-warnings as default
|
||||
* configure: regenerate
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
.TH scanimage 1 "24 November 2000"
|
||||
.TH scanimage 1 "13 April 2001"
|
||||
.IX scanimage
|
||||
.SH NAME
|
||||
scanimage - scan an image
|
||||
|
|
@ -115,8 +115,11 @@ or
|
|||
.B --version
|
||||
option requests that
|
||||
.B scanimage
|
||||
print the program and package name, as well as the version number of
|
||||
the SANE distribution that it came with.
|
||||
prints the program and package name, the version number of
|
||||
the SANE distribution that it came with and the version of the backend
|
||||
that it loads. Usually that's the dll backend. If more information about
|
||||
the version numbers of the backends are necessary, the DEBUG variable for
|
||||
the dll backend can be used. Example: SANE_DEBUG_DLL=3 scanimage -L.
|
||||
|
||||
As you might imagine, much of the power of
|
||||
.B scanimage
|
||||
|
|
|
|||
|
|
@ -1348,6 +1348,7 @@ main (int argc, char **argv)
|
|||
int batch = 0;
|
||||
SANE_Status status;
|
||||
char *full_optstring;
|
||||
SANE_Int version_code;
|
||||
|
||||
atexit (sane_exit);
|
||||
|
||||
|
|
@ -1359,7 +1360,7 @@ main (int argc, char **argv)
|
|||
|
||||
defdevname = getenv ("SANE_DEFAULT_DEVICE");
|
||||
|
||||
sane_init (0, auth_callback);
|
||||
sane_init (&version_code, auth_callback);
|
||||
|
||||
/* make a first pass through the options with error printing and argument
|
||||
permutation disabled: */
|
||||
|
|
@ -1429,7 +1430,10 @@ main (int argc, char **argv)
|
|||
}
|
||||
|
||||
case 'V':
|
||||
printf ("scanimage (%s) %s\n", PACKAGE, VERSION);
|
||||
printf ("scanimage (%s) %s; backend version %d.%d.%d\n", PACKAGE,
|
||||
VERSION, SANE_VERSION_MAJOR(version_code),
|
||||
SANE_VERSION_MINOR(version_code),
|
||||
SANE_VERSION_BUILD(version_code));
|
||||
exit (0);
|
||||
|
||||
default:
|
||||
|
|
|
|||
Ładowanie…
Reference in New Issue