📄 smsd.c
字号:
strcpy(HDR_From2, value); else if (!strcasecmp(name, HDR_Flash)) strcpy(HDR_Flash2, value); else if (!strcasecmp(name, HDR_Provider)) strcpy(HDR_Provider2, value); else if (!strcasecmp(name, HDR_Queue)) strcpy(HDR_Queue2, value); else if (!strcasecmp(name, HDR_Binary)) strcpy(HDR_Binary2, value); else if (!strcasecmp(name, HDR_Report)) strcpy(HDR_Report2, value); else if (!strcasecmp(name, HDR_Autosplit)) strcpy(HDR_Autosplit2, value); else if (!strcasecmp(name, HDR_Validity)) strcpy(HDR_Validity2, value); else if (!strcasecmp(name, HDR_Voicecall)) strcpy(HDR_Voicecall2, value); else if (!strcasecmp(name, HDR_Replace)) strcpy(HDR_Replace2, value); else if (!strcasecmp(name, HDR_Alphabet)) strcpy(HDR_Alphabet2, value); else if (!strcasecmp(name, HDR_Include)) strcpy(HDR_Include2, value); else if (!strcasecmp(name, HDR_Macro)) strcpy(HDR_Macro2, value); else if (!strcasecmp(name, HDR_Hex)) strcpy(HDR_Hex2, value); else if (!strcasecmp(name, HDR_SMSC)) strcpy(HDR_SMSC2, value); else if (!strcasecmp(name, HDR_Priority)) strcpy(HDR_Priority2, value); else if (!strcasecmp(name, HDR_Sent)) strcpy(HDR_Sent2, value); else if (!strcasecmp(name, HDR_Modem)) strcpy(HDR_Modem2, value); else if (!strcasecmp(name, HDR_FromTOA)) strcpy(HDR_FromTOA2, value); else if (!strcasecmp(name, HDR_FromSMSC)) strcpy(HDR_FromSMSC2, value); else if (!strcasecmp(name, HDR_Name)) strcpy(HDR_Name2, value); else if (!strcasecmp(name, HDR_Received)) strcpy(HDR_Received2, value); else if (!strcasecmp(name, HDR_Subject)) strcpy(HDR_Subject2, value); else if (!strcasecmp(name, HDR_UDHType)) strcpy(HDR_UDHType2, value); else if (!strcasecmp(name, HDR_Length)) strcpy(HDR_Length2, value); else if (!strcasecmp(name, HDR_FailReason)) strcpy(HDR_FailReason2, value); else if (!strcasecmp(name, HDR_Identity)) strcpy(HDR_Identity2, value); else if (!strcasecmp(name, HDR_MessageId)) strcpy(HDR_MessageId2, value); else if (!strcasecmp(name, HDR_OriginalFilename)) strcpy(HDR_OriginalFilename2, value); else if (!strcasecmp(name, HDR_CallType)) strcpy(HDR_CallType2, value); else if (!strcasecmp(name, HDR_missed)) strcpy(HDR_missed2, value); else if (!strcasecmp(name, HDR_missed_text)) strcpy(HDR_missed_text2, value); else if (!strcasecmp(name, HDR_Result)) strcpy(HDR_Result2, value); else { fprintf(stderr, "%s\n", tb_sprintf("Unknown variable in language file: %s", name)); writelogfile(LOG_CRIT, process_title, "%s", tb); result++; continue; } } fclose(fp); } if (!result) writelogfile(LOG_INFO, "smsd", "Using language file %s", language_file); } return result;}// Used to select an appropriate header:char *get_header(const char *header, char *header2){ if (header2 && *header2 && strcmp(header2, "-")) { if (*header2 == '-') return header2 +1; return header2; } return (char *)header;}char *get_header_incoming(const char *header, char *header2){ if (!translate_incoming) return (char *)header; return get_header(header, header2);}// Return value: 1/0// hlen = length of a header which matched.int test_header(int *hlen, char *line, const char *header, char *header2){ // header2: // NULL or "" = no translation // "-" = no translation and header is not printed // "-Relat髍io:" = input translated, header is not printed // "Relat髍io:" = input and output translated if (header2 && *header2 && strcmp(header2, "-")) { if (*header2 == '-') { if (!strncmp(line, header2 +1, *hlen = strlen(header2) -1)) return 1; } else if (!strncmp(line, header2, *hlen = strlen(header2))) return 1; } if (!strncmp(line, header, *hlen = strlen(header))) return 1; *hlen = 0; return 0;}int prepare_remove_headers(char *remove_headers, int size){ char *p; if (snprintf(remove_headers, size, "\n%s\n%s\n%s\n%s\n%s\n%s\nPDU:", HDR_FailReason, HDR_Identity, HDR_Modem, HDR_Sent, HDR_MessageId, HDR_Result) >= size) return 0; if ((p = get_header(NULL, HDR_FailReason2))) { if (strlen(remove_headers) + strlen(p) +1 < size) sprintf(strchr(remove_headers, 0), "\n%s", p); else return 0; } if ((p = get_header(NULL, HDR_Identity2))) { if (strlen(remove_headers) + strlen(p) +1 < size) sprintf(strchr(remove_headers, 0), "\n%s", p); else return 0; } if ((p = get_header(NULL, HDR_Modem2))) { if (strlen(remove_headers) + strlen(p) +1 < size) sprintf(strchr(remove_headers, 0), "\n%s", p); else return 0; } if ((p = get_header(NULL, HDR_Sent2))) { if (strlen(remove_headers) + strlen(p) +1 < size) sprintf(strchr(remove_headers, 0), "\n%s", p); else return 0; } if ((p = get_header(NULL, HDR_MessageId2))) { if (strlen(remove_headers) + strlen(p) +1 < size) sprintf(strchr(remove_headers, 0), "\n%s", p); else return 0; } if ((p = get_header(NULL, HDR_Result2))) { if (strlen(remove_headers) + strlen(p) +1 < size) sprintf(strchr(remove_headers, 0), "\n%s", p); else return 0; } return 1;}/* ======================================================================= Macros can be used with ISO/UTF-8 written messages with cs_convert=yes and with binary messages written with hex=yes. A buffer should be 0-terminated and it cannot include 0x00 characters. ======================================================================= */int extract_macros(char *buffer, int buffer_size, char *macros){ int result = 0; char *p_buffer; char *p_macro; char *p_value; char *p; int len_buffer; int len_macro; int len_value; if (macros && *macros) { p_macro = macros; while (*p_macro) { if ((p_value = strchr(p_macro, '='))) { p_value++; *(p_value -1) = 0; // for easier use of strstr. len_macro = strlen(p_macro); len_value = strlen(p_value); p_buffer = buffer; while ((p = strstr(p_buffer, p_macro))) { if (len_macro < len_value) { len_buffer = strlen(buffer); if (len_buffer -len_macro +len_value >= buffer_size) { result = 1; break; } memmove(p +len_value, p +len_macro, len_buffer -(p -buffer) -len_macro +1); } else if (len_macro > len_value) strcpy(p +len_value, p +len_macro); if (len_value > 0) { strncpy(p, p_value, len_value); p_buffer = p +len_value; } } *(p_value -1) = '='; // restore delimiter. } p_macro = strchr(p_macro, 0) +1; } } return result;}/* ======================================================================= */int apply_filename_preview(char *filename, char *text, int setting_length){/*
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -