Change the output of truss to more closely resemble SysV's. (Yes, it
really is much nicer looking.) Submitted by: "Matthew N. Dodd" <winter@jurai.net>
This commit is contained in:
parent
54dd58b383
commit
6cb533fe1c
@ -321,12 +321,7 @@ alpha_syscall_exit(int pid, int syscall) {
|
||||
* but that complicates things considerably.
|
||||
*/
|
||||
|
||||
print_syscall(outfile, fsc.name, fsc.nargs, fsc.s_args);
|
||||
if (errorp) {
|
||||
fprintf(outfile, "errno %d '%s'\n", retval, strerror(retval));
|
||||
} else {
|
||||
fprintf(outfile, "returns %d (0x%x)\n", retval, retval);
|
||||
}
|
||||
print_syscall_ret(outfile, fsc.name, fsc.nargs, fsc.s_args, errorp, retval);
|
||||
clear_fsc();
|
||||
|
||||
return;
|
||||
|
@ -299,12 +299,7 @@ i386_syscall_exit(int pid, int syscall) {
|
||||
* but that complicates things considerably.
|
||||
*/
|
||||
|
||||
print_syscall(outfile, fsc.name, fsc.nargs, fsc.s_args);
|
||||
if (errorp) {
|
||||
fprintf(outfile, "errno %d '%s'\n", retval, strerror(retval));
|
||||
} else {
|
||||
fprintf(outfile, "returns %d (0x%x)\n", retval, retval);
|
||||
}
|
||||
print_syscall_ret(outfile, fsc.name, fsc.nargs, fsc.s_args, errorp, retval);
|
||||
clear_fsc();
|
||||
|
||||
return;
|
||||
|
@ -238,15 +238,12 @@ i386_linux_syscall_exit(int pid, int syscall) {
|
||||
}
|
||||
}
|
||||
}
|
||||
print_syscall(outfile, lsc.name, lsc.nargs, lsc.s_args);
|
||||
if (errorp) {
|
||||
for (i = 0; i < sizeof(bsd_to_linux_errno) / sizeof(int); i++)
|
||||
if (retval == bsd_to_linux_errno[i])
|
||||
break;
|
||||
fprintf(outfile, "errno %d '%s'\n", retval, strerror(i));
|
||||
} else {
|
||||
fprintf(outfile, "returns %d (0x%x)\n", retval, retval);
|
||||
}
|
||||
print_syscall_ret(outfile, lsc.name, lsc.nargs, lsc.s_args, errorp, i);
|
||||
clear_lsc();
|
||||
return;
|
||||
}
|
||||
|
@ -299,12 +299,7 @@ i386_syscall_exit(int pid, int syscall) {
|
||||
* but that complicates things considerably.
|
||||
*/
|
||||
|
||||
print_syscall(outfile, fsc.name, fsc.nargs, fsc.s_args);
|
||||
if (errorp) {
|
||||
fprintf(outfile, "errno %d '%s'\n", retval, strerror(retval));
|
||||
} else {
|
||||
fprintf(outfile, "returns %d (0x%x)\n", retval, retval);
|
||||
}
|
||||
print_syscall_ret(outfile, fsc.name, fsc.nargs, fsc.s_args, errorp, retval);
|
||||
clear_fsc();
|
||||
|
||||
return;
|
||||
|
@ -238,15 +238,12 @@ i386_linux_syscall_exit(int pid, int syscall) {
|
||||
}
|
||||
}
|
||||
}
|
||||
print_syscall(outfile, lsc.name, lsc.nargs, lsc.s_args);
|
||||
if (errorp) {
|
||||
for (i = 0; i < sizeof(bsd_to_linux_errno) / sizeof(int); i++)
|
||||
if (retval == bsd_to_linux_errno[i])
|
||||
break;
|
||||
fprintf(outfile, "errno %d '%s'\n", retval, strerror(i));
|
||||
} else {
|
||||
fprintf(outfile, "returns %d (0x%x)\n", retval, retval);
|
||||
}
|
||||
print_syscall_ret(outfile, lsc.name, lsc.nargs, lsc.s_args, errorp, i);
|
||||
clear_lsc();
|
||||
return;
|
||||
}
|
||||
|
@ -45,3 +45,4 @@ struct syscall *get_syscall(const char*);
|
||||
char *get_string(int, void*, int);
|
||||
char *print_arg(int, struct syscall_args *, unsigned long*);
|
||||
void print_syscall(FILE *, const char *, int, char **);
|
||||
void print_syscall_ret(FILE *, const char *, int, char **, int, int);
|
||||
|
@ -256,13 +256,26 @@ print_arg(int fd, struct syscall_args *sc, unsigned long *args) {
|
||||
void
|
||||
print_syscall(FILE *outfile, const char *name, int nargs, char **s_args) {
|
||||
int i;
|
||||
fprintf(outfile, "syscall %s(", name);
|
||||
int len = 0;
|
||||
len += fprintf(outfile, "%s(", name);
|
||||
for (i = 0; i < nargs; i++) {
|
||||
if (s_args[i])
|
||||
fprintf(outfile, "%s", s_args[i]);
|
||||
len += fprintf(outfile, "%s", s_args[i]);
|
||||
else
|
||||
fprintf(outfile, "<missing argument>");
|
||||
fprintf(outfile, "%s", i < (nargs - 1) ? "," : "");
|
||||
len += fprintf(outfile, "<missing argument>");
|
||||
len += fprintf(outfile, "%s", i < (nargs - 1) ? "," : "");
|
||||
}
|
||||
len += fprintf(outfile, ")");
|
||||
for (i = 0; i < 6 - (len / 8); i++)
|
||||
fprintf(outfile, "\t");
|
||||
}
|
||||
|
||||
void
|
||||
print_syscall_ret(FILE *outfile, const char *name, int nargs, char **s_args, int errorp, int retval) {
|
||||
print_syscall(outfile, name, nargs, s_args);
|
||||
if (errorp) {
|
||||
fprintf(outfile, " ERR#%d '%s'\n", retval, strerror(retval));
|
||||
} else {
|
||||
fprintf(outfile, " = %d (0x%x)\n", retval, retval);
|
||||
}
|
||||
fprintf(outfile, ")\n\t");
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user