Annotation of src/lib/libcurses/addnstr.c, Revision 1.20
1.20 ! blymn 1: /* $NetBSD: addnstr.c,v 1.19 2021/09/06 07:45:48 rin Exp $ */
1.4 mikel 2:
1.1 cgd 3: /*
1.3 cgd 4: * Copyright (c) 1993, 1994
1.1 cgd 5: * The Regents of the University of California. 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.
1.11 agc 15: * 3. Neither the name of the University nor the names of its contributors
1.1 cgd 16: * may be used to endorse or promote products derived from this software
17: * without specific prior written permission.
18: *
19: * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
20: * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21: * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
22: * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
23: * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
24: * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
25: * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
26: * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
27: * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
28: * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
29: * SUCH DAMAGE.
30: */
31:
1.4 mikel 32: #include <sys/cdefs.h>
1.1 cgd 33: #ifndef lint
1.4 mikel 34: #if 0
1.3 cgd 35: static char sccsid[] = "@(#)addnstr.c 8.2 (Berkeley) 5/4/94";
1.4 mikel 36: #else
1.20 ! blymn 37: __RCSID("$NetBSD: addnstr.c,v 1.19 2021/09/06 07:45:48 rin Exp $");
1.4 mikel 38: #endif
1.5 mrg 39: #endif /* not lint */
1.1 cgd 40:
41: #include <string.h>
1.3 cgd 42:
43: #include "curses.h"
1.6 blymn 44: #include "curses_private.h"
1.1 cgd 45:
1.7 blymn 46: #ifndef _CURSES_USE_MACROS
47:
48: /*
49: * addstr --
50: * Add a string to stdscr starting at (_cury, _curx).
51: */
52: int
1.9 blymn 53: addstr(const char *s)
1.7 blymn 54: {
55: return waddnstr(stdscr, s, -1);
56: }
57:
58: /*
1.9 blymn 59: * waddstr --
60: * Add a string to the given window starting at (_cury, _curx).
1.7 blymn 61: */
62: int
1.9 blymn 63: waddstr(WINDOW *win, const char *s)
1.7 blymn 64: {
1.9 blymn 65: return waddnstr(win, s, -1);
1.8 jdc 66: }
67:
68: /*
1.9 blymn 69: * addnstr --
70: * Add a string (at most n characters) to stdscr starting
71: * at (_cury, _curx). If n is negative, add the entire string.
1.8 jdc 72: */
73: int
1.9 blymn 74: addnstr(const char *str, int n)
1.8 jdc 75: {
1.9 blymn 76: return waddnstr(stdscr, str, n);
1.7 blymn 77: }
78:
79: /*
80: * mvaddstr --
81: * Add a string to stdscr starting at (y, x)
82: */
83: int
84: mvaddstr(int y, int x, const char *str)
85: {
86: return mvwaddnstr(stdscr, y, x, str, -1);
87: }
88:
89: /*
90: * mvwaddstr --
91: * Add a string to the given window starting at (y, x)
92: */
93: int
94: mvwaddstr(WINDOW *win, int y, int x, const char *str)
95: {
96: return mvwaddnstr(win, y, x, str, -1);
97: }
98:
99: /*
100: * mvaddnstr --
101: * Add a string of at most n characters to stdscr
102: * starting at (y, x).
103: */
104: int
105: mvaddnstr(int y, int x, const char *str, int count)
106: {
107: return mvwaddnstr(stdscr, y, x, str, count);
108: }
109:
110: /*
111: * mvwaddnstr --
112: * Add a string of at most n characters to the given window
113: * starting at (y, x).
114: */
115: int
116: mvwaddnstr(WINDOW *win, int y, int x, const char *str, int count)
117: {
1.17 blymn 118: if (wmove(win, y, x) == ERR)
1.7 blymn 119: return ERR;
120:
121: return waddnstr(win, str, count);
122: }
123:
124: #endif
125:
1.1 cgd 126: /*
127: * waddnstr --
128: * Add a string (at most n characters) to the given window
129: * starting at (_cury, _curx). If n is negative, add the
130: * entire string.
131: */
132: int
1.7 blymn 133: waddnstr(WINDOW *win, const char *s, int n)
1.1 cgd 134: {
1.5 mrg 135: size_t len;
1.1 cgd 136: const char *p;
137:
1.19 rin 138: __CTRACE(__CTRACE_INPUT, "ADDNSTR: win %p, length %d\n", win, n);
1.20 ! blymn 139: __CTRACE(__CTRACE_INPUT, "ADDNSTR: string %s\n", s);
1.10 itojun 140: /*
141: * behavior changed from traditional BSD curses, for better XCURSES
142: * conformance.
1.12 blymn 143: *
1.10 itojun 144: * BSD curses: if (n > 0) then "at most n", else "len = strlen(s)"
145: * ncurses: if (n >= 0) then "at most n", else "len = strlen(s)"
146: * XCURSES: if (n != -1) then "at most n", else "len = strlen(s)"
1.15 roy 147: *
1.10 itojun 148: */
149: if (n >= 0)
1.1 cgd 150: for (p = s, len = 0; n-- && *p++; ++len);
151: else
152: len = strlen(s);
1.15 roy 153:
154: return waddbytes(win, s, (int) len);
1.1 cgd 155: }
CVSweb <webmaster@jp.NetBSD.org>