first versione of ThingSpeak IOT library (not tested)
parse.cpp@0:92f5363c7790, 2014-04-04 (annotated)
- Committer:
- mbedakhela
- Date:
- Fri Apr 04 13:44:43 2014 +0000
- Revision:
- 0:92f5363c7790
first version of thingspeak IOT library; not tested
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
mbedakhela | 0:92f5363c7790 | 1 | /* ************************************************************************** |
mbedakhela | 0:92f5363c7790 | 2 | * |
mbedakhela | 0:92f5363c7790 | 3 | * |
mbedakhela | 0:92f5363c7790 | 4 | * |
mbedakhela | 0:92f5363c7790 | 5 | * |
mbedakhela | 0:92f5363c7790 | 6 | * ************************************************************************** |
mbedakhela | 0:92f5363c7790 | 7 | * FileName: parse.c |
mbedakhela | 0:92f5363c7790 | 8 | * Dependencies: |
mbedakhela | 0:92f5363c7790 | 9 | * Module: |
mbedakhela | 0:92f5363c7790 | 10 | * Compiler: |
mbedakhela | 0:92f5363c7790 | 11 | * |
mbedakhela | 0:92f5363c7790 | 12 | * Author Rev. Date Comment |
mbedakhela | 0:92f5363c7790 | 13 | * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
mbedakhela | 0:92f5363c7790 | 14 | * Stefano Lai 1.0 03/27/2014 First release |
mbedakhela | 0:92f5363c7790 | 15 | * |
mbedakhela | 0:92f5363c7790 | 16 | * |
mbedakhela | 0:92f5363c7790 | 17 | * |
mbedakhela | 0:92f5363c7790 | 18 | * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
mbedakhela | 0:92f5363c7790 | 19 | * |
mbedakhela | 0:92f5363c7790 | 20 | * Software License Agreement |
mbedakhela | 0:92f5363c7790 | 21 | * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
mbedakhela | 0:92f5363c7790 | 22 | * This is free software; you can redistribute it and/or modify it under |
mbedakhela | 0:92f5363c7790 | 23 | * the terms of the GNU General Public License (version 2) as published by |
mbedakhela | 0:92f5363c7790 | 24 | * the Free Software Foundation AND MODIFIED BY OpenPicus team. |
mbedakhela | 0:92f5363c7790 | 25 | * |
mbedakhela | 0:92f5363c7790 | 26 | * ***NOTE*** The exception to the GPL is included to allow you to distribute |
mbedakhela | 0:92f5363c7790 | 27 | * a combined work that includes OpenPicus code without being obliged to |
mbedakhela | 0:92f5363c7790 | 28 | * provide the source code for proprietary components outside of the OpenPicus |
mbedakhela | 0:92f5363c7790 | 29 | * code. |
mbedakhela | 0:92f5363c7790 | 30 | * OpenPicus software is distributed in the hope that it will be useful, but |
mbedakhela | 0:92f5363c7790 | 31 | * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
mbedakhela | 0:92f5363c7790 | 32 | * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for |
mbedakhela | 0:92f5363c7790 | 33 | * more details. |
mbedakhela | 0:92f5363c7790 | 34 | * |
mbedakhela | 0:92f5363c7790 | 35 | * |
mbedakhela | 0:92f5363c7790 | 36 | * Warranty |
mbedakhela | 0:92f5363c7790 | 37 | * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
mbedakhela | 0:92f5363c7790 | 38 | * THE SOFTWARE AND DOCUMENTATION ARE PROVIDED "AS IS" WITHOUT |
mbedakhela | 0:92f5363c7790 | 39 | * WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT |
mbedakhela | 0:92f5363c7790 | 40 | * LIMITATION, ANY WARRANTY OF MERCHANTABILITY, FITNESS FOR A |
mbedakhela | 0:92f5363c7790 | 41 | * PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT SHALL |
mbedakhela | 0:92f5363c7790 | 42 | * WE ARE LIABLE FOR ANY INCIDENTAL, SPECIAL, INDIRECT OR |
mbedakhela | 0:92f5363c7790 | 43 | * CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA, COST OF |
mbedakhela | 0:92f5363c7790 | 44 | * PROCUREMENT OF SUBSTITUTE GOODS, TECHNOLOGY OR SERVICES, ANY CLAIMS |
mbedakhela | 0:92f5363c7790 | 45 | * BY THIRD PARTIES (INCLUDING BUT NOT LIMITED TO ANY DEFENSE |
mbedakhela | 0:92f5363c7790 | 46 | * THEREOF), ANY CLAIMS FOR INDEMNITY OR CONTRIBUTION, OR OTHER |
mbedakhela | 0:92f5363c7790 | 47 | * SIMILAR COSTS, WHETHER ASSERTED ON THE BASIS OF CONTRACT, TORT |
mbedakhela | 0:92f5363c7790 | 48 | * (INCLUDING NEGLIGENCE), BREACH OF WARRANTY, OR OTHERWISE. |
mbedakhela | 0:92f5363c7790 | 49 | * |
mbedakhela | 0:92f5363c7790 | 50 | **************************************************************************/ |
mbedakhela | 0:92f5363c7790 | 51 | |
mbedakhela | 0:92f5363c7790 | 52 | #include "mbed.h" |
mbedakhela | 0:92f5363c7790 | 53 | #include "parse.h" |
mbedakhela | 0:92f5363c7790 | 54 | #include "TCPSocketConnection.h" |
mbedakhela | 0:92f5363c7790 | 55 | #include <string> |
mbedakhela | 0:92f5363c7790 | 56 | //#include "string.h" |
mbedakhela | 0:92f5363c7790 | 57 | //#include "HWlib.h" |
mbedakhela | 0:92f5363c7790 | 58 | |
mbedakhela | 0:92f5363c7790 | 59 | /*------------------------------------------------------------------------------------- |
mbedakhela | 0:92f5363c7790 | 60 | | Function: dynamicPARSE(char *tab[][5], int rows) | |
mbedakhela | 0:92f5363c7790 | 61 | | Description: Function to parse strings. | |
mbedakhela | 0:92f5363c7790 | 62 | | Returns: - | |
mbedakhela | 0:92f5363c7790 | 63 | | Parameters: char *tab[][5] - pointer to bidimensional array | |
mbedakhela | 0:92f5363c7790 | 64 | | | |
mbedakhela | 0:92f5363c7790 | 65 | | tab[0][0] => type of parse (use denfine) | |
mbedakhela | 0:92f5363c7790 | 66 | | - BETWEEN | |
mbedakhela | 0:92f5363c7790 | 67 | | - BEFORE | |
mbedakhela | 0:92f5363c7790 | 68 | | - AFTER | |
mbedakhela | 0:92f5363c7790 | 69 | | tab[0][1] => string/token where to start | |
mbedakhela | 0:92f5363c7790 | 70 | | tab[0][2] => string/token where to stop | |
mbedakhela | 0:92f5363c7790 | 71 | | tab[0][3] => destination string | |
mbedakhela | 0:92f5363c7790 | 72 | | tab[0][4] => source string | |
mbedakhela | 0:92f5363c7790 | 73 | | | |
mbedakhela | 0:92f5363c7790 | 74 | | int rows - number of the array rows | |
mbedakhela | 0:92f5363c7790 | 75 | -------------------------------------------------------------------------------------*/ |
mbedakhela | 0:92f5363c7790 | 76 | |
mbedakhela | 0:92f5363c7790 | 77 | void PARSE::dynamicPARSE(char *tab[][5], int rows) |
mbedakhela | 0:92f5363c7790 | 78 | { |
mbedakhela | 0:92f5363c7790 | 79 | int i = 0; |
mbedakhela | 0:92f5363c7790 | 80 | |
mbedakhela | 0:92f5363c7790 | 81 | for(i=0; i<rows; i++) |
mbedakhela | 0:92f5363c7790 | 82 | { |
mbedakhela | 0:92f5363c7790 | 83 | if ( !(strcmp(tab[i][0],"BETWEEN")) ) |
mbedakhela | 0:92f5363c7790 | 84 | { |
mbedakhela | 0:92f5363c7790 | 85 | PARSEbetween( tab[i][4], tab[i][1], tab[i][2], tab[i][3]); |
mbedakhela | 0:92f5363c7790 | 86 | } |
mbedakhela | 0:92f5363c7790 | 87 | |
mbedakhela | 0:92f5363c7790 | 88 | else if ( !(strcmp(tab[i][0],"BEFORE")) ) |
mbedakhela | 0:92f5363c7790 | 89 | { |
mbedakhela | 0:92f5363c7790 | 90 | PARSEbefore( tab[i][4], tab[i][2], tab[i][3]); |
mbedakhela | 0:92f5363c7790 | 91 | } |
mbedakhela | 0:92f5363c7790 | 92 | |
mbedakhela | 0:92f5363c7790 | 93 | else //after |
mbedakhela | 0:92f5363c7790 | 94 | { |
mbedakhela | 0:92f5363c7790 | 95 | PARSEafter( tab[i][4], tab[i][1], tab[i][3]); |
mbedakhela | 0:92f5363c7790 | 96 | } |
mbedakhela | 0:92f5363c7790 | 97 | } |
mbedakhela | 0:92f5363c7790 | 98 | } |
mbedakhela | 0:92f5363c7790 | 99 | |
mbedakhela | 0:92f5363c7790 | 100 | /*------------------------------------------------------------------------------------------------------- |
mbedakhela | 0:92f5363c7790 | 101 | | Function: HTTPdynamicPARSE(char host[], char command[], char *tab[][5], int rows, int snifftime)| |
mbedakhela | 0:92f5363c7790 | 102 | | Description: Function to parse strings with built-in TCPClient. | |
mbedakhela | 0:92f5363c7790 | 103 | | Returns: - | |
mbedakhela | 0:92f5363c7790 | 104 | | Parameters: char host[] - IP or Website address to which want to connect | |
mbedakhela | 0:92f5363c7790 | 105 | | | |
mbedakhela | 0:92f5363c7790 | 106 | | char command[] - command to be sent through the TCPClient | |
mbedakhela | 0:92f5363c7790 | 107 | | | |
mbedakhela | 0:92f5363c7790 | 108 | | char *tab[][5] - pointer to bidimensional array | |
mbedakhela | 0:92f5363c7790 | 109 | | | |
mbedakhela | 0:92f5363c7790 | 110 | | tab[0][0] => type of parse (use denfine) | |
mbedakhela | 0:92f5363c7790 | 111 | | - BETWEEN | |
mbedakhela | 0:92f5363c7790 | 112 | | - BEFORE | |
mbedakhela | 0:92f5363c7790 | 113 | | - AFTER | |
mbedakhela | 0:92f5363c7790 | 114 | | tab[0][1] => string/token where to start | |
mbedakhela | 0:92f5363c7790 | 115 | | tab[0][2] => string/token where to stop | |
mbedakhela | 0:92f5363c7790 | 116 | | tab[0][3] => destination string | |
mbedakhela | 0:92f5363c7790 | 117 | | tab[0][4] => option destination string (use denfine) | |
mbedakhela | 0:92f5363c7790 | 118 | | - YES -> destination string = buffer | |
mbedakhela | 0:92f5363c7790 | 119 | | - NO -> destination string = tab[0][3] | |
mbedakhela | 0:92f5363c7790 | 120 | | | |
mbedakhela | 0:92f5363c7790 | 121 | | int rows - number of the array rows | |
mbedakhela | 0:92f5363c7790 | 122 | | | |
mbedakhela | 0:92f5363c7790 | 123 | | int snifftime - time in 10 microseconds to accumulate more characters | |
mbedakhela | 0:92f5363c7790 | 124 | -------------------------------------------------------------------------------------------------------*/ |
mbedakhela | 0:92f5363c7790 | 125 | |
mbedakhela | 0:92f5363c7790 | 126 | void PARSE::HTTPdynamicPARSE(char host[], char command[], char *tab[][5], int rows, int snifftime) |
mbedakhela | 0:92f5363c7790 | 127 | { |
mbedakhela | 0:92f5363c7790 | 128 | //TCP_SOCKET Socket; |
mbedakhela | 0:92f5363c7790 | 129 | // int flag = 0; |
mbedakhela | 0:92f5363c7790 | 130 | TCPSocketConnection ThingSock; |
mbedakhela | 0:92f5363c7790 | 131 | int size; |
mbedakhela | 0:92f5363c7790 | 132 | int i = 0; |
mbedakhela | 0:92f5363c7790 | 133 | |
mbedakhela | 0:92f5363c7790 | 134 | //Socket=TCPClientOpen ( host, "80"); |
mbedakhela | 0:92f5363c7790 | 135 | //while((Socket==INVALID_SOCKET)); |
mbedakhela | 0:92f5363c7790 | 136 | //while(!TCPisConn(Socket)); |
mbedakhela | 0:92f5363c7790 | 137 | |
mbedakhela | 0:92f5363c7790 | 138 | //TCPWrite ( Socket, command, strlen(command) ); |
mbedakhela | 0:92f5363c7790 | 139 | //vTaskDelay(snifftime); |
mbedakhela | 0:92f5363c7790 | 140 | /////////////////////////////////// |
mbedakhela | 0:92f5363c7790 | 141 | ThingSock.connect(host, 80); |
mbedakhela | 0:92f5363c7790 | 142 | |
mbedakhela | 0:92f5363c7790 | 143 | while(!ThingSock.is_connected()); |
mbedakhela | 0:92f5363c7790 | 144 | ThingSock.send_all(command, (int)strlen(command)); |
mbedakhela | 0:92f5363c7790 | 145 | |
mbedakhela | 0:92f5363c7790 | 146 | |
mbedakhela | 0:92f5363c7790 | 147 | |
mbedakhela | 0:92f5363c7790 | 148 | /* |
mbedakhela | 0:92f5363c7790 | 149 | while( flag==0 ) |
mbedakhela | 0:92f5363c7790 | 150 | { |
mbedakhela | 0:92f5363c7790 | 151 | |
mbedakhela | 0:92f5363c7790 | 152 | size = TCPRxLen ( Socket ); |
mbedakhela | 0:92f5363c7790 | 153 | |
mbedakhela | 0:92f5363c7790 | 154 | if((int)size<=0) |
mbedakhela | 0:92f5363c7790 | 155 | { |
mbedakhela | 0:92f5363c7790 | 156 | i++; |
mbedakhela | 0:92f5363c7790 | 157 | if(i==10) |
mbedakhela | 0:92f5363c7790 | 158 | break; |
mbedakhela | 0:92f5363c7790 | 159 | } |
mbedakhela | 0:92f5363c7790 | 160 | else |
mbedakhela | 0:92f5363c7790 | 161 | flag = 1; |
mbedakhela | 0:92f5363c7790 | 162 | } |
mbedakhela | 0:92f5363c7790 | 163 | |
mbedakhela | 0:92f5363c7790 | 164 | if(flag==1) |
mbedakhela | 0:92f5363c7790 | 165 | { |
mbedakhela | 0:92f5363c7790 | 166 | */ |
mbedakhela | 0:92f5363c7790 | 167 | char buffer[(int)size]; |
mbedakhela | 0:92f5363c7790 | 168 | |
mbedakhela | 0:92f5363c7790 | 169 | //TCPRead ( Socket, buffer, (int)size ); |
mbedakhela | 0:92f5363c7790 | 170 | //vTaskDelay(200); |
mbedakhela | 0:92f5363c7790 | 171 | //TCPClientClose ( Socket ); |
mbedakhela | 0:92f5363c7790 | 172 | |
mbedakhela | 0:92f5363c7790 | 173 | ThingSock.receive_all(buffer, (int)size); |
mbedakhela | 0:92f5363c7790 | 174 | ThingSock.close(); |
mbedakhela | 0:92f5363c7790 | 175 | |
mbedakhela | 0:92f5363c7790 | 176 | |
mbedakhela | 0:92f5363c7790 | 177 | |
mbedakhela | 0:92f5363c7790 | 178 | |
mbedakhela | 0:92f5363c7790 | 179 | for(i=0; i<rows; i++) |
mbedakhela | 0:92f5363c7790 | 180 | { |
mbedakhela | 0:92f5363c7790 | 181 | if ( !(strcmp(tab[i][0],"BETWEEN")) ) |
mbedakhela | 0:92f5363c7790 | 182 | { |
mbedakhela | 0:92f5363c7790 | 183 | |
mbedakhela | 0:92f5363c7790 | 184 | if ( !(strcmp(tab[i][4],"YES")) ) |
mbedakhela | 0:92f5363c7790 | 185 | PARSEbetween( buffer, tab[i][1], tab[i][2], buffer); |
mbedakhela | 0:92f5363c7790 | 186 | else |
mbedakhela | 0:92f5363c7790 | 187 | PARSEbetween( buffer, tab[i][1], tab[i][2], tab[i][3]); |
mbedakhela | 0:92f5363c7790 | 188 | |
mbedakhela | 0:92f5363c7790 | 189 | } |
mbedakhela | 0:92f5363c7790 | 190 | |
mbedakhela | 0:92f5363c7790 | 191 | else if ( !(strcmp(tab[i][0],"BEFORE")) ) |
mbedakhela | 0:92f5363c7790 | 192 | { |
mbedakhela | 0:92f5363c7790 | 193 | |
mbedakhela | 0:92f5363c7790 | 194 | if ( !(strcmp(tab[i][4],"YES")) ) |
mbedakhela | 0:92f5363c7790 | 195 | PARSEbefore( buffer, tab[i][2], buffer); |
mbedakhela | 0:92f5363c7790 | 196 | else |
mbedakhela | 0:92f5363c7790 | 197 | PARSEbefore( buffer, tab[i][2], tab[i][3]); |
mbedakhela | 0:92f5363c7790 | 198 | } |
mbedakhela | 0:92f5363c7790 | 199 | |
mbedakhela | 0:92f5363c7790 | 200 | else //after |
mbedakhela | 0:92f5363c7790 | 201 | { |
mbedakhela | 0:92f5363c7790 | 202 | |
mbedakhela | 0:92f5363c7790 | 203 | if ( !(strcmp(tab[i][4],"YES")) ) |
mbedakhela | 0:92f5363c7790 | 204 | PARSEafter( buffer, tab[i][1], buffer); |
mbedakhela | 0:92f5363c7790 | 205 | else |
mbedakhela | 0:92f5363c7790 | 206 | PARSEafter( buffer, tab[i][1], tab[i][3]); |
mbedakhela | 0:92f5363c7790 | 207 | |
mbedakhela | 0:92f5363c7790 | 208 | } |
mbedakhela | 0:92f5363c7790 | 209 | } |
mbedakhela | 0:92f5363c7790 | 210 | // } |
mbedakhela | 0:92f5363c7790 | 211 | } |
mbedakhela | 0:92f5363c7790 | 212 | |
mbedakhela | 0:92f5363c7790 | 213 | /*------------------------------------------------------------------------------------------------------- |
mbedakhela | 0:92f5363c7790 | 214 | | Function: multiPARSEbetween(char str[], char start[], char stop[], char *substr[], int multi) | |
mbedakhela | 0:92f5363c7790 | 215 | | Description: Function to use more PARSEbetween in a string. | |
mbedakhela | 0:92f5363c7790 | 216 | | Returns: - | |
mbedakhela | 0:92f5363c7790 | 217 | | Parameters: char str[] - source string | |
mbedakhela | 0:92f5363c7790 | 218 | | | |
mbedakhela | 0:92f5363c7790 | 219 | | char start[] - string/token where to start | |
mbedakhela | 0:92f5363c7790 | 220 | | | |
mbedakhela | 0:92f5363c7790 | 221 | | char stop[] - string/token where to stop | |
mbedakhela | 0:92f5363c7790 | 222 | | | |
mbedakhela | 0:92f5363c7790 | 223 | | char *substr[] - pointer to destination string | |
mbedakhela | 0:92f5363c7790 | 224 | | | |
mbedakhela | 0:92f5363c7790 | 225 | | int multi - number of executions of the PARSEbetween function | |
mbedakhela | 0:92f5363c7790 | 226 | -------------------------------------------------------------------------------------------------------*/ |
mbedakhela | 0:92f5363c7790 | 227 | |
mbedakhela | 0:92f5363c7790 | 228 | void PARSE::multiPARSEbetween(char str[], char start[], char stop[], char *substr[], int multi) |
mbedakhela | 0:92f5363c7790 | 229 | { |
mbedakhela | 0:92f5363c7790 | 230 | int i; |
mbedakhela | 0:92f5363c7790 | 231 | char *pf; |
mbedakhela | 0:92f5363c7790 | 232 | char *pi; |
mbedakhela | 0:92f5363c7790 | 233 | int pd; |
mbedakhela | 0:92f5363c7790 | 234 | int c; |
mbedakhela | 0:92f5363c7790 | 235 | int j; |
mbedakhela | 0:92f5363c7790 | 236 | |
mbedakhela | 0:92f5363c7790 | 237 | int sizestart = strlen(start); |
mbedakhela | 0:92f5363c7790 | 238 | |
mbedakhela | 0:92f5363c7790 | 239 | pi=strstr(str,start); |
mbedakhela | 0:92f5363c7790 | 240 | |
mbedakhela | 0:92f5363c7790 | 241 | |
mbedakhela | 0:92f5363c7790 | 242 | for( j=0; j<multi; j++) |
mbedakhela | 0:92f5363c7790 | 243 | { |
mbedakhela | 0:92f5363c7790 | 244 | |
mbedakhela | 0:92f5363c7790 | 245 | pf=strstr(pi+sizestart,stop); |
mbedakhela | 0:92f5363c7790 | 246 | pd=pf-pi; |
mbedakhela | 0:92f5363c7790 | 247 | c=pd-sizestart; |
mbedakhela | 0:92f5363c7790 | 248 | |
mbedakhela | 0:92f5363c7790 | 249 | for(i=0;i<c;i++) |
mbedakhela | 0:92f5363c7790 | 250 | { |
mbedakhela | 0:92f5363c7790 | 251 | *(substr[j]+i)=*(pi+sizestart+i); |
mbedakhela | 0:92f5363c7790 | 252 | } |
mbedakhela | 0:92f5363c7790 | 253 | *(substr[j]+i)='\0'; |
mbedakhela | 0:92f5363c7790 | 254 | pi=strstr(pi+sizestart,start); |
mbedakhela | 0:92f5363c7790 | 255 | |
mbedakhela | 0:92f5363c7790 | 256 | } |
mbedakhela | 0:92f5363c7790 | 257 | } |
mbedakhela | 0:92f5363c7790 | 258 | |
mbedakhela | 0:92f5363c7790 | 259 | /*------------------------------------------------------------------------------------------------------- |
mbedakhela | 0:92f5363c7790 | 260 | | Function: PARSEafter(char str[], char start[], char substr[]) | |
mbedakhela | 0:92f5363c7790 | 261 | | Description: Function to parse a string and rewrite it from start token to the end. | |
mbedakhela | 0:92f5363c7790 | 262 | | Returns: - | |
mbedakhela | 0:92f5363c7790 | 263 | | Parameters: char str[] - source string | |
mbedakhela | 0:92f5363c7790 | 264 | | | |
mbedakhela | 0:92f5363c7790 | 265 | | char start[] - string/token where to start | |
mbedakhela | 0:92f5363c7790 | 266 | | | |
mbedakhela | 0:92f5363c7790 | 267 | | char substr[] - destination string | |
mbedakhela | 0:92f5363c7790 | 268 | -------------------------------------------------------------------------------------------------------*/ |
mbedakhela | 0:92f5363c7790 | 269 | |
mbedakhela | 0:92f5363c7790 | 270 | void PARSE::PARSEafter(char str[], char start[], char substr[]) |
mbedakhela | 0:92f5363c7790 | 271 | { |
mbedakhela | 0:92f5363c7790 | 272 | int i; |
mbedakhela | 0:92f5363c7790 | 273 | int sizestart; |
mbedakhela | 0:92f5363c7790 | 274 | int sizestr; |
mbedakhela | 0:92f5363c7790 | 275 | char *ptrsub; |
mbedakhela | 0:92f5363c7790 | 276 | char *ptrstr; |
mbedakhela | 0:92f5363c7790 | 277 | char *pi; |
mbedakhela | 0:92f5363c7790 | 278 | int c; |
mbedakhela | 0:92f5363c7790 | 279 | |
mbedakhela | 0:92f5363c7790 | 280 | ptrsub=substr; |
mbedakhela | 0:92f5363c7790 | 281 | sizestart=strlen(start); |
mbedakhela | 0:92f5363c7790 | 282 | sizestr=strlen(str); |
mbedakhela | 0:92f5363c7790 | 283 | ptrstr=str; |
mbedakhela | 0:92f5363c7790 | 284 | |
mbedakhela | 0:92f5363c7790 | 285 | pi=strstr(str,start); |
mbedakhela | 0:92f5363c7790 | 286 | c=sizestr-(int)pi+(int)ptrstr-sizestart+1; |
mbedakhela | 0:92f5363c7790 | 287 | |
mbedakhela | 0:92f5363c7790 | 288 | for(i=0;i<c;i++) |
mbedakhela | 0:92f5363c7790 | 289 | { |
mbedakhela | 0:92f5363c7790 | 290 | *(ptrsub+i)=*(pi+sizestart+i); |
mbedakhela | 0:92f5363c7790 | 291 | } |
mbedakhela | 0:92f5363c7790 | 292 | *(ptrsub+i)='\0'; |
mbedakhela | 0:92f5363c7790 | 293 | } |
mbedakhela | 0:92f5363c7790 | 294 | |
mbedakhela | 0:92f5363c7790 | 295 | /*------------------------------------------------------------------------------------------------------- |
mbedakhela | 0:92f5363c7790 | 296 | | Function: PARSEbefore(char str[], char stop[], char substr[]) | |
mbedakhela | 0:92f5363c7790 | 297 | | Description: Function to parse a string and rewrite it from start to the stop token. | |
mbedakhela | 0:92f5363c7790 | 298 | | Returns: - | |
mbedakhela | 0:92f5363c7790 | 299 | | Parameters: char str[] - source string | |
mbedakhela | 0:92f5363c7790 | 300 | | | |
mbedakhela | 0:92f5363c7790 | 301 | | char stop[] - string/token where to stop | |
mbedakhela | 0:92f5363c7790 | 302 | | | |
mbedakhela | 0:92f5363c7790 | 303 | | char substr[] - destination string | |
mbedakhela | 0:92f5363c7790 | 304 | -------------------------------------------------------------------------------------------------------*/ |
mbedakhela | 0:92f5363c7790 | 305 | |
mbedakhela | 0:92f5363c7790 | 306 | void PARSE::PARSEbefore(char str[], char stop[], char substr[]) |
mbedakhela | 0:92f5363c7790 | 307 | { |
mbedakhela | 0:92f5363c7790 | 308 | int i; |
mbedakhela | 0:92f5363c7790 | 309 | char *pf; |
mbedakhela | 0:92f5363c7790 | 310 | char *ptrsub; |
mbedakhela | 0:92f5363c7790 | 311 | char *ptrstr; |
mbedakhela | 0:92f5363c7790 | 312 | int c; |
mbedakhela | 0:92f5363c7790 | 313 | |
mbedakhela | 0:92f5363c7790 | 314 | ptrsub=substr; |
mbedakhela | 0:92f5363c7790 | 315 | ptrstr=str; |
mbedakhela | 0:92f5363c7790 | 316 | |
mbedakhela | 0:92f5363c7790 | 317 | pf=strstr(str,stop); |
mbedakhela | 0:92f5363c7790 | 318 | c=(int)pf-(int)ptrstr; |
mbedakhela | 0:92f5363c7790 | 319 | |
mbedakhela | 0:92f5363c7790 | 320 | |
mbedakhela | 0:92f5363c7790 | 321 | for(i=0;i<c;i++) |
mbedakhela | 0:92f5363c7790 | 322 | { |
mbedakhela | 0:92f5363c7790 | 323 | *(ptrsub+i)=*(ptrstr+i); |
mbedakhela | 0:92f5363c7790 | 324 | } |
mbedakhela | 0:92f5363c7790 | 325 | *(ptrsub+i)='\0'; |
mbedakhela | 0:92f5363c7790 | 326 | |
mbedakhela | 0:92f5363c7790 | 327 | } |
mbedakhela | 0:92f5363c7790 | 328 | |
mbedakhela | 0:92f5363c7790 | 329 | /*------------------------------------------------------------------------------------------------------- |
mbedakhela | 0:92f5363c7790 | 330 | | Function: PARSEbetween(char str[], char start[], char stop[], char substr[]) | |
mbedakhela | 0:92f5363c7790 | 331 | | Description: Function to parse a string and rewrite it from start token to the stop token. | |
mbedakhela | 0:92f5363c7790 | 332 | | Returns: - | |
mbedakhela | 0:92f5363c7790 | 333 | | Parameters: char str[] - source string | |
mbedakhela | 0:92f5363c7790 | 334 | | | |
mbedakhela | 0:92f5363c7790 | 335 | | char start[] - string/token where to start | |
mbedakhela | 0:92f5363c7790 | 336 | | | |
mbedakhela | 0:92f5363c7790 | 337 | | char stop[] - string/token where to stop | |
mbedakhela | 0:92f5363c7790 | 338 | | | |
mbedakhela | 0:92f5363c7790 | 339 | | char substr[] - destination string | |
mbedakhela | 0:92f5363c7790 | 340 | -------------------------------------------------------------------------------------------------------*/ |
mbedakhela | 0:92f5363c7790 | 341 | |
mbedakhela | 0:92f5363c7790 | 342 | void PARSE::PARSEbetween(char str[], char start[], char stop[], char substr[]) |
mbedakhela | 0:92f5363c7790 | 343 | { |
mbedakhela | 0:92f5363c7790 | 344 | int i; |
mbedakhela | 0:92f5363c7790 | 345 | int sizestart; |
mbedakhela | 0:92f5363c7790 | 346 | char *pf; |
mbedakhela | 0:92f5363c7790 | 347 | char *ptrsub; |
mbedakhela | 0:92f5363c7790 | 348 | char *pi; |
mbedakhela | 0:92f5363c7790 | 349 | int pd; |
mbedakhela | 0:92f5363c7790 | 350 | int c; |
mbedakhela | 0:92f5363c7790 | 351 | |
mbedakhela | 0:92f5363c7790 | 352 | ptrsub=substr; |
mbedakhela | 0:92f5363c7790 | 353 | sizestart=strlen(start); |
mbedakhela | 0:92f5363c7790 | 354 | |
mbedakhela | 0:92f5363c7790 | 355 | pi=strstr(str,start); |
mbedakhela | 0:92f5363c7790 | 356 | pf=strstr(pi+sizestart,stop); |
mbedakhela | 0:92f5363c7790 | 357 | |
mbedakhela | 0:92f5363c7790 | 358 | pd=pf-pi; |
mbedakhela | 0:92f5363c7790 | 359 | c=pd-sizestart; |
mbedakhela | 0:92f5363c7790 | 360 | |
mbedakhela | 0:92f5363c7790 | 361 | for(i=0;i<c;i++) |
mbedakhela | 0:92f5363c7790 | 362 | { |
mbedakhela | 0:92f5363c7790 | 363 | *(ptrsub+i)=*(pi+sizestart+i); |
mbedakhela | 0:92f5363c7790 | 364 | } |
mbedakhela | 0:92f5363c7790 | 365 | *(ptrsub+i)='\0'; |
mbedakhela | 0:92f5363c7790 | 366 | |
mbedakhela | 0:92f5363c7790 | 367 | } |