📄 sctmem.c
字号:
long offset; /*----------------------------------------------------------*/ /* Statements */ /*----------------------------------------------------------*/ if (sct_id == 0) { sct_errno = ESIDUNK; sct_errmsg = sct_error[sct_errno].msg; return (S_ERR); }; /*------------------------------------*/ /* Open file for read */ /*------------------------------------*/ /* read shell - variable */#ifdef MAC if ((fileptr = MacGetEnv("STAMOD")) == NULL) {#else if ((fileptr = getenv("STAMOD")) == NULL) {#endif /* !MAC */ sct_errno = ENOSHELL; sct_errmsg = sct_error[sct_errno].msg; return (S_ERR); }; /* open File for read */ if ((fd = fopen(fileptr, "r")) == NULL) { sct_errno = EOPERR; sct_errmsg = sct_error[sct_errno].msg; return (S_ERR); }; /*------------------------------------*/ /* read install-file, until element */ /* found */ /*------------------------------------*/ offset = (long) (sizeof(struct s_record) * (sct_id - 1)); if (fseek(fd, offset, 0) != 0) { sct_errno = EEMPTY; sct_errmsg = sct_error[sct_errno].msg; fclose(fd); return (S_ERR); }; if (fread(&genrecord, sizeof(struct s_record), 1, fd) == 0) { sct_errno = ERDERR; sct_errmsg = sct_error[sct_errno].msg; fclose(fd); return (S_ERR); }; /*------------------------------------------------------*/ /* Test, if schistory buffer allocated */ /*------------------------------------------------------*/ if (oldelem->schistory != NULL) free(oldelem->schistory); /*------------------------------------------------------*/ /* Initialize element */ /*------------------------------------------------------*/ init_elem(oldelem, &genrecord, FALSE); /*------------------------------------*/ /* close Installation File */ /*------------------------------------*/ if (fclose(fd) != 0) { sct_errno = ECLERR; sct_errmsg = sct_error[sct_errno].msg; return (-1); };#ifdef TRACE /* print element */ fprintf(sct_trfp, "FUNCTION get_orgelem: \n"); pr_element(sct_trfp, oldelem);#endif return (0);}/*-------------------------------------------------------------*//* E N D O F P R O C E D U R E get_orgelem *//*-------------------------------------------------------------*//*--------------------------------------------------------*//* | GMD *//* +-----*//* PROC del_sctlist VERSION 2.0 *//* DATE November 1991 *//* BY L.Eckstein,GMD *//* *//* DESCRIPTION *//* Delete sct-List *//* *//* *//* IN DESCRIPTION *//* *//* *//* OUT *//* *//* *//* *//* *//* RETURN DESCRIPTION *//*--------------------------------------------------------*/static voiddel_sctlist(){ /*----------------------------------------------------------*/ /* Definitions */ /*----------------------------------------------------------*/ struct s_portparam *dp_tail; /*----------------------------------------------------------*/ /* Statements */ /*----------------------------------------------------------*/ dp_tail = p_lhead; while (dp_tail != PORTNULL) { p_lhead = p_lhead->p_next; free(dp_tail); dp_tail = p_lhead; } p_lhead = PORTNULL;}/*-------------------------------------------------------------*//* E N D O F P R O C E D U R E del_sctlist *//*-------------------------------------------------------------*//*--------------------------------------------------------*//* | GMD *//* +-----*//* PROC init_elem VERSION 2.0 *//* DATE November 1991 *//* BY L.Eckstein,GMD *//* *//* DESCRIPTION *//* Initialize sct element *//* *//* *//* IN DESCRIPTION *//* Pointer Pointer of listelement *//* *//* Pointer Pointer of genrecord *//* *//* first call of init_elem *//* TRUE : call of cr_sctlist *//* FALSE: call of get_orgelem *//* *//* *//* OUT *//* *//* *//* *//* *//* RETURN DESCRIPTION *//*--------------------------------------------------------*/static voidinit_elem(sct_elem, genrecord, first) struct s_portparam *sct_elem; struct s_record *genrecord; Boolean first;{ /*----------------------------------------------------------*/ /* Definitions */ /*----------------------------------------------------------*/ int div = 19200; int baud; int index; /*----------------------------------------------------------*/ /* Statements */ /*----------------------------------------------------------*/ sct_elem->bwt = genrecord->bwt; sct_elem->cwt = genrecord->cwt;#ifdef DOS sct_elem->baud = (div / genrecord->baud) * 6;#endif#ifdef BSD index = 0; baud = genrecord->baud; while ((div / baud) != 1) { baud = baud * 2; index++; } sct_elem->baud = B19200 - index;#endif#ifdef SYSTEMV index = 0; baud = genrecord->baud; while ((div / baud) != 1) { baud = baud * 2; index++; } sct_elem->baud = B19200 - index;#endif#ifdef MAC sct_elem->baud = MacBaud(genrecord->baud);#endif if (genrecord->databits == 7) sct_elem->databits = DATA_7; else sct_elem->databits = DATA_8; if (genrecord->stopbits == 1) sct_elem->stopbits = STOP_1; else sct_elem->stopbits = STOP_2; if (sct_elem->databits == DATA_8) sct_elem->parity = PARNONE; else sct_elem->parity = genrecord->parity; sct_elem->dataformat = genrecord->dataformat; sct_elem->tpdusize = genrecord->tpdu_size; sct_elem->apdusize = genrecord->apdu_size; sct_elem->edc = genrecord->edc; sct_elem->chaining = C_ON; sct_elem->schistory = NULL; sct_elem->port_id = 0; sct_elem->ssc = 0; sct_elem->sc_request = 0; if (first == TRUE) { sct_elem->setmode = 0; sct_elem->session_key.subjectAI = NULL; sct_elem->session_key.subjectkey.bits = NULL; sct_elem->session_key.subjectkey.nbits = 0; sct_elem->secure_messaging.response = SEC_NORMAL; sct_elem->secure_messaging.command = SEC_NORMAL; }}/*-------------------------------------------------------------*//* E N D O F P R O C E D U R E init_elem *//*-------------------------------------------------------------*//*--------------------------------------------------------*//* | GMD *//* +-----*//* PROC pr_sctlist VERSION 2.0 *//* DATE November 1991 *//* BY L.Eckstein,GMD *//* *//* DESCRIPTION *//* Print sct-List *//* *//* *//* IN DESCRIPTION *//* *//* *//* OUT *//* *//* *//* *//* *//* RETURN DESCRIPTION *//*--------------------------------------------------------*/static voidpr_sctlist(dump_file) FILE *dump_file;{ /*----------------------------------------------------------*/ /* Definitions */ /*----------------------------------------------------------*/ struct s_portparam *dp_tail; int lindex = 1; /*----------------------------------------------------------*/ /* Statements */ /*----------------------------------------------------------*/ dp_tail = p_lhead; while (dp_tail != PORTNULL) { fprintf(dump_file, "\n%d. Listenelement \n", lindex); pr_element(dump_file, dp_tail); dp_tail = dp_tail->p_next; lindex++; }}/*-------------------------------------------------------------*//* E N D O F P R O C E D U R E pr_sctlist *//*-------------------------------------------------------------*//*--------------------------------------------------------*//* | GMD *//* +-----*//* PROC pr_element VERSION 2.0 *//* DATE November 1991 *//* BY L.Eckstein,GMD *//* *//* DESCRIPTION *//* Print one listelement *//* *//* *//* IN DESCRIPTION *//* Pointer Pointer of listelement *//* *//* OUT *//* *//* *//* *//* *//* RETURN DESCRIPTION *//*--------------------------------------------------------*/voidpr_element(dump_file, elem) FILE *dump_file; struct s_portparam *elem;{ /*----------------------------------------------------------*/ /* Definitions */ /*----------------------------------------------------------*/ /*----------------------------------------------------------*/ /* Statements */ /*----------------------------------------------------------*/ if (elem != PORTNULL) { fprintf(dump_file, "\nListenelement \n"); fprintf(dump_file, " PORT_NAME = %s\n", elem->port_name); fprintf(dump_file, " BWT = %d\n", elem->bwt); fprintf(dump_file, " CWT = %d\n", elem->cwt); fprintf(dump_file, " BAUD = %d\n", elem->baud); fprintf(dump_file, " DATABITS = %d\n", elem->databits); fprintf(dump_file, " STOPBITS = %d\n", elem->stopbits); fprintf(dump_file, " PARITY = %d\n", elem->parity); fprintf(dump_file, " DATAFORMAT = %d\n", elem->dataformat); fprintf(dump_file, " TPDUSIZE = %d\n", elem->tpdusize); fprintf(dump_file, " APDUSIZE = %d\n", elem->apdusize); fprintf(dump_file, " EDC = %d\n", elem->edc); fprintf(dump_file, " PROTTYPE = %d\n", elem->protocoltype); fprintf(dump_file, " CHAINING = %d\n", elem->chaining); fprintf(dump_file, " NS = %d\n", elem->ns); fprintf(dump_file, " RSV = %d\n", elem->rsv); fprintf(dump_file, " SAD = %d\n", elem->sad); fprintf(dump_file, " DAD = %d\n", elem->dad); fprintf(dump_file, " SCHISTORY = "); if (elem->schistory == NULL) fprintf(dump_file, "NULL\n"); else fprintf(dump_file, "%s\n", elem->schistory); fprintf(dump_file, " PORT_ID = %d\n", elem->port_id); fprintf(dump_file, " FIRST = %d\n", elem->first); fprintf(dump_file, " SETMODE = %d\n", elem->setmode); if (elem->session_key.subjectkey.bits != NULL) { fprintf(dump_file, " SESSIONKEY = \n"); fprintf(dump_file, " subjectAI = %x\n", elem->session_key.subjectAI); fprintf(dump_file, " subjectkey.nbits = %d\n", elem->session_key.subjectkey.nbits); fprintf(dump_file, " subjectkey.bits = \n"); aux_fxdump(dump_file, elem->session_key.subjectkey.bits, elem->session_key.subjectkey.nbits / 8, 0); } else { fprintf(dump_file, " SESSIONKEY = \n"); fprintf(dump_file, " subjectAI = NULL\n"); fprintf(dump_file, " subjectkey.bits = NULL\n"); } fprintf(dump_file, " SSC = %x\n", elem->ssc); fprintf(dump_file, " SECMESS_COMMAND = %d\n", elem->secure_messaging.command); fprintf(dump_file, " SECMESS_RESPONSE= %d\n", elem->secure_messaging.response); fprintf(dump_file, " SC_REQUEST = %d\n\n", elem->sc_request); }}/*-------------------------------------------------------------*//* E N D O F P R O C E D U R E pr_element *//*-------------------------------------------------------------*//*-------------------------------------------------------------*//* E N D O F P R O C E D U R E s c t m e m *//*-------------------------------------------------------------*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -