Update of /cvsroot/freevo/freevo/WIP/Thomas
In directory sc8-pr-cvs1:/tmp/cvs-serv14451

Modified Files:
        Makefile timeshifter.c tserrors.h 
Added Files:
        frequencies.c frequencies.h 
Log Message:
Added Thomas' channel changing patch. Allows the timeshifter to change
channels without using external tools. Not used anywhere yet.


--- NEW FILE: frequencies.c ---
#include <stdlib.h>

#include "frequencies.h"

/* --------------------------------------------------------------------- */

/* US broadcast */
static struct CHANLIST ntsc_bcast[] = {
    { "2",       55250 },
    { "3",       61250 },
    { "4",       67250 },
    { "5",       77250 },
    { "6",       83250 },
    { "7",      175250 },
    { "8",      181250 },
    { "9",      187250 },
    { "10",     193250 },
    { "11",     199250 },
    { "12",     205250 },
[...1208 lines suppressed...]
    {  3, "japan-bcast" },
    {  4, "japan-cable" },
    {  5, "europe-west" },
    {  6, "europe-east" },
    {  7, "italy" },
    {  8, "newzealand" },
    {  9, "australia" },
    { 10, "ireland" },
    { 11, "france" },
    { 12, "china-bcast" },      
    { 13, "southafrica" },
    { 14, "argentina" },
    { 15, "canada-cable" },
    { -1, NULL }
};

int                chantab   = 5;
struct CHANLIST   *chanlist  = europe_west;
int                chancount = CHAN_COUNT(europe_west);


--- NEW FILE: frequencies.h ---
/*
 * Worldwide channel/frequency list
 *
 * Nathan Laredo ([EMAIL PROTECTED])
 *
 * Frequencies are given in kHz 
 */
#define NTSC_AUDIO_CARRIER      4500
#define PAL_AUDIO_CARRIER_I     6000
#define PAL_AUDIO_CARRIER_BGHN  5500
#define PAL_AUDIO_CARRIER_MN    4500
#define PAL_AUDIO_CARRIER_D     6500
#define SEACAM_AUDIO_DKK1L      6500
#define SEACAM_AUDIO_BG         5500
/* NICAM 728 32-kHz, 14-bit digital stereo audio is transmitted in 1ms frames
   containing 8 bits frame sync, 5 bits control, 11 bits additional data, and
   704 bits audio data.  The bit rate is reduced by transmitting only 10 bits
   plus parity of each 14 bit sample, the largest sample in a frame determines
   which 10 bits are transmitted.  The parity bits for audio samples also 
   specify the scaling factor used for that channel during that frame.  The
   companeded audio data is interleaved to reduce the influence of dropouts
   and the whole frame except for sync bits is scrambled for spectrum shaping.
   Data is modulated using QPSK, at below following subcarrier freqs */
#define NICAM728_PAL_BGH        5850
#define NICAM728_PAL_I          6552

