home *** CD-ROM | disk | FTP | other *** search
/ Source Code 1992 March / Source_Code_CD-ROM_Walnut_Creek_March_1992.iso / usenet / altsrcs / 1 / 1456 / savefile.c < prev    next >
Encoding:
C/C++ Source or Header  |  1990-12-28  |  1.5 KB  |  83 lines

  1.  
  2. /*
  3.  * Copyright (C) 1990 Jay Konigsberg - see Makefile for details
  4.  * This is Free Software, distrubited under the GNU Software Aggrement.
  5.  */
  6.  
  7. #include "simped.h"
  8.  
  9. void savefile(editfile, newfile, fd, text, count)
  10. char    *editfile;
  11. int    *newfile;
  12. FILE    *fd;
  13. char    **text;
  14. int    count;
  15. {
  16. FILE    *fopen();
  17.  
  18. int    fclose(),
  19.     fprintf(),
  20.     printf(),
  21.     fputs(),
  22.     puts(),
  23.     cleanup();
  24.  
  25. char    *getline();
  26.  
  27. int    textinx,        /* index for the text buffer */
  28.     text_entered=0,        /* was something entered */
  29.     ch=0;            /* characters read in */
  30.  
  31. char    buffer[LINELEN+2];    /* buffer for filename entry */
  32.  
  33. puts("");
  34. if (! *editfile)
  35.     {
  36.     for(;;)
  37.     {
  38.     fputs("\nPlease enter a filename: ", stdout);
  39.     if (getline(buffer, &text_entered, stdin, '\0', TRUE))
  40.         {
  41.         puts("Too many characters.");
  42.         return;
  43.         }
  44.     if( ! text_entered ) /* a return by itself was entered */
  45.         return;
  46.     buffer[strlen(buffer)-1]='\0';
  47.     editfile = buffer;
  48.     if ( (fd=fopen(editfile, "r")) == NULL)
  49.         {
  50.         break;
  51.         }
  52.     printf("%s: file exists! return to exit.\n", editfile);
  53.     }
  54.     fclose(fd);
  55.     if( (fd=fopen(editfile, "w")) == NULL )
  56.     {
  57.     fprintf(stderr,"Can't open %s, probably an illegal filename",editfile);
  58.     return;
  59.     }
  60.     }
  61.  
  62. if ( ! *newfile )
  63.     {
  64.     fclose(fd);
  65.     if( (fd=fopen(editfile, "w")) == NULL )
  66.     {
  67.     fprintf(stderr,"fopen for write failed.\n");
  68.     cleanup(2);
  69.     }
  70.     }
  71. else
  72.     {
  73.     rewind(fd);
  74.     }
  75. for (textinx=0; textinx < count; ++textinx)
  76.     {
  77.     ch += strlen(text[textinx]);
  78.     fputs(text[textinx], fd);
  79.     }
  80. printf("\n%s: written, %d lines, %d characters\n", editfile, count, ch);
  81. cleanup(0);
  82. }
  83.