]> git.ipfire.org Git - thirdparty/bash.git/blame - builtins/psize.c
Bash-4.3 patch 46
[thirdparty/bash.git] / builtins / psize.c
CommitLineData
726f6388
JA
1/* psize.c - Find pipe size. */
2
3/* Copyright (C) 1987, 1991 Free Software Foundation, Inc.
4
5 This file is part of GNU Bash, the Bourne Again SHell.
6
3185942a
JA
7 Bash is free software: you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation, either version 3 of the License, or
10 (at your option) any later version.
726f6388 11
3185942a
JA
12 Bash is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
726f6388
JA
16
17 You should have received a copy of the GNU General Public License
3185942a
JA
18 along with Bash. If not, see <http://www.gnu.org/licenses/>.
19*/
726f6388
JA
20
21/* Write output in 128-byte chunks until we get a sigpipe or write gets an
22 EPIPE. Then report how many bytes we wrote. We assume that this is the
23 pipe size. */
ccc6cda3
JA
24#include <config.h>
25
26#if defined (HAVE_UNISTD_H)
cce855bc
JA
27# ifdef _MINIX
28# include <sys/types.h>
29# endif
ccc6cda3
JA
30# include <unistd.h>
31#endif
726f6388
JA
32
33#include <stdio.h>
cce855bc 34#ifndef _MINIX
d166f048 35#include "../bashtypes.h"
cce855bc 36#endif
726f6388
JA
37#include <signal.h>
38#include <errno.h>
39
40#include "../command.h"
41#include "../general.h"
ccc6cda3 42#include "../sig.h"
95732b49
JA
43
44#ifndef errno
726f6388 45extern int errno;
95732b49 46#endif
726f6388
JA
47
48int nw;
49
50sighandler
51sigpipe (sig)
52 int sig;
53{
54 fprintf (stderr, "%d\n", nw);
55 exit (0);
56}
57
d166f048 58int
726f6388
JA
59main (argc, argv)
60 int argc;
61 char **argv;
62{
63 char buf[128];
64 register int i;
65
66 for (i = 0; i < 128; i++)
67 buf[i] = ' ';
68
69 signal (SIGPIPE, sigpipe);
70
71 nw = 0;
72 for (;;)
73 {
74 int n;
75 n = write (1, buf, 128);
76 nw += n;
77 }
d166f048 78 return (0);
726f6388 79}