/***************************************************************************** * * * ============================================== * * * *****************************************************************************/ #include #include #include #include #include #include #define usage() fprintf(stderr, "usage: %s inputfile outputfile key\n", progammname) /***************************************************************************** * * * --------------------------------- main --------------------------------- * * * *****************************************************************************/ int main(int argc, char *argv[]) { /*Programmname merken*/ char *progammname = argv[0]; int inputfile; int outputfile; int anz_gelesen; unsigned long key; unsigned long gelesen; /*Argumentverarbeitung, */ /*falls filename angegeben wird in diesen geschrieben, sonst auf stdout*/ if (argc == 4) { inputfile = open(argv[1],O_RDONLY); if(inputfile == -1) { fprintf(stderr,"Fehler beim Oeffnen der Datei %s zum Lesen.\n", argv[1]); usage(); return -1; } else { /*outputfile = creat(argv[2], 0777);*/ outputfile = open(argv[2], O_WRONLY | O_APPEND | O_TRUNC | O_CREAT, 0777); if(outputfile == -1) { close(inputfile); fprintf(stderr,"Fehler beim Oeffnen der Datei %s zum Schreiben.\n", argv[2]); usage(); return -1; } } sscanf(argv[3], "%lu", &key); fprintf(stdout,"Key: %lu\n", key); } else { usage(); return -1; } while ((anz_gelesen = read(inputfile, (char*)&gelesen, 4)) > 0) { gelesen = gelesen ^key; write(outputfile, (char*)&gelesen, anz_gelesen); gelesen = 0; anz_gelesen = 0; } close(inputfile); close(outputfile); return 0; }