summaryrefslogtreecommitdiffstats
path: root/util.c
diff options
context:
space:
mode:
authorTavian Barnes <tavianator@tavianator.com>2018-12-17 17:10:18 -0500
committerTavian Barnes <tavianator@tavianator.com>2018-12-17 17:10:18 -0500
commite95ec269efdfbd97b5d0ee85dda38e7bae498181 (patch)
tree0dda13650a3438feece9bfde6e9e75ed2c2fb269 /util.c
parentf5ba88ebfed936cfdee3a2ab3d6f690d291e9627 (diff)
downloadbfs-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.c99
1 files changed, 1 insertions, 98 deletions
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);