1228177Skib/*- 2228177Skib * Copyright (c) 2011 Giovanni Trematerra <giovanni.trematerra@gmail.com> 3228177Skib * All rights reserved. 4228177Skib * 5228177Skib * Redistribution and use in source and binary forms, with or without 6228177Skib * modification, are permitted provided that the following conditions 7228177Skib * are met: 8228177Skib * 1. Redistributions of source code must retain the above copyright 9228177Skib * notice, this list of conditions and the following disclaimer. 10228177Skib * 2. Redistributions in binary form must reproduce the above copyright 11228177Skib * notice, this list of conditions and the following disclaimer in the 12228177Skib * documentation and/or other materials provided with the distribution. 13228177Skib * 14228177Skib * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 15228177Skib * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 16228177Skib * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 17228177Skib * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 18228177Skib * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 19228177Skib * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 20228177Skib * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 21228177Skib * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 22228177Skib * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 23228177Skib * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 24228177Skib * SUCH DAMAGE. 25228177Skib */ 26228177Skib 27228177Skib/* 28228177Skib * $FreeBSD: releng/11.0/tests/sys/kern/pipe/pipe_ino_test.c 290914 2015-11-16 05:38:40Z ngie $ 29228177Skib * Test conformance to stat(2) SUSv4 description: 30228177Skib * "For all other file types defined in this volume of POSIX.1-2008, the 31228177Skib * structure members st_mode, st_ino, st_dev, st_uid, st_gid, st_atim, 32228177Skib * st_ctim, and st_mtim shall have meaningful values ...". 33228177Skib * Check that st_dev and st_ino are meaningful. 34228177Skib */ 35228177Skib 36228177Skib#include <sys/types.h> 37228177Skib#include <sys/stat.h> 38228177Skib#include <err.h> 39228177Skib#include <stdio.h> 40228177Skib#include <unistd.h> 41228177Skib 42228177Skibint 43290914Sngiemain(void) 44228177Skib{ 45228177Skib int pipefd[2]; 46228177Skib struct stat st1, st2; 47228177Skib 48228177Skib if (pipe(pipefd) == -1) 49228177Skib err(1, "FAIL: pipe"); 50228177Skib 51228177Skib if (fstat(pipefd[0], &st1) == -1) 52228177Skib err(1, "FAIL: fstat st1"); 53228177Skib if (fstat(pipefd[1], &st2) == -1) 54228177Skib err(1, "FAIL: fstat st2"); 55290914Sngie if (st1.st_dev != st2.st_dev || st1.st_dev == 0 || st2.st_dev == 0) 56290914Sngie errx(1, "FAIL: wrong dev number %d %d", st1.st_dev, st2.st_dev); 57228177Skib if (st1.st_ino == st2.st_ino) 58228177Skib errx(1, "FAIL: inode numbers are equal: %d", st1.st_ino); 59290914Sngie 60228177Skib close(pipefd[0]); 61228177Skib close(pipefd[1]); 62228177Skib printf("PASS\n"); 63228177Skib 64228177Skib return (0); 65228177Skib} 66