1*6348e3f3Sblymn /* $NetBSD: meta.c,v 1.11 2024/12/23 02:58:03 blymn Exp $ */ 2bb083e0eSblymn 3bb083e0eSblymn /*- 4bb083e0eSblymn * Copyright (c) 1998-2000 Brett Lymn 5bb083e0eSblymn * (blymn@baea.com.au, brett_lymn@yahoo.com.au) 6bb083e0eSblymn * All rights reserved. 7bb083e0eSblymn * 8bb083e0eSblymn * This code has been donated to The NetBSD Foundation by the Author. 9bb083e0eSblymn * 10bb083e0eSblymn * Redistribution and use in source and binary forms, with or without 11bb083e0eSblymn * modification, are permitted provided that the following conditions 12bb083e0eSblymn * are met: 13bb083e0eSblymn * 1. Redistributions of source code must retain the above copyright 14bb083e0eSblymn * notice, this list of conditions and the following disclaimer. 15bb083e0eSblymn * 2. The name of the author may not be used to endorse or promote products 16c03a48d6Swiz * derived from this software without specific prior written permission 17bb083e0eSblymn * 18bb083e0eSblymn * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 19bb083e0eSblymn * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 20bb083e0eSblymn * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 21bb083e0eSblymn * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 22bb083e0eSblymn * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 23bb083e0eSblymn * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 24bb083e0eSblymn * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 25bb083e0eSblymn * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 26bb083e0eSblymn * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 27bb083e0eSblymn * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28bb083e0eSblymn * 29bb083e0eSblymn * 30bb083e0eSblymn */ 31bb083e0eSblymn 3266cab71cSblymn #include <sys/cdefs.h> 3366cab71cSblymn #ifndef lint 34*6348e3f3Sblymn __RCSID("$NetBSD: meta.c,v 1.11 2024/12/23 02:58:03 blymn Exp $"); 3566cab71cSblymn #endif /* not lint */ 3666cab71cSblymn 37bb083e0eSblymn #include "curses.h" 38bb083e0eSblymn #include "curses_private.h" 39bb083e0eSblymn 40bb083e0eSblymn /* 41bb083e0eSblymn * meta -- 42bb083e0eSblymn * Turn on or off the terminal meta mode. 43bb083e0eSblymn */ 44bb083e0eSblymn int 45bb083e0eSblymn meta(/*ARGSUSED*/ WINDOW *win, bool bf) 46bb083e0eSblymn { 47*6348e3f3Sblymn if (__predict_false(win == NULL)) 48*6348e3f3Sblymn return ERR; 4950a63ac8Sroy 50bb083e0eSblymn if (bf == TRUE) { 5198eb8895Sroy if (meta_on != NULL) { 521f221324Sjdc __CTRACE(__CTRACE_MISC, "meta: TRUE\n"); 5398eb8895Sroy tputs(meta_on, 0, __cputchar); 54c84d91aaSblymn _cursesi_screen->meta_state = TRUE; 5512654ca8Sblymn fflush(_cursesi_screen->outfd); 56bb083e0eSblymn } 57bb083e0eSblymn } else { 5898eb8895Sroy if (meta_off != NULL) { 591f221324Sjdc __CTRACE(__CTRACE_MISC, "meta: FALSE\n"); 6098eb8895Sroy tputs(meta_off, 0, __cputchar); 61c84d91aaSblymn _cursesi_screen->meta_state = FALSE; 6212654ca8Sblymn fflush(_cursesi_screen->outfd); 63bb083e0eSblymn } 64bb083e0eSblymn } 65bb083e0eSblymn 66bb083e0eSblymn return OK; 67bb083e0eSblymn } 68bb083e0eSblymn 6966cab71cSblymn /* 7066cab71cSblymn * __restore_meta_state -- 7166cab71cSblymn * Restore old meta state. 7266cab71cSblymn */ 7366cab71cSblymn void 7466cab71cSblymn __restore_meta_state(void) 7566cab71cSblymn { 7650a63ac8Sroy 77c84d91aaSblymn meta(NULL, _cursesi_screen->meta_state); 7866cab71cSblymn } 79bb083e0eSblymn 80