int main(void) { int num_failures; size_t i; Suite *suite = suite_create(XSTRING(FUNCTION) "_suite"); TCase *tcase = tcase_create(XSTRING(FUNCTION) "_tcase"); SRunner *sr = srunner_create(suite); tcase_add_unchecked_fixture(tcase, setup, teardown); #ifdef GENERATE_GOLD tcase_add_test(tcase, print_gold); #else tcase_add_test(tcase, GOLD_TEST); tcase_add_test(tcase, against_ref_function); add_more_tests(tcase); #endif suite_add_tcase(suite, tcase); srunner_run_all(sr, CK_ENV); num_failures = srunner_ntests_failed(sr); srunner_free(sr); return num_failures ? 1 : 0; }
PCRE_EXP_DEFN const char * pcre_version(void) { return (XSTRING(Z PCRE_PRERELEASE)[1] == 0)? XSTRING(PCRE_MAJOR.PCRE_MINOR PCRE_DATE) : XSTRING(PCRE_MAJOR.PCRE_MINOR) XSTRING(PCRE_PRERELEASE PCRE_DATE); }
static char* S_charmony_string_defines() { const char *pattern = "#define CFISH_INLINE %s\n" "#define CFISH_EXPORT %s\n" "#define CFISH_IMPORT %s\n" "#define CFISH_SIZEOF_CHAR %s\n" "#define CFISH_SIZEOF_SHORT %s\n" "#define CFISH_SIZEOF_INT %s\n" "#define CFISH_SIZEOF_LONG %s\n" "#define CFISH_SIZEOF_SIZE_T %s\n" "#define CFISH_FUNC_MACRO %s\n" "#define CFISH_U64_TO_DOUBLE(x) %s\n"; char *defines = CFCUtil_sprintf(pattern, XSTRING(CHY_INLINE), XSTRING(CHY_EXPORT), XSTRING(CHY_IMPORT), XSTRING(CHY_SIZEOF_CHAR), XSTRING(CHY_SIZEOF_SHORT), XSTRING(CHY_SIZEOF_INT), XSTRING(CHY_SIZEOF_LONG), XSTRING(CHY_SIZEOF_SIZE_T), XSTRING(CHY_FUNC_MACRO), XSTRING(CHY_U64_TO_DOUBLE(x))); return defines; }
int tc_against_gold_v(struct ut_suite *suite, struct ut_tcase *tcase) { size_t i; /* Skip test if we're generation gold data */ if (generate_gold_flag) return UT_SKIP; for (i = 0; i < gold_size; i++) { #if IS_UNARY ut_assert_msg(compare(res[i], gold[i].gold), "%s(%f): %f != %f", XSTRING(FUNCTION), ai[i], res[i], gold[i].gold); #else ut_assert_msg(compare(res[i], gold[i].gold), "%s(%f, %f): %f != %f", XSTRING(FUNCTION), ai[i], bi[i], res[i], gold[i].gold); #endif #ifdef SCALAR_OUTPUT /* Scalar output so only first address is valid */ i++; break; #endif } ut_assert_msg(res[i] == OUTPUT_END_MARKER, "Output end marker was overwritten"); return 0; }
int main(int argc, char *argv[]) { int num_failures; size_t i; Suite *suite = suite_create(XSTRING(FUNCTION) "_suite"); TCase *tcase = tcase_create(XSTRING(FUNCTION) "_tcase"); SRunner *sr = srunner_create(suite); parse_options_or_die(argc, argv); if (gold_file) read_gold_file_or_die(argv[0]); tcase_add_unchecked_fixture(tcase, setup, teardown); if (generate_gold_flag) { tcase_add_test(tcase, print_gold); } else { tcase_add_test(tcase, GOLD_TEST); tcase_add_test(tcase, against_ref_function); add_more_tests(tcase); } suite_add_tcase(suite, tcase); srunner_run_all(sr, CK_ENV); num_failures = srunner_ntests_failed(sr); srunner_free(sr); return num_failures ? 1 : 0; }
/* Compile a regexp and signal a Lisp error if anything goes wrong. */ void compile_pattern (Lisp_Object pattern, struct re_pattern_buffer *bufp, char *translate, int backward) { char *val; Lisp_Object dummy; if (EQ (pattern, last_regexp) && translate == bufp->translate /* 92.4.10 by K.Handa */ /* 93.7.13 by K.Handa */ && NILP (current_buffer->mc_flag) == !bufp->mc_flag && (!bufp->syntax_version || bufp->syntax_version == syntax_table_version) && (!bufp->category_version || bufp->category_version == category_table_version)) return; if (CONSP (pattern)) /* pre-compiled regexp */ { Lisp_Object compiled; val = 0; pattern = XCONS (pattern)->car; if (CONSP (pattern) && (compiled = backward ? XCONS(pattern)->cdr : XCONS(pattern)->car) && XTYPE (compiled) == Lisp_Vector && XVECTOR (compiled)->size == 4) { /* set_pattern will set bufp->allocated to NULL */ set_pattern (compiled, bufp, translate); return; } val = "Invalied pre-compiled regexp"; goto invalid_regexp; } CHECK_STRING (pattern, 0); last_regexp = Qnil; bufp->translate = translate; bufp->syntax_version = bufp->category_version = 0; /* 93.7.13 by K.Handa */ /* 92.7.10 by T.Enami 'bufp->allocated == 0' means bufp->buffer points to pre-compiled pattern in a lisp string, which should not be 'realloc'ed. */ if (bufp->allocated == 0) bufp->buffer = 0; val = re_compile_pattern (XSTRING (pattern)->data, XSTRING (pattern)->size, bufp); if (val) { invalid_regexp: dummy = build_string (val); while (1) Fsignal (Qinvalid_regexp, Fcons (dummy, Qnil)); } last_regexp = pattern; return; }
PCRE_EXP_DEFN const char * PCRE_CALL_CONVENTION pcre32_version(void) #endif { return (XSTRING(Z PCRE_PRERELEASE)[1] == 0)? XSTRING(PCRE_MAJOR.PCRE_MINOR PCRE_DATE) : XSTRING(PCRE_MAJOR.PCRE_MINOR) XSTRING(PCRE_PRERELEASE PCRE_DATE); }
/** * Parser fuction for the default state. * * This is the parser for the normal operation. * * \param m The received message */ void parse_default(tExtendedCAN *m) { switch (m->data[0]) { case CMD_PING: last_heartbeat = timer_get_ms(); can_put_cmd(CMD_PONG, NULL, 0); break; case CMD_GET_VERSION: { char *version = "RK" XSTRING(MAJOR) "." XSTRING(MINOR); uint8_t len = strlen(version); if (len > 7) len = 7; can_put_cmd(CMD_VERSION, (uint8_t*) version, len); } break; case CMD_DRIBBLE: { ballhandler_set((int8_t)m->data[1],(int8_t)m->data[2]); } break; case CMD_STOP: { stop_set((uint8_t)m->data[1]); } break; case CMD_SERVO: { servo_set((uint8_t)m->data[1]); } break; case CMD_LIGHT: { if( (uint8_t)m->data[1] > 0 ) { RESET(OF_LED); light = true; } else { SET(OF_LED); light = false; } //debug("receive light"); } break; case 'm': debug("manual"); manual_mode = true; parse_data = parse_manual; break; default: error("Command not implemented"); break; } }
static void SV_BoundMaxClients( int minimum ) { // get the current maxclients value Cvar_Get( "sv_maxclients", XSTRING( MAX_CLIENTS ), 0, NULL, NULL ); sv_maxclients->modified = qfalse; if ( sv_maxclients->integer < minimum ) { Cvar_Set( "sv_maxclients", va("%i", minimum) ); } else if ( sv_maxclients->integer > MAX_CLIENTS ) { Cvar_Set( "sv_maxclients", XSTRING( MAX_CLIENTS ) ); } }
static void ThreadErrorProc(Tcl_Interp *interpreter) { #ifdef WIN32 /* George Petasis, 21 Feb 2006: * Unfortunatelly, I cannot find a way to measure the LONG_MAX characters * with Visual C++ preprocessor. char buffer[strlen("")] does nto seem to work * with static functions under Visual C++ .NET.*/ char buffer[15]; #else char buffer[strlen(XSTRING(LONG_MAX))]; #endif CONST char *errorInformation; Tcl_Channel errorChannel; errorInformation = Tcl_GetVar(interpreter, "errorInfo", TCL_GLOBAL_ONLY); if (errorInformation == 0) { errorInformation = ""; } errorChannel = Tcl_GetStdChannel(TCL_STDERR); if (errorChannel == NULL) return; sprintf(buffer, "%ld", (long)CURRENTTHREAD); Tcl_WriteChars(errorChannel, "Error from thread ", -1); Tcl_WriteChars(errorChannel, buffer, -1); Tcl_WriteChars(errorChannel, "\n", 1); Tcl_WriteChars(errorChannel, errorInformation, -1); Tcl_WriteChars(errorChannel, "\n", 1); }
xmlDocPtr upmf_document_init (ucstring_t filename, ucstring_t tag) { xmlDocPtr doc; xmlNodePtr node; doc = xmlParseFile (filename); if (doc == NULL) { error (0, 0, _("Document not parsed successfully")); return NULL; } node = xmlDocGetRootElement (doc); if (node == NULL) { error (0, 0, _("Document is empty")); xmlFreeDoc (doc); return NULL; } if (xmlStrcmp (node->name, XSTRING (tag))) { error (0, 0, _("Root element is wrong; is not '%s'"), tag); xmlFreeDoc (doc); return NULL; } return doc; }
int tc_print_gold_e(struct ut_suite *suite, struct ut_tcase *tcase) { size_t i; FILE *ofp; (void) suite; (void) tcase; ofp = fopen(XSTRING(FUNCTION.res), "w"); for (i = 0; i < gold_size; i++) fprintf(ofp, "%f,%f,%f,%f\n", ai[i], bi[i], 0.0f, res[i]); fclose(ofp); fprintf(stdout, "Gold data written to: %s\n", XSTRING(FUNCTION.res)); fprintf(stdout, "You need to manually copy it to gold/%s\n", XSTRING(FUNCTION.dat)); return 0; }
int tc_against_ref_v(struct ut_suite *suite, struct ut_tcase *tcase) { size_t i; generate_ref(ref, gold_size); for (i = 0; i < gold_size; i++) { #if IS_UNARY ut_assert_msg(compare(res[i], ref[i]), "%s(%f): %f != %f", XSTRING(FUNCTION), ai[i], res[i], ref[i]); #else ut_assert_msg(compare(res[i], ref[i]), "%s(%f, %f): %f != %f", XSTRING(FUNCTION), ai[i], bi[i], res[i], ref[i]); #endif #ifdef SCALAR_OUTPUT /* Scalar output so only first address is valid */ i++; break; #endif } return 0; }
END_TEST START_TEST(GOLD_TEST) { size_t i; for (i = 0; i < gold_size; i++) { #if IS_UNARY ck_assert_msg(compare(res[i], gold[i].gold), "%s(%f): %f != %f", XSTRING(FUNCTION), ai[i], res[i], gold[i].gold); #else ck_assert_msg(compare(res[i], gold[i].gold), "%s(%f, %f): %f != %f", XSTRING(FUNCTION), ai[i], bi[i], res[i], gold[i].gold); #endif #ifdef SCALAR_OUTPUT /* Scalar output so only first address is valid */ i++; break; #endif } ck_assert_msg(res[i] == OUTPUT_END_MARKER, "Output end marker was overwritten"); }
static const xmlChar * entry_title_ex(const xmlNode *p, bool attach_c) { const xmlNode *e = find_by_path(p, "Properties/Title/item/content"); const xmlChar *r = 0; if (e) r = children_content(e); if (r) { if (attach_c) { char *buf = malloc(strlen(CHAR(r)) + 3); sprintf(buf, "%s: ", r); r = XSTRING (g_strdup(buf)); free(buf); } return r; } e = find_by_path(p, "Properties/Name"); if (e) r = children_content(e); if (r) { char *buf = malloc(strlen(CHAR(r)) + 5); if (attach_c) sprintf(buf, "[%s]: ", r); else sprintf(buf, "[%s]", r); r = XSTRING (g_strdup(buf)); free(buf); return r; } return 0; }
static char* S_charmony_alloca_defines() { char *defines = CFCUtil_strdup(""); #if defined(CHY_HAS_ALLOCA_H) defines = CFCUtil_cat(defines, "#include <alloca.h>\n", NULL); #elif defined(CHY_HAS_MALLOC_H) defines = CFCUtil_cat(defines, "#include <malloc.h>\n", NULL); #elif defined(CHY_ALLOCA_IN_STDLIB_H) defines = CFCUtil_cat(defines, "#include <stdlib.h>\n", NULL); #endif defines = CFCUtil_cat(defines, "#define cfish_alloca ", XSTRING(chy_alloca), "\n", NULL); return defines; }
static char* S_charmony_stdint_defines() { #ifdef CHY_HAS_STDINT_H return CFCUtil_strdup("#include <stdint.h>\n"); #else const char *pattern = "#ifndef CFISH_HAS_STDINT\n" " typedef %s int8_t;\n" " typedef %s uint8_t;\n" " typedef %s int16_t;\n" " typedef %s uint16_t;\n" " typedef %s int32_t;\n" " typedef %s uint32_t;\n" " typedef %s int64_t;\n" " typedef %s uint64_t;\n" "#endif\n"; return CFCUtil_sprintf(pattern, XSTRING(CHY_INT8_T), XSTRING(CHY_UINT8_T), XSTRING(CHY_INT16_T), XSTRING(CHY_UINT16_T), XSTRING(CHY_INT32_T), XSTRING(CHY_UINT32_T), XSTRING(CHY_INT64_T), XSTRING(CHY_UINT64_T)); #endif }
void init_editfns () { char *user_name; register unsigned char *p, *q; struct passwd *pw; /* password entry for the current user */ Lisp_Object tem; extern char *index (); /* Set up system_name even when dumping. */ Vsystem_name = build_string (get_system_name ()); p = XSTRING (Vsystem_name)->data; while (*p) { if (*p == ' ' || *p == '\t') *p = '-'; p++; } #ifndef CANNOT_DUMP /* Don't bother with this on initial start when just dumping out */ if (!initialized) return; #endif /* not CANNOT_DUMP */ pw = (struct passwd *) getpwuid (getuid ()); Vuser_real_name = build_string (pw ? pw->pw_name : "unknown"); user_name = (char *) getenv ("USER"); if (!user_name) user_name = (char *) getenv ("LOGNAME"); /* USG equivalent */ if (user_name) Vuser_name = build_string (user_name); else Vuser_name = Vuser_real_name; tem = Fstring_equal (Vuser_name, Vuser_real_name); if (!NULL (tem)) pw = (struct passwd *) getpwnam (user_name); p = (unsigned char *) (pw ? USER_FULL_NAME : "unknown"); q = (unsigned char *) index (p, ','); Vuser_full_name = make_string (p, q ? q - p : strlen (p)); #ifdef AMPERSAND_FULL_NAME p = XSTRING (Vuser_full_name)->data; q = (unsigned char *) index (p, '&'); /* Substitute the login name for the &, upcasing the first character. */ if (q) { char *r = (char *) alloca (strlen (p) + XSTRING (Vuser_name)->size + 1); bcopy (p, r, q - p); r[q - p] = 0; strcat (r, XSTRING (Vuser_real_name)->data); r[q - p] = UPCASE (r[q - p]); strcat (r, q + 1); Vuser_full_name = build_string (r); } #endif /* AMPERSAND_FULL_NAME */ }
"invalid condition (?(0)\0" "\\C is not allowed in a lookbehind assertion\0" "PCRE does not support \\L, \\l, \\N{name}, \\U, or \\u\0" "number after (?C is greater than 255\0" "closing parenthesis for (?C expected\0" /* 40 */ "invalid escape sequence in (*VERB) name\0" "unrecognized character after (?P\0" "syntax error in subpattern name (missing terminator)\0" "two named subpatterns have the same name (PCRE2_DUPNAMES not set)\0" "group name must start with a non-digit\0" /* 45 */ "this version of PCRE2 does not have support for \\P, \\p, or \\X\0" "malformed \\P or \\p sequence\0" "unknown property name after \\P or \\p\0" "subpattern name is too long (maximum " XSTRING(MAX_NAME_SIZE) " characters)\0" "too many named subpatterns (maximum " XSTRING(MAX_NAME_COUNT) ")\0" /* 50 */ "invalid range in character class\0" "octal value is greater than \\377 in 8-bit non-UTF-8 mode\0" "internal error: overran compiling workspace\0" "internal error: previously-checked referenced subpattern not found\0" "DEFINE group contains more than one branch\0" /* 55 */ "missing opening brace after \\o\0" "internal error: unknown newline setting\0" "\\g is not followed by a braced, angle-bracketed, or quoted name/number or by a plain number\0" "a numbered reference must not be zero\0" "an argument is not allowed for (*ACCEPT), (*FAIL), or (*COMMIT)\0" /* 60 */ "(*VERB) not recognized or malformed\0"
void init_editfns () { char *user_name; register unsigned char *p, *q; struct passwd *pw; /* password entry for the current user */ Lisp_Object tem; extern char *index (); /* Turn off polling so the SIGALRM won't bother getpwuid. */ stop_polling (); /* Set up system_name even when dumping. */ Vsystem_name = build_string (get_system_name ()); p = XSTRING (Vsystem_name)->data; while (*p) { if (*p == ' ' || *p == '\t') *p = '-'; p++; } #ifndef CANNOT_DUMP /* Don't bother with this on initial start when just dumping out */ if (!initialized) return; #endif /* not CANNOT_DUMP */ pw = (struct passwd *) getpwuid (getuid ()); #ifndef OS2 Vuser_real_name = build_string (pw ? pw->pw_name : "unknown"); #endif /* Get the effective user name, by consulting environment variables, or the effective uid if those are unset. */ user_name = (char *) getenv ("USER"); if (!user_name) user_name = (char *) getenv ("LOGNAME"); /* USG equivalent */ if (!user_name) { pw = (struct passwd *) getpwuid (geteuid ()); user_name = pw ? pw->pw_name : "unknown"; } Vuser_name = build_string (user_name); #ifdef OS2 Vuser_real_name = build_string (user_name); #endif /* If the user name claimed in the environment vars differs from the real uid, use the claimed name to find the full name. */ tem = Fstring_equal (Vuser_name, Vuser_real_name); if (NULL (tem)) pw = (struct passwd *) getpwnam (XSTRING (Vuser_name)->data); p = (unsigned char *) getenv("USERFULLNAME"); if (p==0) p = (unsigned char *) (pw ? USER_FULL_NAME : "unknown"); q = (unsigned char *) index (p, ','); Vuser_full_name = make_string (p, q ? q - p : strlen (p)); #ifdef AMPERSAND_FULL_NAME p = XSTRING (Vuser_full_name)->data; q = (unsigned char *) index (p, '&'); /* Substitute the login name for the &, upcasing the first character. */ if (q) { char *r = (char *) alloca (strlen (p) + XSTRING (Vuser_name)->size + 1); bcopy (p, r, q - p); r[q - p] = 0; strcat (r, XSTRING (Vuser_real_name)->data); r[q - p] = UPCASE (r[q - p]); strcat (r, q + 1); Vuser_full_name = build_string (r); } #endif /* AMPERSAND_FULL_NAME */ start_polling (); }
const char* get_version(void) { return "SW Version: " XSTRING(MAJOR) "." XSTRING(MINOR) " Copyright 2007 CarpeNoctem Kai Baumgart <*****@*****.**>"; }
const CWT_CHAR* pcre_version(void) { return (XSTRING(Z PCRE_PRERELEASE)[1] == 0)? XSTRING(PCRE_MAJOR.PCRE_MINOR PCRE_DATE) : XSTRING(PCRE_MAJOR.PCRE_MINOR) XSTRING(PCRE_PRERELEASE PCRE_DATE); }
PCRE2_EXP_DEFN int PCRE2_CALL_CONVENTION pcre2_config(uint32_t what, void *where) { if (where == NULL) /* Requests a length */ { switch(what) { default: return PCRE2_ERROR_BADOPTION; case PCRE2_CONFIG_BSR: case PCRE2_CONFIG_COMPILED_WIDTHS: case PCRE2_CONFIG_DEPTHLIMIT: case PCRE2_CONFIG_HEAPLIMIT: case PCRE2_CONFIG_JIT: case PCRE2_CONFIG_LINKSIZE: case PCRE2_CONFIG_MATCHLIMIT: case PCRE2_CONFIG_NEVER_BACKSLASH_C: case PCRE2_CONFIG_NEWLINE: case PCRE2_CONFIG_PARENSLIMIT: case PCRE2_CONFIG_STACKRECURSE: /* Obsolete */ case PCRE2_CONFIG_UNICODE: return sizeof(uint32_t); /* These are handled below */ case PCRE2_CONFIG_JITTARGET: case PCRE2_CONFIG_UNICODE_VERSION: case PCRE2_CONFIG_VERSION: break; } } switch (what) { default: return PCRE2_ERROR_BADOPTION; case PCRE2_CONFIG_BSR: #ifdef BSR_ANYCRLF *((uint32_t *)where) = PCRE2_BSR_ANYCRLF; #else *((uint32_t *)where) = PCRE2_BSR_UNICODE; #endif break; case PCRE2_CONFIG_COMPILED_WIDTHS: *((uint32_t *)where) = 0 #ifdef SUPPORT_PCRE2_8 + 1 #endif #ifdef SUPPORT_PCRE2_16 + 2 #endif #ifdef SUPPORT_PCRE2_32 + 4 #endif ; break; case PCRE2_CONFIG_DEPTHLIMIT: *((uint32_t *)where) = MATCH_LIMIT_DEPTH; break; case PCRE2_CONFIG_HEAPLIMIT: *((uint32_t *)where) = HEAP_LIMIT; break; case PCRE2_CONFIG_JIT: #ifdef SUPPORT_JIT *((uint32_t *)where) = 1; #else *((uint32_t *)where) = 0; #endif break; case PCRE2_CONFIG_JITTARGET: #ifdef SUPPORT_JIT { const char *v = PRIV(jit_get_target)(); return (int)(1 + ((where == NULL)? strlen(v) : PRIV(strcpy_c8)((PCRE2_UCHAR *)where, v))); } #else return PCRE2_ERROR_BADOPTION; #endif case PCRE2_CONFIG_LINKSIZE: *((uint32_t *)where) = (uint32_t)configured_link_size; break; case PCRE2_CONFIG_MATCHLIMIT: *((uint32_t *)where) = MATCH_LIMIT; break; case PCRE2_CONFIG_NEWLINE: *((uint32_t *)where) = NEWLINE_DEFAULT; break; case PCRE2_CONFIG_NEVER_BACKSLASH_C: #ifdef NEVER_BACKSLASH_C *((uint32_t *)where) = 1; #else *((uint32_t *)where) = 0; #endif break; case PCRE2_CONFIG_PARENSLIMIT: *((uint32_t *)where) = PARENS_NEST_LIMIT; break; /* This is now obsolete. The stack is no longer used via recursion for handling backtracking in pcre2_match(). */ case PCRE2_CONFIG_STACKRECURSE: *((uint32_t *)where) = 0; break; case PCRE2_CONFIG_UNICODE_VERSION: { #if defined SUPPORT_UNICODE const char *v = PRIV(unicode_version); #else const char *v = "Unicode not supported"; #endif return (int)(1 + ((where == NULL)? strlen(v) : PRIV(strcpy_c8)((PCRE2_UCHAR *)where, v))); } break; case PCRE2_CONFIG_UNICODE: #if defined SUPPORT_UNICODE *((uint32_t *)where) = 1; #else *((uint32_t *)where) = 0; #endif break; /* The hackery in setting "v" below is to cope with the case when PCRE2_PRERELEASE is set to an empty string (which it is for real releases). If the second alternative is used in this case, it does not leave a space before the date. On the other hand, if all four macros are put into a single XSTRING when PCRE2_PRERELEASE is not empty, an unwanted space is inserted. There are problems using an "obvious" approach like this: XSTRING(PCRE2_MAJOR) "." XSTRING(PCRE_MINOR) XSTRING(PCRE2_PRERELEASE) " " XSTRING(PCRE_DATE) because, when PCRE2_PRERELEASE is empty, this leads to an attempted expansion of STRING(). The C standard states: "If (before argument substitution) any argument consists of no preprocessing tokens, the behavior is undefined." It turns out the gcc treats this case as a single empty string - which is what we really want - but Visual C grumbles about the lack of an argument for the macro. Unfortunately, both are within their rights. As there seems to be no way to test for a macro's value being empty at compile time, we have to resort to a runtime test. */ case PCRE2_CONFIG_VERSION: { const char *v = (XSTRING(Z PCRE2_PRERELEASE)[1] == 0)? XSTRING(PCRE2_MAJOR.PCRE2_MINOR PCRE2_DATE) : XSTRING(PCRE2_MAJOR.PCRE2_MINOR) XSTRING(PCRE2_PRERELEASE PCRE2_DATE); return (int)(1 + ((where == NULL)? strlen(v) : PRIV(strcpy_c8)((PCRE2_UCHAR *)where, v))); } } return 0; }
// Only called at main exe startup, not for each game void SV_Init( void ) { int index; // serverinfo vars sv_gametype = Cvar_Get( "sv_gametype", DEFAULT_GAMETYPE, CVAR_SERVERINFO|CVAR_LATCH, "Gametype", NULL ); Cvar_Get( "sv_keywords", "", CVAR_SERVERINFO, NULL, NULL ); sv_mapname = Cvar_Get( "mapname", "nomap", CVAR_SERVERINFO|CVAR_ROM, NULL, NULL ); sv_privateClients = Cvar_Get( "sv_privateClients", "0", CVAR_SERVERINFO, NULL, NULL ); sv_hostname = Cvar_Get( "sv_hostname", "noname", CVAR_SERVERINFO|CVAR_ARCHIVE, "Server name", NULL ); sv_maxclients = Cvar_Get( "sv_maxclients", XSTRING( MAX_CLIENTS ), CVAR_SERVERINFO|CVAR_ARCHIVE|CVAR_LATCH, NULL, NULL ); sv_minRate = Cvar_Get( "sv_minRate", "0", CVAR_ARCHIVE|CVAR_SERVERINFO, NULL, NULL ); sv_maxRate = Cvar_Get( "sv_maxRate", "0", CVAR_ARCHIVE|CVAR_SERVERINFO, NULL, NULL ); sv_dlRate = Cvar_Get( "sv_dlRate", "100", CVAR_ARCHIVE|CVAR_SERVERINFO, NULL, NULL ); sv_minPing = Cvar_Get( "sv_minPing", "0", CVAR_ARCHIVE|CVAR_SERVERINFO, NULL, NULL ); sv_maxPing = Cvar_Get( "sv_maxPing", "0", CVAR_ARCHIVE|CVAR_SERVERINFO, NULL, NULL ); sv_floodProtect = Cvar_Get( "sv_floodProtect", "1", CVAR_ARCHIVE|CVAR_SERVERINFO, NULL, NULL ); // systeminfo Cvar_Get( "sv_cheats", "1", CVAR_NONE, NULL, NULL ); sv_serverid = Cvar_Get( "sv_serverid", "0", CVAR_SYSTEMINFO|CVAR_ROM, NULL, NULL ); sv_pure = Cvar_Get( "sv_pure", "1", CVAR_SYSTEMINFO, NULL, NULL ); #ifdef USE_VOIP sv_voip = Cvar_Get( "sv_voip", "1", CVAR_SYSTEMINFO|CVAR_LATCH, NULL, NULL ); Cvar_CheckRange(sv_voip, 0, 1, qtrue); #endif Cvar_Get( "sv_paks", "", CVAR_SYSTEMINFO|CVAR_ROM, NULL, NULL ); Cvar_Get( "sv_pakNames", "", CVAR_SYSTEMINFO|CVAR_ROM, NULL, NULL ); Cvar_Get( "sv_referencedPaks", "", CVAR_SYSTEMINFO|CVAR_ROM, NULL, NULL ); Cvar_Get( "sv_referencedPakNames", "", CVAR_SYSTEMINFO|CVAR_ROM, NULL, NULL ); // server vars sv_rconPassword = Cvar_Get( "rconPassword", "", CVAR_TEMP, "Password for remote console access", NULL ); sv_privatePassword = Cvar_Get( "sv_privatePassword", "", CVAR_TEMP, NULL, NULL ); sv_snapshotRate = Cvar_Get( "sv_snapshotRate", "25", CVAR_ARCHIVE, "How often clients receive snapshots", NULL ); // 1 <=> sv_snapshotRate <=> 1000/sv_frametime->integer sv_frametime = Cvar_Get( "sv_frametime", "25", CVAR_ARCHIVE, "Server update rate", NULL ); sv_timeout = Cvar_Get( "sv_timeout", "200", CVAR_TEMP, NULL, NULL ); sv_zombietime = Cvar_Get( "sv_zombietime", "2", CVAR_TEMP, NULL, NULL ); Cvar_Get( "nextmap", "", CVAR_TEMP, NULL, NULL ); sv_allowDownload = Cvar_Get( "sv_allowDownload", "0", CVAR_SERVERINFO, NULL, NULL ); Cvar_Get( "sv_dlURL", "", CVAR_SERVERINFO|CVAR_ARCHIVE, NULL, NULL ); sv_master[0] = Cvar_Get( "sv_master1", MASTER_SERVER_NAME, CVAR_NONE, NULL, NULL ); for ( index=1; index<MAX_MASTER_SERVERS; index++ ) sv_master[index] = Cvar_Get( va( "sv_master%d", index+1 ), "", CVAR_ARCHIVE, NULL, NULL ); sv_reconnectlimit = Cvar_Get( "sv_reconnectlimit", "3", CVAR_NONE, NULL, NULL ); sv_showloss = Cvar_Get( "sv_showloss", "0", CVAR_NONE, NULL, NULL ); sv_padPackets = Cvar_Get( "sv_padPackets", "0", CVAR_NONE, NULL, NULL ); sv_killserver = Cvar_Get( "sv_killserver", "0", CVAR_NONE, NULL, NULL ); sv_mapChecksum = Cvar_Get( "sv_mapChecksum", "", CVAR_ROM, NULL, NULL ); sv_lanForceRate = Cvar_Get( "sv_lanForceRate", "1", CVAR_ARCHIVE, NULL, NULL ); sv_banFile = Cvar_Get( "sv_banFile", "serverbans.dat", CVAR_ARCHIVE, NULL, NULL ); // from common, should be read-only cl_paused = Cvar_Get( "cl_paused", "0", CVAR_ROM, NULL, NULL ); com_cl_running = Cvar_Get( "cl_running", "0", CVAR_ROM, NULL, NULL ); #ifdef DEDICATED com_dedicated = Cvar_Get( "dedicated", "2", CVAR_INIT, NULL, NULL ); Cvar_CheckRange( com_dedicated, 1, 2, qtrue ); #else com_dedicated = Cvar_Get( "dedicated", "0", CVAR_LATCH, NULL, NULL); Cvar_CheckRange( com_dedicated, 0, 2, qtrue ); #endif com_gamename = Cvar_Get( "com_gamename", GAMENAME_FOR_MASTER, CVAR_SERVERINFO|CVAR_INIT, NULL, NULL ); com_protocol = Cvar_Get( "com_protocol", XSTRING( PROTOCOL_VERSION ), CVAR_SERVERINFO|CVAR_INIT, NULL, NULL ); com_speeds = Cvar_Get( "com_speeds", "0", CVAR_NONE, NULL, NULL ); com_sv_running = Cvar_Get( "sv_running", "0", CVAR_ROM, NULL, NULL ); com_timescale = Cvar_Get( "timescale", "1", CVAR_CHEAT|CVAR_SYSTEMINFO, NULL, NULL ); sv_paused = Cvar_Get( "sv_paused", "0", CVAR_ROM, NULL, NULL ); // end common SV_AddOperatorCommands(); // initialize bot cvars so they are listed and can be set before loading the botlib SV_BotInitCvars(); // init the botlib here because we need the pre-compiler in the UI SV_BotInitBotLib(); // Load saved bans Cbuf_AddText("rehashbans\n"); }
/* =============== R_Register =============== */ void R_Register( void ) { // // latched and archived variables // r_allowExtensions = ri->Cvar_Get( "r_allowExtensions", "1", CVAR_ARCHIVE|CVAR_LATCH, "" ); r_ext_compressed_textures = ri->Cvar_Get( "r_ext_compress_textures", "1", CVAR_ARCHIVE|CVAR_LATCH, "" ); r_ext_compressed_lightmaps = ri->Cvar_Get( "r_ext_compress_lightmaps", "0", CVAR_ARCHIVE|CVAR_LATCH, "" ); r_ext_preferred_tc_method = ri->Cvar_Get( "r_ext_preferred_tc_method", "0", CVAR_ARCHIVE|CVAR_LATCH, "" ); r_ext_gamma_control = ri->Cvar_Get( "r_ext_gamma_control", "1", CVAR_ARCHIVE|CVAR_LATCH, "" ); r_ext_multitexture = ri->Cvar_Get( "r_ext_multitexture", "1", CVAR_ARCHIVE|CVAR_LATCH, "" ); r_ext_compiled_vertex_array = ri->Cvar_Get( "r_ext_compiled_vertex_array", "1", CVAR_ARCHIVE|CVAR_LATCH, "" ); r_ext_texture_env_add = ri->Cvar_Get( "r_ext_texture_env_add", "1", CVAR_ARCHIVE|CVAR_LATCH, "" ); r_ext_texture_filter_anisotropic = ri->Cvar_Get( "r_ext_texture_filter_anisotropic", "16", CVAR_ARCHIVE, "" ); r_DynamicGlow = ri->Cvar_Get( "r_DynamicGlow", "0", CVAR_ARCHIVE, "" ); r_DynamicGlowPasses = ri->Cvar_Get( "r_DynamicGlowPasses", "5", CVAR_ARCHIVE, "" ); r_DynamicGlowDelta = ri->Cvar_Get( "r_DynamicGlowDelta", "0.8f", CVAR_ARCHIVE, "" ); r_DynamicGlowIntensity = ri->Cvar_Get( "r_DynamicGlowIntensity", "1.13f", CVAR_ARCHIVE, "" ); r_DynamicGlowSoft = ri->Cvar_Get( "r_DynamicGlowSoft", "1", CVAR_ARCHIVE, "" ); r_DynamicGlowWidth = ri->Cvar_Get( "r_DynamicGlowWidth", "320", CVAR_ARCHIVE|CVAR_LATCH, "" ); r_DynamicGlowHeight = ri->Cvar_Get( "r_DynamicGlowHeight", "240", CVAR_ARCHIVE|CVAR_LATCH, "" ); r_picmip = ri->Cvar_Get( "r_picmip", "1", CVAR_ARCHIVE|CVAR_LATCH, "" ); ri->Cvar_CheckRange( r_picmip, 0, 16, qtrue ); r_colorMipLevels = ri->Cvar_Get( "r_colorMipLevels", "0", CVAR_LATCH, "" ); r_detailTextures = ri->Cvar_Get( "r_detailtextures", "1", CVAR_ARCHIVE|CVAR_LATCH, "" ); r_texturebits = ri->Cvar_Get( "r_texturebits", "0", CVAR_ARCHIVE|CVAR_LATCH, "" ); r_texturebitslm = ri->Cvar_Get( "r_texturebitslm", "0", CVAR_ARCHIVE|CVAR_LATCH, "" ); r_colorbits = ri->Cvar_Get( "r_colorbits", "0", CVAR_ARCHIVE|CVAR_LATCH, "" ); r_stereo = ri->Cvar_Get( "r_stereo", "0", CVAR_ARCHIVE|CVAR_LATCH, "" ); r_stencilbits = ri->Cvar_Get( "r_stencilbits", "8", CVAR_ARCHIVE|CVAR_LATCH, "" ); r_depthbits = ri->Cvar_Get( "r_depthbits", "0", CVAR_ARCHIVE|CVAR_LATCH, "" ); r_overBrightBits = ri->Cvar_Get( "r_overBrightBits", "0", CVAR_ARCHIVE|CVAR_LATCH, "" ); r_ignorehwgamma = ri->Cvar_Get( "r_ignorehwgamma", "0", CVAR_ARCHIVE|CVAR_LATCH, "" ); r_mode = ri->Cvar_Get( "r_mode", "4", CVAR_ARCHIVE|CVAR_LATCH, "" ); r_fullscreen = ri->Cvar_Get( "r_fullscreen", "0", CVAR_ARCHIVE|CVAR_LATCH, "" ); r_noborder = ri->Cvar_Get( "r_noborder", "0", CVAR_ARCHIVE|CVAR_LATCH, "" ); r_centerWindow = ri->Cvar_Get( "r_centerWindow", "0", CVAR_ARCHIVE|CVAR_LATCH, "" ); r_customwidth = ri->Cvar_Get( "r_customwidth", "1600", CVAR_ARCHIVE|CVAR_LATCH, "" ); r_customheight = ri->Cvar_Get( "r_customheight", "1024", CVAR_ARCHIVE|CVAR_LATCH, "" ); r_simpleMipMaps = ri->Cvar_Get( "r_simpleMipMaps", "1", CVAR_ARCHIVE|CVAR_LATCH, "" ); r_vertexLight = ri->Cvar_Get( "r_vertexLight", "0", CVAR_ARCHIVE|CVAR_LATCH, "" ); r_uiFullScreen = ri->Cvar_Get( "r_uifullscreen", "0", CVAR_NONE, "" ); r_subdivisions = ri->Cvar_Get( "r_subdivisions", "4", CVAR_ARCHIVE|CVAR_LATCH, "" ); r_displayRefresh = ri->Cvar_Get( "r_displayRefresh", "0", CVAR_LATCH, "" ); ri->Cvar_CheckRange( r_displayRefresh, 0, 200, qtrue ); r_fullbright = ri->Cvar_Get( "r_fullbright", "0", CVAR_CHEAT, "" ); r_intensity = ri->Cvar_Get( "r_intensity", "1", CVAR_LATCH, "" ); r_singleShader = ri->Cvar_Get( "r_singleShader", "0", CVAR_CHEAT|CVAR_LATCH, "" ); r_lodCurveError = ri->Cvar_Get( "r_lodCurveError", "250", CVAR_ARCHIVE, "" ); r_lodbias = ri->Cvar_Get( "r_lodbias", "0", CVAR_ARCHIVE, "" ); r_autolodscalevalue = ri->Cvar_Get( "r_autolodscalevalue", "0", CVAR_ROM, "" ); r_flares = ri->Cvar_Get( "r_flares", "1", CVAR_ARCHIVE, "" ); r_znear = ri->Cvar_Get( "r_znear", "4", CVAR_ARCHIVE, "" ); ri->Cvar_CheckRange( r_znear, 0.001f, 10, qfalse ); r_ignoreGLErrors = ri->Cvar_Get( "r_ignoreGLErrors", "1", CVAR_ARCHIVE, "" ); r_fastsky = ri->Cvar_Get( "r_fastsky", "0", CVAR_ARCHIVE, "" ); r_inGameVideo = ri->Cvar_Get( "r_inGameVideo", "1", CVAR_ARCHIVE, "" ); r_drawSun = ri->Cvar_Get( "r_drawSun", "0", CVAR_ARCHIVE, "" ); r_dynamiclight = ri->Cvar_Get( "r_dynamiclight", "1", CVAR_ARCHIVE, "" ); // rjr - removed for hacking // r_dlightBacks = ri->Cvar_Get( "r_dlightBacks", "1", CVAR_CHEAT, "" ); r_finish = ri->Cvar_Get( "r_finish", "0", CVAR_ARCHIVE, "" ); r_textureMode = ri->Cvar_Get( "r_textureMode", "GL_LINEAR_MIPMAP_NEAREST", CVAR_ARCHIVE, "" ); r_swapInterval = ri->Cvar_Get( "r_swapInterval", "0", SWAPINTERVAL_FLAGS, "" ); r_markcount = ri->Cvar_Get( "r_markcount", "100", CVAR_ARCHIVE, "" ); r_gamma = ri->Cvar_Get( "r_gamma", "1", CVAR_ARCHIVE, "" ); r_facePlaneCull = ri->Cvar_Get( "r_facePlaneCull", "1", CVAR_ARCHIVE, "" ); r_cullRoofFaces = ri->Cvar_Get( "r_cullRoofFaces", "0", CVAR_CHEAT, "" ); //attempted smart method of culling out upwards facing surfaces on roofs for automap shots -rww r_roofCullCeilDist = ri->Cvar_Get( "r_roofCullCeilDist", "256", CVAR_CHEAT, "" ); //attempted smart method of culling out upwards facing surfaces on roofs for automap shots -rww r_roofCullFloorDist = ri->Cvar_Get( "r_roofCeilFloorDist", "128", CVAR_CHEAT, "" ); //attempted smart method of culling out upwards facing surfaces on roofs for automap shots -rww r_primitives = ri->Cvar_Get( "r_primitives", "0", CVAR_ARCHIVE, "" ); ri->Cvar_CheckRange( r_primitives, MIN_PRIMITIVES, MAX_PRIMITIVES, qtrue ); r_ambientScale = ri->Cvar_Get( "r_ambientScale", "0.6", CVAR_CHEAT, "" ); r_directedScale = ri->Cvar_Get( "r_directedScale", "1", CVAR_CHEAT, "" ); r_autoMap = ri->Cvar_Get( "r_autoMap", "0", CVAR_ARCHIVE, "" ); //automap renderside toggle for debugging -rww r_autoMapBackAlpha = ri->Cvar_Get( "r_autoMapBackAlpha", "0", CVAR_NONE, "" ); //alpha of automap bg -rww r_autoMapDisable = ri->Cvar_Get( "r_autoMapDisable", "1", CVAR_NONE, "" ); r_showImages = ri->Cvar_Get( "r_showImages", "0", CVAR_CHEAT, "" ); r_debugLight = ri->Cvar_Get( "r_debuglight", "0", CVAR_TEMP, "" ); r_debugSort = ri->Cvar_Get( "r_debugSort", "0", CVAR_CHEAT, "" ); r_dlightStyle = ri->Cvar_Get( "r_dlightStyle", "1", CVAR_TEMP, "" ); r_surfaceSprites = ri->Cvar_Get( "r_surfaceSprites", "1", CVAR_TEMP, "" ); r_surfaceWeather = ri->Cvar_Get( "r_surfaceWeather", "0", CVAR_TEMP, "" ); r_windSpeed = ri->Cvar_Get( "r_windSpeed", "0", CVAR_NONE, "" ); r_windAngle = ri->Cvar_Get( "r_windAngle", "0", CVAR_NONE, "" ); r_windGust = ri->Cvar_Get( "r_windGust", "0", CVAR_NONE, "" ); r_windDampFactor = ri->Cvar_Get( "r_windDampFactor", "0.1", CVAR_NONE, "" ); r_windPointForce = ri->Cvar_Get( "r_windPointForce", "0", CVAR_NONE, "" ); r_windPointX = ri->Cvar_Get( "r_windPointX", "0", CVAR_NONE, "" ); r_windPointY = ri->Cvar_Get( "r_windPointY", "0", CVAR_NONE, "" ); r_nocurves = ri->Cvar_Get( "r_nocurves", "0", CVAR_CHEAT, "" ); r_drawworld = ri->Cvar_Get( "r_drawworld", "1", CVAR_CHEAT, "" ); r_drawfog = ri->Cvar_Get( "r_drawfog", "2", CVAR_CHEAT, "" ); r_lightmap = ri->Cvar_Get( "r_lightmap", "0", CVAR_CHEAT, "" ); r_portalOnly = ri->Cvar_Get( "r_portalOnly", "0", CVAR_CHEAT, "" ); r_skipBackEnd = ri->Cvar_Get( "r_skipBackEnd", "0", CVAR_CHEAT, "" ); r_measureOverdraw = ri->Cvar_Get( "r_measureOverdraw", "0", CVAR_CHEAT, "" ); r_lodscale = ri->Cvar_Get( "r_lodscale", "5", CVAR_NONE, "" ); r_norefresh = ri->Cvar_Get( "r_norefresh", "0", CVAR_CHEAT, "" ); r_drawentities = ri->Cvar_Get( "r_drawentities", "1", CVAR_CHEAT, "" ); r_ignore = ri->Cvar_Get( "r_ignore", "1", CVAR_CHEAT, "" ); r_nocull = ri->Cvar_Get( "r_nocull", "0", CVAR_CHEAT, "" ); r_novis = ri->Cvar_Get( "r_novis", "0", CVAR_CHEAT, "" ); r_showcluster = ri->Cvar_Get( "r_showcluster", "0", CVAR_CHEAT, "" ); r_speeds = ri->Cvar_Get( "r_speeds", "0", CVAR_CHEAT, "" ); r_verbose = ri->Cvar_Get( "r_verbose", "0", CVAR_CHEAT, "" ); r_logFile = ri->Cvar_Get( "r_logFile", "0", CVAR_CHEAT, "" ); r_debugSurface = ri->Cvar_Get( "r_debugSurface", "0", CVAR_CHEAT, "" ); r_nobind = ri->Cvar_Get( "r_nobind", "0", CVAR_CHEAT, "" ); r_showtris = ri->Cvar_Get( "r_showtris", "0", CVAR_CHEAT, "" ); r_showsky = ri->Cvar_Get( "r_showsky", "0", CVAR_CHEAT, "" ); r_shownormals = ri->Cvar_Get( "r_shownormals", "0", CVAR_CHEAT, "" ); r_clear = ri->Cvar_Get( "r_clear", "0", CVAR_CHEAT, "" ); r_offsetFactor = ri->Cvar_Get( "r_offsetfactor", "-1", CVAR_CHEAT, "" ); r_offsetUnits = ri->Cvar_Get( "r_offsetunits", "-2", CVAR_CHEAT, "" ); r_lockpvs = ri->Cvar_Get( "r_lockpvs", "0", CVAR_CHEAT, "" ); r_noportals = ri->Cvar_Get( "r_noportals", "0", CVAR_CHEAT, "" ); r_shadows = ri->Cvar_Get( "cg_shadows", "1", CVAR_NONE, "" ); r_shadowRange = ri->Cvar_Get( "r_shadowRange", "1000", CVAR_NONE, "" ); r_maxpolys = ri->Cvar_Get( "r_maxpolys", XSTRING( DEFAULT_MAX_POLYS ), CVAR_NONE, "" ); r_maxpolyverts = ri->Cvar_Get( "r_maxpolyverts", XSTRING( DEFAULT_MAX_POLYVERTS ), CVAR_NONE, "" ); /* Ghoul2 Insert Start */ #ifdef _DEBUG r_noPrecacheGLA = ri->Cvar_Get( "r_noPrecacheGLA", "0", CVAR_CHEAT, "" ); #endif r_noServerGhoul2 = ri->Cvar_Get( "r_noserverghoul2", "0", CVAR_CHEAT, "" ); r_Ghoul2AnimSmooth = ri->Cvar_Get( "r_ghoul2animsmooth", "0.3", CVAR_NONE, "" ); r_Ghoul2UnSqashAfterSmooth = ri->Cvar_Get( "r_ghoul2unsqashaftersmooth", "1", CVAR_NONE, "" ); broadsword = ri->Cvar_Get( "broadsword", "0", CVAR_NONE, "" ); broadsword_kickbones = ri->Cvar_Get( "broadsword_kickbones", "1", CVAR_NONE, "" ); broadsword_kickorigin = ri->Cvar_Get( "broadsword_kickorigin", "1", CVAR_NONE, "" ); broadsword_dontstopanim = ri->Cvar_Get( "broadsword_dontstopanim", "0", CVAR_NONE, "" ); broadsword_waitforshot = ri->Cvar_Get( "broadsword_waitforshot", "0", CVAR_NONE, "" ); broadsword_playflop = ri->Cvar_Get( "broadsword_playflop", "1", CVAR_NONE, "" ); broadsword_smallbbox = ri->Cvar_Get( "broadsword_smallbbox", "0", CVAR_NONE, "" ); broadsword_extra1 = ri->Cvar_Get( "broadsword_extra1", "0", CVAR_NONE, "" ); broadsword_extra2 = ri->Cvar_Get( "broadsword_extra2", "0", CVAR_NONE, "" ); broadsword_effcorr = ri->Cvar_Get( "broadsword_effcorr", "1", CVAR_NONE, "" ); broadsword_ragtobase = ri->Cvar_Get( "broadsword_ragtobase", "2", CVAR_NONE, "" ); broadsword_dircap = ri->Cvar_Get( "broadsword_dircap", "64", CVAR_NONE, "" ); /* Ghoul2 Insert End */ r_modelpoolmegs = ri->Cvar_Get("r_modelpoolmegs", "20", CVAR_ARCHIVE, "" ); if (ri->Sys_LowPhysicalMemory() ) ri->Cvar_Set("r_modelpoolmegs", "0"); for ( size_t i = 0; i < numCommands; i++ ) ri->Cmd_AddCommand( commands[i].cmd, commands[i].func, "" ); }
/* pattern is a list of strings: compiled_code, fastmap, syntax_fastmap, category_fastmap */ void set_pattern (Lisp_Object pattern, struct re_pattern_buffer *bufp, char *translate) { Lisp_Object temp; if (bufp->allocated != 0) { /* Coming here means that this buffer was used to hold an old-style pattern. Because new-style pattern is not self-destructive, we only have to set pointer. Instead, to avoid it being freed later, bufp->allocated should be set to 0. */ free (bufp->buffer); bufp->allocated = 0; } temp = XVECTOR (pattern)->contents[0]; bufp->buffer = (char *)XSTRING (temp)->data; bufp->used = XSTRING (temp)->size; bufp->translate = translate; /* 93.7.13 by K.Handa -- set fastmap */ bufp->mc_flag = !NILP (current_buffer->mc_flag); { Lisp_Object fmap, syntax_fmap, category_fmap; char *fastmap = bufp->fastmap; int i; unsigned char ch; bufp->fastmap_accurate = 1; fmap = XVECTOR (pattern)->contents[1]; if (NILP (fmap) && NILP (syntax_fmap) && NILP (category_fmap)) { bufp->can_be_null = 1; } else { bufp->can_be_null = 0; bzero (fastmap, 256); if (XTYPE (fmap) == Lisp_String) /* 93.7.19 by K.Handa */ bcopy (XSTRING (fmap)->data, fastmap, XSTRING (fmap)->size); syntax_fmap = XVECTOR (pattern)->contents[2]; if (XTYPE (syntax_fmap) == Lisp_String) { for (ch = 0; ch < 0x80; ch++) if (!fastmap[ch] && XSTRING (syntax_fmap)->data[syntax_code_spec[(char) SYNTAX (ch)]]) fastmap[ch] = 1; bufp->syntax_version = syntax_table_version; } else bufp->syntax_version = 0; category_fmap = XVECTOR (pattern)->contents[3]; if (XTYPE (category_fmap) == Lisp_String) { char str[96], *p; int not_category_spec = 0; for (i = 32; i < 128; i++) if (XSTRING (category_fmap)->data[i] == 2) { not_category_spec = 1; break; } for (ch = 0; ch < 0x80; ch++) { if (!fastmap[ch]) { pack_mnemonic_string (char_category (ch, current_buffer->category_table), str); if (not_category_spec) { for (p = str; *p; p++) if (XSTRING (category_fmap)->data[*p] != 2) { fastmap[ch] = 1; break; } } else { for (p = str; *p; p++) if (XSTRING (category_fmap)->data[*p] == 1) { fastmap[ch] = 1; break; } } } } bufp->category_version = category_table_version; } else bufp->category_version = 0; if (bufp->mc_flag && (XTYPE (syntax_fmap) == Lisp_String || XTYPE (category_fmap) == Lisp_String)) { for (ch = 0x80; ch < 0xA0; ch++) fastmap[ch] = 1; } } } /* 92.7.10 by T.Enami Force 're-compile-pattern' when compile_pattern is called next time. */ last_regexp = Qnil; }