// Mehrere Textdateien zentriert ausgeben
//
// Aufruf: center file1 file2 ...
//
// Klaus Kusche, 2011

#include <fstream>
#include <iostream>
#include <cstdlib>
#include <cstring>

using namespace std;

const int LINE_WIDTH = 80;

int main(int argc, const char *argv[])
{
  if (argc < 2) {
    cerr << "Aufruf: " << argv[0] << " infilename1 infilename2 ..." << endl;
    exit(EXIT_FAILURE);
  }

  ifstream inf;
  
  for (int i = 1; i < argc; ++i) {
    inf.open(argv[i]);
    if (!inf) {
      cerr << argv[0] << ": Cannot open " << argv[1] << " for reading" << endl;
      exit(EXIT_FAILURE);
    }

    char line[LINE_WIDTH + 1]; // +1 für \0
    int spaces;

    while (inf.getline(line, sizeof(line))) {
      for (spaces = (LINE_WIDTH - strlen(line)) / 2; spaces > 0; --spaces) {
        cout << ' ';
      }
      cout << line << endl;
    }

    // wenn fail() true ist aber eof() nicht, ist ein Fehler aufgetreten
    if (!inf.eof()) {
      cerr << argv[0] << ": Cannot read " << argv[1] << 
              " (line too long?)" << endl;
      exit(EXIT_FAILURE);
    }
    // jetzt ist das close notwendig,
    // weil wir ja auf dasselbe File-Objekt wieder ein open machen
    inf.close();
  }
  
  exit(EXIT_SUCCESS);
}
