Compaq AA-RH99A-TE Remote Starter User Manual


 
Example 3–4: Extension That Uses Arrays: file.c (cont.)
char buffer[256];
/* *** Implement addresses *** */
FieldRec fields[] = {
{ ".f_type", NUMBER, NULL, NULL },
{ ".f_count", NUMBER, NULL, NULL },
{ ".f_msgcount", NUMBER, NULL, NULL },
{ ".f_cred", NUMBER, NULL, NULL },
{ ".f_data", NUMBER, NULL, NULL },
{ ".f_ops", NUMBER, NULL, NULL },
{ ".f_u.fu_offset", NUMBER, NULL, NULL },
{ ".f_flag", NUMBER, NULL, NULL }
};
FieldRec fields_pid[] = {
{ ".pe_pid", NUMBER, NULL, NULL },
{ ".pe_proc", NUMBER, NULL, NULL },
};
FieldRec utask_fields[] = {
{ ".uu_file_state.uf_lastfile", NUMBER, NULL, NULL }, /* 0 */
{ ".uu_file_state.uf_ofile", ARRAY, NULL, NULL }, /* 1 */
{ ".uu_file_state.uf_pofile", ARRAY, NULL, NULL }, /* 2 */
{ ".uu_file_state.uf_ofile_of", NUMBER, NULL, NULL }, /* 3 */
{ ".uu_file_state.uf_pofile_of", NUMBER, NULL, NULL },/* 4 */
{ ".uu_file_state.uf_of_count", NUMBER, NULL, NULL }, /* 5 */
};
#define NUM_FIELDS (sizeof(fields)/sizeof(fields[0]))
#define NUM_UTASK_FIELDS (sizeof(utask_fields)/sizeof(utask_fields[0]))
static char *get_type(int type)
{
static char buf[5];
switch(type){
case 1: return("file");
case 2: return("sock");
case 3: return("npip");
case 4: return("pipe");
default:
sprintf(buf, "*%3d", type);
return(buf);
}
}
long vn_addr, socket_addr;
int proc_size; /* will be obtained from dbx */
static Boolean prfile(DataStruct ele)
{
char *error, op_buf[12], *ops, buf[256], address[12], cred[12], data[12];
if(!read_field_vals(ele, fields, NUM_FIELDS)){
field_errors(fields, NUM_FIELDS);
return(False);
}
if((long) fields[1].data == 0) return(True);
if((long) (fields[5].data) == 0) ops = " *Null*";
Writing Extensions to the kdbx Debugger 3–29