summaryrefslogtreecommitdiff
path: root/Tools/xtvrc2vdr/xtvrc2vdr.c
diff options
context:
space:
mode:
Diffstat (limited to 'Tools/xtvrc2vdr/xtvrc2vdr.c')
-rw-r--r--Tools/xtvrc2vdr/xtvrc2vdr.c146
1 files changed, 146 insertions, 0 deletions
diff --git a/Tools/xtvrc2vdr/xtvrc2vdr.c b/Tools/xtvrc2vdr/xtvrc2vdr.c
new file mode 100644
index 0000000..772db66
--- /dev/null
+++ b/Tools/xtvrc2vdr/xtvrc2vdr.c
@@ -0,0 +1,146 @@
+/*
+ * * xtvrc2vdr.c: Converts 'xtvrc' files to 'vdr' channel format
+ * *
+ * * Copyright (C) 2000 Plamen Ganev
+ * *
+ * * This program is free software; you can redistribute it and/or
+ * * modify it under the terms of the GNU General Public License
+ * * as published by the Free Software Foundation; either version 2
+ * * of the License, or (at your option) any later version.
+ * *
+ * * This program is distributed in the hope that it will be useful,
+ * * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * * GNU General Public License for more details.
+ * *
+ * * You should have received a copy of the GNU General Public License
+ * * along with this program; if not, write to the Free Software
+ * * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ * * Or, point your browser to http://www.gnu.org/copyleft/gpl.html
+ * *
+ * * The author can be reached at pganev@comm.it
+ * *
+ * */
+
+
+#include <stdio.h>
+#include <ctype.h>
+#include <string.h>
+#include <stdlib.h>
+
+#define MAX_LINE_LEN 1024
+#define MAX_NAME 100
+#define TOKS ": \n\r"
+#define NAMETOKS ":\n\r"
+
+typedef struct {
+ char Name[MAX_NAME+1];
+ int freq;
+ int color, hue, bright, saturation ;
+ int nitv, input ;
+ int pol, srate, fec, vpid, apid, lnbnum, type;
+} CHANNEL_DATA ;
+
+void strlwr( char *s ){
+ while ( s && *s ){
+ *s = tolower(*s);
+ s++;
+ }
+}
+
+int ReadChannel( FILE *f, CHANNEL_DATA *channel ) {
+ static char s[MAX_LINE_LEN+1];
+ char *p;
+
+ memset( channel, sizeof( CHANNEL_DATA ), 0 ) ;
+
+ while ((p=fgets( s, MAX_LINE_LEN, f ))!=NULL){
+// printf("%s", s ) ;
+ if (s[0] == '*')
+ break ;
+ }
+
+ if ( !p ) { /* EOF? */
+// printf("EOF\n");
+ return 0 ;
+ }
+
+ while (fgets( s, MAX_LINE_LEN, f )){
+ if ( s[0] == '\n' )
+ return channel->freq ? 1 : 0;
+ p = strtok( s, TOKS ) ;
+ if ( !p ) {
+ return 0;
+ }
+ strlwr( p ) ;
+ if ( !strcmp( p, "channel" )){
+ p=strtok( NULL, NAMETOKS );
+ while ( p && *p==' ')
+ p++;
+ strcpy( channel->Name, p );
+// printf("%d ", channel->freq ) ;
+ } else if ( !strcmp( p, "frequency")) {
+ channel->freq = atoi( p=strtok( NULL, TOKS ));
+// printf("%d ", channel->freq ) ;
+ } else if ( !strcmp( p, "cbhc")) {
+ channel->color = atoi(p=strtok(NULL,TOKS));
+ channel->hue = atoi(p=strtok(NULL,TOKS));
+ channel->bright = atoi(p=strtok(NULL,TOKS));
+ channel->saturation = atoi(p=strtok(NULL,TOKS));
+ } else if ( !strcmp( p, "ni")) {
+ channel->nitv = atoi(p=strtok(NULL,TOKS));
+ channel->input = atoi(p=strtok(NULL,TOKS));
+ } else if ( !strcmp( p, "sat")) {
+ channel->pol = atoi(p=strtok(NULL,TOKS));
+ channel->srate = atoi(p=strtok(NULL,TOKS));
+ channel->fec = atoi(p=strtok(NULL,TOKS));
+ channel->vpid = atoi(p=strtok(NULL,TOKS));
+ channel->apid = atoi(p=strtok(NULL,TOKS));
+ channel->lnbnum = atoi(p=strtok(NULL,TOKS));
+ channel->type = atoi(p=strtok(NULL,TOKS));
+ } else
+ printf("Unknown token %s\n", p ) ;
+ }
+ return 1 ;
+}
+
+int main ( int argc, char *argv[] ){
+ FILE *f, *fo ;
+ int cnt = 0;
+ CHANNEL_DATA channel ;
+
+ if ( argc != 3 ){
+ printf("USAGE: %s <xtvrc file> <vdr file>\n\n", argv[0] ) ;
+ return 0;
+ }
+
+ if ( !(f=fopen(argv[1], "rt"))){
+ printf("Can't open %s for reading\n\n", argv[1]);
+ return 0;
+ }
+
+ if ( !(fo=fopen(argv[2], "wt"))){
+ printf("Can't open %s for writing\n\n", argv[2]);
+ return 0;
+ }
+
+ while ( ReadChannel( f, &channel ) ) {
+ cnt++;
+ fprintf(fo, "%s:%d:%c:%d:%d:%d:%d:%d:%d\n",
+ channel.Name ,
+ channel.freq ,
+ channel.pol ? 'v' : 'h' ,
+ 1, //channel.lnbnum ,
+ channel.srate ,
+ channel.vpid ,
+ channel.apid ,
+ 0, //channel.type ,
+ 0 ); //channel.fec ) ;
+ }
+
+ printf( "%d channels read.\n\n", cnt ) ;
+
+ fclose(f);
+ fclose(fo);
+ return 1;
+}