Annotation of src/lib/libc/gen/ftok.c, Revision 1.7
1.7 ! lukem 1: /* $NetBSD: ftok.c,v 1.6 1998/11/12 16:15:17 christos Exp $ */
1.3 cgd 2:
1.1 jtc 3: /*
4: * Copyright (c) 1994 SigmaSoft, Th. Lockert <tholo@sigmasoft.com>
5: * All rights reserved.
6: *
7: * Redistribution and use in source and binary forms, with or without
8: * modification, are permitted provided that the following conditions
9: * are met:
10: * 1. Redistributions of source code must retain the above copyright
11: * notice, this list of conditions and the following disclaimer.
12: * 2. Redistributions in binary form must reproduce the above copyright
13: * notice, this list of conditions and the following disclaimer in the
14: * documentation and/or other materials provided with the distribution.
15: * 3. The name of the author may not be used to endorse or promote products
16: * derived from this software without specific prior written permission.
17: *
18: * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
19: * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
20: * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
21: * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
22: * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
23: * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
24: * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
25: * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
26: * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
27: * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28: */
1.2 jtc 29:
1.4 christos 30: #include <sys/cdefs.h>
1.2 jtc 31: #if defined(LIBC_SCCS) && !defined(lint)
1.7 ! lukem 32: __RCSID("$NetBSD: ftok.c,v 1.6 1998/11/12 16:15:17 christos Exp $");
1.2 jtc 33: #endif /* LIBC_SCCS and not lint */
1.1 jtc 34:
1.5 jtc 35: #include "namespace.h"
1.1 jtc 36: #include <sys/types.h>
37: #include <sys/stat.h>
38: #include <sys/ipc.h>
1.5 jtc 39:
1.7 ! lukem 40: #include <assert.h>
! 41: #include <errno.h>
! 42:
1.5 jtc 43: #ifdef __weak_alias
44: __weak_alias(ftok,_ftok);
45: #endif
1.1 jtc 46:
47: key_t
48: ftok(path, id)
49: const char *path;
1.6 christos 50: int id;
1.1 jtc 51: {
52: struct stat st;
1.7 ! lukem 53:
! 54: _DIAGASSERT(path != NULL);
! 55: #ifdef _DIAGNOSTIC
! 56: if (path == NULL || *path == '\0') {
! 57: errno = ENOENT;
! 58: return (key_t)-1;
! 59: }
! 60: #endif
1.1 jtc 61:
62: if (stat(path, &st) < 0)
63: return (key_t)-1;
64:
1.3 cgd 65: return (key_t)
66: (id << 24 | (st.st_dev & 0xff) << 16 | (st.st_ino & 0xffff));
1.1 jtc 67: }
CVSweb <webmaster@jp.NetBSD.org>