FreeNFS für Windows XP (Vista, 7) funktioniert nicht

Alles rund um das grafische Benutzerinterface Enigma
mrvica
Einsteiger
Einsteiger
Beiträge: 342
Registriert: Freitag 24. September 2004, 12:48

FreeNFS für Windows XP (Vista, 7) funktioniert nicht

Beitrag von mrvica »

http://freenfs.sourceforge.net/
Aufnahmen mit FreeNFS funktionieren unter Enigma nicht, mit AllegroNFS und anderen keine Probleme, bin der Sache etwas näher gekommen, beim Recorden werden .eit und .ts Datei angelegt, die .eit Datei bekommt den a (archiv Attribut), ist OK so, die .ts datei ra (read only, archiv), wieso auch immer, weil sie read only ist, kann man sie dann nicht überschreiben, updaten, die Aufnahme bricht immer mit der Meldung "Record failed due to an write error during recording. Check for filesystem corruption." ab. Nach einem Tipp von rhabarber1848 konnte ich den Fehler finden, in ../lib/dvb/record.cpp steht folgendes, die .ts Datei bekommt das Attribut 555, die .eit Datei in enigma_main.cpp dagegen 777

Code: Alles auswählen

#ifdef HAVE_DREAMBOX_HARDWARE
	outfd=::open(tfilename.c_str(), O_CREAT|O_WRONLY|O_TRUNC|O_LARGEFILE, 0555);
#else
	if (access("/var/etc/.no_o_sync", R_OK) == 0)
		outfd=::open(tfilename.c_str(),O_CREAT|O_WRONLY|O_TRUNC|O_LARGEFILE, 0555);
	else
		outfd=::open(tfilename.c_str(),O_SYNC|O_CREAT|O_WRONLY|O_TRUNC|O_LARGEFILE, 0555);
#endif
habe den Code geändert, habe mit Attribut 777 versucht, derselbe Fehler, den entscheidenden Tipp habe ich aus tuxbox Sourcen bekommen .../dvb_test/test_dvr.c , da steht folgendes:

Code: Alles auswählen

	fprintf(stderr, "using '%s' and '%s'\n"
		"writing to '%s'\n", dmxdev, dvrdev, argv[1]);
	tsfd = open(argv[1], O_WRONLY | O_CREAT | O_TRUNC | O_LARGEFILE, 0664);
	if (tsfd == -1) {
		perror("cannot write output file");
		return 1;
	}
mit dem Attribut 664 klappts dann, bitte record.cpp entsprechend ändern, die Aufnahmen brechen nicht mehr ab

Code: Alles auswählen

#ifdef HAVE_DREAMBOX_HARDWARE
	outfd=::open(tfilename.c_str(), O_CREAT|O_WRONLY|O_TRUNC|O_LARGEFILE, 0664);
#else
	if (access("/var/etc/.no_o_sync", R_OK) == 0)
		outfd=::open(tfilename.c_str(),O_CREAT|O_WRONLY|O_TRUNC|O_LARGEFILE, 0664);
	else
		outfd=::open(tfilename.c_str(),O_SYNC|O_CREAT|O_WRONLY|O_TRUNC|O_LARGEFILE, 0664);
#endif
konnte bis jetzt keine Nachteile feststellen, es geht ja nur darum mit welchen Rechten die .ts Datei beim Aufnehmen angelegt wird

mrvica
rhabarber1848
CDK-Experte
Beiträge: 4335
Registriert: Donnerstag 3. April 2008, 14:05

Re: FreeNFS für Windows XP (Vista, 7) funktioniert nicht

Beitrag von rhabarber1848 »