/* COMPREHENSIVE LIST OF FORMAT BY COUNTRY
   (M) NTSC used in:
        Antigua, Aruba, Bahamas, Barbados, Belize, Bermuda, Bolivia, Burma,
        Canada, Chile, Colombia, Costa Rica, Cuba, Curacao, Dominican Republic,
        Ecuador, El Salvador, Guam Guatemala, Honduras, Jamaica, Japan,
        South Korea, Mexico, Montserrat, Myanmar, Nicaragua, Panama, Peru,
        Philippines, Puerto Rico, St Christopher and Nevis, Samoa, Suriname,
        Taiwan, Trinidad/Tobago, United States, Venezuela, Virgin Islands
   (B) PAL used in:
        Albania, Algeria, Australia, Austria, Bahrain, Bangladesh, Belgium,
        Bosnia-Herzegovinia, Brunei Darussalam, Cambodia, Cameroon, Croatia,
        Cyprus, Denmark, Egypt, Ethiopia, Equatorial Guinea, Finland, Germany,
        Ghana, Gibraltar, Greenland, Iceland, India, Indonesia, Israel, Italy,
        Jordan, Kenya, Kuwait, Liberia, Libya, Luxembourg, Malaysa, Maldives,
        Malta, Nepal, Netherlands, New Zeland, Nigeria, Norway, Oman, Pakistan,
        Papua New Guinea, Portugal, Qatar, Sao Tome and Principe, Saudi Arabia,
        Seychelles, Sierra Leone, Singapore, Slovenia, Somali, Spain,
        Sri Lanka, Sudan, Swaziland, Sweden, Switzeland, Syria, Thailand,
        Tunisia, Turkey, Uganda, United Arab Emirates, Yemen
   (N) PAL used in: (Combination N = 4.5MHz audio carrier, 3.58MHz burst)
        Argentina (Combination N), Paraguay, Uruguay
   (M) PAL (525/60, 3.57MHz burst) used in:
        Brazil
   (G) PAL used in:
        Albania, Algeria, Austria, Bahrain, Bosnia/Herzegovinia, Cambodia,
        Cameroon, Croatia, Cyprus, Denmark, Egypt, Ethiopia, Equatorial Guinea,
        Finland, Germany, Gibraltar, Greenland, Iceland, Israel, Italy, Jordan,
        Kenya, Kuwait, Liberia, Libya, Luxembourg, Malaysia, Monaco,
        Mozambique, Netherlands, New Zealand, Norway, Oman, Pakistan,
        Papa New Guinea, Portugal, Qatar, Romania, Sierra Leone, Singapore,
        Slovenia, Somalia, Spain, Sri Lanka, Sudan, Swaziland, Sweeden,
        Switzerland, Syria, Thailand, Tunisia, Turkey, United Arab Emirates,
        Yemen, Zambia, Zimbabwe
   (D) PAL used in:
        China, North Korea, Romania, Czech Republic
   (H) PAL used in:
        Belgium
   (I) PAL used in:
        Angola, Botswana, Gambia, Guinea-Bissau, Hong Kong, Ireland, Lesotho,
        Malawi, Nambia, Nigeria, South Africa, Tanzania, United Kingdom,
        Zanzibar
   (B) SECAM used in:
        Djibouti, Greece, Iran, Iraq, Lebanon, Mali, Mauritania, Mauritus,
        Morocco
   (D) SECAM used in:
        Afghanistan, Armenia, Azerbaijan, Belarus, Bulgaria,
        Estonia, Georgia, Hungary, Zazakhstan, Lithuania, Mongolia, Moldova,
        Russia, Slovak Republic, Ukraine, Vietnam
   (G) SECAM used in:
        Greecem Iran, Iraq, Mali, Mauritus, Morocco, Saudi Arabia
   (K) SECAM used in:
        Armenia, Azerbaijan, Bulgaria, Estonia, Georgia,
        Hungary, Kazakhstan, Lithuania, Madagascar, Moldova, Poland, Russia,
        Slovak Republic, Ukraine, Vietnam
   (K1) SECAM used in:
        Benin, Burkina Faso, Burundi, Chad, Cape Verde, Central African
        Republic, Comoros, Congo, Gabon, Madagascar, Niger, Rwanda, Senegal,
        Togo, Zaire
   (L) SECAM used in:
        France
*/

/* --------------------------------------------------------------------- */

struct CHANLIST {
    char *name;
    int   freq;
};

struct CHANLISTS {
    char             *name;
    struct CHANLIST  *list;
    int               count;
};

#define CHAN_COUNT(x) (sizeof(x)/sizeof(struct CHANLIST))

/* --------------------------------------------------------------------- */

struct STRTAB {
   int num;
   char *name;
};

extern struct CHANLISTS   chanlists[];
extern struct STRTAB chanlist_names[];

extern int                chantab;
extern struct CHANLIST   *chanlist;
extern int                chancount;

Index: Makefile
===================================================================
RCS file: /cvsroot/freevo/freevo/WIP/Thomas/Makefile,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** Makefile    2 Mar 2003 06:07:12 -0000       1.2
--- Makefile    2 Mar 2003 22:05:33 -0000       1.3
***************
*** 9,16 ****
  
  timeshifter:
!       $(CC) $(CFLAGS) -c timeshifter.c
  
  link:
!       $(CC) $(CFLAGS) -o timeshifter timeshifter.o
  clean:
        -rm *.o  
--- 9,19 ----
  
  timeshifter:
!       $(CC) $(CFLAGS) -c frequencies.c timeshifter.c
! 
! chchan:
!       $(CC) $(CFLAGS) -c chchan.c
  
  link:
!       $(CC) $(CFLAGS) -o timeshifter frequencies.o timeshifter.o
  clean:
        -rm *.o  

