# HG changeset patch
# User Markus Bröker <mbroeker@largo.dyndns.tv>
# Date 1229187484 -3600
# Node ID 0a8be4eac87e9d769e4d40d06ea6ab324b89c833
# Parent  f19f44e2e86307377df9e4141f48d981aa0d3540
c++ file copy demo added

committer: Markus Bröker <mbroeker@largo.homelinux.org>

diff --git a/Makefile b/Makefile
--- a/Makefile
+++ b/Makefile
@@ -39,7 +39,8 @@
 	gauss \
 	mem2swap \
 	prog_limit \
-	connection
+	connection \
+	copy
 
 .SUFFIXES: .c .cc .asm
 
@@ -215,6 +216,10 @@
 	@echo Linking $< ...
 	@$(CPP) -o $@ $<
 
+copy: copy.o
+	@echo Linking $< ...
+	@$(CPP) -o $@ $<
+
 .PHONY: clean uninstall
 
 clean:
diff --git a/copy.cc b/copy.cc
new file mode 100644
--- /dev/null
+++ b/copy.cc
@@ -0,0 +1,39 @@
+/**
+ * Kopierprogramm für Dateien in C++
+ * Copyright (C) 2008 Markus Bröker
+ */
+
+#include <iostream>
+#include <fstream>
+
+int main(int argc, char **argv)
+{
+	std::ifstream in;
+	std::ofstream out;
+
+	char c;
+
+	if ( argc != 3 ) {
+		std::cout << "Benutzung: " << argv[0] << " <datei> <datei>" << std::endl;
+		return EXIT_SUCCESS;
+	}
+
+	in.open(argv[1], std::ios::binary);
+	if ( !in ) {
+		std::cerr << "Fehler: Kann Datei " << argv[1] << " nicht lesen!" << std::endl;
+	}
+
+	out.open(argv[2]);
+	if ( !out ) {
+		std::cerr << "Fehler: Kann Datei " << argv[2] << " nicht beschreiben!" << std::endl;
+	}
+
+	while ( in.get(c) ) {
+		out << c;
+	}
+
+	in.close();
+	out.close();
+
+	return EXIT_SUCCESS;
+}