int readRuleSetFromLocalFile( const char *ruleBaseName, const char *rulesFileName, RuleSet *ruleSet, Env *funcDesc, int *errloc, rError_t *errmsg, Region *r ) { FILE *file; char errbuf[ERR_MSG_LEN]; file = fopen( rulesFileName, "r" ); if ( file == NULL ) { snprintf( errbuf, ERR_MSG_LEN, "readRuleSetFromFile() could not open rules file %s\n", rulesFileName ); addRErrorMsg( errmsg, RULES_FILE_READ_ERROR, errbuf ); return RULES_FILE_READ_ERROR; } Pointer *e = newPointer( file, ruleBaseName ); int ret = parseRuleSet( e, ruleSet, funcDesc, errloc, errmsg, r ); deletePointer( e ); if ( ret < 0 ) { return ret; } Node *errnode{}; ExprType *restype = typeRuleSet( ruleSet, errmsg, &errnode, r ); if ( getNodeType( restype ) == T_ERROR ) { if ( NULL != errnode ) { *errloc = NODE_EXPR_POS( errnode ); } return RE_TYPE_ERROR; } return 0; }
void TMultiplexingServer::deleteActionContext() { TActionWorker *worker = qobject_cast<TActionWorker *>(sender()); Q_CHECK_PTR(worker); deletePointer(worker); worker->deleteLater(); threadCounter.fetchAndAddOrdered(-1); }
void CalloutPointerItem::contextMenuEvent(QGraphicsSceneContextMenuEvent *event) { QMenu menu; QAction *removeAction = menu.addAction("Delete this Arrow"); removeAction->setWhatsThis( "Delete this Arrow:\n" "Deletes this arrow from the callout"); QAction *selectedAction = menu.exec(event->screenPos()); if (selectedAction == removeAction) { deletePointer(pointer.here); } }
IDirect3DTexture9* ModelViewer::loadTexture( uint p_fileId ) { auto entryNumber = this->datFile( )->entryNumFromFileId( p_fileId ); auto fileData = this->datFile( )->readEntry( entryNumber ); // Bail if read failed if ( fileData.GetSize( ) == 0 ) { return nullptr; } // Convert to image ANetFileType fileType; this->datFile( )->identifyFileType( fileData.GetPointer( ), fileData.GetSize( ), fileType ); auto reader = FileReader::readerForData( fileData, fileType ); // Bail if not an image auto imgReader = dynamic_cast<ImageReader*>( reader ); if ( !imgReader ) { deletePointer( reader ); return nullptr; } // Convert to PNG and bail if invalid auto pngData = imgReader->convertData( ); if ( pngData.GetSize( ) == 0 ) { deletePointer( reader ); return nullptr; } // Finally, load texture from in-memory PNG. IDirect3DTexture9* texture = nullptr; ::D3DXCreateTextureFromFileInMemory( m_device.get( ), pngData.GetPointer( ), pngData.GetSize( ), &texture ); // Delete reader and return deletePointer( reader ); return texture; }
void Viewer::clear( ) { deletePointer( m_reader ); }
Viewer::~Viewer( ) { deletePointer( m_reader ); }
int processXMsg( int streamId, char *readmsg, RuleEngineEventParam *param, Node *node, Env *env, ruleExecInfo_t *rei ) { char myhdr[HEADER_TYPE_LEN]; char mymsg[MAX_NAME_LEN]; char *outStr = NULL; int i, n; int iLevel, wCnt; int ruleInx = 0; Region *r; Res *res; rError_t errmsg; errmsg.len = 0; errmsg.errMsg = NULL; r = make_region( 0, NULL ); ParserContext *context = newParserContext( &errmsg, r ); Pointer *e = newPointer2( readmsg ); int rulegen = 1; int found; int grdf[2]; int cmd = 0; int smallW; snprintf( myhdr, HEADER_TYPE_LEN - 1, "idbug:%s", param->actionName ); memset( mymsg, 0, sizeof( mymsg ) ); PARSER_BEGIN( DbgCmd ) TRY( DbgCmd ) TTEXT2( "n", "next" ); cmd = REDEBUG_STEP_OVER; OR( DbgCmd ) TTEXT2( "s", "step" ); cmd = REDEBUG_NEXT; OR( DbgCmd ) TTEXT2( "f", "finish" ); cmd = REDEBUG_STEP_OUT; OR( DbgCmd ) TTEXT2( "b", "break" ); TRY( Param ) TTYPE( TK_TEXT ); int breakPointsInx2; for ( breakPointsInx2 = 0; breakPointsInx2 < 100; breakPointsInx2++ ) { if ( breakPoints[breakPointsInx2].actionName == NULL ) { break; } } if ( breakPointsInx2 == 100 ) { _writeXMsg( streamId, myhdr, "Maximum breakpoint count reached. Breakpoint not set.\n" ); cmd = REDEBUG_WAIT; } else { breakPoints[breakPointsInx2].actionName = strdup( token->text ); char * base_ptr = NULL; TRY( loc ) TTYPE( TK_TEXT ); base_ptr = ( char * ) malloc( sizeof( token->text ) + 2 ); base_ptr[0] = 'f'; strcpy( base_ptr + 1, token->text ); TTEXT( ":" ); TTYPE( TK_INT ); breakPoints[breakPointsInx2].base = strdup( base_ptr ); breakPoints[breakPointsInx2].line = atoi( token->text ); rodsLong_t range[2]; char rulesFileName[MAX_NAME_LEN]; getRuleBasePath( base_ptr, rulesFileName ); FILE *file; /* char errbuf[ERR_MSG_LEN]; */ file = fopen( rulesFileName, "r" ); if ( file == NULL ) { free( context ); deletePointer( e ); free( base_ptr ); return RULES_FILE_READ_ERROR; } Pointer *p = newPointer( file, base_ptr ); if ( getLineRange( p, breakPoints[breakPointsInx2].line, range ) == 0 ) { breakPoints[breakPointsInx2].start = range[0]; breakPoints[breakPointsInx2].finish = range[1]; } else { breakPoints[breakPointsInx2].actionName = NULL; } deletePointer( p ); OR( loc ) TTYPE( TK_INT ); if ( node != NULL ) { breakPoints[breakPointsInx2].base = strdup( node->base ); breakPoints[breakPointsInx2].line = atoi( token->text ); rodsLong_t range[2]; Pointer *p = newPointer2( breakPoints[breakPointsInx2].base ); if ( getLineRange( p, breakPoints[breakPointsInx2].line, range ) == 0 ) { breakPoints[breakPointsInx2].start = range[0]; breakPoints[breakPointsInx2].finish = range[1]; } else { breakPoints[breakPointsInx2].actionName = NULL; } deletePointer( p ); } else { breakPoints[breakPointsInx2].actionName = NULL; } OR( loc ) /* breakPoints[breakPointsInx].base = NULL; */ END_TRY( loc ) free( base_ptr ); if ( breakPoints[breakPointsInx2].actionName != NULL ) snprintf( mymsg, MAX_NAME_LEN, "Breakpoint %i set at %s\n", breakPointsInx2, breakPoints[breakPointsInx2].actionName ); else { snprintf( mymsg, MAX_NAME_LEN, "Cannot set breakpoint, source not available\n" ); } _writeXMsg( streamId, myhdr, mymsg ); if ( breakPointsInx <= breakPointsInx2 ) { breakPointsInx = breakPointsInx2 + 1; } cmd = REDEBUG_WAIT; } OR( Param ) NEXT_TOKEN_BASIC; _writeXMsg( streamId, myhdr, "Unknown parameter type.\n" ); cmd = REDEBUG_WAIT; OR( Param ) _writeXMsg( streamId, myhdr, "Debugger command \'break\' requires at least one argument.\n" ); cmd = REDEBUG_WAIT; END_TRY( Param ) OR( DbgCmd ) TRY( Where ) TTEXT2( "w", "where" ); smallW = 1; OR( Where ) TTEXT2( "W", "Where" ); smallW = 0; END_TRY( Where ) wCnt = 20; OPTIONAL_BEGIN( Param ) TTYPE( TK_INT ); wCnt = atoi( token->text ); OPTIONAL_END( Param ) iLevel = 0; i = reDebugStackCurrPtr - 1; while ( i >= 0 && wCnt > 0 ) { if ( !smallW || ( reDebugPCType( ( RuleEngineEvent ) reDebugStackCurr[i].label ) & 1 ) != 0 ) { snprintf( myhdr, HEADER_TYPE_LEN - 1, "idbug: Level %3i", iLevel ); char msg[HEADER_TYPE_LEN - 1]; RuleEngineEventParam param; param.ruleIndex = 0; param.actionName = reDebugStackCurr[i].step; printRuleEngineEventLabel( msg, HEADER_TYPE_LEN - 1, ( RuleEngineEvent ) reDebugStackCurr[i].label, ¶m ); _writeXMsg( streamId, myhdr, msg ); if ( reDebugStackCurr[i].label != EXEC_ACTION_BEGIN ) { iLevel++; } wCnt--; } i--; } OR( DbgCmd ) TTEXT2( "l", "list" ); TRY( Param ) TTEXT2( "r", "rule" ); TRY( ParamParam ) TTYPE( TK_TEXT ); mymsg[0] = '\n'; mymsg[1] = '\0'; snprintf( myhdr, HEADER_TYPE_LEN - 1, "idbug: Listing %s", token->text ); RuleIndexListNode *node; found = 0; while ( findNextRule2( token->text, ruleInx, &node ) != NO_MORE_RULES_ERR ) { found = 1; if ( node->secondaryIndex ) { n = node->condIndex->valIndex->len; int i; for ( i = 0; i < n; i++ ) { Bucket *b = node->condIndex->valIndex->buckets[i]; while ( b != NULL ) { RuleDesc *rd = getRuleDesc( *( int * )b->value ); char buf[MAX_RULE_LEN]; ruleToString( buf, MAX_RULE_LEN, rd ); snprintf( mymsg + strlen( mymsg ), MAX_NAME_LEN - strlen( mymsg ), "%i: %s\n%s\n", node->ruleIndex, rd->node->base[0] == 's' ? "<source>" : rd->node->base + 1, buf ); b = b->next; } } } else { RuleDesc *rd = getRuleDesc( node->ruleIndex ); char buf[MAX_RULE_LEN]; ruleToString( buf, MAX_RULE_LEN, rd ); snprintf( mymsg + strlen( mymsg ), MAX_NAME_LEN - strlen( mymsg ), "\n %i: %s\n%s\n", node->ruleIndex, rd->node->base[0] == 's' ? "<source>" : rd->node->base + 1, buf ); } ruleInx ++; } if ( !found ) { snprintf( mymsg, MAX_NAME_LEN, "Rule %s not found\n", token->text ); } _writeXMsg( streamId, myhdr, mymsg ); cmd = REDEBUG_WAIT; OR( ParamParam ) _writeXMsg( streamId, myhdr, "Debugger command \'list rule\' requires one argument.\n" ); cmd = REDEBUG_WAIT; END_TRY( ParamParam ) OR( Param ) TTEXT2( "b", "breakpoints" ); snprintf( myhdr, HEADER_TYPE_LEN - 1, "idbug: Listing %s", token->text ); mymsg[0] = '\n'; mymsg[1] = '\0'; for ( i = 0; i < breakPointsInx; i++ ) { if ( breakPoints[i].actionName != NULL ) { if ( breakPoints[i].base != NULL ) { snprintf( mymsg + strlen( mymsg ), MAX_NAME_LEN - strlen( mymsg ), "Breaking at BreakPoint %i:%s %s:%d\n", i , breakPoints[i].actionName, breakPoints[i].base[0] == 's' ? "<source>" : breakPoints[i].base + 1, breakPoints[i].line ); } else { snprintf( mymsg + strlen( mymsg ), MAX_NAME_LEN - strlen( mymsg ), "Breaking at BreakPoint %i:%s\n", i , breakPoints[i].actionName ); } } } _writeXMsg( streamId, myhdr, mymsg ); cmd = REDEBUG_WAIT; OR( Param ) TTEXT( "*" ); snprintf( myhdr, HEADER_TYPE_LEN - 1, "idbug: Listing %s", token->text ); Env *cenv = env; mymsg[0] = '\n'; mymsg[1] = '\0'; found = 0; while ( cenv != NULL ) { n = cenv->current->size; for ( i = 0; i < n; i++ ) { Bucket *b = cenv->current->buckets[i]; while ( b != NULL ) { if ( b->key[0] == '*' ) { /* skip none * variables */ found = 1; char typeString[128]; typeToString( ( ( Res * )b->value )->exprType, NULL, typeString, 128 ); snprintf( mymsg + strlen( mymsg ), MAX_NAME_LEN - strlen( mymsg ), "%s of type %s\n", b->key, typeString ); } b = b->next; } } cenv = cenv->previous; } if ( !found ) { snprintf( mymsg + strlen( mymsg ), MAX_NAME_LEN - strlen( mymsg ), "<empty>\n" ); } _writeXMsg( streamId, myhdr, mymsg ); cmd = REDEBUG_WAIT; OR( Param ) syncTokenQueue( e, context ); skipWhitespace( e ); ABORT( lookAhead( e, 0 ) != '$' ); snprintf( myhdr, HEADER_TYPE_LEN - 1, "idbug: Listing %s", token->text ); mymsg[0] = '\n'; mymsg[1] = '\0'; Hashtable *vars = newHashTable( 100 ); for ( i = 0; i < coreRuleVarDef .MaxNumOfDVars; i++ ) { if ( lookupFromHashTable( vars, coreRuleVarDef.varName[i] ) == NULL ) { snprintf( &mymsg[strlen( mymsg )], MAX_NAME_LEN - strlen( mymsg ), "$%s\n", coreRuleVarDef.varName[i] ); insertIntoHashTable( vars, coreRuleVarDef.varName[i], coreRuleVarDef.varName[i] ); } } deleteHashTable( vars, NULL ); _writeXMsg( streamId, myhdr, mymsg ); cmd = REDEBUG_WAIT; OR( Param ) NEXT_TOKEN_BASIC; _writeXMsg( streamId, myhdr, "Unknown parameter type.\n" ); cmd = REDEBUG_WAIT; OR( Param ) _writeXMsg( streamId, myhdr, "Debugger command \'list\' requires at least one argument.\n" ); cmd = REDEBUG_WAIT; END_TRY( Param ) OR( DbgCmd ) TTEXT2( "c", "continue" ); cmd = REDEBUG_STEP_CONTINUE; OR( DbgCmd ) TTEXT2( "C", "Continue" ); cmd = REDEBUG_CONTINUE_VERBOSE; OR( DbgCmd ) TTEXT2( "del", "delete" ); TRY( Param ) TTYPE( TK_INT ); n = atoi( token->text ); if ( breakPoints[n].actionName != NULL ) { free( breakPoints[n].actionName ); if ( breakPoints[n].base != NULL ) { free( breakPoints[n].base ); } breakPoints[n].actionName = NULL; breakPoints[n].base = NULL; snprintf( mymsg, MAX_NAME_LEN, "Breakpoint %i deleted\n", n ); } else { snprintf( mymsg, MAX_NAME_LEN, "Breakpoint %i has not been defined\n", n ); } _writeXMsg( streamId, myhdr, mymsg ); cmd = REDEBUG_WAIT; OR( Param ) _writeXMsg( streamId, myhdr, "Debugger command \'delete\' requires one argument.\n" ); cmd = REDEBUG_WAIT; END_TRY( Param ) OR( DbgCmd ) TTEXT2( "p", "print" ); Node *n = parseTermRuleGen( e, 1, context ); if ( getNodeType( n ) == N_ERROR ) { errMsgToString( context->errmsg, mymsg + strlen( mymsg ), MAX_NAME_LEN - strlen( mymsg ) ); } else { snprintf( myhdr, HEADER_TYPE_LEN - 1, "idbug: Printing " ); char * ptr = myhdr + strlen( myhdr ); i = HEADER_TYPE_LEN - 1 - strlen( myhdr ); termToString( &ptr, &i, 0, MIN_PREC, n, 0 ); snprintf( ptr, i, "\n" ); if ( env != NULL ) { disableReDebugger( grdf ); res = computeNode( n, NULL, regionRegionCpEnv( env, r, ( RegionRegionCopyFuncType * ) regionRegionCpNode ), rei, 0, &errmsg, r ); enableReDebugger( grdf ); outStr = convertResToString( res ); snprintf( mymsg, MAX_NAME_LEN, "%s\n", outStr ); free( outStr ); if ( getNodeType( res ) == N_ERROR ) { errMsgToString( &errmsg, mymsg + strlen( mymsg ), MAX_NAME_LEN - strlen( mymsg ) ); } } else { snprintf( mymsg, MAX_NAME_LEN, "Runtime environment: <empty>\n" ); } } _writeXMsg( streamId, myhdr, mymsg ); cmd = REDEBUG_WAIT; OR( DbgCmd ) TTEXT2( "d", "discontinue" ); cmd = REDEBUG_WAIT; OR( DbgCmd ) snprintf( mymsg, MAX_NAME_LEN, "Unknown Action: %s", readmsg ); _writeXMsg( streamId, myhdr, mymsg ); cmd = REDEBUG_WAIT; END_TRY( DbgCmd ) PARSER_END( DbgCmd ) freeRErrorContent( &errmsg ); region_free( r ); deletePointer( e ); free( context ); return cmd; }
/* parse and compute an expression * */ Res *parseAndComputeExpression( char *expr, Env *env, ruleExecInfo_t *rei, int reiSaveFlag, rError_t *errmsg, Region *r ) { Res *res = NULL; char buf[ERR_MSG_LEN > 1024 ? ERR_MSG_LEN : 1024]; int rulegen; Node *node = NULL, *recoNode = NULL; #ifdef DEBUG snprintf( buf, 1024, "parseAndComputeExpression: %s\n", expr ); writeToTmp( "entry.log", buf ); #endif if ( overflow( expr, MAX_RULE_LEN ) ) { addRErrorMsg( errmsg, RE_BUFFER_OVERFLOW, "error: potential buffer overflow" ); return newErrorRes( r, RE_BUFFER_OVERFLOW ); } Pointer *e = newPointer2( expr ); ParserContext *pc = newParserContext( errmsg, r ); if ( e == NULL ) { addRErrorMsg( errmsg, RE_POINTER_ERROR, "error: can not create pointer." ); res = newErrorRes( r, RE_POINTER_ERROR ); RETURN; } rulegen = isRuleGenSyntax( expr ); if ( rulegen ) { node = parseTermRuleGen( e, rulegen, pc ); } else { node = parseActionsRuleGen( e, rulegen, 1, pc ); } if ( node == NULL ) { addRErrorMsg( errmsg, RE_OUT_OF_MEMORY, "error: out of memory." ); res = newErrorRes( r, RE_OUT_OF_MEMORY ); RETURN; } else if ( getNodeType( node ) == N_ERROR ) { generateErrMsg( "error: syntax error", NODE_EXPR_POS( node ), node->base, buf ); addRErrorMsg( errmsg, RE_PARSER_ERROR, buf ); res = newErrorRes( r, RE_PARSER_ERROR ); RETURN; } else { Token *token; token = nextTokenRuleGen( e, pc, 0, 0 ); if ( strcmp( token->text, "|" ) == 0 ) { recoNode = parseActionsRuleGen( e, rulegen, 1, pc ); if ( recoNode == NULL ) { addRErrorMsg( errmsg, RE_OUT_OF_MEMORY, "error: out of memory." ); res = newErrorRes( r, RE_OUT_OF_MEMORY ); RETURN; } else if ( getNodeType( recoNode ) == N_ERROR ) { generateErrMsg( "error: syntax error", NODE_EXPR_POS( recoNode ), recoNode->base, buf ); addRErrorMsg( errmsg, RE_PARSER_ERROR, buf ); res = newErrorRes( r, RE_PARSER_ERROR ); RETURN; } token = nextTokenRuleGen( e, pc, 0, 0 ); } if ( token->type != TK_EOS ) { Label pos; getFPos( &pos, e, pc ); generateErrMsg( "error: unparsed suffix", pos.exprloc, pos.base, buf ); addRErrorMsg( errmsg, RE_UNPARSED_SUFFIX, buf ); res = newErrorRes( r, RE_UNPARSED_SUFFIX ); RETURN; } } res = computeNode( node, NULL, env, rei, reiSaveFlag, errmsg, r ); ret: deleteParserContext( pc ); deletePointer( e ); return res; }
/* parse and compute a rule */ int parseAndComputeRule( char *rule, Env *env, ruleExecInfo_t *rei, int reiSaveFlag, rError_t *errmsg, Region *r ) { if ( overflow( rule, MAX_RULE_LEN ) ) { addRErrorMsg( errmsg, RE_BUFFER_OVERFLOW, "error: potential buffer overflow" ); return RE_BUFFER_OVERFLOW; } Node *node; Pointer *e = newPointer2( rule ); if ( e == NULL ) { addRErrorMsg( errmsg, RE_POINTER_ERROR, "error: can not create a Pointer." ); return RE_POINTER_ERROR; } int tempLen = ruleEngineConfig.extRuleSet->len; int checkPoint = checkPointExtRuleSet( r ); int rescode; int errloc; /* add rules into ext rule set */ rescode = parseRuleSet( e, ruleEngineConfig.extRuleSet, ruleEngineConfig.extFuncDescIndex, &errloc, errmsg, r ); deletePointer( e ); if ( rescode != 0 ) { return RE_PARSER_ERROR; } RuleDesc *rd = NULL; Res *res = NULL; /* add rules into rule index */ int i; for ( i = tempLen; i < ruleEngineConfig.extRuleSet->len; i++ ) { if ( ruleEngineConfig.extRuleSet->rules[i]->ruleType == RK_FUNC || ruleEngineConfig.extRuleSet->rules[i]->ruleType == RK_REL ) { appendRuleIntoExtIndex( ruleEngineConfig.extRuleSet->rules[i], i, r ); } } for ( i = tempLen; i < ruleEngineConfig.extRuleSet->len; i++ ) { if ( ruleEngineConfig.extRuleSet->rules[i]->ruleType == RK_FUNC || ruleEngineConfig.extRuleSet->rules[i]->ruleType == RK_REL ) { Hashtable *varTypes = newHashTable2( 10, r ); List *typingConstraints = newList( r ); Node *errnode; ExprType *type = typeRule( ruleEngineConfig.extRuleSet->rules[i], ruleEngineConfig.extFuncDescIndex, varTypes, typingConstraints, errmsg, &errnode, r ); if ( getNodeType( type ) == T_ERROR ) { /* rescode = TYPE_ERROR; # TGR, since renamed to RE_TYPE_ERROR */ rescode = RE_TYPE_ERROR; RETURN; } } } /* exec the first rule */ rd = ruleEngineConfig.extRuleSet->rules[tempLen]; node = rd->node; res = execRuleNodeRes( node, NULL, 0, GlobalAllRuleExecFlag, env, rei, reiSaveFlag, errmsg, r ); rescode = getNodeType( res ) == N_ERROR ? RES_ERR_CODE( res ) : 0; ret: /* remove rules from ext rule set */ popExtRuleSet( checkPoint ); return rescode; }
int generate_SDP_info(char *url,char *sdpLines,size_t sdp_line_size) { int iRet=0; fileSdpGenerator *url_file_Parser; char sdp_lines[2048]; do { url_file_Parser=fileSdpGenerator::createNew(url); if (!url_file_Parser) { iRet=-1; break; } iRet=url_file_Parser->getSdpLines(sdp_lines,sizeof sdp_lines); if (iRet!=0) { sdp_lines[0]='\0'; iRet=0; } const char * media_type=url_file_Parser->sdpMediaType(); unsigned char rtp_payload_type=url_file_Parser->rtpPlyloadType(); const char *ip_address="0.0.0.0"; const char *rtpmap_line=url_file_Parser->rtpmapLine(); const char *rtcpmux_line=""; const char *range_line=url_file_Parser->rangeLine(); //a=control是音视频控制频道,如果只有视频则只有一个,如果音视频都有则有两个, //一个连接只能发一个频道的数据,如果要同时收音视频,需要两个连接 const char *streamId=RTSP_CONTROL_ID_0; unsigned int sdp_fmt_leng=0; char const* const sdp_fmt= "m=%s %u RTP/AVP %d\r\n" "c=IN IP4 %s\r\n" "b=AS:%u\r\n" "%s" "%s" "%s" "%s" "a=control:%s\r\n"; sdp_fmt_leng+=strlen(sdp_fmt)+ strlen(media_type)+8+ strlen(ip_address)+ 20+ strlen(rtpmap_line)+ strlen(rtcpmux_line)+ strlen(range_line)+ strlen(sdp_lines)+ strlen(streamId); if (sdp_fmt_leng>sdp_line_size) { printf("sdp fmt too larg,\n"); iRet=-1; break; } sprintf(sdpLines, sdp_fmt, media_type, 0, rtp_payload_type, ip_address, 500, rtpmap_line, rtcpmux_line, range_line, sdp_lines, streamId); } while (0); deletePointer(url_file_Parser); return iRet; }