home *** CD-ROM | disk | FTP | other *** search
- /* ------------------------------------------------- */
- /* BARS.C */
- /* (C) 1991 Georg Pohl & DMV-Verlag */
- /* Sprache: Turbo C(++), Borland C++ */
- /* Dieses Modul ist eine Anwendung des Fortschritts- */
- /* graphen, aus BAR.C. */
- /* Es wird eine Datei kopiert. Dabei findet keine */
- /* ne Überprüfung statt, ob die Quell- oder Ziel- */
- /* datei bereits vorhanden ist. Es wird davon ausge- */
- /* gegangen, daß diese Überprüfungen bereits im auf- */
- /* rufenden Modul stattgefunden haben. */
- /* ------------------------------------------------- */
-
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include <dos.h>
- #include <io.h>
- #include <fcntl.h>
- #include <sys\stat.h>
-
- #include "bar.h"
-
- #define READ_MODE (O_RDWR | O_BINARY)
- #define WRITE_MODE (READ_MODE | O_TRUNC | O_CREAT)
- #define BUFFERSIZE ((unsigned)0x8000)
-
- /* ------------------------------------------------- */
- /* Die Datei mit dem Namen <from> wird in die Datei */
- /* <to> kopiert. Ist <to> vorhanden wird die Datei */
- /* überschrieben, sonst neu angelegt. Ist <from> */
- /* nicht vorhanden, wird abgebrochen. */
- /* War das Kopieren erfolgreich, wird <1>, sonst <0> */
- /* zurückgegeben. */
- /* ------------------------------------------------- */
- int copyfile(char *from, char *to)
- {
- void *b; /* Puffer zum Kopieren */
- char s[70]; /* String für BAR-Text */
- unsigned source,
- target; /* Filehandles */
- int b_read, b_written; /* Zähler f. Lesen und */
- /* Schreiben. */
- BAR *bar; /* Zeiger auf Graphen */
-
- /* Die Vorgabewerte für den Graphen werden geändert: */
- wx = 5;
- wwide = 70;
- whight = 8;
- wcolor = 7;
- bcolor = 112;
-
- /* Speicher für den Kopier-Buffer allokieren */
- if ((b = malloc(BUFFERSIZE)) == NULL)
- return(0);
-
- from = "BAR.H"; to = "BAR.BAK";
- /* Dateien öffnen - keine Prüfungen! */
- source = open(from, READ_MODE);
- target = open(to, WRITE_MODE, S_IWRITE);
-
- /* Den Fortschrittsgraphen initialisieren. */
- strcpy(s, strupr(from));
- strcat(s, " nach");
- bar = init(" Kopiere Datei ", /* Titel */
- s, strupr(to), /* Textzeilen */
- filelength(source), /* Anzahl zu */
- /* kop. Bytes */
- DO); /* restau- */
- /* rieren der */
- /* Werte. */
-
- do {
- b_read = read(source, b, BUFFERSIZE);
- b_written = write(target, b, b_read);
- show_bar(bar, tell(source)); /* ! */
- } while (b_read == b_written && b_read);
-
- /* Dateien wieder schließen ... */
- close(source);
- close(target);
-
- /* Speicherplatz des Puffer freigeben ... */
- free(b);
-
- /* Den Graphen auflösen ... */
- bar = done(bar);
-
- return(b_read != -1 && b_written != -1);
- }
-
- /* ------------------------------------------------- */
- /* Ende von BARS.C */
-