UNIXWARE PORT of SANE - HOWTO build and what you need to run You need a sane SCSI driver to run SANE on Unixware 2.x. There is at least one such driver: the sane driver by R=I+S. The Unixware sane driver is a binary loadable module driver for UW2.x. Please send Email to wolfgang@rapp-informatik.de to receive. What you need to build xane on Unixware 2.x - gnu make - rev binary rev programm for make install. without rev the libs are named wrong. You dont't need gcc. All is build with the standard Unixware cc and libs!! You need libs to build xscanimage and xsane, like libgtk libgimp and the image libs for jpeg, tiff and png to build the frontends. It is also good to have gettext with libintl installed. Most of the libs are available on the Skunkware CD's from SCO in pkgadd format. If you build the frontends with this libs gimp plugin is also supported by xscanimage and xsane. Latest xsane version tested was 0.48. With the following configure should run an build shared libs with libtool 1.3.4 LD_RUN_PATH=/usr/local/lib CPPFLAGS="-I/usr/local/include -I/isr/X/include" CFLAGS="-I/usr/local/include -I/usr/X/include -I/usr/ucbinclude -L/usr/local/lib -L/usr/ucblib -l ucb" LIBS="-lsocket -lnsl -lgen -I/opt/include -L/usr/ucblib -lucb" ./configure After running configure you have to edit the generated file libtool Append to the line archive_cmds="\$LD -G -o \$lib \$libobjs \$deplibs \$linkopts so that it looks like this. archive_cmds="\$LD -G -o \$lib \$libobjs \$deplibs \$linkopts -B bind_now -L/usr/local/lib -lintl -L/usr/ucblib -lucb -lm" This is a must to link the libucb.a , libintl.a in when the sane libs are build.It's also necessary for mathematic lib -lm . Not doing this will bring runtime errors like missimg usleep or pow function. ATTENTION:!!! libucb.a of Unixware 2.x has a buggy readdir function so it is recommanded to remove readdir.o from libucb.a with ar -d readdir.o libucb.a Often used and neded functions from libucb.a are strncasecmp or getpagesize. If you use -I/usr/ucbinclude it is also a good idea to move /usr/ucbinlcude/unistd.h to another file, because it will be included first and some sources will not compile. Then you can run make with GNU make. After this say su and then ist good to say LD_RUN_PATH=/usr/local/lib export LD_RUN_PATH after this you can install with make install but remenber to have rev binary or the libs will be named in a wrong way Tested on Unixware 2.0.x with Umax Astra 1220S and HP C5100A with sane-1.0.1. With Microtek backend earlier on sane-0.74. If you use the net backend you do not need the Unixware sanedrv. The driver is a shareware product. The driver is supplied binary in pkgadd(1m) format and is tested from UW2.0x. Please send Email to wolfgang@rapp-informatik.de to get the driver in binary pkgadd package. To install it on a Unixware do: cd /tmp get sanedrv.pkg.tgz gunzip sanedrv.pkg.tgz tar xvf sanedrv.pkg.tar as root: pkgadd -d /tmp/sanedrv Once the driver is installed, there should be a device nodes /dev/sane and /dev/scanner /dev/scanner1 for the second, and so on...) The scanner my be connected to any SCSI controller in the system, also if you have additional devices like disks or cdroms on the same controller. The UW2.x sane driver do not block the controller. The scanner must be switched on to be recognized by UW, if the low level driver p.e. adsl is loaded. To configure an UMAX scanner, configuration file /usr/local/etc/sane.d/umax.conf might contain: /dev/scanner The driver is configured to recognice all scsi scanners with ID SCANNER and all HP Scsi scanners with ID Processor and Inquiry string starting with "HP" string. For details have a look to /etc/conf/pack.d/sane/space.c. If you change this then you must unload the sane driver modadmin -U sane, build the new module by /etc/conf/bin/idbuild -M sane and the install the driver with modadmin -l sane. If you have questions or problems with the Unixware support in SANE, send mail to: wolfgang@rapp-informatik.de If you don't have rev here is the source. ------------ cut here ------------------------------------------------------- /*- * Copyright (c) 1987, 1992, 1993 * The Regents of the University of California. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. All advertising materials mentioning features or use of this software * must display the following acknowledgement: * This product includes software developed by the University of * California, Berkeley and its contributors. * 4. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #ifndef lint static char copyright[] = "@(#) Copyright (c) 1987, 1992, 1993\n\ The Regents of the University of California. All rights reserved.\n"; #endif /* not lint */ #ifndef lint static char sccsid[] = "@(#)rev.c 8.3 (Berkeley) 5/4/95"; #endif /* not lint */ #include #include #include #include #include #include void usage (void); int main(argc, argv) int argc; char *argv[]; { register char *filename, *p, *t; FILE *fp; char line[BUFSIZ]; size_t len; int ch, rval; while ((ch = getopt(argc, argv, "")) != -1) switch(ch) { case '?': default: usage(); } argc -= optind; argv += optind; fp = stdin; filename = "stdin"; rval = 0; do { if (*argv) { if ((fp = fopen(*argv, "r")) == NULL) { perror(*argv); rval = 1; ++argv; continue; } filename = *argv++; } while ((p = fgets(line,BUFSIZ,fp)) != NULL) { len = strlen(line); if (p[len - 1] == '\n') --len; t = p + len - 1; for (t = p + len - 1; t >= p; --t) putchar(*t); putchar('\n'); } if (ferror(fp)) { perror(filename); rval = 1; } (void)fclose(fp); } while(*argv); exit(rval); } void usage() { (void)fprintf(stderr, "usage: rev [file ...]\n"); exit(1); }