diff options
author | Ingo Schwarze <schwarze@cvs.openbsd.org> | 2016-01-10 21:08:02 +0000 |
---|---|---|
committer | Ingo Schwarze <schwarze@cvs.openbsd.org> | 2016-01-10 21:08:02 +0000 |
commit | 30e582aaafd99e0b86fa3cc439938a12a5ff89f0 (patch) | |
tree | f2fffafa33682a8af6d32b7406ac1fd7acc8c5be /bin | |
parent | 6f64250a49f0393166ad6a13554b045c6fd22bae (diff) |
Partial revert: put back the file fmt.c.
It's no longer used by ps(1), but w(1) reaches around to it.
Cluestick applied by deraadt@.
Diffstat (limited to 'bin')
-rw-r--r-- | bin/ps/fmt.c | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/bin/ps/fmt.c b/bin/ps/fmt.c new file mode 100644 index 00000000000..919109ad1a9 --- /dev/null +++ b/bin/ps/fmt.c @@ -0,0 +1,82 @@ +/* $OpenBSD: fmt.c,v 1.15 2016/01/10 21:08:01 schwarze Exp $ */ + +/*- + * Copyright (c) 1990, 1993, 1994 + * The Regents of the University of California. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include <sys/types.h> +#include <sys/resource.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <unistd.h> +#include <vis.h> +#include "ps.h" + +void +fmt_puts(const char *s, int *leftp) +{ + static char *v = NULL; + static size_t maxlen = 0; + size_t len; + + if (*leftp == 0) + return; + len = strlen(s) * 4 + 1; + if (len > maxlen) { + free(v); + maxlen = 0; + if (len < getpagesize()) + len = getpagesize(); + v = malloc(len); + if (v == NULL) + return; + maxlen = len; + } + strvis(v, s, VIS_TAB | VIS_NL | VIS_CSTYLE); + if (*leftp != -1) { + len = strlen(v); + if (len > *leftp) { + v[*leftp] = '\0'; + *leftp = 0; + } else + *leftp -= len; + } + printf("%s", v); +} + +void +fmt_putc(int c, int *leftp) +{ + + if (*leftp == 0) + return; + if (*leftp != -1) + *leftp -= 1; + putchar(c); +} |