aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/db/main.c
diff options
context:
space:
mode:
authorrsc <devnull@localhost>2005-01-23 22:48:54 +0000
committerrsc <devnull@localhost>2005-01-23 22:48:54 +0000
commitb030a6c390428033300e4b6df2a97065059d7a48 (patch)
treeecc3b38b2535c9a17afac17c337d220c7e3c074c /src/cmd/db/main.c
parent4f2ac1b76b04df503944e86c2e7f152c2ff53f0e (diff)
downloadplan9port-b030a6c390428033300e4b6df2a97065059d7a48.tar.gz
plan9port-b030a6c390428033300e4b6df2a97065059d7a48.tar.bz2
plan9port-b030a6c390428033300e4b6df2a97065059d7a48.zip
change to use attach functions.
$a means switch thread in core dumps. (maybe that should be $A now?).
Diffstat (limited to 'src/cmd/db/main.c')
-rw-r--r--src/cmd/db/main.c90
1 files changed, 7 insertions, 83 deletions
diff --git a/src/cmd/db/main.c b/src/cmd/db/main.c
index 8e574037..3fadcc32 100644
--- a/src/cmd/db/main.c
+++ b/src/cmd/db/main.c
@@ -24,8 +24,6 @@ extern char *Ipath;
jmp_buf env;
static char *errmsg;
-Fhdr *symhdr, *corhdr;
-
void
usage(void)
{
@@ -36,11 +34,11 @@ usage(void)
void
main(int argc, char **argv)
{
- int i, omode;
+ int omode, quiet;
char *s;
char *name;
- Fhdr *hdr;
+ quiet = 0;
name = 0;
outputinit();
maxoff = MAXOFF;
@@ -68,86 +66,12 @@ main(int argc, char **argv)
if(name == 0)
dprint("missing -m argument\n");
break;
+ case 'q':
+ quiet = 1;
+ break;
}ARGEND
- /*
- * Unix and Plan 9 differ on what the right order of pid, text, and core is.
- * I never remember anyway. Let's just accept them in any order.
- */
- for(i=0; i<argc; i++){
- if(alldigs(argv[i])){
- if(pid){
- dprint("already have pid %d; ignoring pid %d\n", pid, argv[i]);
- continue;
- }
- if(corhdr){
- dprint("already have core %s; ignoring pid %d\n", corfil, pid);
- continue;
- }
- pid = atoi(argv[i]);
- continue;
- }
- if((hdr = crackhdr(argv[i], omode)) == nil){
- dprint("crackhdr %s: %r\n", argv[i]);
- continue;
- }
- dprint("%s: %s %s %s\n", argv[i], hdr->aname, hdr->mname, hdr->fname);
- if(hdr->ftype == FCORE){
- if(pid){
- dprint("already have pid %d; ignoring core %s\n", pid, argv[i]);
- uncrackhdr(hdr);
- continue;
- }
- if(corhdr){
- dprint("already have core %s; ignoring core %s\n", corfil, argv[i]);
- uncrackhdr(hdr);
- continue;
- }
- corhdr = hdr;
- corfil = argv[i];
- }else{
- if(symhdr){
- dprint("already have text %s; ignoring text %s\n", symfil, argv[i]);
- uncrackhdr(hdr);
- continue;
- }
- symhdr = hdr;
- symfil = argv[i];
- }
- }
-
- if(symhdr==nil){
- symfil = "a.out";
- if(pid){
- if((s = proctextfile(pid)) != nil){
- dprint("pid %d: text %s\n", pid, s);
- symfil = s;
- }
- }
- /* XXX pull command from core */
-
- if((symhdr = crackhdr(symfil, omode)) == nil){
- dprint("crackhdr %s: %r\n", symfil);
- symfil = nil;
- }
- }
-
- if(!mach)
- mach = machcpu;
-
- /*
- * Set up maps.
- */
- symmap = allocmap();
- cormap = allocmap();
- if(symmap == nil || cormap == nil)
- sysfatal("allocating maps: %r");
-
- if(symhdr){
- if(mapfile(symhdr, 0, symmap, nil) < 0)
- dprint("mapping %s: %r\n", symfil);
- mapfile(symhdr, 0, cormap, nil);
- }
+ attachargs(argc, argv, omode, !quiet);
dotmap = dumbmap(-1);
@@ -159,7 +83,7 @@ main(int argc, char **argv)
if(setjmp(env) == 0){
if (pid || corhdr)
setcor(); /* could get error */
- if (correg) {
+ if (correg && !quiet) {
dprint("%s\n", mach->exc(cormap, correg));
printpc();
}