/*
- * Copyright (C) 2011 Mathieu Bain <mathieu.bain@polymtl.ca>
+ * Copyright (C) 2011-2012 Mathieu Bain <mathieu.bain@polymtl.ca>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License Version 2 as
struct files *tmp_file;
struct processtop *parent;
int size;
+ int i;
size = proc->process_files_table->len;
parent = proc->threadparent;
if (parent)
insert_file(parent, fd);
if (size <= fd) {
- g_ptr_array_set_size(proc->process_files_table, fd);
+ /* Add NULL file structures for undefined FDs */
+ for (i = size; i < fd; i++) {
+ g_ptr_array_add(proc->process_files_table, NULL);
+ }
g_ptr_array_add(proc->process_files_table, file);
} else {
tmp_file = g_ptr_array_index(proc->process_files_table, fd);
tmp = get_proc(ctx, tid, comm, timestamp);
+ if (!tmp) {
+ err = -1;
+ goto end;
+ }
if (tmp->syscall_info != NULL) {
if (tmp->syscall_info->type == __NR_read
&& ret > 0) {
g_free(tmp->syscall_info);
tmp->syscall_info = NULL;
}
+
+end:
return err;
}
}
tmp = get_proc(<tngtop, tid, procname, timestamp);
+ if (!tmp)
+ goto end;
+
tmp->syscall_info = create_syscall_info(__NR_write, cpu_id, tid, fd);
insert_file(tmp, fd);
+end:
return BT_CB_OK;
error:
}
tmp = get_proc(<tngtop, tid, procname, timestamp);
+ if (!tmp)
+ goto end;
+
tmp->syscall_info = create_syscall_info(__NR_read, cpu_id, tid, fd);
insert_file(tmp, fd);
+end:
return BT_CB_OK;
error:
}
tmp = get_proc(<tngtop, tid, procname, timestamp);
+ if (!tmp)
+ goto end;
+
tmp->syscall_info = create_syscall_info(__NR_open, cpu_id, tid, -1);
tmp->files_history = create_file(tmp->files_history, file);
+end:
return BT_CB_OK;
error:
}
tmp = get_proc(<tngtop, tid, procname, timestamp);
+ if (!tmp)
+ goto end;
close_file(tmp, fd);
+end:
return BT_CB_OK;
error:
}
parent = get_proc_pid(<tngtop, pid, pid, timestamp);
+ if (!parent)
+ goto end;
+
parent->files_history = create_file(parent->files_history, file_name);
file = parent->files_history->file;
edit_file(parent, file, fd);
+end:
return BT_CB_OK;
error: