Index: trunk/ntripclient/NtripLinuxClient.c
===================================================================
--- trunk/ntripclient/NtripLinuxClient.c	(revision 361)
+++ trunk/ntripclient/NtripLinuxClient.c	(revision 362)
@@ -1,5 +1,5 @@
 /*
   Easy example NTRIP client for Linux/Unix.
-  $Id: NtripLinuxClient.c,v 1.22 2006/11/23 14:39:50 stoecker Exp $
+  $Id: NtripLinuxClient.c,v 1.23 2006/11/29 10:43:15 stoecker Exp $
   Copyright (C) 2003-2005 by Dirk Stoecker <soft@dstoecker.de>
     
@@ -41,6 +41,6 @@
 
 /* CVS revision and version */
-static char revisionstr[] = "$Revision: 1.22 $";
-static char datestr[]     = "$Date: 2006/11/23 14:39:50 $";
+static char revisionstr[] = "$Revision: 1.23 $";
+static char datestr[]     = "$Date: 2006/11/29 10:43:15 $";
 
 struct Args
@@ -50,4 +50,5 @@
   const char *user;
   const char *password;
+  const char *nmea;
   const char *data;
   int         bitrate;
@@ -66,8 +67,9 @@
 { "port",       required_argument, 0, 'r'},
 { "user",       required_argument, 0, 'u'},
+{ "nmea",       required_argument, 0, 'n'},
 { "help",       no_argument,       0, 'h'},
 {0,0,0,0}};
 #endif
-#define ARGOPT "-d:bhp:r:s:u:"
+#define ARGOPT "-d:bhp:r:s:u:n:"
 
 #ifdef __GNUC__
@@ -96,5 +98,5 @@
     /* scan for mountpoint */
     args->data = Buffer;
-    while(*url && *url != '@' && *url != '/' && Buffer != Bufend)
+    while(*url && *url != '@' &&  *url != ';' &&*url != '/' && Buffer != Bufend)
       *(Buffer++) = *(url++);
     if(Buffer == args->data)
@@ -109,5 +111,5 @@
     ++url;
     args->user = Buffer;
-    while(*url && *url != '@' && *url != ':' && Buffer != Bufend)
+    while(*url && *url != '@' && *url != ';' && *url != ':' && Buffer != Bufend)
       *(Buffer++) = *(url++);
     if(Buffer == args->user)
@@ -120,5 +122,5 @@
 
     args->password = Buffer;
-    while(*url && *url != '@' && Buffer != Bufend)
+    while(*url && *url != '@' && *url != ';' && Buffer != Bufend)
       *(Buffer++) = *(url++);
     if(Buffer == args->password)
@@ -133,5 +135,5 @@
     ++url;
     args->server = Buffer;
-    while(*url && *url != ':' && Buffer != Bufend)
+    while(*url && *url != ':' && *url != ';' && Buffer != Bufend)
       *(Buffer++) = *(url++);
     if(Buffer == args->server)
@@ -145,8 +147,14 @@
       char *s2 = 0;
       args->port = strtol(++url, &s2, 10);
-      if(*s2 || args->port <= 0 || args->port > 0xFFFF)
+      if((*s2 && *s2 != ';') || args->port <= 0 || args->port > 0xFFFF)
         return "Illegal port number.";
       url = s2;
     }
+  }
+  if(*url == ';') /* NMEA */
+  {
+    args->nmea = ++url;
+    while(*url)
+      ++url;
   }
 
@@ -166,4 +174,5 @@
   args->user = "";
   args->password = "";
+  args->nmea = 0;
   args->data = 0;
   args->bitrate = 0;
@@ -182,4 +191,5 @@
     case 'p': args->password = optarg; break;
     case 'd': args->data = optarg; break;
+    case 'n': args->nmea = optarg; break;
     case 'b': args->bitrate = 1; break;
     case 'h': help=1; break;
@@ -358,4 +368,15 @@
       buf[i++] = '\r';
       buf[i++] = '\n';
+      if(args.nmea)
+      {
+        int j = snprintf(buf+i, MAXDATASIZE-i, "%s\r\n", args.nmea);
+        if(j >= 0 && i < MAXDATASIZE-i)
+          i += j;
+        else
+        {
+          fprintf(stderr, "NMEA string too long\n");
+          exit(1);
+        }
+      }
     }
     if(send(sockfd, buf, (size_t)i, 0) != i)
