home *** CD-ROM | disk | FTP | other *** search
/ Columbia Kermit / kermit.zip / mm / mm-ccmd-0.91-20031009.tar.gz / mm-ccmd-0.91-20031009.tar / work / ccmd / cmchar.c < prev    next >
C/C++ Source or Header  |  2000-01-02  |  2KB  |  85 lines

  1. /*
  2.  Copyright (c) 1986, 1990 by The Trustees of Columbia University in
  3.  the City of New York.  Permission is granted to any individual or
  4.  institution to use, copy, or redistribute this software so long as it
  5.  is not sold for profit, provided this copyright notice is retained.
  6.  
  7.  Author: Howie Kaye
  8. */
  9.  
  10.  
  11. /*
  12.  * cmchar
  13.  *
  14.  * This module contains a parse for a single character.
  15.  * it is trivial.  May be used when a single character of input is 
  16.  * required.
  17.  */
  18.  
  19. #define    CHARERR                /* char error table allocated here */
  20.  
  21. #include "ccmdlib.h"            /* get standard symbols */
  22. #include "cmfncs.h"            /* and internal symbols */
  23.  
  24. /*
  25.  * forward declare parse functions.
  26.  */
  27. static int char_parse(), char_help(), char_cplt();
  28.  
  29. #define charbrk  cmallbk        /* break on everything. */
  30.  
  31. ftspec ft_char = { char_parse, char_help, char_cplt, 0, &charbrk };
  32.  
  33. /*
  34.  * char_parse:
  35.  * parse a single character.
  36.  */
  37. PASSEDSTATIC int
  38. char_parse(text, textlen, fdbp, parselen, value)
  39. char *text;
  40. int textlen;
  41. fdb *fdbp;
  42. int *parselen;
  43. pval *value;
  44. {
  45.   *parselen = 0;
  46.   if (textlen < 1) return(CMxINC);    /* no data, no parse */
  47.   *parselen = 1;
  48.   value->_pvchr = text[0];
  49.   return(CMxOK);
  50. }
  51.  
  52. /*
  53.  * give a help message
  54.  */
  55.  
  56. PASSEDSTATIC int
  57. char_help(text, textlen, fdbp, cust, lines)
  58. char *text;
  59. int textlen,cust;
  60. fdb *fdbp;
  61. int lines;
  62. {
  63.   if (!cust)
  64.     cmxputs("a character\n");    /* then print the token string */
  65.   return(lines-1);
  66. }
  67.  
  68. /*
  69.  * character completion.  complete if one character
  70.  */
  71. PASSEDSTATIC int
  72. char_cplt(text,textlen,fdbp,full,cplt,cpltlen)
  73. char *text,**cplt;
  74. int textlen,full,*cpltlen;
  75. fdb *fdbp;
  76. {
  77.   *cplt = NULL; *cpltlen = 0;
  78.   if (textlen == 1) 
  79.     return(CMP_GO | CMP_SPC);
  80.   if (textlen == 0)
  81.     return(CMP_BEL);
  82.   else 
  83.     return(CMP_GO);
  84. }
  85.