Revision:
7:f652d1e054e9
Parent:
6:be954c212733
--- a/Shoutcast.cpp	Fri Jan 28 11:53:55 2011 +0000
+++ b/Shoutcast.cpp	Sun Jan 30 21:33:12 2011 +0000
@@ -158,7 +158,7 @@
     return GetChannel(name, length, _currentChannel);
 }
 
-int Shoutcast::TuneIn(IpAddr* address, int* port) {
+int Shoutcast::TuneIn(IpAddr* address, int* port, char * path, const int length) {
     char buf[10];
     sprintf(buf,"%d",GetChannelId(_currentChannel));
      
@@ -176,7 +176,7 @@
         return 1;
     }
     _currentAddress = 0;
-    return GetAddressData(address,port,0);
+    return GetAddressData(address,port,path,length,0);
 }
 
 
@@ -373,9 +373,9 @@
     char * cp;
     char * cp2;
     IpAddr addr;
+    int k=0;
     while(!finished) {
         finished = (fgets(_big_buffer, _big_buffer_size-1, _fpin) == NULL);
-        
         //suchen nach 
         cp = strstr(_big_buffer,"=http://");
         if(cp!= NULL)
@@ -397,12 +397,26 @@
                 }
                 else
                 {
-                cp = NULL;
-                finished = true;
+                    cp = NULL;
                 }
                 int port = atoi(cp2+1);
-                fprintf(_fpout, "%d %d %d %d %d\r\n",
-                       addr[0],addr[1],addr[2],addr[3],port);
+                cp = strstr(cp2+1,"/");
+                if(cp == NULL)
+                {
+                    _small_buffer[0] = '/';
+                    _small_buffer[1] = 0x00;
+                }
+                else
+                {
+                    int j=0;
+                    while(cp[j]!=0x0a)
+                        j++;
+                    
+                    cp[j] = 0x00;
+                    strcpy (_small_buffer,cp);
+                }
+                fprintf(_fpout, "%d %d %d %d %d %s\r\n",
+                       addr[0],addr[1],addr[2],addr[3],port,_small_buffer);
                 _maxAddress++;
             }
         }
@@ -415,6 +429,7 @@
     return 0;
 }
 int Shoutcast::ResolveDNSRequest(IpAddr* addr, char * url){
+//TODO: instanzvaraible, setOnReplay im Konstruktor
     DNSRequest * request = new DNSRequest();
     request->setOnReply(this, &Shoutcast::onReply);
 
@@ -439,7 +454,7 @@
      return 0;
 }
 
-int Shoutcast::GetAddressData(IpAddr* address, int* port, int addressNumber) {
+int Shoutcast::GetAddressData(IpAddr* address, int* port, char * path, const int length, int addressNumber) {
 
     if(_maxAddress == 0) return -1;
     if(addressNumber > _maxAddress) return -1;
@@ -452,11 +467,11 @@
     while(!finished) {
         finished = (fgets(_big_buffer, _big_buffer_size-1, _fpin) == NULL);
         if(line == addressNumber){
-            int ip1 = 0;int ip2 = 0;int ip3 = 0;int ip4 = 0;int p = 0;
-            sscanf (_big_buffer,"%d %d %d %d %d",&ip1,&ip2,&ip3,&ip4,&p);
+            int ip1 = 0;int ip2 = 0;int ip3 = 0;int ip4 = 0;
+            sscanf (_big_buffer,"%d %d %d %d %d %s",&ip1,&ip2,&ip3,&ip4,port,path);
             IpAddr server = IpAddr(ip1,ip2,ip3,ip4);
             *address = server;
-            *port = p;
+            //*path = _small_buffer[0]; //TODO: Length
             finished = true;
         }
         line++;
@@ -472,7 +487,7 @@
              completed_dns=-1;
      };
 
-int Shoutcast::GetNextAddress(IpAddr* address, int* port)
+int Shoutcast::GetNextAddress(IpAddr* address, int* port, char * path, const int length)
 {
     if(_currentAddress < _maxAddress - 1 )
     {
@@ -482,14 +497,14 @@
     {
         _currentAddress = 0;
     }
-    return GetAddressData(address,port,_currentAddress);
+    return GetAddressData(address,port,path,length,_currentAddress);
     
 }
-int Shoutcast::GetCurrAddress(IpAddr* address, int* port)
+int Shoutcast::GetCurrAddress(IpAddr* address, int* port, char * path, const int length)
 {
-    return GetAddressData(address,port,_currentAddress);
+    return GetAddressData(address,port,path,length,_currentAddress);
 }
-int Shoutcast::GetPrevAddress(IpAddr* address, int* port)
+int Shoutcast::GetPrevAddress(IpAddr* address, int* port, char * path, const int length)
 {
     if(_currentAddress > 0 )
     {
@@ -499,5 +514,5 @@
     {
         _currentAddress = _maxAddress - 1;
     }
-    return GetAddressData(address,port,_currentAddress);
+    return GetAddressData(address,port,path,length,_currentAddress);
 }
\ No newline at end of file