Index: timeshifter.c
===================================================================
RCS file: /cvsroot/freevo/freevo/WIP/Thomas/timeshifter.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** timeshifter.c       2 Mar 2003 06:07:12 -0000       1.1
--- timeshifter.c       2 Mar 2003 22:05:33 -0000       1.2
***************
*** 4,7 ****
--- 4,8 ----
  #include <fcntl.h>
  #include <sys/stat.h>
+ #include <sys/ioctl.h> 
  #include <string.h>
  #include <stdio.h>
***************
*** 10,17 ****
  #include <errno.h>
  #include "tserrors.h"
  
  static pid_t    *childpid = NULL;
  /* ptr to array allocated at run-time */
! static int      maxfd;  /* from our open_max(), {Prog openmax} */
  
  #define SHELL   "/bin/sh"
--- 11,21 ----
  #include <errno.h>
  #include "tserrors.h"
+ #include "frequencies.h"
+ #include <linux/videodev.h> 
+ 
  
  static pid_t    *childpid = NULL;
  /* ptr to array allocated at run-time */
! static int      maxfd;  /* TODO Get this from the system */
  
  #define SHELL   "/bin/sh"
***************
*** 26,99 ****
  int popen2(const char *cmdstring, FILE** pfIn, FILE** pfOut)
  {
!     int         i, pfr[2], pfw[2];
!     pid_t       pid;
!     
!     if (childpid == NULL) {             /* first time through */
!         /* allocate zeroed out array for child pids */
!         maxfd = 100;
!         if ( (childpid = calloc(maxfd, sizeof(pid_t))) == NULL)
!             return(0);
      }
!     
!     if (pipe(pfr) < 0)
!         return(0);      /* errno set by pipe() */
!     if (pipe(pfw) < 0)
!         return(0);      /* errno set by pipe() */
!     
!     if ( (pid = fork()) < 0)
!         return(0);      /* errno set by fork() */
!     else if (pid == 0) {                                                        
!         /* child */
!         close(pfr[0]);
!         if (pfr[1] != STDOUT_FILENO) {
!             dup2(pfr[1], STDOUT_FILENO);
!             close(pfr[1]);
!         }
!         close(pfw[1]);
!         if (pfw[0] != STDIN_FILENO) {
!             dup2(pfw[0], STDIN_FILENO);
!             close(pfw[0]);
!         }
!         /* close all descriptors in childpid[] */
!         for (i = 0; i < maxfd; i++) {
!             if (childpid[i] > 0)
!                 close(i);
!         }
!         execl(SHELL, "sh", "-c", cmdstring, (char *) 0);
!         _exit(127);
      }
!     /* parent */
!     close(pfr[1]);
!     if ( (*pfOut = fdopen(pfr[0], "r")) == NULL)
!         return(0);
!     close(pfw[0]);
!     if ( (*pfIn = fdopen(pfw[1], "w")) == NULL)
!         return(0);
!     childpid[fileno(*pfOut)] = pid;     /* remember child pid for this fd */
!     childpid[fileno(*pfIn)] = pid;
!     return 1;
  }
  
  int pclose2(FILE *fp)
  {
!     int         fd, stat;
!     pid_t       pid;
!     
!     if (childpid == NULL)
!         return(-1);             /* popen() has never been called */
!     
!     fd = fileno(fp);
!     if ( (pid = childpid[fd]) == 0)
!         return(-1);             /* fp wasn't opened by popen() */
!     
!     childpid[fd] = 0;
!     if (fclose(fp) == EOF)
!         return(-1);
!     
!     while (waitpid(pid, &stat, 0) < 0)
!         if (errno != EINTR)
!             return(-1); /* error other than EINTR from waitpid() */
!         
!         return(stat);   /* return child's termination status */
  }
  
