> Hi,
> 
> Would you mind if I commit the attached patch for the xsane port ?  
> It makes sense - rather than dropping a core when fopen() fails (and 
> fclose() is called with a NULL arg).  It happens when your home 
> directory isn't writable :-/

I've cc'd -current as I think something more sinister is going on.  
To recap, I'm having trouble running xsane on -current from about two 
days ago.  fopen() is failing...

The attached patch exposes more about what's wrong.  Interestingly 
enough, the file it's trying to create is in /tmp (mode 1777, 
separate filesystem), and according to truss:

lstat("/tmp//preview-level-0-15-b924dc",0xbfbfe894) ERR#2 'No such file or directory'
umask(0x7f)                                      = 7 (0x7)
/tmp//preview-level-0-15-b924dc17767-microtek:_dev_scanner.ppm: could not create for 
preview-level 0: No such file or directory
write(2,0xbfbfe48c,128)                          = 128 (0x80)
getuid()                                         = 15 (0xf)
lstat("/tmp//preview-level-1-15-jNO6zx",0xbfbfe894) ERR#2 'No such file or directory'
umask(0x7f)                                      = 127 (0x7f)
/tmp//preview-level-1-15-jNO6zx09158-microtek:_dev_scanner.ppm: could not create for 
preview-level 1: No such file or directory
write(2,0xbfbfe48c,128)                          = 128 (0x80)
getuid()                                         = 15 (0xf)
lstat("/tmp//preview-level-2-15-CO6k7w",0xbfbfe894) ERR#2 'No such file or directory'
umask(0x7f)                                      = 127 (0x7f)
break(0x8134000)                                 = 0 (0x0)
/tmp//preview-level-2-15-CO6k7w39017-microtek:_dev_scanner.ppm: could not create for 
preview-level 2: No such file or directory
write(2,0xbfbfe48c,128)                          = 128 (0x80)

fopen() is failing after calling lstat() (I assume via _open()) !!!  
As if the "wb" didn't mean O_CREAT ??!?  Very strange.

Anyway, here's the patch if you're interested.  I'll look into things 
further on Wednesday.

Cheers.
-- 
Brian <[EMAIL PROTECTED]>                        <brian@[uk.]FreeBSD.org>
      <http://www.Awfulhak.org>                   <brian@[uk.]OpenBSD.org>
Don't _EVER_ lose your sense of humour !

--- src/xsane-preview.c.orig    Sun Jan 14 15:35:06 2001
+++ src/xsane-preview.c Tue Feb  6 03:03:18 2001
@@ -2802,6 +2802,7 @@
  int i;
  char buf[256];
  char filename[PATH_MAX];
+ FILE *fp;
 
   DBG(DBG_proc, "preview_new\n");
 
@@ -2830,9 +2831,17 @@
     if (preview_make_image_path(p, sizeof(filename), filename, i)>=0)
     {
       umask(0177);                     /* create temporary file with "-rw-------" 
permissions */
-      fclose(fopen(filename, "wb"));   /* make sure file exists, b = binary mode for 
win32 */
-      umask(XSANE_DEFAULT_UMASK);      /* define new file permissions */
-      p->filename[i] = strdup(filename);/* store filename */
+      fp = fopen(filename, "wb");      /* make sure file exists, b = binary mode for 
+win32 */
+      if (fp == NULL) {
+        fprintf(stderr, "%s: could not create for preview-level %d: %s\n", filename, 
+i, strerror(errno));
+        p->filename[i] = NULL;
+      }
+      else
+      {
+        fclose(fp);
+        umask(XSANE_DEFAULT_UMASK);    /* define new file permissions */
+        p->filename[i] = strdup(filename);/* store filename */
+      }
     }
     else
     {

Reply via email to