home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / misc / volume5 / rsed / edit.c < prev    next >
Encoding:
C/C++ Source or Header  |  1989-02-03  |  2.6 KB  |  122 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. append(number)
  14. long number;
  15. {
  16.     puts("Enter a single period on a blank line to return to the editor");
  17.     for (;;number++) {
  18.         getstring(buf, BUFSIZ, '\0');
  19.         if (*buf == '.' && strlen(buf) == 1) 
  20.             return(OK);
  21.         add(buf, number);
  22.     }
  23. }
  24.         
  25. change(number)
  26. long number;
  27. {
  28.     printf("Currently line %ld looks like:\n", number);
  29.     printline(number);
  30.     printf("Type the new line %ld\n", number);
  31.     getstring(buf, BUFSIZ, '\0');
  32.     if (*buf == '.' && strlen(buf) == 1)  {
  33.         puts("Aborted.");
  34.         return(!OK);
  35.     }
  36.     return(replace(number, buf));
  37. }
  38. srchrep(number)
  39. long number;
  40. {
  41.     char old[81], new[81], c='\0';
  42.     printf("Line %ld looks like :\n", number);
  43.     printline(number);
  44.     fputs("     Search string: ", stdout);
  45.     if (getstring(old, 81, '\0') == NULL)
  46.         return(!OK);
  47.     fputs("Replacement string: ", stdout);
  48.     if (getstring(new, 81, '\0') == NULL)
  49.         return(!OK);
  50.     while (c != 'N' && c != 'Y') {
  51.         fputs("Global replacement? ", stdout);
  52.         c=getchar();
  53.         if (islower(c)) 
  54.             c=toupper(c);
  55.         if (c == '\n') 
  56.             c='N';
  57.         switch(c) {
  58.             case 'N':
  59.                 puts("No.");
  60.             break;
  61.             case 'Y':
  62.                 puts("Yes.");
  63.             break;
  64.             case 'Q':
  65.                 return(!OK);
  66.             break;
  67.             default:
  68.                 fputs("\007<Y>es, <N>o or <Q>uit please.\n", stdout);
  69.             break;
  70.         }
  71.     }
  72.     srch_n_replace(number, old, new, c);
  73.     printline(number);
  74.     return(OK);
  75. }
  76. go_fish(number)
  77. long number;
  78. {
  79.     char sstring[81];
  80.     fputs("String to search for : ", stdout);
  81.     if(getstring(sstring, 80, '\0') == NULL)
  82.         return(!OK);
  83.     if (setfind(number, sstring) == OK) 
  84.         return(find('v') > 0L ? OK : !OK);
  85.     return(!OK);
  86. }
  87. go_global(number)
  88. long number;
  89. {
  90.     char old[81], new[81];
  91.     fputs("     Search string: ", stdout);
  92.     if (getstring(old, 80, '\0') == NULL)
  93.         return(!OK);
  94.     fputs("Replacement string: ", stdout);
  95.     if (getstring(new, 80, '\0') == NULL)
  96.         return(!OK);
  97.     return(global_replace(number, old, new));
  98. }
  99. global_replace(number, old, new)
  100. long number;
  101. char *old, *new;
  102. {
  103.     long line, count=0L;
  104.     if (setfind(number, old) == OK) {
  105.         while ((line=find('n')) > 0L)  {
  106.             if (srch_n_replace(line, old, new, 'Y') == OK) 
  107.                 count++;
  108.         }
  109.         printf("Replaced \"%s\" with \"%s\" %ld times.\n",
  110.             old, new, count);
  111.  
  112.         return(count > 0L ? OK : !OK);
  113.     }
  114.     return(!OK);
  115. }
  116. insert(number)
  117. long number;
  118. {
  119.     number--;
  120.     return(append(number));
  121. }
  122.