Compaq AA-RH99A-TE Remote Starter User Manual


 
Example 3–4: Extension That Uses Arrays: file.c (cont.)
else if((long) (fields[5].data) == vn_addr) ops = " vnops";
else if((long) (fields[5].data) == socket_addr) ops = "sockops";
else format_addr((long) fields[5].data, op_buf);
format_addr((long) struct_addr(ele), address);
format_addr((long) fields[3].data, cred);
format_addr((long) fields[4].data, data);
sprintf(buf, "%s %s %4d %4d %s %11s %11s %6d%s%s%s%s%s%s%s%s%s",
address, get_type((int) fields[0].data), fields[1].data,
fields[2].data, ops, data, cred, fields[6].data,
((long) fields[7].data) & FREAD ? " r" : "",
((long) fields[7].data) & FWRITE ? " w" : "",
((long) fields[7].data) & FAPPEND ? " a" : "",
((long) fields[7].data) & FNDELAY ? " nd" : "",
((long) fields[7].data) & FMARK ? " m" : "",
((long) fields[7].data) & FDEFER ? " d" : "",
((long) fields[7].data) & FASYNC ? " as" : "",
((long) fields[7].data) & FSHLOCK ? " sh" : "",
((long) fields[7].data) & FEXLOCK ? " ex" : "");
print(buf);
return(True);
}
static Boolean prfiles(DataStruct fil, int n)
{
DataStruct ele;
char *error;
if((ele = array_element(fil, n, &error)) == NULL){
fprintf(stderr, "Couldnt get array element\n");
fprintf(stderr, "%s\n", error);
return(False);
}
return(prfile(ele));
}
static void Usage(void){
fprintf(stderr, "Usage : file [addresses...]\n");
quit(1);
}
main(int argc, char **argv)
{
int i;
long nfile, addr;
char *error, *ptr, *resp;
DataStruct fil;
Status status;
check_args(argc, argv, help_string);
argv++;
argc--;
if(!check_fields("struct file", fields, NUM_FIELDS, NULL)){
field_errors(fields, NUM_FIELDS);
quit(1);
}
if(!check_fields("struct pid_entry", fields_pid, 2, NULL)){
field_errors(fields, 2);
quit(1);
}
if(!check_fields("struct utask", utask_fields, NUM_UTASK_FIELDS, NULL)){
3–30 Writing Extensions to the kdbx Debugger