From a25e7e9f7285ee88406e0c11901943999f96a041 Mon Sep 17 00:00:00 2001 From: Roland McGrath Date: Tue, 20 Dec 2005 21:57:53 +0000 Subject: [PATCH] [BZ #2061] 2005-12-15 Thomas Schwinge [BZ #2061] * sysdeps/mach/hurd/xmknod.c (__xmknod): Handle S_IFREG. --- ChangeLog | 5 +++++ sysdeps/mach/hurd/xmknod.c | 12 +++++++++--- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index c9c8339e4d..45338a1987 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2005-12-15 Thomas Schwinge + + [BZ #2061] + * sysdeps/mach/hurd/xmknod.c (__xmknod): Handle S_IFREG. + 2005-12-20 Roland McGrath * sysdeps/unix/sysv/linux/ifreq.h: File removed. diff --git a/sysdeps/mach/hurd/xmknod.c b/sysdeps/mach/hurd/xmknod.c index 2989215d9c..aaa6771cd8 100644 --- a/sysdeps/mach/hurd/xmknod.c +++ b/sysdeps/mach/hurd/xmknod.c @@ -1,4 +1,5 @@ -/* Copyright (C) 1991,92,93,94,95,96,99,2002 Free Software Foundation, Inc. +/* Copyright (C) 1991,1992,1993,1994,1995,1996,1999,2002,2005 + Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -57,13 +58,18 @@ __xmknod (int vers, const char *file_name, mode_t mode, dev_t *dev) translator = _HURD_FIFO; len = sizeof (_HURD_FIFO); } + else if (S_ISREG (mode)) + { + translator = NULL; + len = 0; + } else { errno = EINVAL; return -1; } - if (! S_ISFIFO (mode)) + if (translator != NULL && ! S_ISFIFO (mode)) { /* We set the translator to "ifmt\0major\0minor\0", where IFMT depends on the S_IFMT bits of our MODE argument, and MAJOR and @@ -89,7 +95,7 @@ __xmknod (int vers, const char *file_name, mode_t mode, dev_t *dev) /* Create a new, unlinked node in the target directory. */ err = __dir_mkfile (dir, O_WRITE, (mode & ~S_IFMT) & ~_hurd_umask, &node); - if (! err) + if (! err && translator != NULL) /* Set the node's translator to make it a device. */ err = __file_set_translator (node, FS_TRANS_EXCL | FS_TRANS_SET,