From e95ec269efdfbd97b5d0ee85dda38e7bae498181 Mon Sep 17 00:00:00 2001 From: Tavian Barnes Date: Mon, 17 Dec 2018 17:10:18 -0500 Subject: bftw: Move bftw_typeflag conversion out of util Turns out incomplete enum types are a GNU C extension. --- util.c | 99 +----------------------------------------------------------------- 1 file changed, 1 insertion(+), 98 deletions(-) (limited to 'util.c') diff --git a/util.c b/util.c index 93f86ca..b708527 100644 --- a/util.c +++ b/util.c @@ -173,7 +173,7 @@ int xlocaltime(const time_t *timep, struct tm *result) { void format_mode(mode_t mode, char str[11]) { strcpy(str, "----------"); - switch (mode_to_typeflag(mode)) { + switch (bftw_mode_typeflag(mode)) { case BFTW_BLK: str[0] = 'b'; break; @@ -275,103 +275,6 @@ bool is_nonexistence_error(int error) { return error == ENOENT || errno == ENOTDIR; } -enum bftw_typeflag mode_to_typeflag(mode_t mode) { - switch (mode & S_IFMT) { -#ifdef S_IFBLK - case S_IFBLK: - return BFTW_BLK; -#endif -#ifdef S_IFCHR - case S_IFCHR: - return BFTW_CHR; -#endif -#ifdef S_IFDIR - case S_IFDIR: - return BFTW_DIR; -#endif -#ifdef S_IFDOOR - case S_IFDOOR: - return BFTW_DOOR; -#endif -#ifdef S_IFIFO - case S_IFIFO: - return BFTW_FIFO; -#endif -#ifdef S_IFLNK - case S_IFLNK: - return BFTW_LNK; -#endif -#ifdef S_IFPORT - case S_IFPORT: - return BFTW_PORT; -#endif -#ifdef S_IFREG - case S_IFREG: - return BFTW_REG; -#endif -#ifdef S_IFSOCK - case S_IFSOCK: - return BFTW_SOCK; -#endif -#ifdef S_IFWHT - case S_IFWHT: - return BFTW_WHT; -#endif - - default: - return BFTW_UNKNOWN; - } -} - -enum bftw_typeflag dirent_to_typeflag(const struct dirent *de) { -#if defined(_DIRENT_HAVE_D_TYPE) || defined(DT_UNKNOWN) - switch (de->d_type) { -#ifdef DT_BLK - case DT_BLK: - return BFTW_BLK; -#endif -#ifdef DT_CHR - case DT_CHR: - return BFTW_CHR; -#endif -#ifdef DT_DIR - case DT_DIR: - return BFTW_DIR; -#endif -#ifdef DT_DOOR - case DT_DOOR: - return BFTW_DOOR; -#endif -#ifdef DT_FIFO - case DT_FIFO: - return BFTW_FIFO; -#endif -#ifdef DT_LNK - case DT_LNK: - return BFTW_LNK; -#endif -#ifdef DT_PORT - case DT_PORT: - return BFTW_PORT; -#endif -#ifdef DT_REG - case DT_REG: - return BFTW_REG; -#endif -#ifdef DT_SOCK - case DT_SOCK: - return BFTW_SOCK; -#endif -#ifdef DT_WHT - case DT_WHT: - return BFTW_WHT; -#endif - } -#endif - - return BFTW_UNKNOWN; -} - /** Read a line from standard input. */ static char *xgetline() { char *line = dstralloc(0); -- cgit v1.2.3