--- 30,103 ----
  int popen2(const char *cmdstring, FILE** pfIn, FILE** pfOut)
  {
!   int         i, pfr[2], pfw[2];
!   pid_t       pid;
! 
!   if (childpid == NULL) {             /* first time through */
!     /* allocate zeroed out array for child pids */
!     maxfd = 100;
!     if ( (childpid = calloc(maxfd, sizeof(pid_t))) == NULL)
!       return(0);
!   }
! 
!   if (pipe(pfr) < 0)
!     return(0);      /* errno set by pipe() */
!   if (pipe(pfw) < 0)
!     return(0);      /* errno set by pipe() */
! 
!   if ( (pid = fork()) < 0)
!     return(0);      /* errno set by fork() */
!   else if (pid == 0) {                                                        
!     /* child */
!     close(pfr[0]);
!     if (pfr[1] != STDOUT_FILENO) {
!       dup2(pfr[1], STDOUT_FILENO);
!       close(pfr[1]);
      }
!     close(pfw[1]);
!     if (pfw[0] != STDIN_FILENO) {
!       dup2(pfw[0], STDIN_FILENO);
!       close(pfw[0]);
      }
!     /* close all descriptors in childpid[] */
!     for (i = 0; i < maxfd; i++) {
!       if (childpid[i] > 0)
!         close(i);
!     }
!     execl(SHELL, "sh", "-c", cmdstring, (char *) 0);
!     _exit(127);
!   }
!   /* parent */
!   close(pfr[1]);
!   if ( (*pfOut = fdopen(pfr[0], "r")) == NULL)
!     return(0);
!   close(pfw[0]);
!   if ( (*pfIn = fdopen(pfw[1], "w")) == NULL)
!     return(0);
!   childpid[fileno(*pfOut)] = pid;     /* remember child pid for this fd */
!   childpid[fileno(*pfIn)] = pid;
!   return 1;
  }
  
  int pclose2(FILE *fp)
  {
!   int         fd, stat;
!   pid_t       pid;
! 
!   if (childpid == NULL)
!     return(-1);             /* popen() has never been called */
! 
!   fd = fileno(fp);
!   if ( (pid = childpid[fd]) == 0)
!     return(-1);             /* fp wasn't opened by popen() */
! 
!   childpid[fd] = 0;
!   if (fclose(fp) == EOF)
!     return(-1);
! 
!   while (waitpid(pid, &stat, 0) < 0)
!     if (errno != EINTR)
!       return(-1); /* error other than EINTR from waitpid() */
! 
!   return(stat);   /* return child's termination status */
  }
  
***************
*** 148,154 ****
    if ( msync( ts, pHeader->file_size, MS_SYNC ) == -1 )
    { 
!     printf( "Error in msync.\n" ) ;
    }
! //  printf( "WP: %d\n", pHeader->writepointer ) ;
    return size ;
  }
--- 152,158 ----
    if ( msync( ts, pHeader->file_size, MS_SYNC ) == -1 )
    { 
!     fprintf( stderr, "Error in msync.\n" ) ;
    }
!   //  fprintf( stderr, "WP: %d\n", pHeader->writepointer ) ;
    return size ;
  }
***************
*** 185,188 ****
--- 189,249 ----
  }
  
+ float get_freq (char *name, char *channel)
+ {
+   int i, j;
+   float freq = 0.0;
+   i = 0;
+   while (chanlists[i].name != (char *) NULL) 
+   {
+     /* fprintf (stderr, "Searching for %s: got %s\n", name, chanlists[i].name);  */
+ 
+     /* Do the names match? */
+ 
+     if (strcasecmp (chanlists[i].name, name) == 0) 
+     {
+       /* Yep, try to find the channel */
+       for (j = 0; j < chanlists[i].count; j++) 
+       {
+         /* fprintf( stderr, "matching %s with %s\n", channel, 
chanlists[i].list[j].name ) ; */
+         if (strcasecmp (chanlists[i].list[j].name, channel) == 0) 
+         {
+           fprintf (stderr, "Channel frequency = %d kHz\n",
+             chanlists[i].list[j].freq); 
+           freq = ((float) chanlists[i].list[j].freq) / 1000.0;
+           return (freq);
+         }
+       }
+       fprintf (stderr, "Couldn't find channel %s for the broadcast standard %s in "
+         "the table!\n", channel, name);
+       return (0.0);
+     }
+     i++;
+   }
+   fprintf (stderr, "Couldn't find broadcast standard %s in the table!\n", name);
+   return (0.0);
+ } 
+ 
+ int setchannel( char* device, char* channel, char* norm, char* list, char* input )
+ {
+   /* By Aubin Paul */
+   float freq ;
+   int fd ;
+   int iError ;
+   freq = get_freq( list, channel ) ;
+   if ( freq == 0.0 )
+   {
+     /* Error */
+     return TS_SYSTEM_ERROR ;
+   }
+   fd = open(device, O_TRUNC) ; 
+   if ( fd < 0 )
+   {
+     fprintf( stderr, "Opening v4l-device %s failed.", device ) ;
+     return TS_SYSTEM_ERROR ;
+   }
+   iError = ioctl(fd, VIDIOCSFREQ, &freq) ;
+   return TS_OK ;
+ }
+ 
  #define ISCMD(x,y) strncmp( x, y, strlen(y) ) == 0
  
