[sane-devel] Re: SANE, Darwin, Umax Vista-S6E problems

Randolph Fritz randolph@panix.com
Fri, 26 Dec 2003 11:19:51 -0800


--sdtB3X0nJg68CQEu
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline

On Wed, Dec 24, 2003 at 08:38:39PM +0100, Henning Meier-Geinitz wrote:
> Hi,
> 
> On Wed, Dec 24, 2003 at 11:36:47AM -0800, Randolph Fritz wrote:
> > No answer on this one.
> 
> On which one? 
> 
> > So, then.  Let's try narrowing this down.  Does anyone have a Umax
> > Vista-S6E working with SANE on any version of Mac OS 10.2?
> 
> That's unlikely. The UMAX backend still uses fork ().
> 

The code is already there for OS/2--I removed the conditional.  But it
still fails in the same way--stops a bit of the way into a preview
scan with a timeout.

Changes and log attached.  I wonder if this version would work on
Linux.

Randolph

--sdtB3X0nJg68CQEu
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment; filename=umax_fixes

--- umax.c~	Fri Sep 12 09:10:33 2003
+++ umax.c	Wed Dec 24 23:18:13 2003
@@ -133,9 +133,7 @@
 #include "sane/sanei_backend.h"
 #include "sane/sanei_config.h"
 
-#ifdef HAVE_OS2_H
 # include "../include/sane/sanei_thread.h"
-#endif
 
 #ifdef UMAX_ENABLE_USB
 # include "sane/sanei_usb.h"
@@ -7950,31 +7948,7 @@
   scanner->pipe_read_fd  = fds[0]; 
   scanner->pipe_write_fd = fds[1];
 
-#ifndef HAVE_OS2_H
-  scanner->reader_pid = fork();					     /* create reader routine as new process */
-
-  if (scanner->reader_pid == 0)
-  {									/* reader_pid = 0 ===> child process */
-    sigset_t ignore_set;
-    struct SIGACTION act;
-
-    close(fds[0]); /* forked child process: close read end of pipe, reader_process only needs the write end */
-
-    sigfillset(&ignore_set);
-    sigdelset(&ignore_set, SIGTERM);
-    sigprocmask(SIG_SETMASK, &ignore_set, 0);
-
-    memset(&act, 0, sizeof (act));
-    sigaction (SIGTERM, &act, 0);
-
-    _exit(reader_process(scanner));   /* don't use exit() since that would run the atexit() handlers */
-  }
-
-  close(fds[1]); /* when we use fork then we have to close the write end of the pipe here */
-#else /*  OS2 */
-  /* create reader routine as thread */
   scanner->reader_pid = sanei_thread_begin(reader_process, (void *) scanner);
-#endif
 
  return SANE_STATUS_GOOD;
 }

--sdtB3X0nJg68CQEu
Content-Type: application/x-gunzip
Content-Disposition: attachment; filename="debugging_output_2.gz"
Content-Transfer-Encoding: base64

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
XWiM54mNa2FbzWpbX8wvk0iz9ZjLi6p1oWLqq3rU9MzFXevdWg2h/lnVU45prcVszM7Zx8jO
2WTnyM6RnZuSnTvR7NxyourfZOfIzpGdIztHdo7sHNm5fXWQnSM7R3YuV9isd8jOmRYkO7en
8NaRJzv31LNz9WNk5+pk58jOkZ2bkp070ezcci/Vv8nOkZ0jO0d2juwc2Tmyc/vqIDtHdo7s
XK6wWe+QnTMtSHZuT+GtI0927qln5xrHyM41yM6RnSM7NyU7d6LZueW2oH+TnSM7R3aO7BzZ
ObJzZOf21UF2juwc2blcYbPeITtnWpDs3J7CW0ee7NxTz841j5Gda5KdIztHdm5Kdu5Es3PL
xI7+TXaO7BzZObJzZOfIzpGd21cH2Tmyc2TncoXNeofsnGlBsnN7Cm8debJzTz071zpGdq5F
do7sHNm5Kdm5E83OLbNB+jfZObJzZOfIzpGdIztHdm5fHWTnyM6RncsVNusdsnOmBcnO7Sm8
deTJzj317NzFMbJzF2TnyM6RnZuSnTvR7NzFogr9m+wc2Tmyc2TnyM6RnSM7t68OsnNk58jO
5Qqb9Q7ZOdOCZOf2FN468mTnnlB2LruAVrgduMPOPHs11jmG9Io/vYiKzlLF/8P1g5+lOm/+
9/NXr88XqTf9lM68OaHiUnppml5GXq3Cf1GL3rtKS31Go+8GA/Xo4c1m5T67Yfu+Lduf0fTN
899+fvv+Hk3PC3520/X7Nl2/X9Mpf7MaGmZNpyUKTTcOb/rnV7+If9w0frZu9jeqY+ftZUUO
b+5X9w+1Pz7/V8WyavsbzKLnTWaFPqNJ+z5N2vdp8u//+1q81KD+TV2WVX5+39zfri4yb7VQ
8vDGX/928+5X8ZsMB9k7DGrf2998Vmh+AIWy9ziAm5fv3v8uvv9JXWioqwlH77w33xscQ1Zu
fhCF0ocfxO+h+5Mci9+COxneqNP/27f7D2BeZtELq6LF5pOou7Vt9Zw6h1utWkunhex6bZkG
yFKYuXd+Kun6vd7+3s8zVemz+b8+8y2jfFX3f+Mo332l5PPVoiXfGRebE24k1F6lM43u8mrz
9fv3795fHXzoYuC43uqadWuX2ju7VI3R1l7dWnJxaHqA80e2qqw0SdTf9UTJOkf/1r36f6Uy
f52/oivx1k87SDjhME0lGfbU9sMp9dXA9d1olL6dl2VwskWUhFI95RWQ0NH59MWE1m/heZ3A
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

--sdtB3X0nJg68CQEu--