home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Source Code 1993 July / THE_SOURCE_CODE_CD_ROM.iso / bsd_srcs / usr.bin / window / lcmd.c < prev    next >
Encoding:
C/C++ Source or Header  |  1991-04-18  |  4.7 KB  |  155 lines

  1. /*
  2.  * Copyright (c) 1983 Regents of the University of California.
  3.  * All rights reserved.
  4.  *
  5.  * This code is derived from software contributed to Berkeley by
  6.  * Edward Wang at The University of California, Berkeley.
  7.  *
  8.  * Redistribution and use in source and binary forms, with or without
  9.  * modification, are permitted provided that the following conditions
  10.  * are met:
  11.  * 1. Redistributions of source code must retain the above copyright
  12.  *    notice, this list of conditions and the following disclaimer.
  13.  * 2. Redistributions in binary form must reproduce the above copyright
  14.  *    notice, this list of conditions and the following disclaimer in the
  15.  *    documentation and/or other materials provided with the distribution.
  16.  * 3. All advertising materials mentioning features or use of this software
  17.  *    must display the following acknowledgement:
  18.  *    This product includes software developed by the University of
  19.  *    California, Berkeley and its contributors.
  20.  * 4. Neither the name of the University nor the names of its contributors
  21.  *    may be used to endorse or promote products derived from this software
  22.  *    without specific prior written permission.
  23.  *
  24.  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  25.  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  26.  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  27.  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  28.  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  29.  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  30.  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  31.  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  32.  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  33.  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  34.  * SUCH DAMAGE.
  35.  */
  36.  
  37. #ifndef lint
  38. static char sccsid[] = "@(#)lcmd.c    3.34 (Berkeley) 6/6/90";
  39. #endif /* not lint */
  40.  
  41. #include "defs.h"
  42. #include "value.h"
  43. #include "lcmd.h"
  44.  
  45. int l_alias();
  46. int l_close();
  47. int l_cursormodes();
  48. int l_debug();
  49. int l_def_nline();
  50. int l_def_shell();
  51. int l_def_smooth();
  52. int l_echo();
  53. int l_escape();
  54. int l_foreground();
  55. int l_iostat();
  56. int l_label();
  57. int l_list();
  58. int l_select();
  59. int l_smooth();
  60. int l_source();
  61. int l_terse();
  62. int l_time();
  63. int l_unalias();
  64. int l_unset();
  65. int l_variable();
  66. int l_window();
  67. int l_write();
  68.  
  69. extern struct lcmd_arg arg_alias[];
  70. extern struct lcmd_arg arg_cursormodes[];
  71. extern struct lcmd_arg arg_debug[];
  72. extern struct lcmd_arg arg_echo[];
  73. extern struct lcmd_arg arg_escape[];
  74. extern struct lcmd_arg arg_foreground[];
  75. extern struct lcmd_arg arg_label[];
  76. extern struct lcmd_arg arg_def_nline[];
  77. extern struct lcmd_arg arg_def_shell[];
  78. extern struct lcmd_arg arg_def_smooth[];
  79. extern struct lcmd_arg arg_close[];
  80. extern struct lcmd_arg arg_select[];
  81. extern struct lcmd_arg arg_smooth[];
  82. extern struct lcmd_arg arg_source[];
  83. extern struct lcmd_arg arg_terse[];
  84. extern struct lcmd_arg arg_time[];
  85. extern struct lcmd_arg arg_unalias[];
  86. extern struct lcmd_arg arg_unset[];
  87. extern struct lcmd_arg arg_window[];
  88. extern struct lcmd_arg arg_write[];
  89. struct lcmd_arg arg_null[1] = { { 0 } };
  90.  
  91. struct lcmd_tab lcmd_tab[] = {
  92.     "alias",        1,    l_alias,    arg_alias,
  93.     "close",        2,    l_close,    arg_close,
  94.     "cursormodes",        2,    l_cursormodes,    arg_cursormodes,
  95.     "debug",        1,    l_debug,    arg_debug,
  96.     "default_nlines",    9,    l_def_nline,    arg_def_nline,
  97.     "default_shell",    10,    l_def_shell,    arg_def_shell,
  98.     "default_smooth",    10,    l_def_smooth,    arg_def_smooth,
  99.     "echo",            2,    l_echo,        arg_echo,
  100.     "escape",        2,    l_escape,    arg_escape,
  101.     "foreground",        1,    l_foreground,    arg_foreground,
  102.     "iostat",        1,    l_iostat,    arg_null,
  103.     "label",        2,    l_label,    arg_label,
  104.     "list",            2,    l_list,        arg_null,
  105.     "nlines",        1,    l_def_nline,    arg_def_nline,
  106.     "select",        2,    l_select,    arg_select,
  107.     "shell",        2,    l_def_shell,    arg_def_shell,
  108.     "smooth",        2,    l_smooth,    arg_smooth,
  109.     "source",        2,    l_source,    arg_source,
  110.     "terse",        2,    l_terse,    arg_terse,
  111.     "time",            2,    l_time,        arg_time,
  112.     "unalias",        3,    l_unalias,    arg_unalias,
  113.     "unset",        3,    l_unset,    arg_unset,
  114.     "variable",        1,    l_variable,    arg_null,
  115.     "window",        2,    l_window,    arg_window,
  116.     "write",        2,    l_write,    arg_write,
  117.     0
  118. };
  119.  
  120. struct lcmd_tab *
  121. lcmd_lookup(name)
  122. char *name;
  123. {
  124.     register struct lcmd_tab *p;
  125.  
  126.     for (p = lcmd_tab; p->lc_name != 0; p++)
  127.         if (str_match(name, p->lc_name, p->lc_minlen))
  128.             return p;
  129.     return 0;
  130. }
  131.  
  132. dosource(filename)
  133. char *filename;
  134. {
  135.     if (cx_beginfile(filename) < 0)
  136.         return -1;
  137.     p_start();
  138.     err_end();
  139.     cx_end();
  140.     return 0;
  141. }
  142.  
  143. dolongcmd(buffer, arg, narg)
  144. char *buffer;
  145. struct value *arg;
  146. int narg;
  147. {
  148.     if (cx_beginbuf(buffer, arg, narg) < 0)
  149.         return -1;
  150.     p_start();
  151.     err_end();
  152.     cx_end();
  153.     return 0;
  154. }
  155.