***************
*** 190,194 ****
  {
    /* This is not the most beautiful way to 
!      do it. But it will do OK. */
    if ( ISCMD( command, "JOIN" ) )
    {
--- 251,255 ----
  {
    /* This is not the most beautiful way to 
!   do it. But it will do OK. */
    if ( ISCMD( command, "JOIN" ) )
    {
***************
*** 209,213 ****
    else if ( ISCMD( command, "CHANNEL" ) )
    {
!     return TS_NOT_IMPLEMENTED ;
    }
    else if ( ISCMD( command, "FREQUENCY") )
--- 270,295 ----
    else if ( ISCMD( command, "CHANNEL" ) )
    {
!     char* cmd = malloc( strlen( command )-7 ) ;
!     char *channel, *norm, *list, *input, *device ;
!     if ( !cmd ) return TS_OUTOFMEM ;
!     strcpy( cmd, command+7 ) ;
!     device = strtok( cmd, " " ) ;
!     channel = strtok( NULL, " " ) ;
!     norm = strtok( NULL, " " ) ;
!     list = strtok( NULL, " " ) ;
!     input = strtok( NULL, "\n" ) ;
!     if ( !device || !channel || !norm || !list || !input || !*device || !*channel || 
!*norm || !*list || !*input )
!     {
!       fprintf( stderr, "Error parsing: %s", command + 7 ) ;
!       free( cmd ) ;
!       return TS_SYNTAX_ERROR ;
!     }
!     else {
!       int iRet ;
!       fprintf( stderr, "setchannel device=%s channel=%s norm=%s list=%s input=%s\n", 
device, channel, norm, list, input ) ;
!       iRet = setchannel( device, channel, norm, list, input ) ;
!       free( cmd ) ;
!       return iRet ;
!     }
    }
    else if ( ISCMD( command, "FREQUENCY") )
***************
*** 215,219 ****
      return TS_NOT_IMPLEMENTED ;
    }
!   
    return TS_UNKNOWN_COMMAND ;
  }
--- 297,301 ----
      return TS_NOT_IMPLEMENTED ;
    }
! 
    return TS_UNKNOWN_COMMAND ;
  }
***************
*** 231,238 ****
    if ( pnum != 3 )
    {
!      printf( "Usage: %s <file> <size>\n", params[0] ) ;
!      printf( "  <file> name of the buffer-file.\n" ) ;
!      printf( "  <size> size to allocate for the buffer-file.\n" ) ;
!      exit(-1) ;
    } 
    fsize = atoi( params[2] ) ;
--- 313,320 ----
    if ( pnum != 3 )
    {
!     printf( "Usage: %s <file> <size>\n", params[0] ) ;
!     printf( "  <file> name of the buffer-file.\n" ) ;
!     printf( "  <size> size to allocate for the buffer-file.\n" ) ;
!     exit(-1) ;
    } 
    fsize = atoi( params[2] ) ;
***************
*** 252,257 ****
      if ( fpOut ) 
      {
!       FD_SET( fileno(fpOut), &rfds ) ;
!       fdmax = (fileno(fpOut)>fdmax) ? fileno(fpOut) : fdmax ;
      }
      tv.tv_sec = TIMEOUTSECS ;
--- 334,339 ----
      if ( fpOut ) 
      {
!       FD_SET( fileno(fpOut), &rfds ) ;
!       fdmax = (fileno(fpOut)>fdmax) ? fileno(fpOut) : fdmax ;
      }
      tv.tv_sec = TIMEOUTSECS ;
