diff options
author | Ingo Schwarze <schwarze@openbsd.org> | 2021-10-04 14:19:14 +0000 |
---|---|---|
committer | Ingo Schwarze <schwarze@openbsd.org> | 2021-10-04 14:19:14 +0000 |
commit | 6cf3130222c8a052812f22a637ff37432d52c42f (patch) | |
tree | 550ae93b3df3b3a47f0251eed798aa6875e02b9d | |
parent | f4174837da105cb47f793106fb8f2af2eacaf008 (diff) | |
download | mandoc-6cf3130222c8a052812f22a637ff37432d52c42f.tar.gz mandoc-6cf3130222c8a052812f22a637ff37432d52c42f.tar.zst mandoc-6cf3130222c8a052812f22a637ff37432d52c42f.zip |
store the operating system name obtained from uname(3) in the adequate
struct together with similar state date rather than in a function-scope
static variable, such that it can be free(3)d in roff_man_free();
no functional change
-rw-r--r-- | mdoc_validate.c | 13 | ||||
-rw-r--r-- | roff.c | 5 | ||||
-rw-r--r-- | roff_int.h | 1 |
3 files changed, 10 insertions, 9 deletions
diff --git a/mdoc_validate.c b/mdoc_validate.c index e1cd3ae1..a92d4077 100644 --- a/mdoc_validate.c +++ b/mdoc_validate.c @@ -1,6 +1,6 @@ -/* $Id: mdoc_validate.c,v 1.389 2021/07/18 11:41:23 schwarze Exp $ */ +/* $Id: mdoc_validate.c,v 1.390 2021/10/04 14:19:14 schwarze Exp $ */ /* - * Copyright (c) 2010-2020 Ingo Schwarze <schwarze@openbsd.org> + * Copyright (c) 2010-2021 Ingo Schwarze <schwarze@openbsd.org> * Copyright (c) 2008-2012 Kristaps Dzonsons <kristaps@bsd.lv> * Copyright (c) 2010 Joerg Sonnenberger <joerg@netbsd.org> * @@ -2872,7 +2872,6 @@ post_os(POST_ARGS) { #ifndef OSNAME struct utsname utsname; - static char *defbuf; #endif struct roff_node *n; @@ -2909,15 +2908,15 @@ post_os(POST_ARGS) #ifdef OSNAME mdoc->meta.os = mandoc_strdup(OSNAME); #else /*!OSNAME */ - if (defbuf == NULL) { + if (mdoc->os_r == NULL) { if (uname(&utsname) == -1) { mandoc_msg(MANDOCERR_OS_UNAME, n->line, n->pos, "Os"); - defbuf = mandoc_strdup("UNKNOWN"); + mdoc->os_r = mandoc_strdup("UNKNOWN"); } else - mandoc_asprintf(&defbuf, "%s %s", + mandoc_asprintf(&mdoc->os_r, "%s %s", utsname.sysname, utsname.release); } - mdoc->meta.os = mandoc_strdup(defbuf); + mdoc->meta.os = mandoc_strdup(mdoc->os_r); #endif /*!OSNAME*/ out: @@ -1,6 +1,6 @@ -/* $Id: roff.c,v 1.379 2021/10/04 10:12:27 schwarze Exp $ */ +/* $Id: roff.c,v 1.380 2021/10/04 14:19:14 schwarze Exp $ */ /* - * Copyright (c) 2010-2015, 2017-2020 Ingo Schwarze <schwarze@openbsd.org> + * Copyright (c) 2010-2015, 2017-2021 Ingo Schwarze <schwarze@openbsd.org> * Copyright (c) 2008-2012, 2014 Kristaps Dzonsons <kristaps@bsd.lv> * * Permission to use, copy, modify, and distribute this software for any @@ -861,6 +861,7 @@ void roff_man_free(struct roff_man *man) { roff_man_free1(man); + free(man->os_r); free(man); } @@ -35,6 +35,7 @@ struct roff_man { struct ohash *mdocmac; /* Mdoc macro lookup table. */ struct ohash *manmac; /* Man macro lookup table. */ const char *os_s; /* Default operating system. */ + char *os_r; /* Operating system name at run time. */ struct roff_node *last; /* The last node parsed. */ struct roff_node *last_es; /* The most recent Es node. */ int quick; /* Abort parse early. */ |