diff options
author | Tavian Barnes <tavianator@tavianator.com> | 2018-12-17 17:10:18 -0500 |
---|---|---|
committer | Tavian Barnes <tavianator@tavianator.com> | 2018-12-17 17:10:18 -0500 |
commit | e95ec269efdfbd97b5d0ee85dda38e7bae498181 (patch) | |
tree | 0dda13650a3438feece9bfde6e9e75ed2c2fb269 /util.c | |
parent | f5ba88ebfed936cfdee3a2ab3d6f690d291e9627 (diff) | |
download | bfs-e95ec269efdfbd97b5d0ee85dda38e7bae498181.tar.xz |
bftw: Move bftw_typeflag conversion out of util
Turns out incomplete enum types are a GNU C extension.
Diffstat (limited to 'util.c')
-rw-r--r-- | util.c | 99 |
1 files changed, 1 insertions, 98 deletions
@@ -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); |