From owner-freebsd-current Mon Feb 5 19:17:28 2001 Delivered-To: freebsd-current@freebsd.org Received: from Awfulhak.org (awfulhak.demon.co.uk [194.222.196.252]) by hub.freebsd.org (Postfix) with ESMTP id AD42A37B401 for ; Mon, 5 Feb 2001 19:17:08 -0800 (PST) Received: from hak.lan.Awfulhak.org (root@hak.lan.Awfulhak.org [172.16.0.12]) by Awfulhak.org (8.11.2/8.11.2) with ESMTP id f163HP215400; Tue, 6 Feb 2001 03:17:25 GMT (envelope-from brian@lan.Awfulhak.org) Received: from hak.lan.Awfulhak.org (brian@localhost [127.0.0.1]) by hak.lan.Awfulhak.org (8.11.2/8.11.1) with ESMTP id f163J2610146; Tue, 6 Feb 2001 03:19:02 GMT (envelope-from brian@hak.lan.Awfulhak.org) Message-Id: <200102060319.f163J2610146@hak.lan.Awfulhak.org> X-Mailer: exmh version 2.3.1 01/18/2001 with nmh-1.0.4 To: domi@saargate.de Cc: freebsd-current@freebsd.org, Brian Somers Subject: Strange fopen() behaviour (was: xsane patch to maintainer) In-Reply-To: Message from Brian Somers of "Tue, 06 Feb 2001 02:35:12 GMT." <200102060235.f162ZC609373@hak.lan.Awfulhak.org> Mime-Version: 1.0 Content-Type: multipart/mixed ; boundary="==_Exmh_8122223300" Date: Tue, 06 Feb 2001 03:19:01 +0000 From: Brian Somers Sender: owner-freebsd-current@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.ORG This is a multipart MIME message. --==_Exmh_8122223300 Content-Type: text/plain; charset=us-ascii > 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 Don't _EVER_ lose your sense of humour ! --==_Exmh_8122223300 Content-Type: text/plain ; name="patch-ae"; charset=us-ascii Content-Description: patch-ae Content-Disposition: attachment; filename="patch-ae" --- 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 { --==_Exmh_8122223300-- To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-current" in the body of the message