📄 megaco_flex_scanner_drv.flex.src
字号:
ASSIGN_TERM_SPEC(3); ASSIGN_TERM_SPEC(ERL_DRV_TUPLE); ASSIGN_TERM_SPEC(3);}DRIVER_INIT(mfs_drv){ DBG( ("DRIVER_INIT(mfs_drv) -> entry\n") ); return &mfs_entry;}static ErlDrvData mfs_start(ErlDrvPort port, char *buf){ DBG( ("mfs_start -> entry\n") ); mfs_port = port; mfs_AddToken = driver_mk_atom("AddToken"); mfs_AndAUDITSelectToken = driver_mk_atom("AndAUDITSelectToken"); mfs_AuditCapToken = driver_mk_atom("AuditCapToken"); mfs_AuditToken = driver_mk_atom("AuditToken"); mfs_AuditValueToken = driver_mk_atom("AuditValueToken"); mfs_AuthToken = driver_mk_atom("AuthToken"); mfs_BothToken = driver_mk_atom("BothToken"); mfs_BothwayToken = driver_mk_atom("BothwayToken"); mfs_BriefToken = driver_mk_atom("BriefToken"); mfs_BufferToken = driver_mk_atom("BufferToken"); mfs_COLON = driver_mk_atom("COLON"); mfs_COMMA = driver_mk_atom("COMMA"); mfs_ContextAttrToken = driver_mk_atom("ContextAttrToken"); mfs_ContextAuditToken = driver_mk_atom("ContextAuditToken"); mfs_ContextListToken = driver_mk_atom("ContextListToken"); mfs_CtxToken = driver_mk_atom("CtxToken"); mfs_DelayToken = driver_mk_atom("DelayToken"); mfs_DeleteToken = driver_mk_atom("DeleteToken"); mfs_DigitMapDescriptor = driver_mk_atom("DigitMapDescriptor"); mfs_DigitMapDescriptorToken = driver_mk_atom("DigitMapDescriptorToken"); mfs_DigitMapToken = driver_mk_atom("DigitMapToken"); mfs_DigitMapValue = driver_mk_atom("DigitMapValue"); mfs_DirectionToken = driver_mk_atom("DirectionToken"); mfs_DiscardToken = driver_mk_atom("DiscardToken"); mfs_DisconnectedToken = driver_mk_atom("DisconnectedToken"); mfs_DurationToken = driver_mk_atom("DurationToken"); mfs_EQUAL = driver_mk_atom("EQUAL"); mfs_EmbedToken = driver_mk_atom("EmbedToken"); mfs_EmergencyToken = driver_mk_atom("EmergencyToken"); mfs_EmergencyOffToken = driver_mk_atom("EmergencyOffToken"); mfs_EmergencyValueToken = driver_mk_atom("EmergencyValueToken"); mfs_ErrorToken = driver_mk_atom("ErrorToken"); mfs_EventBufferToken = driver_mk_atom("EventBufferToken"); mfs_EventsToken = driver_mk_atom("EventsToken"); mfs_ExternalToken = driver_mk_atom("ExternalToken"); mfs_FailoverToken = driver_mk_atom("FailoverToken"); mfs_ForcedToken = driver_mk_atom("ForcedToken"); mfs_GREATER = driver_mk_atom("GREATER"); mfs_GracefulToken = driver_mk_atom("GracefulToken"); mfs_H221Token = driver_mk_atom("H221Token"); mfs_H223Token = driver_mk_atom("H223Token"); mfs_H226Token = driver_mk_atom("H226Token"); mfs_HandOffToken = driver_mk_atom("HandOffToken"); mfs_IEPSToken = driver_mk_atom("IEPSToken"); mfs_IllegalChar = driver_mk_atom("IllegalChar"); mfs_ImmAckRequiredToken = driver_mk_atom("ImmAckRequiredToken"); mfs_InSvcToken = driver_mk_atom("InSvcToken"); mfs_InactiveToken = driver_mk_atom("InactiveToken"); mfs_InternalToken = driver_mk_atom("InternalToken"); mfs_InterruptByEventToken = driver_mk_atom("InterruptByEventToken"); mfs_InterruptByNewSignalsDescrToken = driver_mk_atom("InterruptByNewSignalsDescrToken"); mfs_IntsigDelayToken = driver_mk_atom("IntsigDelayToken"); mfs_IsolateToken = driver_mk_atom("IsolateToken"); mfs_IterationToken = driver_mk_atom("IterationToken"); mfs_KeepActiveToken = driver_mk_atom("KeepActiveToken"); mfs_LBRKT = driver_mk_atom("LBRKT"); mfs_LESSER = driver_mk_atom("LESSER"); mfs_LSBRKT = driver_mk_atom("LSBRKT"); mfs_LocalControlToken = driver_mk_atom("LocalControlToken"); mfs_LocalDescriptorToken = driver_mk_atom("LocalDescriptorToken"); mfs_LocalToken = driver_mk_atom("LocalToken"); mfs_LockStepToken = driver_mk_atom("LockStepToken"); mfs_LoopbackToken = driver_mk_atom("LoopbackToken"); mfs_MediaToken = driver_mk_atom("MediaToken"); mfs_MegacopToken = driver_mk_atom("MegacopToken"); /* mfs_MessageSegmentToken = driver_mk_atom("MessageSegmentToken"); */ mfs_MethodToken = driver_mk_atom("MethodToken"); mfs_MgcIdToken = driver_mk_atom("MgcIdToken"); mfs_ModeToken = driver_mk_atom("ModeToken"); mfs_ModemToken = driver_mk_atom("ModemToken"); mfs_ModifyToken = driver_mk_atom("ModifyToken"); mfs_MoveToken = driver_mk_atom("MoveToken"); mfs_MtpAddressToken = driver_mk_atom("MtpAddressToken"); mfs_MuxToken = driver_mk_atom("MuxToken"); mfs_NEQUAL = driver_mk_atom("NEQUAL"); mfs_NotifyCompletionToken = driver_mk_atom("NotifyCompletionToken"); mfs_NotifyImmediateToken = driver_mk_atom("NotifyImmediateToken"); mfs_NotifyRegulatedToken = driver_mk_atom("NotifyRegulatedToken"); mfs_NeverNotifyToken = driver_mk_atom("NeverNotifyToken"); mfs_NotifyToken = driver_mk_atom("NotifyToken"); mfs_Nx64kToken = driver_mk_atom("Nx64kToken"); mfs_ObservedEventsToken = driver_mk_atom("ObservedEventsToken"); mfs_OffToken = driver_mk_atom("OffToken"); mfs_OnOffToken = driver_mk_atom("OnOffToken"); mfs_OnToken = driver_mk_atom("OnToken"); mfs_OnewayToken = driver_mk_atom("OnewayToken"); mfs_OnewayBothToken = driver_mk_atom("OnewayBothToken"); mfs_OnewayExternalToken = driver_mk_atom("OnewayExternalToken"); mfs_OrAUDITselectToken = driver_mk_atom("OrAUDITselectToken"); mfs_OtherReasonToken = driver_mk_atom("OtherReasonToken"); mfs_OutOfSvcToken = driver_mk_atom("OutOfSvcToken"); mfs_PackagesToken = driver_mk_atom("PackagesToken"); mfs_PendingToken = driver_mk_atom("PendingToken"); mfs_PriorityToken = driver_mk_atom("PriorityToken"); mfs_ProfileToken = driver_mk_atom("ProfileToken"); mfs_QuotedChars = driver_mk_atom("QuotedChars"); mfs_RBRKT = driver_mk_atom("RBRKT"); mfs_RSBRKT = driver_mk_atom("RSBRKT"); mfs_ReasonToken = driver_mk_atom("ReasonToken"); mfs_RecvonlyToken = driver_mk_atom("RecvonlyToken"); mfs_RemoteDescriptorToken = driver_mk_atom("RemoteDescriptorToken"); mfs_RemoteToken = driver_mk_atom("RemoteToken"); mfs_ReplyToken = driver_mk_atom("ReplyToken"); mfs_RequestIDToken = driver_mk_atom("RequestIDToken"); mfs_ReservedGroupToken = driver_mk_atom("ReservedGroupToken"); mfs_ReservedValueToken = driver_mk_atom("ReservedValueToken"); mfs_ResetEventsDescriptorToken = driver_mk_atom("ResetEventsDescriptorToken"); mfs_ResponseAckToken = driver_mk_atom("ResponseAckToken"); mfs_RestartToken = driver_mk_atom("RestartToken"); mfs_SEP = driver_mk_atom("SEP"); mfs_SafeChars = driver_mk_atom("SafeChars"); /* mfs_SegmentationCOmpleteToken = driver_mk_atom("SegmentationCOmpleteToken"); */ mfs_SendonlyToken = driver_mk_atom("SendonlyToken"); mfs_SendrecvToken = driver_mk_atom("SendrecvToken"); mfs_ServiceChangeAddressToken = driver_mk_atom("ServiceChangeAddressToken"); mfs_ServiceChangeIncompleteToken = driver_mk_atom("ServiceChangeIncompleteToken"); mfs_ServiceChangeToken = driver_mk_atom("ServiceChangeToken"); mfs_ServiceStatesToken = driver_mk_atom("ServiceStatesToken"); mfs_ServicesToken = driver_mk_atom("ServicesToken"); mfs_SignalListToken = driver_mk_atom("SignalListToken"); mfs_SignalTypeToken = driver_mk_atom("SignalTypeToken"); mfs_SignalsToken = driver_mk_atom("SignalsToken"); mfs_StatsToken = driver_mk_atom("StatsToken"); mfs_StreamToken = driver_mk_atom("StreamToken"); mfs_SubtractToken = driver_mk_atom("SubtractToken"); mfs_SynchISDNToken = driver_mk_atom("SynchISDNToken"); mfs_TerminationStateToken = driver_mk_atom("TerminationStateToken"); mfs_TestToken = driver_mk_atom("TestToken"); mfs_TimeOutToken = driver_mk_atom("TimeOutToken"); mfs_TimeStampToken = driver_mk_atom("TimeStampToken"); /* OTP-5042 */ mfs_TopologyToken = driver_mk_atom("TopologyToken"); mfs_TransToken = driver_mk_atom("TransToken"); mfs_V18Token = driver_mk_atom("V18Token"); mfs_V22Token = driver_mk_atom("V22Token"); mfs_V22bisToken = driver_mk_atom("V22bisToken"); mfs_V32Token = driver_mk_atom("V32Token"); mfs_V32bisToken = driver_mk_atom("V32bisToken"); mfs_V34Token = driver_mk_atom("V34Token"); mfs_V76Token = driver_mk_atom("V76Token"); mfs_V90Token = driver_mk_atom("V90Token"); mfs_V91Token = driver_mk_atom("V91Token"); mfs_VersionToken = driver_mk_atom("VersionToken"); mfs_asn1_NOVALUE = driver_mk_atom("asn1_NOVALUE"); mfs_endOfMessage = driver_mk_atom("endOfMessage"); DBG( ("mfs_start -> exit\n") ); return (ErlDrvData) 0;}static void mfs_stop(ErlDrvData handle){ mfs_port = 0; DBG( ("mfs_stop -> exit\n") ); return;}static void mfs_command(ErlDrvData handle, char *buf, int buf_len){ driver_failure_atom(mfs_port, "bad_usage"); return;}static int mfs_control(ErlDrvData handle, unsigned int command, char *buf, int buf_len, char **res_buf, int res_buf_len){ YY_BUFFER_STATE state; DBG( ("mfs_control -> entry with" "\n command: %d" "\n buf_len: %d" "\n res_buf_len: %d\n", command, buf_len, res_buf_len) ); if (NULL == (mfs_text_buf = ALLOC(buf_len))) { int len; mfs_alloc_failed("failed allocating text buffer", buf_len); len = strlen(mfs_error_msg); if (res_buf_len < len) { /* * Since we failed the memory allocation in the first place, * there is no point in trying to get more memory for the * error code... */ len = res_buf_len; } strncpy(*res_buf, mfs_error_msg, len); return len; } mfs_text_ptr = mfs_text_buf; mfs_term_spec_size = 1000 + buf_len; /* OTP-4237 */ mfs_term_spec = ALLOC(mfs_term_spec_size * sizeof(ErlDrvTermData)); if (NULL == mfs_term_spec) { int len; mfs_alloc_failed("failed allocating term spec buffer", mfs_term_spec_size * sizeof(ErlDrvTermData)); len = strlen(mfs_error_msg); if (res_buf_len < len) { /* * Since we failed the memory allocation in the first place, * there is no point in trying to get more memory for the * error code... */ len = res_buf_len; } strncpy(*res_buf, mfs_error_msg, len); driver_free(mfs_text_buf); return len; } mfs_term_spec_index = 0; mfs_token_counter = 0; mfs_error = FALSE; /* Prepare the first field in the {tokens, TokenList, LastLine} tuple */ mfs_ensure_term_spec(2); ASSIGN_TERM_SPEC(ERL_DRV_ATOM); ASSIGN_TERM_SPEC(driver_mk_atom("tokens")); /* Perform the actual scan */ yylineno = 1; state = yy_scan_bytes(buf, buf_len); yylex(); yy_delete_buffer(state); if (!mfs_error) { /* * Prepare the rest of the {tokens, TokenList, LastLine} tuple * and send it as message top caller. */ mfs_ensure_term_spec(7); ASSIGN_TERM_SPEC(ERL_DRV_NIL); ASSIGN_TERM_SPEC(ERL_DRV_LIST); ASSIGN_TERM_SPEC(mfs_token_counter + 1); ASSIGN_TERM_SPEC(ERL_DRV_INT); ASSIGN_TERM_SPEC(LINENO_OR_TOKENCNT); ASSIGN_TERM_SPEC(ERL_DRV_TUPLE); ASSIGN_TERM_SPEC(3); DBG( ("mfs_control -> send the term when" "\n term_spec_index: %d" "\n term_spec_size: %d\n", mfs_term_spec_index, mfs_term_spec_size) ); driver_send_term(mfs_port, driver_caller(mfs_port), mfs_term_spec, mfs_term_spec_index); if (mfs_text_buf != NULL) driver_free(mfs_text_buf); if (mfs_term_spec != NULL) driver_free(mfs_term_spec); DBG( ("mfs_control -> done (0)\n") ); return 0; } else { /* * Return the error message */ int len = strlen(mfs_error_msg); /* * If we fail to realloc a bigger block of memory * we have to make do with what we got */ if (res_buf_len < len) { void *tmp = REALLOC(*res_buf, len); if (tmp != NULL) *res_buf = tmp; else len = res_buf_len; } strncpy(*res_buf, mfs_error_msg, len); if (mfs_text_buf != NULL) driver_free(mfs_text_buf); if (mfs_term_spec != NULL) driver_free(mfs_term_spec); DBG( ("mfs_control -> done (%d)\n", len) ); return len; }}static void mfs_finish(void){ return;}static void mfs_fatal_error(char* msg){ if (!mfs_error) { int len = strlen(msg); if (len >= sizeof(mfs_error_msg)) len = sizeof(mfs_error_msg) - 1; strncpy(mfs_error_msg, msg, len); mfs_error_msg[len] = '\0'; mfs_error = TRUE; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -