home *** CD-ROM | disk | FTP | other *** search
- /*
- * APPEND (c)1989 Oliver Enseling eine Datei an eine andere anfügen
- * Syntax: APPEND files [TO] file files darf ein AmigaDOS-Muster,
- * oder eine Auflistung mehrerer Dateien sein file ist eine einzelne
- * AmigaDOS-Datei
- */
-
-
- #include <stdio.h>
- #include <fcntl.h>
- #include <stdlib.h>
- #include <string.h>
- #include <dos.h>
-
- #define BUFSIZE 256
-
- struct FILEINFO FI;
-
- char Buffer[BUFSIZE];
-
- #ifdef DEUTSCH
- #define SYNTAX \
- "Syntax: APPEND dateien | muster [dateien | muster] [...]] [TO] datei\n" \
- "Version 1.00, ©1989 Oliver Enseling\n"
- #define NOREAD "%s kann nicht gelesen werden\n"
- #define NOWRITE "%s kann nicht beschrieben werden\n"
- #else
- #define SYNTAX \
- "Usage: APPEND files | pattern [files | pattern] [...]] [TO] file\n" \
- "Version 1.00, ©1989 Oliver Enseling\n"
- #define NOREAD "read error %s\n"
- #define NOWRITE "write error %s\n"
- #endif
-
- void
- main(argc, argv)
- int argc;
- char **argv;
- {
- if (argc < 3)
- printf(SYNTAX);
- else {
- int src, dest, count, i, maxi = stricmp(argv[argc - 2], "TO") == 0 ? argc - 2 : argc - 1;
-
- if ((dest = open(argv[argc - 1], O_APPEND | O_WRONLY | O_CREAT)) >= 0) {
- for (i = 1; i < maxi; i++)
- if ((src = open(argv[i], O_RDONLY)) >= 0) {
- do {
- count = read(src, Buffer, BUFSIZE);
- write(dest, Buffer, count);
- } while (count > 0);
- close(src);
- } else
- printf(NOREAD, argv[i]);
- close(dest);
- } else
- printf(NOWRITE, argv[argc - 1]);
- }
- }
-