home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / extra18 / bars / bars.c < prev    next >
Encoding:
C/C++ Source or Header  |  1992-02-19  |  3.3 KB  |  94 lines

  1. /* ------------------------------------------------- */
  2. /*                       BARS.C                      */
  3. /*         (C) 1991 Georg Pohl & DMV-Verlag          */
  4. /*        Sprache:  Turbo C(++), Borland C++         */
  5. /* Dieses Modul ist eine Anwendung des Fortschritts- */
  6. /* graphen, aus BAR.C.                               */
  7. /* Es wird eine Datei kopiert. Dabei findet keine    */
  8. /* ne Überprüfung statt, ob die Quell- oder Ziel-    */
  9. /* datei bereits vorhanden ist. Es wird davon ausge- */
  10. /* gegangen, daß diese Überprüfungen bereits im auf- */
  11. /* rufenden Modul stattgefunden haben.               */
  12. /* ------------------------------------------------- */
  13.  
  14. #include <stdio.h>
  15. #include <stdlib.h>
  16. #include <string.h>
  17. #include <dos.h>
  18. #include <io.h>
  19. #include <fcntl.h>
  20. #include <sys\stat.h>
  21.  
  22. #include "bar.h"
  23.  
  24. #define READ_MODE  (O_RDWR | O_BINARY)
  25. #define WRITE_MODE (READ_MODE | O_TRUNC | O_CREAT)
  26. #define BUFFERSIZE ((unsigned)0x8000)
  27.  
  28. /* ------------------------------------------------- */
  29. /* Die Datei mit dem Namen <from> wird in die Datei  */
  30. /* <to> kopiert. Ist <to> vorhanden wird die Datei   */
  31. /* überschrieben, sonst neu angelegt. Ist <from>     */
  32. /* nicht vorhanden, wird abgebrochen.                */
  33. /* War das Kopieren erfolgreich, wird <1>, sonst <0> */
  34. /* zurückgegeben.                                    */
  35. /* ------------------------------------------------- */
  36. int copyfile(char *from, char *to)
  37. {
  38.   void *b;                    /* Puffer zum Kopieren */
  39.   char s[70];                 /* String für BAR-Text */
  40.   unsigned source,
  41.            target;            /* Filehandles         */
  42.   int b_read, b_written;      /* Zähler f. Lesen und */
  43.                               /* Schreiben.          */
  44.   BAR  *bar;                  /* Zeiger auf Graphen  */
  45.  
  46. /* Die Vorgabewerte für den Graphen werden geändert: */
  47.   wx     = 5;
  48.   wwide  = 70;
  49.   whight = 8;
  50.   wcolor = 7;
  51.   bcolor = 112;
  52.  
  53.   /* Speicher für den Kopier-Buffer allokieren       */
  54.   if ((b = malloc(BUFFERSIZE)) == NULL)
  55.     return(0);
  56.  
  57.   from = "BAR.H";  to = "BAR.BAK";
  58.   /* Dateien öffnen - keine Prüfungen!               */
  59.   source = open(from, READ_MODE);
  60.   target = open(to,   WRITE_MODE, S_IWRITE);
  61.  
  62.   /* Den Fortschrittsgraphen initialisieren.         */
  63.   strcpy(s, strupr(from));
  64.   strcat(s, " nach");
  65.   bar = init(" Kopiere Datei ",        /* Titel      */
  66.              s, strupr(to),            /* Textzeilen */
  67.              filelength(source),       /* Anzahl zu  */
  68.                                        /* kop. Bytes */
  69.              DO);                      /* restau-    */
  70.                                        /* rieren der */
  71.                                        /* Werte.     */
  72.  
  73.   do {
  74.     b_read = read(source, b, BUFFERSIZE);
  75.     b_written = write(target, b, b_read);
  76.     show_bar(bar, tell(source));                /* ! */
  77.   } while (b_read == b_written && b_read);
  78.  
  79.   /* Dateien wieder schließen ...                    */
  80.   close(source);
  81.   close(target);
  82.  
  83.   /* Speicherplatz des Puffer freigeben ...          */
  84.   free(b);
  85.  
  86.   /* Den Graphen auflösen ...                        */
  87.   bar = done(bar);
  88.  
  89.   return(b_read != -1 && b_written != -1);
  90. }
  91.  
  92. /* ------------------------------------------------- */
  93. /*                 Ende von BARS.C                   */
  94.