diff options
Diffstat (limited to 'libshouldbeinlibc/=line.h')
-rw-r--r-- | libshouldbeinlibc/=line.h | 128 |
1 files changed, 0 insertions, 128 deletions
diff --git a/libshouldbeinlibc/=line.h b/libshouldbeinlibc/=line.h deleted file mode 100644 index 54ab15de..00000000 --- a/libshouldbeinlibc/=line.h +++ /dev/null @@ -1,128 +0,0 @@ -/* Simple output formatting functions - - Copyright (C) 1995, 1996 Free Software Foundation, Inc. - - Written by Miles Bader <miles@gnu.ai.mit.edu> - - This file is part of the GNU Hurd. - - The GNU Hurd is free software; you can redistribute it and/or - modify it under the terms of the GNU General Public License as - published by the Free Software Foundation; either version 2, or (at - your option) any later version. - - The GNU Hurd is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ - -#ifndef __LINE_H__ -#define __LINE_H__ - -#include <stdio.h> - -struct line -{ - char *buf; - char *point, *max; - FILE *stream; -}; - -extern void -_line_cleanup_printf (struct line *line, unsigned added); - -/* Printf FMT & ARGS to LINE. */ -/* XXX This implementation is kind of bogus because it pretends to deal with - newlines in the output, but it just uses LINE's buffer for the output and - anything past the end of the buffer will get chopped. A terminating - newline will work ok though. */ -#define line_printf(line, fmt, args...) \ - ({ struct line *_line = (line); \ - _line_cleanup_printf (_line, \ - snprintf (_line->point, _line->max - _line->point, (fmt) , ##args)); \ - }) - -/* Returns the amount of free space in line after adding AMOUNT characters to - it (which will be negative if this would overflow). */ -extern inline int -line_left (struct line *line, unsigned amount) -{ - return line->max - line->point - amount; -} - -/* Return the column position of LINE's output point, which starts at 0. */ -extern inline unsigned -line_column (struct line *line) -{ - return line->point - line->buf; -} - -/* Add enough spaces to LINE to move the point to column TARGET. */ - - -extern inline void -line_indent_to (struct line *line, int target) -{ - while (line->point < line->buf + target && line->point < line->max) - *line->point++ = ' '; -} - -/* Emit the current contents of LINE and a newline to its stream, and fill - LINE with LMARGIN spaces. */ -extern inline void -line_newline (struct line *line, int lmargin) -{ - *line->point++ = '\n'; - *line->point = '\0'; - fputs (line->buf, line->stream); - line->point = line->buf; - if (lmargin) - line_indent_to (line, lmargin); -} - -/* If LINE isn't before or at column position LMARGIN, then add a newline - and indent to that position. */ -extern inline void -line_freshline (struct line *line, int lmargin) -{ - if (line_column (line) > lmargin) - line_newline (line, lmargin); -} - -/* Add a character to LINE, unless it's full. */ -extern inline int -line_putc (struct line *line, int ch) -{ - if (ch == '\n') - line_newline (line, 0); - else if (line->point < line->max) - *line->point++ = ch; - return ch; -} - -/* Adds the text in STR to LINE, wrapping words as necessary to fit. LMARGIN - is the left margin used when wrapping. */ -void line_fill (struct line *line, const char *str, unsigned lmargin); - -/* Add STR, of length LEN, to LINE. */ -void line_write (struct line *line, const char *str, unsigned len); - -/* Add STR to LINE. */ -extern inline void line_puts (struct line *line, const char *str) -{ - line_write (line, str, strlen (str)); -} - -/* Return a new line structure, which will output to STREAM. WIDTH is the - maximum number of characters per line. If enough memory can't be - allocated, 0 is returned. */ -struct line *make_line (FILE *stream, unsigned width); - -/* Free LINE and any resources it uses. */ -void line_free (struct line *line); - -#endif /* __LINE_H__ */ |