***************
*** 259,299 ****
      int retval = select( fdmax+1, &rfds, NULL, NULL, &tv ) ;
      switch ( retval ) {
!     default:
!       if ( FD_ISSET( 0, &rfds ) )
        {
!       int result ;
!         char buffer[401] ;
!         fgets( buffer, 400, stdin ) ; buffer[400] = 0 ;
!       result = inter( buffer ) ;
!       fprintf( stdout, "%.3d %s\n", result, TS_ERROR(result) ) ; fflush( stdout ) ; 
!       }      
!       
!       if ( fpOut && ( FD_ISSET( fileno(fpOut), &rfds ) ) )
        {
!         readBytes = fread( buffer, 1, sizeof( buffer ), fpOut ) ;
!         if ( readBytes > 0 ) 
!         {
!           ts_write( pMaster, buffer, readBytes ) ;
!         }
!         else if ( ( readBytes <= 0 ) && ( ferror( fpOut ) ) )
!         {
!           printf( "Read Error\n" ) ; fflush( stdout ) ;
!           bRun = 0 ;
!         }
!         else if ( ( readBytes <= 0 ) && ( feof( fpOut ) ) )
!         {
!         fprintf( stdout, "%.3d %s\n", TS_CLIENT_EOF, TS_ERROR(TS_CLIENT_EOF) ) ; 
fflush( stdout ) ;
!         pclose2( fpOut ) ;
!         fpOut = NULL ;
!         }
        }
!       break ;
!     case 0:
!       fprintf( stderr, "No Data for %d.%.3d seconds. Still sleeping.\n", 
TIMEOUTSECS, TIMEOUTMILLI ) ; 
!       break ;
!     case -1:
!       fprintf( stderr, "Select Error.\n" ) ; 
!       bRun = 0 ;
!       break ;
      }
    }
--- 341,381 ----
      int retval = select( fdmax+1, &rfds, NULL, NULL, &tv ) ;
      switch ( retval ) {
!   default:
!     if ( FD_ISSET( 0, &rfds ) )
!     {
!       int result ;
!       char buffer[401] ;
!       fgets( buffer, 400, stdin ) ; buffer[400] = 0 ;
!       result = inter( buffer ) ;
!       fprintf( stdout, "%.3d %s\n", result, TS_ERROR(result) ) ; fflush( stdout ) ; 
!     }      
! 
!     if ( fpOut && ( FD_ISSET( fileno(fpOut), &rfds ) ) )
!     {
!       readBytes = fread( buffer, 1, sizeof( buffer ), fpOut ) ;
!       if ( readBytes > 0 ) 
        {
!         ts_write( pMaster, buffer, readBytes ) ;
!       }
!       else if ( ( readBytes <= 0 ) && ( ferror( fpOut ) ) )
        {
!         printf( "Read Error\n" ) ; fflush( stdout ) ;
!         bRun = 0 ;
        }
!       else if ( ( readBytes <= 0 ) && ( feof( fpOut ) ) )
!       {
!         fprintf( stdout, "%.3d %s\n", TS_CLIENT_EOF, TS_ERROR(TS_CLIENT_EOF) ) ; 
fflush( stdout ) ;
!         pclose2( fpOut ) ;
!         fpOut = NULL ;
!       }
!     }
!     break ;
!   case 0:
!     fprintf( stderr, "No Data for %d.%.3d seconds. Still sleeping.\n", TIMEOUTSECS, 
TIMEOUTMILLI ) ; 
!     break ;
!   case -1:
!     fprintf( stderr, "Select Error.\n" ) ; 
!     bRun = 0 ;
!     break ;
      }
    }

Index: tserrors.h
===================================================================
RCS file: /cvsroot/freevo/freevo/WIP/Thomas/tserrors.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** tserrors.h  2 Mar 2003 06:07:12 -0000       1.1
--- tserrors.h  2 Mar 2003 22:05:34 -0000       1.2
***************
*** 4,11 ****
  const char * ERRORTEXT[] = { "OK", 
                             "ALREADY RUNNING",
!                              "SYSTEM ERROR",
                             "NOT IMPLEMENTED",
                             "UNKNOWN COMMAND", 
!                            "EOF FROM CLIENT"
                              };
  
--- 4,13 ----
  const char * ERRORTEXT[] = { "OK", 
                             "ALREADY RUNNING",
!                  "SYSTEM ERROR",
                             "NOT IMPLEMENTED",
                             "UNKNOWN COMMAND", 
!                            "EOF FROM CLIENT",
!                                "OUT OF MEMORY",
!                                "SYNTAX ERROR"
                              };
  
***************
*** 17,21 ****
        TS_NOT_IMPLEMENTED,
        TS_UNKNOWN_COMMAND,
!       TS_CLIENT_EOF
        } ERROR ;
  
--- 19,25 ----
        TS_NOT_IMPLEMENTED,
        TS_UNKNOWN_COMMAND,
!       TS_CLIENT_EOF,
!       TS_OUTOFMEM,
!       TS_SYNTAX_ERROR
        } ERROR ;
  




-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf
_______________________________________________
Freevo-cvslog mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/freevo-cvslog

Reply via email to