Re: [cups] Still conceptually possible to use SCSI backend in latest CUPS?

Protea Wines Japan <[email protected]>
Newsgroups gmane.comp.printing.cups.general
Message-ID <CAN0dEZwhdMz_yGAuJ_Gc-eor3br=TUrT2RtbFD+PGTQP7Sk=7w@mail.gmail.com>
On Tue, Feb 23, 2021 at 5:11 AM Protea Wines Japan <[email protected]>
wrote:

> On Mon, Feb 22, 2021 at 4:54 PM Protea Wines Japan <[email protected]>
> wrote:
>
>> On Mon, Feb 22, 2021 at 3:59 PM Jörg Thümmler
>> <[email protected]> wrote:
>>
>>
> I am happy to report I could compile scsi.c after some modifications, see
> below.
> Thank you for all the help on this, much appreciated.
>


Just to add, I had tried this in April 2016, here is a link to my previous
attempt, which I had forgotten about:
https://lists.cups.org/pipermail/cups/2016-April/027672.html
Still got to test the actual operation, but I wonder if cups-filters would
be interested in taking on the SCSI backend into their fold?

Best regards,
Gernot Hassenpflug


> /../
>> > Am 20.02.21 um 18:47 schrieb Protea Wines Japan:
>> > > On Fri, Feb 19, 2021 at 4:01 PM Johannes Meixner <[email protected]>
>> wrote:
>> > >>
>> > >> On 2021-02-18 18:20, Protea Wines Japan wrote (excerpt):
>> > >>> Is it conceptually still possible to compile
>> > >>> the old scsi.c backend in CUPS 1.2
>> > >>
>> > >> conceptually a CUPS backend is an arbitrary program
>> > >> that gets data and sends it to a recipient, see
>> > >>
>> > >>
>> https://en.opensuse.org/SDB:Using_Your_Own_Backends_to_Print_with_CUPS
>> > >
>> > > Many thanks Johannes, I could tell from your document that there is
>> nothing
>> > > specifically preventing the SCSI backend from being used, provided it
>> uses
>> > > the right commands to the SCSI high-level driver.
>> /../
>> > i'm in no case familiar with cups code ;-)
>> >
>> > But your "gcc -o scsi-backend scsi.c" may need some -I<dir> option (see
>> > man gcc) as it may not find the config.h in its standard include path.
>>
>
> After another night of getting header files sorted out, but undefined
> reference errors on compile, and then some online searching to kick my
> rusty memory, it looks like that was the case.
> The header files supply merely the declaration, but not the definition.
>
> I could finally do the compilation as follows:
> 1. comment out the config.h line in /usr/include/cups/i18n.h
> 2. include as many header files as needed to cover all the declarations
> (now I have way too many I expect)
> 3. update a couple of functions that have changed since the original
> scsi.c was removed in CUPS 1.4
> 4. link libcups.so in the compilation (definition required is in
> langprintf.c which goes into libcups)
>
> Then the compile command becomes:
> gcc -o scsi scsi.c -lcups
>
> > Or - another "blind shot" - you may have to install the kernel header
>> > files therefor. "i18n.h" sounds like an include a lot of programs will
>> > use so it may be will look for a "central" config.h...
>> >
>> > At least a look into this i18n.h will maybe show, in which context the
>> > "config.h" is searched and that may give you a hint, which "config.h" to
>> > include.
>> >
>> > Another way may be to use the "configure" feature (if cups-devel has
>> > that), which usually does the trick of writing of correct make files for
>> > compiling and then try to find a appropriate gcc line for some analogue
>> > backend compiling.
>>
>
> That is a good idea, fortunately I could find a workable solution without
> executing configure, although I did look at the configure script and took
> some header files from it into the backend just to be sure I am not missing
> some.
>
> Below is the difference between the newly-compiled scsi.c and the original
> scsi.c which I found at
> https://opensource.apple.com/source/cups/cups-97.4/cups/
>
> The scsi-linux.c dependency program was used as is.
>
> ==== START ====
> $ diff -uw scsi.c-original scsi.c
> --- scsi.c-original 2021-02-22 03:47:01.175005309 +0900
> +++ scsi.c 2021-02-23 04:54:11.668911500 +0900
> @@ -54,16 +54,27 @@
>   * Include necessary headers.
>   */
>
> +/* taken from other newer backends */
> +#include <cups/http.h>
>  #include <cups/backend.h>
> +#include <stdarg.h>
> +#include <sys/types.h>
> +#include <sys/stat.h>
> +#include <stdio.h>
> +
> +/* added back from original */
> +#include <signal.h>
>  #include <cups/cups.h>
>  #include <cups/i18n.h>
> -#include <stdio.h>
>  #include <stdlib.h>
>  #include <errno.h>
> -/* #include <cups/string.h> */
> +
> +/* included from CUPS configure script */
>  #include <string.h>
> -#include <cups/i18n.h>
> -#include <signal.h>
> +#include <strings.h>
> +#include <inttypes.h>
> +#include <stdint.h>
> +#include <unistd.h>
>
>  #ifdef WIN32
>  #  include <io.h>
> @@ -109,7 +120,9 @@
>  main(int  argc, /* I - Number of command-line arguments (6 or 7) */
>       char *argv[]) /* I - Command-line arguments */
>  {
> -  char method[255], /* Method in URI */
> +  const char    *device_uri;            /* Device URI */
> +  char          scheme[255],            /* Scheme in URI */
> +   /* method[255], */ /* [OLD] Method in URI */
>   hostname[1024], /* Hostname */
>   username[255], /* Username info (not used) */
>   resource[1024], /* Resource info (device and options) */
> @@ -143,6 +156,7 @@
>    signal(SIGPIPE, SIG_IGN);
>  #endif /* HAVE_SIGSET */
>
> +
>   /*
>    * Check command-line...
>    */
> @@ -189,9 +203,8 @@
>    * Extract the device name and options from the URI...
>    */
>
> -  httpSeparateURI(HTTP_URI_CODING_ALL, cupsBackendDeviceURI(argv),
> -                  method, sizeof(method), username, sizeof(username),
> -  hostname, sizeof(hostname), &port,
> +  httpSeparateURI(HTTP_URI_CODING_ALL, device_uri, scheme, sizeof(scheme),
> +                  username, sizeof(username), hostname, sizeof(hostname),
> &port,
>    resource, sizeof(resource));
>
>   /*
> ==== END ====
>
> Next is to test whether this works or not.
> Copied to: /usr/lib/cups/backend/scsi
> Will try to test with an ALPS MD-2000S attached to my Adaptec AHA-2910
> card.
> --
> Gernot Hassenpflug
>


-- 
Protea Wines Japan
Tel: 070-5550-9076
https://www.proteawines.jp
_______________________________________________
cups mailing list
[email protected]
https://lists.cups.org/mailman/listinfo/cups
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.