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.origSun 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
{