From ca02fe9b77037d56dd01ea7b5d33eebb62983e44 Mon Sep 17 00:00:00 2001 From: Tavian Barnes Date: Sat, 25 May 2024 11:55:36 -0400 Subject: bfstd: New helper for open(ctermid()) --- src/bar.c | 9 +-------- src/bfstd.c | 10 ++++++++++ src/bfstd.h | 10 ++++++++++ 3 files changed, 21 insertions(+), 8 deletions(-) (limited to 'src') diff --git a/src/bar.c b/src/bar.c index b928373..be77694 100644 --- a/src/bar.c +++ b/src/bar.c @@ -144,14 +144,7 @@ struct bfs_bar *bfs_bar_show(void) { return NULL; } - char term[L_ctermid]; - ctermid(term); - if (strlen(term) == 0) { - errno = ENOTTY; - goto fail; - } - - bar->fd = open(term, O_RDWR | O_CLOEXEC); + bar->fd = open_cterm(O_RDWR | O_CLOEXEC); if (bar->fd < 0) { goto fail; } diff --git a/src/bfstd.c b/src/bfstd.c index ce2218c..44eda7c 100644 --- a/src/bfstd.c +++ b/src/bfstd.c @@ -184,6 +184,16 @@ char *xgetdelim(FILE *file, char delim) { } } +int open_cterm(int flags) { + char path[L_ctermid]; + if (ctermid(path) == NULL || strlen(path) == 0) { + errno = ENOTTY; + return -1; + } + + return open(path, flags); +} + const char *xgetprogname(void) { const char *cmd = NULL; #if BFS_HAS_GETPROGNAME diff --git a/src/bfstd.h b/src/bfstd.h index 8055c55..f5d8622 100644 --- a/src/bfstd.h +++ b/src/bfstd.h @@ -158,6 +158,16 @@ FILE *xfopen(const char *path, int flags); */ char *xgetdelim(FILE *file, char delim); +/** + * Open the controlling terminal. + * + * @param flags + * The open() flags. + * @return + * An open file descriptor, or -1 on failure. + */ +int open_cterm(int flags); + // #include /** -- cgit v1.2.3