home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / misc / volume5 / rsed / input.c < prev    next >
Encoding:
C/C++ Source or Header  |  1989-02-03  |  1.5 KB  |  97 lines

  1.  
  2. /*
  3.  * This code copyright 1988 by Doug Davis (doug@letni.lawnet.com) 
  4.  *  You are free to modify, hack, fold, spindle, or mutlate this code in
  5.  *  any maner provided you give credit where credit is due and don't pretend
  6.  *  you wrote it.
  7.  *  If you do my lawyers (and I have a lot of lawyers) will teach you a lesson
  8.  *  in copyright law that you will never ever forget.
  9.  */
  10. #include "defs.h"
  11. #include "externs.h"
  12.  
  13. long
  14. getlnum()
  15. {
  16.     getstring(buf, 10, '\0');
  17.     return(makenum(buf));
  18. }
  19.  
  20. char
  21. yesno()
  22. {
  23.     char c;
  24.     for (;;) {
  25. #ifdef MSDOS
  26.         c=getch();
  27. #else MSDOS
  28.         c=getchar();
  29. #endif MSDOS
  30.         if (islower(c))
  31.             c=toupper(c);
  32.         switch (c) {
  33.             case 'Y':
  34.                 puts("Yes.");
  35.                 return(c);
  36.             break;
  37.             case 'N':
  38.                 puts("No.");
  39.                 return(c);
  40.             break;
  41.             default:
  42.                 puts("<Y>es or <N>o please.");
  43.             break;
  44.         }
  45.     }
  46. }
  47. /*
  48.  *    This routine gets a string..
  49.  *
  50.  */
  51. char *
  52. getstring(str, len, first)
  53. char    *str;
  54. int    len;
  55. char    first;
  56. {
  57.     char *p, c;
  58.     p = str;
  59.     if (first != '\0')  {
  60.         *(p++) = first;
  61.         putchar(first);
  62.     }        
  63.     for ( ;; ) {
  64. #ifdef MSDOS
  65.         c = getch();
  66. #else
  67.         c = getchar();
  68. #endif MSDOS
  69.         switch(c) {
  70.             case '\b': {
  71.                 if (p > str) {
  72.                     *p='\0';
  73.                     fputs("\010 \010", stdout);
  74.                     *(p--)='\0';
  75.                 } else {
  76.                     putchar('\007');
  77.                     }
  78.                 }
  79.                 break;
  80.             case '\n':
  81.             case '\r': {
  82.                 *p='\0';
  83.                 putchar('\n');
  84.                 return(*str != '\0' ? str : NULL);
  85.                 } break;
  86.             default: {
  87.                 if (p < str+len) {
  88.                     *(p++) = c;
  89.                     putchar(c);
  90.                 } else { 
  91.                     putchar('\007');
  92.                 }
  93.             } break;
  94.         }
  95.     }
  96. }
  97.