compress.c: if ((sp - num_arg + 1)->type != T_STRING) {
compress.c: input_file = (sp - num_arg + 1)->u.string;
compress.c: if (((sp - num_arg + 2)->type != T_STRING)) {
compress.c: output_file = (sp - num_arg + 2)->u.string;
compress.c: if (!strcmp(input_file + len - strlen(GZ_EXTENSION), GZ_EXTENSION)) {
compress.c: if ((sp - num_arg + 1)->type != T_STRING) {
compress.c: input_file = (sp - num_arg + 1)->u.string;
compress.c: if (((sp - num_arg + 2)->type != T_STRING)) {
compress.c: output_file = (sp - num_arg + 2)->u.string;
compress.c: if (strcmp(input_file + len - strlen(GZ_EXTENSION), GZ_EXTENSION)) {
compress.c: output_file[len - strlen(GZ_EXTENSION)] = 0;
compress.c: if (sp->type == T_STRING) {
compress.c: input = (unsigned char*)sp->u.string;
compress.c: } else if (sp->type == T_BUFFER) {
compress.c: size = sp->u.buf->size;
compress.c: input = sp->u.buf->item;
compress.c: if (sp->type == T_BUFFER) {
compress.c: buffer = sp->u.buf;
compress.c: compress->next_in = buffer->item;
compress.c: compress->avail_in = buffer->size;
compress.c: compress->next_out = compress_buf;
compress.c: compress->avail_out = COMPRESS_BUF_SIZE;
compress.c: compress->zalloc = zlib_alloc;
compress.c: compress->zfree = zlib_free;
compress.c: compress->opaque = NULL;
compress.c: len += COMPRESS_BUF_SIZE - compress->avail_out;
compress.c: memcpy(output_data + pos, compress_buf, len - pos);
compress.c: compress->next_out = compress_buf;
compress.c: compress->avail_out = COMPRESS_BUF_SIZE;
compress.c: memcpy(buffer->item, output_data, len);
contrib.c: i = sp->u.ob->interactive && sp->u.ob->interactive->compressed_stream;
contrib.c: free_object(sp->u.ob, "f_compressedp");
contrib.c: for (ob = hashed_living[i]; ob; ob = ob->next_hashed_living) {
contrib.c: if (!(ob->flags & O_ENABLE_COMMANDS))
contrib.c: if (ob->flags & O_HIDDEN) {
contrib.c: while (--nob >= 0) {
contrib.c: vec->item[nob].type = T_OBJECT;
contrib.c: vec->item[nob].u.ob = obtab[nob];
contrib.c: ob = sp->u.ob;
contrib.c: if (ob == 0 || (ob->shadowing == 0 && ob->shadowed == 0))
contrib.c: if (ob->shadowed)
contrib.c: ob->shadowed->shadowing = ob->shadowing;
contrib.c: if (ob->shadowing)
contrib.c: ob->shadowing->shadowed = ob->shadowed;
contrib.c: ob->shadowing = ob->shadowed = 0;
contrib.c: when I added it (added function support, etc) -Beek */
contrib.c: if (command_giver && command_giver->interactive) {
contrib.c: if (command_giver->interactive->iflags & NOTIFY_FAIL_FUNC) {
contrib.c: push_funp(command_giver->interactive->default_err_message.f);
contrib.c: } else if ((p = command_giver->interactive->default_err_message.s)) {
contrib.c: sp->type = T_STRING;
contrib.c: sp->subtype = STRING_SHARED;
contrib.c: sp->u.string = p;
contrib.c: idx = find_global_variable(current_object->prog, (sp-1)->u.string, &type, 0);
contrib.c: if (idx == -1)
contrib.c: error("No variable named '%s'!\n", (sp-1)->u.string);
contrib.c: sv = ¤t_object->variables[idx];
contrib.c: *sv = *sp--;
contrib.c: free_string_svalue(sp--);
contrib.c: idx = find_global_variable(current_object->prog, sp->u.string, &type, 0);
contrib.c: if (idx == -1)
contrib.c: error("No variable named '%s'!\n", sp->u.string);
contrib.c: sv = ¤t_object->variables[idx];
contrib.c: free_string_svalue(sp--);
contrib.c: who = sp->u.ob;
contrib.c: if (!who || who->flags & O_DESTRUCTED || !who->interactive)
contrib.c: * both. -Beek
contrib.c: vec = allocate_empty_array(arg->size);
contrib.c: for (i = 0; i < arg->size; i++)
contrib.c: deep_copy_svalue(&arg->item[i], &vec->item[i]);
contrib.c: vec = allocate_empty_class_by_size(arg->size);
contrib.c: for (i = 0; i < arg->size; i++)
contrib.c: deep_copy_svalue(&arg->item[i], &vec->item[i]);
contrib.c: sv = find_for_insert(dest, &elt->values[0], 1);
contrib.c: deep_copy_svalue(&elt->values[1], sv);
contrib.c: map = allocate_mapping( 0 ); /* this should be fixed. -Beek */
contrib.c: switch (from->type) {
contrib.c: to->u.arr = deep_copy_array( from->u.arr );
contrib.c: depth--;
contrib.c: to->u.arr = deep_copy_class( from->u.arr );
contrib.c: depth--;
contrib.c: to->u.map = deep_copy_mapping( from->u.map );
contrib.c: depth--;
contrib.c: int flag = (sp--)->u.number;
contrib.c: if (sp->u.ob->flags & O_SWAPPED)
contrib.c: load_ob_from_swap(sp->u.ob);
contrib.c: progp = sp->u.ob->prog;
contrib.c: num = progp->num_functions_defined + progp->last_inherited;
contrib.c: if (progp->num_functions_defined &&
contrib.c: progp->function_table[progp->num_functions_defined-1].name[0]
contrib.c: num--;
contrib.c: while (i--) {
contrib.c: prog = sp->u.ob->prog;
contrib.c: if (prog->function_flags[index] & FUNC_ALIAS) {
contrib.c: index = prog->function_flags[index] & ~FUNC_ALIAS;
contrib.c: while (prog->function_flags[index] & FUNC_INHERITED) {
contrib.c: high = prog->num_inherited -1;
contrib.c: if (prog->inherit[mid].function_index_offset > index)
contrib.c: high = mid -1;
contrib.c: index -= prog->inherit[low].function_index_offset;
contrib.c: prog = prog->inherit[low].prog;
contrib.c: index -= prog->last_inherited;
contrib.c: funp = prog->function_table + index;
contrib.c: if (prog->type_start && prog->type_start[index] != INDEX_START_NONE)
contrib.c: types = &prog->argument_types[prog->type_start[index]];
contrib.c: vec->item[i].type = T_ARRAY;
contrib.c: subvec = vec->item[i].u.arr = allocate_empty_array(3 + funp->num_arg);
contrib.c: subvec->item[0].type = T_STRING;
contrib.c: subvec->item[0].subtype = STRING_SHARED;
contrib.c: subvec->item[0].u.string = ref_string(funp->name);
contrib.c: subvec->item[1].type = T_NUMBER;
contrib.c: subvec->item[1].subtype = 0;
contrib.c: subvec->item[1].u.number = funp->num_arg;
contrib.c: get_type_name(buf, end, funp->type);
contrib.c: subvec->item[2].type = T_STRING;
contrib.c: subvec->item[2].subtype = STRING_SHARED;
contrib.c: subvec->item[2].u.string = make_shared_string(buf);
contrib.c: for (j = 0; j < funp->num_arg; j++) {
contrib.c: subvec->item[3 + j].type = T_STRING;
contrib.c: subvec->item[3 + j].subtype = STRING_SHARED;
contrib.c: subvec->item[3 + j].u.string = make_shared_string(buf);
contrib.c: subvec->item[3 + j].type = T_NUMBER;
contrib.c: subvec->item[3 + j].u.number = 0;
contrib.c: vec->item[i].type = T_STRING;
contrib.c: vec->item[i].subtype = STRING_SHARED;
contrib.c: vec->item[i].u.string = ref_string(funp->name);
contrib.c: for (i = 0; i < prog->num_inherited; i++) {
contrib.c: fv_recurse(arr, idx, prog->inherit[i].prog,
contrib.c: type | prog->inherit[i].type_mod, flag);
contrib.c: for (i = 0; i < prog->num_variables_defined; i++) {
contrib.c: arr->item[*idx + i].type = T_ARRAY;
contrib.c: subarr = arr->item[*idx + i].u.arr = allocate_empty_array(2);
contrib.c: subarr->item[0].type = T_STRING;
contrib.c: subarr->item[0].subtype = STRING_SHARED;
contrib.c: subarr->item[0].u.string = ref_string(prog->variable_table[i]);
contrib.c: get_type_name(buf, end, prog->variable_types[i]);
contrib.c: subarr->item[1].type = T_STRING;
contrib.c: subarr->item[1].subtype = STRING_SHARED;
contrib.c: subarr->item[1].u.string = make_shared_string(buf);
contrib.c: arr->item[*idx + i].type = T_STRING;
contrib.c: arr->item[*idx + i].subtype = STRING_SHARED;
contrib.c: arr->item[*idx + i].u.string = ref_string(prog->variable_table[i]);
contrib.c: *idx += prog->num_variables_defined;
contrib.c: int flag = (sp--)->u.number;
contrib.c: program_t *prog = sp->u.ob->prog;
contrib.c: if (sp->u.ob->flags & O_SWAPPED)
contrib.c: load_ob_from_swap(sp->u.ob);
contrib.c: arr = allocate_empty_array(prog->num_variables_total);
contrib.c: by Aleas@Nightmare, dec-94 */
contrib.c: indent = (sp--)->u.number;
contrib.c: wrap = (sp--)->u.number;
contrib.c: if (indent < 0 || indent >= wrap - 1)
contrib.c: indent = wrap - 2;
contrib.c: cp = instr = (sp-1)->u.string;
contrib.c: cp = savestr + ( cp - instr );
contrib.c: if (cp - instr) { /* starting seg, if not delimiter */
contrib.c: sp->type = T_STRING;
contrib.c: sp->subtype = STRING_CONSTANT;
contrib.c: sp->u.string = "";
contrib.c: mtab = sp->u.map->table;
contrib.c: start = -1;
contrib.c: for (j = i = 0, k = sp->u.map->table_size; i < num; i++) {
contrib.c: for (elt = mtab[tmp & k]; elt; elt = elt->next)
contrib.c: if ( elt->values->type == T_STRING &&
contrib.c: (elt->values + 1)->type == T_STRING &&
contrib.c: cp == elt->values->u.string) {
contrib.c: parts[i] = (elt->values + 1)->u.string;
contrib.c: lens[i] = SVALUE_STRLEN(elt->values + 1);
contrib.c: if (wrap) lens[i] = -lens[i];
contrib.c: if (j + -lens[i] > max_string_length)
contrib.c: lens[i] = -(-(lens[i]) - (j + -lens[i] - max_string_length));
contrib.c: j += -lens[i];
contrib.c: buflen += -lens[i];
contrib.c: lens[i] -= j - max_string_length;
contrib.c: start = -1;
contrib.c: j--;
contrib.c: buflen--;
contrib.c: col += (8 - ((col - 1) % 8));
contrib.c: col -= space;
contrib.c: buflen -= space_buflen;
contrib.c: lens[i] -= (j - max_string_length);
contrib.c: start = -1;
contrib.c: memcpy(pt, p, -lens[i]);
contrib.c: pt += -lens[i];
contrib.c: buflen += -lens[i];
contrib.c: space_garbage += -lens[i]; /* Number of chars due to ignored junk
contrib.c: start = -1;
contrib.c: pt--;
contrib.c: buflen--;
contrib.c: col += (8 - ((col - 1) % 8));
contrib.c: col -= space;
contrib.c: buflen -= space_buflen;
contrib.c: n = (pt - tmp) - buflen;
contrib.c: cp[-1] = '\n';
contrib.c: memcpy(cp, tmp, pt - tmp);
contrib.c: cp += pt - tmp;
contrib.c: if (cp - deststr != j) {
contrib.c: fatal("Length miscalculated in terminal_colour()\n Expected: %i Was: %i\n String: %s\n Indent: %i Wrap: %i\n", j, cp - deststr, sp->u.string, indent, wrap);
contrib.c: sp->type = T_STRING;
contrib.c: sp->subtype = STRING_MALLOC;
contrib.c: sp->u.string = deststr;
contrib.c: sz = p - str;
contrib.c: plen = sz - 2;
contrib.c: plen = sz - 3;
contrib.c: * a bit easier. Possibly gperf based; or is that overkill? :-)
contrib.c: * *x -> *xes (fox -> foxes)
contrib.c: * *s -> *ses (pass -> passes)
contrib.c: * *ch -> *ches (church -> churches)
contrib.c: * *sh -> *shes (brush -> brushes)
contrib.c: * *fe -> *ves (knife -> knives)
contrib.c: * *f -> *ves (half -> halves)
contrib.c: * *ef -> *efs (chef -> chefs) (really a rule for a special case)
contrib.c: * *y -> *ies (gumby -> gumbies)
contrib.c: * *us -> *i (cactus -> cacti)
contrib.c: * *man -> *men (foreman -> foremen)
contrib.c: * *is -> *es (this is from gordons pluralize ... )
contrib.c: * *o -> *s (also from gordon)
contrib.c: switch (end[-1]) {
contrib.c: if (end[-2] == 'f' || end[-2] == 'F') {
contrib.c: if (end[-2] == 'e' || end[-2] == 'E')
contrib.c: if(end[-2] == 'f' || end[-2] == 'F')
contrib.c: if (end[-2] == 'c' || end[-2]=='s')
contrib.c: * -- Marius, 23-Jun-2000
contrib.c: if (end[-2] == 'u') {
contrib.c: if (end[-2] == 'a' && end[-3] == 'm') {
contrib.c: if (end[-2] != 'o')
contrib.c: if (end[-2] == 'i') {
contrib.c: if (end[-2] == 'u') {
contrib.c: if (end[-2] == 'a' || end[-2] == 'e' || end[-2] == 'o')
contrib.c: if (end[-2] != 'a' && end[-2] != 'e' && end[-2] != 'i'
contrib.c: && end[-2] != 'o' && end[-2] != 'u') {
contrib.c: if (end[-2] == 'a' || end[-2] == 'e' || end[-2] == 'o'
contrib.c: || end[-2] == 'i' || end[-2] == 'u')
contrib.c: plen -= (found - PLURAL_CHOP);
contrib.c: s = pluralize(sp->u.string);
contrib.c: * Returns -1 if no privs or file doesn't exist.
contrib.c: if (!file) return -1;
contrib.c: if (stat(file, &st) == -1)
contrib.c: return -1;
contrib.c: return -2;
contrib.c: return -1;
contrib.c: p = buf - 1;
contrib.c: num -= (newp - p);
contrib.c: l = file_length(sp->u.string);
contrib.c: str = sp->u.string;
contrib.c: int l = str - sp->u.string;
contrib.c: str = sp->u.string + l;
contrib.c: numignore = sp->u.arr->size;
contrib.c: if (sp->u.arr->item[i].type == T_STRING)
contrib.c: ignore[i + 2] = findstring(sp->u.arr->item[i].u.string);
contrib.c: obj = (sp-1)->u.ob;
contrib.c: obj = sp->u.ob;
contrib.c: prog = obj->prog;
contrib.c: num = prog->num_functions_defined + prog->last_inherited;
contrib.c: if (prog->function_flags[i] & (FUNC_INHERITED | FUNC_NO_CODE)) continue;
contrib.c: if (ignore[j] == find_func_entry(prog, i)->name)
contrib.c: if (obj == simul_efun_ob || prog->func_ref)
contrib.c: free_array((sp--)->u.arr);
contrib.c: ob = sp->u.ob;
contrib.c: prog = ob->prog;
contrib.c: if (!(ob->flags & (O_CLONE|O_SWAPPED))) {
contrib.c: prog_size += prog->program_size;
contrib.c: func_size += (prog->last_inherited +
contrib.c: prog->num_functions_defined) *sizeof(unsigned short);
contrib.c: func_size += prog->num_functions_defined *
contrib.c: string_size += prog->num_strings * sizeof(char *);
contrib.c: var_size += prog->num_variables_defined * (sizeof(char *) + sizeof(unsigned short));
contrib.c: inherit_size += prog->num_inherited * sizeof(inherit_t);
contrib.c: if (prog->num_classes)
contrib.c: class_size += prog->num_classes * sizeof(class_def_t) + (prog->classes[prog->num_classes - 1].index + prog->classes[prog->num_classes - 1].size) * sizeof(class_member_entry_t);
contrib.c: type_size += prog->num_functions_defined * sizeof(short);
contrib.c: if (prog->type_start) {
contrib.c: unsigned short *ts = prog->type_start;
contrib.c: int nfd = prog->num_functions_defined;
contrib.c: n += prog->function_table[i].num_arg;
contrib.c: total_size += prog->total_size;
contrib.c: for (ob = obj_list; ob; ob = ob->next_all) {
contrib.c: if (ob->flags & (O_CLONE|O_SWAPPED)) continue;
contrib.c: prog = ob->prog;
contrib.c: prog_size += prog->program_size;
contrib.c: func_size += (prog->last_inherited +
contrib.c: prog->num_functions_defined) << 1;
contrib.c: func_size += prog->num_functions_defined *
contrib.c: string_size += prog->num_strings * sizeof(char *);
contrib.c: var_size += prog->num_variables_defined * (sizeof(char *) + sizeof(unsigned short));
contrib.c: inherit_size += prog->num_inherited * sizeof(inherit_t);
contrib.c: if (prog->num_classes)
contrib.c: class_size += prog->num_classes * sizeof(class_def_t) + (prog->classes[prog->num_classes - 1].index + prog->classes[prog->num_classes - 1].size) * sizeof(class_member_entry_t);
contrib.c: type_size += prog->num_functions_defined * sizeof(short);
contrib.c: if (prog->type_start) {
contrib.c: unsigned short *ts = prog->type_start;
contrib.c: int nfd = prog->num_functions_defined;
contrib.c: n += prog->function_table[i].num_arg;
contrib.c: total_size += prog->total_size;
contrib.c:/* Magician - 08May95
contrib.c: if( (sp->u.ob->flags & O_DESTRUCTED) || !(sp->u.ob->interactive) ) {
contrib.c: free_object(sp->u.ob, "f_remove_interactive");
contrib.c: remove_interactive(sp->u.ob, 0);
contrib.c: if (sp->type == T_OBJECT)
contrib.c: free_object(sp->u.ob, "f_remove_interactive");
contrib.c:/* Zakk - August 23 1995
contrib.c: if (!ob || ob->interactive == 0)
contrib.c: return ob->interactive->local_port;
contrib.c: tmp = query_ip_port(sp->u.ob);
contrib.c: free_object(sp->u.ob, "f_query_ip_port");
contrib.c: environ[i] = environ[env_size-1];
contrib.c: environ[env_size-1] = NULL;
contrib.c: time_val = sp->u.number;
contrib.c: timezone = sp->u.string;
contrib.c: retv[len-1] = '\0';
contrib.c: time_to_check = sp->u.number;
contrib.c: timezone = sp->u.string;
contrib.c: push_number ((t->tm_isdst) > 0);
contrib.c: debug_message("%s\n", sp->u.string);
contrib.c: free_string_svalue(sp--);
contrib.c: object_t *owner = sp->u.fp->hdr.owner;
contrib.c: free_funp(sp->u.fp);
contrib.c: repeat = (sp--)->u.number;
contrib.c: str = sp->u.string;
contrib.c: sp->type = T_STRING;
contrib.c: sp->subtype = STRING_CONSTANT;
contrib.c: sp->u.string = "";
contrib.c: sp->type = T_STRING;
contrib.c: sp->subtype = STRING_MALLOC;
contrib.c: sp->u.string = ret;
contrib.c: *t += sizeof(mapping_node_t) - 2*sizeof(svalue_t);
contrib.c: *t += memory_share(&elt->values[0]);
contrib.c: *t += memory_share(&elt->values[1]);
contrib.c: switch (sv->type) {
contrib.c: switch (sv->subtype) {
contrib.c: (1 + COUNTED_STRLEN(sv->u.string) + sizeof(malloc_block_t))/
contrib.c: (COUNTED_REF(sv->u.string));
contrib.c: (1 + COUNTED_STRLEN(sv->u.string) + sizeof(block_t))/
contrib.c: (COUNTED_REF(sv->u.string));
contrib.c: subtotal = sizeof(array_t) - sizeof(svalue_t);
contrib.c: for (i = 0; i < sv->u.arr->size; i++)
contrib.c: subtotal += memory_share(&sv->u.arr->item[i]);
contrib.c: depth--;
contrib.c: return total + subtotal/sv->u.arr->ref;
contrib.c: mapTraverse(sv->u.map, node_share, &subtotal);
contrib.c: depth--;
contrib.c: return total + subtotal/sv->u.map->ref;
contrib.c: tmp.u.arr = sv->u.fp->hdr.args;
contrib.c: subtotal = sizeof(funptr_hdr_t) + memory_share(&tmp) - sizeof(svalue_t);
contrib.c: switch (sv->u.fp->hdr.type) {
contrib.c: depth--;
contrib.c: return total + subtotal/sv->u.fp->hdr.ref;
contrib.c: return total + (sizeof(buffer_t) + sv->u.buf->size - 1)/sv->u.buf->ref;
contrib.c: for (i = 0; i < prog->num_inherited; i++)
contrib.c: fms_recurse(map, ob, idx, prog->inherit[i].prog);
contrib.c: for (i = 0; i < prog->num_variables_defined; i++) {
contrib.c: int size = memory_share(ob->variables + *idx + i);
contrib.c: sv.u.string = prog->variable_table[i];
contrib.c: entry->u.number += size;
contrib.c: *idx += prog->num_variables_defined;
contrib.c: for (ob = obj_list; ob; ob = ob->next_all) {
contrib.c: if (ob->flags & O_SWAPPED)
contrib.c: sv.u.string = ob->prog->name;
contrib.c: if (entry->type == T_NUMBER) {
contrib.c: entry->type = T_MAPPING;
contrib.c: entry->u.map = allocate_mapping(8);
contrib.c: fms_recurse(entry->u.map, ob, &idx, ob->prog);
contrib.c: if (sp->u.ob->replaced_program)
contrib.c: res = add_slash(sp->u.ob->replaced_program);
contrib.c: free_object(sp->u.ob, "f_query_replaced_program");
contrib.c: if (current_object->replaced_program)
contrib.c: res = add_slash(sp->u.ob->replaced_program);
contrib.c: if (event_ob->type == T_ARRAY)
contrib.c: for (ind = 0; ind < event_ob->u.arr->size; ind++)
contrib.c: if (event_ob->u.arr->item[ind].type != T_OBJECT ||
contrib.c: event_ob->u.arr->item[ind].u.ob->flags &
contrib.c: apply (name, event_ob->u.arr->item[ind].u.ob,
contrib.c: else if(event_ob->type == T_OBJECT)
contrib.c: apply (name, event_ob->u.ob, numparam + 1, ORIGIN_EFUN);
contrib.c: for (ob = event_ob->u.ob->contains; ob; ob = ob->next_inv)
contrib.c: if (ob->flags & O_DESTRUCTED)
contrib.c: sp--;
contrib.c: event ((sp - num + 1), (sp - num + 2)->u.string, num - 2, (sp - num + 3));
contrib.c: strcat(buf, low[n-10]);
contrib.c: strcat(buf, "-");
contrib.c: limit = sp->u.number;
contrib.c: n = sp->u.number;
db.c: sock = sp->u.number;
db.c: arg = sp - num_arg + 1;
db.c: if( sock < 1 ) error_needs_free(db_error(-1));
db.c: if( msqlSelectDB(sock, database) == -1 ) {
db.c: error_needs_free(db_error(-1));
db.c: sock = handle->net.fd;
db.c: db->my_handle = handle;
db.c: sock = (sp-1)->u.number;
db.c: s = sp->u.string;
db.c: if( db->result_set != (m_result *)NULL ) {
db.c: msqlFreeResult(db->result_set);
db.c: db->result_set = (m_result *)NULL;
db.c: if( msqlQuery(sock, s) == -1 ) {
db.c: push_malloced_string(string_copy(db->errmsg, "f_db_exec"));
db.c: if( (db->result_set = msqlStoreResult()) == (m_result *)NULL ) {
db.c: push_number(msqlNumRows(db->result_set));
db.c: if (db->result_set != (MYSQL_RES *)NULL) {
db.c: mysql_free_result(db->result_set);
db.c: db->result_set = (MYSQL_RES *)NULL;
db.c: if (mysql_query(db->my_handle, s)) {
db.c: if ((tmperr = mysql_db_error(db->my_handle)) == (char *)NULL) {
db.c: push_malloced_string(string_copy(db->errmsg, "f_db_exec"));
db.c: if ((db->result_set = mysql_store_result(db->my_handle)) == (MYSQL_RES *)NULL) {
db.c: push_number(mysql_num_rows(db->result_set));
db.c: hdl = (sp-1)->u.number;
db.c: row = sp->u.number;
db.c: if( db->result_set == (m_result *)NULL ) {
db.c: if( row < 1 || row > msqlNumRows(db->result_set) )
db.c: num_cols = msqlNumFields(db->result_set);
db.c: msqlDataSeek(db->result_set, row-1);
db.c: this_row = msqlFetchRow(db->result_set);
db.c: this_field = msqlFetchField(db->result_set);
db.c: v->item[i] = const0u;
db.c: switch(this_field->type) {
db.c: v->item[i].type = T_NUMBER;
db.c: v->item[i].u.number = atoi(this_row[i]);
db.c: v->item[i].type = T_REAL;
db.c: v->item[i].u.real = atof(this_row[i]);
db.c: v->item[i].type = T_STRING;
db.c: v->item[i].subtype = STRING_MALLOC;
db.c: v->item[i].u.string = string_copy(this_row[i], "f_db_fetch");
db.c: v->item[i] = const0u;
db.c: msqlFieldSeek(db->result_set, 0);
db.c: if (db->result_set == (MYSQL_RES *)NULL) {
db.c: if (row < 0 || row > mysql_num_rows(db->result_set)) {
db.c: num_cols = mysql_num_fields(db->result_set);
db.c: mysql_data_seek(db->result_set, row-1);
db.c: this_row = mysql_fetch_row(db->result_set);
db.c: this_field = (MYSQL_FIELD *)mysql_fetch_field(db->result_set);
db.c: v->item[i] = const0u;
db.c: v->item[i].type = T_STRING;
db.c: v->item[i].subtype = STRING_MALLOC;
db.c: v->item[i].u.string = string_copy(this_field->name, "f_db_fetch");
db.c: v->item[i] = const0u;
db.c: switch (this_field->type) {
db.c: v->item[i].type = T_NUMBER;
db.c: v->item[i].u.number = atoi(this_row[i]);
db.c: v->item[i].type = T_REAL;
db.c: v->item[i].u.real = atof(this_row[i]);
db.c: v->item[i].type = T_STRING;
db.c: v->item[i].subtype = STRING_MALLOC;
db.c: v->item[i].u.string = string_copy(this_row[i], "f_db_fetch");
db.c: v->item[i] = const0u;
db.c: mysql_field_seek(db->result_set, 0);
db.c: if( hdl == -1 || (db = valid_db_conn(hdl)) == (db_t *)NULL) {
db.c: memcpy(db->errmsg, msqlErrMsg, len);
db.c: db->errmsg[len] = '\n';
db.c: db->errmsg[len + 1] = '\0';
db.c: if ((db = valid_db_conn(hdl->net.fd)) == (db_t *)NULL) {
db.c: memcpy(db->errmsg, err, len);
db.c: db->errmsg[len] = '\0';
db.c: db->handle = sock;
db.c: db->errmsg[0] = '\0';
db.c: db->result_set = (m_result *)NULL;
db.c: db->result_set = (MYSQL_RES *)NULL;
db.c: db->prior = (db_t *)NULL;
db.c: db->next = (db_t *)NULL;
db.c: for (tmp = dbConnList; tmp->next != (db_t *)NULL; tmp = tmp->next);
db.c: db->prior = tmp;
db.c: db->next = (db_t *)NULL;
db.c: tmp->next = db;
db.c: while( tmp->handle != sock ) {
db.c: if( tmp->next == (db_t *)NULL ) return;
db.c: tmp = tmp->next;
db.c: nextdb = tmp->next;
db.c: priordb = tmp->prior;
db.c: if( priordb != (db_t *)NULL ) priordb->next = nextdb;
db.c: if( nextdb != (db_t *)NULL ) nextdb->prior = priordb;
db.c: if( tmp->result_set != (m_result *)NULL )
db.c: msqlFreeResult(tmp->result_set);
db.c: if (tmp->result_set != (MYSQL_RES *)NULL) {
db.c: mysql_free_result(tmp->result_set);
db.c: mysql_close(tmp->my_handle);
db.c: FREE(tmp->my_handle);
db.c: while( tmp->handle != hdl ) {
db.c: if( tmp->next == (db_t *)NULL ) return (db_t *)NULL;
db.c: tmp = tmp->next;
develop.c: arg = sp - 1;
develop.c: flags = ob->flags;
develop.c: if (ob->interactive) {
develop.c: ob->interactive->compressed_stream ? "TRUE" :
develop.c: outbuf_addv(&out, "total light : %d\n", ob->total_light);
develop.c: outbuf_addv(&out, "next_reset : %d\n", ob->next_reset);
develop.c: outbuf_addv(&out, "time_of_ref : %d\n", ob->time_of_ref);
develop.c: outbuf_addv(&out, "ref : %d\n", ob->ref);
develop.c: outbuf_addv(&out, "extra_ref : %d\n", ob->extra_ref);
develop.c: outbuf_addv(&out, "swap_num : %d\n", ob->swap_num);
develop.c: outbuf_addv(&out, "name : '/%s'\n", ob->name);
develop.c: ob->next_all ? ob->next_all->name : "NULL");
develop.c: for (obj2 = obj_list, i = 1; obj2; obj2 = obj2->next_all, i++)
develop.c: if (obj2->next_all == ob) {
develop.c: obj2->name);
develop.c: if (ob->flags & O_SWAPPED) {
develop.c: outbuf_addv(&out, "program ref's %d\n", ob->prog->ref);
develop.c: outbuf_addv(&out, "Name /%s\n", ob->prog->name);
develop.c: ob->prog->program_size);
develop.c: ob->prog->last_inherited + ob->prog->num_functions_defined,
develop.c: (ob->prog->last_inherited + ob->prog->num_functions_defined)* sizeof(unsigned short));
develop.c: ob->prog->num_functions_defined,
develop.c: ob->prog->num_functions_defined * sizeof(function_t));
develop.c: outbuf_addv(&out, "num strings %d\n", ob->prog->num_strings);
develop.c: outbuf_addv(&out, "num vars %d (%d)\n", ob->prog->num_variables_defined,
develop.c: ob->prog->num_variables_defined * (sizeof(char *) + sizeof(short)));
develop.c: outbuf_addv(&out, "num inherits %d (%d)\n", ob->prog->num_inherited,
develop.c: ob->prog->num_inherited * sizeof(inherit_t));
develop.c: outbuf_addv(&out, "total size %d\n", ob->prog->total_size);
develop.c: for (i=0; i<ob->prog->num_variables_total; i++) {
develop.c: outbuf_addv(&out, "%s: ", variable_name(ob->prog, i));
develop.c: svalue_to_string(&ob->variables[i], &out, 2, 0, 0);
develop.c: switch (sp->type) {
develop.c: r = sp->u.map->ref;
develop.c: r = sp->u.arr->ref;
develop.c: r = sp->u.ob->ref;
develop.c: r = sp->u.fp->hdr.ref;
develop.c: r = sp->u.buf->ref;
develop.c: put_number(r - 1); /* minus 1 to compensate for being arg of
develop.c: ret->item[i].type = T_ARRAY;
develop.c: ret->item[i].u.arr = allocate_empty_array(2);
develop.c: ret->item[i].u.arr->item[0].type = T_STRING;
develop.c: ret->item[i].u.arr->item[0].subtype = STRING_SHARED;
develop.c: ret->item[i].u.arr->item[0].u.string = make_shared_string(ob->name);
develop.c: ret->item[i].u.arr->item[1].type = T_NUMBER;
develop.c: ret->item[i].u.arr->item[1].u.number = ob->ref;
develop.c: ob = ob->next_all;
develop.c: res = dump_debugmalloc((sp - 1)->u.string, sp->u.number);
develop.c: free_string_svalue(--sp);
develop.c: sp->subtype = STRING_MALLOC;
develop.c: sp->u.string = res;
develop.c: set_malloc_mask((sp--)->u.number);
develop.c: check_all_blocks((sp--)->u.number);
develop.c: int ot = -1;
develop.c: if (command_giver && command_giver->interactive) {
develop.c: ot = command_giver->interactive->trace_level;
develop.c: command_giver->interactive->trace_level = sp->u.number;
develop.c: sp->u.number = ot;
develop.c: if (command_giver && command_giver->interactive) {
develop.c: old = command_giver->interactive->trace_prefix;
develop.c: if (sp->type & T_STRING) {
develop.c: char *p = sp->u.string;
develop.c: command_giver->interactive->trace_prefix = make_shared_string(p);
develop.c: command_giver->interactive->trace_prefix = 0;
dwlib.c: array_t *arr = arg->u.arr;
dwlib.c: int size = arr->size;
dwlib.c: dark = this_player()->check_dark(environment(this_player())->query_light());
dwlib.c: if (no_dollars && arr->item->type == T_OBJECT && !dark && command_giver &&
dwlib.c: command_giver->super) {
dwlib.c: if(!apply_low("query_light", command_giver->super, 0))
dwlib.c: if (v && v->type == T_NUMBER && v->u.number) {
dwlib.c: /* Check to see if there are any non-objects in the array. */
dwlib.c: if ((arr->item + i)->type != T_OBJECT) {
dwlib.c: sv = (arr->item + i);
dwlib.c: v = apply(fun, sv->u.ob, 1, ORIGIN_EFUN);
dwlib.c: if (!v || v->type != T_STRING) {
dwlib.c: if(total_len + SVALUE_STRLEN(v) > max_string_length - mlen)
dwlib.c: strncpy(str + total_len, v->u.string, (len = SVALUE_STRLEN(v)));
dwlib.c: sv = (arr->item + i);
dwlib.c: switch(sv->type) {
dwlib.c: strncpy(str + total_len, sv->u.string, len);
dwlib.c: v = apply(fun, sv->u.ob, 1, ORIGIN_EFUN);
dwlib.c: if (!v || v->type != T_STRING) {
dwlib.c: strncpy(str + total_len, v->u.string,
dwlib.c: if ( i < size - 2 ) {
dwlib.c: if ( i < size - 1 ) {
dwlib.c: if (v && v->type == T_STRING) {
dwlib.c: share_and_push_string(v->u.string);
dwlib.c: if (v && v->type == T_STRING) {
dwlib.c: share_and_push_string(v->u.string);
dwlib.c: svalue_t *sv = sp - st_num_arg + 1;
dwlib.c: if (v && v->type == T_NUMBER) {
dwlib.c: invis = v->u.number;
dwlib.c: if ( v && v->type == T_NUMBER) {
dwlib.c: referee_creator = v->u.number;
dwlib.c: if (v && v->type == T_STRING) {
dwlib.c: referee_name = v->u.string;
dwlib.c: if (v && v->type == T_STRING) {
dwlib.c: referrer_name = v->u.string;
dwlib.c: if (v && v->type == T_NUMBER) {
dwlib.c: referrer_playtester = v->u.number;
dwlib.c: if (v && v->type == T_ARRAY) {
dwlib.c: vec = v->u.arr;
dwlib.c: size = vec->size;
dwlib.c: item = vec->item + i;
dwlib.c: if (strcmp(referrer_name, item->u.string) == 0) {
dwlib.c: strcmp("playtesters", item->u.string) == 0) {
dwlib.c: if (v && v->type == T_NUMBER) {
dwlib.c: ret = v->u.number;
dwlib.c: if (v && v->type == T_NUMBER) {
dwlib.c: ret = v->u.number;
dwlib.c: if (v && v->type == T_NUMBER) {
dwlib.c: ret = v->u.number;
dwlib.c: if (v && v->type == T_NUMBER) {
dwlib.c: ret = v->u.number;
dwlib.c: svalue_t *sv = sp - st_num_arg + 1;
dwlib.c: CHECK_TYPES(sp-1, T_NUMBER, 1, F_MEMBER_ARRAY); */
dwlib.c: if (sv->type == T_OBJECT && sv->u.ob) {
dwlib.c: referee = sv->u.ob;
dwlib.c: if (v && v->type == T_OBJECT) {
dwlib.c: referrer_obj = v->u.ob;
external.c: if (--which < 0 || which > (NUM_EXTERNAL_CMDS-1) || !external_cmd[which])
external.c: if (socketpair(PF_UNIX, SOCK_STREAM, 0, sv) == -1)
external.c: if (ret == -1) {
external.c: current_object->flags |= O_EFUN_SOCKET;
external.c: if (args->type == T_ARRAY) {
external.c: n = args->u.arr->size;
external.c: p = args->u.string;
external.c: if (args->type == T_ARRAY) {
external.c: svalue_t *sv = args->u.arr->item;
external.c: arg = alloc_cstring(args->u.string, "external args");
external.c: svalue_t *arg = sp - num_arg + 1;
external.c: if (check_valid_socket("external", -1, current_object, "N/A", -1)) {
external.c: pop_n_elems(num_arg - 1);
external.c: sp->u.number = fd;
external.c: pop_n_elems(num_arg - 1);
external.c: sp->u.number = EESECURITY;
gdbm.c: int res = db_exists( (sp-1)->u.string, sp->u.string );
gdbm.c: if (db_query(&res, (sp-1)->u.string, sp->u.string);
gdbm.c: switch(res->type) {
gdbm.c: switch (respush_string(res->u.string, res->subtype);
gdbm.c: push_array(res->u.arr);
gdbm.c: push_number(res->u.number);
gdbm.c: push_real(res->u.real);
gdbm.c: push_mapping(res->u.map);
gdbm.c: fatal("Bogus svalue in db_query(), type %d\n", res->type);
gdbm.c: if(!(sp->type & (T_STRING|T_ARRAY|T_NUMBER|T_REAL|T_MAPPING)))
gdbm.c: res = db_store( (sp-2)->u.string, (sp-1)->u.string, sp );
gdbm.c: res = db_delete((sp-1)->u.string, sp->u.string);
gdbm.c: res = db_keys((sp-st_num_arg+1)->u.string,
gdbm.c: (st_num_arg == 1 ? (char *)NULL : sp->u.string));
gdbm.c: res->ref--; /* Ref count back to 1 */
gdbm.c: case -1:
gdbm.c: case -2:
gdbm.c: ret->item[i].type = T_STRING;
gdbm.c: ret->item[i].subtype = STRING_MALLOC; /* Should we make it shared? */
gdbm.c: ret->item[i].u.string = keys[i]; /* string_copy() for debugging? */
math.c: -- coded by Truilkan 93/02/21
math.c: sp->u.real = cos(sp->u.real);
math.c: sp->u.real = sin(sp->u.real);
math.c: sp->u.real = tan(sp->u.real);
math.c: if (sp->u.real < -1.0) {
math.c: error("math: asin(x) with (x < -1.0)\n");
math.c: } else if (sp->u.real > 1.0) {
math.c: sp->u.real = asin(sp->u.real);
math.c: if (sp->u.real < -1.0) {
math.c: error("math: acos(x) with (x < -1.0)\n");
math.c: } else if (sp->u.real > 1.0) {
math.c: sp->u.real = acos(sp->u.real);
math.c: sp->u.real = atan(sp->u.real);
math.c: if (sp->u.real < 0.0) {
math.c: sp->u.real = sqrt(sp->u.real);
math.c: if (sp->u.real <= 0.0) {
math.c: sp->u.real = log(sp->u.real);
math.c: if (sp->u.real <= 0.0) {
math.c: sp->u.real = log10(sp->u.real);
math.c: (sp - 1)->u.real = pow((sp - 1)->u.real, sp->u.real);
math.c: sp--;
math.c: sp->u.real = exp(sp->u.real);
math.c: sp->u.real = floor(sp->u.real);
math.c: sp->u.real = ceil(sp->u.real);
matrix.c: * matrix.c -- matrix efuns.
matrix.c: * 2-93 : Dwayne Fontenot : original coding.
matrix.c: matrix->item[i].type = T_REAL;
matrix.c: matrix->item[i].u.real = identity[i];
matrix.c: if ((sp - 1)->type != T_REAL) {
matrix.c: if (sp->type != T_REAL) {
matrix.c: matrix = (sp - 3)->u.arr;
matrix.c: x = (sp - 2)->u.real;
matrix.c: y = (sp - 1)->u.real;
matrix.c: z = sp->u.real;
matrix.c: sp -= 3;
matrix.c: current_matrix[i] = matrix->item[i].u.real;
matrix.c: matrix->item[i].u.real = final_matrix[i];
matrix.c: if ((sp - 1)->type != T_REAL) {
matrix.c: if (sp->type != T_REAL) {
matrix.c: matrix = (sp - 3)->u.arr;
matrix.c: x = (sp - 2)->u.real;
matrix.c: y = (sp - 1)->u.real;
matrix.c: z = sp->u.real;
matrix.c: sp -= 3;
matrix.c: current_matrix[i] = matrix->item[i].u.real;
matrix.c: matrix->item[i].u.real = final_matrix[i];
matrix.c: matrix = (sp - 1)->u.arr;
matrix.c: angle = (sp--)->u.real;
matrix.c: current_matrix[i] = matrix->item[i].u.real;
matrix.c: matrix->item[i].u.real = final_matrix[i];
matrix.c: matrix = (sp - 1)->u.arr;
matrix.c: angle = (sp--)->u.real;
matrix.c: current_matrix[i] = matrix->item[i].u.real;
matrix.c: matrix->item[i].u.real = final_matrix[i];
matrix.c: matrix = (sp - 1)->u.arr;
matrix.c: angle = (sp--)->u.real;
matrix.c: current_matrix[i] = matrix->item[i].u.real;
matrix.c: matrix->item[i].u.real = final_matrix[i];
matrix.c: if ((sp - 1)->type != T_REAL) {
matrix.c: if (sp->type != T_REAL) {
matrix.c: matrix = (sp - 3)->u.arr;
matrix.c: x = (sp - 2)->u.real;
matrix.c: y = (sp - 1)->u.real;
matrix.c: z = sp->u.real;
matrix.c: sp -= 3;
matrix.c: current_matrix[i] = matrix->item[i].u.real;
matrix.c: matrix->item[i].u.real = lookat_matrix[i];
matrix.c: for (j = 4; j >= 0; j--) {
matrix.c: if ((sp - j)->type != T_REAL) {
matrix.c: bad_arg(7 - j, F_LOOKAT_ROTATE2);
matrix.c: matrix = (sp - 6)->u.arr;
matrix.c: ex = (sp - 5)->u.real;
matrix.c: ey = (sp - 4)->u.real;
matrix.c: ez = (sp - 3)->u.real;
matrix.c: lx = (sp - 2)->u.real;
matrix.c: ly = (sp - 1)->u.real;
matrix.c: lz = sp->u.real;
matrix.c: sp -= 5;
matrix.c: free_array((sp--)->u.arr);
matrix.c: current_matrix[i] = matrix->item[i].u.real;
matrix.c: matrix->item[i].u.real = lookat_matrix[i];
matrix.c: fprintf(stderr, "%s:\t%f\t%f\t%f\n", label, v->x, v->y, v->z);
matrix.c: xx = v->x * v->x;
matrix.c: yy = v->y * v->y;
matrix.c: zz = v->z * v->z;
matrix.c: v->x /= m;
matrix.c: v->y /= m;
matrix.c: v->z /= m;
matrix.c: v->x = (va->y * vb->z) - (va->z * vb->y);
matrix.c: v->y = (va->z * vb->x) - (va->x * vb->z);
matrix.c: v->z = (va->x * vb->y) - (va->y * vb->x);
matrix.c: v->x = pa->x - pb->x;
matrix.c: v->y = pa->y - pb->y;
matrix.c: v->z = pa->z - pb->z;
matrix.c: M[12] = -U.x * ep.x - U.y * ep.y - U.z * ep.z;
matrix.c: M[13] = -V.x * ep.x - V.y * ep.y - V.z * ep.z;
matrix.c: M[14] = -N.x * ep.x - N.y * ep.y - N.z * ep.z;
matrix.c: M[12] = -U.x * ep.x - U.y * ep.y - U.z * ep.z;
matrix.c: M[13] = -V.x * ep.x - V.y * ep.y - V.z * ep.z;
matrix.c: M[14] = -N.x * ep.x - N.y * ep.y - N.z * ep.z;
matrix.c: m[9] = -s;
matrix.c: m[2] = -s;
matrix.c: m[4] = -s;
mudlib_stats.c: m = get_domain_stats(sp->u.string);
mudlib_stats.c: free_string_svalue(sp--);
mudlib_stats.c: set_author(sp->u.string);
mudlib_stats.c: free_string_svalue(sp--);
mudlib_stats.c: m = get_author_stats(sp->u.string);
mudlib_stats.c: free_string_svalue(sp--);
mudlib_stats.c: tmp = tmp->next;
mudlib_stats.c: tmp = tmp->next;
mudlib_stats.c: entry->next = *list;
mudlib_stats.c: for (; list; list = list->next)
mudlib_stats.c: if (list->length == length && strcmp(list->name, name) == 0)
mudlib_stats.c: entry->name = make_shared_string(str);
mudlib_stats.c: entry->length = strlen(str);
mudlib_stats.c: entry->moves = 0;
mudlib_stats.c: entry->heart_beats = 0;
mudlib_stats.c: entry->errors = 0;
mudlib_stats.c: entry->objects = 0;
mudlib_stats.c: entry->next = NULL;
mudlib_stats.c: entry->size_array = 0;
mudlib_stats.c: st->domain = ob->stats.domain;
mudlib_stats.c: st->author = ob->stats.author;
mudlib_stats.c: st->domain = NULL;
mudlib_stats.c: st->author = NULL;
mudlib_stats.c: if (st->domain)
mudlib_stats.c: st->domain->moves += moves;
mudlib_stats.c: if (st->author)
mudlib_stats.c: st->author->moves += moves;
mudlib_stats.c: if (st->domain)
mudlib_stats.c: st->domain->heart_beats += hbs;
mudlib_stats.c: if (st->author)
mudlib_stats.c: st->author->heart_beats += hbs;
mudlib_stats.c: if (st->domain)
mudlib_stats.c: st->domain->size_array += size;
mudlib_stats.c: if (st->author)
mudlib_stats.c: st->author->size_array += size;
mudlib_stats.c: if (st->domain)
mudlib_stats.c: st->domain->errors += errors;
mudlib_stats.c: if (st->author)
mudlib_stats.c: st->author->errors += errors;
mudlib_stats.c: entry->errors += errors;
mudlib_stats.c: entry->errors += errors;
mudlib_stats.c: if (st->domain)
mudlib_stats.c: st->domain->objects += objects;
mudlib_stats.c: if (st->author)
mudlib_stats.c: st->author->objects += objects;
mudlib_stats.c: * moves -= 1%
mudlib_stats.c: * heart_beats -= 10%
mudlib_stats.c: for (dl = domains; dl; dl = dl->next) {
mudlib_stats.c: dl->moves = dl->moves * 99 / 100;
mudlib_stats.c: dl->heart_beats = dl->heart_beats * 9 / 10;
mudlib_stats.c: for (dl = authors; dl; dl = dl->next) {
mudlib_stats.c: dl->moves = dl->moves * 99 / 100;
mudlib_stats.c: dl->heart_beats = dl->heart_beats * 9 / 10;
mudlib_stats.c: for (dl = domains; dl; dl = dl->next) {
mudlib_stats.c: EXTRA_REF(BLOCK(dl->name))++;
mudlib_stats.c: for (dl = authors; dl; dl = dl->next) {
mudlib_stats.c: EXTRA_REF(BLOCK(dl->name))++;
mudlib_stats.c: push_malloced_string(add_slash(ob->name));
mudlib_stats.c: if (ret == (svalue_t *)-1) {
mudlib_stats.c: ob->stats.author = master_author;
mudlib_stats.c: } else if (!ret || ret->type != T_STRING) {
mudlib_stats.c: ob->stats.author = NULL;
mudlib_stats.c: ob->stats.author = add_stat_entry(ret->u.string, &authors);
mudlib_stats.c: if (master_ob == (object_t *)-1) {
mudlib_stats.c: ob->stats.author = NULL;
mudlib_stats.c: if (ob->stats.author) {
mudlib_stats.c: ob->stats.author->objects--;
mudlib_stats.c: ob->stats.author = add_stat_entry(name, &authors);
mudlib_stats.c: if (ob->stats.author) {
mudlib_stats.c: ob->stats.author->objects++;
mudlib_stats.c: if (ret == 0 || ret == (svalue_t*)-1 || ret->type != T_STRING)
mudlib_stats.c: strcpy(buff, ret->u.string);
mudlib_stats.c: || !current_object->uid
mudlib_stats.c: ob->stats.domain = add_stat_entry("NONAME", &domains);
mudlib_stats.c: push_malloced_string(add_slash(ob->name));
mudlib_stats.c: ob->stats.domain = current_object->stats.domain;
mudlib_stats.c: if (ret->type != T_STRING)
mudlib_stats.c: domain_name = ret->u.string;
mudlib_stats.c: if (strcmp(current_object->stats.domain->name, domain_name) == 0) {
mudlib_stats.c: ob->stats.domain = current_object->stats.domain;
mudlib_stats.c: if (strcmp(backbone_domain->name, domain_name) == 0) {
mudlib_stats.c: ob->stats.domain = current_object->stats.domain;
mudlib_stats.c: ob->stats.domain = add_stat_entry(domain_name, &domains);
mudlib_stats.c: if (ret == 0 || ret == (svalue_t*)-1 || ret->type != T_STRING)
mudlib_stats.c: strcpy(buff, ret->u.string);
mudlib_stats.c: fprintf(f, "%s %d %d\n", list->name,
mudlib_stats.c: list->moves, list->heart_beats);
mudlib_stats.c: list = list->next;
mudlib_stats.c: fscanf(f, "%d %d\n", &entry->moves, &entry->heart_beats);
mudlib_stats.c: add_mapping_pair(ret, "moves", dl->moves);
mudlib_stats.c: add_mapping_pair(ret, "errors", dl->errors);
mudlib_stats.c: add_mapping_pair(ret, "heart_beats", dl->heart_beats);
mudlib_stats.c: add_mapping_pair(ret, "array_size", dl->size_array);
mudlib_stats.c: add_mapping_pair(ret, "objects", dl->objects);
mudlib_stats.c: for (dl = list; dl; dl = dl->next) {
mudlib_stats.c: if (!strcmp(str, dl->name)) /* are these both shared strings? */
mudlib_stats.c: tmp->ref--;
mudlib_stats.c: for (dl = list; dl; dl = dl->next) {
mudlib_stats.c: lv.u.string = dl->name; /* find_for_insert() adds a ref */
mudlib_stats.c: s->type = T_MAPPING;
mudlib_stats.c: s->subtype = 0;
mudlib_stats.c: s->u.map = get_info(dl);
mudlib_stats.c: m->ref--;
parser.c: * . he, she, it, him, her, them -> "look at tempress. get sword. kill her with it"
parser.c: * . compound input -> "n. e then s."
parser.c: * . where is ... "where is sword" -> "In the bag on the table"
parser.c:#define DEBUG_DEC if (debug_parse_depth) debug_parse_depth--
parser.c:#define SHARED_STRING(x) ((x)->subtype == STRING_SHARED ? (x)->u.string : findstring((x)->u.string))
parser.c:#define NEED_REFRESH(ob) (ob->pinfo && ((ob->pinfo->flags & (PI_SETUP|PI_REFRESH)) != PI_SETUP))
parser.c:/* parse_init() - setup the object
parser.c: * parse_refresh() - refresh an object's parse data
parser.c: * parse_add_rule(verb, rule) - add a rule for a verb
parser.c: * parse_sentence(sent) - do the parsing :)
parser.c: if (pe->error_type == ERR_ALLOCATED) {
parser.c: MSTR_EXTRA_REF(pe->err.str)++;
parser.c: if (best_result->ob)
parser.c: best_result->ob->extra_ref++;
parser.c: if (best_result->parallel)
parser.c: if (best_result->res[i].func)
parser.c: MSTR_EXTRA_REF(best_result->res[i].func)++;
parser.c: if (best_result->res[i].args) {
parser.c: for (j = 0; j < best_result->res[i].num; j++)
parser.c: mark_svalue(((svalue_t *)best_result->res[i].args) + j);
parser.c: /* mark best_result->res[i].args */;
parser.c: EXTRA_REF(BLOCK(verb_entry->real_name))++;
parser.c: EXTRA_REF(BLOCK(verb_entry->match_name))++;
parser.c: verb_entry = verb_entry->next;
parser.c: EXTRA_REF(BLOCK(swp->wrd))++;
parser.c: swp = swp->next;
parser.c: master_user_list->extra_ref++;
parser.c: if (!(pinfo->flags & PI_SETUP))
parser.c: for (i = 0; i < pinfo->num_ids; i++) {
parser.c: EXTRA_REF(BLOCK(pinfo->ids[i]))++;
parser.c: for (i = 0; i < pinfo->num_adjs; i++) {
parser.c: EXTRA_REF(BLOCK(pinfo->adjs[i]))++;
parser.c: for (i = 0; i < pinfo->num_plurals; i++) {
parser.c: EXTRA_REF(BLOCK(pinfo->plurals[i]))++;
parser.c: int n = debug_parse_depth - 1;
parser.c: while (n--) {
parser.c: int i, n = b2->last;
parser.c: b1->last = n;
parser.c: b1->b[i] = b2->b[i];
parser.c: bv->last = 0;
parser.c: if (which >= bv->last) {
parser.c: for (i = bv->last; i < which; i++)
parser.c: bv->b[i] = 0;
parser.c: bv->b[which] = BV_BIT(elem);
parser.c: bv->last = which + 1;
parser.c: bv->b[which] |= BV_BIT(elem);
parser.c: int n = (bv1->last < bv2->last ? bv1->last : bv2->last);
parser.c: bv1->last = n;
parser.c: if (bv1->b[i] &= bv2->b[i]) found = 1;
parser.c: for (i = 0; i < bv->last; i++) {
parser.c: unsigned int k = bv->b[i];
parser.c: int num = (remote_flag ? num_objects : num_objects - num_people);
parser.c: while (i--)
parser.c: bv->b[i] = ~0;
parser.c: bv->b[last] = BV_BIT(num) - 1;
parser.c: bv->last = last + 1;
parser.c: bv->last = last;
parser.c: ret = &matches[state->num_matches++];
parser.c: ret->first = start;
parser.c: ret->last = end;
parser.c: ret->token = token;
parser.c: state->num_errors++;
parser.c: DEBUG_PP(("State is: %x, num_errors: %i\n", state, state->num_errors));
parser.c: if (!arr->size) {
parser.c: table = *sarrp = CALLOCATE(arr->size, char *,
parser.c: for (j = 0; j < arr->size; j++) {
parser.c: if (arr->item[j].type == T_STRING) {
parser.c: DEBUG_PP(("Got: %s", arr->item[j].u.string));
parser.c: if (arr->item[j].subtype == STRING_SHARED) {
parser.c: table[n++] = ref_string(arr->item[j].u.string);
parser.c: table[n++] = make_shared_string(arr->item[j].u.string);
parser.c: if (n != arr->size)
parser.c: swp->wrd = p;
parser.c: swp->kind = kind;
parser.c: swp->arg = arg;
parser.c: swp->next = special_table[h];
parser.c: if (swp->wrd == wrd) {
parser.c: *arg = swp->arg;
parser.c: return swp->kind;
parser.c: swp = swp->next;
parser.c: if (p - wrd < 2 || *(p - 2) != '1') {
parser.c: switch (*(p - 1)) {
parser.c: if (ret && ret->type == T_ARRAY) {
parser.c: master_user_list = ret->u.arr;
parser.c: ret->u.arr->ref++;
parser.c: if (ret && ret->type == T_ARRAY)
parser.c: num_literals = parse_copy_array(ret->u.arr, &literals);
parser.c: if (current_object->pinfo)
parser.c: pi = current_object->pinfo = ALLOCATE(parse_info_t, TAG_PARSER, "parse_init");
parser.c: pi->ob = current_object;
parser.c: pi->flags = 0;
parser.c: if (pinfo->flags & PI_SETUP) {
parser.c: if (pinfo->num_ids) {
parser.c: for (i = 0; i < pinfo->num_ids; i++)
parser.c: free_string(pinfo->ids[i]);
parser.c: FREE(pinfo->ids);
parser.c: if (pinfo->num_plurals) {
parser.c: for (i = 0; i < pinfo->num_plurals; i++)
parser.c: free_string(pinfo->plurals[i]);
parser.c: FREE(pinfo->plurals);
parser.c: if (pinfo->num_adjs) {
parser.c: for (i = 0; i < pinfo->num_adjs; i++)
parser.c: free_string(pinfo->adjs[i]);
parser.c: FREE(pinfo->adjs);
parser.c: pinfo->num_ids = pinfo->num_plurals = pinfo->num_adjs = 0;
parser.c: pinfo->ids = pinfo->plurals = pinfo->adjs = 0;
parser.c: if (!master_ob->pinfo)
parser.c: if (!(pi = current_object->pinfo))
parser.c: current_object->name);
parser.c: if (pi->flags & PI_SETUP) {
parser.c: pi->flags &= PI_VERB_HANDLER;
parser.c: pi->flags |= PI_REFRESH;
parser.c: pi->flags &= PI_VERB_HANDLER;
parser.c: if (pi->flags & PI_VERB_HANDLER) {
parser.c: if (current_object->flags & O_DESTRUCTED)
parser.c: pi->flags |= PI_REMOTE_LIVINGS;
parser.c: if (pinfo->flags & PI_VERB_HANDLER) {
parser.c: verb_node_t **vn = &(v->node), *old;
parser.c: if ((*vn)->handler == pinfo->ob) {
parser.c: *vn = (*vn)->next;
parser.c: } else vn = &((*vn)->next);
parser.c: v = v->next;
parser.c: for (nodep = &hash_table[i]; *nodep && ((*nodep)->flags & HV_PERM);
parser.c: nodep = &((*nodep)->next))
parser.c: next = (*nodep)->next;
parser.c: free_string((*nodep)->name);
parser.c: if (pr->ob)
parser.c: free_object(pr->ob, "free_parse_result");
parser.c: if (pr->parallel)
parser.c: clear_parallel_errors(&pr->parallel);
parser.c: if (pr->res[i].func) FREE_MSTR(pr->res[i].func);
parser.c: if (pr->res[i].args) {
parser.c: for (j = 0; j < pr->res[i].num; j++)
parser.c: free_svalue(((svalue_t *)pr->res[i].args) + j, "free_parse_result");
parser.c: FREE(pr->res[i].args);
parser.c: pr->ob = 0;
parser.c: pr->parallel = 0;
parser.c: pr->res[i].func = 0;
parser.c: pr->res[i].args = 0;
parser.c: n = *rule - start;
parser.c: while (td->name) {
parser.c: if (STR3CMP(td->name, start)) {
parser.c: i = td->token;
parser.c: if (!td->mod_legal)
parser.c: error("Illegal to have modifiers to '%s'\n", td->name);
parser.c: n -= 4;
parser.c: while (n--) {
parser.c: error("Unknown modifier '%c'\n", start[-1]);
parser.c: (*weightp)--;
parser.c: return -(i + 1);
parser.c: if (ob->pinfo->flags & PI_REFRESH)
parser.c: remove_ids(ob->pinfo);
parser.c: if (ob->pinfo->flags & PI_SETUP && !(ob->pinfo->flags & PI_REFRESH))
parser.c: DEBUG_P(("Interogating /%s.", ob->name));
parser.c: if (ret && ret->type == T_ARRAY)
parser.c: ob->pinfo->num_ids = parse_copy_array(ret->u.arr, &ob->pinfo->ids);
parser.c: ob->pinfo->num_ids = 0;
parser.c: if (ob->flags & O_DESTRUCTED) return;
parser.c: ob->pinfo->flags |= PI_SETUP;
parser.c: ob->pinfo->flags &= ~(PI_LIVING | PI_INV_ACCESSIBLE | PI_INV_VISIBLE);
parser.c: ob->pinfo->num_adjs = 0;
parser.c: ob->pinfo->num_plurals = 0;
parser.c: if (ret && ret->type == T_ARRAY)
parser.c: ob->pinfo->num_plurals = parse_copy_array(ret->u.arr, &ob->pinfo->plurals);
parser.c: ob->pinfo->num_plurals = 0;
parser.c: if (ob->flags & O_DESTRUCTED) return;
parser.c: if (ret && ret->type == T_ARRAY)
parser.c: ob->pinfo->num_adjs = parse_copy_array(ret->u.arr, &ob->pinfo->adjs);
parser.c: ob->pinfo->num_adjs = 0;
parser.c: if (ob->flags & O_DESTRUCTED) return;
parser.c: ob->pinfo->flags |= PI_LIVING;
parser.c: if (ob->flags & O_DESTRUCTED) return;
parser.c: ob->pinfo->flags |= PI_INV_ACCESSIBLE;
parser.c: if (ob->flags & O_DESTRUCTED) return;
parser.c: ob->pinfo->flags |= PI_INV_VISIBLE;
parser.c: return ob->contains;
parser.c: if (ret && ret != (svalue_t *)-1 && ret->type == T_OBJECT)
parser.c: return ret->u.ob;
parser.c: return sibling->next_inv;
parser.c: if (ret && ret != (svalue_t *)-1 && ret->type == T_OBJECT)
parser.c: return ret->u.ob;
parser.c: return ob->super;
parser.c: if (ret && ret != (svalue_t *)-1 && ret->type == T_OBJECT)
parser.c: return ret->u.ob;
parser.c: if (ob->flags & O_DESTRUCTED) return;
parser.c: if (ob->pinfo) {
parser.c: if (!(ob->pinfo->flags & PI_INV_VISIBLE))
parser.c: if (!(ob->pinfo->flags & PI_INV_ACCESSIBLE))
parser.c: for (i = 0; i < arr->size; i++) {
parser.c: if (arr->item[i].type == T_ARRAY) {
parser.c: add_objects_from_array(arr->item[i].u.arr, f);
parser.c: if (arr->item[i].type == T_OBJECT &&
parser.c: !((ob = arr->item[i].u.ob)->flags & O_DESTRUCTED)) {
parser.c: if (ob->pinfo) {
parser.c: last_flags = ob->pinfo->flags;
parser.c: for (i = 0; i < arr->size; i++) {
parser.c: if (arr->item[i].type == T_ARRAY)
parser.c: get_objects_from_array(arr->item[i].u.arr);
parser.c: if (arr->item[i].type != T_OBJECT) continue;
parser.c: ob = arr->item[i].u.ob;
parser.c: if (ob->flags & O_DESTRUCTED) continue;
parser.c: if (ob->flags & O_DESTRUCTED) return;
parser.c: if (he->name == str)
parser.c: he = he->next;
parser.c: he->name = ref_string(str);
parser.c: bitvec_zero(&he->pv.noun);
parser.c: bitvec_zero(&he->pv.plural);
parser.c: bitvec_zero(&he->pv.adj);
parser.c: he->next = hash_table[h];
parser.c: he->flags = 0;
parser.c: if (he->name == str) {
parser.c: he->flags |= HV_NICKNAME;
parser.c: he = he->next;
parser.c: he->name = ref_string(str);
parser.c: bitvec_zero(&he->pv.noun);
parser.c: bitvec_zero(&he->pv.plural);
parser.c: bitvec_zero(&he->pv.adj);
parser.c: he->next = hash_table[h];
parser.c: he->flags = HV_NICKNAME;
parser.c: parse_info_t *pi = ob->pinfo;
parser.c: DEBUG_PP(("add_to_hash_table: /%s", ob->name));
parser.c: for (i = 0; i < pi->num_ids; i++) {
parser.c: he = add_hash_entry(pi->ids[i]);
parser.c: he->flags |= HV_NOUN;
parser.c: bitvec_set(&he->pv.noun, index);
parser.c: for (i = 0; i < pi->num_plurals; i++) {
parser.c: he = add_hash_entry(pi->plurals[i]);
parser.c: he->flags |= HV_PLURAL;
parser.c: bitvec_set(&he->pv.plural, index);
parser.c: for (i = 0; i < pi->num_adjs; i++) {
parser.c: he = add_hash_entry(pi->adjs[i]);
parser.c: he->flags |= HV_ADJ;
parser.c: bitvec_set(&he->pv.adj, index);
parser.c: if (pi->flags & PI_LIVING)
parser.c: for (i = 0; i < master_user_list->size; i++) {
parser.c: if (master_user_list->item[i].type == T_OBJECT
parser.c: && (ob = master_user_list->item[i].u.ob)->pinfo
parser.c: DEBUG_PP(("adding: /%s", ob->name));
parser.c: * pointer -> index
parser.c: for (i = 0; i < map->table_size; i++) {
parser.c: for (mn = map->table[i]; mn; mn = mn->next) {
parser.c: if (mn->values[0].type == T_STRING) {
parser.c: hash_entry_t *he = add_hash_entry(mn->values[0].u.string);
parser.c: he->flags |= HV_NICKNAME;
parser.c: if (!parse_user || parse_user->flags & O_DESTRUCTED)
parser.c: me_object = -1;
parser.c: he->flags |= HV_ADJ;
parser.c: bitvec_copy(&he->pv.adj, &my_objects);
parser.c: for (i = 0; i < master_user_list->size; i++) {
parser.c: if (master_user_list->item[i].type != T_OBJECT) continue;
parser.c: ob = master_user_list->item[i].u.ob;
parser.c: if (!(ob->pinfo))
parser.c: if (env && env->pinfo && !(env->pinfo->flags & PI_INV_VISIBLE))
parser.c:/* 0000 */ -1, /* 0001 */ 0, /* 0010 */ 1, /* 0011 */ -1,
parser.c:/* 0100 */ 2, /* 0101 */ -1, /* 0110 */ -1, /* 0111 */ -1,
parser.c:/* 1000 */ 3, /* 1001 */ -1, /* 1010 */ -1, /* 1011 */ -1,
parser.c:/* 1100 */ -1, /* 1101 */ -1, /* 1110 */ -1, /* 1111 */ -1
parser.c: int i, res = -1;
parser.c: for (i = 0; i < bv->last; i++) {
parser.c: if (bv->b[i]) {
parser.c: if (res != -1) return -1;
parser.c: if (res < 0) return -1;
parser.c: tmp = bv->b[res];
parser.c: return -1;
parser.c: return -1;
parser.c: return -1;
parser.c: if (tmp == -1) return tmp;
parser.c: DEBUG_PP((" -> %i", res));
parser.c: if (ob->flags & O_DESTRUCTED ||
parser.c: || ret->type != T_STRING) {
parser.c: return strput(start, end, ret->u.string);
parser.c: end--;
parser.c: num = end - p + 1;
parser.c: num = limit - str - 1;
parser.c: end--;
parser.c: push_malloced_string(str = new_string(end - p + 1, "push_words"));
parser.c: if (p->error_type == ERR_ALLOCATED) {
parser.c: FREE_MSTR(p->err.str);
parser.c: p->error_type = 0;
parser.c: he->flags &= ~HV_NICKNAME;
parser.c: sv = find_string_in_mapping(parse_nicks, he->name);
parser.c: if (sv->type != T_OBJECT) return;
parser.c: ob = sv->u.ob;
parser.c: if (ob->flags & O_DESTRUCTED) return;
parser.c: if (ob->pinfo == 0) return;
parser.c: he->flags |= HV_NOUN;
parser.c: bitvec_set(&he->pv.noun, i);
parser.c: int start = state->word_index;
parser.c: all_objects(&objects, parse_vn->handler->pinfo->flags & PI_REMOTE_LIVINGS);
parser.c: if (state->word_index == num_words)
parser.c: str = words[state->word_index++].string;
parser.c: if (state->word_index < num_words &&
parser.c: check_special_word(words[state->word_index].string, &tmp) == SW_OF) {
parser.c: state->word_index++;
parser.c: start, state->word_index - 1);
parser.c: bitvec_copy(&mp->val.obs, &objects);
parser.c: mp->ordinal = 0;
parser.c: start, state->word_index - 1);
parser.c: if (me_object != -1) {
parser.c: start, state->word_index - 1);
parser.c: bitvec_zero(&mp->val.obs);
parser.c: bitvec_set(&mp->val.obs, me_object);
parser.c: mp->ordinal = 0;
parser.c: if (hnode->name == str) {
parser.c: if (hnode->flags & HV_NICKNAME)
parser.c: if (singular_legal && (hnode->flags & HV_NOUN)) {
parser.c: state->num_errors < best_num_errors;
parser.c: if (!intersect(&objects, &hnode->pv.noun)) {
parser.c: start, state->word_index - 1);
parser.c: bitvec_copy(&mp->val.obs, &objects);
parser.c: mp->ordinal = ordinal;
parser.c: start, state->word_index - 1);
parser.c: if ((ordinal == 0) && (hnode->flags & HV_PLURAL)) {
parser.c: state->num_errors < best_num_errors;
parser.c: if (!intersect(&objects, &hnode->pv.plural)) {
parser.c: start, state->word_index - 1);
parser.c: bitvec_copy(&mp->val.obs, &objects);
parser.c: mp->ordinal = ordinal;
parser.c: start, state->word_index - 1);
parser.c: if (hnode->flags & HV_ADJ) {
parser.c: intersect(&objects, &hnode->pv.adj);
parser.c: hnode = hnode->next;
parser.c: while ((tok = parse_vn->token[index++])) {
parser.c: if (cnt == which - 1) {
parser.c: p = strput(p, end, literals[-(tok + 1)]);
parser.c: if (cnt == which - 1 || ++ocnt >= which
parser.c: p--;
parser.c: err->error_type = ERR_ALLOCATED;
parser.c: err->err.str = string_copy(buf, "make_error_message");
parser.c:/* 1 -> ok
parser.c: * 0 -> no such func
parser.c: * -1 -> returned error
parser.c: * -2 -> generated error
parser.c: * -3 -> abort
parser.c: if (sv->type == T_NUMBER) {
parser.c: DEBUG_P(("Return value was: %i", sv->u.number));
parser.c: if (sv->u.number)
parser.c: if (state->num_errors == best_num_errors) {
parser.c: return -3;
parser.c: if (state->num_errors++ == 0)
parser.c: return -2;
parser.c: if (sv->type != T_STRING) {
parser.c: DEBUG_P(("Returned string was: %s", sv->u.string));
parser.c: if (state->num_errors == best_num_errors) {
parser.c: return -3;
parser.c: if (state->num_errors++ == 0) {
parser.c: current_error_info.err.str = string_copy(sv->u.string, "process_answer");
parser.c: return -1;
parser.c:/* 1 - error or accepted
parser.c: * 0 - no function
parser.c: * -1 - generated or ridiculous error
parser.c: if (sv->type == T_NUMBER) {
parser.c: DEBUG_P(("Return value was: %i", sv->u.number));
parser.c: if (sv->u.number)
parser.c: if (state->num_errors == 0)
parser.c: return -1;
parser.c: if (sv->type != T_STRING) {
parser.c: DEBUG_P(("Return value was not a string or number.", sv->u.number));
parser.c: DEBUG_P(("Returned string was: %s", sv->u.string));
parser.c: if (sv->u.string[0] == '#') {
parser.c: parallel_error_info.err.str = string_copy(sv->u.string + 1, "process_answer");
parser.c: return -1;
parser.c: parallel_error_info.err.str = string_copy(sv->u.string, "process_answer");
parser.c: while ((tok = parse_vn->token[index++])) {
parser.c: switch ((tok = vn->token[index++]) & ~CHOOSE_MODIFIER) {
parser.c: *(p-1) = 0; /* nuke last space */
parser.c: p = strput(p, end, literals[-(tok + 1)]);
parser.c: se = best_result->parallel;
parser.c: se = se->next;
parser.c: for (i = 0; i < bv->last; i++) {
parser.c: if (bv->b[i]) {
parser.c: if (bv->b[i] & j)
parser.c: se = best_result->parallel;
parser.c: svalue_t *ret = get_the_error(&se->err, se->obj);
parser.c: assign_svalue_no_free(&arr->item[i], ret);
parser.c: se = se->next;
parser.c: for (i = 0; i < bv->last; i++) {
parser.c: if (bv->b[i]) {
parser.c: if (bv->b[i] & j) {
parser.c: n--;
parser.c: if (ob->flags & O_DESTRUCTED) {
parser.c: arr->item[n] = const0u;
parser.c: arr->item[n].type = T_OBJECT;
parser.c: arr->item[n].u.ob = ob;
parser.c: buf = strput(buf, end, parse_verb_entry->match_name);
parser.c: push_shared_string(parse_verb_entry->match_name);
parser.c: while ((tok = parse_vn->token[index++])) {
parser.c: } else if (loaded_objects[matches[match].val.number]->flags & O_DESTRUCTED) {
parser.c: buf = strput(buf, end, literals[-(tok + 1)]);
parser.c: push_shared_string(literals[-(tok + 1)]);
parser.c:#define SET_OB(x) if ((ob = (x))->flags & O_DESTRUCTED) return 0;
parser.c: SET_OB(parse_vn->handler);
parser.c: DEBUG_P(("Trying %s ... (/%s)", func, ob->name));
parser.c: if (ob->flags & O_DESTRUCTED)
parser.c: if (ret == -3)
parser.c: if (state->num_errors == best_num_errors) {
parser.c: if (state->num_errors++ == 0)
parser.c: next = se->next;
parser.c: free_parser_error(&se->err);
parser.c: if (state->num_errors++ == 0) {
parser.c: n->next = parallel_errors;
parser.c: n->obj = ob;
parser.c: n->err = parallel_error_info;
parser.c: SET_OB(parse_vn->handler);
parser.c: DEBUG_P(("Trying %s ... (/%s)", func, ob->name));
parser.c: if (ob->flags & O_DESTRUCTED)
parser.c: if (state->num_errors == 0)
parser.c: bitvec_t *bv = &m->val.obs;
parser.c: int ordinal = m->ordinal;
parser.c: int ord2 = m->ordinal;
parser.c: int has_ordinal = (m->ordinal != 0);
parser.c: for (i = 0; i < bv->last; i++) {
parser.c: if (bv->b[i]) {
parser.c: if (bv->b[i] & j) {
parser.c: ord2--;
parser.c: if (ordinal < 0 || --ordinal == 0) {
parser.c: if (ordinal == -2)
parser.c: state->num_errors--;
parser.c: m->token = ERROR_TOKEN;
parser.c: if (ordinal != -1)
parser.c: ordinal = -2;
parser.c: m->val.number = BPI * i + k;
parser.c: m->token = ERROR_TOKEN;
parser.c: if (m->token & CHOOSE_MODIFIER) {
parser.c: if (match >= 0) m->val.number = match;
parser.c: match = -1;
parser.c: if (has_ordinal && (ordinal == -1 || --ord2 == 0)) {
parser.c: bv->b[i] &= ~j;
parser.c: m->val.number = match;
parser.c: state->num_errors--;
parser.c: m->token = ERROR_TOKEN;
parser.c: if (state->num_errors++ == 0) {
parser.c: bitvec_copy(¤t_error_info.err.obs, &m->val.obs);
parser.c: if (ordinal == -2) return;
parser.c: m->token = ERROR_TOKEN;
parser.c: if (state->num_errors++ == 0) {
parser.c: bitvec_t *bv = &m->val.obs;
parser.c: for (i = 0; i < bv->last; i++) {
parser.c: if (bv->b[i]) {
parser.c: if (bv->b[i] & j) {
parser.c: bv->b[i] &= ~j;
parser.c: m->token = ERROR_TOKEN;
parser.c: if (!err->error_type)
parser.c: if (state->num_errors++ == 0) {
parser.c: err->error_type = 0;
parser.c: bitvec_t *bv = &m->val.obs;
parser.c: for (i = 0; i < bv->last; i++) {
parser.c: if (bv->b[i]) {
parser.c: if (bv->b[i] & j) {
parser.c: bv->b[i] &= ~j;
parser.c: if (!found_one) m->val.number = BPI * i + k;
parser.c: m->token = ERROR_TOKEN;
parser.c: * This function checks if two object can be used together in two-object rule.
parser.c: /* The same as above - the object can be used for the action,
parser.c: * This function checks if the objects in two-object rule can really
parser.c: int i, direct = -1, indirect = -1;
parser.c: int found_direct = -1, found_indirect = -1;
parser.c: for (i = 0; i < state->num_matches; i++) {
parser.c: for (; i < bv->last; i++) {
parser.c: if (bv->b[i]) {
parser.c: if (bv->b[i] & j) {
parser.c: if (!--ord) {
parser.c: /* there's less indirect objs than specified --> error */
parser.c: if (state->num_errors++ == 0) {
parser.c: state->num_errors++;
parser.c: if (!(direct_ordinal = matches[direct].ordinal)) direct_ordinal = -1;
parser.c: for (i = 0; !finished && i < dir_objs->last; i++) if (dir_objs->b[i]) {
parser.c: for(j = 1, k = 0; j ; j <<=1, k++) if (dir_objs->b[i] & j) {
parser.c: for (l = 0; l < indir_objs->last; l++) if (indir_objs->b[l]) {
parser.c: for (m = 1, n = 0; m ; m <<= 1, n++) if (indir_objs->b[l] & m) {
parser.c: /* indirect unique --> check indirect_ first. */
parser.c: if (state->num_errors++ == 0) {
parser.c: if (direct_ordinal > 0) direct_ordinal--;
parser.c: if (state->num_errors++ == 0) {
parser.c: if (best_match >= parse_vn->weight) {
parser.c: if (state->num_errors) {
parser.c: if (state->num_errors > best_num_errors) {
parser.c: if (state->num_errors == best_num_errors
parser.c: && parse_vn->weight < best_error_match) {
parser.c: for (which = 1, mtch = 0; which < 3 && mtch < state->num_matches; mtch++) {
parser.c: else if (state->num_objs == 2)
parser.c: if (state->num_objs == 2 && !state->num_errors) {
parser.c: if (state->num_errors) {
parser.c: int weight = parse_vn->weight;
parser.c: if (state->num_errors == best_num_errors &&
parser.c: best_num_errors = state->num_errors;
parser.c: best_match = parse_vn->weight;
parser.c: if (parse_vn->handler->flags & O_DESTRUCTED) {
parser.c: best_result->ob = parse_vn->handler;
parser.c: best_result->parallel = parallel_errors;
parser.c: add_ref(parse_vn->handler, "best_result");
parser.c: best_result->res[try].func = string_copy(func, "best_result");
parser.c: best_result->res[try].num = args;
parser.c: p = (char *)(best_result->res[try].args = CALLOCATE(args,
parser.c: memcpy(p, (char *)(sp - args + 1), args * sizeof(svalue_t));
parser.c: sp -= args;
parser.c: DEBUG_P(("Saving successful match: %s (%s)", best_result->res[0].func,
parser.c: best_result->ob->name));
parser.c: object_t *ob = best_result->ob;
parser.c: if (ob->flags & O_DESTRUCTED) return;
parser.c: n = best_result->res[i].num;
parser.c: memcpy((char *)(sp + 1), best_result->res[i].args, n*sizeof(svalue_t));
parser.c: while (n--) {
parser.c: if ((++sp)->type == T_OBJECT && (sp->u.ob->flags & O_DESTRUCTED)) {
parser.c: free_object(sp->u.ob, "do_the_call");
parser.c: FREE(best_result->res[i].args);
parser.c: best_result->res[i].args = 0;
parser.c: DEBUG_P(("Calling %s ...", best_result->res[i].func));
parser.c: if (apply(best_result->res[i].func, ob,
parser.c: best_result->res[i].num, ORIGIN_DRIVER)) return;
parser.c: ob->name);
parser.c: tok = parse_vn->token[state->tok_index++];
parser.c: if (state->word_index == num_words && tok) {
parser.c: if (state->word_index == num_words)
parser.c: start = state->word_index++;
parser.c: while (state->word_index <= num_words) {
parser.c: start, state->word_index - 1);
parser.c: current_error_info.err.str_problem.end = state->word_index - 1;
parser.c: state->word_index++;
parser.c: if (!parse_vn->token[state->tok_index]) {
parser.c: start = state->word_index;
parser.c: state->word_index = num_words;
parser.c: add_match(state, STR_TOKEN, start, num_words - 1);
parser.c: start = state->word_index++;
parser.c: while (state->word_index <= num_words) {
parser.c: start, state->word_index - 1);
parser.c: state->word_index++;
parser.c: add_match(state, WRD_TOKEN, state->word_index, state->word_index);
parser.c: state->word_index++;
parser.c: if (literals[-(tok + 1)] == words[state->word_index].string) {
parser.c: state->word_index++;
parser.c: DEBUG_P(("Matched literal: %s", literals[-(tok + 1)]));
parser.c: if (state->tok_index == 1) {
parser.c: switch (parse_vn->token[state->tok_index - 2]) {
parser.c: while (literals[-(tok + 1)] != words[state->word_index++].string) {
parser.c: if (state->word_index == num_words) {
parser.c: last = &matches[state->num_matches-1];
parser.c: last->token = ERROR_TOKEN;
parser.c: last->last = state->word_index-1;
parser.c: if (state->num_errors++ == 0) {
parser.c: current_error_info.err.str_problem.start = last->first;
parser.c: current_error_info.err.str_problem.end = state->word_index - 1;
parser.c: parse_vn = parse_verb_entry->node;
parser.c: if ((!parse_restricted || parse_vn->handler == parse_restricted)
parser.c: && (best_match <= parse_vn->weight)) {
parser.c: if ((parse_vn->lit[0] == -1 ||
parser.c: (pos = check_literal(parse_vn->lit[0], 1)))
parser.c: && (parse_vn->lit[1] == -1 ||
parser.c: check_literal(parse_vn->lit[1], pos))) {
parser.c: parse_vn = parse_vn->next;
parser.c: l = iwp[1] - iwp[0] - 1;
parser.c: words[num_words].end = oend[iwp - iwords - 1];
parser.c: idx = iwp - iwords;
parser.c: num_words--;
parser.c: l = p - buf;
parser.c: words[num_words].end = oend[iwp - iwords - 1];
parser.c: idx = iwp - iwords;
parser.c: num_words--;
parser.c: char *end = EndOf(buf) - 1; /* space for zero */
parser.c: inp--;
parser.c: orig_ends[n] = inp - 1; /* points to where c was */
parser.c: orig_ends[n] = inp - 2;
parser.c: orig_ends[n - 1] = inp - 2;
parser.c: orig_ends[0] = inp - 2;
parser.c: if (ve->real_name == vb) {
parser.c: if (ve->flags & VB_IS_SYN)
parser.c: parse_verb_entry = ((verb_syn_t *)ve)->real;
parser.c: (parse_verb_entry->flags & VB_HAS_OBJ))
parser.c: words[0].end = orig_ends[i-1];
parser.c: ve = ve->next;
parser.c: starts[i][-1] = ' ';
parser.c: int tmp = err->error_type;
parser.c: err->error_type = 0;
parser.c: if (obj == -1 || (loaded_objects[obj]->flags & O_DESTRUCTED))
parser.c: push_shared_string(err->err.noun->name);
parser.c: push_number(get_single(&err->err.noun->pv.noun) == -1);
parser.c: push_bitvec_as_array(&err->err.obs, 0);
parser.c: push_number(err->err.ord_error);
parser.c: push_words(err->err.str_problem.start,
parser.c: err->err.str_problem.end);
parser.c: push_malloced_string(err->err.str);
parser.c: sp--;
parser.c: hack.u.number = -found_level;
parser.c: if (!current_object->pinfo)
parser.c: current_object->name);
parser.c: parse_nicks = (sp--)->u.map;
parser.c: parse_env = (sp--)->u.arr;
parser.c: if (st_num_arg >= 2 && (sp--)->u.number) {
parser.c: if ((sp + 1)->u.number > 1)
parser.c: error("Parser debugging not enabled. (compile with -DDEBUG or -DPARSE_DEBUG).\n");
parser.c: sp->type = T_ERROR_HANDLER;
parser.c: sp->u.error_handler = free_parse_globals;
parser.c: pi = current_object->pinfo;
parser.c: parse_sentence((sp-1)->u.string);
parser.c: sp--; /* pop the error handler */
parser.c: svalue_t *ret = get_the_error(&best_error_info, -1);
parser.c: sp--; /* pop the error handler */
parser.c: ret->type = T_NUMBER; /* will be freed later */
parser.c: int flag = (st_num_arg == 3 ? (sp--)->u.number : 0);
parser.c: if (!(sp-1)->u.ob->pinfo)
parser.c: (sp-1)->u.ob->name);
parser.c: if (!current_object->pinfo)
parser.c: current_object->name);
parser.c: sp->type = T_ERROR_HANDLER;
parser.c: sp->u.error_handler = free_parse_globals;
parser.c: parse_user = (sp-2)->u.ob;
parser.c: pi = parse_user->pinfo;
parser.c: parse_sentence((sp-1)->u.string);
parser.c: sp--; /* pop the error handler */
parser.c: free_string_svalue(sp--);
parser.c: n = best_result->res[3].num;
parser.c: memcpy((char *)arr->item, best_result->res[3].args, n*sizeof(svalue_t));
parser.c: while (n--) {
parser.c: if (arr->item[n].type == T_OBJECT && arr->item[n].u.ob->flags & O_DESTRUCTED) {
parser.c: free_object(arr->item[n].u.ob, "parse_my_rules");
parser.c: arr->item[n] = const0u;
parser.c: FREE(best_result->res[3].args);
parser.c: best_result->res[3].args = 0;
parser.c: sp--; /* pop the error handler */
parser.c: free_string_svalue(sp--);
parser.c: svalue_t *ret = get_the_error(&best_error_info, -1);
parser.c: sp--; /* pop the error handler */
parser.c: free_string_svalue(sp--);
parser.c: ret->type = T_NUMBER;
parser.c: if (verb_entry->match_name == verb) {
parser.c: verb_node_t **vn = &(verb_entry->node), *old;
parser.c: if ((*vn)->handler == current_object) {
parser.c: *vn = (*vn)->next;
parser.c: } else vn = &((*vn)->next);
parser.c: verb_entry = verb_entry->next;
parser.c: free_string_svalue(sp--);
parser.c: rule = sp->u.string;
parser.c: verb = SHARED_STRING(sp-1);
parser.c: if (!(handler->pinfo))
parser.c: handler->name);
parser.c: if (verb_entry->match_name == verb &&
parser.c: verb_entry->real_name == verb &&
parser.c: !(verb_entry->flags & VB_IS_SYN))
parser.c: verb_entry = verb_entry->next;
parser.c: verb = make_shared_string((sp-1)->u.string);
parser.c: verb_entry->real_name = verb;
parser.c: verb_entry->match_name = verb;
parser.c: verb_entry->node = 0;
parser.c: verb_entry->flags = 0;
parser.c: verb_entry->next = verbs[h];
parser.c: lit[j++] = -(tokens[i]+1);
parser.c: lit[j++] = -1;
parser.c: verb_node->lit[0] = lit[0];
parser.c: verb_node->lit[1] = lit[1];
parser.c: verb_entry->flags |= VB_HAS_OBJ;
parser.c: verb_node->token[j] = tokens[j];
parser.c: verb_node->weight = weight;
parser.c: verb_node->handler = handler;
parser.c: handler->pinfo->flags |= PI_VERB_HANDLER;
parser.c: verb_node->next = verb_entry->node;
parser.c: verb_entry->node = verb_node;
parser.c: handler->pinfo->flags |= PI_REMOTE_LIVINGS;
parser.c: free_string_svalue(sp--);
parser.c: free_string_svalue(sp--);
parser.c: orig_new_verb = (sp-2)->u.string;
parser.c: new_verb = SHARED_STRING(sp-2);
parser.c: old_verb = SHARED_STRING(sp-1);
parser.c: rule = sp->u.string;
parser.c: orig_new_verb = (sp-1)->u.string;
parser.c: new_verb = SHARED_STRING(sp-1);
parser.c: if (vb->real_name == old_verb && vb->match_name == old_verb)
parser.c: vb = vb->next;
parser.c: if (verb_entry->real_name == new_verb
parser.c: && verb_entry->match_name == old_verb) {
parser.c: if ((verb_entry->flags & VB_IS_SYN) == 0) break;
parser.c: if ((verb_entry->flags & VB_IS_SYN))
parser.c: verb_entry = verb_entry->next;
parser.c: verb_entry->real_name = new_verb;
parser.c: verb_entry->match_name = old_verb;
parser.c: verb_entry->node = 0;
parser.c: verb_entry->flags = 0;
parser.c: verb_entry->next = verbs[h];
parser.c: for (vn = vb->node; vn; vn = vn->next) {
parser.c: if (vn->token[i] != tokens[i]) break;
parser.c: if (!tokens[i] && !vn->token[i]) break; /* match */
parser.c: if (vn->handler != current_object) error("Rule owned by different object.\n");
parser.c: for (i = 0; vn->token[i]; i++)
parser.c: if (vn->token[i] >= OBJ_A_TOKEN) {
parser.c: verb_entry->flags |= VB_HAS_OBJ;
parser.c: verb_node->next = verb_entry->node;
parser.c: verb_entry->node = verb_node;
parser.c: syn->flags = VB_IS_SYN | (vb->flags & VB_HAS_OBJ);
parser.c: syn->real = vb;
parser.c: if (st_num_arg == 3) free_string_svalue(sp--);
parser.c: free_string_svalue(sp--);
parser.c: free_string_svalue(sp--);
parser.c: for (v = verbs[i]; v; v = v->next) {
parser.c: verb_node_t *vn = v->node;
parser.c: if (v->real_name == v->match_name)
parser.c: outbuf_addv(&ob, "Verb %s:\n", v->real_name);
parser.c: outbuf_addv(&ob, "Verb %s (%s):\n", v->real_name, v->match_name);
parser.c: if (v->flags & VB_IS_SYN) {
parser.c: outbuf_addv(&ob, " Synonym for: %s\n", ((verb_syn_t *)v)->real->real_name);
parser.c: outbuf_addv(&ob, " (/%s) %s\n", vn->handler->name, rule_string(vn));
parser.c: vn = vn->next;
sockets.c: arg = sp - num_arg + 1;
sockets.c: if (check_valid_socket("create", -1, current_object, "N/A", -1)) {
sockets.c: pop_n_elems(num_arg - 1);
sockets.c: sp->u.number = fd;
sockets.c: pop_n_elems(num_arg - 1);
sockets.c: sp->u.number = EESECURITY;
sockets.c: arg = sp - num_arg + 1;
sockets.c: pop_n_elems(num_arg - 1);
sockets.c: sp->u.number = i;
sockets.c: pop_n_elems(num_arg - 1);
sockets.c: sp->u.number = EESECURITY;
sockets.c: fd = (sp - 1)->u.number;
sockets.c: sp->u.number = i;
sockets.c: sp->u.number = EESECURITY;
sockets.c: if (!(sp->type & (T_STRING | T_FUNCTION))) {
sockets.c: get_socket_address(fd = (sp-2)->u.number, addr, &port, 0);
sockets.c: (sp-2)->u.number = VALID_SOCKET("accept") ?
sockets.c: socket_accept(fd, (sp - 1), sp) :
sockets.c: if (!((sp - 1)->type & (T_FUNCTION | T_STRING))) {
sockets.c: if (!(sp->type & (T_FUNCTION | T_STRING))) {
sockets.c: fd = (sp - 3)->u.number;
sockets.c: if ((s = strchr((sp - 2)->u.string, ' '))) {
sockets.c: i = s - (sp - 2)->u.string;
sockets.c: if (i > ADDR_BUF_SIZE - 1) {
sockets.c: start = i - ADDR_BUF_SIZE - 1;
sockets.c: i = ADDR_BUF_SIZE - 1;
sockets.c: strncat(addr, (sp - 2)->u.string + start, i);
sockets.c: fprintf(stderr, "socket_connect: requested on: %s\n", (sp - 2)->u.string);
sockets.c: (sp-3)->u.number = VALID_SOCKET("connect") ?
sockets.c: socket_connect(fd, (sp - 2)->u.string, sp - 1, sp) : EESECURITY;
sockets.c: arg = sp - num_arg + 1;
sockets.c: pop_n_elems(num_arg - 1);
sockets.c: sp->u.number = i;
sockets.c: pop_n_elems(num_arg - 1);
sockets.c: sp->u.number = EESECURITY;
sockets.c: fd = sp->u.number;
sockets.c: sp->u.number = VALID_SOCKET("close") ? socket_close(fd, 0) : EESECURITY;
sockets.c: if (!(sp->type & (T_STRING | T_FUNCTION))) {
sockets.c: fd = (sp - 2)->u.number;
sockets.c: (sp-2)->u.number = VALID_SOCKET("release") ?
sockets.c: socket_release((sp - 2)->u.number, (sp - 1)->u.ob, sp) :
sockets.c: if (sp->type == T_OBJECT)
sockets.c: free_object(sp->u.ob, "socket_release()");
sockets.c: sp--;
sockets.c: if (!((sp - 1)->type & (T_FUNCTION | T_STRING))) {
sockets.c: if (!(sp->type & (T_FUNCTION | T_STRING))) {
sockets.c: fd = (sp - 3)->u.number;
sockets.c: (sp-3)->u.number = VALID_SOCKET("acquire") ?
sockets.c: socket_acquire((sp - 3)->u.number, (sp - 2),
sockets.c: (sp - 1), sp) : EESECURITY;
sockets.c: put_constant_string(socket_error(sp->u.number));
sockets.c: local = (sp--)->u.number;
sockets.c: if (sp->type & T_OBJECT) {
sockets.c: if (!sp->u.ob->interactive) {
sockets.c: free_object(sp->u.ob, "f_socket_address:1");
sockets.c: tmp = inet_ntoa(sp->u.ob->interactive->addr.sin_addr);
sockets.c: ntohs(sp->u.ob->interactive->addr.sin_port));
sockets.c: free_object(sp->u.ob, "f_socket_address:2");
sockets.c: get_socket_address(sp->u.number, addr, &port, local);
sockets.c: info = socket_status(sp->u.number);
sockets.c: sp->u.number = 0;
sockets.c: sp->type = T_ARRAY;
sockets.c: sp->u.arr = info;
sockets.c: info->item[i].type = T_ARRAY;
sockets.c: info->item[i].u.arr = socket_status(i);
uids.c: * 11-1-92 - Erik Kay - initial creation
uids.c: * 94.07.14 - Robocoder - replaced linked list with AVL tree, and
uids.c: if (current_object->euid == NULL)
uids.c: ob = sp->u.ob;
uids.c: if (ob->euid) {
uids.c: ob->uid = current_object->euid;
uids.c: if (sp->type & T_OBJECT) {
uids.c: ob = sp->u.ob;
uids.c: if (ob->euid) {
uids.c: put_constant_string(ob->euid->name);
uids.c: } else if (sp->type & T_FUNCTION) {
uids.c: if ((fp = sp->u.fp)->hdr.owner && fp->hdr.owner->euid) {
uids.c: put_constant_string(fp->hdr.owner->euid->name);
uids.c: ob = sp->u.ob;
uids.c: DEBUG_CHECK(ob->uid == NULL, "UID is a null pointer\n");
uids.c: put_constant_string(ob->uid->name);
uids.c: if (sp->type & T_NUMBER) {
uids.c: if (sp->u.number)
uids.c: current_object->euid = NULL;
uids.c: sp->u.number = 1;
uids.c: current_object->euid = add_uid(sp->u.string);
uids.c: DO_MARK(tr->tree_p, TAG_UID);
uids.c: EXTRA_REF(BLOCK(((userid_t *)tr->tree_p)->name))++;
uids.c: if (tr->tree_l)
uids.c: mark_uid_tree(tr->tree_l);
uids.c: if (tr->tree_r)
uids.c: mark_uid_tree(tr->tree_r);
uids.c: name1 = uid1->name;
uids.c: name2 = uid2->name;
uids.c: return (name1 < name2 ? -1 : (name1 > name2 ? 1 : 0));
uids.c: uid->name = sname;
uids.c: root_uid->name = make_shared_string(name);
uids.c: backbone_uid->name = make_shared_string(name);