changeset 15891:451c9ca8fd47

Only dump to stdout
author ranma
date Sat, 02 Jul 2005 19:35:15 +0000
parents 7b06396ac8b3
children c8e414e49fef
files TOOLS/avisubdump.c
diffstat 1 files changed, 6 insertions(+), 20 deletions(-) [+]
line wrap: on
line diff
--- a/TOOLS/avisubdump.c	Sat Jul 02 19:19:41 2005 +0000
+++ b/TOOLS/avisubdump.c	Sat Jul 02 19:35:15 2005 +0000
@@ -4,7 +4,7 @@
  * avi vobsub subtitle stream dumper (c) 2004 Tobias Diedrich
  * Licensed under GNU GPLv2 or (at your option) any later version.
  *
- * Compile with "make avisubdump"
+ * The subtitles are dumped to stdout.
  */
 
 #define _LARGEFILE_SOURCE
@@ -30,8 +30,6 @@
 #define GAB_ENTRY_UNICODE       3
 #define GAB_RAWTEXTSUBTITLE     4
 
-static char *subfile;
-
 static unsigned int getle16(FILE* f){
 	unsigned int res;
 
@@ -83,7 +81,7 @@
 	while (ret + 6 <= size) {
 		unsigned int len, id;
 		char *buf;
-		int i, fd;
+		int i;
 
 		id = getle16(f); ret += 2;
 		len = getle(f); ret += 4;
@@ -93,22 +91,18 @@
 		ret += fread(buf, 1, len, f);
 
 		switch (id) {
-		case GAB_LANGUAGE_UNICODE:
+		case GAB_LANGUAGE_UNICODE: /* FIXME: convert to utf-8; endianness */
 			for (i=0; i<len; i++) buf[i] = buf[i*2];
 		case GAB_LANGUAGE:
 			fprintf(stderr, "LANGUAGE: %s\n", buf);
 			break;
-		case GAB_ENTRY_UNICODE:
+		case GAB_ENTRY_UNICODE: /* FIXME: convert to utf-8; endianness */
 			for (i=0; i<len; i++) buf[i] = buf[i*2];
 		case GAB_ENTRY:
 			fprintf(stderr, "ENTRY: %s\n", buf);
 			break;
 		case GAB_RAWTEXTSUBTITLE:
 			printf("%s", buf);
-			fd = open(subfile, O_CREAT|O_APPEND|O_WRONLY, 0644);
-			write(fd, buf, len);
-			close(fd);
-			fprintf(stderr, "Dumped subtitles to %s.\n", subfile);
 			break;
 		default:
 			fprintf(stderr, "Unknown type %d, len %d\n", id, len);
@@ -169,14 +163,14 @@
 int main(int argc,char* argv[])
 {
 	FILE* f;
-	int i;
 
 	if (argc != 2) {
 		fprintf(stderr, "Usage: %s <avi>\n", argv[0]);
 		exit(1);
 	}
 
-	f=fopen(argv[argc-1],"rb");
+	if (strcmp(argv[argc-1], "-") == 0) f=stdin;
+	else f=fopen(argv[argc-1],"rb");
 
 	if (!f) {
 		fprintf(stderr, "Could not open '%s': %s\n",
@@ -184,16 +178,8 @@
 		exit(-errno);
 	}
 
-	subfile = malloc(strlen(argv[1]) + 4);
-	strcpy(subfile, argv[1]);
-	for (i=strlen(subfile); i>0 && subfile[i] != '.'; i--);
-	subfile[i] = 0;
-	strcat(subfile, ".ssa");
-
 	dump(f);
 
-	free(subfile);
-
 	return 0;
 }