summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDiego Elio Pettenò <flameeyes@gentoo.org>2005-12-10 16:06:44 +0000
committerDiego Elio Pettenò <flameeyes@gentoo.org>2005-12-10 16:06:44 +0000
commite52713c8b65831334a90e5f78ac0d3c8b1e20f53 (patch)
treea484e8a6000a435766420e57a0341bd0c3797ac7 /media-video/transcode/files
parentFix GUI toolkit dependencies (diff)
downloadgentoo-2-e52713c8b65831334a90e5f78ac0d3c8b1e20f53.tar.gz
gentoo-2-e52713c8b65831334a90e5f78ac0d3c8b1e20f53.tar.bz2
gentoo-2-e52713c8b65831334a90e5f78ac0d3c8b1e20f53.zip
Revision bump and removed previous 1.x versions. Close bug #110997 (modular x support, it's modular friendly saved ffmpeg that is still unfriendly), bug #111290 (missing libxml2 dependency), bug #112995 (long path crashes), bug #112382 (lzo-2 support).
(Portage version: 2.0.53)
Diffstat (limited to 'media-video/transcode/files')
-rw-r--r--media-video/transcode/files/digest-transcode-1.0.11
-rw-r--r--media-video/transcode/files/digest-transcode-1.0.2-r1 (renamed from media-video/transcode/files/digest-transcode-1.0.2)0
-rw-r--r--media-video/transcode/files/transcode-1.0.2-bigdir.patch428
-rw-r--r--media-video/transcode/files/transcode-1.0.2-lzo2.patch83
4 files changed, 511 insertions, 1 deletions
diff --git a/media-video/transcode/files/digest-transcode-1.0.1 b/media-video/transcode/files/digest-transcode-1.0.1
deleted file mode 100644
index a17cee559c97..000000000000
--- a/media-video/transcode/files/digest-transcode-1.0.1
+++ /dev/null
@@ -1 +0,0 @@
-MD5 6fd4bc7651ebccdcd384474eb557d160 transcode-1.0.1.tar.gz 2347762
diff --git a/media-video/transcode/files/digest-transcode-1.0.2 b/media-video/transcode/files/digest-transcode-1.0.2-r1
index a536ac44688c..a536ac44688c 100644
--- a/media-video/transcode/files/digest-transcode-1.0.2
+++ b/media-video/transcode/files/digest-transcode-1.0.2-r1
diff --git a/media-video/transcode/files/transcode-1.0.2-bigdir.patch b/media-video/transcode/files/transcode-1.0.2-bigdir.patch
new file mode 100644
index 000000000000..9f4413c797d6
--- /dev/null
+++ b/media-video/transcode/files/transcode-1.0.2-bigdir.patch
@@ -0,0 +1,428 @@
+This patch is needed to allow transcode to work when using big directory
+paths. Backport from upstream's directly.
+
+See Gentoo Bug #112995.
+
+--- import/iodump.c.old 2005-07-04 09:09:34.000000000 +0200
++++ import/iodump.c 2005-11-20 23:35:22.000000000 +0100
+@@ -52,139 +52,217 @@
+
+ static int verbose_flag=TC_QUIET;
+
+-static DIR *dir=NULL;
++typedef struct tcdirlist_ TCDirList;
++struct tcdirlist_ {
++ DIR *dir; /* for internal use */
++
++ const char *dir_name; /* saved base path */
++ const char *path_sep; /* optional *nix path separator */
++
++ char filename[PATH_MAX + 2];
++ /*
++ * full path of file actually under focus + optional separator +
++ * final string terminator
++ */
++ char **entries;
++ /* array of full PATHs of files in scanned dirlist */
++
++ int nfiles; /* (current) number of files in dirlist */
++ int findex; /* index of file under focus */
++ int buffered;
++ /* boolean flag: above array of file in directory is valid? */
++};
+
+-static char filename[PATH_MAX+2];
+
+-static char **rbuf_ptr;
+-
+-static int nfiles=0, findex=0, buffered=0;
+-
+-int open_directory(char *dir_name)
++static int compare_name(const void *file1_ptr, const void *file2_ptr)
+ {
+- if((dir = opendir(dir_name))==NULL) return(-1);
+- return(0);
++ return strcoll(*(const char **)file1_ptr, *(const char **)file2_ptr);
+ }
+
+-static char *scan_directory(char *dir_name)
+-{
+- struct dirent *dent;
+- char *end_of_dir;
+- int len;
+-
+- if (dir_name == 0) return NULL;
+- if (dir == 0) return NULL;
+-
+- len = strlen( dir_name );
+- end_of_dir = &dir_name[ len - 1 ];
+-
+- if ( *end_of_dir != '/' ) {
+- end_of_dir++;
+- *end_of_dir = '/';
+- end_of_dir++;
+- *end_of_dir = 0;
+- }
+-
+- switch(buffered) {
+-
+- case 0:
+-
+- while((dent = readdir( dir ))!=NULL) {
+-
+- if((strncmp(dent->d_name, ".", 1)==0) || (strcmp(dent->d_name, "..")==0))
+- continue;
+-
+- snprintf(filename, sizeof(filename), "%s%s", dir_name, dent->d_name);
++static int tc_dirlist_next(TCDirList *tcdir)
++{
++ struct dirent *dent = NULL;
++ int have_file = 0;
+
+- //counter
+- ++nfiles;
+-
+- return(filename);
+- }
+-
+- break;
+-
+- case 1:
+-
+- if (findex < nfiles) {
+- return(rbuf_ptr[findex++]);
+- } else {
+- return(NULL);
+- }
++ if (tcdir == NULL) {
++ return -1;
++ }
+
+- break;
+- }
+-
+- return(NULL);
++ do {
++ dent = readdir(tcdir->dir);
++ if (dent == NULL) {
++ break; /* all entries in dirlist have been processed */
++ }
++
++ if ((strncmp(dent->d_name, ".", 1) != 0)
++ && (strcmp(dent->d_name, "..") != 0)) {
++ /* discard special files */
++ have_file = 1;
++ }
++
++ } while (!have_file);
++
++ if (have_file) {
++ int res = snprintf(tcdir->filename, sizeof(tcdir->filename),
++ "%s%s%s", tcdir->dir_name, tcdir->path_sep,
++ dent->d_name);
++ /* enforce string terminator */
++ tcdir->filename[sizeof(tcdir->filename)] = '\0';
++ tc_test_string(__FILE__, __LINE__,
++ sizeof(tcdir->filename), res, errno);
++ return 0;
++ }
++ return 1;
+ }
+
+-
+-static int compare_name(char **file1_ptr, char **file2_ptr)
++static int tc_dirlist_sortbuf(TCDirList *tcdir)
+ {
+- return strcoll(*file1_ptr, *file2_ptr);
+-}
++ int n = 0;
+
++ if (tcdir == NULL) {
++ return -1;
++ }
+
+-int sortbuf_directory(char *dir_name)
+-{
+- struct dirent *dent;
+- char *end_of_dir;
+- int n, len;
++ tcdir->entries = malloc(tcdir->nfiles * sizeof(char *));
++ if (tcdir->entries == NULL) {
++ fprintf(stderr, "(%s) can't allocate memory for "
++ "directory entries\n", __FILE__);
++ return -1;
++ }
+
+- int (*func) ();
+-
+- if (dir_name == 0) return(-1);
+- if (dir == 0) return(-1);
+- if(nfiles == 0) return(-1);
+-
+- len = strlen( dir_name );
+- end_of_dir = &dir_name[ len - 1 ];
+-
+- if ( *end_of_dir != '/' ) {
+- end_of_dir++;
+- *end_of_dir = '/';
+- end_of_dir++;
+- *end_of_dir = 0;
+- }
+-
+- if((rbuf_ptr = (char **) calloc(nfiles, sizeof(char *)))==NULL) {
+- perror("out of memory");
+- return(-1);
+- }
+-
+- n=0;
++ while (tc_dirlist_next(tcdir) == 0) {
++ tcdir->entries[n] = strdup(tcdir->filename);
++ if (tcdir->entries[n] == NULL) {
++ fprintf(stderr, "(%s) can't memorize dirlist entry "
++ "for '%s'\n", __FILE__,
++ tcdir->filename);
++ }
++ n++;
++ }
+
+- while((dent = readdir( dir ))!=NULL) {
+-
+- if((strncmp(dent->d_name, ".", 1)==0) || (strcmp(dent->d_name, "..")==0))
+- continue;
+-
+- snprintf(filename, sizeof(filename), "%s%s", dir_name, dent->d_name);
+- rbuf_ptr[n++] = strdup(filename);
+- }
+-
+- // sorting
++ qsort(tcdir->entries, tcdir->nfiles, sizeof(char *), compare_name);
+
+- func = compare_name;
++ tcdir->buffered = 1;
++ tcdir->findex = 0;
+
+- qsort(rbuf_ptr, nfiles, sizeof(char *), func);
++ return 0;
++}
++
++static int tc_dirlist_set_path_sep(TCDirList *tcdir)
++{
++ size_t len = 0;
++ char end_of_dir;
+
+- buffered=1;
+- findex=0;
++ len = strlen(tcdir->dir_name);
++ if (len == 0) {
++ return -1;
++ }
+
+- return(0);
++ end_of_dir = tcdir->dir_name[len - 1];
++ if (end_of_dir == '/') {
++ tcdir->path_sep = "";
++ } else {
++ tcdir->path_sep = "/";
++ }
++
++ return 0;
++}
++
++static int tc_dirlist_file_count(TCDirList *tcdir)
++{
++ if (tcdir == NULL) {
++ return -1;
++ }
++ return tcdir->nfiles;
+ }
+
+
+-void close_directory()
++static int tc_dirlist_open(TCDirList *tcdir, const char *dirname)
++{
++ int ret;
++
++ if (tcdir == NULL) {
++ return -1;
++ }
++
++ tcdir->filename[0] = '\0';
++ tcdir->entries = NULL;
++ tcdir->nfiles = 0;
++ tcdir->findex = 0;
++ tcdir->buffered = 0;
++ tcdir->dir_name = dirname;
++
++ ret = tc_dirlist_set_path_sep(tcdir);
++ if (ret != 0) {
++ return ret;
++ }
++
++ tcdir->dir = opendir(dirname);
++ if (tcdir->dir == NULL) {
++ return -1;
++ }
++
++ rewinddir(tcdir->dir);
++ while (tc_dirlist_next(tcdir) == 0) {
++ tcdir->nfiles++;
++ }
++ rewinddir(tcdir->dir);
++
++ return 0;
++}
++
++static void tc_dirlist_close(TCDirList *tcdir)
+ {
+- if(dir!=NULL) closedir(dir);
+- dir=NULL;
++ if (tcdir != NULL) {
++ if (tcdir->buffered == 1) {
++ int i = 0;
++ for (i = 0; i < tcdir->nfiles; i++) {
++ if (tcdir->entries[i] != NULL) {
++ /* should be always true */
++ free(tcdir->entries[i]);
++ tcdir->nfiles--;
++ }
++ }
++
++ if (tcdir->entries != NULL) {
++ /* should be always true */
++ free(tcdir->entries);
++ }
++
++ if (tcdir->nfiles > 0) {
++ /* should never happen */
++ fprintf(stderr, "(%s) left out %i directory entries",
++ __FILE__, tcdir->nfiles);
++ }
++ }
++
++ if (tcdir->dir != NULL) {
++ closedir(tcdir->dir);
++ tcdir->dir = NULL;
++ }
++ }
+ }
+
+-void freebuf_directory()
++static char *tc_dirlist_scan(TCDirList *tcdir)
+ {
+- free(rbuf_ptr);
++ char *ret = NULL;
++
++ if (tcdir == NULL) {
++ return NULL;
++ }
++
++ if (tcdir->buffered == 0) {
++ if (tc_dirlist_next(tcdir) == 0) {
++ ret = tcdir->filename;
++ }
++ } else { /* tcdir->buffered == 0 */
++ /* buffered */
++ if (tcdir->findex < tcdir->nfiles) {
++ ret = tcdir->entries[tcdir->findex++];
++ }
++ }
++
++ return ret;
+ }
+
+ /* ------------------------------------------------------------
+@@ -203,6 +281,7 @@
+
+ info_t ipipe_avi;
+
++ TCDirList tcdir;
+ #ifdef NET_STREAM
+ struct sockaddr_in sin;
+ struct hostent *hp;
+@@ -326,13 +405,13 @@
+
+ //PASS 1: check file type - file order not important
+
+- if((open_directory(ipipe->name))<0) {
++ if(tc_dirlist_open(&tcdir, ipipe->name)<0) {
+ fprintf(stderr, "(%s) unable to open directory \"%s\"\n", __FILE__, ipipe->name);
+ exit(1);
+ } else if(verbose_flag & TC_DEBUG)
+ fprintf(stderr, "(%s) scanning directory \"%s\"\n", __FILE__, ipipe->name);
+
+- while((name=scan_directory(ipipe->name))!=NULL) {
++ while((name=tc_dirlist_scan(&tcdir))!=NULL) {
+
+ if((ipipe->fd_in = open(name, O_RDONLY))<0) {
+ perror("file open");
+@@ -386,7 +465,7 @@
+ } // check itype
+ } // process files
+
+- close_directory();
++ tc_dirlist_close(&tcdir);
+
+ if(!found) {
+ fprintf(stderr,"\nerror: no valid files found in %s\n", name);
+@@ -398,17 +477,17 @@
+
+ //PASS 2: dump files in correct order
+
+- if((open_directory(ipipe->name))<0) {
++ if(tc_dirlist_open(&tcdir, ipipe->name)<0) {
+ fprintf(stderr, "(%s) unable to sort directory entries\"%s\"\n", __FILE__, name);
+ exit(1);
+ }
+
+- if((sortbuf_directory(ipipe->name))<0) {
++ if(tc_dirlist_sortbuf(&tcdir)<0) {
+ fprintf(stderr, "(%s) unable to sort directory entries\"%s\"\n", __FILE__, name);
+ exit(1);
+ }
+
+- while((name=scan_directory(ipipe->name))!=NULL) {
++ while((name=tc_dirlist_scan(&tcdir))!=NULL) {
+
+ if((ipipe->fd_in = open(name, O_RDONLY))<0) {
+ perror("file open");
+@@ -480,9 +559,8 @@
+ close(ipipe->fd_in);
+
+ }//process files
+-
+- close_directory();
+- freebuf_directory();
++
++ tc_dirlist_close(&tcdir);
+
+ break;
+ }
+@@ -492,24 +570,25 @@
+ int fileinfo_dir(char *dname, int *fd, long *magic)
+ {
+ char *name=NULL;
++ TCDirList tcdir;
+
+ //check file type - file order not important
+
+- if((open_directory(dname))<0) {
++ if(tc_dirlist_open(&tcdir, dname)<0) {
+ fprintf(stderr, "(%s) unable to open directory \"%s\"\n", __FILE__, dname);
+ exit(1);
+ } else if(verbose_flag & TC_DEBUG)
+
+ fprintf(stderr, "(%s) scanning directory \"%s\"\n", __FILE__, dname);
+
+- if((name=scan_directory(dname))==NULL) return(-1);
++ if((name=tc_dirlist_scan(&tcdir))==NULL) return(-1);
+
+ if((*fd= open(name, O_RDONLY))<0) {
+ perror("open file");
+ return(-1);
+ }
+
+- close_directory();
++ tc_dirlist_close(&tcdir);
+
+ //first valid magic must be the same for all
+ //files to follow, but is not checked here
diff --git a/media-video/transcode/files/transcode-1.0.2-lzo2.patch b/media-video/transcode/files/transcode-1.0.2-lzo2.patch
new file mode 100644
index 000000000000..3336b9bef2b2
--- /dev/null
+++ b/media-video/transcode/files/transcode-1.0.2-lzo2.patch
@@ -0,0 +1,83 @@
+Patch to make transcode use =lzo-2* instead of old lzo-1*.
+Contributed by Daniel Black <dragonheart@gentoo.org>
+
+See Gentoo Bug #112382
+
+diff -ru transcode-1.0.2.orig/configure.in transcode-1.0.2/configure.in
+--- transcode-1.0.2.orig/configure.in 2005-10-30 15:57:45.000000000 +1100
++++ transcode-1.0.2/configure.in 2005-11-13 20:13:26.000000000 +1100
+@@ -1018,7 +1018,7 @@
+ dnl
+ dnl LZO
+ dnl
+-TC_PKG_CHECK(lzo, no, LZO, no, [lzo1x.h], lzo, lzo_version, lzo,
++TC_PKG_CHECK(lzo, no, LZO, no, [lzo1x.h], lzo2, lzo_version, lzo2,
+ [http://www.oberhumer.com/opensource/lzo/])
+ TC_PKG_HAVE(lzo, LZO)
+
+diff -ru transcode-1.0.2.orig/export/export_lzo.c transcode-1.0.2/export/export_lzo.c
+--- transcode-1.0.2.orig/export/export_lzo.c 2005-07-04 17:09:31.000000000 +1000
++++ transcode-1.0.2/export/export_lzo.c 2005-11-13 20:09:26.000000000 +1100
+@@ -84,8 +84,8 @@
+ return(TC_EXPORT_ERROR);
+ }
+
+- wrkmem = (lzo_bytep) lzo_malloc(LZO1X_1_MEM_COMPRESS);
+- out = (lzo_bytep) lzo_malloc(vob->ex_v_height*vob->ex_v_width*3*2);
++ wrkmem = (lzo_bytep) malloc(LZO1X_1_MEM_COMPRESS);
++ out = (lzo_bytep) malloc(vob->ex_v_height*vob->ex_v_width*3*2);
+
+ if (wrkmem == NULL || out == NULL) {
+ printf("[%s] out of memory\n", MOD_NAME);
+@@ -270,8 +270,8 @@
+
+ if(param->flag == TC_VIDEO) {
+
+- lzo_free(wrkmem);
+- lzo_free(out);
++ free(wrkmem);
++ free(out);
+
+ return(0);
+ }
+diff -ru transcode-1.0.2.orig/import/decode_lzo.c transcode-1.0.2/import/decode_lzo.c
+--- transcode-1.0.2.orig/import/decode_lzo.c 2005-07-04 17:09:33.000000000 +1000
++++ transcode-1.0.2/import/decode_lzo.c 2005-11-13 20:09:26.000000000 +1100
+@@ -65,9 +65,9 @@
+ goto decoder_error;
+ }
+
+- wrkmem = (lzo_bytep) lzo_malloc(LZO1X_1_MEM_COMPRESS);
+- out = (lzo_bytep) lzo_malloc(BUFFER_SIZE);
+- inbuf = (lzo_bytep) lzo_malloc(BUFFER_SIZE);
++ wrkmem = (lzo_bytep) malloc(LZO1X_1_MEM_COMPRESS);
++ out = (lzo_bytep) malloc(BUFFER_SIZE);
++ inbuf = (lzo_bytep) malloc(BUFFER_SIZE);
+
+ if (wrkmem == NULL || out == NULL) {
+ fprintf(stderr, "[%s] out of memory\n", MOD_NAME);
+diff -ru transcode-1.0.2.orig/import/import_lzo.c transcode-1.0.2/import/import_lzo.c
+--- transcode-1.0.2.orig/import/import_lzo.c 2005-07-04 17:09:33.000000000 +1000
++++ transcode-1.0.2/import/import_lzo.c 2005-11-13 20:09:26.000000000 +1100
+@@ -117,8 +117,8 @@
+ return(TC_IMPORT_ERROR);
+ }
+
+- wrkmem = (lzo_bytep) lzo_malloc(LZO1X_1_MEM_COMPRESS);
+- out = (lzo_bytep) lzo_malloc(BUFFER_SIZE);
++ wrkmem = (lzo_bytep) malloc(LZO1X_1_MEM_COMPRESS);
++ out = (lzo_bytep) malloc(BUFFER_SIZE);
+
+ if (wrkmem == NULL || out == NULL) {
+ printf("[%s] out of memory\n", MOD_NAME);
+@@ -236,8 +236,8 @@
+
+ if(param->flag == TC_VIDEO) {
+
+- lzo_free(wrkmem);
+- lzo_free(out);
++ free(wrkmem);
++ free(out);
+
+ if(avifile2!=NULL) {
+ AVI_close(avifile2);