diff options
author | Konstantin Belousov <kib@FreeBSD.org> | 2021-04-24 10:31:58 +0000 |
---|---|---|
committer | Konstantin Belousov <kib@FreeBSD.org> | 2021-05-03 16:18:26 +0000 |
commit | c192228b7398df72e472128605338555e5aa2db9 (patch) | |
tree | 05ce3154bf248ae7a361c61881c90c63bac191fd | |
parent | 87a64872cd3166a09b58aac28cdb95380d6a38eb (diff) | |
download | src-c192228b7398df72e472128605338555e5aa2db9.tar.gz src-c192228b7398df72e472128605338555e5aa2db9.zip |
gcore: split code to open core file into helper
Reviewed by: markj
Tested by: pho
Sponsored by: The FreeBSD Foundation
MFC after: 1 week
Differential revision: https://reviews.freebsd.org/D29955
-rw-r--r-- | usr.bin/gcore/gcore.c | 25 |
1 files changed, 17 insertions, 8 deletions
diff --git a/usr.bin/gcore/gcore.c b/usr.bin/gcore/gcore.c index 8681b8484d81..cbbfea82085b 100644 --- a/usr.bin/gcore/gcore.c +++ b/usr.bin/gcore/gcore.c @@ -78,12 +78,27 @@ static pid_t pid; SET_DECLARE(dumpset, struct dumpers); +static int +open_corefile(char *corefile) +{ + char fname[MAXPATHLEN]; + + if (corefile == NULL) { + (void)snprintf(fname, sizeof(fname), "core.%d", pid); + corefile = fname; + } + fd = open(corefile, O_RDWR | O_CREAT | O_TRUNC, DEFFILEMODE); + if (fd < 0) + err(1, "%s", corefile); + return (fd); +} + int main(int argc, char *argv[]) { int ch, efd, fd, name[4]; char *binfile, *corefile; - char passpath[MAXPATHLEN], fname[MAXPATHLEN]; + char passpath[MAXPATHLEN]; struct dumpers **d, *dumper; size_t len; @@ -138,13 +153,7 @@ main(int argc, char *argv[]) } if (dumper == NULL) errx(1, "Invalid executable file"); - if (corefile == NULL) { - (void)snprintf(fname, sizeof(fname), "core.%d", pid); - corefile = fname; - } - fd = open(corefile, O_RDWR|O_CREAT|O_TRUNC, DEFFILEMODE); - if (fd < 0) - err(1, "%s", corefile); + fd = open_corefile(corefile); dumper->dump(efd, fd, pid); (void)close(fd); |